diff options
| author | Rudy Bousset <rbousset@z2r4p3.le-101.fr> | 2020-01-23 14:48:38 +0100 | 
|---|---|---|
| committer | Rudy Bousset <rbousset@z2r4p3.le-101.fr> | 2020-01-23 14:48:38 +0100 | 
| commit | 165f66fe379a9f488a97689aff1c7cb1ec2858f6 (patch) | |
| tree | a4584619c358fe47ab080dd580538535b5c7a4a1 /minilibx | |
| parent | Added libft (diff) | |
| download | 42-cub3d-165f66fe379a9f488a97689aff1c7cb1ec2858f6.tar.gz 42-cub3d-165f66fe379a9f488a97689aff1c7cb1ec2858f6.tar.bz2 42-cub3d-165f66fe379a9f488a97689aff1c7cb1ec2858f6.tar.xz 42-cub3d-165f66fe379a9f488a97689aff1c7cb1ec2858f6.tar.zst 42-cub3d-165f66fe379a9f488a97689aff1c7cb1ec2858f6.zip | |
Deleted libx
Diffstat (limited to '')
| -rw-r--r-- | minilibx_opengl_20191021/Makefile | 24 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/font.c | 3525 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/font.xcf | bin | 52570 -> 0 bytes | |||
| -rw-r--r-- | minilibx_opengl_20191021/mlx.h | 149 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_init_loop.m | 192 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_int.h | 102 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_int_str_to_wordtab.c | 107 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_mouse.m | 52 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_new_image.m | 198 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_new_window.h | 57 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_new_window.m | 766 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_opengl.h | 21 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_opengl.m | 57 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_png.c | 418 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_png.h | 4 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_rgb.c | 763 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_shaders.c | 240 | ||||
| -rw-r--r-- | minilibx_opengl_20191021/mlx_xpm.c | 338 | 
18 files changed, 0 insertions, 7013 deletions
| diff --git a/minilibx_opengl_20191021/Makefile b/minilibx_opengl_20191021/Makefile deleted file mode 100644 index 2e44836..0000000 --- a/minilibx_opengl_20191021/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -# -# - -NOM=libmlx.a -SRC= mlx_shaders.c mlx_new_window.m mlx_init_loop.m mlx_new_image.m mlx_xpm.c mlx_int_str_to_wordtab.c -SRC+= mlx_png.c mlx_mouse.m -OBJ1=$(SRC:.c=.o) -OBJ=$(OBJ1:.m=.o) -CFLAGS+=-O2 - -# add to match string put with X11 in size and position -CFLAGS+= -DSTRINGPUTX11 - -all: $(NOM) - -$(NOM):	$(OBJ) -	ar -r $(NOM) $(OBJ) -	ranlib $(NOM) - -clean: -	rm -f $(NOM) $(OBJ) *~ -	rm -f mlx_app - -re: clean all diff --git a/minilibx_opengl_20191021/font.c b/minilibx_opengl_20191021/font.c deleted file mode 100644 index 656d248..0000000 --- a/minilibx_opengl_20191021/font.c +++ /dev/null @@ -1,3525 +0,0 @@ -/* GIMP RGBA C-Source image dump (font.c) */ - -static const struct { -  unsigned int 	 width; -  unsigned int 	 height; -  unsigned int 	 bytes_per_pixel; /* 2:RGB16, 3:RGB, 4:RGBA */  -  unsigned char	 pixel_data[1140 * 20 * 4 + 1]; -} font_atlas = { -  1140, 20, 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\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\214\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  ")\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\263\377\377\377\13\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377b\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\270\377\377" -  "\377u\377\377\377\13\377\377\377\252\377\377\377\255\377\377\377\13\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\374\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377e\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377\377\377\267" -  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\343\377\377" -  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\13\377\377\377\355\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\373\377\377\377\243\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377b\377\377\377\237\377\377\377\233\377\377\377Z\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "b\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377)\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377" -  "c\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377b\377\377\377c\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377S\377\377\377c\377\377\3775\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377" -  "\377\377\363\377\377\377\364\377\377\377\364\377\377\377\372\377\377\377" -  "\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377" -  "\377\371\377\377\377\233\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372" -  "\377\377\377\364\377\377\377\364\377\377\377\363\377\377\377\224\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377U\377\377\377e\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377s\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\214\377\377\377\372\377" -  "\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\367\377\377\377" -  "\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\340" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\304\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\214\377\377\377\372\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377s\377\377\377\366\377\377\377\342\377\377\377%\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377" -  "\372\377\377\377\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377\374\377" -  "\377\377\370\377\377\377\370\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377" -  "\377\317\377\377\377\357\377\377\377\373\377\377\377\225\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320" -  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\372\377\377\377\363\377" -  "\377\377\333\377\377\377m\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377\364\377\377\377\366\377\377\377%\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377" -  "\377\361\377\377\377\377\377\377\377\254\377\377\377=\377\377\377\375\377" -  "\377\377\372\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\363\377\377\377%\377\377\377" -  "\224\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\336\377\377\377\375\377" -  "\377\377x\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\262\377\377\377\372\377\377\377\370\377\377\377\246\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377=\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\377\377\377~\377\377\377\374\377\377\377\377\377\377" -  "\377\376\377\377\377\224\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377" -  "\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\325\377\377\377\377" -  "\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\355\377\377\377\33\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377v\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\315\377\377\377\367\377\377\377\373\377\377\377\334\377\377\377B\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377`\377\377\377\300\377\377\377\342\377\377\377Z\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377" -  "\377\347\377\377\377\373\377\377\377\364\377\377\377\312\377\377\377)\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\226\377\377\377\346\377\377\377\370\377\377\377\360\377\377\377\327\377" -  "\377\377b\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\343\377\377\377\273" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377" -  "\377\377\315\377\377\377\337\377\377\377\333\377\377\377\333\377\377\377" -  "\333\377\377\377\343\377\377\377\223\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\346\377\377\377" -  "\370\377\377\377\364\377\377\377\320\377\377\377O\0\0\0\0\377\377\377\377" -  "\377\377\377\377\377\377\377\13\377\377\377\315\377\377\377\337\377\377\377" -  "\333\377\377\377\333\377\377\377\333\377\377\377\333\377\377\377\333\377" -  "\377\377\323\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0" -  "\0\377\377\3772\377\377\377\316\377\377\377\366\377\377\377\373\377\377\377" -  "\344\377\377\377\200\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377u\377\377\377\342\377\377\377\370\377\377\377\364" -  "\377\377\377\305\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377)\377\377\3775\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\371\371\377.\377\377\377V\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\13\377\377\377\321\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377" -  "\273\377\377\377\332\377\377\377\322\377\377\377\206\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3778\377\377" -  "\377\367\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\374\377\377\377\360\377\377\377\253\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\13\377\377\377\304\377\377\377\375\377\377\377\377\377\377\377\377\377\377" -  "\377\373\377\377\377\247\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\374\377\377\377\324\377\377\377B\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\346" -  "\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377" -  "\377\377\352\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\376\377\377\377l\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\333\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\361\377\377\377\202\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377" -  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\364" -  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377" -  "\377\377\377\377\377\377\377\377\303\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\225\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377" -  "\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\356\377\377\377" -  "\376\377\377\377v\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13" -  "\377\377\377\352\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377" -  "\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\375" -  "\377\377\377\321\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\307\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0\377\377\377\13\377" -  "\377\377\355\377\377\377\330\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377\206\377\377\377\366\377\377\377\377\377\377\377" -  "\377\377\377\377\373\377\377\377\246\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\370\377\377\377\324\377\377\377" -  "B\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206" -  "\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\373\377\377" -  "\377\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\364\377\377\377\312\377\377\377\33\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\365\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\342\377\377\377V\0\0\0\0" -  "\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\252\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\0\0\0\0\0\0" -  "\0\0\377\377\377\13\377\377\377\352\377\377\377\364\377\377\377%\377\377" -  "\377\377\377\377\377\377\377\377\377}\377\377\377\376\377\377\377\332\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\262\377\377\377\377\377\377\377" -  "\216\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\372\377" -  "\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355" -  "\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377" -  "\345\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\3778\377\377\377" -  "\367\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\377\377" -  "\377\206\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\266\377\377\377\377\377\377\377\234\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\361" -  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\224\377\377\377\377\377\377\377\312\377\377\377\255\377\377\377" -  "\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377;\377\377\377\373\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377" -  "\377\266\377\377\377\263\377\377\377\256\377\377\377\373\377\377\377\254" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\376\377\377\377_\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\374" -  "\377\377\377\355\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377" -  "\377\377\374\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\334\377\377\377\377\377\377\377\346\377\377\377\272\377\377\377" -  "\342\377\377\377\276\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377" -  "l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377" -  "\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377" -  "\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\254\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\247\377\377\377\343\377\377\377\340\377\377\377\377\377\377\377" -  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377`\377\377\377\262\377\377\377=\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\377\377\377\377" -  "\325\377\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377`\377\377\377\263\377\377\377\307\377\377\377\376\377\377\377\363" -  "\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\0\377\377\377\0\377\377\377\0\377\377\377\1\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\351\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\377" -  "\377\377\377\243\377\377\377;\377\377\377\374\377\377\377\364\377\377\377" -  "%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\313\377\377\377\355\0\0\0\0\377\377\377\320\377\377\377\346\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\247" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\352\377\377\377S\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "}\377\377\377\377\377\377\377\326\377\377\377\334\377\377\377\376\377\377" -  "\377l\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\323\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\354\377\377\377\364\377" -  "\377\377\226\377\377\377\373\377\377\377\337\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377" -  "\377\362\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377" -  "\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377" -  "\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377\377\205\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377_\377\377\377\232\377\377\377\13\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "!\377\377\377\371\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\377\377" -  "\377\377\365\377\377\377\353\377\377\377\377\377\377\377\367\377\377\377" -  "2\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313" -  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377" -  "\377\377\377\377\377\377\376\377\377\377\335\377\377\377\371\377\377\377" -  "\377\377\377\377\352\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\342" -  "\377\377\377\362\377\377\377\377\377\377\377\375\377\377\377\\\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "U\377\377\377\374\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377" -  "\377\377\377\377\373\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\251\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\247\377\377\377\377\377\377\377\377\377\377\377\360\377\377\377" -  "\373\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\376\377\377" -  "\377\374\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\367" -  "\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\25\377" -  "\377\377\356\377\377\377\377\377\377\377\351\377\377\377\350\377\377\377" -  "\376\377\377\377\376\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377|\377\377\377\376\377\377\377\377\377\377\377\345\377" -  "\377\377\356\377\377\377\377\377\377\377\355\377\377\377%\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377}\377\377\377\374\377\377\377\254\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377V\377\377\377\375\377\377\377\241\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377" -  "\377\377\372\377\377\377\343\377\377\377u\377\377\377\217\377\377\377\374" -  "\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377\233\377\377\377\376\377\377\377\377\377\377\377" -  "\354\377\377\377\375\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377" -  "\377\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\342\377\377\377\304\377\377\377\332\377\377\377\376\377\377\377\377\377" -  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\331\377\377\377\377\377\377\377\373\377\377\377\306\377\377\377" -  "\307\377\377\377\375\377\377\377\376\377\377\377Q\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\330\377\377" -  "\377\310\377\377\377\370\377\377\377\377\377\377\377\375\377\377\377f\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374" -  "\377\377\377\376\377\377\377\323\377\377\377\327\377\377\377\327\377\377" -  "\377\327\377\377\377\316\377\377\377\33\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\324\377" -  "\377\377\327\377\377\377\327\377\377\377\327\377\377\377\312\377\377\377" -  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362" -  "\377\377\377\377\377\377\377\365\377\377\377\277\377\377\377\321\377\377" -  "\377\377\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\356\377\377\377\366\377\377\377%\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377}\377\377\377\332\377\377\377\323\377\377" -  "\377\371\377\377\377\377\377\377\377\331\377\377\377\327\377\377\377\266" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377" -  "\302\377\377\377\323\377\377\377\322\377\377\377\322\377\377\377\342\377" -  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377" -  "\377\377\335\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\336\0\0\0\0\0\0" -  "\0\0\377\377\377\275\377\377\377\377\377\377\377\330\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377" -  "\364\377\377\377%\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377" -  "\375\377\377\377\377\377\377\377\325\377\377\377\313\377\377\377\376\377" -  "\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377" -  "\377\377\322\377\377\377\366\377\377\377\377\377\377\377\355\377\377\377" -  "\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\375" -  "\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377\376\377\377" -  "\377\377\377\377\377\216\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\224\377\377\377\377\377\377\377\342\377\377\377\310\377\377" -  "\377\322\377\377\377\371\377\377\377\377\377\377\377\336\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377" -  "\377\377\377\377\330\377\377\377\271\377\377\377\351\377\377\377\377\377" -  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377}\377\377" -  "\377\332\377\377\377\327\377\377\377\323\377\377\377\371\377\377\377\377" -  "\377\377\377\331\377\377\377\326\377\377\377\332\377\377\377p\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377" -  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377" -  "\377%\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377\365\377" -  "\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\345" -  "\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\377\377\377" -  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\361\377\377\377\347\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\214\377\377\377\377\377\377\377\343\0\0\0\0\0\0\0\0\377" -  "\377\377\261\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377" -  "\377\377\377\377\377\377\13\377\377\377\351\377\377\377\376\377\377\377i" -  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377\372\377\377\377" -  "8\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\327\377" -  "\377\377\322\377\377\377\322\377\377\377\316\377\377\377\351\377\377\377" -  "\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\320\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\377\377\377\377\272\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\371\377\377\377" -  "i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377" -  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\373\377\377\377" -  "\356\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "S\377\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377" -  "\377\377\314\377\377\377\271\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\252\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\360\377\377\377\334\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\247\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\337\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\3\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331" -  "\377\377\377\376\377\377\377i\377\377\377K\377\377\377\374\377\377\377\366" -  "\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\316\377\377\377\333\0\0\0\0\377\377\377\316\377\377\377" -  "\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "8\377\377\377\372\377\377\377\377\377\377\377\307\377\377\377\237\377\377" -  "\377\364\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377" -  "\377\377\377\377\377\232\377\377\377\375\377\377\3772\377\377\377=\377\377" -  "\377\375\377\377\377\254\377\377\377!\377\377\377\371\377\377\377\367\377" -  "\377\3778\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377" -  "\372\377\377\377\346\377\377\377\13\377\377\377\371\377\377\377\333\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\13\377\377\377\355\377\377\377\375\377\377\377\\\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377!\377\377\377\372\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\327\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377" -  "\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377" -  "\377\377\377\377\377\377\353\377\377\377\13\0\0\0\0\377\377\377\320\377\377" -  "\377\377\377\377\377\260\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\205\377\377\377\322\377\377\377\353\377\377\377\376" -  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\325\377\377\377\375\377\377\377M\0\0\0\0\377\377\377\33" -  "\377\377\377\356\377\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\215\377\377\377\375\377\377\377Z\0\0\0\0" -  "\0\0\0\0\377\377\377\325\377\377\377\377\377\377\377\257\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377" -  "\356\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377" -  "\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\377\377" -  "\377\377\216\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\224\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\302\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\333" -  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\260\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\330\377\377\377\377" -  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\336\377\377\377\377\377" -  "\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\250\377\377\377\276\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\276\377\377\377\377\377\377\377\377\377\377\377\225\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\325\377" -  "\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377" -  "\377\377\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377K\377\377\377\374\377\377\377\375\377\377\377q\0\0\0\0\377\377" -  "\377\33\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\377\377" -  "\377\377\376\377\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243" -  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\377\377\377\377\327\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\376\377" -  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\257\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\376\377\377\377U\0\0\0\0\377\377\377\33\377\377\377\353\377\377\377\377" -  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377K\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377" -  "\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\246\377\377" -  "\377\213\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313" -  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377\377\377\363\377\377\377\13\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\377\377\377\377" -  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\270\377\377\377\377\377" -  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0" -  "\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\307\377\377\377\377\377\377\377\375\377\377\3778\377\377\377\13" -  "\377\377\377\352\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\377\377\377\377\377" -  "\377\377\377\251\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\377\377\377\377\315\0\0\0\0\0\0\0\0\377\377\377\253\377\377\377\377\377" -  "\377\377\346\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\25\377\377" -  "\377\356\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\313\377\377\377\377\377\377\377\310\0\0\0\0\0\0\0\0\377" -  "\377\377\253\377\377\377\377\377\377\377\342\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0" -  "\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\367\377\377\377)\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377" -  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377z\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\355\377\377\377\363\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377" -  "i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377" -  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377" -  "\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377" -  "\377\347\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\247\377\377" -  "\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377" -  "\377\377\374\377\377\377\333\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\377\377\377\342\377\377\377\376\377\377\377v\377\377\377\33\377\377" -  "\377\366\377\377\377\367\377\377\377)\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\316\0\0\0\0\0\0" -  "\0\0\377\377\377\232\377\377\377\377\377\377\377\264\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\25\377\377\377\356\377\377\377\376\377\377\377v\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376" -  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377\377\377\277\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\335\377\377\377\370\377\377\377\353\377\377\377\363\377" -  "\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377V\377\377\377\33\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377b\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377S\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377" -  "\377\3775\377\377\377;\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377" -  "\377V\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377\377\326" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377E\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377" -  "\377\376\377\377\377b\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377" -  "\377\375\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377" -  "\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377X\0" -  "\0\0\0\0\0\0\0\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377E\377\377\377K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377S\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\3775\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377U\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377E\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377" -  "\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361" -  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377" -  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377" -  "\377\377\0\377\377\377\6\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\377\377\377\33" -  "\377\377\377\364\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\3772\377\377\377\274\377\377\377\361\377\377" -  "\377\375\377\377\377\265\377\377\377\367\377\377\377\372\377\377\377\221" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377" -  "\374\377\377\377\336\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\261\377\377" -  "\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\232\377\377\377" -  "\371\377\377\377\33\377\377\377;\377\377\377\374\377\377\377\217\377\377" -  "\377\335\377\377\377\375\377\377\377\\\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\377\377\377e" -  "\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377" -  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377" -  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377" -  "\227\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377" -  "\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\306\377\377\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377" -  "\377\377`\377\377\377\375\377\377\377\346\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\213\377\377\377\376" -  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\3772\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377" -  "\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\231\377\377\377\377" -  "\377\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377\356\377\377\377\374" -  "\377\377\377\332\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377K\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\347\377\377\377\13" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377U\377\377\377" -  "\375\377\377\377\266\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377" -  "\377\236\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377" -  "\361\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377j\377\377\377" -  "\376\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377" -  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377" -  "\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377G\377\377\377\350\377\377\377\377\377\377\377\367" -  "\377\377\377y\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\207\377\377\377\307\377\377\377\304\377\377\377\304\377\377\377" -  "\304\377\377\377\304\377\377\377\304\377\377\377\243\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\351\377\377" -  "\377\377\377\377\377\365\377\377\377n\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\13\377\377\377\345\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\273\377\377\377\377\377\377\377\234" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\376\377\377\377i\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373" -  "\377\377\377\344\377\377\377\317\377\377\377\376\377\377\377v\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377X\377\377\377\375\377\377" -  "\377\327\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\300" -  "\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377" -  "\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\342\377\377\377\377" -  "\377\377\377\225\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377" -  "\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377" -  "\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377" -  "\377\377\237\377\377\377\203\377\377\377\377\377\377\377\375\377\377\377" -  "Q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13" -  "\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377" -  "\377\377\377\377\377\377\377\377\377\377\217\377\377\377X\377\377\377\375" -  "\377\377\377\373\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\313\377\377\377\373\377\377\377\371\377\377\377\366" -  "\377\377\377%\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377" -  "\377\377\377\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\375" -  "\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377" -  "\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306" -  "\377\377\377\375\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377" -  "\33\377\377\377\362\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\377\377" -  "\377!\377\377\377\371\377\377\377\375\377\377\377M\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0\0\0" -  "\0\0\0\0\377\377\377\25\377\377\377\370\377\377\377\364\377\377\377%\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377\377\377" -  "\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355" -  "\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0" -  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377" -  "\377\377\311\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\260\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\222\377\377\377" -  "\377\377\377\377\252\0\0\0\0\377\377\377\307\377\377\377\355\377\377\377" -  "%\377\377\377K\377\377\377\374\377\377\377\260\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\376\377\377\377\333\377\377" -  "\377\243\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\345\377\377\377\375\377" -  "\377\377M\377\377\377\13\377\377\377\351\377\377\377\372\377\377\377)\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\317\377\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377" -  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377" -  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377" -  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\316\377\377\377\247" -  "\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\216\377\377\377\345\377\377" -  "\377\377\377\377\377\377\377\377\377\376\377\377\377\275\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376" -  "\377\377\377\271\377\377\377\364\377\377\377\377\377\377\377\377\377\377" -  "\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0" -  "\0\0\0\377\377\377\13\377\377\377\272\377\377\377\371\377\377\377\377\377" -  "\377\377\377\377\377\377\355\377\377\377\200\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377" -  "\377\377\377\377\377\377\377\325\377\377\377\377\377\377\377\332\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\3775\377\377\377" -  "\327\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\267\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377" -  "\377\377\361\377\377\377\363\377\377\377\377\377\377\377\374\377\377\377" -  "\364\377\377\377\367\377\377\377\354\377\377\377%\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\350\377\377\377\377\377" -  "\377\377\377\377\377\377\360\377\377\377\360\377\377\377\375\377\377\377" -  "\243\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\376\377\377\377\215\377\377\377\350\377\377\377\377\377\377\377\377\377" -  "\377\377\346\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\301\377\377\377\370\377\377\377\364\377\377\377\364\377\377" -  "\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\301\377\377\377\370\377\377\377\364\377" -  "\377\377\364\377\377\377\360\377\377\377\350\377\377\377%\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377" -  "\377\377\252\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\354\377\377\377\363" -  "\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377" -  "\377\332\377\377\377\374\377\377\377\377\377\377\377\276\377\377\377\353" -  "\377\377\377\377\377\377\377\352\377\377\377)\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\214\377\377\377\371\377\377\377\212\377\377\377" -  "\350\377\377\377\377\377\377\377\377\377\377\377\346\377\377\3772\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377" -  "\351\377\377\377\377\377\377\377\377\377\377\377\364\377\377\377\222\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\213\377" -  "\377\377\371\377\377\377\262\377\377\377\365\377\377\377\377\377\377\377" -  "\377\377\377\377\313\377\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\361\377\377\377\377\377\377\377" -  "\377\377\377\377\310\377\377\377\347\377\377\377\315\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\301\377\377\377\351\377" -  "\377\377)\377\377\377\326\377\377\377\377\377\377\377\377\377\377\377\372" -  "\377\377\377M\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\224\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\373\377" -  "\377\377\300\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377\13\377\377\377\332\377\377\377\360\377\377\377\373\377\377\377\377\377" -  "\377\377\376\377\377\377\364\377\377\377\367\377\377\377\354\377\377\377" -  "%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\301\377\377\377\354" -  "\377\377\3772\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\364\377\377\377\275" -  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377\364\377" -  "\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377" -  "\367\377\377\377\\\377\377\377\377\377\377\377\377\377\377\377\335\377\377" -  "\377\360\377\377\3778\0\0\0\0\377\377\377~\377\377\377\224\0\0\0\0\377\377" -  "\377\13\377\377\377\332\377\377\377\342\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\275\377\377\377\373\377\377\377\255\0\0\0\0\0\0\0\0\377" -  "\377\377r\377\377\377\370\377\377\377\315\0\0\0\0\377\377\377\377\377\377" -  "\377\377\377\377\377I\377\377\377\364\377\377\377\330\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\254\377\377\377\367\377\377\377\\\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\365\377\377\377\364\377" -  "\377\377\364\377\377\377\364\377\377\377\360\377\377\377\360\377\377\377" -  "\354\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313" -  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\7\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\313\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\375" -  "\377\377\3778\377\377\377\13\377\377\377\364\377\377\377\334\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\364" -  "\377\377\377\376\377\377\377\370\377\377\377\364\377\377\377\376\377\377" -  "\377\374\377\377\377\320\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\307\377\377\377" -  "O\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377\223\377\377\377\377\377\377\377\234\377\377\377\243\377\377\377\376" -  "\377\377\377\217\377\377\377\373\377\377\377v\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\331\377\377\377\377\377" -  "\377\377\377\377\377\377\367\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323" -  "\377\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\245\377\377\377\377\377" -  "\377\377\215\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377" -  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\260\377\377\377\354\377\377\377\236\377\377\377\326\377\377" -  "\377\361\377\377\377\224\377\377\377\341\377\377\377\314\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313" -  "\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\325" -  "\377\377\377\374\377\377\3772\377\377\377\215\377\377\377\241\377\377\377" -  "\13\377\377\377\361\377\377\377\367\377\377\377)\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376" -  "\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377" -  "\376\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\200\377\377\377\363\377\377\377\376" -  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\240\377\377\377\377\377\377\377\363\377\377\377V\377\377\377\374" -  "\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377K\377\377\377\374\377\377\377\333\377\377\377\274\377\377\377" -  "\310\377\377\377\251\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377l\377\377\377" -  "j\377\377\377\237\377\377\377\223\377\377\377%\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\342\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377" -  "\237\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\243\0\0\0\0\377" -  "\377\377\377\377\377\377\377\377\377\377\25\377\377\377\361\377\377\377\366" -  "\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377\377\377" -  "\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\323\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377" -  "\377\224\377\377\377\374\377\377\377\377\377\377\377\314\377\377\377\33\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\274\377\377\377\377\377\377\377\370\377\377\377\370\377\377\377\370\377" -  "\377\377\370\377\377\377\373\377\377\377\321\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\264\377\377\377" -  "\377\377\377\377\377\377\377\377\262\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\337" -  "\377\377\377\377\377\377\377\271\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\377\377\377\25\377\377\377\361\377\377\377\352\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377U\377\377\377\237\377\377\377\376\377\377\377l\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377" -  "\377\377\377\266\377\377\377\213\377\377\377\377\377\377\377\304\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377" -  "\377\377\377\377\377\265\377\377\377E\377\377\377y\377\377\377\337\377\377" -  "\377\377\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377\13\377\377\377\352\377\377\377\375\377\377\377Q\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\324\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377K\377\377\377\374\377\377\377\337\377\377\377Z\377\377\377" -  "p\377\377\377p\377\377\377f\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377" -  "\377\3775\377\377\377\371\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\313\377\377\377\376\377\377\377\224\377\377\377m\377\377\377v\377" -  "\377\377h\377\377\377\362\377\377\377\366\377\377\377%\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377" -  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\300\377\377\377\372\377" -  "\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\313\377\377\377\370\377\377\377\366\377\377\377" -  "\317\377\377\377\243\377\377\377\376\377\377\377\372\377\377\377\333\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\367\377\377\377\304\377\377\377\377\377\377\377\251\377\377\377\13\377\377" -  "\377\361\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377U\377\377\377\374\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\314\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377l\377\377\377\377\377" -  "\377\377\377\377\377\377U\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\243\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377" -  "\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374" -  "\377\377\377\377\377\377\377\336\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377" -  "\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\33\377\377\377\371\377\377\377\360\377\377\377\33\0\0\0\0\377\377\377\320" -  "\377\377\377\376\377\377\377_\0\0\0\0\377\377\377\377\377\377\377\377\377" -  "\377\377U\377\377\377\375\377\377\377\277\377\377\377\33\377\377\377\366" -  "\377\377\377\376\377\377\377m\377\377\377\213\377\377\377\377\377\377\377" -  "\243\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\324\377\377\377\377\377\377\377\377\377\377\377\355\377\377\377\33\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\204" -  "\377\377\377\377\377\377\377\304\377\377\377\204\377\377\377\377\377\377" -  "\377\260\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377" -  "\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\266\377\377\377\377\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377" -  "\377\377\207\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377" -  "\377\377\377\377\373\377\377\377\313\377\377\377\303\377\377\377\374\377" -  "\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\351\377" -  "\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\346\377\377" -  "\377\377\377\377\377\365\377\377\377\305\377\377\377\315\377\377\377\376" -  "\377\377\377\366\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377}\377\377\377\376\377\377\377\377\377\377\377\325\377\377\377\321" -  "\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377" -  "\377\377\335\377\377\377\263\377\377\377\351\377\377\377\377\377\377\377" -  "\304\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377S\377\377" -  "\377\330\377\377\377\343\377\377\377\377\377\377\377\364\377\377\377\327" -  "\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\3778\377\377\377\372\377\377\377\376\377\377\377\275" -  "\377\377\377\307\377\377\377\376\377\377\377\377\377\377\377\324\377\377" -  "\377y\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\377\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\356\377" -  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\336\377\377\377\333\377\377\377\327\377" -  "\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\336\377\377\377\333" -  "\377\377\377\327\377\377\377\377\377\377\377\366\377\377\377)\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375" -  "\377\377\377\252\0\0\0\0\377\377\377`\377\377\377\373\377\377\377\377\377" -  "\377\377\242\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355" -  "\377\377\377\377\377\377\377\346\377\377\377\362\377\377\377\377\377\377" -  "\377\362\377\377\377\347\377\377\377\377\377\377\377\215\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377" -  "\377\377\377\370\377\377\377\306\377\377\377\356\377\377\377\377\377\377" -  "\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377" -  "\377\377\376\377\377\377\377\377\377\377\321\377\377\377\307\377\377\377" -  "\375\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377" -  "\352\377\377\377\300\377\377\377\365\377\377\377\377\377\377\377\316\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377}\377\377\377\376" -  "\377\377\377\377\377\377\377\325\377\377\377\321\377\377\377\376\377\377" -  "\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377\366\377\377\377\377" -  "\377\377\377\335\377\377\377\322\377\377\377\343\377\377\377%\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\377\377\377\377\370" -  "\377\377\377\277\377\377\377\262\377\377\377\346\377\377\377\377\377\377" -  "\377\231\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377" -  "\315\377\377\377\330\377\377\377\370\377\377\377\377\377\377\377\335\377" -  "\377\377\327\377\377\377\333\377\377\377\322\377\377\377\33\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377l\0\0" -  "\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\376\377\377" -  "\377v\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377\377\377\366\377\377" -  "\377)\377\377\377\377\377\377\377\377\377\377\377\313\377\377\377\377\377" -  "\377\377\205\377\377\377\13\377\377\377\364\377\377\377\376\377\377\377Q" -  "\377\377\377!\377\377\377\371\377\377\377\352\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377I\377\377\377\372\377\377\377\376\377\377\377v\377" -  "\377\377\33\377\377\377\362\377\377\377\376\377\377\377}\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377\376\377\377" -  "\377v\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\364\377\377\377\372\377" -  "\377\3772\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377" -  "\323\377\377\377\333\377\377\377\333\377\377\377\327\377\377\377\377\377" -  "\377\377\377\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\355\377\377\377" -  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377" -  "\377\313\377\377\377\257\377\377\377\13\0\0\0\0\377\377\377\223\377\377\377" -  "\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\316" -  "\377\377\377\352\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\377\377\377z\377\377\377\325\377\377\377\33\377" -  "\377\377\13\377\377\377\314\377\377\377\267\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\373\377\377\377" -  "\211\377\377\377!\377\377\377\374\377\377\377\200\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\370" -  "\377\377\377\377\377\377\377\377\377\377\377\345\377\377\377\200\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\333\377" -  "\377\377\377\377\377\377\377\377\377\377\321\0\0\0\0\377\377\377r\377\377" -  "\377z\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\25\377\377\377\337\377\377\377\377\377\377\377\375\377\377\3778\0\0" -  "\0\0\377\377\377U\377\377\377\365\377\377\377\256\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\255\377\377\377\275" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\333\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377" -  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\361\377\377\377\227\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\312\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\322\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377" -  "\215\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "\25\377\377\377\361\377\377\377\363\377\377\377E\377\377\377\375\377\377" -  "\377\377\377\377\377V\377\377\377\324\377\377\377\366\377\377\377%\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377j\377\377" -  "\377\375\377\377\377\361\377\377\377%\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\375\377\377" -  "\377Q\377\377\377K\377\377\377\374\377\377\377\332\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\375\377\377\377" -  "\377\377\377\377\374\377\377\377\376\377\377\377\377\377\377\377\375\377" -  "\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312" -  "\377\377\377\377\377\377\377\360\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\376\377\377\377\213\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377" -  "\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\321\377\377\377\377\377\377\377\315\377" -  "\377\377q\377\377\377\221\377\377\377\363\377\377\377\377\377\377\377\364" -  "\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "G\377\377\377\330\377\377\377\343\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377" -  "\377\376\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\374\377\377\377" -  "\377\377\377\377m\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\377\377\377\377\271\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377\377" -  "\375\377\377\377\252\0\0\0\0\377\377\377\233\377\377\377\366\377\377\377" -  "\377\377\377\377\377\377\377\377\376\377\377\377i\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\377\377\377\334\377\377\377\376\377\377\377U\377" -  "\377\377!\377\377\377\371\377\377\377\363\377\377\377%\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\371\377" -  "\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377" -  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "K\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\375\377\377\377)\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\0\0\0\0\377" -  "\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377\377\377\333" -  "\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\327\377\377\377\322\377\377" -  "\377\300\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\312\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\364\377\377\377%\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377" -  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\252\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377" -  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\313\377\377\377\363\377\377\377\301\377\377" -  "\377\373\377\377\377\356\377\377\377\333\377\377\377\352\377\377\377\333" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377w\377\377\377\371\377\377\377\366\377\377\377!\377\377" -  "\377\360\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\312\377\377\377\377\377\377\377\251\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\326\377\377\377" -  "\247\377\377\377\262\377\377\377\351\377\377\377\377\377\377\377\355\377" -  "\377\377\33\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374" -  "\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377\356\377\377\377\340\377\377\377\343\377" -  "\377\377\376\377\377\377\377\377\377\377\304\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\365\377\377\377\377" -  "\377\377\377\377\377\377\377\364\377\377\377\247\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\321\377\377" -  "\377\376\377\377\377i\377\377\377\33\377\377\377\365\377\377\377\355\377" -  "\377\377\13\0\0\0\0\377\377\377\377\377\377\377\377\377\377\3778\377\377" -  "\377\372\377\377\377\327\377\377\377c\377\377\377\377\377\377\377\377\377" -  "\377\377\271\377\377\377\205\377\377\377\376\377\377\377i\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377l\377\377\377\377\377" -  "\377\377\377\377\377\377\226\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\376\377" -  "\377\377\372\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\371\377" -  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377" -  "\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\326\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377" -  "\377\377\364\377\377\377\363\377\377\377%\0\0\0\0\377\377\377\335\377\377" -  "\377\375\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\377\377\377\177\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377" -  "\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377" -  "\377\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377\377\377\377\345\377" -  "\377\377\33\0\0\0\0\0\0\0\0\377\377\377O\377\377\377X\0\0\0\0\377\377\377" -  "\377\377\377\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377" -  "\377\252\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\306\377\377\377" -  "\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377" -  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377%\377\377\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\232\377\377\377" -  "\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377" -  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\325\377\377\377\13\0\0\0\0\377\377\377;\377" -  "\377\377\373\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\354\377\377\377\366" -  "\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\354\377\377\377\366\377\377\377" -  "%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377" -  "\377\377\375\377\377\377\237\377\377\377j\377\377\377\374\377\377\377\376" -  "\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377" -  "\377\377\361\377\377\377\352\0\0\0\0\377\377\377\306\377\377\377\375\377" -  "\377\377=\377\377\377\211\377\377\377\377\377\377\377\252\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\325" -  "\377\377\377\13\0\0\0\0\377\377\377;\377\377\377\373\377\377\377\363\377" -  "\377\377%\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351" -  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377r\377\377\377" -  "\375\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\224\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377" -  "\377;\377\377\377\373\377\377\377\372\377\377\3778\377\377\377\377\377\377" -  "\377\377\377\377\377\13\377\377\377\351\377\377\377\377\377\377\377\252\0" -  "\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\332\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377" -  "\377\377\377\372\377\377\377f\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\333\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377S\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377" -  "\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0" -  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377" -  "\322\0\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\264\0\0" -  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377" -  "\377\377\266\377\377\377;\377\377\377\374\377\377\377\377\377\377\377\226" -  "\377\377\377l\377\377\377\377\377\377\377\300\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\377\377\377u\377\377\377\376\377\377\377\361\377\377" -  "\377\325\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\333\0\0" -  "\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\277\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\314\377\377\377\377\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377E\377\377\377\217\377\377" -  "\377\373\377\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\376\377" -  "\377\377\247\377\377\377I\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\364\377\377\377\245\377\377\377\372\377\377\377\355\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377" -  "\343\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377" -  "\271\377\377\377\376\377\377\377\303\377\377\377\262\377\377\377\377\377" -  "\377\377\315\377\377\377l\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\220\377\377\377\341\377\377\377\377" -  "\377\377\377\377\377\377\377\233\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\257\377\377\377)\377\377\377" -  "\313\377\377\377\377\377\377\377\377\377\377\377\375\377\377\377\\\377\377" -  "\377\377\377\377\377\377\377\377\377\13\377\377\377\342\377\377\377\377\377" -  "\377\377\373\377\377\377\377\377\377\377\265\0\0\0\0\377\377\377\266\377" -  "\377\377\377\377\377\377\215\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377" -  "\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\360\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377" -  "\377\377\377\377\332\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377`\377\377\377\262\377\377\377\251\377\377\377\354" -  "\377\377\377\373\377\377\377\261\377\377\377\262\377\377\377\224\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377v\377\377\377\263\377\377\377\255\377\377\377\255\377" -  "\377\377\255\377\377\377\255\377\377\377\263\377\377\377\224\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "\13\377\377\377\356\377\377\377\363\371\371\377.\377\377\377\362\377\377" -  "\377\375\377\377\377B\377\377\377\335\377\377\377\366\377\377\377%\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377\373" -  "\377\377\377\376\377\377\377s\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205\377\377\377\271\377\377\377" -  "\332\377\377\377\377\377\377\377\373\377\377\377r\0\0\0\0\377\377\377\377" -  "\377\377\377\377\377\377\377\33\377\377\377\362\377\377\377\377\377\377\377" -  "\242\377\377\377E\377\377\377x\377\377\377\374\377\377\377\336\377\377\377" -  "K\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377" -  "\377\216\377\377\377]\0\0\0\0\0\0\0\0\377\377\377\251\377\377\377\377\377" -  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\312\377\377\377\377\377\377\377\356\377\377\377v\0\0\0\0\377\377\377\220" -  "\377\377\377\374\377\377\377\363\377\377\377\33\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377" -  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377j\377\377\377\374\377\377\377\367\377\377\377\260\377\377\377" -  "\342\377\377\377\377\377\377\377\376\377\377\377\224\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\343\377\377\377\374\377\377" -  "\377\360\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\25\377\377\377\337\377\377\377\377\377\377\377\361\377\377\377\200" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377b\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377" -  "\232\377\377\377\232\377\377\377\232\377\377\377}\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377\377\377" -  "\345\377\377\377\377\377\377\377\361\377\377\3778\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377" -  "\377\377\344\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\377\377\377K\377\377\377\374\377\377\377\245\377\377\377l\377\377\377" -  "\377\377\377\377\344\377\377\377v\377\377\377;\377\377\377\375\377\377\377" -  "l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377\373\377" -  "\377\377\376\377\377\377\301\377\377\377\271\377\377\377\374\377\377\377" -  "\376\377\377\377v\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\224\377\377\377\377\377\377\377\304\377\377\377e\377\377\377x\377\377" -  "\377\300\377\377\377\376\377\377\377\367\377\377\377)\377\377\377\377\377" -  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\367\377\377\377)" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377i\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\343\377" -  "\377\377|\377\377\377\202\377\377\377\211\377\377\377\202\377\377\377\13" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\373\377\377\377\300\377\377\377\276\377\377\377\276\377" -  "\377\377\302\377\377\377G\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377U\377\377\377\374\377\377\377\352\377\377\377\13\0\0\0\0\377\377\377" -  "\307\377\377\377\374\377\377\377\377\377\377\377\372\377\377\377)\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377" -  "\377\240\377\377\377\200\377\377\377\210\377\377\377\202\377\377\377\371" -  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377" -  "\377\252\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\377\377\377\377\311\377\377\377\343\377\377" -  "\377\377\377\377\377\225\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\313\377\377\377\366\377\377\377]\377\377\377\375\377\377" -  "\377\377\377\377\377\211\377\377\377\354\377\377\377\333\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377" -  "\377V\377\377\377\252\377\377\377\377\377\377\377\244\377\377\377\354\377" -  "\377\377\334\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377\377" -  "\377\374\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307" -  "\377\377\377\376\377\377\377\177\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\374\377\377\377\324\377\377\377)\0\0\0\0\377\377\377" -  "\377\377\377\377\377\377\377\377U\377\377\377\374\377\377\377\327\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377\377\376\377\377\377l\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377" -  "\377\377\365\377\377\377\357\377\377\377\377\377\377\377\377\377\377\377" -  "\224\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\210\377\377\377\335\377\377\377\377\377\377\377" -  "\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377" -  "\377\377\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\254\377\377" -  "\377c\377\377\377\377\377\377\377\273\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\377\377\377\13\377\377\377\361\377\377\377\340\377\377\377\277" -  "\377\377\377\367\377\377\377\351\377\377\377\352\377\377\377\300\377\377" -  "\377\375\377\377\377I\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\307\377\377\377\377\377\377\377\377\377\377\377\335\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377\377\252\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\325\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\342\377\377\377\375\377\377\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377I\377\377\377\340\377\377\377\240\0\0\0\0\0\0\0\0" -  "\377\377\377}\377\377\377\341\377\377\377Z\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377\306\377\377\377" -  "\366\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\332\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320\377\377\377\376" -  "\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\317\377" -  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377" -  "\372\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377" -  "\333\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\351" -  "\377\377\377\377\377\377\377\361\377\377\377\354\377\377\377\354\377\377" -  "\377\354\377\377\377\376\377\377\377\376\377\377\377l\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377" -  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0" -  "\377\377\377\335\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377_\0\0\0\0" -  "\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377" -  "\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\377" -  "\377\377\374\377\377\377\377\377\377\377\311\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377" -  "\377\377\313\377\377\377\371\377\377\377%\377\377\377\224\377\377\377\377" -  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\377\377" -  "\377\13\377\377\377\356\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377b\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\321\377\377\377\376\377\377\377l\377\377\377\377" -  "\377\377\377\377\377\377\377\13\377\377\377\356\377\377\377\372\377\377\377" -  ")\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377" -  "\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\333\377\377\377\377" -  "\377\377\377\377\377\377\377\354\377\377\377\300\377\377\377\\\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377" -  "\377i\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355" -  "\377\377\377\375\377\377\377M\377\377\377\13\377\377\377\355\377\377\377" -  "\375\377\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377U\377" -  "\377\377\374\377\377\377\333\377\377\377\217\377\377\377\373\377\377\377" -  "\361\377\377\377\312\377\377\377\241\377\377\377\377\377\377\377\215\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377" -  "\377\377\377\377\377\377\377\377\377\377\315\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377" -  "\376\377\377\377i\0\0\0\0\377\377\377\342\377\377\377\375\377\377\377Q\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\315\377\377\377\377\377\377\377\342\377\377\377\13\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377V\377\377\377\375\377" -  "\377\377\377\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377c\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377l\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\360\377\377" -  "\377\33\377\377\377\205\377\377\377\365\377\377\377\377\377\377\377\364\377" -  "\377\377\\\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "|\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307" -  "\377\377\377\377\377\377\377\377\377\377\377\370\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\244\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\205" -  "\377\377\377\376\377\377\377\336\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377\242\377\377" -  "\377\374\377\377\377\264\377\377\377\33\377\377\377\371\377\377\377\316\377" -  "\377\377\377\377\377\377\377\377\377\377b\377\377\377\376\377\377\377\326" -  "\377\377\377\25\377\377\377\362\377\377\377\377\377\377\377\304\377\377\377" -  "\372\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317" -  "\377\377\377\376\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\361\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\374\377\377\377\343\377" -  "\377\377\313\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377" -  "\377\377\371\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377s\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377" -  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362" -  "\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377l\377\377\377\373\377\377\377\376\377\377\377\214\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\333\0\0" -  "\0\0\377\377\377\377\377\377\377\377\377\377\377\224\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377m\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377" -  "\377\377\366\377\377\377\367\377\377\377)\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377e\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\330\377\377\377\371\377\377\377)\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\365\377\377\377" -  "\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\377\377\377\13\377\377\377\351\377\377\377\375\377\377\377=\0\0\0\0\0\0" -  "\0\0\377\377\377}\377\377\377\374\377\377\377\366\377\377\377%\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377p\377" -  "\377\377M\377\377\377!\377\377\377\373\377\377\377\333\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\234\377" -  "\377\377\374\377\377\377\377\377\377\377\320\377\377\377%\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\337\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\271\377\377\377\377\377\377\377\377\377\377" -  "\377\267\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377V\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377" -  "\377\374\377\377\377\245\377\377\377|\377\377\377\377\377\377\377y\0\0\0" -  "\0\377\377\377\247\377\377\377\376\377\377\377l\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\240\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\373\377\377\377\377\377\377\377\304\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377" -  "\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\334" -  "\377\377\377\377\377\377\377\205\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377" -  "\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\25\377\377\377\362\377" -  "\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377" -  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377\331\0\0\0\0\377\377\377j\377\377\377\376" -  "\377\377\377\366\377\377\377)\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\313\377\377\377\371\377\377\377\33\377\377\377\351\377\377\377" -  "\371\377\377\377!\377\377\377\360\377\377\377\333\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\377" -  "\377\377\33\377\377\377\365\377\377\377\365\377\377\377\361\377\377\377\333" -  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377K\377\377\377\374\377" -  "\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\340\377\377" -  "\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377\257\0\0\0\0\377\377\377\13\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377I\377\377\377" -  "\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\345\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\243\0\0\0\0\377\377\377" -  "\330\377\377\377\377\377\377\377\257\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "l\377\377\377\373\377\377\377\375\377\377\377M\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\313\377\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\361\377\377\377\355\377\377\377\33\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377\377\372\377\377\377\337" -  "\377\377\377\257\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\370\377\377\377" -  "\360\377\377\377\323\377\377\377\255\377\377\377\375\377\377\377\333\377" -  "\377\377\371\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\377\377\377l\377\377\377\376\377\377\377\337\377\377\377\326\377\377\377" -  "\377\377\377\377\234\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\372\377\377" -  "\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\377\377\377\232\377\377\377\377\377\377\377\346\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\232\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\215\377\377\377\376\377\377\377\376\377\377\377\313\377" -  "\377\377\224\377\377\377\202\377\377\377\374\377\377\377\332\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377" -  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377" -  "\377i\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\314\377\377\377" -  "\376\377\377\377b\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377" -  "\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0" -  "\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\352\377" -  "\377\377\377\377\377\377\321\377\377\377\321\377\377\377\316\377\377\377" -  "\322\377\377\377\316\377\377\377\315\377\377\377G\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377" -  "\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\13\377\377\377\361\377\377\377\377\377\377\377\362\377\377" -  "\377\366\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377" -  "\377\377\377\377\370\377\377\377\366\377\377\377\376\377\377\377\214\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377" -  "\377\333\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377" -  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377\377\377" -  "\377\377\377\377\377\377\13\377\377\377\355\377\377\377\374\377\377\377)" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377\377\376\377\377\377l\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377" -  "\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\376\377\377" -  "\377i\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377" -  "\377\377\374\377\377\377)\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377" -  "\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377u\377\377\377\302\377\377\377\357\377\377\377\377\377\377\377\377\377" -  "\377\377\276\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\374\377\377" -  "\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377" -  "\377\240\377\377\377\377\377\377\377\266\377\377\377s\377\377\377\377\377" -  "\377\377\315\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "\25\377\377\377\361\377\377\377\361\377\377\377\320\377\377\377\344\377\377" -  "\377\303\377\377\377\356\377\377\377\316\377\377\377\375\377\377\377M\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377" -  "\377\377\377\377\377\377\377\377\377\377\314\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\377" -  "\377\377\377\321\377\377\377M\377\377\377\375\377\377\377\327\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\307\377\377\377\377\377\377\377\346\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377b\377\377\377" -  "\237\377\377\377\374\377\377\377\336\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377\263\377\377\377f\377\377\377\13\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377B\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\25\377\377\377\304\377\377\377\322\377\377\377S\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\214\377\377\377\374\377" -  "\377\377\33\377\377\377\222\377\377\377\374\377\377\377%\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\247\377\377\377\377" -  "\377\377\377\302\377\377\377\\\377\377\3772\377\377\377\264\377\377\377\377" -  "\377\377\377\326\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\315\377\377\377\377\377\377\377\257\377\377\377;\377\377\377\375\377" -  "\377\377b\377\377\377\13\377\377\377\360\377\377\377\337\377\377\377\377" -  "\377\377\377\377\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0" -  "\377\377\377\33\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377" -  "\217\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377\377\377\377\377" -  "\377\377\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377" -  "\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\317\377\377\377\374\377\377\3778\377\377\377\13\377" -  "\377\377\351\377\377\377\366\377\377\377\33\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\324\377\377\377\374" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\347\377\377\377\367\377\377" -  "\377\232\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377_\377" -  "\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\261\377\377\377\377\377\377\377\257\0\0" -  "\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\322\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\213\377\377\377\376\377\377\377U\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\375\377\377" -  "\377\373\377\377\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377}\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377j\377\377\377\376\377\377\377\333\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377~\377\377\377\202\377\377\377\202\377\377" -  "\377\201\377\377\377\231\377\377\377\377\377\377\377\343\377\377\377z\377" -  "\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205\377\377" -  "\377j\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\343" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\255\377\377" -  "\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\356\377" -  "\377\377\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\327\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\356" -  "\377\377\377\375\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\355\377" -  "\377\377\367\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377" -  "\377\377\257\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377_\377\377\377\355\377\377\377\367\377\377\377}\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\3775\377\377\377\347\377\377\377\367\377\377\377\232\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\3772\377\377\377\327\377\377\377\377\377\377\377\375\377\377\377" -  "z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377\377\377\377" -  "\346\377\377\377V\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377S\377\377\377\320\377\377\377" -  "\305\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\377\377\377K\377\377\377\374\377\377\377\252\377\377\377K\377\377\377\374" -  "\377\377\377\376\377\377\377\363\377\377\377\377\377\377\377\377\377\377" -  "\377l\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\335\377\377\377" -  "\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377\377" -  "\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\243\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\343\377\377\377\376\377\377\377l\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\232\377\377\377\377\377\377\377\356\377\377\377)\0\0\0\0\0\0" -  "\0\0\377\377\3775\377\377\377\260\377\377\377\13\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377U\0\0\0\0\0\0" -  "\0\0\377\377\377\276\377\377\377\377\377\377\377\346\377\377\377\13\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377" -  "\326\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\321\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\376\377\377\377i\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377j\377\377\377\330\377\377\377%\0" -  "\0\0\0\0\0\0\0\377\377\377\312\377\377\377\377\377\377\377\206\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377" -  "\377\377\244\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\377\377\377\377" -  "\277\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\371\377\377\377%\377\377\377]\377\377\377f\377\377\377\13\377\377\377\361" -  "\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\313\377\377\377\376\377\377\377i\0\0\0\0\377\377\377\232\377\377\377" -  "\377\377\377\377\377\377\377\377\327\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\334\377\377\377\377\377\377\377\252\0\0\0\0\0\0" -  "\0\0\377\377\377}\377\377\377\376\377\377\377\363\377\377\377%\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377" -  "\252\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\332\377\377\377\377\377\377\377\251\0\0" -  "\0\0\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\355\377\377\377" -  "\13\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377" -  "\377\377\377\252\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\375\377" -  "\377\377Q\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\205" -  "\377\377\377\304\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\362\377\377\377\375\377\377\377Q\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377" -  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\312\377\377\377\377\377\377\377\264\0\0\0\0\0\0\0\0\377\377\377}\377" -  "\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\330\377\377\377\376\377\377\377\372\377" -  "\377\377\360\377\377\377\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\305\377\377\377\377\377\377\377\377\377\377\377\237" -  "\377\377\377l\377\377\377\376\377\377\377\377\377\377\377\336\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351\377\377" -  "\377\376\377\377\377l\377\377\377K\377\377\377\374\377\377\377\372\377\377" -  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377;\377\377\377" -  "\373\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377!\377\377" -  "\377\372\377\377\377\347\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377" -  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377" -  "\377\377\376\377\377\377b\0\0\0\0\0\0\0\0\377\377\377b\377\377\377\375\377" -  "\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\224\377\377\377\377\377\377\377~\0\0\0\0\0\0\0\0\377\377\377U\377\377\377" -  "\374\377\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\266\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377e\0\0\0\0\377\377\377\377\377\377\377\377\377" -  "\377\377\13\377\377\377\355\377\377\377\376\377\377\377v\0\0\0\0\0\0\0\0" -  "\377\377\377s\377\377\377\376\377\377\377\332\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\317\377\377\377\377\377\377\377\251\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377j\377\377\377\375\377\377\377\326\377\377\377\302\377\377\377" -  "\304\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377%\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377\355\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355" -  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\361\377\377\377=\377" -  "\377\377V\377\377\377\374\377\377\377\375\377\377\377M\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361" -  "\377\377\377\355\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\377\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377" -  "\313\377\377\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377" -  "\377\252\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377" -  "\377\377\366\377\377\377%\377\377\377\377\377\377\377\377\377\377\377\13" -  "\377\377\377\355\377\377\377\376\377\377\377\215\0\0\0\0\0\0\0\0\377\377" -  "\377V\377\377\377\374\377\377\377\367\377\377\377)\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377~\0\0\0\0\0\0" -  "\0\0\377\377\377K\377\377\377\374\377\377\377\366\377\377\377)\377\377\377" -  "\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377\377\376\377\377" -  "\377v\0\0\0\0\0\0\0\0\377\377\377s\377\377\377\375\377\377\377\332\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377\377" -  "\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\3772\377\377\377n\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377`\377\377\377\373\377\377\377\366\377\377\377)\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\317\377\377" -  "\377\376\377\377\377v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\314\377\377\377\376\377\377\377b\0\0\0\0" -  "\0\0\0\0\377\377\377\254\377\377\377\377\377\377\377\332\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\366\377" -  "\377\377\361\377\377\377\331\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\320\377\377\377\377" -  "\377\377\377\377\377\377\377\273\377\377\377\205\377\377\377\377\377\377" -  "\377\376\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0" -  "\0\0\0\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\336\377\377\377" -  "\330\377\377\377\377\377\377\377\256\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\342\377\377\377\375\377" -  "\377\377\326\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377" -  "\377\345\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\323\377\377\377" -  "\360\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377\33\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\1\377\377\377\0\377" -  "\377\377\0\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\206\377\377\377\377\377\377" -  "\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377" -  "\377\313\377\377\377\360\377\377\377\13\377\377\377\316\377\377\377\352\377" -  "\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\205\377\377\377\365\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\356\377\377\3778\0\0\0\0\377\377\377\377\377" -  "\377\377\377\377\377\377\224\377\377\377\377\377\377\377\311\0\0\0\0\377" -  "\377\377K\377\377\377\374\377\377\377\316\377\377\377y\377\377\377\374\377" -  "\377\377\273\377\377\377\377\377\377\377\377\377\377\377!\377\377\377\371" -  "\377\377\377\377\377\377\377\315\377\377\377\242\377\377\377\360\377\377" -  "\377\377\377\377\377\377\377\377\377\370\377\377\377\237\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377`\377\377\377\375\377\377\377\327\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\266\377\377\377\377\377\377\377\217\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\371\371\377.\377\377" -  "\377M\0\0\0\0\0\0\0\0\371\371\377.\377\377\377M\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377|\377\377" -  "\377s\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377" -  "\377\377\343\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377!\377\377" -  "\377\371\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\372\377\377" -  "\377\377\377\377\377\275\377\377\377\253\377\377\377\374\377\377\377\376" -  "\377\377\377s\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "r\377\377\377\314\377\377\377\304\377\377\377\332\377\377\377\377\377\377" -  "\377\321\377\377\377\307\377\377\377\271\377\377\377\13\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\263\377\377\377\377\377\377\377\377\377" -  "\377\377\350\377\377\377\307\377\377\377\322\377\377\377\321\377\377\377" -  "\310\377\377\377\33\377\377\377\377\377\377\377\377\377\377\3778\377\377" -  "\377\373\377\377\377\377\377\377\377\325\377\377\377\242\377\377\377\275" -  "\377\377\377\371\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377" -  "\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\377\377\3778\377\377\377\373\377\377\377\377\377\377\377\321\377\377" -  "\377\250\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\234" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377" -  "\362\377\377\377\377\377\377\377\313\377\377\377\214\377\377\377\345\377" -  "\377\377\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\326\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\302\377\377\377\377\377\377\377\346\377\377\377\226\377\377\377\201" -  "\377\377\377\320\377\377\377\377\377\377\377\347\377\377\377\13\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\266\377\377\377\377\377\377\377" -  "\307\377\377\377\250\377\377\377\335\377\377\377\377\377\377\377\356\377" -  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\326\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\343\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\207\377\377\377\374\377\377\377\266" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377V\377\377\377\375\377\377\377\247\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\306\377\377\377\377\377\377\377\376\377" -  "\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377" -  "\377\13\377\377\377\355\377\377\377\352\0\0\0\0\377\377\377s\377\377\377" -  "\314\377\377\377\315\377\377\377v\377\377\377\245\377\377\377%\377\377\377" -  "\377\377\377\377\377\377\377\377K\377\377\377\373\377\377\377\360\377\377" -  "\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\376\377\377\377" -  "~\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377" -  "\377\377\377\335\377\377\377\275\377\377\377\310\377\377\377\366\377\377" -  "\377\377\377\377\377\346\377\377\377\33\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\13\377\377\377\342\377\377\377\377\377\377\377\370\377" -  "\377\377\300\377\377\377\276\377\377\377\371\377\377\377\377\377\377\377" -  "\227\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\312\377\377\377" -  "\377\377\377\377\325\377\377\377\303\377\377\377\361\377\377\377\377\377" -  "\377\377\375\377\377\377f\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377K\377\377\377\374\377\377\377\362\377\377\377\316\377\377\377" -  "\316\377\377\377\316\377\377\377\322\377\377\377\273\377\377\377\13\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377" -  "\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\3778\377\377\377\371\377\377\377\377\377" -  "\377\377\352\377\377\377\271\377\377\377\321\377\377\377\375\377\377\377" -  "\372\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313" -  "\377\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\366\377\377\377)\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377u\377\377\377\325\377\377\377\316\377\377\377\371\377\377\377" -  "\373\377\377\377\320\377\377\377\322\377\377\377\207\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\302\377\377\377\377\377\377\377" -  "\365\377\377\377\266\377\377\377\324\377\377\377\377\377\377\377\375\377" -  "\377\377=\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224" -  "\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\3778\377\377\377" -  "\372\377\377\377\376\377\377\377i\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\13\377\377\377\356\377\377\377\376\377\377\377\320\377\377\377" -  "\316\377\377\377\316\377\377\377\316\377\377\377\322\377\377\377V\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\371\377\377" -  "\377%\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\333\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377" -  "\376\377\377\377l\0\0\0\0\377\377\377\13\377\377\377\352\377\377\377\377" -  "\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377j\377\377\377\375\377\377\377\377\377\377\377\321\377\377\377\302\377" -  "\377\377\375\377\377\377\377\377\377\377\234\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\252\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377j\377\377\377\375\377\377\377\377\377\377\377\320" -  "\377\377\377\307\377\377\377\375\377\377\377\377\377\377\377\216\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377" -  "\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377\266\377\377\377\377\377\377" -  "\377\336\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377" -  "\351\377\377\377\377\377\377\377\370\377\377\377\306\377\377\377\264\377" -  "\377\377\351\377\377\377\377\377\377\377\343\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377" -  "\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377b\377\377\377\375\377\377\377\377\377\377\377\325" -  "\377\377\377\307\377\377\377\374\377\377\377\377\377\377\377\227\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232" -  "\377\377\377\377\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\377" -  "\377\377\377\375\377\377\377_\377\377\377\33\377\377\377\365\377\377\377" -  "\377\377\377\377\322\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\253\377\377\377\377\377\377\377\322\0\0\0\0\0\0\0\0\377\377\377" -  "\275\377\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\356\377\377\377\366" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\334\377\377\377\377\377\377\377\372\377\377\377\310\377" -  "\377\377\316\377\377\377\316\377\377\377\321\377\377\377\310\377\377\377" -  "%\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224" -  "\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\317\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377" -  "\377\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377" -  "\377\377\377\377\377\377\336\377\377\377\233\377\377\377\305\377\377\377" -  "\376\377\377\377\377\377\377\377\332\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\224\377\377\377\377\377\377\377\376\377\377\377" -  "\307\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377\272\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377!\377\377\377\366" -  "\377\377\377\377\377\377\377\346\377\377\377\271\377\377\377\270\377\377" -  "\377\365\377\377\377\375\377\377\377M\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377\257\377" -  "\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377`\377\377\377\374\377\377" -  "\377\377\377\377\377\332\377\377\377\233\377\377\377\260\377\377\377\367" -  "\377\377\377\316\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377U\377\377\377\374\377\377\377\333\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\215\377" -  "\377\377\377\377\377\377\342\377\377\377\242\377\377\377\237\377\377\377" -  "\246\377\377\377\247\377\377\377X\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\356\377\377\377\366\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377" -  "\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377K\377\377\377\375\377\377\377\245\0\0\0\0\0\0\0\0\377" -  "\377\377\233\377\377\377\377\377\377\377\356\377\377\377%\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\355\377" -  "\377\377\376\377\377\377\302\377\377\377\262\377\377\377\322\377\377\377" -  "\33\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377" -  "\377\333\0\0\0\0\377\377\377\320\377\377\377\371\377\377\377%\377\377\377" -  "\223\377\377\377\377\377\377\377\252\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\356\377\377\377\366\377\377\377)\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377\214\377\377\377\377\377\377\377\376\377" -  "\377\377\274\377\377\377\255\377\377\377\370\377\377\377\377\377\377\377" -  "\265\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\376\377\377\377\307\377\377\377\255\377\377\377" -  "\370\377\377\377\377\377\377\377\272\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\255\377\377\377\377\377\377\377\373\377\377\377" -  "\257\377\377\377\302\377\377\377\376\377\377\377\377\377\377\377\332\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\313\377" -  "\377\377\376\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\341\377\377\377\377\377\377" -  "\377\335\377\377\377\233\377\377\377\213\377\377\377\306\377\377\377\377" -  "\377\377\377\352\377\377\377\13\377\377\377\377\377\377\377\377\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\241\377\377\377\377\377\377\377\365\377\377\377" -  "\245\377\377\377\255\377\377\377\325\377\377\3772\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377\361\377\377" -  "\377\252\377\377\377\331\377\377\377\377\377\377\377\377\377\377\377\332" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\266\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\240\377\377" -  "\377\377\377\377\377\377\377\377\377\207\377\377\377K\377\377\377\374\377" -  "\377\377\377\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377U\377\377\377\374\377\377\377\372\377\377\3778\377\377\377" -  "!\377\377\377\366\377\377\377\376\377\377\377\177\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\377\377" -  "\377\377\377\377\377\377\352\377\377\377\13\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\267\377\377\377\377\377\377\377\377" -  "\377\377\377\311\377\377\377\302\377\377\377\304\377\377\377\304\377\377" -  "\377\271\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\13\377\377\377\361\377\377\377\327\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377b\377\377\377\374\377\377\377\377\377\377\377\225\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\316\377\377\377\333\0\0\0\0" -  "\377\377\377\316\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377w\377\377\377\343\377" -  "\377\377\375\377\377\377\201\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\377\377\377\13\377\377\377\244\377\377\377\13\0\0\0\0\0\0\0" -  "\0\377\377\377\302\377\377\377\377\377\377\377\377\377\377\377\364\377\377" -  "\377Z\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377~\377\377\377\370" -  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377\275\377\377" -  "\377\266\377\377\377\376\377\377\377\323\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\335\377\377\377\376\377\377\377~\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377" -  "\377\373\377\377\377\363\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377" -  "\377\357\377\377\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377\377\377\377\377\377" -  "\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\251\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\377\377\377l\377\377\377\367\377\377\377\377\377\377\377\377\377\377\377" -  "\376\377\377\377\223\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\232\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377" -  ")\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\355\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\360\377\377\377\33\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377j\377\377\377\350\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\376\377\377\377\302\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377;\377\377\377\372\377\377\377\316\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377u\377\377\377\351\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\373\377\377\377\254\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377S\377\377\377" -  "\354\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\325\377" -  "\377\377\33\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\214\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377" -  "\377\315\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\342\377\377\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\177\377\377\377\365\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\342\377\377\3772\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377\377\377\376\377" -  "\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\357\377\377" -  "\377\377\377\377\377\364\377\377\377)\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377M\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377\377\375" -  "\377\377\377\\\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0" -  "\0\0\0\377\377\377\255\377\377\377\377\377\377\377\234\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "\224\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\240\377\377\377\377\377\377\377\266\377\377\377\377\377\377\377" -  "\377\0\0\0\0\377\377\377\215\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\370\377\377\377\312\377\377\377%\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\316\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377" -  "\377\377\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\305\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377" -  "\377\377\330\377\377\377V\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377" -  ")\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\351" -  "\377\377\377\366\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\370\377\377" -  "\377\241\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\313" -  "\377\377\377\375\377\377\377\\\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377" -  "\355\377\377\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0" -  "\0\377\377\377\224\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\336\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\13\377\377\377\316\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\213\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377" -  "\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\247\377" -  "\377\377\377\377\377\377\326\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377_\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\313\377\377\377\366\377\377\377" -  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\344\377\377\377\333\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\307\377\377\377\375\377\377" -  "\377Q\0\0\0\0\0\0\0\0\377\377\377\204\377\377\377\377\377\377\377\327\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\206\377" -  "\377\377\371\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377" -  "\240\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "\215\377\377\377\377\377\377\377\244\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\206\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377\376\377" -  "\377\377\241\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\214\377\377\377\377\377\377\377\252\0\0\0\0\0\0\0\0\377\377\377" -  "\33\377\377\377\356\377\377\377\376\377\377\377v\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377\25\377\377\377\316\377\377\377\376\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\335\377\377\377)\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377" -  "\377\377\351\377\377\377\364\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\233\377\377\377\375" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\276\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377;\377\377\377\372\377\377\377\376\377\377\377|\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377u\377\377\377\375\377" -  "\377\377\355\377\377\377\33\0\0\0\0\377\377\377\320\377\377\377\377\377\377" -  "\377\244\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\33\377\377\377" -  "\366\377\377\377\372\377\377\377=\0\0\0\0\0\0\0\0\377\377\377\33\377\377" -  "\377\362\377\377\377\376\377\377\377_\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\364\377\377" -  "\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  "\13\377\377\377\356\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\376\377\377\377l\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\224\377" -  "\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377}\377" -  "\377\377\377\377\377\377\277\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\364\377\377" -  "\377\254\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\3775\377\377\377" -  "\347\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\303\377" -  "\377\377\362\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\377\377\377\224\377\377\377\377\377\377\377\345\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377I\377\377\377\345\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\373\377\377\377\260" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\326\377\377" -  "\377\367\377\377\377\315\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377l\377\377\377\356\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\370\377\377\377\231\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\373\377\377" -  "\377\322\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377I\377\377\377\373\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\216\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377" -  "\376\377\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377" -  "\377\355\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355\377\377\377" -  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\13\377\377\377\355\377\377\377\366\377\377\377)\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377K\377\377" -  "\377\374\377\377\377\252\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\307\377\377" -  "\377\377\377\377\377\304\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\223\377\377\377\375\377\377\377\377\377\377" -  "\377\377\377\377\377\372\377\377\377M\377\377\377\377\377\377\377\377\377" -  "\377\377\13\377\377\377\361\377\377\377\333\0\0\0\0\377\377\377\275\377\377" -  "\377\371\377\377\377%\377\377\377\223\377\377\377\377\377\377\377\252\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377\224\377\377\377\376\377" -  "\377\377i\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\351\377\377\377\355" -  "\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\240\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\376\377" -  "\377\377\275\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\224\377\377\377\377\377\377\377\352\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\307\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\377\377\377\310\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\337\377\377\377\377\377\377\377\332\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377\307\377" -  "\377\377\375\377\377\377_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377c\377\377\377\330\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\354\377" -  "\377\377Z\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\13\377\377\377\333\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\375\377\377\377_\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\33\377\377\377\350\377\377\377\377\377\377\377\377\377\377\377" -  "\376\377\377\377\255\377\377\377\362\377\377\377\323\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377;\377\377\377\372" -  "\377\377\377\376\377\377\377\206\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377b\377\377\377\374\377\377\377\372\377" -  "\377\377I\377\377\377\13\377\377\377\355\377\377\377\377\377\377\377\243" -  "\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377" -  "\377\377\376\377\377\377\214\0\0\0\0\0\0\0\0\377\377\377j\377\377\377\374" -  "\377\377\377\363\377\377\377%\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\335\377\377\377\377\377\377\377\236\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377\13\377\377" -  "\377\355\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\372\377\377\377)\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\360" -  "\377\377\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371" -  "\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377" -  "%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\0\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377S\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377n\377\377\377\13\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377" -  "\377e\377\377\377\33\0\0\0\0\0\0\0\0\371\371\377.\377\377\3775\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\374\377\377\377\364\377\377" -  "\3772\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\343\377\377\377\377\377\377\377\215\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371\377\377\377\334\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377X\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0" -  "\0\0\0\377\377\377\341\377\377\377\375\377\377\377=\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377e\377\377\377l\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377E\377\377\377X\377\377\377S\377\377\377\13\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377e\377\377\377c\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377S\377\377\377K\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377\377\377e\377\377\377n\377\377\377" -  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377_\377\377\377p\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377E\377\377\377X\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377\371" -  "\377\377\377\334\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377`\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377\33\377\377\377\362\377\377\377" -  "\376\377\377\377\255\377\377\3775\377\377\377V\377\377\377\322\377\377\377" -  "\255\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377)\377\377\377X\377\377\377V\377\377\377\13\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377" -  "m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\371\371\377.\377\377\377m\377\377\377c\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377c\377\377\377\13" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\320" -  "\377\377\377\377\377\377\377\333\377\377\377\33\377\377\377E\377\377\377" -  "\13\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377e\377\377\377e\377\377" -  "\3778\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "e\377\377\377n\377\377\3775\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\224\377\377\377\376\377\377\377U\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\361\377\377\377\366\377\377" -  "\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\13\377\377\377\364\377\377\377\254\0\0\0\0\0\0\0\0\0\0\0" -  "\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\377\377\377\216\377\377\377\233\377\377\377\232\377\377\377\232" -  "\377\377\377\232\377\377\377\232\377\377\377\232\377\377\377\237\377\377" -  "\377=\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377U\377\377\377n\377\377\3775\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377E\377\377\377n\377\377\3778\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377@\377\377\377m\377\377\377c\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377@\377\377\377p\377" -  "\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377Q\377\377\377p\377\377\377X\0" -  "\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\377\377\377\324\377\377\377\376\377\377\377" -  "|\377\377\377S\377\377\377V\377\377\377K\377\377\377\263\377\377\377\377" -  "\377\377\377\252\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\25\377\377\377\362\377\377\377\360\377\377\377" -  "\33\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377)\377" -  "\377\377p\377\377\377c\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377b\377\377\377f\377\377\377" -  "\13\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\224\377\377\377\376\377\377\377U\377\377\377@\377\377\377e\377\377\377" -  "8\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377@\377\377\377p\377\377\377I\377\377\377;\377\377\377" -  "\374\377\377\377\333\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377" -  "\377e\377\377\377e\377\377\377I\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377O\377\377" -  "\377X\377\377\377U\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377j\377\377\377n\377\377\377\33\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\33\377\377\377" -  "\362\377\377\377\367\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\13\377\377\377\361\377\377\377\356\377\377\377%\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377\377\377%\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\335\377\377\377\372\377\377\377)\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\267\377\377\377" -  "\345\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\361\377\377" -  "\3772\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377\377" -  "\331\377\377\377\377\377\377\377\304\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377b\377" -  "\377\377\376\377\377\377\330\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\3772\377\377\377\337\377\377\377\377\377\377\377\236\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\377\377\3775\377\377\377\344\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\270\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\3775\377\377\377\362\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\210\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\232\377\377\377\377\377\377" -  "\377\370\377\377\377\364\377\377\377\372\377\377\377\243\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\266\377\377\377\377\377\377\377\225\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\205\377\377\377\371\377\377\377\364" -  "\377\377\377\364\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\377\377\377\13\377\377\377\370\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\377m\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\377\377\377\13\377\377\377\345\377\377\377" -  "\375\377\377\377f\0\0\0\0\0\0\0\0\377\377\3772\377\377\377\326\377\377\377" -  "\377\377\377\377\245\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\234\377\377\377\205\377\377\377I\377\377\377\272\377\377\377\377" -  "\377\377\377\326\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377\224\377\377\377\376\377\377\377i\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377K\377\377\377\374\377\377\377\333\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\203\377\377\377" -  "\337\377\377\377\377\377\377\377\260\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\275\377\377\377\377\377\377\377" -  "\377\377\377\377\373\377\377\377\243\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\371\377" -  "\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377\177\377\377\377\372\377\377\377\376\377\377\377\377\377\377" -  "\377\333\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\253\377\377" -  "\377\340\377\377\377%\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\377\377\377\310\377\377\377\307\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377" -  "\377\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377" -  "\377u\377\377\377\325\377\377\377w\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\377\377" -  "\377\13\377\377\377\351\377\377\377\377\377\377\377\276\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377`\377\377\377\213\377\377\377\203\377\377" -  "\3778\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\13\377\377\377\251\377\377\377\322\377\377\377\316" -  "\377\377\377m\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377`\377\377\377\263\377\377\377\263\377\377\377\263\377\377\377\266" -  "\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377G\377\377\377\317\377\377\377w\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377i\377\377\377\266" -  "\377\377\377\263\377\377\377\263\377\377\377\262\377\377\377_\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\377\377\377`\377\377\377y\377\377\377y\377\377\377y" -  "\377\377\377y\377\377\377y\377\377\377y\377\377\377x\377\377\377\33\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\377\377\377\237\377\377\377\377\377\377\377\377" -  "\377\377\377\370\377\377\377\370\377\377\377\377\377\377\377\377\377\377" -  "\377\325\377\377\377\33\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\377\377\377" -  ";\377\377\377\374\377\377\377\377\377\377\377\377\377\377\377\377\377\377" -  "\377\376\377\377\377z\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377" -  "\377\377\233\377\377\377\377\377\377\377l\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377V\377\377\377\376\377\377\377\327\0\0" -  "\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\377\377\377\13\377\377\377\361\377\377\377\377" -  "\377\377\377\377\377\377\377\325\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377v\377\377\377\246\377" -  "\377\377\266\377\377\377u\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377\377\377\372\377\377\377)\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\377\377\377" -  "i\377\377\377\266\377\377\377\255\377\377\377\214\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377s\377\377\377|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377s\377\377\377" -  "|\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\0\0\0\0\377\377\377_\377\377\377\266\377\377\377\321\377\377\377\316\377" -  "\377\377\271\377\377\377q\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\377\377\377`\377\377\377\245\377\377\377\267\377\377\377" -  "\247\377\377\377=\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377" -  "\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0" -  "\377\377\377E\377\377\377\212\377\377\377%\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\13\377\377\377\211\377\377\377=\0" -  "\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377" -  "\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377" -  "\377\377\377\377\377\377\377\0\0\0\0\377\377\377v\377\377\377\232\377\377" -  "\377q\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377" -  "\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377" -  "\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\313\377" -  "\377\377\363\377\377\377\33\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\377\377" -  "\377\377\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\377\377\377\377\377\377\377\377\0\0\0\0\0\0\0\0\0\0\0\0" -  "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377" -  "\377\377\377\377", -}; - diff --git a/minilibx_opengl_20191021/font.xcf b/minilibx_opengl_20191021/font.xcfBinary files differ deleted file mode 100644 index b9c8c82..0000000 --- a/minilibx_opengl_20191021/font.xcf +++ /dev/null diff --git a/minilibx_opengl_20191021/mlx.h b/minilibx_opengl_20191021/mlx.h deleted file mode 100644 index e75b4af..0000000 --- a/minilibx_opengl_20191021/mlx.h +++ /dev/null @@ -1,149 +0,0 @@ -/* -** mlx.h for MinilibX in  -**  -** Made by Charlie Root -** Login   <ol@staff.42.fr> -**  -** Started on  Mon Jul 31 16:37:50 2000 Charlie Root -** Last update Tue Oct 01 16:23:28 2014 Olivier Crouzet -*/ - -/* -**   MinilibX -  Please report bugs -*/ - - -/* -** FR msg - FR msg - FR msg -** -** MacOSX -** La MinilibX utilise 2 frameworks Mac : OpenGL et AppKit -**    qu'il faut ajouter a la compilation : -**   -framework OpenGL -framework AppKit -** -** UNIX / Linux -** La MinilibX utilise 2 librairies supplementaires qu'il -**      est necessaire de rajouter a la compilation : -**   -lmlx -lXext -lX11 -** -** La MinilibX permet le chargement des images de type Xpm. -** Notez que cette implementation est incomplete. -** -** Il y a des differences entre X11 et MacOS. -** les numeros des touches ne sont pas les memes, -** les numeros des boutons souris ne sont pas les memes. -** Egalement l'expose est gere differemment, et sous MacOS -** il est preferable d'entrer le plus tot possible dans mlx_loop, -** il est normal que les fenetres n'apparaissent pas avant mlx_loop -** (ou bien forcez avec mlx_do_sync mais c'est pas genial). -** Sous MacOS, l'octet Alpha est pris en compte dans toutes les -** images, et represente la transparence et non l'opacite comme -** c'est normalement le cas. -*/ - - -#ifndef MLX_H - -#define	MLX_H - - -void	*mlx_init(); -/* -**  needed before everything else. -**  return (void *)0 if failed -*/ - - -/* -** Basic actions -*/ - -void	*mlx_new_window(void *mlx_ptr, int size_x, int size_y, char *title); -/* -**  return void *0 if failed -*/ -int	mlx_clear_window(void *mlx_ptr, void *win_ptr); -int	mlx_pixel_put(void *mlx_ptr, void *win_ptr, int x, int y, int color); -/* -**  origin for x & y is top left corner of the window -**  y down is positive -**  color is 0x00RRGGBB -*/ - - -/* -** Image stuff -*/ - -void	*mlx_new_image(void *mlx_ptr,int width,int height); -/* -**  return void *0 if failed -*/ -char	*mlx_get_data_addr(void *img_ptr, int *bits_per_pixel, -			   int *size_line, int *endian); -/* -**  endian : 0 = sever X is little endian, 1 = big endian -**  endian : useless on macos, client and graphical framework have the same endian -*/ -int	mlx_put_image_to_window(void *mlx_ptr, void *win_ptr, void *img_ptr, -				int x, int y); -unsigned int	mlx_get_color_value(void *mlx_ptr, int color); - - -/* -** dealing with Events -*/ - -int	mlx_mouse_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int	mlx_key_hook (void *win_ptr, int (*funct_ptr)(), void *param); -int	mlx_expose_hook (void *win_ptr, int (*funct_ptr)(), void *param); - -int	mlx_loop_hook (void *mlx_ptr, int (*funct_ptr)(), void *param); -int	mlx_loop (void *mlx_ptr); - - -/* -**  hook funct are called as follow : -** -**   expose_hook(void *param); -**   key_hook(int keycode, void *param); -**   mouse_hook(int button, int x,int y, void *param); -**   loop_hook(void *param); -** -*/ - - -/* -**  Usually asked... -*/ - -int	mlx_string_put(void *mlx_ptr, void *win_ptr, int x, int y, int color, -		       char *string); -void	*mlx_xpm_to_image(void *mlx_ptr, char **xpm_data, -			  int *width, int *height); -void	*mlx_xpm_file_to_image(void *mlx_ptr, char *filename, -			       int *width, int *height); -void    *mlx_png_file_to_image(void *mlx_ptr, char *file, int *width, int *height); - -int	mlx_destroy_window(void *mlx_ptr, void *win_ptr); - -int	mlx_destroy_image(void *mlx_ptr, void *img_ptr); - -/* -**  generic hook system for all events, and minilibX functions that -**    can be hooked. Some macro and defines from X11/X.h are needed here. -*/ - -int	mlx_hook(void *win_ptr, int x_event, int x_mask, -                 int (*funct)(), void *param); - -int     mlx_mouse_hide(); -int     mlx_mouse_show(); -int     mlx_mouse_move(void *win_ptr, int x, int y); -int     mlx_mouse_get_pos(void *win_ptr, int *x, int *y); - -int	mlx_do_key_autorepeatoff(void *mlx_ptr); -int	mlx_do_key_autorepeaton(void *mlx_ptr); -int	mlx_do_sync(void *mlx_ptr); - -#endif /* MLX_H */ diff --git a/minilibx_opengl_20191021/mlx_init_loop.m b/minilibx_opengl_20191021/mlx_init_loop.m deleted file mode 100644 index 0377771..0000000 --- a/minilibx_opengl_20191021/mlx_init_loop.m +++ /dev/null @@ -1,192 +0,0 @@ -//  mlx_init_loop.m -// By Ol - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> -#import <AppKit/NSOpenGLView.h> - -#include "mlx_int.h" -#include "mlx_new_window.h" - -#include "font.c" - - -void	do_loop_hook2(CFRunLoopTimerRef observer, void * info) -{ -  ((mlx_ptr_t *)info)->loop_hook(((mlx_ptr_t *)info)->loop_hook_data); -} - - -void do_loop_flush(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void * info) -{ -  mlx_ptr_t	*mlx_ptr; -  mlx_win_list_t *win; - -  mlx_ptr = (mlx_ptr_t *)info; -  win = mlx_ptr->win_list; -  while (win) -    { -      if (win->nb_flush > 0 && win->pixmgt) -	{ -	  [(id)win->winid selectGLContext]; -	  [(id)win->winid mlx_gl_draw]; -	  glFlush(); -	  win->nb_flush = 0; -	} -      win = win->next; -    } -} - - - - -void *mlx_init() -{ -  mlx_ptr_t	*new_mlx; -  int		bidon; -  int		i; - -  if ((new_mlx = malloc(sizeof(*new_mlx))) == NULL) -    return ((void *)0); -  new_mlx->win_list = NULL; -  new_mlx->img_list = NULL; -  new_mlx->loop_hook = NULL; -  new_mlx->loop_hook_data = NULL; -  new_mlx->main_loop_active = 0; - -  new_mlx->appid = [NSApplication sharedApplication]; - -  // super magic trick to detach app from terminal, get menubar & key input events -  for (NSRunningApplication * app in [NSRunningApplication runningApplicationsWithBundleIdentifier:@"com.apple.finder"]) -    { -      [app activateWithOptions:NSApplicationActivateIgnoringOtherApps]; -      break; -    } -  usleep(100000); -  ProcessSerialNumber psn = { 0, kCurrentProcess }; -  (void) TransformProcessType(&psn, kProcessTransformToForegroundApplication); -  usleep(100000); -  [[NSRunningApplication currentApplication] activateWithOptions:NSApplicationActivateIgnoringOtherApps]; - -  // load font -  new_mlx->font = mlx_new_image(new_mlx, (FONT_WIDTH+2)*95, FONT_HEIGHT); -  i = 0; -  while (i < 4*(FONT_WIDTH+2)*95*FONT_HEIGHT) -    { -      new_mlx->font->buffer[i+0] = font_atlas.pixel_data[i+2]; -      new_mlx->font->buffer[i+1] = font_atlas.pixel_data[i+1]; -      new_mlx->font->buffer[i+2] = font_atlas.pixel_data[i+0]; -      ((unsigned char *)new_mlx->font->buffer)[i+3] = 0xFF-font_atlas.pixel_data[i+3]; -      i += 4; -    } - - -#ifdef	STRINGPUTX11 -  new_mlx->font->vertexes[2] = FONT_WIDTH/1.4; -  new_mlx->font->vertexes[4] = FONT_WIDTH/1.4; -  new_mlx->font->vertexes[5] = (-FONT_HEIGHT-1)/1.4; -  new_mlx->font->vertexes[7] = (-FONT_HEIGHT-1)/1.4; -#else -  new_mlx->font->vertexes[2] = FONT_WIDTH; -  new_mlx->font->vertexes[4] = FONT_WIDTH; -  new_mlx->font->vertexes[5] = -FONT_HEIGHT-1; -  new_mlx->font->vertexes[7] = -FONT_HEIGHT-1; -#endif - -  return ((void *)new_mlx); -} - - -void mlx_loop(mlx_ptr_t *mlx_ptr) -{ -  CFRunLoopObserverRef observer; -  CFRunLoopObserverContext ocontext = {.version = 0, .info = mlx_ptr, .retain = NULL, .release = NULL, .copyDescription = NULL}; - -  mlx_ptr->main_loop_active = 1; - -  observer = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeTimers, true, 0, do_loop_flush, &ocontext); -  CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes); - -  //  [[[MlxLoopHookObj alloc] initWithPtr:mlx_ptr] performSelector:@selector(do_loop_hook) withObject:nil afterDelay:0.0]; - -  [NSApp run]; -} - - -void mlx_pixel_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color) -{ -  if (!win_ptr->pixmgt) -    return ; -  [(id)(win_ptr->winid) selectGLContext]; -  [(id)(win_ptr->winid) pixelPutColor:color X:x Y:y]; -  win_ptr->nb_flush ++; -} - - -void	mlx_int_loop_once() -{ -  NSEvent *event; -  NSDate  *thedate; - -  thedate = [NSDate dateWithTimeIntervalSinceNow:0.1]; -  while (42) -    { -      event = [NSApp nextEventMatchingMask:NSEventMaskAny -		     untilDate:thedate -		     inMode:NSDefaultRunLoopMode -		     dequeue:YES]; -      if (event == nil) -	{ -	  [thedate release]; -	  return ; -	} -      [NSApp sendEvent:event]; -      [NSApp updateWindows]; -    } -} - - -int     mlx_do_sync(mlx_ptr_t *mlx_ptr) -{ -  mlx_win_list_t *win; - -  win = mlx_ptr->win_list; -  while (win) -    { -      if (win->pixmgt) -	{ -	  [(id)(win->winid) selectGLContext]; -	  [(id)(win->winid) mlx_gl_draw]; -	  glFlush(); -	  if (!mlx_ptr->main_loop_active) -	    mlx_int_loop_once(); -	} -      win = win->next; -    } -  return (0); -} - - -int mlx_loop_hook(mlx_ptr_t *mlx_ptr, void (*fct)(void *), void *param) -{ -  CFRunLoopTimerContext	tcontext = {0, mlx_ptr, NULL, NULL, NULL}; -  CFRunLoopTimerRef	timer; - -  if (mlx_ptr->loop_hook != NULL) -    { -      CFRunLoopTimerInvalidate(mlx_ptr->loop_timer); -      [(id)(mlx_ptr->loop_timer) release]; -    } - -  mlx_ptr->loop_hook = fct; -  mlx_ptr->loop_hook_data = param; - -  if (fct) -    { -      timer = CFRunLoopTimerCreate(kCFAllocatorDefault, 0.0, 0.0001, 0, 0, &do_loop_hook2, &tcontext); -      mlx_ptr->loop_timer = timer; -      CFRunLoopAddTimer(CFRunLoopGetMain(), timer, kCFRunLoopCommonModes); -    } - -  return (0); -} diff --git a/minilibx_opengl_20191021/mlx_int.h b/minilibx_opengl_20191021/mlx_int.h deleted file mode 100644 index a93c1c9..0000000 --- a/minilibx_opengl_20191021/mlx_int.h +++ /dev/null @@ -1,102 +0,0 @@ -// -// mlx_int.h for minilibx -// -// ol@staff.42.fr -// -// include opengl needed before mlx_int.h -// - - -#define	MAX_EVENT	32 -#define MAX_PIXEL_NB	200000 -#define UNIQ_BPP	4 - -#define FONT_WIDTH	10 -#define	FONT_HEIGHT	20 - - -typedef int (*func_t)(); - -/* structs */ - -typedef struct	glsl_info_s -{ -  GLuint	pixel_vshader; -  GLuint	pixel_fshader; -  GLuint	pixel_program; -  GLint		loc_pixel_position; -  GLint		loc_pixel_texture; -  GLint		loc_pixel_winhalfsize; - -  GLuint	image_vshader; -  GLuint	image_fshader; -  GLuint	image_program; -  GLint		loc_image_position; -  GLint		loc_image_winhalfsize; -  GLint		loc_image_texture; -  GLint		loc_image_pos; -  GLint		loc_image_size; - -  GLuint	font_vshader; -  GLuint	font_fshader; -  GLuint	font_program; -  GLint		loc_font_position; -  GLint		loc_font_winhalfsize; -  GLint		loc_font_texture; -  GLint		loc_font_color; -  GLint		loc_font_posinwin; -  GLint		loc_font_posinatlas; -  GLint		loc_font_atlassize; -} glsl_info_t; - - -typedef struct	mlx_img_list_s -{ -  int			width; -  int			height; -  char			*buffer; -  GLfloat		vertexes[8]; -  struct mlx_img_list_s	*next; -} mlx_img_list_t; - - -typedef struct	mlx_img_ctx_s -{ -  GLuint		texture; -  GLuint		vbuffer; -  mlx_img_list_t	*img; -  struct mlx_img_ctx_s	*next; -} mlx_img_ctx_t; - -typedef struct	mlx_win_list_s -{ -  void			*winid; -  mlx_img_ctx_t		*img_list; -  int			nb_flush; -  int			pixmgt; -  struct mlx_win_list_s	*next; -} mlx_win_list_t; - - -typedef struct		mlx_ptr_s -{ -  void			*appid; -  mlx_win_list_t	*win_list; -  mlx_img_list_t	*img_list; -  void			(*loop_hook)(void *); -  void			*loop_hook_data; -  void			*loop_timer; -  mlx_img_list_t	*font; -  int			main_loop_active; -} mlx_ptr_t; - -// proto - -int	mlx_shaders(glsl_info_t *glsl); -char    **mlx_int_str_to_wordtab(char *str); -int     mlx_int_str_str(char *str,char *find,int len); -int     mlx_int_str_str_cote(char *str,char *find,int len); -int	mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_ptr); -void	*mlx_new_image(); -void    *mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height); -int	mlx_do_sync(mlx_ptr_t *mlx_ptr); diff --git a/minilibx_opengl_20191021/mlx_int_str_to_wordtab.c b/minilibx_opengl_20191021/mlx_int_str_to_wordtab.c deleted file mode 100644 index 3b2ef2e..0000000 --- a/minilibx_opengl_20191021/mlx_int_str_to_wordtab.c +++ /dev/null @@ -1,107 +0,0 @@ -// -// str 2 wordtab & co -// by ol - - -#include <stdlib.h> -#include <string.h> - -int	mlx_int_str_str(char *str,char *find,int len) -{ -  int	len_f; -  int	pos; -  char	*s; -  char	*f; - -  len_f = strlen(find); -  if (len_f>len) -    return (-1); -  pos = 0; -  while (*(str+len_f-1)) -    { -      s = str; -      f = find; -      while (*(f++) == *(s++)) -        if (!*f) -          return (pos); -      str ++; -      pos ++; -    } -  return (-1); -} - - - -int	mlx_int_str_str_cote(char *str,char *find,int len) -{ -  int	len_f; -  int	pos; -  char	*s; -  char	*f; -  int	cote; - -  len_f = strlen(find); -  if (len_f>len) -    return (-1); -  cote = 0; -  pos = 0; -  while (*(str+len_f-1)) -    { -      if (*str=='"') -	cote = 1-cote; -      if (!cote) -	{ -	  s = str; -	  f = find; -	  while (*(f++) == *(s++)) -	    if (!*f) -	      return (pos); -	} -      str ++; -      pos ++; -    } -  return (-1); -} - - -char	**mlx_int_str_to_wordtab(char *str) -{ -  char	**tab; -  int	pos; -  int	nb_word; -  int	len; - -  len = strlen(str); -  nb_word = 0; -  pos = 0; -  while (pos<len) -  { -    while (*(str+pos)==' ' || *(str+pos)=='\t') -      pos ++; -    if (*(str+pos)) -      nb_word ++; -    while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t') -      pos ++; -  } -  if (!(tab = malloc((1+nb_word)*sizeof(*tab)))) -    return ((char **)0); -  nb_word = 0; -  pos = 0; -  while (pos<len) -    { -      while (*(str+pos)==' ' || *(str+pos)=='\t') -	{ -	  *(str+pos) = 0; -	  pos ++; -	} -      if (*(str+pos)) -	{ -	  tab[nb_word] = str+pos; -	  nb_word ++; -	} -      while (*(str+pos) && *(str+pos)!=' ' && *(str+pos)!='\t') -	pos ++; -    } -  tab[nb_word] = 0; -  return (tab); -} diff --git a/minilibx_opengl_20191021/mlx_mouse.m b/minilibx_opengl_20191021/mlx_mouse.m deleted file mode 100644 index 94ce0a9..0000000 --- a/minilibx_opengl_20191021/mlx_mouse.m +++ /dev/null @@ -1,52 +0,0 @@ -#include	<stdio.h> - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> - -#include	"mlx_int.h" -#include	"mlx_new_window.h" - -int	mlx_mouse_hide() -{ -  //  CGDisplayHideCursor(kCGDirectMainDisplay); -  [NSCursor hide]; -  return (0); -} - -int	mlx_mouse_show() -{ -  //  CGDisplayShowCursor(kCGDirectMainDisplay); -  [NSCursor unhide]; -  return (0); -} - -int	mlx_mouse_move(mlx_win_list_t *win, int x, int y) -{ -  CGPoint	point; -  NSRect	pos; -  id	thewin; - -  thewin = [(id)(win->winid) win]; -  pos = [thewin frame]; -  //  printf("got win pos %f %f\n", pos.origin.x, pos.origin.y); -  point.x = pos.origin.x + x; -  point.y = NSHeight([[thewin screen] frame]) - NSHeight([(id)(win->winid) frame]) - pos.origin.y + 1 + y; -  CGWarpMouseCursorPosition(point); -  CGAssociateMouseAndMouseCursorPosition(true); -  return (0); -} - - -int	mlx_mouse_get_pos(mlx_win_list_t *win, int *x, int *y) -{ -  CGPoint	point; -  id		thewin; -  NSRect	pos; - -  thewin = [(id)(win->winid) win]; -  pos = [(id)(win->winid) frame]; -  point = [thewin mouseLocationOutsideOfEventStream]; -  *x = point.x; -  *y = NSHeight(pos) - 1 - point.y; -  return (0); -} diff --git a/minilibx_opengl_20191021/mlx_new_image.m b/minilibx_opengl_20191021/mlx_new_image.m deleted file mode 100644 index 46e1df1..0000000 --- a/minilibx_opengl_20191021/mlx_new_image.m +++ /dev/null @@ -1,198 +0,0 @@ -// mlx_new_image -// -// by Ol -// - - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> - -#include "mlx_int.h" -#include "mlx_new_window.h" - - - -void    *mlx_new_image(mlx_ptr_t *mlx_ptr, int width, int height) -{ -  mlx_img_list_t        *newimg; - -  //  if (mlx_ptr->win_list == NULL) -  //    return (NULL);  // need at leat one window created to have openGL context and create texture -  if ((newimg = malloc(sizeof(*newimg))) == NULL) -    return ((void *)0); -  newimg->next = mlx_ptr->img_list; -  mlx_ptr->img_list = newimg; -  newimg->width = width; -  newimg->height = height; -  newimg->vertexes[0] = 0.0;  newimg->vertexes[1] = 0.0; -  newimg->vertexes[2] = width;  newimg->vertexes[3] = 0.0; -  newimg->vertexes[4] = width;  newimg->vertexes[5] = -height; -  newimg->vertexes[6] = 0.0;  newimg->vertexes[7] = -height; -  newimg->buffer = malloc(UNIQ_BPP*width*height); -  bzero(newimg->buffer, UNIQ_BPP*width*height); - -  return (newimg); -} - -mlx_img_ctx_t	*add_img_to_ctx(mlx_img_list_t *img, mlx_win_list_t *win) -{ -  mlx_img_ctx_t	*imgctx; - -  imgctx = win->img_list; -  while (imgctx) -    { -      if (imgctx->img == img) -	return (imgctx); -      imgctx = imgctx->next; -    } - -  imgctx = malloc(sizeof(*imgctx)); -  imgctx->img = img; -  imgctx->next = win->img_list; -  win->img_list = imgctx; - -  glGenTextures(1, &(imgctx->texture)); -  glBindTexture(GL_TEXTURE_2D, imgctx->texture); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE); -  glTexImage2D( -	       GL_TEXTURE_2D, 0,           /* target, level of detail */ -	       GL_RGBA8,                    /* internal format */ -	       img->width, img->height, 0,           /* width, height, border */ -	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */ -	       img->buffer               /* pixels */ -	       ); - -  glGenBuffers(1, &(imgctx->vbuffer)); -  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer); -  glBufferData(GL_ARRAY_BUFFER, sizeof(img->vertexes), img->vertexes, GL_DYNAMIC_DRAW); // 4 points buff - -  return (imgctx); -} - - -void    mlx_put_image_to_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, mlx_img_list_t *img_ptr, int x, int y) -{ -  mlx_img_ctx_t	*imgctx; - -  if (!win_ptr->pixmgt) -    return ; - -  [(id)(win_ptr->winid) selectGLContext]; -  imgctx = add_img_to_ctx(img_ptr, win_ptr); - -  // update texture -  glBindTexture(GL_TEXTURE_2D, imgctx->texture); -  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, img_ptr->width, img_ptr->height, 0, -	       GL_BGRA, GL_UNSIGNED_BYTE, img_ptr->buffer); - -  [(id)(win_ptr->winid) mlx_gl_draw_img:img_ptr andCtx:imgctx andX:x andY:y]; - -  win_ptr->nb_flush ++; -} - -// assume here 32bpp little endian - -char    *mlx_get_data_addr(mlx_img_list_t *img_ptr, int *bits_per_pixel, int *size_line, int *endian) -{ -  *bits_per_pixel = UNIQ_BPP*8; -  *size_line = img_ptr->width*UNIQ_BPP; -  *endian = 0; // little endian for now on mac-intel -  return (img_ptr->buffer); -} - -unsigned int    mlx_get_color_value(mlx_ptr_t *mlx_ptr, int color) -{ -  return (color); -} - -int mlx_string_put(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr, int x, int y, int color, unsigned char *string) -{ -  mlx_img_ctx_t	*imgctx; -  int		gX; -  int		gY; - -  if (!win_ptr->pixmgt) -    return(0); - -#ifdef STRINGPUTX11 -  y -= (FONT_HEIGHT * 2)/3; -#endif - -  [(id)(win_ptr->winid) selectGLContext]; - -  imgctx = add_img_to_ctx(mlx_ptr->font, win_ptr); - -  while (*string) -    { -      if (*string >= 32 && *string <= 127) -	{ -	  gX = (FONT_WIDTH+2)*(*string-32); -	  gY = 0; -	  //      printf("put char %c pos %d %d\n", *string, gX, gY); -	  [(id)(win_ptr->winid) mlx_gl_draw_font:mlx_ptr->font andCtx:imgctx andX:x andY:y andColor:color glyphX:gX glyphY:gY]; -#ifdef STRINGPUTX11 -	  x += FONT_WIDTH/1.4; -#else -	  x += FONT_WIDTH; -#endif -	} -      string ++; -    } - -  win_ptr->nb_flush ++; -   -  return (0); -} - -int     mlx_destroy_image(mlx_ptr_t *mlx_ptr, mlx_img_list_t *img_todel) -{ -  mlx_img_ctx_t	ctx_first; -  mlx_img_ctx_t	*ctx; -  mlx_img_ctx_t	*ctx_to_del; -  mlx_img_list_t img_first; -  mlx_img_list_t *img; -  mlx_win_list_t *win; - -  img_first.next = mlx_ptr->img_list; -  img = &img_first; -  while (img && img->next) -    { -      if (img->next == img_todel) -	img->next = img->next->next; -      img = img->next; -    } -  mlx_ptr->img_list = img_first.next; - - -  win = mlx_ptr->win_list; -  while (win) -    { -      ctx_first.next = win->img_list; -      ctx = &ctx_first; -      while (ctx && ctx->next) -	{ -	  if (ctx->next->img == img_todel) -	    { -	      [(id)(win->winid) selectGLContext]; -	      glDeleteBuffers(1, &(ctx->next->vbuffer)); -	      glDeleteTextures(1, &(ctx->next->texture)); -	      ctx_to_del = ctx->next; -	      ctx->next = ctx->next->next; -	      free(ctx_to_del); -	    } -	  ctx = ctx->next; -	} -      win->img_list = ctx_first.next; -      win = win->next; -    } - - -  free(img_todel->buffer); -  free(img_todel); - -  //  printf("destroy image done.\n"); -  return (0); -} diff --git a/minilibx_opengl_20191021/mlx_new_window.h b/minilibx_opengl_20191021/mlx_new_window.h deleted file mode 100644 index d173e61..0000000 --- a/minilibx_opengl_20191021/mlx_new_window.h +++ /dev/null @@ -1,57 +0,0 @@ -// -// mlx_int.h for minilibx -// -// ol@staff.42.fr -// -// include opengl needed before mlx_int.h -// - -#import <Cocoa/Cocoa.h> -#import "mlx_int.h" - -@interface NSWindowEvent : NSWindow -{ -  func_t	event_funct[MAX_EVENT]; -  void		*(event_param[MAX_EVENT]); -  int		keyrepeat; -  int		keyflag; -  int		size_x; -  int		size_y; -} -- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr; -- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param; -- (void) setKeyRepeat:(int)mode; -- (void) exposeNotification:(NSNotification *)note; -- (void) closeNotification:(NSNotification *)note; -@end - - -@interface MlxWin : NSOpenGLView -{ -  NSWindowEvent		*win; -  NSOpenGLContext	*ctx; -  glsl_info_t		glsl; -  int			openglwin; - -  int			size_x; -  int			size_y; - -  int			pixel_nb; -  GLuint		pixel_vbuffer; -  GLuint		pixel_texture; -  unsigned int		*pixtexbuff; -} - -- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs; -- (void) selectGLContext; -- (void) flushGLContext; -- (void) pixelPutColor: (int)color X:(int)x Y:(int)y; -- (void) mlx_gl_draw; -- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y; -- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy; -- (NSOpenGLContext *) ctx; -- (NSWindowEvent *) win; -- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param; -- (void) setKeyRepeat:(int)mode; -- (void) ctxNeedsUpdate; -@end diff --git a/minilibx_opengl_20191021/mlx_new_window.m b/minilibx_opengl_20191021/mlx_new_window.m deleted file mode 100644 index 6d4fea4..0000000 --- a/minilibx_opengl_20191021/mlx_new_window.m +++ /dev/null @@ -1,766 +0,0 @@ -//  mlx_new_window.m - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> -#import <AppKit/NSOpenGLView.h> - -#include <stdio.h> -#include <math.h> - -#include "mlx_int.h" -#include "mlx_new_window.h" - - -NSOpenGLPixelFormatAttribute pfa_attrs[] = -  { -    NSOpenGLPFADepthSize, 32, -    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersionLegacy, -    0 -  }; - -static const GLfloat pixel_vertexes[8] = -  { -    -1.0 , -1.0, -    1.0, -1.0, -    1.0, 1.0, -    -1.0, 1.0 -  }; - - - -int get_mouse_button(NSEventType eventtype) -{ -  switch (eventtype) { -  case NSEventTypeLeftMouseDown: -  case NSEventTypeLeftMouseUp: -  case NSEventTypeLeftMouseDragged: -    return 1; -  case NSEventTypeRightMouseDown: -  case NSEventTypeRightMouseUp: -  case NSEventTypeRightMouseDragged: -    return 2; -  case NSEventTypeOtherMouseDown: -  case NSEventTypeOtherMouseUp: -  case NSEventTypeOtherMouseDragged: -    return 3; -  default: -    return 0; -  } -} - - -// classes for window & events - - - - -@implementation NSWindowEvent - -- (NSWindowEvent *) initWithContentRect:(NSRect)rect styleMask:(NSUInteger)winstyle backing:(NSBackingStoreType)bck defer:(BOOL) dfr -{ -  int i; - -  if ((self = [super initWithContentRect:rect -		     styleMask:winstyle -		     backing:bck -		     defer:dfr])) -    { -      i = MAX_EVENT; -      while (i--) -	{ -	  event_funct[i] = NULL; -	  event_param[i] = NULL; -	} -      keyrepeat = 0; -      keyflag = 0; -      size_x = rect.size.width; -      size_y = rect.size.height; -    } -  return (self); -} - - -- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param -{ -  event_funct[event] = func; -  event_param[event] = param; -  if (event == 6 || event == 32) // motion notify && high precision motion notify -    { -      if (func == NULL) -	[self setAcceptsMouseMovedEvents:NO]; -      else -	[self setAcceptsMouseMovedEvents:YES]; -    } -} - - -- (void) setKeyRepeat:(int)mode -{ -  keyrepeat = mode; -} - -- (BOOL) acceptsFirstResponder -{ -  return (YES); -} - -- (void) flagsChanged:(NSEvent *)theEvent -{ -  unsigned int flag; -  int the_key; -  unsigned int val; - -  flag = [theEvent modifierFlags]; -  //  printf("Key flag changed: %x => %x\n", keyflag, flag); -  //  printf("**mlx flag low part : %d  - %x\n", flag&0xFFFF, flag&0xFFFF); - -  if (!(val = (keyflag|flag)&(~(keyflag&flag)))) -    return ;   // no change - can happen when loosing focus on special key pressed, then re-pressed later -  the_key = 1; -  while (((val >> (the_key-1)) & 0x01)==0) -    the_key ++; -  if (flag > keyflag && event_funct[2] != NULL) -    event_funct[2](0xFF+the_key, event_param[2]); -  if (flag < keyflag && event_funct[3] != NULL) -    event_funct[3](0xFF+the_key, event_param[3]); -  /* -  if (event_funct[2] != NULL) -    { -      if (!(keyflag & NSAlphaShiftKeyMask) && (flag&NSAlphaShiftKeyMask)) event_funct[2](0xFF+1, event_param[2]); -      if (!(keyflag & NSShiftKeyMask) && (flag&NSShiftKeyMask)) event_funct[2](0xFF+2, event_param[2]); -      if (!(keyflag & NSControlKeyMask) && (flag&NSControlKeyMask)) event_funct[2](0xFF+3, event_param[2]); -      if (!(keyflag & NSAlternateKeyMask) && (flag&NSAlternateKeyMask)) event_funct[2](0xFF+4, event_param[2]); -      if (!(keyflag & NSCommandKeyMask) && (flag&NSCommandKeyMask)) event_funct[2](0xFF+5, event_param[2]); -      if (!(keyflag & NSNumericPadKeyMask) && (flag&NSNumericPadKeyMask)) event_funct[2](0xFF+6, event_param[2]); -      if (!(keyflag & NSHelpKeyMask) && (flag&NSHelpKeyMask)) event_funct[2](0xFF+7, event_param[2]); -      if (!(keyflag & NSFunctionKeyMask) && (flag&NSFunctionKeyMask)) event_funct[2](0xFF+8, event_param[2]); -    } -  if (event_funct[3] != NULL) -    { -      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](NSShiftKeyMask, event_param[3]); - -      if ((keyflag & NSAlphaShiftKeyMask) && !(flag&NSAlphaShiftKeyMask)) event_funct[3](0xFF+1, event_param[3]); -      if ((keyflag & NSShiftKeyMask) && !(flag&NSShiftKeyMask)) event_funct[3](0xFF+2, event_param[3]); -      if ((keyflag & NSControlKeyMask) && !(flag&NSControlKeyMask)) event_funct[3](0xFF+3, event_param[3]); -      if ((keyflag & NSAlternateKeyMask) && !(flag&NSAlternateKeyMask)) event_funct[3](0xFF+4, event_param[3]); -      if ((keyflag & NSCommandKeyMask) && !(flag&NSCommandKeyMask)) event_funct[3](0xFF+5, event_param[3]); -      if ((keyflag & NSNumericPadKeyMask) && !(flag&NSNumericPadKeyMask)) event_funct[3](0xFF+6, event_param[3]); -      if ((keyflag & NSHelpKeyMask) && !(flag&NSHelpKeyMask)) event_funct[3](0xFF+7, event_param[3]); -      if ((keyflag & NSFunctionKeyMask) && !(flag&NSFunctionKeyMask)) event_funct[3](0xFF+8, event_param[3]); -    } -  */ -  keyflag = flag; -} - -- (void) keyDown:(NSEvent *)theEvent -{ -  if (keyrepeat==0 && [theEvent isARepeat]) -    return ; -  //  printf("Key Down: %d\n", [theEvent keyCode]); -  if (event_funct[2] != NULL) -    event_funct[2]([theEvent keyCode], event_param[2]); -  //  else [super keyDown: theEvent]; -} - -- (void) keyUp:(NSEvent *)theEvent -{ -  //  printf("Key Up: %d\n", [theEvent keyCode]); -  if (event_funct[3] != NULL) -    event_funct[3]([theEvent keyCode], event_param[3]); -  //  else [super keyUp: theEvent]; - -} - -- (void) mouseDown:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[4] != NULL) -    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]); -} - -- (void) rightMouseDown:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[4] != NULL) -    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]); -} - -- (void) otherMouseDown:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse pressed bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[4] != NULL) -    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]); -} - -- (void) mouseUp:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[5] != NULL) -    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]); -} - -- (void) rightMouseUp:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[5] != NULL) -    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]); -} - -- (void) otherMouseUp:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; - -  thepoint = [theEvent locationInWindow]; -  button = get_mouse_button([theEvent type]); -  //  printf("Mouse release bt %d  pos: %f, %f\n", button, thepoint.x, thepoint.y); -  if (event_funct[5] != NULL) -    event_funct[5](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[5]); -} - -- (void) mouseMoved:(NSEvent *)theEvent -{ -  NSPoint thepoint; - -  thepoint = [theEvent locationInWindow]; -  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y); -  if (event_funct[6] != NULL) -    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]); -} - - -- (void) mouseDragged:(NSEvent *)theEvent -{ -  NSPoint thepoint; - -  thepoint = [theEvent locationInWindow]; -  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y); -  if (event_funct[6] != NULL) -    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]); -} - - -- (void) rightMouseDragged:(NSEvent *)theEvent -{ -  NSPoint thepoint; - -  thepoint = [theEvent locationInWindow]; -  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y); -  if (event_funct[6] != NULL) -    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]); -} - - -- (void) otherMouseDragged:(NSEvent *)theEvent -{ -  NSPoint thepoint; - -  thepoint = [theEvent locationInWindow]; -  //  printf("Mouse moved  pos: %f, %f\n", thepoint.x, thepoint.y); -  if (event_funct[6] != NULL) -    event_funct[6]((int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[6]); -} - - -- (void) scrollWheel:(NSEvent *)theEvent -{ -  NSPoint thepoint; -  int     button; -  float	  sens; - -  if (event_funct[4] == NULL) -    return ; - -  button = 0; -  thepoint = [theEvent locationInWindow]; -  sens = [theEvent deltaY]; -  if (sens > 0.2) -    button = 4; -  if (sens < -0.2) -    button = 5; -  sens = [theEvent deltaX]; -  if (sens > 0.2) -    button = 6; -  if (sens < -0.2) -    button = 7; -  if (button != 0) -    event_funct[4](button, (int)(thepoint.x), size_y - 1 - (int)(thepoint.y), event_param[4]); -} - - -- (void) exposeNotification:(NSNotification *)note -{ -  //    printf("Expose...\n"); -    if (event_funct[12] != NULL) -      event_funct[12](event_param[12]); -    //    printf("Expose done.\n"); -} - -- (void) closeNotification:(NSNotification *)note -{ -  if (event_funct[17] != NULL) -    event_funct[17](event_param[17]); -} - -- (void) deminiaturizeNotification:(NSNotification *)note -{ -  //  if (event_funct[??] != NULL) -  //    event_funct[??](event_param[??]); -  [self exposeNotification:note]; -} -@end - - -@implementation MlxWin - -- (id) initWithRect: (NSRect)rect andTitle: (NSString *)title pfaAttrs: (NSOpenGLPixelFormatAttribute *)attrs -{ -  NSOpenGLPixelFormat* pixFmt = [[NSOpenGLPixelFormat alloc] initWithAttributes:attrs]; - -  if ((self = [super initWithFrame:rect pixelFormat:pixFmt]) != nil) -    { -      NSUInteger windowStyle = NSWindowStyleMaskTitled | NSWindowStyleMaskClosable | NSWindowStyleMaskMiniaturizable; - -      win = [[NSWindowEvent alloc] initWithContentRect:rect -				   styleMask:windowStyle -				   backing:NSBackingStoreBuffered   // NSBackingStoreNonretained -				   defer:NO]; -      [win setContentView:self]; -      [win setTitle:title]; -      [win setKeyRepeat:1]; -      [win makeKeyAndOrderFront:self]; - -      //      printf("init ctx: current %p ", [NSOpenGLContext currentContext]); - -      //      ctx = [[NSOpenGLContext alloc] initWithFormat:pixFmt shareContext:[NSOpenGLContext currentContext]]; //other_context]; -      //      [ctx setView:self]; -      //      [ctx makeCurrentContext]; - -      [[self openGLContext] makeCurrentContext]; -      [[self openGLContext] setView:self]; -      [self prepareOpenGL]; - -      [self setNextKeyView:self]; - -      //      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidExposeNotification" object:nil]; -      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(exposeNotification:) name:@"NSWindowDidBecomeKeyNotification" object:win]; -      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(deminiaturizeNotification:) name:@"NSWindowDidDeminiaturizeNotification" object:win]; -      [[NSNotificationCenter defaultCenter] addObserver:win selector:@selector(closeNotification:) name:@"NSWindowWillCloseNotification" object:win]; -      // [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(ctxNeedsUpdate:) -      //				    name:NSViewGlobalFrameDidChangeNotification -      //				    object:nil]; - -      size_x = rect.size.width; -      size_y = rect.size.height; - -      glClearColor(0, 0, 0, 0); -      glClear(GL_COLOR_BUFFER_BIT); -      glFlush(); - -      //[win makeKeyAndOrderFront:nil]; -      // BOOL r = [win isKeyWindow]; -      //  if (r==YES) printf("keywindow ok\n"); else printf("keywindow KO\n"); - -      // Window controller subclass to set title -      // NSWindowController* windowController = [[NSWindowController alloc] initWithWindow:win]; -      // [windowController windowTitleForDocumentDisplayName:title]; -      // [windowController showWindow:nil]; -      // MlxWinController *mlxWinCont = [[MlxWinController alloc] initWin:win andTitle:title]; - -      // after nswindowcontroller who will retake first responder -      //      BOOL r = [win makeFirstResponder:nil]; -      //      if (r==YES) printf("responder ok\n"); else printf("responder KO\n"); - -      [pixFmt release]; -    } -  return (self); -} - -- (int)	pixel_management -{ -  bzero(&glsl, sizeof(glsl));   // so gldelete[shader/program] go silent on error. - -  glDisable(GL_DEPTH_TEST); -  glGenBuffers(1, &pixel_vbuffer); -  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer); -  glBufferData(GL_ARRAY_BUFFER, sizeof(pixel_vertexes), pixel_vertexes, GL_DYNAMIC_DRAW); // 4 points buff -  // pixel_ptr = glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); - -  glGenTextures(1, &pixel_texture); -  glBindTexture(GL_TEXTURE_2D, pixel_texture); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S,     GL_CLAMP_TO_EDGE); -  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T,     GL_CLAMP_TO_EDGE); -  pixtexbuff = malloc(sizeof(unsigned int)*size_x*size_y); -  pixel_nb = size_x*size_y; -  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000; -  pixel_nb = 0; -  glTexImage2D( -	       GL_TEXTURE_2D, 0,           /* target, level of detail */ -	       GL_RGBA8,                    /* internal format */ -	       size_x, size_y, 0,           /* width, height, border */ -	       GL_BGRA, GL_UNSIGNED_BYTE,   /* external format, type */ -	       pixtexbuff                   /* pixels */ -	       ); -  //      printf("pix tex err? 0x%x\n", glGetError()); - -  if (mlx_shaders(&glsl)) -    return (0); - -  glUseProgram(glsl.pixel_program); -  glsl.loc_pixel_texture = glGetUniformLocation(glsl.pixel_program, "texture"); -  //glsl.loc_pixel_winhalfsize = glGetUniformLocation(glsl.pixel_program, "winhalfsize"); -  glsl.loc_pixel_position = glGetAttribLocation(glsl.pixel_program, "position"); -  //      printf("err? 0x%x\n", glGetError()); - -  glUseProgram(glsl.image_program); -  glsl.loc_image_texture = glGetUniformLocation(glsl.image_program, "texture"); -  glsl.loc_image_pos = glGetUniformLocation(glsl.image_program, "imagepos"); -  glsl.loc_image_size = glGetUniformLocation(glsl.image_program, "imagesize"); -  glsl.loc_image_winhalfsize = glGetUniformLocation(glsl.image_program, "winhalfsize"); -  glsl.loc_image_position = glGetAttribLocation(glsl.image_program, "position"); -  //      printf("err? 0x%x\n", glGetError()); - -  glUseProgram(glsl.font_program); -  glsl.loc_font_texture = glGetUniformLocation(glsl.font_program, "texture"); -  glsl.loc_font_color = glGetUniformLocation(glsl.font_program, "color"); -  glsl.loc_font_posinwin = glGetUniformLocation(glsl.font_program, "fontposinwin"); -  glsl.loc_font_posinatlas = glGetUniformLocation(glsl.font_program, "fontposinatlas"); -  glsl.loc_font_atlassize = glGetUniformLocation(glsl.font_program, "fontatlassize"); -  glsl.loc_font_winhalfsize = glGetUniformLocation(glsl.font_program, "winhalfsize"); -  glsl.loc_font_position = glGetAttribLocation(glsl.font_program, "position"); -  //      printf("err? 0x%x\n", glGetError()); - -  glFlush(); -  return (1); -} - -- (void) ctxNeedsUpdate -{ -  // printf("Context update\n"); -  [ctx update]; -} - -- (void) selectGLContext -{ -  if ([NSOpenGLContext currentContext] != [self openGLContext]) -    { -      //      printf("ctx: %p => %p\n", [NSOpenGLContext currentContext], [self openGLContext]); -      [[self openGLContext] makeCurrentContext]; -    } -} - -- (void) flushGLContext -{ -  [[self openGLContext] flushBuffer]; -} - -- (NSOpenGLContext *) ctx -{ -  return (ctx); -} - -- (NSWindowEvent *) win -{ -  return (win); -} - - -- (void) pixelPutColor: (int)color X:(int)x Y:(int)y -{ -  pixel_nb ++; - -  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer); -  glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, 1, 1, GL_BGRA, GL_UNSIGNED_BYTE, (GLvoid *)(&color)); - -  if (pixel_nb >= MAX_PIXEL_NB) -    [self mlx_gl_draw]; -} - -- (void) destroyPixelManagement -{ -  free(pixtexbuff); -  [self selectGLContext]; -  glDeleteBuffers(1, &pixel_vbuffer); -  glDeleteTextures(1, &pixel_texture); -  glDeleteProgram(glsl.pixel_program); -  glDeleteProgram(glsl.image_program); -  glDeleteShader(glsl.pixel_vshader); -  glDeleteShader(glsl.pixel_fshader); -  glDeleteShader(glsl.image_vshader); -  glDeleteShader(glsl.image_fshader); -} - - -- (void) destroyMe -{ -  [[NSNotificationCenter defaultCenter] removeObserver:win]; -  [[NSNotificationCenter defaultCenter] removeObserver:self]; -  // [ctx release]; -  [win close]; -  [self release]; -} - -- (void) setEvent:(int)event andFunc:(func_t)func andParam:(void *)param -{ -  [win setEvent:event andFunc:func andParam:param]; -} - -- (void) setKeyRepeat:(int)mode -{ -  [win setKeyRepeat:mode]; -} - -- (void) clearWin -{ -  glClearColor(0, 0, 0, 0); -  glClear(GL_COLOR_BUFFER_BIT); -} - -- (void) mlx_gl_draw_img:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y -{ - -  if (pixel_nb >0) -    [self mlx_gl_draw]; - -  glUseProgram(glsl.image_program); - -  glActiveTexture(GL_TEXTURE0); -  glBindTexture(GL_TEXTURE_2D, imgctx->texture); -  glUniform1i(glsl.loc_image_texture, 0); - -  glUniform2f(glsl.loc_image_winhalfsize, size_x/2, size_y/2); -  glUniform2f(glsl.loc_image_pos, x, size_y - y); -  glUniform2f(glsl.loc_image_size, img->width, -img->height); - -  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer); -  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0); -  glEnableVertexAttribArray(0); - -  glEnable(GL_BLEND); -  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst -  glBlendEquation(GL_FUNC_ADD); - -  glDrawArrays(GL_TRIANGLE_FAN, 0, 4); -  glDisableVertexAttribArray(0); - -} - - -- (void) mlx_gl_draw_font:(mlx_img_list_t *)img andCtx:(mlx_img_ctx_t *)imgctx andX:(int)x andY:(int)y andColor:(int)color glyphX:(int)gx glyphY:(int)gy -{ -  GLfloat color_tab[4]; - -  if (pixel_nb >0) -    [self mlx_gl_draw]; - -  color_tab[0] = ((float)((color&0xFF0000)>>16))/255.0; -  color_tab[1] = ((float)((color&0xFF00)>>8))/255.0; -  color_tab[2] = ((float)((color&0xFF)>>0))/255.0; -  color_tab[3] = 1.0; -  glUseProgram(glsl.font_program); - -  glActiveTexture(GL_TEXTURE0); -  glBindTexture(GL_TEXTURE_2D, imgctx->texture); -  glUniform1i(glsl.loc_font_texture, 0); -  glUniform4fv(glsl.loc_font_color, 1, color_tab); - -  glUniform2f(glsl.loc_font_winhalfsize, size_x/2, size_y/2); -  glUniform2f(glsl.loc_font_posinwin, x, size_y - 1 - y); -  glUniform2f(glsl.loc_font_posinatlas, gx, gy); -  glUniform2f(glsl.loc_font_atlassize, img->width, img->height); - -  glBindBuffer(GL_ARRAY_BUFFER, imgctx->vbuffer); -  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0); -  glEnableVertexAttribArray(0); - -  glEnable(GL_BLEND); -  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst -  glBlendEquation(GL_FUNC_ADD); - -  glDrawArrays(GL_TRIANGLE_FAN, 0, 4); -  glDisableVertexAttribArray(0); - -} - - -- (void) mlx_gl_draw -{ -  if (pixel_nb <= 0) -    return ; - -  glUseProgram(glsl.pixel_program); - -  glActiveTexture(GL_TEXTURE0); -  glBindTexture(GL_TEXTURE_2D, pixel_vbuffer); -  glUniform1i(glsl.loc_pixel_texture, 0); -   -  glBindBuffer(GL_ARRAY_BUFFER, pixel_vbuffer); -  glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 2*sizeof(GLfloat), (void*)0); -  glEnableVertexAttribArray(0); - -  glEnable(GL_BLEND); -  glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);  // src alpha 0xFF : keep dst -  glBlendEquation(GL_FUNC_ADD); - -  glDrawArrays(GL_TRIANGLE_FAN, 0, 4); -  glDisableVertexAttribArray(0); - -  pixel_nb = size_x*size_y; -  while (pixel_nb--) pixtexbuff[pixel_nb] = 0xFF000000; -  glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, size_x, size_y, 0, GL_BGRA, GL_UNSIGNED_BYTE, pixtexbuff); -  pixel_nb = 0; -   -} - -@end - - -// mlx API -  - -void *mlx_new_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title) -{ -  mlx_win_list_t	*newwin; -  NSString		*str; - -  if ((newwin = malloc(sizeof(*newwin))) == NULL) -    return ((void *)0); -  newwin->img_list = NULL; -  newwin->next = mlx_ptr->win_list; -  newwin->nb_flush = 0; -  newwin->pixmgt = 1; -  mlx_ptr->win_list = newwin; - -  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y); -  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding]; -  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs]; -  if (newwin->winid) -    if (![(id)(newwin->winid) pixel_management]) -      { -	[(id)(newwin->winid) destroyPixelManagement]; -	[(id)(newwin->winid) destroyMe]; -      } -  return ((void *)newwin); -} - - -void mlx_clear_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_ptr) -{ -  [(id)(win_ptr->winid) selectGLContext]; -  [(id)(win_ptr->winid) clearWin]; -  win_ptr->nb_flush ++; -} - - -void mlx_expose_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param) -{ -  [(id)(win_ptr->winid) setEvent:12 andFunc:funct_ptr andParam:param]; -} - -void mlx_key_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param) -{ -  [(id)(win_ptr->winid) setEvent:3 andFunc:funct_ptr andParam:param]; -} - -void mlx_mouse_hook(mlx_win_list_t *win_ptr, int (*funct_ptr)(), void *param) -{ -  [(id)(win_ptr->winid) setEvent:4 andFunc:funct_ptr andParam:param]; -} - -void mlx_hook(mlx_win_list_t *win_ptr, int x_event, int x_mask, int (*funct_ptr)(), void *param) -{ -  [(id)(win_ptr->winid) setEvent:x_event andFunc:funct_ptr andParam:param]; -} - -int     mlx_do_key_autorepeatoff(mlx_ptr_t *mlx_ptr) -{ -  mlx_win_list_t *win; - -  win = mlx_ptr->win_list; -  while (win) -    { -      [(id)(win->winid) setKeyRepeat:0]; -      win = win->next; -    } -  return (0); -} - -int     mlx_do_key_autorepeaton(mlx_ptr_t *mlx_ptr) -{ -  mlx_win_list_t *win; - -  win = mlx_ptr->win_list; -  while (win) -    { -      [(id)(win->winid) setKeyRepeat:1]; -      win = win->next; -    } -  return (0); -} - - -int     mlx_destroy_window(mlx_ptr_t *mlx_ptr, mlx_win_list_t *win_to_del) -{ -  mlx_win_list_t    first; -  mlx_win_list_t    *win; -  mlx_img_ctx_t	    *ctx; -  mlx_img_ctx_t	    *ctx2; - -  first.next = mlx_ptr->win_list; -  win = &first; -  while (win && win->next) -    { -      if (win->next == win_to_del) -	win->next = win->next->next; -      win = win->next; -    } -  mlx_ptr->win_list = first.next; - -  if (win_to_del->pixmgt) -    { -      [(id)(win_to_del->winid) selectGLContext]; -      ctx = win_to_del->img_list;   // should be null anyway if no pixel management -      while (ctx) -	{ -	  glDeleteBuffers(1, &(ctx->vbuffer)); -	  glDeleteTextures(1, &(ctx->texture)); -	  ctx2 = ctx; -	  ctx = ctx->next; -	  free(ctx2); -	} -      [(id)(win_to_del->winid) destroyPixelManagement]; -    } -  [(id)(win_to_del->winid) destroyMe]; -  free(win_to_del); - -  //  printf("destroy window done.\n"); -  mlx_do_sync(mlx_ptr); -  return (0); -} diff --git a/minilibx_opengl_20191021/mlx_opengl.h b/minilibx_opengl_20191021/mlx_opengl.h deleted file mode 100644 index bb39267..0000000 --- a/minilibx_opengl_20191021/mlx_opengl.h +++ /dev/null @@ -1,21 +0,0 @@ -/* -** -** mlx_opengl.h  -** -** public include, use it after mlx.h -** designed only for minilibx_macos -** -*/ - -void    *mlx_new_opengl_window(void *mlx_ptr, int size_x, int size_y, char *title); - -/* create an opengl window. put_image & pixel_put & string_put do not work there. */ - -int	mlx_opengl_swap_buffers(void *win_ptr); - -/* the created window is double buffered. Use this funct to swap buffers */ -/* this funct will call glFlush(). Don't call it. */ - -int	mlx_opengl_window_set_context(void *win_ptr); - -/* in case multiple opengl windows are present, change opengl active context */ diff --git a/minilibx_opengl_20191021/mlx_opengl.m b/minilibx_opengl_20191021/mlx_opengl.m deleted file mode 100644 index 554d79b..0000000 --- a/minilibx_opengl_20191021/mlx_opengl.m +++ /dev/null @@ -1,57 +0,0 @@ -// mlx_opengl.m - -#import <Cocoa/Cocoa.h> -#import <OpenGL/gl3.h> -#import <AppKit/NSOpenGLView.h> - -#include <stdio.h> - -#include "mlx_int.h" -#include "mlx_new_window.h" - - - - - -NSOpenGLPixelFormatAttribute pfa_attrs_opengl[] = -  { -    NSOpenGLPFADepthSize, 32, -    NSOpenGLPFADoubleBuffer, -    NSOpenGLPFAOpenGLProfile, NSOpenGLProfileVersion4_1Core, -    0 -  }; - - - -void	*mlx_new_opengl_window(mlx_ptr_t *mlx_ptr, int size_x, int size_y, char *title) -{ -  mlx_win_list_t	*newwin; -  NSString		*str; - -  if ((newwin = malloc(sizeof(*newwin))) == NULL) -    return ((void *)0); -  newwin->img_list = NULL; -  newwin->next = mlx_ptr->win_list; -  newwin->nb_flush = 0; -  newwin->pixmgt = 0; -  mlx_ptr->win_list = newwin; - -  NSRect windowRect = NSMakeRect(100, 100, size_x, size_y); -  str = [NSString stringWithCString:title encoding:NSASCIIStringEncoding]; -  newwin->winid = [[MlxWin alloc] initWithRect:windowRect andTitle:str pfaAttrs:pfa_attrs_opengl]; - -  return ((void *)newwin); -} - - -int	mlx_opengl_swap_buffers(mlx_win_list_t *win_ptr) -{ -  [(id)(win_ptr->winid) flushGLContext]; -  return (0); -} - -int	mlx_opengl_window_set_context(mlx_win_list_t *win_ptr) -{ -  [(id)(win_ptr->winid) selectGLContext]; -  return (0); -} diff --git a/minilibx_opengl_20191021/mlx_png.c b/minilibx_opengl_20191021/mlx_png.c deleted file mode 100644 index ca8024d..0000000 --- a/minilibx_opengl_20191021/mlx_png.c +++ /dev/null @@ -1,418 +0,0 @@ - - -#include <stdlib.h> -#include <stdio.h> -#include <sys/mman.h> -#include <unistd.h> -#include <fcntl.h> -#include <err.h> -#include <string.h> -#include <arpa/inet.h> - -#include "zlib.h" - -#include <OpenGL/gl3.h> -#include	"mlx_int.h" - - -#define	PNG_MAGIC_SIZE	8 -unsigned char magic[PNG_MAGIC_SIZE] = {137, 80, 78, 71, 13, 10, 26, 10}; -#define PNG_HDR_SIZE	13 - -#define	Z_CHUNK	32768 - -#define	ERR_MAGIC_SIZE	1 -#define	ERR_MAGIC_WRONG	2 -#define	ERR_STRUCT_INCOMPLETE	3 -#define	ERR_STRUCT_HDR	4 -#define	ERR_STRUCT_END	5 -#define	ERR_STRUCT_CRC	6 -#define	ERR_STRUCT_INCIMPL 7 -#define	ERR_STRUCT_DAT	8 -#define	ERR_STRUCT_MISSCHK	9 -#define	ERR_ZLIB	10 -#define	ERR_DATA_MISMATCH	11 -#define	ERR_DATA_FILTER	12 -char *(mipng_err[]) = -{ -  "No error", -  "Not enough size for magic", -  "Wrong magic", -  "Incomplete chunk structure", -  "Duplicate or incorrect header", -  "Duplicate or incorrect end", -  "Invalid CRC in chunk", -  "Incorrect header or configuration not implemented", -  "Non consecutive dat chunks", -  "Missing header/dat/end chunk(s)", -  "Zlib inflate error", -  "Inflated data size mismatch", -  "Unknown scanline filter" -}; - -typedef struct png_info_s -{ -  unsigned int	width; -  unsigned int	height; -  int		depth; -  int		color; -  int		interlace; -  int		bpp; -} png_info_t; - - -int	mipng_is_type(unsigned char *ptr, char *type) -{ -  if (ptr[4] == type[0] && ptr[5] == type[1] && ptr[6] == type[2] && ptr[7] == type[3]) -    return (1); -  return (0); -} - - -unsigned char mipng_defilter_none(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]); } -unsigned char mipng_defilter_sub(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+(unsigned int)a); } -unsigned char mipng_defilter_up(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+(unsigned int)b); } -unsigned char mipng_defilter_average(unsigned char *buff, int pos, int a, int b, int c) -{ return (buff[pos]+((unsigned int)a+(unsigned int)b)/2); } -unsigned char mipng_defilter_paeth(unsigned char *buff, int pos, int a, int b, int c) -{ -  int	p; -  int	result; - -  p = a + b - c; -  if (abs(b - c) <= abs(a - c) && abs(b - c) <= abs(a + b - c - c)) -    result = a; -  else -    if (abs(a - c) <= abs(a + b - c - c)) -      result = b; -    else -      result = c; - return (buff[pos]+result); -} - - - -unsigned char (*(mipng_defilter[]))(unsigned char *buff, int pos, int a, int b, int c) = -{ -  mipng_defilter_none, -  mipng_defilter_sub, -  mipng_defilter_up, -  mipng_defilter_average, -  mipng_defilter_paeth -}; - -// only work for mlx mac or img 32bpp -int	mipng_fill_img(mlx_img_list_t *img, unsigned char *buf, png_info_t *pi) -{ -  unsigned int	current_filter; -  int	ipos; -  int	bpos; -  int	ilen; -  int	iline; -  int	blen; -  unsigned char tmp; -  unsigned char *ibuf; - -  ibuf = (unsigned char *)img->buffer; -  iline = img->width * UNIQ_BPP; -  ilen = img->width * img->height * UNIQ_BPP; -  blen = img->width * img->height * pi->bpp + img->height; -  ipos = 0; -  bpos = 0; -  while (ipos < ilen && bpos < blen) -    { -      if ((ipos % iline) == 0) -	{ -	  if ((current_filter = buf[bpos++]) > 4) -	    return (ERR_DATA_FILTER); -	} -      ibuf[ipos] = mipng_defilter[current_filter](buf, bpos, -				 ipos%iline>3?ibuf[ipos-UNIQ_BPP]:0, -				 (ipos>=iline)?ibuf[ipos-iline]:0, -				 (ipos>=iline && ipos%iline>3)?ibuf[ipos-iline-UNIQ_BPP]:0); -      ipos ++; -      bpos ++; -      if (pi->depth == 16) -	bpos ++; -      if (ipos % 4 == 3 && pi->color == 2)  // no alpha -	img->buffer[ipos++] = 0xFF; -    } -  if (ipos != ilen || bpos != blen) -    { -      //      printf("fill err ipos %d vs %d, bpos %d vs %d\n", ipos, ilen, bpos, blen); -      return (ERR_DATA_MISMATCH); -    } -  ipos = 0; -  while (ipos < ilen) -    { -      tmp = ibuf[ipos]; -      ibuf[ipos] = ibuf[ipos+2]; -      ibuf[ipos+2] = tmp; -      ibuf[ipos+3] = 0xFF - ibuf[ipos+3]; -      ipos += UNIQ_BPP; -    } -  return (0); -} - - -int	mipng_data(mlx_img_list_t *img, unsigned char *dat, png_info_t *pi) -{ -  unsigned int	len; -  int		b_pos; -  unsigned char *buffer; -  int		ret; -  int z_ret; -  unsigned z_have; -  z_stream z_strm; -  unsigned char z_out[Z_CHUNK]; - -  b_pos = 0; -  if (!(buffer = malloc((long long)img->width*(long long)img->height*(long long)pi->bpp + img->height))) -    err(1, "Can't malloc"); -  z_strm.zalloc = Z_NULL; -  z_strm.zfree = Z_NULL; -  z_strm.opaque = Z_NULL; -  z_strm.avail_in = 0; -  z_strm.next_in = Z_NULL; -  z_ret = inflateInit(&z_strm); -  if (z_ret != Z_OK) -    return (ERR_ZLIB); - -  while (mipng_is_type(dat, "IDAT")) -    { -      len = *((unsigned int *)dat); -      len = ntohl(len); -      z_strm.avail_in = len; -      z_strm.next_in = dat + 8; -      z_strm.avail_out = 0; -      while (z_strm.avail_out == 0) -	{ -	  z_strm.avail_out = Z_CHUNK; -	  z_strm.next_out = z_out; -	  z_ret = inflate(&z_strm, Z_NO_FLUSH); -	  //	  printf("inflate ret %d avail_out %d\n", z_ret, z_strm.avail_out); -	  if (z_ret != Z_OK && z_ret != Z_STREAM_END) -	    { -	      inflateEnd(&z_strm); -	      return (ERR_ZLIB); -	    } -	  if (b_pos + Z_CHUNK - z_strm.avail_out > img->width*img->height*pi->bpp+img->height) -	    { -	      inflateEnd(&z_strm); -	      return (ERR_DATA_MISMATCH); -	    } -	  bcopy(z_out, buffer+b_pos, Z_CHUNK - z_strm.avail_out); -	  b_pos += Z_CHUNK - z_strm.avail_out; -	} -      dat += len + 4 + 4 + 4; -    }  -  inflateEnd(&z_strm); -  if (b_pos != img->width*img->height*pi->bpp+img->height) -    { -      //      printf("pb : bpos %d vs expected %d\n", b_pos, img->width*img->height*pi->bpp+img->height); -      return (ERR_DATA_MISMATCH); -    } -  if ((ret = mipng_fill_img(img, buffer, pi))) -    return (ret); -  return (0); -} - - - -int	mipng_magic(unsigned char *ptr, int size) -{ -  int	i; - -  if (size < PNG_MAGIC_SIZE) -    return (ERR_MAGIC_SIZE); -  i = 0; -  while (i < PNG_MAGIC_SIZE) -    if (*(ptr++) != magic[i++]) -      return (ERR_MAGIC_WRONG); -  return (0); -} - - -unsigned long crc_table[256] = { 0, 0x77073096, 0xee0e612c, 0x990951ba, 0x76dc419, 0x706af48f, 0xe963a535, 0x9e6495a3, 0xedb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x9b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x1db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x6b6b51f, 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0xf00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x86d3d2d, 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x3b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x4db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 0xd6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0xa00ae27, 0x7d079eb1, 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x26d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x5005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0xcb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0xbdbdf21, 0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d }; - -// From http://www.w3.org/TR/PNG/#D-CRCAppendix -int	mipng_crc(unsigned char *ptr, int len) -{ -  unsigned int	file_crc; -  unsigned long crc; -  int		i; - -  file_crc = *((unsigned int *)(ptr+4+4+len)); -  file_crc = ntohl(file_crc); -   -  crc = 0xffffffffL; -  i = 0; -  while (i < len+4) -    crc = crc_table[(crc ^ ptr[(i++)+4]) & 0xff] ^ (crc >> 8); -  crc ^= 0xffffffffL; - -  if (file_crc != crc) -    return (1); -  return (0); -} - - -int	mipng_structure(unsigned char *ptr, int size, unsigned char **hdr, unsigned char **dat) -{ -  unsigned int	len; -  int		dat_state; -  int		end; - -  dat_state = 0; -  *hdr = NULL; -  *dat = NULL; -  end = 0; -  while (size) -    { -      if (size >= 4) // length present -	{ -	  len = *((unsigned int *)ptr); -	  len = ntohl(len); -	  if (size < 4 + 4 + 4 + len) -	    return (ERR_STRUCT_INCOMPLETE); -	  if (mipng_crc(ptr, len)) -	    return (ERR_STRUCT_CRC); -	  //	  printf("found chunk len %d type %c%c%c%c\n", len, *(ptr+4), *(ptr+5), *(ptr+6), *(ptr+7)); -	  if (mipng_is_type(ptr, "IHDR")) -	    { -	      if (*hdr || len != PNG_HDR_SIZE) -		return (ERR_STRUCT_HDR); -	      *hdr = ptr; -	    } -	  if (mipng_is_type(ptr, "IEND")) -	    { -	      if (len != 0 || size != 4+4+4) -		return (ERR_STRUCT_END); -	      end = 1; -	    } -	  if (mipng_is_type(ptr, "IDAT")) -	    { -	      if (dat_state == 0) -		{ -		  dat_state = 1; -		  *dat = ptr; -		} -	      if (dat_state == 2) -		return (ERR_STRUCT_DAT); -	    } -	  else -	    if (dat_state == 1) -	      dat_state = 2; -	  size -= 4+4+4+len; -	  ptr += 4+4+4+len; -	} -      else -	return (ERR_STRUCT_INCOMPLETE); -    } -  if (*hdr == 0 || *dat == 0 || end == 0) -    return (ERR_STRUCT_MISSCHK); -  return (0); -} - - -int	mipng_verif_hdr(unsigned char *hdr, png_info_t *pi) -{ -  unsigned int	compress; -  unsigned int	filter; - -  hdr += 8; -  pi->width = ntohl(*((unsigned long *)hdr)); -  pi->height = ntohl(*((unsigned long *)(hdr+4))); -  pi->depth = *(hdr+8); -  pi->color = *(hdr+9); -  compress = *(hdr+10); -  filter = *(hdr+11); -  pi->interlace = *(hdr+12); -  if (pi->width <= 0 || pi->height <= 0 || (pi->depth != 8 && pi->depth != 16) -      || (pi->color != 2 && pi->color != 6) || compress != 0 || filter != 0 || pi->interlace != 0) -    return (ERR_STRUCT_INCIMPL); -  pi->bpp = pi->depth / 8; -  if (pi->color == 2) -    pi->bpp *= 3; -  if (pi->color == 6) -    pi->bpp *= 4; -  //  printf("hdr info : %d x %d, depth %d, col type %d, comp %d, filter %d, interlace %d\nbpp is %d\n", -  //	 pi->width, pi->height, pi->depth, pi->color, compress, filter, pi->interlace, pi->bpp); -  return (0); -} - - -mlx_img_list_t	*mlx_int_parse_png(mlx_ptr_t *xvar, unsigned char *fptr, int size) -{ -  int		err; -  unsigned char *hdr; -  unsigned char *dat; -  png_info_t	pi; -  mlx_img_list_t *img; - -  if ((err = mipng_magic(fptr, size))) -    { -      warnx("mlx PNG error : %s", mipng_err[err]); -      return ((mlx_img_list_t *)0); -    } -  fptr += PNG_MAGIC_SIZE; -  size -= PNG_MAGIC_SIZE; -  if ((err = mipng_structure(fptr, size, &hdr, &dat))) -    { -      warnx("mlx PNG error : %s", mipng_err[err]); -      return ((mlx_img_list_t *)0); -    } -  if ((err = mipng_verif_hdr(hdr, &pi))) -    { -      warnx("mlx PNG error : %s", mipng_err[err]); -      return ((mlx_img_list_t *)0); -    } -  if (!(img = mlx_new_image(xvar, pi.width, pi.height))) -    { -      warnx("mlx PNG error : Can't create mlx image"); -      return ((mlx_img_list_t *)0); -    } -  if ((err = mipng_data(img, dat, &pi))) -    { -      mlx_destroy_image(xvar, img); -      warnx("mlx PNG error : %s", mipng_err[err]); -      return ((mlx_img_list_t *)0); -    } -  return (img); -} - - - - -void	*mlx_png_file_to_image(mlx_ptr_t *xvar, char *file, int *width, int *height) -{ -  int			fd; -  int			size; -  unsigned char		*ptr; -  mlx_img_list_t        *img; - -  if ((fd = open(file, O_RDONLY)) == -1 || (size = lseek(fd, 0, SEEK_END)) == -1 || -      (ptr = mmap(0, size, PROT_READ, MAP_PRIVATE, fd, 0)) == (void *)MAP_FAILED) -    { -      if (fd >= 0) -        close(fd); -      warnx("Can't map png file '%s'", file); -      return ((void *)0); -    } -  if ((img = mlx_int_parse_png(xvar, ptr, size))) -    { -      *width = img->width; -      *height = img->height; -    } -  else -    { -      *width = 0; -      *height = 0; -    } -  munmap(ptr,size); -  close(fd); -  return (img); -} diff --git a/minilibx_opengl_20191021/mlx_png.h b/minilibx_opengl_20191021/mlx_png.h deleted file mode 100644 index 83ef145..0000000 --- a/minilibx_opengl_20191021/mlx_png.h +++ /dev/null @@ -1,4 +0,0 @@ - - - -void    *mlx_png_file_to_image(void *xvar, char *file, int *width, int *height); diff --git a/minilibx_opengl_20191021/mlx_rgb.c b/minilibx_opengl_20191021/mlx_rgb.c deleted file mode 100644 index 3f98717..0000000 --- a/minilibx_opengl_20191021/mlx_rgb.c +++ /dev/null @@ -1,763 +0,0 @@ -/* -** This is a generated file with rgb2c.pl and rgb.txt from -** the XFree86 distribution. -*/ - - -struct s_col_name mlx_col_name[] = -{ - { "snow" , 0xfffafa }, - { "ghost white" , 0xf8f8ff }, - { "ghostwhite" , 0xf8f8ff }, - { "white smoke" , 0xf5f5f5 }, - { "whitesmoke" , 0xf5f5f5 }, - { "gainsboro" , 0xdcdcdc }, - { "floral white" , 0xfffaf0 }, - { "floralwhite" , 0xfffaf0 }, - { "old lace" , 0xfdf5e6 }, - { "oldlace" , 0xfdf5e6 }, - { "linen" , 0xfaf0e6 }, - { "antique white" , 0xfaebd7 }, - { "antiquewhite" , 0xfaebd7 }, - { "papaya whip" , 0xffefd5 }, - { "papayawhip" , 0xffefd5 }, - { "blanched almond" , 0xffebcd }, - { "blanchedalmond" , 0xffebcd }, - { "bisque" , 0xffe4c4 }, - { "peach puff" , 0xffdab9 }, - { "peachpuff" , 0xffdab9 }, - { "navajo white" , 0xffdead }, - { "navajowhite" , 0xffdead }, - { "moccasin" , 0xffe4b5 }, - { "cornsilk" , 0xfff8dc }, - { "ivory" , 0xfffff0 }, - { "lemon chiffon" , 0xfffacd }, - { "lemonchiffon" , 0xfffacd }, - { "seashell" , 0xfff5ee }, - { "honeydew" , 0xf0fff0 }, - { "mint cream" , 0xf5fffa }, - { "mintcream" , 0xf5fffa }, - { "azure" , 0xf0ffff }, - { "alice blue" , 0xf0f8ff }, - { "aliceblue" , 0xf0f8ff }, - { "lavender" , 0xe6e6fa }, - { "lavender blush" , 0xfff0f5 }, - { "lavenderblush" , 0xfff0f5 }, - { "misty rose" , 0xffe4e1 }, - { "mistyrose" , 0xffe4e1 }, - { "white" , 0xffffff }, - { "black" , 0x0 }, - { "dark slate" , 0x2f4f4f }, - { "darkslategray" , 0x2f4f4f }, - { "dark slate" , 0x2f4f4f }, - { "darkslategrey" , 0x2f4f4f }, - { "dim gray" , 0x696969 }, - { "dimgray" , 0x696969 }, - { "dim grey" , 0x696969 }, - { "dimgrey" , 0x696969 }, - { "slate gray" , 0x708090 }, - { "slategray" , 0x708090 }, - { "slate grey" , 0x708090 }, - { "slategrey" , 0x708090 }, - { "light slate" , 0x778899 }, - { "lightslategray" , 0x778899 }, - { "light slate" , 0x778899 }, - { "lightslategrey" , 0x778899 }, - { "gray" , 0xbebebe }, - { "grey" , 0xbebebe }, - { "light grey" , 0xd3d3d3 }, - { "lightgrey" , 0xd3d3d3 }, - { "light gray" , 0xd3d3d3 }, - { "lightgray" , 0xd3d3d3 }, - { "midnight blue" , 0x191970 }, - { "midnightblue" , 0x191970 }, - { "navy" , 0x80 }, - { "navy blue" , 0x80 }, - { "navyblue" , 0x80 }, - { "cornflower blue" , 0x6495ed }, - { "cornflowerblue" , 0x6495ed }, - { "dark slate" , 0x483d8b }, - { "darkslateblue" , 0x483d8b }, - { "slate blue" , 0x6a5acd }, - { "slateblue" , 0x6a5acd }, - { "medium slate" , 0x7b68ee }, - { "mediumslateblue" , 0x7b68ee }, - { "light slate" , 0x8470ff }, - { "lightslateblue" , 0x8470ff }, - { "medium blue" , 0xcd }, - { "mediumblue" , 0xcd }, - { "royal blue" , 0x4169e1 }, - { "royalblue" , 0x4169e1 }, - { "blue" , 0xff }, - { "dodger blue" , 0x1e90ff }, - { "dodgerblue" , 0x1e90ff }, - { "deep sky" , 0xbfff }, - { "deepskyblue" , 0xbfff }, - { "sky blue" , 0x87ceeb }, - { "skyblue" , 0x87ceeb }, - { "light sky" , 0x87cefa }, - { "lightskyblue" , 0x87cefa }, - { "steel blue" , 0x4682b4 }, - { "steelblue" , 0x4682b4 }, - { "light steel" , 0xb0c4de }, - { "lightsteelblue" , 0xb0c4de }, - { "light blue" , 0xadd8e6 }, - { "lightblue" , 0xadd8e6 }, - { "powder blue" , 0xb0e0e6 }, - { "powderblue" , 0xb0e0e6 }, - { "pale turquoise" , 0xafeeee }, - { "paleturquoise" , 0xafeeee }, - { "dark turquoise" , 0xced1 }, - { "darkturquoise" , 0xced1 }, - { "medium turquoise" , 0x48d1cc }, - { "mediumturquoise" , 0x48d1cc }, - { "turquoise" , 0x40e0d0 }, - { "cyan" , 0xffff }, - { "light cyan" , 0xe0ffff }, - { "lightcyan" , 0xe0ffff }, - { "cadet blue" , 0x5f9ea0 }, - { "cadetblue" , 0x5f9ea0 }, - { "medium aquamarine" , 0x66cdaa }, - { "mediumaquamarine" , 0x66cdaa }, - { "aquamarine" , 0x7fffd4 }, - { "dark green" , 0x6400 }, - { "darkgreen" , 0x6400 }, - { "dark olive" , 0x556b2f }, - { "darkolivegreen" , 0x556b2f }, - { "dark sea" , 0x8fbc8f }, - { "darkseagreen" , 0x8fbc8f }, - { "sea green" , 0x2e8b57 }, - { "seagreen" , 0x2e8b57 }, - { "medium sea" , 0x3cb371 }, - { "mediumseagreen" , 0x3cb371 }, - { "light sea" , 0x20b2aa }, - { "lightseagreen" , 0x20b2aa }, - { "pale green" , 0x98fb98 }, - { "palegreen" , 0x98fb98 }, - { "spring green" , 0xff7f }, - { "springgreen" , 0xff7f }, - { "lawn green" , 0x7cfc00 }, - { "lawngreen" , 0x7cfc00 }, - { "green" , 0xff00 }, - { "chartreuse" , 0x7fff00 }, - { "medium spring" , 0xfa9a }, - { "mediumspringgreen" , 0xfa9a }, - { "green yellow" , 0xadff2f }, - { "greenyellow" , 0xadff2f }, - { "lime green" , 0x32cd32 }, - { "limegreen" , 0x32cd32 }, - { "yellow green" , 0x9acd32 }, - { "yellowgreen" , 0x9acd32 }, - { "forest green" , 0x228b22 }, - { "forestgreen" , 0x228b22 }, - { "olive drab" , 0x6b8e23 }, - { "olivedrab" , 0x6b8e23 }, - { "dark khaki" , 0xbdb76b }, - { "darkkhaki" , 0xbdb76b }, - { "khaki" , 0xf0e68c }, - { "pale goldenrod" , 0xeee8aa }, - { "palegoldenrod" , 0xeee8aa }, - { "light goldenrod" , 0xfafad2 }, - { "lightgoldenrodyellow" , 0xfafad2 }, - { "light yellow" , 0xffffe0 }, - { "lightyellow" , 0xffffe0 }, - { "yellow" , 0xffff00 }, - { "gold" , 0xffd700 }, - { "light goldenrod" , 0xeedd82 }, - { "lightgoldenrod" , 0xeedd82 }, - { "goldenrod" , 0xdaa520 }, - { "dark goldenrod" , 0xb8860b }, - { "darkgoldenrod" , 0xb8860b }, - { "rosy brown" , 0xbc8f8f }, - { "rosybrown" , 0xbc8f8f }, - { "indian red" , 0xcd5c5c }, - { "indianred" , 0xcd5c5c }, - { "saddle brown" , 0x8b4513 }, - { "saddlebrown" , 0x8b4513 }, - { "sienna" , 0xa0522d }, - { "peru" , 0xcd853f }, - { "burlywood" , 0xdeb887 }, - { "beige" , 0xf5f5dc }, - { "wheat" , 0xf5deb3 }, - { "sandy brown" , 0xf4a460 }, - { "sandybrown" , 0xf4a460 }, - { "tan" , 0xd2b48c }, - { "chocolate" , 0xd2691e }, - { "firebrick" , 0xb22222 }, - { "brown" , 0xa52a2a }, - { "dark salmon" , 0xe9967a }, - { "darksalmon" , 0xe9967a }, - { "salmon" , 0xfa8072 }, - { "light salmon" , 0xffa07a }, - { "lightsalmon" , 0xffa07a }, - { "orange" , 0xffa500 }, - { "dark orange" , 0xff8c00 }, - { "darkorange" , 0xff8c00 }, - { "coral" , 0xff7f50 }, - { "light coral" , 0xf08080 }, - { "lightcoral" , 0xf08080 }, - { "tomato" , 0xff6347 }, - { "orange red" , 0xff4500 }, - { "orangered" , 0xff4500 }, - { "red" , 0xff0000 }, - { "hot pink" , 0xff69b4 }, - { "hotpink" , 0xff69b4 }, - { "deep pink" , 0xff1493 }, - { "deeppink" , 0xff1493 }, - { "pink" , 0xffc0cb }, - { "light pink" , 0xffb6c1 }, - { "lightpink" , 0xffb6c1 }, - { "pale violet" , 0xdb7093 }, - { "palevioletred" , 0xdb7093 }, - { "maroon" , 0xb03060 }, - { "medium violet" , 0xc71585 }, - { "mediumvioletred" , 0xc71585 }, - { "violet red" , 0xd02090 }, - { "violetred" , 0xd02090 }, - { "magenta" , 0xff00ff }, - { "violet" , 0xee82ee }, - { "plum" , 0xdda0dd }, - { "orchid" , 0xda70d6 }, - { "medium orchid" , 0xba55d3 }, - { "mediumorchid" , 0xba55d3 }, - { "dark orchid" , 0x9932cc }, - { "darkorchid" , 0x9932cc }, - { "dark violet" , 0x9400d3 }, - { "darkviolet" , 0x9400d3 }, - { "blue violet" , 0x8a2be2 }, - { "blueviolet" , 0x8a2be2 }, - { "purple" , 0xa020f0 }, - { "medium purple" , 0x9370db }, - { "mediumpurple" , 0x9370db }, - { "thistle" , 0xd8bfd8 }, - { "snow1" , 0xfffafa }, - { "snow2" , 0xeee9e9 }, - { "snow3" , 0xcdc9c9 }, - { "snow4" , 0x8b8989 }, - { "seashell1" , 0xfff5ee }, - { "seashell2" , 0xeee5de }, - { "seashell3" , 0xcdc5bf }, - { "seashell4" , 0x8b8682 }, - { "antiquewhite1" , 0xffefdb }, - { "antiquewhite2" , 0xeedfcc }, - { "antiquewhite3" , 0xcdc0b0 }, - { "antiquewhite4" , 0x8b8378 }, - { "bisque1" , 0xffe4c4 }, - { "bisque2" , 0xeed5b7 }, - { "bisque3" , 0xcdb79e }, - { "bisque4" , 0x8b7d6b }, - { "peachpuff1" , 0xffdab9 }, - { "peachpuff2" , 0xeecbad }, - { "peachpuff3" , 0xcdaf95 }, - { "peachpuff4" , 0x8b7765 }, - { "navajowhite1" , 0xffdead }, - { "navajowhite2" , 0xeecfa1 }, - { "navajowhite3" , 0xcdb38b }, - { "navajowhite4" , 0x8b795e }, - { "lemonchiffon1" , 0xfffacd }, - { "lemonchiffon2" , 0xeee9bf }, - { "lemonchiffon3" , 0xcdc9a5 }, - { "lemonchiffon4" , 0x8b8970 }, - { "cornsilk1" , 0xfff8dc }, - { "cornsilk2" , 0xeee8cd }, - { "cornsilk3" , 0xcdc8b1 }, - { "cornsilk4" , 0x8b8878 }, - { "ivory1" , 0xfffff0 }, - { "ivory2" , 0xeeeee0 }, - { "ivory3" , 0xcdcdc1 }, - { "ivory4" , 0x8b8b83 }, - { "honeydew1" , 0xf0fff0 }, - { "honeydew2" , 0xe0eee0 }, - { "honeydew3" , 0xc1cdc1 }, - { "honeydew4" , 0x838b83 }, - { "lavenderblush1" , 0xfff0f5 }, - { "lavenderblush2" , 0xeee0e5 }, - { "lavenderblush3" , 0xcdc1c5 }, - { "lavenderblush4" , 0x8b8386 }, - { "mistyrose1" , 0xffe4e1 }, - { "mistyrose2" , 0xeed5d2 }, - { "mistyrose3" , 0xcdb7b5 }, - { "mistyrose4" , 0x8b7d7b }, - { "azure1" , 0xf0ffff }, - { "azure2" , 0xe0eeee }, - { "azure3" , 0xc1cdcd }, - { "azure4" , 0x838b8b }, - { "slateblue1" , 0x836fff }, - { "slateblue2" , 0x7a67ee }, - { "slateblue3" , 0x6959cd }, - { "slateblue4" , 0x473c8b }, - { "royalblue1" , 0x4876ff }, - { "royalblue2" , 0x436eee }, - { "royalblue3" , 0x3a5fcd }, - { "royalblue4" , 0x27408b }, - { "blue1" , 0xff }, - { "blue2" , 0xee }, - { "blue3" , 0xcd }, - { "blue4" , 0x8b }, - { "dodgerblue1" , 0x1e90ff }, - { "dodgerblue2" , 0x1c86ee }, - { "dodgerblue3" , 0x1874cd }, - { "dodgerblue4" , 0x104e8b }, - { "steelblue1" , 0x63b8ff }, - { "steelblue2" , 0x5cacee }, - { "steelblue3" , 0x4f94cd }, - { "steelblue4" , 0x36648b }, - { "deepskyblue1" , 0xbfff }, - { "deepskyblue2" , 0xb2ee }, - { "deepskyblue3" , 0x9acd }, - { "deepskyblue4" , 0x688b }, - { "skyblue1" , 0x87ceff }, - { "skyblue2" , 0x7ec0ee }, - { "skyblue3" , 0x6ca6cd }, - { "skyblue4" , 0x4a708b }, - { "lightskyblue1" , 0xb0e2ff }, - { "lightskyblue2" , 0xa4d3ee }, - { "lightskyblue3" , 0x8db6cd }, - { "lightskyblue4" , 0x607b8b }, - { "slategray1" , 0xc6e2ff }, - { "slategray2" , 0xb9d3ee }, - { "slategray3" , 0x9fb6cd }, - { "slategray4" , 0x6c7b8b }, - { "lightsteelblue1" , 0xcae1ff }, - { "lightsteelblue2" , 0xbcd2ee }, - { "lightsteelblue3" , 0xa2b5cd }, - { "lightsteelblue4" , 0x6e7b8b }, - { "lightblue1" , 0xbfefff }, - { "lightblue2" , 0xb2dfee }, - { "lightblue3" , 0x9ac0cd }, - { "lightblue4" , 0x68838b }, - { "lightcyan1" , 0xe0ffff }, - { "lightcyan2" , 0xd1eeee }, - { "lightcyan3" , 0xb4cdcd }, - { "lightcyan4" , 0x7a8b8b }, - { "paleturquoise1" , 0xbbffff }, - { "paleturquoise2" , 0xaeeeee }, - { "paleturquoise3" , 0x96cdcd }, - { "paleturquoise4" , 0x668b8b }, - { "cadetblue1" , 0x98f5ff }, - { "cadetblue2" , 0x8ee5ee }, - { "cadetblue3" , 0x7ac5cd }, - { "cadetblue4" , 0x53868b }, - { "turquoise1" , 0xf5ff }, - { "turquoise2" , 0xe5ee }, - { "turquoise3" , 0xc5cd }, - { "turquoise4" , 0x868b }, - { "cyan1" , 0xffff }, - { "cyan2" , 0xeeee }, - { "cyan3" , 0xcdcd }, - { "cyan4" , 0x8b8b }, - { "darkslategray1" , 0x97ffff }, - { "darkslategray2" , 0x8deeee }, - { "darkslategray3" , 0x79cdcd }, - { "darkslategray4" , 0x528b8b }, - { "aquamarine1" , 0x7fffd4 }, - { "aquamarine2" , 0x76eec6 }, - { "aquamarine3" , 0x66cdaa }, - { "aquamarine4" , 0x458b74 }, - { "darkseagreen1" , 0xc1ffc1 }, - { "darkseagreen2" , 0xb4eeb4 }, - { "darkseagreen3" , 0x9bcd9b }, - { "darkseagreen4" , 0x698b69 }, - { "seagreen1" , 0x54ff9f }, - { "seagreen2" , 0x4eee94 }, - { "seagreen3" , 0x43cd80 }, - { "seagreen4" , 0x2e8b57 }, - { "palegreen1" , 0x9aff9a }, - { "palegreen2" , 0x90ee90 }, - { "palegreen3" , 0x7ccd7c }, - { "palegreen4" , 0x548b54 }, - { "springgreen1" , 0xff7f }, - { "springgreen2" , 0xee76 }, - { "springgreen3" , 0xcd66 }, - { "springgreen4" , 0x8b45 }, - { "green1" , 0xff00 }, - { "green2" , 0xee00 }, - { "green3" , 0xcd00 }, - { "green4" , 0x8b00 }, - { "chartreuse1" , 0x7fff00 }, - { "chartreuse2" , 0x76ee00 }, - { "chartreuse3" , 0x66cd00 }, - { "chartreuse4" , 0x458b00 }, - { "olivedrab1" , 0xc0ff3e }, - { "olivedrab2" , 0xb3ee3a }, - { "olivedrab3" , 0x9acd32 }, - { "olivedrab4" , 0x698b22 }, - { "darkolivegreen1" , 0xcaff70 }, - { "darkolivegreen2" , 0xbcee68 }, - { "darkolivegreen3" , 0xa2cd5a }, - { "darkolivegreen4" , 0x6e8b3d }, - { "khaki1" , 0xfff68f }, - { "khaki2" , 0xeee685 }, - { "khaki3" , 0xcdc673 }, - { "khaki4" , 0x8b864e }, - { "lightgoldenrod1" , 0xffec8b }, - { "lightgoldenrod2" , 0xeedc82 }, - { "lightgoldenrod3" , 0xcdbe70 }, - { "lightgoldenrod4" , 0x8b814c }, - { "lightyellow1" , 0xffffe0 }, - { "lightyellow2" , 0xeeeed1 }, - { "lightyellow3" , 0xcdcdb4 }, - { "lightyellow4" , 0x8b8b7a }, - { "yellow1" , 0xffff00 }, - { "yellow2" , 0xeeee00 }, - { "yellow3" , 0xcdcd00 }, - { "yellow4" , 0x8b8b00 }, - { "gold1" , 0xffd700 }, - { "gold2" , 0xeec900 }, - { "gold3" , 0xcdad00 }, - { "gold4" , 0x8b7500 }, - { "goldenrod1" , 0xffc125 }, - { "goldenrod2" , 0xeeb422 }, - { "goldenrod3" , 0xcd9b1d }, - { "goldenrod4" , 0x8b6914 }, - { "darkgoldenrod1" , 0xffb90f }, - { "darkgoldenrod2" , 0xeead0e }, - { "darkgoldenrod3" , 0xcd950c }, - { "darkgoldenrod4" , 0x8b6508 }, - { "rosybrown1" , 0xffc1c1 }, - { "rosybrown2" , 0xeeb4b4 }, - { "rosybrown3" , 0xcd9b9b }, - { "rosybrown4" , 0x8b6969 }, - { "indianred1" , 0xff6a6a }, - { "indianred2" , 0xee6363 }, - { "indianred3" , 0xcd5555 }, - { "indianred4" , 0x8b3a3a }, - { "sienna1" , 0xff8247 }, - { "sienna2" , 0xee7942 }, - { "sienna3" , 0xcd6839 }, - { "sienna4" , 0x8b4726 }, - { "burlywood1" , 0xffd39b }, - { "burlywood2" , 0xeec591 }, - { "burlywood3" , 0xcdaa7d }, - { "burlywood4" , 0x8b7355 }, - { "wheat1" , 0xffe7ba }, - { "wheat2" , 0xeed8ae }, - { "wheat3" , 0xcdba96 }, - { "wheat4" , 0x8b7e66 }, - { "tan1" , 0xffa54f }, - { "tan2" , 0xee9a49 }, - { "tan3" , 0xcd853f }, - { "tan4" , 0x8b5a2b }, - { "chocolate1" , 0xff7f24 }, - { "chocolate2" , 0xee7621 }, - { "chocolate3" , 0xcd661d }, - { "chocolate4" , 0x8b4513 }, - { "firebrick1" , 0xff3030 }, - { "firebrick2" , 0xee2c2c }, - { "firebrick3" , 0xcd2626 }, - { "firebrick4" , 0x8b1a1a }, - { "brown1" , 0xff4040 }, - { "brown2" , 0xee3b3b }, - { "brown3" , 0xcd3333 }, - { "brown4" , 0x8b2323 }, - { "salmon1" , 0xff8c69 }, - { "salmon2" , 0xee8262 }, - { "salmon3" , 0xcd7054 }, - { "salmon4" , 0x8b4c39 }, - { "lightsalmon1" , 0xffa07a }, - { "lightsalmon2" , 0xee9572 }, - { "lightsalmon3" , 0xcd8162 }, - { "lightsalmon4" , 0x8b5742 }, - { "orange1" , 0xffa500 }, - { "orange2" , 0xee9a00 }, - { "orange3" , 0xcd8500 }, - { "orange4" , 0x8b5a00 }, - { "darkorange1" , 0xff7f00 }, - { "darkorange2" , 0xee7600 }, - { "darkorange3" , 0xcd6600 }, - { "darkorange4" , 0x8b4500 }, - { "coral1" , 0xff7256 }, - { "coral2" , 0xee6a50 }, - { "coral3" , 0xcd5b45 }, - { "coral4" , 0x8b3e2f }, - { "tomato1" , 0xff6347 }, - { "tomato2" , 0xee5c42 }, - { "tomato3" , 0xcd4f39 }, - { "tomato4" , 0x8b3626 }, - { "orangered1" , 0xff4500 }, - { "orangered2" , 0xee4000 }, - { "orangered3" , 0xcd3700 }, - { "orangered4" , 0x8b2500 }, - { "red1" , 0xff0000 }, - { "red2" , 0xee0000 }, - { "red3" , 0xcd0000 }, - { "red4" , 0x8b0000 }, - { "deeppink1" , 0xff1493 }, - { "deeppink2" , 0xee1289 }, - { "deeppink3" , 0xcd1076 }, - { "deeppink4" , 0x8b0a50 }, - { "hotpink1" , 0xff6eb4 }, - { "hotpink2" , 0xee6aa7 }, - { "hotpink3" , 0xcd6090 }, - { "hotpink4" , 0x8b3a62 }, - { "pink1" , 0xffb5c5 }, - { "pink2" , 0xeea9b8 }, - { "pink3" , 0xcd919e }, - { "pink4" , 0x8b636c }, - { "lightpink1" , 0xffaeb9 }, - { "lightpink2" , 0xeea2ad }, - { "lightpink3" , 0xcd8c95 }, - { "lightpink4" , 0x8b5f65 }, - { "palevioletred1" , 0xff82ab }, - { "palevioletred2" , 0xee799f }, - { "palevioletred3" , 0xcd6889 }, - { "palevioletred4" , 0x8b475d }, - { "maroon1" , 0xff34b3 }, - { "maroon2" , 0xee30a7 }, - { "maroon3" , 0xcd2990 }, - { "maroon4" , 0x8b1c62 }, - { "violetred1" , 0xff3e96 }, - { "violetred2" , 0xee3a8c }, - { "violetred3" , 0xcd3278 }, - { "violetred4" , 0x8b2252 }, - { "magenta1" , 0xff00ff }, - { "magenta2" , 0xee00ee }, - { "magenta3" , 0xcd00cd }, - { "magenta4" , 0x8b008b }, - { "orchid1" , 0xff83fa }, - { "orchid2" , 0xee7ae9 }, - { "orchid3" , 0xcd69c9 }, - { "orchid4" , 0x8b4789 }, - { "plum1" , 0xffbbff }, - { "plum2" , 0xeeaeee }, - { "plum3" , 0xcd96cd }, - { "plum4" , 0x8b668b }, - { "mediumorchid1" , 0xe066ff }, - { "mediumorchid2" , 0xd15fee }, - { "mediumorchid3" , 0xb452cd }, - { "mediumorchid4" , 0x7a378b }, - { "darkorchid1" , 0xbf3eff }, - { "darkorchid2" , 0xb23aee }, - { "darkorchid3" , 0x9a32cd }, - { "darkorchid4" , 0x68228b }, - { "purple1" , 0x9b30ff }, - { "purple2" , 0x912cee }, - { "purple3" , 0x7d26cd }, - { "purple4" , 0x551a8b }, - { "mediumpurple1" , 0xab82ff }, - { "mediumpurple2" , 0x9f79ee }, - { "mediumpurple3" , 0x8968cd }, - { "mediumpurple4" , 0x5d478b }, - { "thistle1" , 0xffe1ff }, - { "thistle2" , 0xeed2ee }, - { "thistle3" , 0xcdb5cd }, - { "thistle4" , 0x8b7b8b }, - { "gray0" , 0x0 }, - { "grey0" , 0x0 }, - { "gray1" , 0x30303 }, - { "grey1" , 0x30303 }, - { "gray2" , 0x50505 }, - { "grey2" , 0x50505 }, - { "gray3" , 0x80808 }, - { "grey3" , 0x80808 }, - { "gray4" , 0xa0a0a }, - { "grey4" , 0xa0a0a }, - { "gray5" , 0xd0d0d }, - { "grey5" , 0xd0d0d }, - { "gray6" , 0xf0f0f }, - { "grey6" , 0xf0f0f }, - { "gray7" , 0x121212 }, - { "grey7" , 0x121212 }, - { "gray8" , 0x141414 }, - { "grey8" , 0x141414 }, - { "gray9" , 0x171717 }, - { "grey9" , 0x171717 }, - { "gray10" , 0x1a1a1a }, - { "grey10" , 0x1a1a1a }, - { "gray11" , 0x1c1c1c }, - { "grey11" , 0x1c1c1c }, - { "gray12" , 0x1f1f1f }, - { "grey12" , 0x1f1f1f }, - { "gray13" , 0x212121 }, - { "grey13" , 0x212121 }, - { "gray14" , 0x242424 }, - { "grey14" , 0x242424 }, - { "gray15" , 0x262626 }, - { "grey15" , 0x262626 }, - { "gray16" , 0x292929 }, - { "grey16" , 0x292929 }, - { "gray17" , 0x2b2b2b }, - { "grey17" , 0x2b2b2b }, - { "gray18" , 0x2e2e2e }, - { "grey18" , 0x2e2e2e }, - { "gray19" , 0x303030 }, - { "grey19" , 0x303030 }, - { "gray20" , 0x333333 }, - { "grey20" , 0x333333 }, - { "gray21" , 0x363636 }, - { "grey21" , 0x363636 }, - { "gray22" , 0x383838 }, - { "grey22" , 0x383838 }, - { "gray23" , 0x3b3b3b }, - { "grey23" , 0x3b3b3b }, - { "gray24" , 0x3d3d3d }, - { "grey24" , 0x3d3d3d }, - { "gray25" , 0x404040 }, - { "grey25" , 0x404040 }, - { "gray26" , 0x424242 }, - { "grey26" , 0x424242 }, - { "gray27" , 0x454545 }, - { "grey27" , 0x454545 }, - { "gray28" , 0x474747 }, - { "grey28" , 0x474747 }, - { "gray29" , 0x4a4a4a }, - { "grey29" , 0x4a4a4a }, - { "gray30" , 0x4d4d4d }, - { "grey30" , 0x4d4d4d }, - { "gray31" , 0x4f4f4f }, - { "grey31" , 0x4f4f4f }, - { "gray32" , 0x525252 }, - { "grey32" , 0x525252 }, - { "gray33" , 0x545454 }, - { "grey33" , 0x545454 }, - { "gray34" , 0x575757 }, - { "grey34" , 0x575757 }, - { "gray35" , 0x595959 }, - { "grey35" , 0x595959 }, - { "gray36" , 0x5c5c5c }, - { "grey36" , 0x5c5c5c }, - { "gray37" , 0x5e5e5e }, - { "grey37" , 0x5e5e5e }, - { "gray38" , 0x616161 }, - { "grey38" , 0x616161 }, - { "gray39" , 0x636363 }, - { "grey39" , 0x636363 }, - { "gray40" , 0x666666 }, - { "grey40" , 0x666666 }, - { "gray41" , 0x696969 }, - { "grey41" , 0x696969 }, - { "gray42" , 0x6b6b6b }, - { "grey42" , 0x6b6b6b }, - { "gray43" , 0x6e6e6e }, - { "grey43" , 0x6e6e6e }, - { "gray44" , 0x707070 }, - { "grey44" , 0x707070 }, - { "gray45" , 0x737373 }, - { "grey45" , 0x737373 }, - { "gray46" , 0x757575 }, - { "grey46" , 0x757575 }, - { "gray47" , 0x787878 }, - { "grey47" , 0x787878 }, - { "gray48" , 0x7a7a7a }, - { "grey48" , 0x7a7a7a }, - { "gray49" , 0x7d7d7d }, - { "grey49" , 0x7d7d7d }, - { "gray50" , 0x7f7f7f }, - { "grey50" , 0x7f7f7f }, - { "gray51" , 0x828282 }, - { "grey51" , 0x828282 }, - { "gray52" , 0x858585 }, - { "grey52" , 0x858585 }, - { "gray53" , 0x878787 }, - { "grey53" , 0x878787 }, - { "gray54" , 0x8a8a8a }, - { "grey54" , 0x8a8a8a }, - { "gray55" , 0x8c8c8c }, - { "grey55" , 0x8c8c8c }, - { "gray56" , 0x8f8f8f }, - { "grey56" , 0x8f8f8f }, - { "gray57" , 0x919191 }, - { "grey57" , 0x919191 }, - { "gray58" , 0x949494 }, - { "grey58" , 0x949494 }, - { "gray59" , 0x969696 }, - { "grey59" , 0x969696 }, - { "gray60" , 0x999999 }, - { "grey60" , 0x999999 }, - { "gray61" , 0x9c9c9c }, - { "grey61" , 0x9c9c9c }, - { "gray62" , 0x9e9e9e }, - { "grey62" , 0x9e9e9e }, - { "gray63" , 0xa1a1a1 }, - { "grey63" , 0xa1a1a1 }, - { "gray64" , 0xa3a3a3 }, - { "grey64" , 0xa3a3a3 }, - { "gray65" , 0xa6a6a6 }, - { "grey65" , 0xa6a6a6 }, - { "gray66" , 0xa8a8a8 }, - { "grey66" , 0xa8a8a8 }, - { "gray67" , 0xababab }, - { "grey67" , 0xababab }, - { "gray68" , 0xadadad }, - { "grey68" , 0xadadad }, - { "gray69" , 0xb0b0b0 }, - { "grey69" , 0xb0b0b0 }, - { "gray70" , 0xb3b3b3 }, - { "grey70" , 0xb3b3b3 }, - { "gray71" , 0xb5b5b5 }, - { "grey71" , 0xb5b5b5 }, - { "gray72" , 0xb8b8b8 }, - { "grey72" , 0xb8b8b8 }, - { "gray73" , 0xbababa }, - { "grey73" , 0xbababa }, - { "gray74" , 0xbdbdbd }, - { "grey74" , 0xbdbdbd }, - { "gray75" , 0xbfbfbf }, - { "grey75" , 0xbfbfbf }, - { "gray76" , 0xc2c2c2 }, - { "grey76" , 0xc2c2c2 }, - { "gray77" , 0xc4c4c4 }, - { "grey77" , 0xc4c4c4 }, - { "gray78" , 0xc7c7c7 }, - { "grey78" , 0xc7c7c7 }, - { "gray79" , 0xc9c9c9 }, - { "grey79" , 0xc9c9c9 }, - { "gray80" , 0xcccccc }, - { "grey80" , 0xcccccc }, - { "gray81" , 0xcfcfcf }, - { "grey81" , 0xcfcfcf }, - { "gray82" , 0xd1d1d1 }, - { "grey82" , 0xd1d1d1 }, - { "gray83" , 0xd4d4d4 }, - { "grey83" , 0xd4d4d4 }, - { "gray84" , 0xd6d6d6 }, - { "grey84" , 0xd6d6d6 }, - { "gray85" , 0xd9d9d9 }, - { "grey85" , 0xd9d9d9 }, - { "gray86" , 0xdbdbdb }, - { "grey86" , 0xdbdbdb }, - { "gray87" , 0xdedede }, - { "grey87" , 0xdedede }, - { "gray88" , 0xe0e0e0 }, - { "grey88" , 0xe0e0e0 }, - { "gray89" , 0xe3e3e3 }, - { "grey89" , 0xe3e3e3 }, - { "gray90" , 0xe5e5e5 }, - { "grey90" , 0xe5e5e5 }, - { "gray91" , 0xe8e8e8 }, - { "grey91" , 0xe8e8e8 }, - { "gray92" , 0xebebeb }, - { "grey92" , 0xebebeb }, - { "gray93" , 0xededed }, - { "grey93" , 0xededed }, - { "gray94" , 0xf0f0f0 }, - { "grey94" , 0xf0f0f0 }, - { "gray95" , 0xf2f2f2 }, - { "grey95" , 0xf2f2f2 }, - { "gray96" , 0xf5f5f5 }, - { "grey96" , 0xf5f5f5 }, - { "gray97" , 0xf7f7f7 }, - { "grey97" , 0xf7f7f7 }, - { "gray98" , 0xfafafa }, - { "grey98" , 0xfafafa }, - { "gray99" , 0xfcfcfc }, - { "grey99" , 0xfcfcfc }, - { "gray100" , 0xffffff }, - { "grey100" , 0xffffff }, - { "dark grey" , 0xa9a9a9 }, - { "darkgrey" , 0xa9a9a9 }, - { "dark gray" , 0xa9a9a9 }, - { "darkgray" , 0xa9a9a9 }, - { "dark blue" , 0x8b }, - { "darkblue" , 0x8b }, - { "dark cyan" , 0x8b8b }, - { "darkcyan" , 0x8b8b }, - { "dark magenta" , 0x8b008b }, - { "darkmagenta" , 0x8b008b }, - { "dark red" , 0x8b0000 }, - { "darkred" , 0x8b0000 }, - { "light green" , 0x90ee90 }, - { "lightgreen" , 0x90ee90 }, - { "none", -1 }, - { 0, 0 } -}; diff --git a/minilibx_opengl_20191021/mlx_shaders.c b/minilibx_opengl_20191021/mlx_shaders.c deleted file mode 100644 index 4a58955..0000000 --- a/minilibx_opengl_20191021/mlx_shaders.c +++ /dev/null @@ -1,240 +0,0 @@ -//  mlx_shaders.c - -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <OpenGL/gl3.h> -#include "mlx_int.h" - - -void display_log(GLuint object, void (*param_func)(), void (*getlog_func)()) -{ -  GLint log_length; -  char *log; - -  param_func(object, GL_INFO_LOG_LENGTH, &log_length); -  log = malloc(log_length); -  getlog_func(object, log_length, NULL, log); -  fprintf(stderr, "%s", log); -  free(log); -} - - -int mlx_shaders_pixel(glsl_info_t *glsl) -{ -  char  *source; -  int	length; -  GLint action_ok; - -  glsl->pixel_vshader = glCreateShader(GL_VERTEX_SHADER); -  source = strdup("#version 110 \n" -		  "attribute vec2 position;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -		  " gl_Position = vec4( position, 0.0, 1.0);" -		  " texcoord = vec2(position[0]+1.0, 1.0 - position[1]) / 2.0;" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->pixel_vshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->pixel_vshader); -  free(source); - -  glGetShaderiv(glsl->pixel_vshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile pixel vshader :\n"); -    display_log(glsl->pixel_vshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->pixel_fshader = glCreateShader(GL_FRAGMENT_SHADER); -  source = strdup("#version 110 \n" -		  "uniform sampler2D texture;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -		  " gl_FragColor = texture2D(texture, texcoord);" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->pixel_fshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->pixel_fshader); -  free(source); - -  glGetShaderiv(glsl->pixel_fshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile pixel fshader :\n"); -    display_log(glsl->pixel_fshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->pixel_program = glCreateProgram(); -  glAttachShader(glsl->pixel_program, glsl->pixel_vshader); -  glAttachShader(glsl->pixel_program, glsl->pixel_fshader); -  glLinkProgram(glsl->pixel_program); - -  glGetProgramiv(glsl->pixel_program, GL_LINK_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to link pixel shader program:\n"); -    display_log(glsl->pixel_program, glGetProgramiv, glGetProgramInfoLog); -    return (1); -  } - -  glFlush(); - -  return (0); -} - - -int mlx_shaders_image(glsl_info_t *glsl) -{ -  char  *source; -  int	length; -  GLint action_ok; - -  glsl->image_vshader = glCreateShader(GL_VERTEX_SHADER); -  source = strdup("#version 110 \n" -		  "attribute vec2 position;" -		  "uniform vec2 winhalfsize;" -		  "uniform vec2 imagepos;" -		  "uniform vec2 imagesize;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -		  " texcoord = position / imagesize;" -		  " vec2 pos = position - winhalfsize + imagepos;" -		  " pos = pos / winhalfsize;" -		  " gl_Position = vec4( pos, 0.0, 1.0);" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->image_vshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->image_vshader); -  free(source); - -  glGetShaderiv(glsl->image_vshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile image vshader :\n"); -    display_log(glsl->image_vshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->image_fshader = glCreateShader(GL_FRAGMENT_SHADER); -  source = strdup("#version 110 \n" -		  "uniform sampler2D texture;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -		  " gl_FragColor = texture2D(texture, texcoord);" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->image_fshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->image_fshader); -  free(source); - -  glGetShaderiv(glsl->image_fshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile image fshader :\n"); -    display_log(glsl->image_fshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->image_program = glCreateProgram(); -  glAttachShader(glsl->image_program, glsl->image_vshader); -  glAttachShader(glsl->image_program, glsl->image_fshader); -  glLinkProgram(glsl->image_program); - -  glGetProgramiv(glsl->image_program, GL_LINK_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to link image shader program:\n"); -    display_log(glsl->image_program, glGetProgramiv, glGetProgramInfoLog); -    return (1); -  } - -  glFlush(); - -  return (0); -} - - - - -int mlx_shaders_font(glsl_info_t *glsl) -{ -  char  *source; -  int	length; -  GLint action_ok; - -  glsl->font_vshader = glCreateShader(GL_VERTEX_SHADER); -  source = strdup("#version 110 \n" -		  "attribute vec2 position;" -		  "uniform vec2 winhalfsize;" -		  "uniform vec2 fontposinwin;" -		  "uniform vec2 fontposinatlas;" -		  "uniform vec2 fontatlassize;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -#ifdef STRINGPUTX11 -		  " texcoord = (position * vec2(1.4, -1.4) + fontposinatlas ) / fontatlassize;" -#else -		  " texcoord = (position * vec2(1.0, -1.0) + fontposinatlas ) / fontatlassize;" -#endif -		  " vec2 pos = position - winhalfsize + fontposinwin;" -		  " pos = pos / winhalfsize;" -		  " gl_Position = vec4( pos, 0.0, 1.0);" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->font_vshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->font_vshader); -  free(source); - -  glGetShaderiv(glsl->font_vshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile font vshader :\n"); -    display_log(glsl->font_vshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->font_fshader = glCreateShader(GL_FRAGMENT_SHADER); -  source = strdup("#version 110 \n" -		  "uniform sampler2D texture;" -		  "uniform vec4 color;" -		  "varying vec2 texcoord;" -		  "void main()" -		  "{" -		  " gl_FragColor = color * texture2D(texture, texcoord);" -		  "}"); -  length = strlen(source); -  glShaderSource(glsl->font_fshader, 1, (const GLchar**)&source, &length); -  glCompileShader(glsl->font_fshader); -  free(source); - -  glGetShaderiv(glsl->font_fshader, GL_COMPILE_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to compile font fshader :\n"); -    display_log(glsl->font_fshader, glGetShaderiv, glGetShaderInfoLog); -    return (1); -  } - -  glsl->font_program = glCreateProgram(); -  glAttachShader(glsl->font_program, glsl->font_vshader); -  glAttachShader(glsl->font_program, glsl->font_fshader); -  glLinkProgram(glsl->font_program); - -  glGetProgramiv(glsl->font_program, GL_LINK_STATUS, &action_ok); -  if (!action_ok) { -    fprintf(stderr, "Failed to link font shader program:\n"); -    display_log(glsl->font_program, glGetProgramiv, glGetProgramInfoLog); -    return (1); -  } - -  glFlush(); - -  return (0); -} - - - -int mlx_shaders(glsl_info_t *glsl) -{ -  return (mlx_shaders_pixel(glsl) + mlx_shaders_image(glsl) + mlx_shaders_font(glsl)); -} diff --git a/minilibx_opengl_20191021/mlx_xpm.c b/minilibx_opengl_20191021/mlx_xpm.c deleted file mode 100644 index 78d8c9b..0000000 --- a/minilibx_opengl_20191021/mlx_xpm.c +++ /dev/null @@ -1,338 +0,0 @@ -// mlx xpm -// by ol - -#include <OpenGL/gl3.h> -#include <stdlib.h> -#include <stdio.h> -#include <sys/mman.h> -#include <unistd.h> -#include <fcntl.h> -#include <string.h> -#include	"mlx_int.h" - -typedef struct  s_xpm_col -{ -  int           name; -  int           col; -} t_xpm_col; - - -struct  s_col_name -{ -  char  *name; -  int   color; -}; - -//extern struct s_col_name mlx_col_name[]; -#include "mlx_rgb.c" - - -#define	RETURN	{ if (colors) free(colors); if (tab) free(tab); \ -		  if (colors_direct) free(colors_direct); \ -                  if (img) mlx_destroy_image(xvar, img);   \ -                  return ((void *)0); } - - - - -char	*mlx_int_get_line(char *ptr,int *pos,int size) -{ -  int	pos2; -  int	pos3; -  int	pos4; - -  if ((pos2 = mlx_int_str_str(ptr+*pos,"\"",size-*pos))==-1) -    return ((char *)0); -  if ((pos3 = mlx_int_str_str(ptr+*pos+pos2+1,"\"",size-*pos-pos2-1))==-1) -    return ((char *)0); -  *(ptr+*pos+pos2) = 0; -  *(ptr+*pos+pos2+1+pos3) = 0; -  pos4 = *pos+pos2+1; -  *pos += pos2+pos3+2; -  return (ptr+pos4); -} - - - -char	*mlx_int_static_line(char **xpm_data,int *pos,int size) -{ -  static char	*copy = 0; -  static int	len = 0; -  int		len2; -  char		*str; - -  str = xpm_data[(*pos)++]; -  if ((len2 = strlen(str))>len) -    { -      if (copy) -	free(copy); -      if (!(copy = malloc(len2+1))) -	return ((char *)0); -      len = len2; -    } -  /* strcpy(copy,str); */ -  strlcpy(copy, str, len2+1); -  return (copy); -} - - -int	mlx_int_get_col_name(char *str,int size) -{ -  int	result; - -  result = 0; -  while (size--) -    result = (result<<8)+*(str++); -  return (result); -} - -int	mlx_int_get_text_rgb(char *name, char *end) -{ -  int	i; -  char	buff[64]; - -  if (*name == '#') -    return (strtol(name+1,0,16)); -  if (end) -    { -      snprintf(buff, 64, "%s %s", name, end); -      name = buff; -    } -  i = 0; -  while (mlx_col_name[i].name) -    { -      if (!strcasecmp(mlx_col_name[i].name, name)) -	return (mlx_col_name[i].color); -      i ++; -    } -  return (0); -} - - -void	mlx_int_xpm_set_pixel(mlx_img_list_t *img, char *data, int opp, int col, int x) -{ -  /* -  int	dec; - -  dec = opp; -  while (dec--) -    { -      if (img->image->byte_order) -	*(data+x*opp+dec) = col&0xFF; -      else -	*(data+x*opp+opp-dec-1) = col&0xFF; -      col >>= 8; -    } -  */ -  // opp is 4, do it the simple way -  *((unsigned int *)(data+4*x)) = col; -} - - -void	*mlx_int_parse_xpm(mlx_ptr_t *xvar,void *info,int info_size,char *(*f)()) -{ -  int	pos; -  char	*line; -  char	**tab; -  char	*data; -  char	*clip_data; -  int	nc; -  int	opp; -  int	cpp; -  int	col; -  int	rgb_col; -  int	col_name; -  int	method; -  int	x; -  int	i; -  int	j; -  mlx_img_list_t	*img; -  t_xpm_col	*colors; -  int		*colors_direct; -  int	width; -  int	height; - -  colors = 0; -  colors_direct = 0; -  img = 0; -  tab = 0; -  pos = 0; -  if (!(line = f(info,&pos,info_size)) || -      !(tab = mlx_int_str_to_wordtab(line)) || !(width = atoi(tab[0])) || -      !(height = atoi(tab[1])) || !(nc = atoi(tab[2])) || -      !(cpp = atoi(tab[3])) ) -    RETURN; -  free(tab); -  tab = 0; - -  method = 0; -  if (cpp<=2) -    { -      method = 1; -      if (!(colors_direct = malloc((cpp==2?65536:256)*sizeof(int)))) -	RETURN; -    } -  else -    if (!(colors = malloc(nc*sizeof(*colors)))) -      RETURN; - -  clip_data = 0; - -  i = nc; -  while (i--) -    { -      if (!(line = f(info,&pos,info_size)) || -	  !(tab = mlx_int_str_to_wordtab(line+cpp)) ) -	RETURN; -      j = 0; -      while (tab[j] && strcmp(tab[j++],"c")); - -      if (!tab[j]) -	RETURN; - -      rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]); -      /*       -      if ((rgb_col = mlx_int_get_text_rgb(tab[j], tab[j+1]))==-1) -	{ -	  if (!(clip_data = malloc(4*width*height)) ||   // ok, nice size .. -	      !(clip_img = XCreateImage(xvar->display, xvar->visual, -					1, XYPixmap, 0, clip_data, -					width, height, 8, (width+7)/8)) ) -	    RETURN; -	  memset(clip_data, 0xFF, 4*width*height); -	} -      */ -      if (method) -	colors_direct[mlx_int_get_col_name(line,cpp)] = rgb_col; -      //	  rgb_col>=0?mlx_get_color_value(xvar, rgb_col):rgb_col; -      else -	{ -	  colors[i].name = mlx_int_get_col_name(line,cpp); -	  colors[i].col = rgb_col; // rgb_col>=0?mlx_get_color_value(xvar,rgb_col):rgb_col; -	} -      free(tab); -      tab = 0; -    } - -  if (!(img = mlx_new_image(xvar,width,height))) -    RETURN; -  //opp = img->bpp/8; -  opp = 4; - - -  i = height; -  data = img->buffer; -  while (i--) -    { -      if (!(line = f(info,&pos,info_size))) -	RETURN; -      x = 0; -      while (x<width) -	{ -	  col = 0; -	  col_name = mlx_int_get_col_name(line+cpp*x,cpp); -	  if (method) -	    col = colors_direct[col_name]; -	  else -	    { -	      j = nc; -	      while (j--) -		if (colors[j].name==col_name) -		  { -		    col = colors[j].col; -		    j = 0; -		  } -	    } -	  //	  if (col==-1) -	  //	    XPutPixel(clip_img, x, height-1-i, 0); -	  //	  else -	  if (col==-1) -	    col = 0xFF000000; -	  mlx_int_xpm_set_pixel(img, data, opp, col, x); -	  x ++; -	} -      //      data += img->size_line; -      data += img->width*4; -    } -  /* -  if (clip_data) -    { -      if (!(clip_pix = XCreatePixmap(xvar->display, xvar->root, -					   width, height, 1)) ) -	RETURN; -      img->gc = XCreateGC(xvar->display, clip_pix, 0, &xgcv); -      XPutImage(xvar->display, clip_pix, img->gc, clip_img, -		0, 0, 0, 0, width, height); -      XFreeGC(xvar->display, img->gc); -      xgcv.clip_mask = clip_pix; -      xgcv.function = GXcopy; -      xgcv.plane_mask = AllPlanes; -      img->gc = XCreateGC(xvar->display, xvar->root, GCClipMask|GCFunction| -			  GCPlaneMask, &xgcv); -      XSync(xvar->display, False); -      XDestroyImage(clip_img); -    } -  */ -  if (colors) -    free(colors); -  if (colors_direct) -    free(colors_direct); -  return (img); -} - - -void	mlx_int_file_get_rid_comment(char *ptr, int size) -{ -  int	com_begin; -  int	com_end; - -  while ((com_begin = mlx_int_str_str_cote(ptr,"/*",size))!=-1) -    { -      com_end = mlx_int_str_str(ptr+com_begin+2,"*/",size-com_begin-2); -      memset(ptr+com_begin,' ',com_end+4); -    } -  while ((com_begin = mlx_int_str_str_cote(ptr,"//",size))!=-1) -    { -      com_end = mlx_int_str_str(ptr+com_begin+2,"\n",size-com_begin-2); -      memset(ptr+com_begin,' ',com_end+3); -    } -} - - -void	*mlx_xpm_file_to_image(mlx_ptr_t *xvar,char *file,int *width,int *height) -{ -  int	fd; -  int	size; -  char	*ptr; -  mlx_img_list_t	*img; - -  if ((fd = open(file,O_RDONLY))==-1 || (size = lseek(fd,0,SEEK_END))==-1 || -      (ptr = mmap(0,size,PROT_WRITE|PROT_READ,MAP_PRIVATE,fd,0))== -      (void *)MAP_FAILED) -    { -      if (fd>=0) -	close(fd); -      return ((void *)0); -    } -  mlx_int_file_get_rid_comment(ptr, size); -  if ((img = mlx_int_parse_xpm(xvar,ptr,size,mlx_int_get_line))) -    { -      *width = img->width; -      *height = img->height; -    } -  munmap(ptr,size); -  close(fd); -  return (img); -} - -void	*mlx_xpm_to_image(mlx_ptr_t *xvar,char **xpm_data,int *width,int *height) -{ -  mlx_img_list_t	*img; - -  if ((img = mlx_int_parse_xpm(xvar,xpm_data,0,mlx_int_static_line))) -    { -      *width = img->width; -      *height = img->height; -    } -  return (img); -} | 
