[xiph-cvs] cvs commit: snatch waitppm.h libsnatch.c snatch.pl x11.c
Monty
xiphmont at xiph.org
Sun Nov 4 20:27:16 PST 2001
xiphmont 01/11/04 20:27:16
Modified: . libsnatch.c snatch.pl x11.c
Added: . waitppm.h
Log:
Ongoing work. We control the vertical, we control the horizontal.
Monty
Revision Changes Path
1.3 +174 -36 snatch/libsnatch.c
Index: libsnatch.c
===================================================================
RCS file: /usr/local/cvsroot/snatch/libsnatch.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- libsnatch.c 2001/11/03 10:02:22 1.2
+++ libsnatch.c 2001/11/05 04:27:14 1.3
@@ -1,6 +1,18 @@
/* top layer of subversion library to intercept RealPlayer socket and
device I/O. --Monty 20011101 */
+/* We grab audio by watching for open() on the audio device, and then
+ capturing ioctl()s and read()s. X is dealt with at two levels;
+ when we need to add our own X events, we do that through
+ RealPlayer's own Xlib state (to avoid opening another, or confusing
+ Xlib by adding/removing events from its stream. This is another
+ way to get the infamous 'Xlib: Unexpected async reply' error, even
+ if things are properly locked). Mostly we deal with X by
+ watching/effecting the wire level protocol over the X fd. Watching
+ the raw X gives some extra flexibility (like capturing expose),
+ especially for potential future features (like not mapping the RP
+ windows at all, but RP being unaware of it). */
+
#define _GNU_SOURCE
#define _LARGEFILE_SOURCE
#define _LARGEFILE64_SOURCE
@@ -10,6 +22,8 @@
#include <unistd.h>
#include <stdio.h>
#include <sys/uio.h>
+#include <sys/stat.h>
+#include <fcntl.h>
#include <string.h>
#include <dlfcn.h>
#include <sys/time.h>
@@ -54,11 +68,19 @@
static int X_fd=-1;
static pthread_t snatch_backchannel_thread;
+static pthread_t snatch_event_thread;
+
+static char *username=NULL;
+static char *password=NULL;
+static char *openfile=NULL;
+static char *location=NULL;
-static char username[256];
-static char password[256];
static int snatch_active=1;
+static int fake_audiop=0;
+static int fake_videop=0;
+static void (*QueuedTask)(void);
+
#include "x11.c" /* yeah, ugly, but I don't want to leak symbols.
Oh and I'm lazy. */
@@ -104,35 +126,88 @@
return(ret);
}
+
+static pthread_cond_t event_cond=PTHREAD_COND_INITIALIZER;
+static pthread_mutex_t event_mutex=PTHREAD_MUTEX_INITIALIZER;
+
+void *event_thread(void *dummy){
+ if(debug)
+ fprintf(stderr," ...: Event thread %lx reporting for duty!\n",
+ (unsigned long)pthread_self());
+
+ while(1){
+ pthread_cond_wait(&event_cond,&event_mutex);
+ if(QueuedTask){
+ (*QueuedTask)();
+ QueuedTask=NULL;
+ }else{
+ fprintf(stderr,
+ "**ERROR: Internal fault! event thread awoke without an event\n"
+ " to process!\n");
+ }
+ }
+}
-void *backchannel_and_timer(void *dummy){
+void *backchannel_thread(void *dummy){
if(debug)
fprintf(stderr," ...: Backchannel thread %lx reporting for duty!\n",
(unsigned long)pthread_self());
while(1){
char rq;
- char buffer[256];
- size_t bytes=fread(&rq,1,1,backchannel_fd);
+ size_t ret=fread(&rq,1,1,backchannel_fd);
+ short length;
+ char *buf=NULL;
- if(bytes<=0){
+ if(ret<=0){
fprintf(stderr,"**ERROR: Backchannel lost! exit(1)ing...\n");
exit(1);
}
+ rpauth_already=0;
- if(debug)
- fprintf(stderr," ...: Backchannel request\n");
-
switch(rq){
case 'K':
- bytes=fread(buffer,1,256,backchannel_fd);
- FakeKeycode(buffer[0],buffer[1],buffer[2],rpplay_window);
+ {
+ unsigned char sym;
+ unsigned short mod;
+ ret=fread(&sym,1,1,backchannel_fd);
+ ret=fread(&mod,2,1,backchannel_fd);
+ if(ret==1)
+ FakeKeySym(sym,mod,rpplay_window);
+ }
break;
case 'U':
- fread(username,1,256,backchannel_fd);
- break;
case 'P':
- fread(password,1,256,backchannel_fd);
+ case 'L':
+ case 'O':
+ ret=fread(&length,2,1,backchannel_fd);
+ if(ret==1){
+ if(length)buf=calloc(length+1,1);
+ if(length)ret=fread(buf,1,length,backchannel_fd);
+ if(length && ret==length)
+ switch(rq){
+ case 'U':
+ if(username)free(username);
+ username=buf;
+ break;
+ case 'P':
+ if(password)free(password);
+ password=buf;
+ break;
+ case 'L':
+ if(location)free(location);
+ location=buf;
+ break;
+ case 'O':
+ if(openfile)free(openfile);
+ openfile=buf;
+ break;
+ }
+ }
+ break;
+ case 'T':
+ snatch_active=2;
+ FakeExposeRPPlay();
break;
case 'A':
snatch_active=1;
@@ -142,11 +217,17 @@
snatch_active=0;
FakeExposeRPPlay();
break;
+ case 's':
+ fake_audiop=1;
+ break;
case 'S':
- FakeKeycode(9,0,1,rpplay_window);
+ fake_audiop=0;
+ break;
+ case 'v':
+ fake_videop=1;
break;
- case 'G':
- FakeKeycode(43,0,1,rpplay_window);
+ case 'V':
+ fake_videop=0;
break;
}
}
@@ -203,6 +284,30 @@
" set (%s)\n",audioname);
}
+ if(getenv("SNATCH_AUDIO_FAKE")){
+ if(debug)
+ fprintf(stderr,
+ "----env: SNATCH_AUDIO_FAKE\n"
+ " set. Faking audio operations.\n");
+ fake_audiop=1;
+ }else
+ if(debug)
+ fprintf(stderr,
+ "----env: SNATCH_AUDIO_FAKE\n"
+ " not set.\n");
+
+ if(getenv("SNATCH_VIDEO_FAKE")){
+ if(debug)
+ fprintf(stderr,
+ "----env: SNATCH_VIDEO_FAKE\n"
+ " set. Faking video operations.\n");
+ fake_videop=1;
+ }else
+ if(debug)
+ fprintf(stderr,
+ "----env: SNATCH_VIDEO_FAKE\n"
+ " not set.\n");
+
if(debug)
fprintf(stderr," ...: Now watching for RealPlayer audio output.\n");
@@ -315,20 +420,26 @@
if(debug)
fprintf(stderr,
- " ...: starting backchannel/fake event thread...\n");
+ " ...: starting backchannel/fake event threads...\n");
if((ret=pthread_create(&snatch_backchannel_thread,NULL,
- backchannel_and_timer,NULL))){
+ backchannel_thread,NULL))){
fprintf(stderr,
"**ERROR: could not create backchannel worker thread.\n"
" Error code returned: %d\n"
" exit(1)ing...\n\n",ret);
exit(1);
- }else
- if(debug)
+ }else{
+ pthread_mutex_lock(&event_mutex);
+ if((ret=pthread_create(&snatch_event_thread,NULL,
+ event_thread,NULL))){
fprintf(stderr,
- " ...done.\n");
-
+ "**ERROR: could not create event worker thread.\n"
+ " Error code returned: %d\n"
+ " exit(1)ing...\n\n",ret);
+ exit(1);
+ }
+ }
}else
if(debug)
fprintf(stderr,
@@ -349,19 +460,19 @@
}
/* The audio device is subverted through open() */
-int open(const char *pathname,int flags,mode_t mode){
+int open(const char *pathname,int flags,...){
+ va_list ap;
int ret;
+ mode_t mode;
initialize();
- ret=(*libc_open)(pathname,flags,mode);
- if(ret>-1){
- /* open needs only watch for the audio device. */
- if( (audioname[strlen(audioname)-1]=='*' &&
- !strncmp(pathname,audioname,strlen(audioname)-1)) ||
- (audioname[strlen(audioname)-1]!='*' &&
- !strcmp(pathname,audioname))){
-
+ /* open needs only watch for the audio device. */
+ if( (audioname[strlen(audioname)-1]=='*' &&
+ !strncmp(pathname,audioname,strlen(audioname)-1)) ||
+ (audioname[strlen(audioname)-1]!='*' &&
+ !strcmp(pathname,audioname))){
+
/* a match! */
if(audio_fd>-1){
/* umm... an audio fd is already open. report the problem and
@@ -373,6 +484,13 @@
" This behavior is unexpected; ignoring this open()\n"
" request.\n",pathname);
}else{
+
+ /* are we faking the audio? */
+ if(fake_audiop)
+ ret=(*libc_open)("/dev/null",O_RDWR,mode);
+ else
+ ret=(*libc_open)(pathname,flags,mode);
+
audio_fd=ret;
audio_channels=-1;
audio_rate=-1;
@@ -382,9 +500,20 @@
" ...: Caught RealPlayer opening audio device "
"%s (fd %d).\n",
pathname,ret);
+ if(debug && fake_audiop)
+ fprintf(stderr,
+ " ...: Faking the audio open and writes as requested.\n");
}
- }
+ return(ret);
+ }
+
+ if(flags|O_CREAT){
+ va_start(ap,flags);
+ mode=va_arg(ap,mode_t);
+ va_end(ap);
}
+
+ ret=(*libc_open)(pathname,flags,mode);
return(ret);
}
@@ -512,7 +641,7 @@
int ioctl(int fd,unsigned long int rq, ...){
va_list optional;
void *arg;
- int ret;
+ int ret=0;
initialize();
va_start(optional,rq);
@@ -524,7 +653,8 @@
rq==SNDCTL_DSP_CHANNELS ||
rq==SNDCTL_DSP_SETFMT){
- ret=(*libc_ioctl)(fd,rq,arg);
+ if(!fake_audiop)
+ ret=(*libc_ioctl)(fd,rq,arg);
if(ret==0){
switch(rq){
@@ -557,7 +687,6 @@
return((*libc_ioctl)(fd,rq,arg));
}
-
Display *XOpenDisplay(const char *d){
if(!XInitThreads()){
fprintf(stderr,"**ERROR: Unable to set multithreading support in Xlib.\n"
@@ -565,4 +694,13 @@
exit(1);
}
return(Xdisplay=(*xlib_xopen)(d));
+}
+
+static void queue_task(void (*f)(void)){
+ fprintf(stderr,"Queueing task...\n");
+ pthread_mutex_lock(&event_mutex);
+ QueuedTask=f;
+ pthread_cond_signal(&event_cond);
+ pthread_mutex_unlock(&event_mutex);
+ fprintf(stderr,"done...");
}
1.3 +55 -2 snatch/snatch.pl
Index: snatch.pl
===================================================================
RCS file: /usr/local/cvsroot/snatch/snatch.pl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- snatch.pl 2001/11/03 10:02:22 1.2
+++ snatch.pl 2001/11/05 04:27:14 1.3
@@ -10,15 +10,68 @@
my $uaddr=sockaddr_un($backchannel_socket);
my $proto=getprotobyname('tcp');
+my $username="e6dbvfc6";
+my $password="uwvdgjzy";
+my $openfile="/home/xiphmont/foo.ram";
+my $openloc="rtp://blah";
+
+my $playcode=join "",("Ks",pack ("S",4),"Kp",pack ("S",4));
+my $stopcode=join "",("Ks",pack ("S",4));
+my $exitcode=join "",("Kq",pack ("S",4));
+my $opencode=join "".("Ko",pack ("S",4));
+my $loccode=join "",("Kl",pack ("S",4));
+
die $! unless socket(LISTEN_SOCK, PF_UNIX, SOCK_STREAM,0);
unlink($backchannel_socket);
die $! unless bind(LISTEN_SOCK,$uaddr);
die $! unless listen(LISTEN_SOCK,SOMAXCONN);
die $! unless accept(COMM_SOCK,LISTEN_SOCK);
-undef $/;
+send_string("P",$password);
+send_string("U",$username);
+send_string("O",$openfile);
+send_string("L",$openloc);
while(1){
$char=getc STDIN;
- syswrite COMM_SOCK,$char,1;
+ if($char eq "P"){
+ syswrite COMM_SOCK,$playcode;
+ }
+ if($char eq "S"){
+ syswrite COMM_SOCK,$stopcode;
+ }
+ if($char eq "O"){
+ syswrite COMM_SOCK,$opencode;
+ }
+ if($char eq "L"){
+ syswrite COMM_SOCK,$loccode;
+ }
+ if($char eq "Q"){
+ syswrite COMM_SOCK,$exitcode;
+ }
+ if($char eq "A"){
+ syswrite COMM_SOCK,'A';
+ }
+ if($char eq "I"){
+ syswrite COMM_SOCK,'I';
+ }
+ if($char eq "T"){
+ syswrite COMM_SOCK,'T';
+ }
+}
+
+sub send_string{
+ my($op,$code)=@_;
+ syswrite COMM_SOCK,$op;
+ syswrite COMM_SOCK, (pack 'S', length $code);
+ syswrite COMM_SOCK, $code;
}
+
+
+
+
+
+
+
+
+
1.3 +338 -142 snatch/x11.c
Index: x11.c
===================================================================
RCS file: /usr/local/cvsroot/snatch/x11.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- x11.c 2001/11/03 10:02:22 1.2
+++ x11.c 2001/11/05 04:27:14 1.3
@@ -6,6 +6,7 @@
#include <sys/time.h>
#include <X11/Xlib.h>
#include "snatchppm.h"
+#include "waitppm.h"
static int savefile=-1;
static unsigned long window_id_base=0;
@@ -33,6 +34,17 @@
static int video_length=-1;
static int bigendian_p=0;
+static unsigned long rpauth_shell=0;
+static unsigned long rpauth_main=0;
+static unsigned long rpauth_password=0;
+static unsigned long rpauth_username=0;
+static unsigned long rpauth_okbutton=0;
+static unsigned long rpauth_cancel=0;
+static int rpauth_count=0;
+static int rpauth_already=0;
+
+static void queue_task(void (*f)(void));
+
/* Built out of a few pieces of xscope by James Peterson, 1988
xscope is (c) Copyright MCC, 1988 */
@@ -54,6 +66,88 @@
return(buf[0]);
}
+static void FakeKeycode(int keycode, int modmask, unsigned long window){
+ XKeyEvent event;
+ memset(&event,0,sizeof(event));
+
+ event.display=Xdisplay;
+ event.type=2; /* key down */
+ event.keycode=keycode;
+ event.root=root_window;
+ event.window=window;
+ event.state=modmask;
+
+ XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
+
+ event.type=3; /* key up */
+
+ XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
+
+}
+
+static void FakeKeySym(int keysym, int modmask, unsigned long window){
+ KeyCode c=XKeysymToKeycode(Xdisplay,keysym);
+
+ if(XKeycodeToKeysym(Xdisplay,c,0)==keysym){
+ FakeKeycode(c,modmask,window);
+ }else{
+ FakeKeycode(c,1|modmask,window);
+ }
+
+}
+
+void FakeButton1(unsigned long window){
+ XButtonEvent event;
+ XCrossingEvent enter;
+
+ memset(&enter,0,sizeof(enter));
+ enter.type=7;
+ enter.display=Xdisplay;
+ enter.window=window;
+ enter.root=root_window;
+ enter.mode=0;
+ enter.detail=3;
+ enter.same_screen=1;
+ XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&enter);
+
+ memset(&event,0,sizeof(event));
+ event.display=Xdisplay;
+ event.type=4; /* button down */
+ event.button=1;
+ event.root=root_window;
+ event.window=window;
+ event.same_screen=1;
+
+ XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
+
+ event.type=5; /* button up */
+ event.state=0x100;
+
+ XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
+
+}
+
+void FakeExposeRPPlay(void){
+ XExposeEvent event;
+ memset(&event,0,sizeof(event));
+
+ event.display=Xdisplay;
+ event.type=12;
+ event.window=rpplay_window;
+ event.width=rpplay_width;
+ event.height=rpplay_height;
+
+ XSendEvent(Xdisplay,(Window)rpplay_window,0,0,(XEvent *)&event);
+}
+
+void FakeTypeString(unsigned char *buf,unsigned long window){
+ FakeButton1(window);
+ while(*buf){
+ FakeKeySym(*buf,0,window);
+ buf++;
+ }
+}
+
static void SetUpReply(unsigned char *buf){
if(IByte(&buf[0])){
window_id_base=ILong(&buf[12]);
@@ -71,6 +165,38 @@
}
}
+static void UsernameAndPassword(void){
+
+ fprintf(stderr," ...: filling in username and password...");
+ if(username)
+ FakeTypeString(username,rpauth_username);
+ if(password)
+ FakeTypeString(password,rpauth_password);
+
+ FakeTypeString(" ",rpauth_okbutton); /* space activates the button.
+ Saves work parsing the
+ window tree to get an
+ absolute X,Y to make an
+ event */
+ rpauth_shell=0;
+ rpauth_main=0;
+ rpauth_password=0;
+ rpauth_username=0;
+ rpauth_okbutton=0;
+ rpauth_count=0;
+
+}
+
+static void PolySegment(unsigned char *buf){
+ /* we assume the auth window is ready when we see the last polylines put
+ into the cancel window */
+ unsigned long id=ILong(&buf[4]);
+ if(id==rpauth_cancel){
+ rpauth_cancel=0;
+ queue_task(UsernameAndPassword);
+ }
+}
+
static void CreateWindow(unsigned char *buf){
unsigned long id=ILong(&buf[4]);
unsigned long parent=ILong(&buf[8]);
@@ -79,6 +205,7 @@
if(!root_window)
root_window=parent;
+ /* Main player windows */
if(parent==rpshell_window){
rpmain_window=id;
rpplay_window=0;
@@ -104,9 +231,47 @@
" ...: RealPlayer video window id=%lx\n",rpvideo_window);
}
}
+
+ /* Auth dialog windows */
+ if(parent==rpauth_shell){
+ rpauth_main=id;
+ }
+ if(parent==rpauth_main){
+ switch(rpauth_count++){
+ case 5:
+ rpauth_username=id;
+ fprintf(stderr," ...: username window: %lx\n",id);
+ break;
+ case 3:
+ rpauth_password=id;
+ fprintf(stderr," ...: password window: %lx\n",id);
+ break;
+ case 1:
+ rpauth_okbutton=id;
+ fprintf(stderr," ...: OK button: %lx\n",id);
+ break;
+ case 0:
+ rpauth_cancel=id;
+ fprintf(stderr," ...: cancel button: %lx\n",id);
+ break;
+ }
+ }
}
}
+/*
+ 13.49: Client --> 16 bytes
+ ............REQUEST: ChangeWindowAttributes
+ sequence number: 00000c7f
+ request length: 0004
+ window: WIN 012000ce
+ value-mask: event-mask
+ value-list:
+ event-mask: KeyPress | ButtonPress | ButtonRelease | EnterWindow | LeaveWindow |
+ ButtonMotion | Exposure | FocusChange
+
+*/
+
static void ConfigureWindow(unsigned char *buf){
unsigned long id=ILong(&buf[4]);
@@ -144,54 +309,78 @@
long format=ILong(&buf[16]);
char *data;
+ if(property!=67 || type!=31)return; /* not interested if not
+ WM_CLASS and STRING */
+ n = ILong(&buf[20])*format/8;
+ data=&buf[24];
+
+ /* look for the RealPlayer shell window; the other player windows
+ descend from it in a predicatble pattern */
+
if(rpshell_window==0){
- if(property==67 && type==31){ /* WM_CLASS and STRING */
- n = ILong(&buf[20])*format/8;
- data=&buf[24];
+ if(debug)
+ fprintf(stderr,
+ " ...: looking for our shell window...\n"
+ " candidate: id=%lx, name=%s class=%s\n",
+ id,(data?data:""),(data?strchr(data,'\0')+1:""));
+
+ if(n>26 && !memcmp(data,"RealPlayer\0RCACoreAppShell\0",27)){
+ /* it's our shell window above the WM parent */
+ rpshell_window=id;
+
+ /* re-setup */
+ rpmain_window=0;
+ rpmenu_window=0;
+ rpplay_window=0;
+ rpplay_width=0;
+ rpplay_height=0;
+
+ logo_x=0;
+ logo_y=0;
+ logo_prev=-1;
+
+ rpvideo_window=0;
+ video_width=-1;
+ video_length=-1;
if(debug)
- fprintf(stderr,
- " ...: looking for our shell window...\n"
- " candidate: id=%lx, name=%s class=%s\n",
- id,(data?data:""),(data?strchr(data,'\0')+1:""));
-
- if(n>26 && !memcmp(data,"RealPlayer\0RCACoreAppShell\0",27)){
- /* it's our shell window above the WM parent */
- rpshell_window=id;
-
- /* re-setup */
- rpmain_window=0;
- rpmenu_window=0;
- rpplay_window=0;
- rpplay_width=0;
- rpplay_height=0;
-
- logo_x=0;
- logo_y=0;
- logo_prev=-1;
-
- rpvideo_window=0;
- video_width=-1;
- video_length=-1;
+ fprintf(stderr," GOT IT!\n");
+ }else{
+ if(debug)
+ fprintf(stderr," nope...\n");
+ }
+ }
- if(debug)
- fprintf(stderr," GOT IT!\n");
- }else{
- if(debug)
- fprintf(stderr," nope...\n");
- }
+ /* watch for the auth password window */
+ if(n>32 && !memcmp(data,"AuthDialogShell\0RCACoreAppShell\0",32)){
+ if(rpauth_already>2){
+ fprintf(stderr,
+ "**ERROR: Password not accepted.\n");
+ rpauth_shell=0;
+ rpauth_already=0;
+ }else{
+ fprintf(stderr,
+ " ...: RealPlayer popped auth window. Watching for username\n"
+ " password and ok button windows\n");
+ rpauth_shell=id;
+ rpauth_count=0;
+ rpauth_username=0;
+ rpauth_password=0;
+ rpauth_okbutton=0;
+ rpauth_already++;
}
}
+
+
}
-static void PutImage(unsigned char *buf){
- int id=ILong(&buf[4]);
-
+static void PutImage(unsigned char *header,unsigned char *data){
+ int id=ILong(&header[4]);
if(snatch_active && id==rpvideo_window){
- int width=IShort(&buf[12])+IByte(&buf[20]);
- int height=IShort(&buf[14]);
+ int width=IShort(&header[12])+IByte(&header[20]);
+ int height=IShort(&header[14]);
int n = width*height*4,i,j;
- char *work=alloca(n+1),*ptr=&buf[24],charbuf[80];
+ unsigned char *work=alloca(n+1),*ptr=data,charbuf[80];
static long ZeroTime1 = -1;
static long ZeroTime2 = -1;
@@ -236,14 +425,14 @@
Although this might seem like a vanity issue, the primary reason
for doing this is to give the user a clear indication Snatch is
working properly, so some care should be taken to get it right. */
-
+
if(id==rpplay_window){
- int width=IShort(&buf[12])+IByte(&buf[20]);
- int height=IShort(&buf[14]);
- int x=IShort(&buf[16]);
- int y=IShort(&buf[18]);
+ int width=IShort(&header[12])+IByte(&header[20]);
+ int height=IShort(&header[14]);
+ int x=IShort(&header[16]);
+ int y=IShort(&header[18]);
- char *ptr=&buf[24];
+ unsigned char *ptr=data;
long i,j,k;
if(x==0 && width==rpplay_width){
@@ -308,6 +497,13 @@
/* blank background */
if(snatch_active){
+ unsigned char *bptr;
+
+ if(snatch_active==1)
+ bptr=snatchppm;
+ else
+ bptr=waitppm;
+
if(bigendian_p){
int lower=(play_blacklower==-1?y+height:play_blacklower);
for(i=play_blackupper;i<lower;i++)
@@ -315,9 +511,9 @@
for(j=play_blackleft;j<play_blackright;j++)
if(j>=x && j<x+width){
ptr[(i-y)*width*4+(j-x)*4]=0x00;
- ptr[(i-y)*width*4+(j-x)*4+1]=snatchppm[0];
- ptr[(i-y)*width*4+(j-x)*4+2]=snatchppm[1];
- ptr[(i-y)*width*4+(j-x)*4+3]=snatchppm[2];
+ ptr[(i-y)*width*4+(j-x)*4+1]=bptr[0];
+ ptr[(i-y)*width*4+(j-x)*4+2]=bptr[1];
+ ptr[(i-y)*width*4+(j-x)*4+3]=bptr[2];
}
}else{
int lower=(play_blacklower==-1?y+height:play_blacklower);
@@ -326,17 +522,17 @@
for(j=play_blackleft;j<play_blackright;j++)
if(j>=x && j<x+width){
ptr[(i-y)*width*4+(j-x)*4+3]=0x00;
- ptr[(i-y)*width*4+(j-x)*4+2]=snatchppm[0];
- ptr[(i-y)*width*4+(j-x)*4+1]=snatchppm[1];
- ptr[(i-y)*width*4+(j-x)*4]=snatchppm[2];
+ ptr[(i-y)*width*4+(j-x)*4+2]=bptr[0];
+ ptr[(i-y)*width*4+(j-x)*4+1]=bptr[1];
+ ptr[(i-y)*width*4+(j-x)*4]=bptr[2];
}
}
-
+
/* paint logo */
if(logo_y!=-1){
for(i=0;i<snatchheight;i++){
if(i+logo_y>=y && i+logo_y<height+y){
- char *snatch=snatchppm+snatchwidth*3*i;
+ char *snatch;
char *real;
long end;
@@ -347,7 +543,7 @@
if(j<0)j=0;
real=ptr+width*4*(i+logo_y-y);
- snatch=snatchppm+snatchwidth*3*i;
+ snatch=(snatch_active==1?snatchppm:waitppm)+snatchwidth*3*i;
if(bigendian_p){
for(k*=3;k<snatchwidth*3 && j<width*4;){
@@ -375,31 +571,47 @@
/* Client-to-Server and Server-to-Client interception processing */
/* Here are the most in-tact bits of xscope */
struct ConnState {
- unsigned char *SavedBytes;
- long SizeofSavedBytes;
- long NumberofSavedBytes;
- long NumberofBytesNeeded;
- long (*ByteProcessing)();
+ unsigned char *SavedBytes;
+ long SizeofSavedBytes;
+ long NumberofSavedBytes;
+ long NumberofBytesNeeded;
+ long (*ByteProcessing)();
+
+ /* a hack to optimize the video PutImage; this is the only case
+ where we actually care much about copies. Most X requests are
+ either very infrequent or tiny. PutImage, on the other hand, is
+ blasting several MB a second to do video. So, this is ugly, but
+ needed. */
+ unsigned char PutImageHeader[24];
+ int PutImageUsed;
};
static struct ConnState serverCS;
static struct ConnState clientCS;
-static void DecodeRequest(unsigned char *buf,long n){
- int Request = IByte (&buf[0]);
- switch (Request){
- case 1:
- CreateWindow(buf);
- break;
- case 12:
- ConfigureWindow(buf);
- break;
- case 18:
- ChangeProperty(buf);
- break;
- case 72:
- PutImage(buf);
- break;
+static void DecodeRequest(unsigned char *pih,int pi,
+ unsigned char *buf,long n){
+ if(pi){
+ PutImage(pih,buf);
+ }else{
+ int Request = IByte (&buf[0]);
+ switch (Request){
+ case 1:
+ CreateWindow(buf);
+ break;
+ case 12:
+ ConfigureWindow(buf);
+ break;
+ case 18:
+ ChangeProperty(buf);
+ break;
+ case 66:
+ PolySegment(buf);
+ break;
+ case 72:
+ PutImage(buf,buf+24);
+ break;
+ }
}
}
@@ -410,6 +622,7 @@
if(n){
while(togo>0){
int bw=(*libc_write)(X_fd,p,togo);
+
if(bw<0 && (errno==EAGAIN || errno==EINTR))bw=0;
if(bw>=0)
p+=bw;
@@ -419,25 +632,55 @@
togo-=bw;
}
}
+
return(0);
}
static void SaveBytes(struct ConnState *cs,unsigned char *buf,long n){
- /* check if there is enough space to hold the bytes we want */
- if (cs->NumberofSavedBytes + n > cs->SizeofSavedBytes){
- long SizeofNewBytes = (cs->NumberofSavedBytes + n + 1);
- if(cs->SavedBytes)
- cs->SavedBytes = realloc(cs->SavedBytes,SizeofNewBytes);
- else
- cs->SavedBytes = malloc(SizeofNewBytes);
+ /* a hack to avoid huge copies in PutImage */
+ if(cs->NumberofSavedBytes==0 &&
+ n>=24 &&
+ cs->PutImageUsed==0 &&
+ IByte(&buf[0])==72){
+
+ unsigned long id=ILong(&buf[4]);
+ /* other putimage requests have side effects and we don't want to
+ write into Xlib maintained memory. Besides, the only case we
+ really need to optimize is the video window (which we currently
+ don't alter) */
+ if(id==rpvideo_window){
+ memcpy(cs->PutImageHeader,buf,24);
+ cs->PutImageUsed=24;
+ n-=cs->PutImageUsed;
+ }
+ }
+ /* In fact,t he way Xlib flushes events, this will practically never
+ be needed, but is good to have around */
+
+ /* check if there is enough space to hold the bytes we want */
+ if(n>0){
+ if (cs->NumberofSavedBytes + n > cs->SizeofSavedBytes){
+ long SizeofNewBytes = (cs->NumberofSavedBytes + n + 1);
+ if(cs->SavedBytes)
+ cs->SavedBytes = realloc(cs->SavedBytes,SizeofNewBytes);
+ else
+ cs->SavedBytes = malloc(SizeofNewBytes);
+
cs->SizeofSavedBytes = SizeofNewBytes;
+ }
+
+ /* now copy the new bytes onto the end of the old bytes */
+ memcpy(cs->SavedBytes + cs->NumberofSavedBytes,buf,n);
+ cs->NumberofSavedBytes += n;
}
+}
- /* now copy the new bytes onto the end of the old bytes */
- memcpy(cs->SavedBytes + cs->NumberofSavedBytes,buf,n);
- cs->NumberofSavedBytes += n;
+static long RemoveHeader(struct ConnState *cs){
+ long ret=cs->PutImageUsed;
+ cs->PutImageUsed=0;
+ return(ret);
}
static void RemoveSavedBytes(struct ConnState *cs,long n){
@@ -488,7 +731,7 @@
}
static long FinishRequest(struct ConnState *cs,unsigned char *buf,long n){
- DecodeRequest(buf, n);
+ DecodeRequest(cs->PutImageHeader,cs->PutImageUsed,buf, n);
cs->ByteProcessing = StartRequest;
cs->NumberofBytesNeeded = 4;
return(n);
@@ -540,9 +783,10 @@
long NumberofUsedBytes;
while (cs->ByteProcessing && /* we turn off watching replies from
- the server after grabbing set up */
-
- cs->NumberofSavedBytes + n >= cs->NumberofBytesNeeded){
+ the server after grabbing set up */
+ cs->NumberofSavedBytes + n + cs->PutImageUsed >=
+ cs->NumberofBytesNeeded){
+
if (cs->NumberofSavedBytes == 0){
/* no saved bytes, so just process the first bytes in the
read buffer */
@@ -567,14 +811,19 @@
/* *After* we've processed the buffer (and possibly caused side
effects), we ship the request off to the recipient */
- if(w)(*w)(BytesToProcess,NumberofUsedBytes);
-
+ if(w){
+ (*w)(cs->PutImageHeader,cs->PutImageUsed);
+ (*w)(BytesToProcess,NumberofUsedBytes-cs->PutImageUsed);
+ }
+
/* the number of bytes that were actually used is normally (but not
always) the number of bytes needed. Discard the bytes that were
actually used, not the bytes that were needed. The number of used
bytes must be less than or equal to the number of needed bytes. */
if (NumberofUsedBytes > 0){
+ n-=RemoveHeader(cs);
+
if (cs->NumberofSavedBytes > 0)
RemoveSavedBytes(cs, NumberofUsedBytes);
else{
@@ -590,58 +839,5 @@
if (cs->ByteProcessing && n > 0)
SaveBytes(cs, buf, n);
return;
-}
-
-static void FakeKeycode(int keycode, int shift, int ctrl,
- unsigned long window){
- XKeyEvent event;
- memset(&event,0,sizeof(event));
-
- event.display=Xdisplay;
- event.type=2; /* key down */
- event.keycode=keycode;
- event.root=root_window;
- event.window=window;
- event.state=(shift?1:0)|(ctrl?4:0);
-
- XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
-
- event.type=3; /* key up */
-
- XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
-
-}
-
-void FakeButton1(unsigned long window){
-
- XButtonEvent event;
- memset(&event,0,sizeof(event));
-
- event.display=Xdisplay;
- event.type=4; /* key down */
- event.button=1;
- event.root=root_window;
- event.window=window;
-
- XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
-
- event.type=5; /* key up */
- event.state=0x100;
-
- XSendEvent(Xdisplay,(Window)window,0,0,(XEvent *)&event);
-
-}
-
-void FakeExposeRPPlay(void){
- XExposeEvent event;
- memset(&event,0,sizeof(event));
-
- event.display=Xdisplay;
- event.type=12;
- event.window=rpplay_window;
- event.width=rpplay_width;
- event.height=rpplay_height;
-
- XSendEvent(Xdisplay,(Window)rpplay_window,0,0,(XEvent *)&event);
}
1.1 snatch/waitppm.h
Index: waitppm.h
===================================================================
static unsigned char waitppm[]={
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 23, 7, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 24, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 28, 4, 0, 74, 40, 37, 82, 38, 35,
84, 34, 33, 85, 36, 34, 84, 36, 35, 86, 37, 38, 84, 35, 36,
85, 36, 34, 83, 35, 34, 85, 36, 37, 84, 35, 36, 85, 36, 34,
84, 36, 35, 85, 36, 37, 84, 35, 36, 84, 36, 35, 84, 36, 35,
84, 35, 36, 84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37,
84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36,
85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34,
84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35,
85, 36, 37, 84, 35, 36, 84, 36, 35, 84, 36, 35, 84, 35, 36,
84, 35, 36, 84, 36, 35, 84, 36, 35, 84, 35, 36, 84, 35, 36,
84, 36, 35, 84, 36, 35, 84, 35, 36, 84, 35, 36, 84, 36, 35,
84, 36, 35, 84, 35, 36, 84, 35, 36, 85, 36, 34, 84, 36, 35,
85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37,
84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36,
85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34,
84, 36, 35, 85, 36, 34, 84, 36, 35, 84, 34, 33, 85, 36, 34,
85, 36, 34, 82, 38, 35, 75, 39, 34, 30, 4, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 28, 4, 0, 91, 35, 34,108, 31, 33,
99, 10, 8,105, 4, 4,155, 56, 58,153, 54, 58,154, 53, 60,
153, 52, 59,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,154, 53, 60,153, 52, 59,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,154, 53, 60,
155, 54, 59,106, 5, 5,101, 12, 8,109, 32, 33, 94, 36, 33,
76, 39, 33, 24, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 28, 4, 0, 84, 35, 36, 87, 8, 8,
158, 57, 59,164, 53, 56,165, 54, 57,157, 54, 58,155, 54, 59,
156, 53, 61,154, 53, 60,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,155, 54, 59,153, 54, 58,153, 54, 58,
153, 54, 58,153, 54, 58,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,153, 54, 58,153, 54, 58,153, 54, 58,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,154, 53, 60,
153, 52, 59,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,
153, 54, 58,155, 54, 59,153, 54, 58,155, 54, 59,153, 54, 58,
153, 52, 59,156, 53, 60,164, 53, 58,166, 53, 58,159, 54, 59,
96, 5, 5, 99, 34, 32, 78, 40, 33, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 28, 4, 0, 89, 35, 34, 87, 8, 8,
155, 46, 64,158, 43, 64,168, 71, 81, 84, 7, 9, 92, 37, 35,
85, 36, 34, 85, 36, 37, 85, 36, 37, 85, 36, 34, 84, 36, 35,
85, 36, 37, 84, 36, 35, 85, 36, 34, 84, 36, 35, 84, 36, 35,
84, 35, 36, 84, 35, 36, 84, 35, 36, 85, 36, 37, 84, 35, 36,
84, 36, 35, 84, 36, 35, 84, 35, 36, 84, 36, 35, 85, 36, 34,
84, 36, 35, 85, 36, 34, 84, 35, 36, 84, 36, 35, 84, 36, 35,
84, 35, 36, 84, 36, 35, 85, 36, 34, 84, 36, 35, 85, 36, 34,
84, 35, 36, 85, 36, 37, 84, 35, 36, 85, 36, 37, 84, 35, 36,
85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34,
84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35,
85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37,
84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36,
85, 36, 34, 84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34,
84, 36, 35, 85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35,
85, 36, 37, 84, 35, 36, 85, 36, 34, 84, 36, 35, 85, 36, 37,
84, 35, 36, 84, 36, 35, 91, 34, 35,134, 53, 64,176, 69, 89,
166, 39, 63,169, 42, 60,102, 5, 7,104, 33, 31, 30, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 74, 40, 37,108, 31, 33,
157, 54, 61,162, 39, 65,178, 65, 91, 99, 24, 35, 48, 2, 0,
44, 1, 0, 42, 2, 0, 44, 1, 0, 46, 1, 0, 42, 0, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 2, 0, 44, 2, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 2, 0, 44, 2, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 2, 0, 44, 2, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 2, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 2, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0, 44, 1, 0,
44, 1, 0, 42, 0, 0, 42, 3, 0, 42, 0, 0, 46, 0, 2,
101, 16, 38,201, 66,101,180, 33, 64,171, 50, 58, 94, 13, 9,
76, 38, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 38, 35,
97, 6, 6,167, 46, 58,182, 55, 85, 92, 0, 17, 40, 0, 1,
33, 0, 1, 54, 2, 0, 68, 3, 0, 74, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 76, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 76, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0, 78, 3, 0,
78, 3, 0, 78, 3, 0, 74, 3, 0, 68, 3, 0, 54, 2, 0,
33, 0, 1, 40, 0, 1,160, 31, 68,215, 64,100,175, 46, 58,
101, 6, 6, 82, 38, 35, 0, 0, 0, 0, 0, 0, 30, 10, 4,
84, 36, 35,155, 54, 59,169, 42, 60,195, 70,102, 70, 0, 4,
34, 0, 2, 36, 2, 0, 96, 10, 7,183, 64, 67,187, 62, 65,
189, 60, 63,190, 61, 64,190, 61, 64,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,191, 60, 63,191, 60, 63,191, 60, 63,
191, 60, 63,191, 60, 63,191, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
190, 61, 64,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,190, 61, 64,189, 60, 63,
189, 58, 64,189, 58, 64,189, 58, 64,189, 58, 64,190, 61, 64,
189, 60, 63,189, 60, 63,188, 59, 62,188, 59, 62,189, 60, 63,
189, 58, 64,189, 58, 64,190, 61, 64,189, 60, 63,189, 60, 63,
188, 59, 62,188, 59, 62,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,190, 61, 64,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
190, 61, 64,190, 61, 64,189, 60, 63,187, 62, 65,183, 64, 67,
96, 10, 7, 36, 2, 0, 34, 0, 2,124, 5, 41,212, 61,104,
175, 40, 62,153, 54, 58, 85, 36, 34, 24, 7, 0, 0, 0, 0,
30, 9, 4, 84, 35, 36,152, 51, 60,166, 39, 63,190, 65,106,
70, 0, 6, 44, 2, 0, 80, 22, 15,198, 61, 61,230, 51, 60,
231, 52, 60,233, 52, 56,233, 52, 56,233, 52, 56,233, 52, 56,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
231, 50, 59,231, 50, 59,233, 50, 59,233, 48, 57,233, 48, 57,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 48, 57,233, 48, 57,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
232, 49, 58,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 52, 56,233, 52, 56,233, 52, 56,233, 52, 56,231, 52, 60,
230, 51, 60,198, 61, 61, 80, 22, 15, 44, 2, 0,120, 7, 39,
204, 63,103,186, 55, 82,150, 49, 61, 89, 34, 34, 28, 7, 0,
0, 0, 0, 30, 9, 4, 84, 36, 35,150, 49, 63,180, 55, 84,
186, 63,106, 70, 0, 6, 48, 0, 1, 92, 20, 13,219, 58, 58,
254, 45, 55,254, 47, 52,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 47, 52,254, 45, 55,219, 58, 58, 92, 20, 13, 48, 0, 1,
117, 8, 39,201, 62,105,185, 54, 85,150, 47, 64, 92, 37, 35,
69, 44, 34, 0, 0, 0, 30, 10, 4, 81, 35, 34,148, 47, 63,
179, 54, 86,186, 63,106, 70, 0, 6, 48, 0, 1, 92, 20, 13,
219, 58, 58,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,219, 58, 58, 92, 20, 13,
48, 0, 1,115, 8, 41,201, 62,105,185, 54, 85,152, 47, 64,
96, 34, 33, 73, 43, 34, 33, 12, 14, 30, 10, 4, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 68, 0, 7, 42, 0, 0,
87, 20, 14,217, 58, 58,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,217, 58, 58,
87, 20, 14, 42, 0, 0,115, 8, 41,201, 62,105,185, 54, 85,
152, 47, 64, 98, 34, 33, 75, 42, 32, 33, 12, 14, 30, 10, 4,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 64, 0, 9,
32, 0, 3, 56, 2, 0,214, 55, 59,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
214, 55, 59, 56, 2, 0, 32, 0, 3,114, 7, 40,201, 62,105,
185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32, 33, 12, 14,
30, 10, 4, 82, 36, 35,146, 47, 63,178, 53, 88,186, 63,106,
62, 0, 10, 26, 0, 4, 48, 2, 0,212, 55, 59,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,212, 55, 59, 48, 2, 0, 26, 0, 4,115, 8, 41,
202, 63,102,185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32,
33, 12, 14, 24, 7, 0, 84, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 10, 26, 0, 6, 48, 2, 0,212, 55, 59,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,212, 55, 59, 48, 2, 0, 26, 0, 6,
114, 7, 40,202, 63,102,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 33, 12, 14, 24, 7, 0, 84, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 4, 48, 2, 0,
208, 55, 62,253, 48, 58,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,253, 48, 58,208, 55, 62, 48, 2, 0,
26, 0, 4,115, 8, 41,202, 63,102,185, 54, 85,152, 47, 64,
98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 4,
48, 2, 0,206, 59, 63,247, 50, 55,253, 46, 56,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,253, 46, 56,247, 50, 55,206, 59, 63,
48, 2, 0, 26, 0, 4,113, 8, 40,201, 62,105,183, 54, 84,
152, 47, 64, 98, 33, 35, 75, 42, 32, 0, 0, 0, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
26, 0, 4, 46, 2, 0,171, 34, 34,242, 53, 58,251, 48, 58,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,251, 48, 58,242, 53, 58,
171, 34, 34, 46, 2, 0, 26, 0, 4,115, 8, 41,201, 62,105,
183, 54, 84,152, 47, 64, 98, 33, 35, 75, 42, 32, 0, 0, 0,
20, 7, 0, 80, 36, 35,146, 47, 63,178, 51, 87,186, 63,106,
62, 0, 10, 26, 0, 4, 44, 0, 1,166, 43, 37,237, 56, 56,
249, 48, 53,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,249, 48, 53,
237, 56, 56,166, 43, 37, 44, 0, 1, 26, 0, 4,113, 8, 40,
201, 62,105,183, 54, 84,152, 47, 64, 98, 33, 35, 75, 42, 32,
33, 12, 14, 20, 7, 0, 80, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 10, 26, 0, 4, 44, 0, 1,163, 42, 36,
235, 62, 58,247, 50, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
247, 50, 55,235, 62, 58,163, 42, 36, 44, 0, 1, 26, 0, 4,
114, 7, 40,201, 62,105,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 4, 44, 0, 1,
163, 42, 36,233, 56, 56,247, 48, 53,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,169, 29, 36,
0, 0, 0,180,133,117,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,172,114,141,180,133,117, 0, 0, 0,
169, 29, 36, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,247, 48, 53,233, 56, 56,163, 42, 36, 44, 0, 1,
26, 0, 4,115, 8, 41,201, 62,105,185, 54, 85,152, 47, 64,
98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 8, 26, 0, 4,
44, 0, 1,126, 5, 3,233, 56, 56,247, 48, 53,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55, 0, 0, 0,104, 91, 32,193,161, 80,186,146,100,
172,114,141,172,114,141,172,114,141,172,114,141,172,114,141,
172,114,141,172,114,141,186,146,100,193,161, 80,104, 91, 32,
0, 0, 0,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,247, 48, 53,233, 56, 56,126, 5, 3,
44, 0, 1, 26, 0, 4,115, 8, 41,202, 63,106,185, 54, 85,
152, 47, 64, 98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 8,
26, 0, 4, 44, 0, 1,127, 7, 4,231, 54, 54,247, 48, 53,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,169, 29, 36, 0, 0, 0,200,176, 64,
200,176, 64,193,161, 80,186,146,100,172,114,141,172,114,141,
172,114,141,190,155, 88,200,176, 64,200,176, 64,200,176, 64,
0, 0, 0,169, 29, 36,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,247, 48, 53,231, 54, 54,
127, 7, 4, 44, 0, 1, 26, 0, 4,115, 8, 41,201, 62,105,
185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 34, 33, 12, 14,
22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106,
62, 0, 8, 26, 0, 4, 42, 0, 0,123, 6, 4,230, 55, 55,
246, 49, 59,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55, 0, 0, 0,
133,117, 41,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
190,155, 88,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
133,117, 41, 0, 0, 0,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,246, 49, 59,
230, 55, 55,123, 6, 4, 42, 0, 0, 26, 0, 4,115, 8, 41,
201, 62,105,185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 34,
33, 12, 14, 22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 8, 24, 0, 3, 40, 0, 0,118, 7, 5,
223, 58, 58,244, 51, 56,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
195, 33, 41, 0, 0, 0,200,176, 64,200,176, 64,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64, 0, 0, 0,195, 33, 41,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
244, 51, 56,223, 58, 58,118, 7, 5, 40, 0, 0, 24, 0, 3,
115, 8, 41,200, 61,104,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 24, 0, 5, 36, 1, 0,
123, 6, 4,217, 64, 60,242, 51, 56,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55, 78, 13, 17, 61, 54, 19,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64, 61, 54, 19, 78, 13, 17,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,242, 51, 56,217, 64, 60,123, 6, 4, 36, 1, 0,
24, 0, 5,115, 8, 41,202, 63,102,185, 54, 85,152, 47, 64,
98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10, 24, 0, 5,
34, 3, 0,114, 13, 11,214, 69, 61,240, 51, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 78, 13, 17,
61, 54, 19,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64, 61, 54, 19, 78, 13, 17,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,240, 51, 55,214, 69, 61,114, 13, 11,
34, 3, 0, 24, 0, 5,115, 8, 41,202, 63,102,185, 54, 85,
152, 47, 62, 98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
24, 0, 5, 52, 6, 5, 78, 9, 12,208, 61, 65,238, 53, 58,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 78, 13, 17, 61, 54, 19,200,176, 64,200,176, 64,
200,176, 64, 61, 54, 19, 78, 13, 17,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,238, 53, 58,208, 61, 65,
78, 9, 12, 52, 6, 5, 24, 0, 5,115, 8, 41,202, 63,102,
185, 54, 85,152, 47, 62, 98, 33, 35, 75, 42, 32, 33, 12, 14,
22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106,
62, 0, 10, 24, 0, 5, 32, 3, 0, 78, 9, 12,208, 61, 65,
233, 52, 56,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,104, 91, 32,
200,176, 64,104, 91, 32, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,233, 52, 56,
208, 61, 65, 78, 9, 12, 32, 3, 0, 24, 0, 5,115, 8, 41,
202, 63,102,185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32,
33, 12, 14, 22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 10, 26, 0, 4, 30, 2, 1, 79, 10, 13,
208, 61, 65,233, 52, 56,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,132, 22, 28,
61, 54, 19,200,176, 64, 61, 54, 19,132, 22, 28,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
233, 52, 56,208, 61, 65, 79, 10, 13, 30, 2, 1, 26, 0, 4,
115, 8, 41,201, 62,105,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 4, 29, 2, 0,
74, 3, 0,192, 61, 61,233, 52, 56,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0,200,176, 64, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,233, 52, 56,192, 61, 61, 74, 3, 0, 29, 2, 0,
26, 0, 4,114, 7, 40,201, 62,105,185, 54, 85,152, 47, 64,
98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 4,
27, 2, 0, 72, 3, 0,189, 60, 63,233, 52, 56,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,132, 22, 28, 53, 35, 43,200,176, 64, 54, 36, 43,
132, 22, 28,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,233, 52, 56,189, 60, 63, 72, 3, 0,
27, 2, 0, 26, 0, 4,114, 7, 40,201, 62,105,185, 54, 85,
152, 47, 64, 98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
26, 0, 4, 27, 2, 0, 72, 3, 0,189, 60, 63,233, 50, 59,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0,114, 76, 94,200,176, 64,
115, 76, 94, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,233, 50, 59,189, 60, 63,
72, 3, 0, 27, 2, 0, 26, 0, 4,115, 8, 41,201, 62,105,
185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32, 33, 12, 14,
22, 7, 0, 82, 36, 35,146, 47, 63,179, 52, 88,186, 63,106,
62, 0, 10, 26, 0, 4, 25, 2, 2, 66, 3, 0,185, 64, 64,
231, 52, 60,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 78, 13, 17, 90, 60, 73,172,114,141,
200,176, 64,172,114,141, 91, 60, 73, 78, 13, 17,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,231, 52, 60,
185, 64, 64, 66, 3, 0, 25, 2, 2, 26, 0, 4,115, 8, 41,
202, 63,102,185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32,
33, 12, 14, 22, 7, 0, 82, 36, 35,148, 47, 63,179, 52, 88,
186, 63,106, 62, 0, 10, 26, 0, 4, 22, 4, 1, 56, 0, 1,
145, 41, 38,228, 53, 57,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 78, 13, 17, 89, 59, 73,172,114,141,
172,114,141,200,176, 64,172,114,141,172,114,141, 89, 59, 73,
78, 13, 17,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
228, 53, 57,145, 41, 38, 56, 0, 1, 22, 4, 1, 26, 0, 4,
115, 8, 41,202, 63,102,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 0, 0, 0, 22, 7, 0, 82, 36, 35,148, 47, 63,
179, 52, 88,186, 63,106, 62, 0, 10, 26, 0, 4, 20, 4, 1,
50, 2, 0,140, 44, 39,226, 55, 59,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55, 78, 13, 17, 89, 59, 73,172,114,141,
172,114,141,172,114,141,200,176, 64,172,114,141,172,114,141,
172,114,141, 89, 59, 73, 78, 13, 17,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,226, 55, 59,140, 44, 39, 50, 2, 0, 20, 4, 1,
26, 0, 4,114, 7, 40,202, 63,102,185, 54, 85,152, 47, 64,
98, 33, 35, 75, 42, 32, 0, 0, 0, 22, 7, 0, 82, 36, 35,
146, 47, 63,179, 52, 88,186, 63,106, 62, 0, 10, 26, 0, 4,
20, 4, 1, 50, 2, 0,141, 38, 41,224, 55, 59,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,169, 29, 36, 0, 0, 0,172,114,141,
172,114,141,172,114,141,172,114,141,200,176, 64,172,114,141,
172,114,141,172,114,141,172,114,141, 0, 0, 0,169, 29, 36,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,224, 55, 59,141, 38, 41, 50, 2, 0,
20, 4, 1, 26, 0, 4,115, 8, 41,202, 63,102,185, 54, 85,
152, 47, 64, 98, 33, 35, 75, 42, 32, 0, 0, 0, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
26, 0, 4, 20, 4, 1, 50, 1, 0,140, 44, 39,224, 55, 59,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55, 0, 0, 0,114, 76, 94,
172,114,141,172,114,141,172,114,141,172,114,141,200,176, 64,
172,114,141,172,114,141,172,114,141,172,114,141,114, 76, 94,
0, 0, 0,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,224, 55, 59,140, 44, 39,
50, 1, 0, 20, 4, 1, 26, 0, 4,115, 8, 41,201, 62,105,
185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32, 0, 0, 0,
22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106,
62, 0, 10, 26, 0, 4, 20, 4, 1, 48, 1, 0,107, 12, 8,
224, 53, 57,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,132, 22, 28, 0, 0, 0,
172,114,141,172,114,141,172,114,141,172,114,141,186,146,100,
200,176, 64,180,133,117,172,114,141,172,114,141,172,114,141,
172,114,141, 0, 0, 0,132, 22, 28,254, 45, 55, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,224, 53, 57,
107, 12, 8, 48, 1, 0, 20, 4, 1, 26, 0, 4,115, 8, 41,
201, 62,105,185, 54, 85,152, 47, 64, 98, 33, 35, 75, 42, 32,
0, 0, 0, 22, 7, 0, 82, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 10, 26, 0, 4, 20, 4, 1, 48, 0, 1,
105, 12, 8,226, 53, 57,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0,254, 45, 55, 0, 0, 0,
114, 76, 94,172,114,141,172,114,141,180,133,117,186,146,100,
200,176, 64,200,176, 64,200,176, 64,186,146,100,172,114,141,
172,114,141,172,114,141,114, 76, 94, 0, 0, 0,254, 45, 55,
0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
226, 53, 57,105, 12, 8, 48, 0, 1, 20, 4, 1, 26, 0, 4,
115, 8, 41,201, 62,105,185, 54, 85,152, 47, 64, 98, 33, 35,
75, 42, 32, 0, 0, 0, 22, 7, 0, 82, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 6, 20, 4, 1,
48, 0, 1,105, 12, 8,227, 54, 58,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,169, 29, 36,
0, 0, 0,172,114,141,172,114,141,186,146,100,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
190,155, 88,180,133,117,172,114,141,172,114,141, 0, 0, 0,
169, 29, 36, 0, 0, 0, 0, 0, 0,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,227, 54, 58,105, 12, 8, 48, 0, 1, 20, 4, 1,
26, 0, 6,115, 8, 41,201, 62,105,185, 52, 86,152, 45, 63,
98, 33, 35, 75, 42, 32, 0, 0, 0, 22, 7, 0, 82, 36, 35,
146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 6,
20, 4, 1, 48, 1, 0,102, 11, 7,224, 55, 59,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,180,133,117,190,155, 88,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,190,155, 88,180,133,117,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,224, 55, 59,102, 11, 7, 48, 1, 0,
20, 4, 1, 26, 0, 6,115, 8, 41,201, 62,105,185, 52, 86,
152, 45, 63, 98, 33, 35, 75, 42, 32, 33, 12, 14, 22, 7, 0,
82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
26, 0, 4, 18, 6, 1, 42, 5, 0,100, 7, 7,223, 54, 58,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0,190,155, 88,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
190,155, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,223, 54, 58,100, 7, 7,
42, 5, 0, 18, 6, 1, 26, 0, 4,115, 8, 41,201, 62,105,
185, 54, 85,152, 47, 64, 97, 32, 34, 75, 42, 32, 33, 12, 14,
22, 7, 0, 82, 36, 35,146, 47, 63,179, 52, 88,186, 63,106,
62, 0, 10, 26, 0, 4, 16, 7, 0, 36, 8, 0,101, 18, 14,
221, 56, 60,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64,200,176, 64,200,176, 64,200,176, 64,200,176, 64,
200,176, 64,200,176, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,221, 56, 60,
101, 18, 14, 36, 8, 0, 16, 7, 0, 26, 0, 4,113, 8, 40,
201, 62,105,183, 54, 84,150, 47, 64, 94, 37, 35, 71, 43, 34,
0, 0, 0, 22, 7, 0, 82, 36, 35,148, 47, 63,179, 52, 88,
186, 63,106, 62, 0, 10, 26, 0, 4, 15, 7, 0, 32, 11, 0,
94, 20, 11,219, 58, 58,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
219, 58, 58, 94, 20, 11, 32, 11, 0, 15, 7, 0, 26, 0, 4,
113, 8, 40,201, 62,105,183, 54, 84,148, 47, 63, 85, 38, 36,
24, 6, 0, 0, 0, 0, 22, 7, 0, 82, 36, 35,148, 47, 63,
179, 52, 88,186, 63,106, 62, 0, 10, 26, 0, 4, 11, 7, 0,
24, 11, 0, 88, 21, 15,217, 58, 58,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,217, 58, 58, 88, 21, 15, 24, 11, 0, 11, 7, 0,
26, 0, 4,113, 8, 40,201, 62,105,183, 54, 84,146, 47, 63,
82, 36, 35, 30, 10, 4, 0, 0, 0, 24, 7, 0, 84, 36, 35,
146, 47, 63,179, 52, 88,186, 63,106, 62, 0, 10, 26, 0, 4,
8, 7, 3, 11, 7, 0, 56, 2, 0,214, 55, 59,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,214, 55, 59, 56, 2, 0, 11, 7, 0,
8, 7, 3, 26, 0, 4,113, 8, 40,201, 62,105,183, 54, 84,
146, 47, 63, 82, 36, 35, 30, 10, 4, 0, 0, 0, 24, 7, 0,
84, 36, 35,146, 47, 63,178, 51, 87,186, 63,106, 62, 0, 10,
26, 0, 4, 7, 2, 6, 7, 2, 6, 48, 2, 0,212, 55, 59,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,212, 55, 59, 48, 2, 0,
7, 2, 6, 7, 2, 6, 26, 0, 4,114, 7, 40,201, 62,105,
185, 54, 85,146, 47, 63, 82, 36, 35, 30, 10, 4, 0, 0, 0,
30, 10, 4, 82, 36, 35,146, 47, 63,178, 51, 87,186, 63,106,
62, 0, 10, 26, 0, 4, 7, 2, 6, 7, 2, 6, 48, 2, 0,
212, 55, 59,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,
254, 45, 55,254, 45, 55,254, 45, 55,254, 45, 55,212, 55, 59,
48, 2, 0, 7, 2, 6, 7, 2, 6, 26, 0, 4,114, 7, 40,
201, 62,105,185, 54, 85,146, 47, 63, 82, 36, 35, 30, 9, 4,
0, 0, 0, 30, 10, 4, 82, 36, 35,146, 47, 63,178, 51, 87,
186, 63,106, 62, 0, 10, 26, 0, 4, 7, 2, 6, 7, 2, 6,
44, 2, 0,192, 59, 65,230, 51, 60,231, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,233, 50, 59,
233, 50, 59,233, 50, 59,233, 50, 59,231, 50, 59,230, 51, 60,
192, 59, 65, 44, 2, 0, 7, 2, 6, 7, 2, 6, 26, 0, 4,
114, 7, 40,202, 63,106,185, 52, 86,146, 45, 64, 82, 35, 36,
30, 9, 4, 0, 0, 0, 30, 10, 4, 82, 36, 35,146, 47, 63,
178, 51, 87,186, 63,106, 62, 0, 10, 26, 0, 6, 6, 5, 3,
6, 5, 3, 30, 1, 1, 92, 5, 7,179, 62, 64,185, 60, 66,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,
189, 60, 63,189, 60, 63,189, 60, 63,189, 60, 63,185, 60, 66,
179, 62, 64, 92, 5, 7, 30, 1, 1, 6, 5, 3, 6, 5, 3,
26, 0, 6,115, 8, 41,201, 62,105,185, 52, 86,146, 45, 64,
82, 35, 36, 30, 9, 4, 0, 0, 0, 30, 10, 4, 82, 36, 35,
146, 47, 63,177, 54, 86,186, 63,106, 62, 0, 10, 24, 0, 6,
6, 5, 3, 6, 5, 3, 18, 3, 1, 48, 2, 0, 62, 2, 0,
68, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0, 72, 3, 0,
68, 3, 0, 62, 2, 0, 48, 2, 0, 18, 3, 1, 6, 5, 3,
6, 5, 3, 24, 0, 6,115, 8, 41,201, 62,105,185, 52, 86,
146, 45, 64, 82, 36, 35, 30, 9, 4, 0, 0, 0, 30, 9, 4,
82, 36, 35,146, 47, 63,177, 54, 86,186, 63,106, 62, 0, 10,
24, 0, 5, 8, 3, 5, 7, 2, 6, 9, 5, 2, 20, 3, 1,
23, 2, 2, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0, 27, 2, 0,
27, 2, 0, 27, 2, 0, 23, 2, 2, 20, 3, 1, 9, 5, 2,
7, 2, 6, 8, 3, 5, 24, 0, 5,115, 8, 41,201, 62,105,
185, 54, 85,146, 45, 64, 82, 36, 35, 30, 10, 4, 0, 0, 0,
30, 9, 4, 82, 36, 35,148, 49, 63,178, 55, 84,186, 63,106,
62, 0, 10, 24, 0, 5, 8, 3, 5, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 5, 7, 2, 5, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 8, 3, 5, 24, 0, 5,115, 8, 41,
202, 63,102,185, 54, 85,146, 47, 63, 82, 36, 35, 30, 10, 4,
0, 0, 0, 30, 10, 4, 84, 35, 36,150, 49, 61,182, 55, 85,
187, 64,107, 62, 0, 8, 22, 0, 4, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 2, 6, 7, 2, 6, 8, 3, 7,
8, 3, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 6, 4, 3, 6, 4, 3,
7, 6, 3, 7, 6, 3, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 30, 0, 4,
115, 8, 41,202, 63,102,186, 55, 82,148, 49, 63, 82, 35, 36,
60, 23, 21, 0, 0, 0, 30, 10, 4, 84, 35, 36,152, 51, 60,
166, 39, 63,190, 63,105, 64, 0, 9, 26, 0, 4, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 6, 1, 5, 6, 1, 5,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 8, 3, 7, 8, 3, 7, 8, 3, 7,
8, 3, 7, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
8, 3, 7, 8, 3, 7, 7, 2, 6, 7, 2, 6, 8, 3, 7,
8, 3, 7, 8, 3, 7, 8, 3, 7, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 6, 4, 3,
6, 4, 3, 7, 6, 3, 7, 6, 3, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
30, 0, 4,113, 6, 41,200, 61,104,165, 36, 63,146, 49, 63,
81, 35, 34, 30, 7, 4, 0, 0, 0, 30, 10, 4, 84, 36, 35,
156, 55, 60,169, 42, 63,194, 63,106, 70, 0, 9, 28, 0, 5,
7, 2, 6, 7, 2, 6, 6, 1, 5, 7, 2, 6, 7, 2, 6,
8, 3, 7, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6, 7, 2, 6,
7, 2, 6, 30, 0, 4,110, 5, 42,196, 59,104,158, 35, 64,
141, 50, 65, 81, 34, 35, 26, 3, 0, 0, 0, 0, 0, 0, 0,
82, 38, 35, 97, 10, 8,165, 46, 60,188, 59, 92, 90, 0, 19,
38, 0, 4, 16, 3, 3, 13, 5, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2, 11, 7, 2,
13, 5, 2, 18, 1, 3, 41, 0, 3,147, 32, 70,188, 53, 94,
240,129,153,211,132,143,184,143,146, 58, 39, 37,172,168,163,
0, 0, 0, 73, 39, 36,108, 31, 31,158, 57, 59,164, 43, 63,
171, 60, 84, 58, 0, 2, 36, 0, 3, 27, 3, 0, 22, 7, 0,
22, 6, 0, 22, 6, 0, 22, 7, 0, 24, 8, 0, 22, 6, 0,
22, 6, 0, 22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0,
22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0,
22, 7, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0, 22, 7, 0,
22, 7, 0, 22, 7, 0, 22, 7, 0, 22, 7, 0, 22, 6, 0,
22, 6, 0, 22, 7, 0, 22, 7, 0, 22, 7, 0, 22, 7, 0,
22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0,
22, 7, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0, 22, 7, 0,
22, 6, 0, 22, 6, 0, 22, 7, 0, 22, 7, 0, 22, 6, 0,
22, 6, 0, 22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0,
22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0,
22, 6, 0, 22, 6, 0, 22, 6, 0, 22, 6, 0, 22, 7, 0,
22, 6, 0, 22, 6, 0, 22, 7, 0, 22, 7, 0, 24, 6, 0,
24, 6, 0, 22, 7, 0, 22, 7, 0, 22, 6, 0, 22, 6, 0,
22, 7, 0, 29, 2, 0, 40, 0, 2,102, 17, 39,199, 68,102,
169, 32, 64,174, 79, 95,148, 87, 94,208,177,180,173,164,164,
254,252,251, 0, 0, 0, 28, 4, 0, 91, 36, 32, 90, 13, 9,
160, 53, 58,160, 47, 63,168, 73, 91, 76, 1, 13, 89, 36, 34,
84, 36, 35, 82, 36, 35, 82, 36, 35, 81, 35, 34, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 35, 36,
82, 35, 36, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 35, 36, 82, 35, 36, 82, 36, 35,
82, 36, 35, 82, 35, 36, 82, 35, 36, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 35, 36, 82, 35, 36, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
84, 36, 35, 84, 36, 35, 84, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 84, 35, 36, 91, 34, 35,133, 52, 67,176, 69, 92,
170, 39, 63,166, 43, 63,163, 88, 95,126, 85, 86,148,129,130,
227,223,222,166,165,163, 0, 0, 0, 0, 0, 0, 32, 3, 0,
92, 35, 33, 98, 9, 7,166, 53, 56,164, 51, 59,160, 51, 58,
157, 54, 58,152, 53, 60,167, 68, 82,165, 66, 82,168, 67, 83,
167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,
165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,165, 66, 82,
165, 66, 82,167, 66, 82,167, 66, 82,165, 66, 82,165, 66, 82,
167, 66, 82,167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,
167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,
165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,165, 66, 82,
165, 66, 82,167, 66, 82,167, 66, 82,165, 66, 82,165, 66, 82,
167, 66, 82,167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,
167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,
165, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,165, 66, 82,
165, 66, 82,167, 66, 82,167, 66, 82,165, 64, 83,165, 64, 83,
167, 66, 82,167, 66, 82,165, 66, 82,165, 66, 82,167, 66, 82,
167, 66, 82,165, 66, 82,167, 66, 82,167, 66, 82,167, 66, 82,
165, 66, 82,167, 68, 82,152, 53, 60,156, 53, 60,162, 49, 60,
166, 49, 58,169, 50, 56,101, 4, 7, 89, 34, 34, 26, 2, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 73, 39, 36,101, 32, 34, 96, 13, 9,101, 6, 6,
155, 56, 58,154, 55, 57,152, 53, 60,148, 49, 63,146, 45, 64,
148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,
148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,
146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,
146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,
148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,
148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,
146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,
146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,
148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,
148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,
146, 47, 63,146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,
146, 47, 63,148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,
148, 47, 63,148, 47, 63,146, 47, 63,146, 47, 63,148, 47, 63,
148, 47, 63,146, 47, 63,147, 48, 62,152, 51, 60,155, 54, 59,
155, 56, 58,100, 5, 5, 96, 13, 9,101, 33, 32, 73, 40, 34,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 2, 0, 76, 38, 35,
82, 35, 35, 85, 36, 34, 85, 36, 34, 84, 35, 36, 82, 36, 35,
82, 35, 36, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35,
82, 36, 35, 82, 36, 35, 82, 36, 35, 82, 36, 35, 84, 35, 36,
85, 36, 37, 85, 36, 34, 82, 35, 35, 77, 39, 36, 32, 3, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 30, 9, 4, 30, 9, 4, 30, 9, 4,
30, 9, 4, 30, 9, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4,
30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4, 30, 9, 4,
30, 10, 4, 30, 10, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4,
30, 10, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4, 30, 10, 4,
30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4,
30, 9, 4, 30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 10, 4,
30, 10, 4, 30, 10, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4,
30, 10, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4, 30, 10, 4,
30, 9, 4, 30, 9, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4,
30, 9, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4, 30, 9, 4,
30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 10, 4, 30, 10, 4,
30, 10, 4, 30, 9, 4, 30, 9, 4, 30, 10, 4, 30, 10, 4,
30, 9, 4, 30, 9, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4,
30, 9, 4, 30, 10, 4, 30, 10, 4, 30, 9, 4, 30, 9, 4,
30, 8, 4, 30, 9, 4, 30, 9, 4, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0};
--- >8 ----
List archives: http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'cvs-request at xiph.org'
containing only the word 'unsubscribe' in the body. No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.
More information about the commits
mailing list