From cb4eb030bd460bbd77bc219750dbac01ce8b6a42 Mon Sep 17 00:00:00 2001 From: Logen Kain Date: Thu, 21 Jul 2016 10:22:47 -0700 Subject: [PATCH] init commit --- C_BOOK/1.5.1/a.out | Bin 0 -> 8936 bytes C_BOOK/1.5.1/main.c | 13 + C_BOOK/1.5.1/test.txt | 2 + C_BOOK/1.9-arrays/main.c | 52 ++++ c_graphics/sample/demo | Bin 0 -> 10792 bytes c_graphics/sample/demo.c | 24 ++ c_graphics/sample/test.c | 14 ++ curses/example_1/Makefile | 3 + curses/example_1/demo | Bin 0 -> 11792 bytes curses/example_1/demo.c | 92 +++++++ curses/example_1/test/Makefile | 3 + curses/example_1/test/demo | Bin 0 -> 11536 bytes curses/example_1/test/demo.c | 78 ++++++ curses/fun/Makefile | 3 + curses/fun/fun | Bin 0 -> 12272 bytes curses/fun/fun.c | 134 ++++++++++ lazyfoodSDL/01_hello_SDL/01_hello_SDL | Bin 0 -> 10856 bytes lazyfoodSDL/01_hello_SDL/01_hello_SDL.cpp | 56 +++++ lazyfoodSDL/01_hello_SDL/01_hello_SDL.zip | Bin 0 -> 1364 bytes lazyfoodSDL/01_hello_SDL/Makefile | 20 ++ lazyfoodSDL/02_image/02_image.cpp | 117 +++++++++ lazyfoodSDL/02_image/Makefile | 20 ++ lazyfoodSDL/02_image/images/hello_world.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/04_keepress | Bin 0 -> 14776 bytes lazyfoodSDL/04_keypress/Makefile | 20 ++ lazyfoodSDL/04_keypress/images/down.bmp | Bin 0 -> 921656 bytes .../04_keypress/images/hello_world.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/images/left.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/images/press.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/images/right.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/images/up.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/images/x.bmp | Bin 0 -> 921656 bytes lazyfoodSDL/04_keypress/test.cpp | 230 ++++++++++++++++++ learncthehardway/3/Makefile | 4 + learncthehardway/3/ex3 | Bin 0 -> 9336 bytes learncthehardway/3/ex3.c | 12 + learncthehardway/4/Makefile | 4 + learncthehardway/4/ex4 | Bin 0 -> 9320 bytes learncthehardway/4/ex4.c | 14 ++ learncthehardway/ex10/a.out | Bin 0 -> 9016 bytes learncthehardway/ex10/ex10.c | 23 ++ learncthehardway/ex14/a.out | Bin 0 -> 9504 bytes learncthehardway/ex14/ex14.c | 42 ++++ learncthehardway/ex9/notes | 5 + learncthehardway/exc1/Makefile | 6 + learncthehardway/exc1/a.out | Bin 0 -> 8792 bytes learncthehardway/exc1/ex1.c | 8 + learncthehardway/exc2/Makefile | 4 + sdl/first/Makefile | 25 ++ sdl/first/bat.bmp | Bin 0 -> 257078 bytes sdl/first/first | Bin 0 -> 11864 bytes sdl/first/main.c | 116 +++++++++ structus/Makefile | 22 ++ structus/main.c | 43 ++++ structus/struct | Bin 0 -> 9376 bytes 55 files changed, 1209 insertions(+) create mode 100755 C_BOOK/1.5.1/a.out create mode 100644 C_BOOK/1.5.1/main.c create mode 100644 C_BOOK/1.5.1/test.txt create mode 100644 C_BOOK/1.9-arrays/main.c create mode 100755 c_graphics/sample/demo create mode 100644 c_graphics/sample/demo.c create mode 100644 c_graphics/sample/test.c create mode 100644 curses/example_1/Makefile create mode 100755 curses/example_1/demo create mode 100644 curses/example_1/demo.c create mode 100644 curses/example_1/test/Makefile create mode 100755 curses/example_1/test/demo create mode 100644 curses/example_1/test/demo.c create mode 100644 curses/fun/Makefile create mode 100755 curses/fun/fun create mode 100644 curses/fun/fun.c create mode 100755 lazyfoodSDL/01_hello_SDL/01_hello_SDL create mode 100644 lazyfoodSDL/01_hello_SDL/01_hello_SDL.cpp create mode 100644 lazyfoodSDL/01_hello_SDL/01_hello_SDL.zip create mode 100644 lazyfoodSDL/01_hello_SDL/Makefile create mode 100644 lazyfoodSDL/02_image/02_image.cpp create mode 100644 lazyfoodSDL/02_image/Makefile create mode 100755 lazyfoodSDL/02_image/images/hello_world.bmp create mode 100755 lazyfoodSDL/04_keypress/04_keepress create mode 100644 lazyfoodSDL/04_keypress/Makefile create mode 100755 lazyfoodSDL/04_keypress/images/down.bmp create mode 100755 lazyfoodSDL/04_keypress/images/hello_world.bmp create mode 100755 lazyfoodSDL/04_keypress/images/left.bmp create mode 100755 lazyfoodSDL/04_keypress/images/press.bmp create mode 100755 lazyfoodSDL/04_keypress/images/right.bmp create mode 100755 lazyfoodSDL/04_keypress/images/up.bmp create mode 100755 lazyfoodSDL/04_keypress/images/x.bmp create mode 100644 lazyfoodSDL/04_keypress/test.cpp create mode 100644 learncthehardway/3/Makefile create mode 100755 learncthehardway/3/ex3 create mode 100644 learncthehardway/3/ex3.c create mode 100644 learncthehardway/4/Makefile create mode 100755 learncthehardway/4/ex4 create mode 100644 learncthehardway/4/ex4.c create mode 100755 learncthehardway/ex10/a.out create mode 100644 learncthehardway/ex10/ex10.c create mode 100755 learncthehardway/ex14/a.out create mode 100644 learncthehardway/ex14/ex14.c create mode 100644 learncthehardway/ex9/notes create mode 100644 learncthehardway/exc1/Makefile create mode 100755 learncthehardway/exc1/a.out create mode 100644 learncthehardway/exc1/ex1.c create mode 100644 learncthehardway/exc2/Makefile create mode 100644 sdl/first/Makefile create mode 100644 sdl/first/bat.bmp create mode 100755 sdl/first/first create mode 100644 sdl/first/main.c create mode 100644 structus/Makefile create mode 100644 structus/main.c create mode 100755 structus/struct diff --git a/C_BOOK/1.5.1/a.out b/C_BOOK/1.5.1/a.out new file mode 100755 index 0000000000000000000000000000000000000000..7f35f69076facc3e2428974f6765726bd80aab0c GIT binary patch literal 8936 zcmcIpYj7J^6~4RchY}~Uob=&5AR@KfG*q(lGH%l(D?3ist@9vp`cBufwU$+6Nl2^I z$?$M-Tk0uEGXul$hd;nT8TbLi4?6rH$)uCe9}Mn~G6Q8w%B00fDYᔩgxqFW+ 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 E1JYDF+W-In literal 0 HcmV?d00001 diff --git a/C_BOOK/1.5.1/main.c b/C_BOOK/1.5.1/main.c new file mode 100644 index 0000000..4bb319d --- /dev/null +++ b/C_BOOK/1.5.1/main.c @@ -0,0 +1,13 @@ +#define Q 113 +#include + +int main() +{ + int c; + while (c != 'q') { + + c = getchar(); + printf("%d\n",c); + } + return 0; +} diff --git a/C_BOOK/1.5.1/test.txt b/C_BOOK/1.5.1/test.txt new file mode 100644 index 0000000..8f7e42d --- /dev/null +++ b/C_BOOK/1.5.1/test.txt @@ -0,0 +1,2 @@ +bob is a faggot +bob is also an u. diff --git a/C_BOOK/1.9-arrays/main.c b/C_BOOK/1.9-arrays/main.c new file mode 100644 index 0000000..1b3b854 --- /dev/null +++ b/C_BOOK/1.9-arrays/main.c @@ -0,0 +1,52 @@ +#include +#define MAXLINE 1000 + +int getline( char line[], int maxline); +void copy(char to[], char from[]); + +/* print longest input line */ + +main() +{ + int len; /* current line length */ + int max; /* maximum length seen so far */ + char line[MAXLINE]; /* current input line */ + char longest[MAXLINE]; /* longest line saved here */ + + max = 0; + while ((len = getline(line, MAXLINE)) > 0) + if (len > max) { + max = len; + copy(longest, line); + } + if (max > 0) { /* there was a line */ + printf("%s", longest); + } + return 0; +} + +/* getline: read a line into s, return length */ +int getline(char s[], int lim) +{ + int c, i; + + for (i=0; isnSTORjVk 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 literal 0 HcmV?d00001 diff --git a/c_graphics/sample/demo.c b/c_graphics/sample/demo.c new file mode 100644 index 0000000..4bac1b3 --- /dev/null +++ b/c_graphics/sample/demo.c @@ -0,0 +1,24 @@ +/* demo.c*/ +#include +#include +#include +void setup() { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); } +void display() + { + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + glColor3f(0.0f, 0.0f, 0.0f); + glRectf(-0.75f,0.75f, 0.75f, -0.75f); + glutSwapBuffers(); + } +int main(int argc, char *argv[]) + { + glutInit(&argc, argv); + glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE); + glutInitWindowSize(800,600); + glutCreateWindow("Hello World"); + + setup(); + glutDisplayFunc(display); + glutMainLoop(); + return 0; + } diff --git a/c_graphics/sample/test.c b/c_graphics/sample/test.c new file mode 100644 index 0000000..47f36a2 --- /dev/null +++ b/c_graphics/sample/test.c @@ -0,0 +1,14 @@ +#include +#include + +int main() +{ + int gd = DETECT, gm; + + initgraph(&gd, &gm, "C:\\TC\\BGI"); + + getch(); + closegraph(); + return0 +} + diff --git a/curses/example_1/Makefile b/curses/example_1/Makefile new file mode 100644 index 0000000..df18b6e --- /dev/null +++ b/curses/example_1/Makefile @@ -0,0 +1,3 @@ +LDFLAGS=-lncurses + +all: demo diff --git a/curses/example_1/demo b/curses/example_1/demo new file mode 100755 index 0000000000000000000000000000000000000000..b104ce407fe8b7cfb141f316b95543fe97f38419 GIT binary patch literal 11792 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 literal 0 HcmV?d00001 diff --git a/curses/example_1/demo.c b/curses/example_1/demo.c new file mode 100644 index 0000000..41018d8 --- /dev/null +++ b/curses/example_1/demo.c @@ -0,0 +1,92 @@ +#include +#include +#include + +#define DELAY 30000 + +void quit(); +void draw_borders(WINDOW *screen); + +int main(int argc, char *argv[]){ + int x=0, y=0; + int max_y = 0, max_x = 0; + int next_x = 0; + int direction = 1; + int keypress = 0; + + initscr(); // Initialize window + noecho(); // Don't echo keypresses + curs_set(FALSE); // No cursor + nodelay(stdscr,1); // Stop getch from waiting. + //Global var 'stdscr' is created by the call to 'initscr()' + getmaxyx(stdscr, max_y, max_x); //Get the max x/y of the screen + + WINDOW *main = newwin(max_y - 3, max_x, 0, 0); + WINDOW *sub = newwin(3, max_x, max_y - 3, 0); + draw_borders(main); + draw_borders(sub); + + + + while(1) { + getmaxyx(stdscr, max_y, max_x); + keypress = getch(); // Listen for exit command + clear(); // Clear screen of all previous chars + mvprintw(y, x, "o"); // Print our "ball" at the current xy position + refresh(); + + usleep(DELAY); // Shorter delay between movements + + next_x = x + direction; + + if (keypress == 'q') { + quit(); + } + + if (next_x >= max_x || next_x < 0) { + direction*= -1; + } + else { + x+= direction; + } + mvwin(sub, 50, 50); + wrefresh(sub); + +// x++; // Advance the ball to the right + } + +// mvprintw(0, 0, "Hello, world!"); //Print some words in the spot 0,0 +// refresh(); // refresh window so words appear + +// sleep(1); //derp +// endwin(); // Restore normal terminal behavior +} + +void draw_borders(WINDOW *screen) { + int x, y, i; + + getmaxyx(screen, y, x); + + // 4 corners + mvwprintw(screen, 0, 0, "+"); + mvwprintw(screen, y - 1, 0, "+"); + mvwprintw(screen, 0, x - 1, "+"); + mvwprintw(screen, y - 1, x - 1, "+"); + + // sides + for (i = 1; i < (y - 1); i++) { + mvwprintw(screen, i, 0, "|"); + mvwprintw(screen, i, x - 1, "|"); + } + + // top and bottom + for (i = 1; i < (x - 1); i++) { + mvwprintw(screen, 0, i, "-"); + mvwprintw(screen, y - 1, i, "-"); + } +} + +void quit(){ + endwin(); + exit(0); +} diff --git a/curses/example_1/test/Makefile b/curses/example_1/test/Makefile new file mode 100644 index 0000000..df18b6e --- /dev/null +++ b/curses/example_1/test/Makefile @@ -0,0 +1,3 @@ +LDFLAGS=-lncurses + +all: demo diff --git a/curses/example_1/test/demo b/curses/example_1/test/demo new file mode 100755 index 0000000000000000000000000000000000000000..fa442a876a5d4e0be7f83a26f44949fc8e720f7b GIT binary patch literal 11536 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 literal 0 HcmV?d00001 diff --git a/curses/example_1/test/demo.c b/curses/example_1/test/demo.c new file mode 100644 index 0000000..f76530e --- /dev/null +++ b/curses/example_1/test/demo.c @@ -0,0 +1,78 @@ +#include +#include + +void draw_borders(WINDOW *screen) { + int x, y, i; + + getmaxyx(screen, y, x); + + // 4 corners + mvwprintw(screen, 0, 0, "+"); + mvwprintw(screen, y - 1, 0, "+"); + mvwprintw(screen, 0, x - 1, "+"); + mvwprintw(screen, y - 1, x - 1, "+"); + + // sides + for (i = 1; i < (y - 1); i++) { + mvwprintw(screen, i, 0, "|"); + mvwprintw(screen, i, x - 1, "|"); + } + + // top and bottom + for (i = 1; i < (x - 1); i++) { + mvwprintw(screen, 0, i, "-"); + mvwprintw(screen, y - 1, i, "-"); + } +} + +int main(int argc, char *argv[]) { + int parent_x, parent_y, new_x, new_y; + int score_size = 3; + + initscr(); + noecho(); + curs_set(FALSE); + + // set up initial windows + getmaxyx(stdscr, parent_y, parent_x); + + WINDOW *field = newwin(parent_y - score_size, parent_x, 0, 0); + WINDOW *score = newwin(score_size, parent_x, parent_y - score_size, 0); + + draw_borders(field); + draw_borders(score); + + while(1) { + getmaxyx(stdscr, new_y, new_x); + + if (new_y != parent_y || new_x != parent_x) { + parent_x = new_x; + parent_y = new_y; + + wresize(field, new_y - score_size, new_x); + wresize(score, score_size, new_x); + mvwin(score, new_y - score_size, 0); + + wclear(stdscr); + wclear(field); + wclear(score); + + draw_borders(field); + draw_borders(score); + } + + // draw to our windows + mvwprintw(field, 1, 1, "Field"); + mvwprintw(score, 1, 1, "Score"); + + // refresh each window + wrefresh(field); + wrefresh(score); + } + + endwin(); + + return 0; +} + + diff --git a/curses/fun/Makefile b/curses/fun/Makefile new file mode 100644 index 0000000..837dc83 --- /dev/null +++ b/curses/fun/Makefile @@ -0,0 +1,3 @@ +LDFLAGS=-lncurses + +all: fun diff --git a/curses/fun/fun b/curses/fun/fun new file mode 100755 index 0000000000000000000000000000000000000000..bd98e5f1194639fa664478fb7494e38d2480fcb8 GIT binary patch literal 12272 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 L?Ky{WXa4^U_jw9! literal 0 HcmV?d00001 diff --git a/curses/fun/fun.c b/curses/fun/fun.c new file mode 100644 index 0000000..eca85a0 --- /dev/null +++ b/curses/fun/fun.c @@ -0,0 +1,134 @@ +#include +#include +#include + +void quit(); +void draw_borders(WINDOW *screen); +int move_player(int keypress, int* player_y, int* player_x); + +void refresh_window(WINDOW *screen); + + +int main(int argc, char *argv[]){ + int max_y, max_x, new_y, new_x, field_max_x, field_max_y, player_x, player_y; + int next_x = 0; + int keypress; + int control_size = 5; + + initscr(); // Initialize window + noecho(); // Don't echo keypresses + curs_set(FALSE); // No cursor + nodelay(stdscr,1); // Stop getch from waiting. + + getmaxyx(stdscr, max_y, max_x); //Get the max x/y of the screen + + + WINDOW *field = newwin(max_y - control_size, max_x, 0, 0); + WINDOW *controls = newwin(control_size, max_x, max_y - control_size, 0); + + draw_borders(field); + draw_borders(controls); + + + //center player on field + getmaxyx(field, field_max_y, field_max_x); + + player_x = field_max_x/2; + player_y = field_max_y/2; + + while(1){ + getmaxyx(stdscr, new_y, new_x); + + keypress = getch(); // Listen for commands; must be before window refresh + + + if (new_y != max_y || new_x != max_x) { + max_x = new_x; + max_y = new_y; + + wresize(field, new_y - control_size, new_x); + wresize(controls, control_size, new_x); + mvwin(controls, new_y - control_size, 0); + wclear(stdscr); + wclear(field); + wclear(controls); + + draw_borders(field); + draw_borders(controls); + wrefresh(stdscr); + } + + mvwprintw(field, 1, 1, "Field"); + mvwprintw(field, player_y, player_x, "o"); + + mvwprintw(controls, 1, 1, "Commands"); + mvwprintw(controls, 3, 1, "^Q to quit"); + + wrefresh(field); + wrefresh(controls); + + if (keypress != -1) { + move_player(keypress, &player_y, &player_x); + refresh_window(field); + } + } + endwin(); + + return 0; +} + +int move_player(int keypress, int* player_y, int* player_x){ + if (keypress == 'w'){ + *player_y = *player_y - 1; + } + + else if (keypress == 'a'){ + *player_x = *player_x - 1; + } + else if (keypress == 's'){ + *player_y = *player_y + 1; + } + else if (keypress == 'd'){ + *player_x = *player_x + 1; + } + + else if (keypress == 17) { + quit(); + } + +} + +void refresh_window(WINDOW *screen) { + wclear(screen); + draw_borders(screen); + wrefresh(screen); +} + +void draw_borders(WINDOW *screen) { + int x, y, i; + + getmaxyx(screen, y, x); + + // 4 corners + mvwprintw(screen, 0, 0, "+"); + mvwprintw(screen, y - 1, 0, "+"); + mvwprintw(screen, 0, x - 1, "+"); + mvwprintw(screen, y - 1, x - 1, "+"); + + // sides + for (i = 1; i < (y - 1); i++) { + mvwprintw(screen, i, 0, "|"); + mvwprintw(screen, i, x - 1, "|"); + } + + // top and bottom + for (i = 1; i < (x - 1); i++) { + mvwprintw(screen, 0, i, "-"); + mvwprintw(screen, y - 1, i, "-"); + } +} + +void quit(){ + endwin(); + exit(0); +} diff --git a/lazyfoodSDL/01_hello_SDL/01_hello_SDL b/lazyfoodSDL/01_hello_SDL/01_hello_SDL new file mode 100755 index 0000000000000000000000000000000000000000..6fe2ca023963806e88ac41f7940de39e1d1a1bac GIT binary patch literal 10856 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 eeFyFVMrRz{|MS8Klq&c)BhFV__u%n literal 0 HcmV?d00001 diff --git a/lazyfoodSDL/01_hello_SDL/01_hello_SDL.cpp b/lazyfoodSDL/01_hello_SDL/01_hello_SDL.cpp new file mode 100644 index 0000000..2941de5 --- /dev/null +++ b/lazyfoodSDL/01_hello_SDL/01_hello_SDL.cpp @@ -0,0 +1,56 @@ +/*This source code copyrighted by Lazy Foo' Productions (2004-2015) +and may not be redistributed without written permission.*/ + +//Using SDL and standard IO +#include +#include + +//Screen dimension constants +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +int main( int argc, char* args[] ) +{ + //The window we'll be rendering to + SDL_Window* window = NULL; + + //The surface contained by the window + SDL_Surface* screenSurface = NULL; + + //Initialize SDL + if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) + { + printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() ); + } + else + { + //Create window + window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); + if( window == NULL ) + { + printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() ); + } + else + { + //Get window surface + screenSurface = SDL_GetWindowSurface( window ); + + //Fill the surface white + SDL_FillRect( screenSurface, NULL, SDL_MapRGB( screenSurface->format, 0xFF, 0xFF, 0xFF ) ); + + //Update the surface + SDL_UpdateWindowSurface( window ); + + //Wait two seconds + SDL_Delay( 2000 ); + } + } + + //Destroy window + SDL_DestroyWindow( window ); + + //Quit SDL subsystems + SDL_Quit(); + + return 0; +} diff --git a/lazyfoodSDL/01_hello_SDL/01_hello_SDL.zip b/lazyfoodSDL/01_hello_SDL/01_hello_SDL.zip new file mode 100644 index 0000000000000000000000000000000000000000..72c0bde07bb7b25ade8fcd613c8e2be934f7c1de GIT binary patch literal 1364 zcmWIWW@h1H0D*uW4>vFaO7JqsFc=udXQbxjPe$pr;qW0wJq1YtB|dqZyL zU3L(t-L^kT!^wBi7PC;tjySm$bB_fTcuk(b?lAH3-D}#GyDz?rIOzJf{9DrUyon9d zuU6@$pPM6@Z!kmLr%`C?8O^vXWP8Ox=#fC)5{1w{p90pslMQTa ztvK)Rd;MEdeZ$GD2TX~+jzNb+ytb|5Injp zx65DnUjH*r;0*Vw+fQ8HB)IdRzSMbubLuibipmoVb=_wb2aN-1E%gd z{f5Wl)gr%|JI>Yc;HoS!crICu_`e zl0T<-rM6<1VE*c#i~8&g4xexh6|xT6#$JjO8pPz?vhw6Wo&g2_`uIDYb-#J;oDk&wir0|C00_9t$&VK3r z`!qvZ=lBA{_mbbwUf{jf@$%^5b8>IF+QiO3k$$gx_A8T(v;3_x*}La&e*5<8a(Bbx z)7FaSl6;DPETu~QGj@H7`FV8O48?MeElcMO#$KvmY-tx}8|IpB8#{0cn%aWfIC*N3I=&No1U-$bx0lOb= zoXpXOn{qhI-_6skQMqC-!L`Ee&7ayMVWmyZS1w#Xrp0-AlSbV0)QvT>E%h1K$}48A z;F!py-W~Im|IlK$>cavzdst+TP76LYq4jijQKk4-r>%NIn{#y{_yPw=5a +#include + +//Screen dimensions +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +//Starts up SDL and creates window +bool init(); + +//Loads media +bool loadMedia(); + +//Frees media and shuts down SDL +void close(); + +//The window we'll be rendering to +SDL_Window* gWindow = NULL; + +//The surface contained by the window +SDL_Surface* gScreenSurface = NULL; + +//The image we will load and show on the screen +SDL_Surface* gHelloWorld = NULL; + +bool init(){ + //Initialization flag + bool success = true; + + //Initialize SDL + if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) + { + printf("SDL could not init! SDL_Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Create window + gWindow = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); + if( gWindow == NULL ) + { + printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Get window surface + gScreenSurface = SDL_GetWindowSurface( gWindow ); + } + } + return success; +} + + +bool loadMedia() +{ + //Loading success flag + bool success = true; + + //Load splash image + gHelloWorld = SDL_LoadBMP( "images/hello_world.bmp" ); + if( gHelloWorld == NULL ) + { + printf( "Unable to load image %s! SDL Error: %s\n", "images/hello_world.bmp", SDL_GetError() ); + } + return success; +} + +void close() +{ + //Deallocate surface + SDL_FreeSurface( gHelloWorld ); + gHelloWorld = NULL; + + //Destroy window + SDL_DestroyWindow( gWindow ); + gWindow = NULL; + + //Quit SDL subsystems + SDL_Quit(); +} + +int main( int argc, char* args[] ) +{ + //Start up SDL and create window + if( !init() ) + { + printf( "Failed to init!\n" ); + } + else + { + //Load media + if( !loadMedia() ) + { + printf( "Failed to load media!\n"); + } + else + { + //Apply the image + SDL_BlitSurface( gHelloWorld, NULL, gScreenSurface, NULL ); + + //Update the surface + SDL_UpdateWindowSurface( gWindow ); + + //Wait two seconds + SDL_Delay( 2000 ); + } + } + //Free resources and close SDL + close(); + + return 0; +} diff --git a/lazyfoodSDL/02_image/Makefile b/lazyfoodSDL/02_image/Makefile new file mode 100644 index 0000000..443f122 --- /dev/null +++ b/lazyfoodSDL/02_image/Makefile @@ -0,0 +1,20 @@ +#OBJS specifies which files to compile as part of the project +OBJS = 02_image.cpp + +#CC specifies which compiler to use +CC = clang + +#COMPILER_FLAGS specifies the additional compilation options we're using +# -w suppress all warnings +COMPILER_FLAGS = -w + +#LINKER_FLAGS specifies the libraries we're linking against +LINKER_FLAGS = -lSDL2 + +#OBJ_NAME specifies the name of our executable +OBJ_NAME= 02_image + +#This is the target that compiles our executable +all : $(OBJS) + $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) + diff --git a/lazyfoodSDL/02_image/images/hello_world.bmp b/lazyfoodSDL/02_image/images/hello_world.bmp new file mode 100755 index 0000000000000000000000000000000000000000..def253177b94c59f4b0233e17a714fabea66f986 GIT binary patch literal 921656 zcmeI5P0r=Eww~+WZh$yQD?NA9t6q@a1=0^Zgc?E(!I?n~!9(y6&Ja8VX9gZZ@*WF^ zAV}?3ltfYdc{boOMM?a5*5Z0eN_&6*>wo{x|MH)|{PXia^xuEifB)y-zkK<>|Mum} zzkT^{|IGgK?>hfq|I?Sh|NA>b|NK8b5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2teRp1pfN#uYdgO^RGPq4*>{3 z00Iy=LEw)+{`l>;-+uk|*Z=tY^CkNz``fo~x<;aNqTG2e6|0|q`YCYw`RAX1|NZxQ zyW3aKP`RAW~wQP{qh?{1P@>sdCKEM3(%Qo=!Z*Xao2p8+dtppXN0tpU- z*q>&;PhbmT8cMN_m_Zj#Y0zn`z2AZNTA;`uXv7KSzt^ZGYL?R`8u9)6cf!86{ie2? z&VK#+HTKvi(lU_d>Y5-e9wod{IJ+hR4GM)Ut=Dc2J*n`rtB+4J7UiP_&kZZF-6bzq ze6G?#OV-$w0*cK2k$y8!NRB1_nm7$gl4e8TJ^_u#DzY07Mg_wKSA5!PiyNO<3%i9_{a9w6ULXeOYxEjwxdJ8UVmAL-E>-W`=@xW z{AIVGC1jE_L#EGD+B(y^z}T8o5Ez$0Gvy7VdmRZjt1v~Caeb!$mIr6c6EaHw?XTNH zJq;gGd4uh=G^h)N(jf3Uf%eK92Gk-;Kcl}3sz6JJ51y7MRwJ*)qb7Sfhp}?jnY6bY zCe-x`0X=zav)lY>j4L3l@b>Sg?kj&a6=>||kl%poEhd9vpi}BdV;7=22vjGaXF!Vl z6~~=)Tm|ZLR?w$^3@6lv^Wtv-Rd?*9Kto=>np`~VVKedlI{^HLs*_jiqv^f*=(|q3 z=Iqy<*0I{G-ne+bwBD54o48bXN&{gVV!Q7pYGYaBt5A#Qeyu_w$RHKN#U1j|?i=!p zL~;!-1L4}KZL+=T?540cji{icjb&-^VSDsrAUEscb_l#hK!c@F6L$xK?$w}EA?5AY zusVF|q+%!Dg+_nNy`}n|ZL)j$T`Aq@2b3zEcp0dDfL*Fv=ENOufOFGu(uy3=zTG;uvtz{JV7LrHd(&0$$~ zxBNJBR_jY)<8CHt^!L$$lhBS2SJ2CMXS?fY)LeO7-9Ks0_$_jO8RJY3vWVpkeMU%G1Q zppB8v2A)YmUeVipY*5HrQ65f!6Zkr;uDpSsA6BYbTeachX%fEIOgJAkbnf0EXL|kh z4?eW=eU$v2!u^oBQ!@8%1Qg`MK*$qP4J7!ct7u#4?4I*;%DeSN6LQ}qot@9_KA51t zH~rk-p2wDuGrj)$_dR-^>-r(%Eza2z0zM9FjA+-cq#UlI5X1rf>2K4tDx5B%$G|PuWk|TjGERD-z z0*dF}dlSwYq>Yzghg;&4JrYfTCx@}^NLMG2(2fu1)?dYexU)%GW3W2viUs-zRXl`s?2Sc^do8^3mU$0C#UM*NAPHj6OirUrizOk={MJ*erRT zz9H4R^3j&;+I=@uOyXd;o0dk8F2R1nDc{(ILuM@kyMDE0jvih-A|qj)Km1j{Oygxc z-*L|F63~)Ib~nQzKQ-fMUsQIMqP*59PF@!>-YfnEOBGSS~_+&GC_{)U{_U;j9?Ec$zhsQiM<;wy(Kuce18OVp&wI#h+2{iQI_l<0r)C}?VA+~!Yd z&0dDvizbr1J1{@_lJY0kU;ox$|4%&_HMK@f`Kv*@BW0j?TOz*dmYB6#A@5eOxpa?k=^Y>8~{q4s;A8mAO`<~Ew-+O3Yjy>c|%-;vq9_-@VAkzdhRlC&*n zjG**CRa0k6dK$dwrh@pLrMQ-XwhqFOF`f{*Cfecp{u80ud7`)1(ffyap@lj2kc0kS z;MwLD^!Fxb1%C-maP{3p*c~;r``2H!@UW*z_wOi3q5f8R%6!uYF5K?lR@yN3?-HTo zde<&7eSCQTNkpiK#3uqV@FYF4{+e-gbN>H{bKQKS2r^>bx~446Joef~fmS-TVX^gO_>< zPMoKQ27hXUn!4)%TjoF=`P9Mw^9}zYl;|2^v;8{B}C}+raD0U>rh;t|2nL?l7X}eMEnA zCWSd(n=~=Y%Q1q|+ZZuTH9nu8QaL$?!W`d*p*Np50$zXbJUuTYTC!`E=GtPC3KwoZsBl&lu63v!;%@Kkw#fnjx9k zJ+)=-&O<&?P4azI-zA)s(D|Y92hkfMfNX@lr8>959L+Ohu%Fmc9kuE85W@%kz2*{r z^ZC=(hl#g$bn03ccJGq-swKv&<5O~;?bU9-6>xd^oHc# zGB)mJ^6b?wR4-5DJgy1!SN4jjCg~vp$mVh;jHpw0+>(0>2_()FADW0%Sa_e8`S>uz z@G%2tR;%6jCI7ak`9&u0Fqijf@As&D+gU#+lCSO$wfkDvJTCP2zTIn;Kp3e-@^U$` z;3nx=Be{ikBt-Kr&|X}ousw*;kJd^M1D@oonV6Gek~vwHXT-ON65?Kbst zW)dpn!yy95)^YUrvIEq*G4`A!jsDhxT)i9y&IP3A$Me0=_y-nd;e4Ty<+ph03}e}M z&2K@ASb2NGl`H74@g>`ANSOP5{zKGBX?-5fF#zZ2MV}s0*s2gl^2D0@J4Ae7;1s%d zxXcKa-+bOm$VW%W@e9n*fQkwK{_WN+KfA#9EgWKg8_0Z0m_7~^HjUi}>cuA;4UwPAZpfL{1nBP&o>{Sx zeu-DIzBBPwu#352)l*n(iApz5X`d z581V5VP**Rd1BV!Ur46eWjXnfGph-FEFB^~$TY!BNn%#3-5C)ESGja1oZ~}<+>%A~ zoi1$mdX>D>3@@66vy`oozNjI_*P*5S_qGmi@8p8mhm&;qxag!WgEk|<9v{vc$fSI}P{LlU;#9wsJ^ z5AXO=xBcy~VKMV0jsA9MudPW&3ud+2Wn1`AS^i|xe1mBlI8XoZf_djw4bbAZyf3>j z%{yi)zud3T-(9>NW+nkYK16@p*ehn9q{~NKo2J&P#Ruf_d48?-Tqp+?W9Q9? znI~!Vw_DqxzvZSetj-1*Q&bo`4@t0pglj$eGmye(pNN{M-n^tX8``aDqSQiSmcPTkYO+LitZfu;2YYwU9R?50}6tTiocc zA>7re;IVmvFw(|SIr)$?s|kD*MSt5kUYlCHtuL$@wPX$h#3atHtPg4Um8sPEu!O=3 zd_~gM!*bByLqwfiU>tbX;NJ=P(2NC5;A1lS8+>DegwcXi->HdFC^VT-6He)Msgl)V zT(U{~N-O>Vh+hKh8MJBScFHgpoC|ZF!y4OP;A2Sp_FStm_-dX&f3G1udsj|AZscvz< z1U}q1K!0P~^_&h~nkT9|RnHt=Y+Ft~^Yr;j`)x;(#CKx^CUg13ED@q>ZU}0OOTp(r4AQy zCFScHQ$-j}_v`W=>(#KZBgti2ahtCj`^d0@{+g*>#fJ`wQK}yX7tIsi#MN7}Y=JrX zkTa_Zd^8(k{i~23%#B!q1W^y#DeM_?6ZccBd16)*n6V=W zI{S(tPF0#4E9A^-wNrd_v0kqVO!7p~YC?XbL&An!v}0iaV1r=ep@&qdYOI)y@Jmf32YU7k1P( zEw{~Xp3HPd@lBk(sqCJr-$VH1X@t!Yb-Lv1b*XedhyA)qZnwEcIE**Q-%X!+|W}&AB>~7&{z z*Wn)Ok+IYhbJT}=F?6w?#gMh=-X+iRq)d6xLWIM%Q_IdP{ZAU(GX)l#i_byHnCa z^tXi4(ASvF=SLry`ha$MWn>2Foo($x6Z<8w+Lrv1n1@hUY0sCLFHk({UDcUPZ>j3U zsuyU6Hu_tgcC7*zv|2ej|EF>veLdB`sGR6jd5?^_8|bgv>6gHX=$NQJ&~H;1>zEhJ z8f-_HhMhfSEG3saTN>A2AYg_z`g?(An_CvNS~*xRf{(r)X{BF&KJ+X*q3w5E z<&E*w!bJ5sLW zxYnIs41Mo{k=%P7`a7;a`=2b9tA{n(Lw$V0wTzspM-O#mw^%8x2^ZnjBh%pFR)`4) zzxn*=s|86*svLTEz4ME0RhqX#A!a}gp+pyKPBwearR?9oO!|M{+5Fp_((Yai1tIMsqyE1~2g ze}h+ry=z@iAHU#gzu{?~eyVrd_JX%Ui5>gA#=nT(-WK;Md3QyB?-M>OVZli5y>4{< z4cmZ+rl0HrA0FlBy5Q+9AHJk?wgKj+9@L`-Gm50aipeHoY!Q1_{q_B7;9ZF=ZXU{c z%x;FPjQ-vvTynb^O+zSANgtDI=GI^JF6r+ghu*C57i69T;+LxzVw(R!%U2?#i5L^> zub){BH|aGS>A}9Qc-M1dv(J(P?L2}0_GvP;DmPZhSyq3|i>ZRsY^fLwv70#ciq7GR z{uTc;Q-WFbSB98rsd(sDo9m*#4aV1Ql-M$7)n7lA9irF9YHRARfAdPXnr#ote`;CB zKWu%=QB4P@)L%W+Hd7ASdbq`}f2a|>7yU(lpCBN=3O<%6-U@4{dYU&oi*?gxUqyl z3_M8>p+qHpOs?_ztBodgTuToLnXc^fOK^#$;=={?S6z+?ah2>X?qX)N1yxq zQ7Yl@lK%ORo>p&FXi2`+=);08Zs0ckRMFuI#jh`9K2J{}-J4i5iu*q1+hESh!9EQZ zxvOq87wAS)awn(6-*+K&f84d9f3+ZVFeK!Vn{hj_(KO8ng!6=={WRT7I+Azx=^Q!m zrk=^aKGI%jl|o0-*@+JiH)-21enndW+#61_HDi>+PQ7blqfI6Ht803eEt#fpNS5ql z7%RViN-II;e!YjIC!O1~SNji*&Vr2ukhxVLC{4K=d@ z|8lGFFe>d8PU5Krw?j$qP?NCMOBNMk-cBvLE31yeKZ6+=Io`Tlr#p<=` z6_YY`n9!C zGH0&2e@db06AG!VTBuQ=YpRd&$;4M-u!=2et%YT~*krQc^eSxltNTMwEqvn>TN@5z zotj>M)xkrH?C$P*e|X~T;SyLKQFjz%w2nCJRIMm?v!}kPTO++jANI850tIRf;m{Y= zD5D?l-j|g8>6+JPbfL2q6Q4SJHecqD2|i7VN*b(Dkeg3Ab4#${Jh%RCE+L;$Hw}d0 zPR*^q8jOb)(dzh494Ltuh1aMVc}Ur9|KVkw%qY}xufG9)gJGq*Hf$M(SoAUBmEr%6|%7xg^tINx| z52SGkhVVN2n=qHT6*lERQe;7pFBwWLPbm(oJwB{WtiOKcwHczrp?d#eXm5)z?}0Le z29Cy*WJ}&Cr)@b#D%PczPr2tDhdYByR=#gL1y4DHRySr~N_=&VX^94Y+~%3mrq|2r z?mwh_aVBgA*|IO##I%}+^!auct^n9^39oMNoqopi( zXA0NP&U5e|arTDL+3Q04)}>ha;t@$Fq5yY!l8=7M2ABl!Fc)55a>CeUGDD$ zH?FC_euqkKtSHg5aj!{mZ#&O{@S!u^g+LXmb0wz8)Dd|Nm-TQzGk@M+Fa z()batG4Vg>@7AxkRJg;fIQnn)qHMgR$qxBb6-a zi}oAu!&F_0MG2hyhmv&_E6{64QSw_H2H)Q_w1g zHZ;)RDuk;SvY`Gd6c|U>P9In@YE`}^A)}K!(gvk59L+e*@wuIiJ-8X$f^*1 z)|A>^7Zr_QsW_p@$?o+bQ$x~dcU;t+v@95EoHAkHpuc@u{L_%xOsP22XS46L%8&H1 z9969~gD#vJVnu&AFH(0DLhI_C_kUFi z*4m+WizGB%5mEt^l4|yHVd}C8v7aaVQJkMuV=lC0ER*HE4ms#=pQc<*e-#{pPv!{) zjXurvsa3n$k@QP(?9=TX=4-9wUy+iH>IPDkmS9w@E?ly82yn6{X~0Uv69Xk4et4+c z>-tQekPQbB=(Ej>w`w*0&G*M*r`1Rw%O6VO(pW2c@mHvn0>*Yp($$y1s#F6(#p9-o6qtnqfpz>8?jSiq?jde^|!D>r6eFQ zD1o51c>?|I)23d3hkJF$L!R%E;-UU}ApM^;&+8|1&i-vd3p*!}%WlX)fBUqZ*I%9O zv)LC~rB^b7H|B{!_cOizPB7^7210JEEoV@ZU2t7)fj|j?Pa{S76NG{i0>fRij{cg> zO!?=aiz%+c+|ubVAs-hv)3 z;Lzab2%x{uv3;oIb@bOr)rj9b+Wf(EN`r9@{ndNvp90H>udF{bkSP`dpN5I@6)51- zA%S)D*Svf+?vq5XzcOxzE_b#`=E1?Z6Q{EfxE=zB1km3@M7>?Gi2j<#h;rI-za+bY z{_5u_O<)=N3s${F1KKk*0W(Zk|MqFwMf7*pZmyue8aU<=Fk8@l1{PY?o&fsWp83rh z_1>?s+8i60LgZh*8uxFbETX^Whf~;sz8L|yeHsELlC%Ep)5>0$rqN&X4$shEW6_gq zGw7x|X}Z~Gh@e%Y5HO(t{q56;i|DUeCl2kIi+yLje69 z&Xg+za4D?uO!RjYr}bOVIy>l(c#p!Lc6Ls{L^;;KecEmX{q=q9(=LUr@?9HxYLOH0 z-<8{fk5pJMOON}7vb@*iK%kHS`dbL9pUYMV;J%Oj*y2Jw-IR%g_YkA&{h5|MqFw6#}??FY(53IJ#S|V7_?Zlq`Wa+z)Xb(5E3*V{A5W<9MFNTc$A{?ei*_+pub{uN zA13M1e?8d0S|;Nf(+_$|?>QIlLXZ1rH3l^e&3>0a65QfL^!HuUe5!qM{T*GQ7SvyP zvKF=_63p*neH!)TPe~va+$4?u_G$6y_17!Z=sUE&ccafP%#bORU|xha3^_F!fkboT zL-e;#TQ9D^(yu=4QrIg0{C8sg6(4OxE2_jnCQq{kUFb+$HUWX$|3eP?+oye}*WZc% zbk5dK_IAYo?sw60sMZM)9bJA;L!V%=C9&z18@cX)etc6 zx9c(S{V_rb5Ez0$F1sNI{q56&UYQbhCn_9LJs=dr+cidzoYx4 zS@$jY_i*LO@rJx6Cx~yKF^5(?L?Ebbo)|sWJw)vFVyD;N+!aI41U~s`-S@g*z10AH zFIdwOl=m(E)cYcV5ZUs?1hMW#u+LSE{yxXHP07i+PXld{$G&awQVRq|A&|>%$U%Sm zG~&woJJTku7Jd4lynT)`S_Ody1cKV;3G}xC{|i-2ufOIc;n9D5@`Aa!1p*M5l|U}L zAqV~K)9BOd@2B5K(z`l5CG68DX%z$@aDhNj+dP5(Uf|i_mg)6Z4D;{lNPP98P6NDD z0Rad=pbddsc0&&O+r|WEYgs{m#YEi<8_|+u#P_V9a6JSd&^dviws`{m?bCLP=x?9! zX%z$@0D)Qra@h?z=x;5^b<072>++;D2tWV=uMh}onRwyU;2KKmY=#2n4mw6X@?LlFcqgf19DEA_zbL0?!f1WjExYzt3U6 zQ!@H{haUGr00I!`gg{W+Jc0gpVxy!P=x+jqLkK_s0wWU0WjExYzkM1M{q55(v$wc3>mYtLEAi@iFx7tMnJ1R$_WK#@HBtv3a8-r?D$L?#3v009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb z2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$## zAOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U< z00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa z0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV= z5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHaf zKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5ZEQ~<;$1dd@>;b0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;| zfB*y_009U<00Izz00bZa0SG{#7J+~K;~&5L^2<*@{q*zCKY#o7?Tl-+ue;&p-cMt?zC63*k1LLoEU>fByB?U;pFpkKSudKFU_u)HQ$o^;fuy1O!S5 z$ZZmL(xEa-?&TT?1Of_E3PiClegFQQh!ptTPeAxS!@?4_NsjzktCHBI57S!6XgO0@ z3zscUK(4auQSv(0FN^!esqRZ>cO#X;(W!E{_!9vLexjpgo zvR&lr+C$UiM;MjR;pL(_zfs#JpPWh^@4WFeuO9;1o%`fST1xcO&T(4;;pc28t*j!u z@et5-lwHINCj0&O-;zLHQhZ|$HsnA!24&Li zl{eUE?%{8kpE?zA<%ubsJnv@6nXA#x)JIb?QPSt@*RO$FNkZ4_F5Rv| z<`|f!*Xn6PlEVuGAbbH@xJ84v&2IB2GijwW@q4_1^UcI3ddk<<^v%LMyxsJ7*{~@= z)LR)rUK--q}+M2r5vYvyp)pA-n}OM>4jUau471 zR}SWJO>rR0}loI?Yy#iXD2JtDMG#E6wspr!ExO|1G<|w`EQlHZ}j$Q`f^` zVz4}Y>eP_$$H5GiDIKXjc?cIWm%wQ+%iuDnHrc)WN``Jcj4hh>7j|T+%Y@F@Wy;NG z+1GS=rm!jFb}qZY5NhX$<1Vy6Pt4>>RPG(yp>2eQ;gJL)62JKOAff2%o7BRoxVCX6G z*L}9=pJS>ejEKaP;%^Kz<(tnN0n_WzokYs3-6Ye&K2Hsb-M}2QM@fiy{Sd;&1X@vE zm}Xa3-q1q%ys?)~@$345l@ez0D^_)9M{&Kcr;U@08#V`3-pv++4$LVX>Gk0mHvqyh zjX16Ges<6KIpy6NCdu$kns`q&Hcd&|FMegIl0pW(X0k!8Y4G99({%auQ<}pM`lQ34 z8+Rht)u4v(t~t)`Im;W{tfvllq4mUhw@0gGF1z@Zp=TP@hYoK#TXITMRt?_mBcD-q z+ea%_z4Z}3hc8#?0=?;>xRGp+k1M{DIZ~ei(7334vd=a@+A7Ud)p3I*Ii=yILHcNu zlEM$S#H+mVl~g*`;mV6&St@bS_;8@7-e*T*+|4|#ajJ2>Y3rt{&#g(N#o9fSf*-1O z=ff(;7;@HBhwAnUJoChYgf(6c)h&S1%vr;^xliF61PxE1bNwwJ ziNVU+3tG*|?*#l)_Xfy$Vuhh}iq*A?bFd+25yBe0q02te+q)|zkE$iXolF?6`RCcY z{LZ|>``H4AyWVfV_pHCZ<@wl@t(Wrc_O6&S4>^md!_&+I&pfdLVTteIMy|-{nhswo zE^Pcd&w~B7yf);Y9!))z?^Uc@{VjCnElepi>G~dM&)tSx6hh7l>d?TrfoGnWo^aui zmwt6S*bBQLy7ub1v|JQI&h+Zg#x8+p zo|u@h7PDFnUsg3Dvq-1~L@4^++F_Yf{d)L%W>$%kH^qlmPK5rZ|~P2?sB zITNcxOXh)Ro|u)e#5eEkZchK=8(hUd_YA$$W#N|j66R6DBAd^$>2Uh%8ysA>x3@3m z8$NlD0{lENt2*Qm9?i+YhMZXmPqXq(9HT^nrBKOT(;RAL6kIn?%sugljp*g9!%g^- z@wmc^bFmRSN$2Azx6iU~dcL=8hq`mKzn^X& zi-YVE2HmFw;`_Qo>hswS!aFfoe!2#^w--< z!%za9_l}&F1km57X)j3F5Bv#Ul=TsKP5pg(9Q9Max4xXelcxH21qXcrqZ78Znz5id z)IwKS&Vq!!{tmtQycyj`;8~xk`Bi`6aG2mSZ~abm&3^}&AtcFoOP8vBiRfr`KOOhB51c`ny!D=wE;R=JSZZJ69zXcUXuCBTJ2`=S;I8 zVf6PocY3j8v!%IItmt2VjivM#PhNB(s!j+js16B%rw$MutCXWfkb)L-S#+T~qG>RjNAXUbB$JtFfh0*tAr$uCH_^8i)F;wH+? zDn<)>@~*3N?%tSb*J^!cVyvg_vLNBk15_1@n?FRjp#CoPRIz9G_78v6@+!_xA+-oB zs1CKz6_&Fg;hqCjq16sAGku&=fBiH4r2@M#y$1Wck5~8`k%uFNm<>fq$XWPsURIl+*YNh;H7pAYr3TqA`d5`k(l_ z=`$VPj{XLtC@`8q9WHw%VH&1s!z)dqQbWMl3;i|R%1b`Lsm$0BZK=^3_=Sq@utPyH@tx;JWa{B_+3)9E;?RmOJZ&RIp zx&i%^->3dcD9y{y^3_-tm6lM(N~%tUkNItL(cFw zmDFhXqrVBOYljOG_OW`7*)Qwg*s;;yK;v4JxO10Z_J)Ran~)Z3{;+La-{COgy~Zf$ zZxw?sNZ9Ld6{@cng8s&ijs6B2jXl$U=P0ylpoFFqdXO!T(oVHT*&NgLPhMf{g8qJj zb}D~C!szcQ4;kWOZ&RHeq8C*fY4)Gn$4vd@3lm|cIi*L^^0E2e<}wCq?@LuiM{k8J zNZ7~f-VAiDJ*=p zO~Tt0{oRK7TQO5lL-f?cgc@^7uQsXK+ef>*GUfJ3e#z>TCu>zMmDEQKQ)wCzD!JdWe}) zJ>#5P<0XZ!sF=2nfBWq>$?=`p!Y8|onBTcCjfga9^MZu^@K5**dT4&5Pjmi3J7t=U z{suVxk7&u9Y2WR-QYxZFGClaR1U0LUezPBlJLBf9Q zx555sEmBxx)<>&;t8nx;kT<3mrEuB12`zz37M0o!ez%>W_UVI0=xLlVzJ&h9pf0Bu zBs~34GIMoJ)GxbA&o`pK!8&F{_oKgRtyYVN65NTqY8qgusuuzNWC_!2^tXzw7bI-- zSMOa^q55ti<^{8Ub|C8_LVq`&e(R$v{Z)fYB>3GWu%1DC*HZkPbxg@X3#voixO7jo!{m4R~z!3x4%~Nyqxtp5AnOZ^5OOZ zCya$(L6Shf{+@O%=gG^-14zi3RUL8&kLCoPd16+=bL+49i!&2HsPg(d>#QS>3?u5V zdSRZJC@!_sIK3EV;zJ%J`<&9`j&Us~?{CPNRUNK@x_npQnI~o?Y{u6FUDkeGZptl3 zUy-=%C!OEu_4gByJNa@I{}FAq%764-Y$;~Nk9qY@omFG{w4(@kTeSJnHZ`MU!#Ol{ zj@LzuON5^02|2&HkyC{PaJC6=wp%?eTC>ZpQrrgjm^)cEQu*O%n9_o4{t{0 z))D!3VNAPr+2J;L!c*cq@y_$cFzIr9IIB8bbDqn0#YmI%tc3kYzf7`+8@1+2j2I3_ zpIUgl=x;EzNoalNF}`^Aa0&cqIMUSAaLZ3=!+d)2l{4fW4>^yT<3&GgTy@}?CuSu) ztN!|*^_zI}SwjZ>&Bt$^)3g4{h<;$II}fej3x5n`y1lev+P59iG5w%1o%nhqDs)I%Qb(e9CX2P5cu9n^Dl;c;tRccdoxO<)Iz*dSTs- z-$T*gVCn_1y7l%POhVf}Ig;{cRfo{`Hi-oZ&!@kK8)*Fp-kaWj7`Kg|uXAb$H#q#_ zZQU22w50V8pw+R)*G>N%^maoA{jFlt1qn~4znYf&kTw0{R|5h4H3K=E8bW`y!>pa& z(B|EQR>8G4qRm&2)r=vCRS|;SLU!SAndt8>v9p;A5}rwa55-sZU19c){+fXtPK}}_ zC0_-q^)%LKJrWZSaag`{Dd&9k=;p%{VY7=~>m`6N-oO6RPpytb|98Q3@cw3&DuxLFpmyYF4ZV zvQ8lN9GaPw9Apyu0^ggb*e;j;{x-dl9H!CjA~Pt;8BqbJu`j(?owq6aySc=R2D(;t$rF}1WYtZhzlP_m>Tu0b zFW`D~L` z6JL!)fijeIc8<|{*bDD1hqrfofhM2EzE7N5a1iCzH(=#y`Ss+SC9o!8)9ah3^bksm z;!{?TYHLcM?PAHq_R{Q~Hmn&p{GJB-yLr?px9sg=nYeua=gtV)?p@(qdxs`A7}4KD zdL9J?SBY<Lf+pud|b zjaSPXr!n{T6};-hN{AL8M~R1+Scm>5tgam{OZeTdHW=(@PiY{0+UvgN5+mM){%%$? z`a561+*J7HLmX+YUhb0YGKlhlZ(`AW?v!`GLC(sAxA9wj7HyE$J*AefyyqN`4)k}U zv6TJ>2atMd)3{uSHE{GWNRNcj+`w=*Vd53~yG!hBCWJKxHGVY*mPeHjVZ*J>DFqN- z(G1>>{%$DN)ZgF+8W9@Hdg7zeAr#3+`O@6@t&DIZiCqFFl!@)`Eo7b|0O1^0{)M2f zbXlG+xyhToat`{tSzo^KX+#q+R~{hO`u@q6l#e@ILz>(L;RJ|3)M8m5U89+{V*a*p zZl=!LrkQWynrG49&Fe0zsKXt4CHF$Ogp$8Tifq;$hOj>+Sy!=ou%&%7 z>C2}3z9q|^)pW?f6u?Eu7zpU^B0f;Do48X&n7c(mco)lsOiAR~hsav31clv1R)y$; z)L!6kJQ@8J9Q5~sQ!Rdr8B@4Z72kkx6^wBq5>P``nk$*s#x)`vL%W|g%-4w(K)CNn zln@BuP65S32?##{RslZ;E9K?uLQl}%%FKa>9Q0Qx)`9SxkF8d67(sagcdFtHIoOZ` z;md@zwiUfVQVD&{pD#XK=2>!MOgl-hJKujR^pCrA`n2Lc^PbXC4 zLkL%=O@Yr5h+Q{Huj9!{$Kylv_c`C2wdB};lJq)b>QUn+RO3SkKT4j$>k^1vH%YJK z$w|lKL-e<_16*oiX*Op%bd{A%q_#PvLb5#IBp9*YV_}qZ5MR%eo5r_v-l3rv?J?#bw)%Xy?Ps6ADiUjlxuh@Iz^dg>&{#JA+ ziV}f%5GCnF#?;epkWh^eA^bFa%CAU3?izbTDZBP|Gv~ zVmV0Cs6!PiCsgA@2v;FYA#DhtzvyopPg|#!SPqgj>QKcE5~}ebgsTvykTwL+U-Y+) zr>#>7&M_8A40ea zVG3zO0R2UO+j!bKwZw9eq)~?|Zjexo4h@gO&i{=#S=h( z-?h$&wI_-YAEFLb3>qU%(h#mfm_phR@aog14e!?C3H@s6!QV$4HYjgsTvykTwKR9|*MZv~_Ap z6d^uD9jdrNj5J9@xC&tkX+r?@fj}EiTc?&p5#mGCp^6*CNRu>#s}QD;HUv-~2(;rQ^yhEesP1Y-Y5(x^if znP`B+c)TM8&6xOmRJswH0n^r4HByHA%v?CrjRxS&|mboji;?s zODqRT8g;1R1_{;p5W-amQ%D;E=r8))#?#iRC6& z$B!Se_a!+W7N_==bRKCu(X~v7S zm~TKcmS42XxK;0trY#eXs$y0MSHVajJrMZx6Ijacp?OcYL4RZM(+otL15ejZ`STG# z9iFx+gr6o%`7H^2`}QqyY2~zRz`J$*_SP%L)4(%N zK)4EF3TaG0YdvYMyjQxj;JQy;{^gfnw&DEs>(}3Z|GhDPs+)#DE(#$Bb*N(Hz%x%k zxC&tkfdB*`Fd~6m6haQ_P{p8uXP$s?6~Yt(0SG`~L;{k4To<;SMc%1++G-GfnlR-< z00Iygk-+Zj1kzu<=BJnaM(j~5fB*zKA&|e&DE*acbke*DngQVnj7S$C z009U*K|ov0KmYvmw(YF_(gojXe1d9RCWK=eq#*zS2tWV=5P$##AOHafKmY;|fB*y_ z009U<00Izz00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz z00bZa0SG_<0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_< z0uX=z1Rwwb2tWV=5P$##AOHafKmY;|fB*y_009U<00Izz00bZa0SG_<0uX=z1Rwwb j2tWV=5P$##AOHafKmY;|fB*y_009U<00J9WIP$Gt>&!2YFROJvm4k# zHV%j#KQ~VyYQ!WR7N#XF7IG?R5yfo+u(^$hpmPk4Nh)(ll>Chaw}=|FeWt-m%9xV_ zq(^y`c>BzDj!Rlb8A3QDsMMqEkzTK`+bi@WEfe{dRF;p*M!#!C`n5JUIO5$zSR;Rq zQC=6oTHZ+pC|*3n5GbDE<`GHT446qO^=^Y6<@0JonGmcBhdQdlfy!_wlIpGOtzB8U za=9xJbuC3Y*(N!vyLFqk;%PJ&`ElY$>C^F}Dx>tpKP%ck944y9>zAhrAO%YxoX;eD&E@z|Q#sxW53t0`{F&r{GT)knb;mzgGaKyyvrjTLJtE z?3AJB#^$s`Vk}I-crIge*(D49NAB0b?w#W1!aKlI*n{6xR>I0k+{9*rUD&bOUjw}b zkcx@-uT)sV?U%B)X>JK|dXVFIuUX_7#&v6B^U}(tu4)?3)lAcZ-O-4aNc!SQO=H^n z9&L*r3?-6!ydmsMB=iK+n%XvM0X;6@wv7$pXhd)Gb%b>zEq_WV5=t^S)7Hjyy)_l@ z^!atpH_3#pv4AhBZx2NR(YV6>%+nYG(7QmG|rP+ zqT#ToM~@iZZ%YZ8Mm>>?NBa!RT(BXoXZ&-ZIqD14Z*0-FY-d_0@=w*3NCx~j-bj_T z5|tH8c0nni?a})*KUZhk&P^Ly6D$0v!?>r1*w#d2jf^$acv?32w`^$jHTgX}ks?4L zsRes`H54NejrdTKKCK7s0dSuwzGEeUnz>TE^BjH`Rj$ zyxfRuOI=G{G#nAoNpk|d(T$I!igb$E@iZhACjaP-Pu~aPpG6;~?}!t>mK*v?NaGq| zT7hP@NT(^rt55I2=e>wsk95*WE`AW7RFy5x$SdsELLSL1H77KI^0`8!-#@#ZVE)aX z#bd_fu)xQIg?c6&G2y}lPdjG9jnWz_!zNsQdnx5*6KTr%MkGbm%1O*kriEQt3O`J6O{vSJfH*@TywaEA$>Wx}bQWN@1BDG~&& zFyZF!NVN%{W|FTp;qy(n+l0?E;a(FircOMy#e`pDlHXy%#ng_cdI#Ps_72&*9Zu#w zFr2iH457Dp2VN{bX(*4b=s?nFc>vGSd2Ymr@1n%?`B8-Ooy1cYOP}TZ7UHRErH47c zo_Oj~=_8!4C!V@e`f<+ROgwd=^dZhKC7!xYx}Wn)h^OXD$2h-$c>E9bABT6)Fsl@oVO8AT_Nq{{GTR+r!J5#3+X-m{Q0RwPSf{z=z$`UdGr*q%eARcls{qP`njgwZc1i&pGdq=bU%&^oS4DbG(a6 z59Wz4z)&wF=3Ow}LC=VH;GPkdT0HXioIfcQE1>8deBC>E>O>6c+~vqJk{KeM7b|Yx zeUd!FVc99qsB!`YU?X3L!1E*X_75ko8`;JUo;vYZM*Wk|M@J#cF7By&mO6LcvGd5y zv;7zdKV@um-f?=IcnpnWPT0VA)3$bsS1bt8%}`f|qT-%6v`K=7>+2%>O1 zxtRS8u%$;mqi1+lsd8#hc|KHlg`D_={QMQPGgb1M;q)KL$dLUg5jb_6uuq5NmtYdg z%urrPP@7r#uMOq<4ds0q?AMy$Gp5rMqcC^Ti=9*v&U1yOO;{fED4-3s_E^C+zW?V zjAX9=_GjG7OO(tj;sANMe$2}UWaJLR%Lnjs{`lj<%NbGyKmvZl%YB9y4qY&kx&GG- zFTsqLACZ@1K&i&id>^Lw@jiP}*2E8xb`gV&0A3xpkcmOw;fHyYQh0IpnM8S+%Em+= z$%yhiZ8M4TjJ@-xjMY0ybl}BWQ>Q=e`5d`o7nclqKKDN69V&Whm|hK|eDw7mi>g^`cJ8+{dBwPo<0pLqvUM|i&&xTIiE zm7e%#s+(`YL3#m(&PX|`Rwn%$CGDf6@kpX^22URqlPCLBcu4;aF47O@DtRYv$atWZ9wxWP;=x@%t_8#tEo%l-*}*m^{uipxV0NoG=8k6~?auW%~yLq@3+Z zE=1`Rl)GA*dCteHw8fwr`8WKKuZN(&9`#vNG}E220bi=yma+3152zl8^I%cEqvD%(ucP|Dab8F5 z!1&D$cg#^+=cul8RMb11kb``^qnPhg?t-0m*g%@WkSMk9z8L=+B*b*pTn z3K5axf)+j$mXOx}x!9HdJuD7_y|LHEqUjcpwzfQVBi4G8X+^zBuDfxb4tg zda^I3%W9d$EME8ptExGQfDPxtO`a_H8sx4 zPSDz$Dnk*Ruj*jC^>|RP^o7Hf{%8aZ9!VyE#-phSautNRWEc2kI8oUh4d~%j)RLIq zSL(gG(VqBD@qh;9LAH^sN7*>C4yBx=R(+|rM7-Ce-fl6>rQX$0l^WIN&Jm^4fot>P zD!Vl=UX+<)x}InT((bItKEr+)lds`y`6;+J;5I`%uHpo;Jug0u(X`zf zRD4e4Jkgw{vKdUy53})W7;RfxgNj*NzWI!bS(rShG3%&oc4q#Ujn852*l@8173Z-1 zdGTwlqMTP5y)JWu%C64^fvC)U!Z0SHGUpg$im7bAi5rWm{6u$*rx?Bdir7b^*{Ctg z$cOV!4$G})Ck)uoe=b@2)dGQ6Pj(|V7FHli^49gp2H=XRJ}G|`cH*bxY4?4=$&Os# zkSv9R_$hh%&kum-E7vnzzKnf>9W4rS9(EdW1t)-)E%@sKXQDqFv$DeVR)T^kbaTPd z&u4Qyw?2(LY!SG1eCgayZvX!(aGJYWgFN@Q;(u2_ z{>KII=Q!?QuR7e^6s_ecoB^Ki{=-=ze;v+MD0J{As#j&qiTe`Par!#sG55;6uVnkC zxgDWwBA11I>phAu$c}9e>#~gZiOBC1^xMY;F8jk&;8W2*D@3{Y9tZr)<+#bAh^|4# zrn21kEuA~(tN)b+@Wul8#sc`R0{C3iC*^-wjBC062}7RBJ7OvC-39EVxSibZ)T0ID ze^>zj7xIhxr(-X3cpbRY42bv#1?;HE59NPY*r^cmGk{Znv-Y0_JpZ{4Hljb|yN9!y z+nJk_&-DfD>;g{tIc%xVJzU!K@YMo#9u)FN#rrmHh_feze7oiS{1Wg5 zkdgb3LY%z|+$k9oReAq30U|oL0KS6b4o0V;6wn+zcnZkVr9-EXF_T0ATuzR$Vn`%Y zot;>2XxjRQEn0I^Ya6Z?jol*BlHHo0?h)aBkrs$*!Em(07uEvUxK3!kR4?;KyJKNJ zsRvvuSFZf?{6hSaj^>NUeSNsdl8pDU&bY5z*8-{T?mnoPIF07aS)xhY2XgsiFZaD5HiK{|8SD=v+ zI)Lm&64^1`$TF@MX@Nvk>+(ecxT6&m_pG#?%c(>?Jb&3Yv$8I2W#8v&f(q9#-N+)B z=Bs4EhEzO`R+l%&%r~b*p~VFz(#&_)j9=Btx}cS+u+K;TTPK;nG`W(iapQ*5)q0$yON(Fc)!MzC;&u z1^ObeXHbl9p3;NMd!c9~i_wr4*TX(i5V2S|$y_uHmpA{_g=Lw@K*ljINx-TQN)cQF^< ztKD=r(iPA*h;85Qd0kHh~VPUjE!glE1> z%;pA%AU;%c3@-B|S#wwjhPE-~cTMgu$ouwAvoPZLjAexyaAtkE4{@t7xF}0HSHBVI zI3|or|Lrz65bU=JfYK?@Mk56|FEu#EHX%Z1B2xdb%?*xWe}fZNjd=hCI#;2xOMQ8M zu?-lBNPW5gaZWgt=PnT8!CHTJ0L5NVCjWAuWR7rT&A;>`=^p6Q8H(iPeoDL0j~Q-x z{wbd_{{m*lw)I&4<-W^VAt=jftv`wHhoK_;>V-kMKQkiq<+%~*&&E&sm--I?qdJl2 zR&pP$j2Z>O+W*LxIShg^>&yL~YN6k6sqiwPEa}4*eYr1mWRf8$^DERc`Ir2+E&6hu zFf8;Rlm!zC(y!G2u0>z&8@AC#1HuG@WS-XYKZO)3Vy6AYJhNTsAGVa=TAm+S^yR*l z{J)pBjAtWa^?$;mFZZ|FXBhHN{15)mSoGySSP@PFDC{yw=4mm<-av{2KQT-*`(^Dy z-&$TPPX`;NCVjcD)^(NoA48Y&B>l_%x7bzcUxqGq5vect>E!=8$^U1P-ALwN_M^uv z{^fq&{WRDRq`bk6@e;>LLRS9ex$hyNe^x3AD)l6#|Kl;2U#=V5#lV&MlxC!!a_4Pg#T&_F7>BaaLOwMNv{|B20HdUB>Y>;Z!J${0sVGyu>Tj* zkuYsx*-ZuX-xXV@J!4toF{}Q%0{Xkf7OU5yU}0IS(6`p#_rz8#-D@)k$x3>M&^OCa z{D|1H?YAUY>yO$;w!K;OC6~d4r6ZAOVR<{scb{3m+G%jb6AfApax;Fi|HKoc|`&;**$CddSu(BlD3kX|)N z2r5)%ChiH;b0XNpLE)15HY1Uxv*Zn}Jum+?RnyegwkB0zuu0Roo^{PN2$ znN((C`_oT9Wy-lJ9A0e%p1dc?FdB>fd=05+G>OX(W^foUz z^}m=rFV=N?GB8V)|1mu*;EUO~V zsnc>ofWV~!!)o)igPm{ZQRby-JnH5{NX?w??a#27{K)m>c@Zz#BLp8+BVCsOfv*ur zN7~ZyCI;P|B%yYA_c$x+<@tUKh-17OefJh2{R9YHE0CqsmQa#MoY$sv%iS}^Xv}5{ zg<}SR3}dzwigO7NAn?rsnG!Zelbd$7SvEJ-Z7kvyhh@?J!OdrQB$1V$=}(qWo}KFl z7pSZe=t>|xNn@{j$5*g2x@dW{-6(LvVHxD)XXx#xe>XD4G=2V_h2J4Gy!>}qU7rSv zVS9Kzd${=U-@U#Yb;nxqsR2fKd_2+OlW|>mr{(hL%Jvf=KwvJAPQEd$q^p^q-ua&P z+%+QXdssT~M8+Y`W~gu#W+F)9c$Vl>#7WQ6<$}8hpv2t#nXfJ5v-d$%fkZ|0nm+`~xD*uqdeP0R4)$TqNxm`I*@G}Im zpqHO#(bXTUHT|j=V`jdglIP?pwe#it2PYxqEwVpF2~HGsi!uV&t-! zP4}5`sk*hmut;^sPPo9HVQ@Oeu`y;ND^b~5IOSm#SC?Qa(-tk~SKPo8G{?YLrWJ`bD4Of&wnot(a12N)@`@p8&7e$8{q zX%@C@57BmbjQb4%_oaLboxq^l+j#YoIq$rJJ>coXOHJ_WnF8e%yxtn!BAM!{+TBMN zi!?G;pZ6Z)o^-#9uGY!HhQ&%6m)*RXSlVZbgCnnP_MY`5vOz#d55->I;LJ7 zQOaL(&GHIfYS(=o(&div&zWEh@=VkY#7u}Wb zynI*hsbZ!>NQ_>6{VgYEfj1Ar#vW69_^Y5Izjla$--vf!L~Zh~nw=FW4MsG4|PmB|4) zY<{{u=Ln>j(%4f!Z`b6--*ak+yX-Ddt-34v+uaj+qYGA}%*i1p&lmD&wVJBJ0a->) z*xml!vBuf=y*mHItc-2ai1Kr|*?G;-t;+RpO8tl$|(dea9EjQ%(rx_~j+X=VKf^YOCf(%Pu(31Fl#m0Jd z=*Fi`Aob_a`|fq|YNOlhM(1Bg{5{|N%sZB=Zic~UCguV6Dto58K8Lh@$@e9K48NvB z-ag@-mu6Dc@>13Ac&o=Hf0h$7*%W0moH_ zy{=sD#8RX7y3zU9sn)bx3|7x~yUQKNzW42h_`9?m(;VJPPIn#}T&geBO;a-6K05M_ zlJjNTX)=cG&MRIu3mM5AI*b`HH*O@IbNuO^TRaXBe>YYGr(Y#7ZEN#wgR7)5-mvZJfhYkr|5}$OoOwW5>#jSSuK~8Avd={K_l6hsA?|CV{4u7o{ zM~7){Op^I;Bh*a~n>V-V9`Sc+vF7!gDd5}fBjRuR((;46w<$@-b;HM^j5#7=zaQ^Yt;y6D^d)-m|-Al5=>r@+H&%H;7o=H-*y`-bteOi=a zsxBnHbg-F$UR$^=Q}u2;|LXelsNMPc?U>F_8`oBn#x^egHbOb9D}idT$N^m?xc|gd zNz>8oyQ+|A{;Bi)v_IkF@~4v-`?ZW2`do!>O#I;AZ6iu-{ZvDS{VAaSTU=5o{@$XP zB=SX|8Z5f)I$ko;&##GVg^p2g$isU(Ei$Jw-FP|lC$=y}w4w0_# z-@Tel^~)nKY1r$&JHocSh}CTfYg~EgkUb?>efBg|o*m2jxJy+BLdV_u=qp#d=ss)L z(JarnezkC)k&;`@|utUt-)w7mM< z9xKVGjXsmzlB#MQ6MtJ6`#h#vxP2zO^Hf#mbXhLjn1#m9bLft8aL?-)EiYn?8QJKz zpcR=em9$E7E*JmVJS!tJx`=wH72 zG-_k~T@-x#e0Vx7#EcE9>xW}U+R5v zOzx%eu+)|dSIMp`?nC2m`=7T;far7ObFP|nHioktmih99K`o<&_6d8s$9ZNi-&1b& z^AMKF^5tnRCt#lDmp$dvd;YXqSbFK6i?5uva^Wi3vfigp4~oADI_*7wrY-$Yg58r)j8u=Xai?RHx|`I^3S8`DIUsX>LqXxr-`Y6jw>``)9mb5FD>lk49X@!E+-_f{T9`gnK9Wf8=ZFrFR7jX+D_Elk=5q^J@L0ZbUddk z*tdF=3-{#py?wKG;nntyzb#iAI-JCa&gUuZg;H*7V+VWAqsc|<4`bT0(N*7AZtT-! zzuoTnb%M7Ep6+a~c)cB2Ew!%d*r9sU0-bN)aSB{6T=92Zb!vIU)_&#o_#14 zlneKS&h4DCJNYhU)uD@MPg3JzZ2vFGv}ZX-7M}G?``8nzXyZ(LnyPWTpZNRs#g#Fg zEgM-~>9c>^x4A8b4cnoh4; z@p3={R{J$?ab!!2JGzRtjJgY@(@Feo$wk6zb)<2$_PT1hZ*yChhU3n9cJA8UQuhiC zZTP6$C7Ms!EEjH{&FxcO`q^Jr9jeNr)V4&TKIbNjviWjwa#WqQ9bH9R$cYx^r8U)Egb#GGkqo zooX1mx-tORPKei}G z9vEMnua5MR-`x|r@q*8eP%XK8-rCpODp74~=?UMS*zL}8$9`z%)~(4d2|GFd_Wa$D zjh_a5T!YVdN@$ft|0TrQ@iS6g)J%MUI~9v6RGCclY9)d}W>?_{=Q zAw!6l*;Dnb-lo7U5$f`4ygC6bx%-m%TkQsK*Atd=B>t{$HF*+I4jhZFTrQ^D)w)G_ zFEbt#e_J}eAq-U~j8`?H>cC)top;?WdGBfp+>+o$Rj#XpTXHuq#ICZiS7K7@%Dq88 zz1K=$xnsYo>)5NjF1${460s<4LFY?4>J|#|clR22#|u^?=AwF1z1kg#8q<7o{LRX3 zA?OSry@a0XBj5z|#>{R%EaSTJdiaoqYL9)RDR8xQh`-zGRS#GAw)lHyztKba?wE#Z zpCJA=YM0}0Vol?98V_4K`5i7>4S9=}I~tSv_OO7`P`%pfboPJZnR&0?D+QNh z=4jPNkZ+^*{5l)=RA;P7|MahIRBu;ae8|<#$yYg@Eu~hzLeHPJ1f2~3dd|XLX=|Yn zfA`Y9^>wQ6z$~gK)gI>7R^`N>miLw?r&(uyyOLae1e{QH^jla}sHEXj`acyxOOJQX z)c#Wnv%e+dh0{C#sHF(LWTMnUv8Z3Yyy(kS_e+ZPh*GFll|}WWTukX#kH|tN*Q}0Y z_DW~V8%HUKPq(W+0zPz-((>Bax-md?3cNI?e*#>+zuG!(-9V~6Npklk9d!%E+u`x* zs&({<<*NH7#d-vCwW=(dHI$3#*4;}LzbaY1LgN9|#oKbAsXhWuF&+2Ed8$!zbuZl# z*$cyxM*J;@Ra?ic8%VYOuP)gw=9iq?LUBpLR^PN-b;aM+u+^%vsLLuB)2+Lgs&G}Z z{5{s{^@jsCPJVNd>LcJ3)1pCFW6E<_l_K2Mylp)p@WBhGdTx|@RE%WH@Q_-ngwf%;!@vmJ? zFZ*`8x(IXCaJ@P=zjb)32A!dGye+ba?W|H*D38vFLr6Y7cWSnWd>MOKyxW)%Dv&jk@J&>|U#6EhC3TiLaJR)oQPyMKvYU z1FEe<{GD>$cU%0uZ`qxn@^aKz)G=0jnDcXY<{itDTjFoaoNm$eGbb&lcKCGBHQ!P< zPJZ`&-K+Y5d#|Cz+bnR1`s8RiAWP1v$6pJP`+taiC3e_R>_FH`I z70Ugv_}gAF%92}RS)PrSFTNt6w7kvL_&~WpRBgG**Y>--B%tM4`T0xG;&00OrKBGD zYc>9+QQRxz)mD73>~xjda#Qv zva_fHOfR18>aaPt*nRRlq@lWEzt`*5FIg`9+M-=Jz4MQ%LFeuRjCTL(%N62pJLcn$ zEO!fwy5I7p(g2^0IrK1}{+kYJMfO`B)UIyMjeX|o5ZUsU^%0ZbIJdYRbn8#0Tx}h< zZXk_y=@ZVA_E(3UD^{zn^{M9Q+T`8(?&WSl{B1AXPmy=nzb^h($I`iYVoiG@Uydx7 z{+Of87W2|bnqhk`sx#1Be05}h$;I1WtKYXhc?r6O`fWyTu~YmVi>Vr|+8fb$&1*NR zIl4A^x4wJ1TM&QS3wMlGZ#UL8y6O~iV+hL}@NH_#I}_TfWBBS5*xcgK8EAC?u&8dg zSA$PSmK)jt{^{KQ_qW8~^Vj?@ajQnFbzQ+Fc^Ph6&C!KvyZf!H-9mc?cf3^lP5U{r z9J5w5x|Tj|dkCvGu21>ObLUS{xaFO(jU$I@xwkAqZ&^C1CgA0OYU_ye%PBYdwWY2` z;6^!Goz!ZBTG17(PRuSRR&%ty7uqGAcf3f|wmnnT9;W?Lw>z>rkzCQ$CqjLSeZ&4; zIdb@d!rhBF#xccBVC!W&3S^WM^% zO_zN4%KpX>ob~YPbMVBPPj7AQm5b?hs^3C7Eiq$|Eo@9vey{D88as~A?v=HrsV#Q} zDSh#GDd~fcuhy3Kynl22E$4mdUtF)o!Q;BJYJDh#k4!eJr{|dV8nyk%^14Lwa-8H# z;tOu$M=z(`=+~C`o4RqM9IZ}jwF!v7t8JfmV&*Jk^MAY1zCc%wK}+X=_o6N@7ccF3 zs;j1lHsM^noSnDzq;cocp~%K+P<;e^+G2Q%&&JGNc)IvI;)}l{g^j8}wc)gP_1_$S z%e`y6ValsIB1&+q7VGu{vM^g+ye;SY?WgU-x$RjPu23D!9I=u=PyAbrm!0#o?y{%a zjU=Z_N1=Dg`%5~--xmv6<{I-od)@2&>%?%LotHg(eO>PS+%3AJ_`8Vf%MY$Loc7-7 zrMbQQdP(1VPT`hY+|nnW)%n_@Xui8Z7HnTiw*A-BUUr)1x?DO*d=8i%f6#V|(m}UA z;j-0kB-wB8Nlr-cakr?}x7#^9FGt6f{?aQ~8%}#|DfciBj=$w~+C>?!E3PxWc{yq? z&7+U3Hk|fWGj=0yH%{o~j<))A{kQoYcc%7!I&r?gy7;{N*M8?|sP3uG(8s(_H_rK+ zS8o$vP4LkJgK8@qpx!3_7CT!qc#Di|PvrBW)$?++y_EO5LUm*={+6k$GuFI^xV89JjJSz zh0Z^!X0Vg0djjM0qSfhj=JLjPSTsr{! zR4zyCuYz>aire#E&C#K4r#+oFJ#yY#PWQCemg!mZ?MDuPlc{-5$32S{pHq3tQ|Vl` zp9(hSv2o+j*<}k$`7uFq5&Yv;$e$N~W0f&gbyPD}kMHTCtI?{xM{TLtCmd7F(f1VY z5!z!LdAreGTi%{N?tEVSt#+!5mW!*C%B}#bLxr*2v(dw|zbbFid0aPAtttc85v_ao zYbGz%g_>#U58Ib7fb8z@>4Md0)!w6iy2Z)+t2sKZ;hdb)OKvxBEYm&hwPkwNe7mdg zv5Rwg@*9CglfHCNbF}H6t}1yo@6(hodI-Kt(Y(D#b+UHc6!;nOH*bko4X5Qk-Ol*u zZJ|7GXEj>2_o$uVRCCl-*VGAGdorfYWWL>ATju9Z_dG2AR>S4epi`Ywv=>Bs(XT#o zQT#pn+dYlBs1{kO>p_nx?;d{>Jr|YuwBcvFhXs(vO0xa1YP9OAA-CkWnj`VIh4Ird z00df$yI*X=Z_ITC-jRM+yzw!OBLuk)Drn{K>3(nzS<{%-zW*57wdG7_*(`ne_D>4?bCtsb$W{+Ws}0E)!>_&xpc-?t>KGa8AsHhubaX`MXo_>A{HC9=9d{XlPpejL>N%Hr?b#GZmcIc|!-p-X>~ zz*_BjazOiX{j@~NMUcx*5AJHan)0Pf@h9Z2+Cz>7odL%7^rZ5P7c6hAt32CN_;Q65 zS@re8w;B2J$U87rYuD`tC)Env9wT0AnqMPO?n2vbtKXoxqjn~<)dn^8MJraG2b1v% zZ#S}f*)84M1dltrdiiQ<*tj6vUiqgNf7z~fUn5sG(ikrvu~ZxKG{M7m7I5}jD|pen z-LKW|Lj1j5nI4+pz2filDqdFM8mGPKh0>+3Sb0v#roWwcXwyAiy~6ZT6{qQ(Z>MU# z9N)>W2^K9=yj>=wi{ft#ldxUp-Rr0qr8cc2NnKa%*Cnt2v!2%tR;$D=!_@vu_MjA& zLrg}tjrXlqys>{ys7lW~|4E?9MTVbreJS@#<^t)QGm~xUpT`{K;MKj*eXDn%MuE2* zs}}?stK62uQo-J)dAf6#>Q^n_=^e-Iw1w3*Y70wR<(P)TMmmiS-wE83@x9JX_f>Gq zN2w2c-Rqp|R4Z_@d`?Opd6#l+NqcO}^_F)w3Ta4aOBzzdhc0mC;z@r78|Bf++jJ&{ zThdl_>$ao2d&4Zt?=^U+D!r{#*_mPLmU`9LY^R4cCN+)mlCi-wsoib|=Tm_W`-9wV z;@>8$S}T&}wj$irx4t}>{Cr)imyOa{%CvcswQuGKucTbb~HH6$c5Xt zZq9Grsueg{etV*wEdu2ppgsQPUgh4ne4|C5CT_Njz;jG0PaaXFh9o2TS#+1`!Mk*i z$xHc0Jx8%ZZ?j_vYpKSoj|p#*Iu=37bl?7@+I@|;{?BT>h zix?zRA9_eZoAp1xGTTz zh0|X5x;=82_?wECx}CA*LD{TEjU?cR!O20{x$v@8$=fkjD{!)WA^6>IJ;szz8;den zt$v^GvTlFoS?QFjL-%zT|8&;A^{qT+xXYv?0XOY5KO*l-dx^=XinL;XCc?Wvk7#*w z<1Y2^1^@hCs~uqK!}+P&a>r@~-nT#8lGHn%TkQmvW~%x?vwFvF4@jWjz4?>}5Bj~O z)vveXtKHX%+MX4L3_JH4>Qq-?lEU4qeQ(9IS9-oM{_3MvSDu#6Va3IB*_KAVqUX8r zl*X67mU6u;-o9ke>!wRRdpo|RiM@S>{!$a({+h*;G_?Gr+aG=smvhJVpPcpf%F~^> zes8MXrl;zeqUkpAZxfaTPb{%7 z@l)qLOTDVpzWlyR<8Qb+3BfND^Di&Q#_U&nRPnb_@*57Tepk281*q~|IAJ#rtxkJ% z`wjI(9#;#jh`+0sLE=G%R)Eu?37+cjlp zdabW5O&RY{V0HW*@{*SyG7o)Q+vlxyuRXb)^`dokN&H>s_MKM@@0GU#*iP%Q@;i zMs#BMHW_8ue46U?_Cz}g5NHude_L*4mo%{^P<@5X^FMi@#;S zullrHRm9(~sthuFgh1k2xs`ci;RyDtt||UrC4am7R!8RPH!?83UA`okKvx3gC$=V@ zT@}{G#E8Ee0l(+;miT+e)spWiK{>sJKnAg&roj0E;4QKsk&Oc4ZzGh$s#PVO1|*`YZu~d-LU97vZvj`9%@Pz{6?-v&OiY(_V_AkSj z`LEv0TmkD80tCKRK>YpMqFP4!5^D2SZdk7F9 z&>|rIwkUnuF?pU_edjq5Ie!uQ+hpXI009Df35dUYNj~N}3BJ{TYGIfT-|^qZdQ36N z2mu0j7Z88%UV{6k|Ce8WX$-#pDe!&eU5x;NZxeWA{H?yV`)#G%nBT@{zQfA1?;JI% zI*b4T0&fK#8GoypdQ0);JM(uoT3)zH@XcZVsiQBiEwWF5z;=OZsJi1bzG|knyFKg* zSxg=t>9+hgk@{iTmmLBG2%Ila4OQar`Gs=k9W#?{eBe8TW{-W(EFJeEK;Xdw;_rhC zx16;+z^#`4%XHX3GFT?{DFFfm+6AgTu=#I0=8cZb8gk1we5dg@)8rdvP*MpHAkevh z_}h5_?Vh|0s1_|a4f(fCvr-Fz&Qfq z?>WvF-X(uhBc;4_wRv25_RROfvU6(!1Rg9P{yw#EGh@w!_ottJ8YAh74PP~SYW0vW z0t7A>5PvT(f_)RPOV~}M_D44MEf-fKK!CuDfcX0Ya?@Y)HQxMFfWQC!?^jH6=ci=W z?1Ar1Yl37GAaEA}@%JtzHBV>WWKQuVRyO|K$a$Qd@5!b7lfH9mdk7F9u)BcxyF2MY z7t9Rz=bwKb0`7`05Y0pFd{3s&d0FeA^t&tp0t5(51;pQ}Mi1Lr_|3$22(|fRkBNz^ zUtOL@*iU`May0tCK9;5*~*1w*#rm>c#=Tgx&0KX@*?g{b6WTll=sclP0K>E2@oJa;H^L=gKz&qz5Ju_Z;!vr z&bQ-=?7U0*rIP>w0t6l}kPw_#lEyXLgyUyCA00zZEIJIP5pF8}}l literal 0 HcmV?d00001 diff --git a/lazyfoodSDL/04_keypress/images/hello_world.bmp b/lazyfoodSDL/04_keypress/images/hello_world.bmp new file mode 100755 index 0000000000000000000000000000000000000000..def253177b94c59f4b0233e17a714fabea66f986 GIT binary patch literal 921656 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 z*Mf5!)$R%Ozx{LfkAKbk|Mfrp`2Bys@5q1t&5Hm50t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7csfmaFqc009C7ULuf$Tgi9Ykb++VuMz?T z2oU&ofxrIsuX*^~X5sAlb`Yn?7*aeH0W(fWRh!ELQUG zCNT$JN+8L!zD8IdrmWe>S)Tb^YA7}4n+0+S{e@Ff{{7~dfA_xM{xbWT%-bI0YY*=p z1KR%q0(lr!v+}DROjZ7MFYp0j{B2#R=$$5Se$4AnfBI8yiXXjlKz-*SXJz}V=KEO@ zGX2c~e`nw<|BKh#eiQhsf~3|W`S;=>s(H5p(;qWW3~!yY$cqD*ev<+fI$M=0)VQ66Tw$vv1L4&p|12x@k&~f7^}E z*LM8Ts!|VszAX|SfgG_v3rm}S51Q0RwEUDZ%j&D3zBB)x+v`lsB-x6$yBkM56|YLO zamo}stJ14=JQw*H^dp9NrEuK>=N|=IdCJ0JnN8D2&kM(V=Ua7YoeQ4t6j)ZSRM_#Jq zxxBA&Kg+hA_1PY5M%_*KElP>=r0j}s-*8Zurr!iKO;@tc@CE2=SuU6gN$o17= zYulMPSkzPDy9Z?6rOO{V``Z4-xw1ezl-Zf?M}B&>U)b3Fs^h_*0^ri?e%3=6umMHWd%6b}VzbBNuu1QXQ{&IQN-k-G&cdz-Neyx8u4lp;)Ky9xWfgyzDM^ zVu2L~FI%1JYnfH`w2_RQNSXYoStJA4p@WPhG@3eoU-FFZS5~(-?9D6Mdf;? zeWsC1@r>8gI5gF`%(nZ{I@eIE6K>eV`4qp&g<7P>a_R%)-7jFgjetDKG= z$-jg6A9H#|(Q8(x_8w=dI?;RX9jN@fV=!kZ+h@+X>)Dh>+iSDjp=>($ZZFz}ZoIU+ zRa|rD)jD45Oh>lbQFup|ksei?=Q?x8-c3b)_T~NVT;~>8QS^fRJ4?PN&crrE<=?#` zaF%@g#<%@oBA?a`j!rFfiSxa>`4;6|t>d-M^hL#9=578RS@Ci$H`1dZOs5Zij&_%& zUED_cc(?GCJHP5$ccsbQ!zzl79;phs)RAHab?MS?!s;Rp1EG zp$pxt&6oP|Y8|i99FL6==QeMS#8q2PM~@C2opYC$w)T;W@R3n|qjPIsj6~zp{?Z_SA7e5yT5g{j@LTV zk*yYRGJR5DKBvg|&R*G{*KB^}$7;#!t%X`{-)hTAEw=|O@5w1sGdj*)E;;X>yS%hd z<`aZZTl?h)>=KR3hV6)q#QbtCo8E0hRQ}yW_vqlPep4*%_1tNf$gEc7nb@P2f8_qF zb$pl6Y)2|9Nqt+s3V*bbm`tY2OmFk%$Xe8v(~(2#!XV1sQkN2{MUlN*C_82nboQz7P?*B4l3ko9p7a%%c^}m zQYEk1XjAsciZ_^lYjloyLfbBGBYiCGtsB+5Y-~OE+m5fGJ#M6GIIgn>wjnD2?h^Ag z%6m<^DsW_tszR<4d%I{qE#zt)-*=s<-c_;LGkeutSRFIl7+LZ5%D*FRcoYNe;&w#& zkLs=c8HkBG8@1EMU4e?pgGQ=-_?)ZOyKQ*=&UX69zq|PFKIy8!k<__MA-njzxR9%L ze8+XBz4^_zI-g#iWwIxPZqxC|iq|e69r0PCGt!1f5hedVlDXji9p}Z}-qr6RW~SUd z;FO*1^pSse8G>3;vaxT09qU^)pu&5kkSgtsHm=t3YR`Da$xv2ln=a|wS)UR{Mzbxd zBeZI=jBDKXLjJuqx$K^by{^fU?i>SLFuAJg1D{h*!l@9wa*q{zR!+jbOK^SUED zbX2!|N;}<_k6iO^{Ux7{C9BPw9j90G+HyLCYqE@AjZ~9r<2w1bL#BH1B^xzQN22kO zRXgvhqLmwY{Fvc8B0kgFwqXZV@yI0mPoE$QZR>ukmK6E7+i=GdYnEMM4Q!{|cps~4 z9ZOdI;%y4)IK3KQUu#J@*{=O7H)^tswBb=*r!OznyDP-rBc+S%9|`8=F0_-bYU$g^ ztjSR3HS)-)ZEf4OcK>U(PoE%1bh9SiUir5Q%(!Q;-*>uI*E*6{ z1yu^^IK2k6?NLWL)r^jFs|}AfPG4TCci%SY9*xMt{*ho_C^m29fpZnU*T!CdzOtP@ z%e^?_-P0$?5uK_@myKP@uL3*nFRB6ctn%BIf=hLL-|1G1NynI0P^FNOi}|)k9XYg` z(Q$6Y_M?r{mzU~Y#{fO*)Ti#RVBS3v65cfsRm-Lk$-#Ne3fZNdDWsb8`jI_-f*jH1 z8m4UQQhxoZqLC4=Rwa;jY1O+Fa;c8*JKaVuE$ZtiiLQ~MY{G_E#F}h@ypJ+qdc~&{JIrkM`ZC+cjl!dbXb)zvh5;`m8yA-(yanAp3S_ zDy=46Hpa_uiAGARR$c1r_ai-8dG4h;zVCD!=~^v!N#ZLd?;h6nsAJ` zUmso!UUBW)s_}lktb|K-JXvO1X9n*&C%uub)pD1Ok+B$@!qo-&cVrYk;M@wxXFPr40^xm9tB$#{2cM5-!#8%D=meLUk=` z!lut~b8szp*%%y)Dyn1UtS$_O_uVcGUK`vkbJNa4d$*}2*FSh9iZ=DG=3r`kdQ($> z`>2}t^ps7Fk$*RFtvR?RT{hMnzi>>APOjNDEwHmPa}!-xedDc~6@KL(uh#LJ`@4)n zyEtrmCe|jV@s`xm)R99|`*iwvGj8Ls?PkZd!EJ$C_f+pXWVY7z?#EXY9X(Q6NNX`n zr3+7?XP2otc=vIv$D1kq^&@!t1UaJ1HR%SIlsp@$I2j!GDkr17@AcaefIF6XwT@>T zGX!}J#>PaH^`U}oDs%lsT0K=;SbtUy#P1#Y=YOKT=7C;YY_)$d!rL-y`}F1I(B4%y zKVze!=;-_#u6&+b)ny|~;@!AylVhgI`pLC^MA|CWpS9PKr%#Z*I?|R?lP(+W{!QBn z!pa>9kHMjD|JXv}Ee(tOruMw)!B^|}zWFzUl5wm!$;f6qRji4Y`aa2c;%k?(G+_NV znbXc4n{gYWr!OzH6pSO^_U^;>R201+|Aub1GEA#thG}}$z*Vab(w2XBhpmy#T9k3j zE7wl{KCr*uz0j&QWW~schx`10>vmXVz;>D^(i#~o9)%}SNkIIr7-_e#F$PP^n*MJYe~A7$aZ zm8X8Pm8$l;8=1BTHK|P&2UW39?CBF^p=~2? z-A$(L$Y!N_dQ1*@lo>nPRx5wojA=WK$tpd2Y?xUvy?flXUq>%GPPtUat1%hej=n6M zl2A$EcQfGah}WK7*1EQ|tS5J`1nQXEjkNioYrNB!mzv`lnuW3RRsE$-s|_nRUK7i(%93>D~De!p^S}O3)GG_JB2{Ez~?Q<^6x@0eBN*` zbawD9`F9Yo<8=AA1I;P#E0C{MWSz;EkQ4du+l#j4@^7m#+m?T4APYarzY91Ay(Rx1 z1gqG~3MA$~;49_DEB_Y7?S}k&Yw~E1{QF4exc&0)akfe(@B#t(cL7=cUBH>WCI8Mq zUhrdX1nTcBeasWN7r3c{z(oYEoPSSWUgY2PQ7Zqgx7zW@%-`LA-FV05DT)Ar1%WH) z-!%K&xJcCPk`4)iz5jTh=BaN5C-z^ z0?zC$`8R)yV`kz<0t5&w2*|$+IP&iT&g`x4%)jkd6!JOj%w)}v`IW}Z!8J!Zh5&&N z6Oexw22}oCz?r@Eo%uHi?LT@rGkN-B{rO7w&QGlzK;ZKP@VB}tS{U7Ja^XfwD zdv-k=0zVS?c!BA0)5lz|%D)Q{EB`Lw%-*V0l8BnU_3=N}W8@%YeOPlB+$P_gwdRzM zXVgIg%K~k-T7RLtT;{p&wmtg7m2(+CS6Ne9@$uX;RNnpO{G0B#PoYEc%P+s=i&b~g zl6mVR;|c9!F6Qs{*G>X^3AE3eJ|kPnzYDREORTJxlJ5dhy)`{6$e%;}jO)_s*ZPg* z+`0&ZjK1gv0RjXF5O@oL zB;P;&@sB@#{P^>q|NIsW)<^;b2oNCf0Rp-6P4b;yAJ83LAV7cs0RnF!ApgF_Fli(K z0t5(rn7~Ey?_d7%m)wK@;SYcK_19nj{`bFs7_#nMO+dU|ZA7$(z!wT!B>zsILI3-M za34m0VI;n^%i`^&+$tkL;GV!m@^8NVRmpeS@O`j*!)4z-0^)5SN2L%TFd%S|{F@%6 zC3*PVX5s7^=$TUqED4CWB^~b(AaK0Eb@K1j*T4PkZ}}8>%EG_=^2_l6YWQja@%Gij zuk!>>6}Vdd4MuwxoL^5ql}F{DFCgANe~k5zz$FDPn1A#A=XwgA+mlPOY1HQkh_}xf zOFbd*Rst8yzw!I&r=O-2{M&E8y%nd%zNLV8d&^sdw}H2!17@ zG`?gb7p3(JDf#0J`P=EA+VNan{OM1B%GG#Y*_bXl(*0z~gTnrr`L~Aqtg()EWa@QR zyye%Qr#76`fG?@{^muy<=jk7kmMp<#QqAq#JHFbhjPc}~X@ z^RxS)>Bzm-pGa2K>$@|1JiFIQSPhucQ2vp)+OzLQ8eEG>b-!a{uc@5?Sl^x`pnWx7 zQ(9uCghv9VpmtmYj*hoJ;j9Cb*r8XU>)TdOhjx@-U;FKmX+~a8FIgwUESMdPQ#P-V zs{o!hvOXU=8PBb~1rJ?b(awL{{hzU2ft?_E^o%hb&uZTWTcTpT`ys8M%6zYuOgmFW zy=HIKS<^<|ebn;tM($feqWW%MvNN5XE`Bnt0zOL<`7!%zRZPdDH`umER|09t6zyq7 zUhO4lf+SrStoQY&rxz77+3s#YWTtY)@w?mbniK0EDZWTgYxquV&y5t0H{=F{3+n_qP_O>M-znvw$26xR+wox&j@-mgG_Q8!zinkc7w#&(D9l2ny z6p)rAnYQdPObpyjuWkNH4D?Z_#x%bBqCF?3!D-~|%4AJr+V*#tR~38VSAmz^s4SCF zyFw!?P)CNZyCdsUQnhook;qwDd+Mr-pIITxKj!|ZV`|J=b#Cpm#(eybbxXTGf7Qh7 zUWZGyO-9S1wdURN*sF#ew^0jtw_cUdy)b5qRUs2>#`NjcS9=%Su?D968pMtioWZTr zJ321^ZVl<0<{jEw>w0>8`|&|X>^&`i`GEE&rGhXUnZm)DUYS#m3d!j?X5oO@i7B>f z$tdL9*#Y^nJ*E!MMvh-!(QUD_l3!o@-6nnT&KkR{t}DBlc$m)0&B)4A9vxOiO$DY6 zS*0_->a`F{nUXoIEg?TXs^~iV3%nx-O}(hpd3Rzy?P=UxU>+m?L%b{o~}BdWa8B0kx)O zP2SY6nwx{yTGfCo$lbAB8Es@;-PHZ=gDVSc1#fGtiMCa2mVCFKKDD8J@Rg~$eu-$u zI`Px?=;?M6eS6u^vBH#mN9u2z*Nxv6@)p}Q$NS=B-#%9G#DCwC7fP#26EnHmTp#KS zWghodMP}cP%wWULt$ncZXPrJ>>Lj|hMs;Zq&drMOtghYR{YLq>`nwgpjgUV4*_Hgr zg;Vt+@)@`_cfoDe?ufV9=^a-uyXW7IYk+nTufP4}`8Uf^UGk00)|U-*Eeof#_T1WE zhP-b@g|;<~)(Skh3ROAXF_UQ`|E`IOQp(2G;l3@u{eI@t#||~h)rL*O-KNeeVe9on z+lHqNzU^=AsVTFm3w8P%ZCon<)&UKG-CU`b> zDR5IE=hnWdsn{72TbT8lOnQfKWoJ&S#LfvO?S z@zsX)50Kl(=BX&Js&~^ZaNCR&@@Rmb?yoLnUi(%WBI(Kj}PZUjI(_PMZ32ncQ-ri+i_Z3oSbyLr9s=$T$p0{Sp z!tBRcneC6WC(rqDdbeUPMXmouq>7WACI7b0kG8)y|0dEZO0V;gR+i{`dREQ5-Pr5t z)+{Q{t$o&*&-k%j$F}xp215t}3L8ZQs4SU6Hm|{!KY|EBct7HFgW*`?AhfqIp4M>UWLTe@b$+ zL(*RjM^W5v9E5Xj?MK_5RsKj09XYq{Z>@^mNuieF?h@Me9KBtw9hoV8h16MlK~;f| z`f_{o8{Qi6tR4$D7wwbk+t0Jw@LRb1Zb!4NH>bC6ZQ8D0r~R8we7l2d!GAQquk2Cf znin*tLghB_UfJcTuH?S7=k_6UMko90mBWr`+qtzL(WC2>*)C#RTh%U)ThDEePy9?X zt2-%-m(aH7=_Z?03<(?O}$%D+#orUSk<|5kj?;&!FmE{C;KpjO(KwddU0cLBV9AuV!8 zYbz>JPRHrfDYYs-T4tY?T)nu?hcydrt|Zvq-xS_gNS*bX{9AX&w@J25op&9oski60 zwt067!Zr6P6>0KsYq+reo%y%clUm=_ZzSduW_KUgEI8l3l@ex^rr5hzs<-Ek?>V>j z@%Fz<32mfxw7DW=B>&b*dv_gP)2hK0uk8gvmqZi8y?8*WwDRhTfd$l%x z<+-xi-G`0$H&xg3u}x@I^P}1X{oN$LOVw?gtHAc| zbvmG~5VB&or?lI*Yh5OOMzE&;ny1R^DdgW4f6ex7{++ZlxEZ@OCG2=i1>2^W-`apA z%BpC6XtlMZd3ntW*|aXD4OR8)uXfI@y_NjDcCla@*xh)~@rd5@2)30{>=`C%Fs!lB=`l-e`GPTSa+&1ayc9oNjrw70F0X4oA zZ?laE{GM%&{m1Ah!(v}^RW{B(`{MDMP;4u$>(7W~yM62Fc5-exZ>{%f;ZF}ZxAv#a z`=kTp-`9_3Eh8hVcTLX|^KYAEXN+mp)WR&_v$r1oSf^CiR<2rg;?ufHK2^xSj|QUM zU-@?mv;4QcI;xSn-N=bKczW%12Uo*4GI848EpI2htNZET)2q8GEtiz-iOJ*j*2;}` zSzh_zI>@OsQ)cDy3oSXf_JxLhjw~b9-%V({ zR9(HUr^mO6GJB>LuD?}jv-x!H%C5D`#qv^L-B0-)(Ow;|aypjQD&#FTDvz{dk?jh< z^&81wgO99>JsYplOH8)c8_Ur(HEDL&9G{kMWwUE$<@BegB$7)e$FHApk4iqb_D8My z)crMsI##62sp<5Q8BxKLjSPLq^;^3jteGR{4rSZl?v~W3ZJOP?R9$VZ(q?UFKR;T2 z_*_Lz8`Y_4Bdg!+fJZ;pBDs8%QVmY|9nqfJ6J6~BJL~wP=DqL!yZLwOPWql#t1%nC zyFX^6`m%7&s!`53zKk?|td87XXU>{Y>*4xSW+jyER6_jk9#A_o*J_NWQ~G$Tz-&~P zPpQ3a$v13QsC2AIHBuupqFoiI#w3i_ti3rV!PcIh8G8L8s|Jst)u?3%)^~ZAs;BA_ zEmIp}KD%V9w{pPjt>vcHU2{%+I``Y6+I4T?0<5~9^0!8NifvDy`o8JvqHXZIY}eYp zDa>;4^m>$?x8jGZl5gan=D{6#6TofN3m14fa*B%jZxH%gQf^OYL8_?gvN3-1n+Bg- zd!N|*o>jxwF)3>FM^ee{vNknoAqywe@18Y&?e~Iltd?gPiTRoX8f&D|>~?6TBddd3 z*Mt;RCh6v^-sKO^R5R_Go|} zojdKX=&f-~t8T+@xsbkh+vu8VPh(R1^tx?WUoCZ3L1klMg4aY#lXi4CxAsD~-N=Pd zsPh`Uytys;#65Mj({VkY@T+L-?m|4LLQ-0yDF3YhnD$o{c`Nem&MbzR8h0;8yW4a0 ziG|j7qa@}6?o)UTA8 z$f-zvRBshNZKR!RR;@PVQu3Npmizcd@77FwM7pUj6&TsrbmDYy+Atfz{FoqI7?iw~ zBy~4Rw>F>+gWG1bdxEyL@Y(Sd$y2dYAJdoVRg6_>j-Qn<^5eO+KWcgAT^y>*p?GxU zd+o2$?C4QWnLzp`)C6_60a@y6?w9#&BPYJ&Vwg5pmuEfd_;FL7it2I|nR?S=HD%k3 zZ<>0ywU3f-#XT>9FyHIJLGeUuU(?ejK-2=;^Gk>BsRJ+u=C3_O>PMb~_W( z>yEp{wzTVP*QDqe#2Tr-2{j=sG+=ha)y7_?+jR^(T9O2pJ6h zd7Wb_COZ~~+g=oAHg4a2x~E-j5+qgHY&5ffdewE{j$@a4GZ|+!wmaCswB;OUiTN=_krEkut5I`&uB5<*iWYtPe-r@iiI z&-G8K6)#-lt*z4fmWx_#avwT1Cc&Sgo{n7|Ki-9^Hz1XWr*P_+iBH>8k91Pq?Dc{K zbZ+gpI9c|mvHqmVnAJE-W#5blQDQrPIHkd-S6Uf!5*ut!mDau5WZ_LqW~)tp%>I;F<<~%GBRglu z5B9?8Cko_VEUyzA@Of3sza3**E6lz*F)P)Sf(NguI(qbiQwpuJNv^0Lt=n~Q9(Fx? zI{kt+pIb#`v=SR>PnFi4f1lQ#0M3laD-F)ze(k_Lg>nFaNnm=akX6ow&H9k2?2x5q z{aIgrWT8FHCet#W!*XNw&38|gF`tU939Y))J}&>RX@+A65FjujP^m=zUC)@C`nb8$ zTQ4U6uD5a|0RmqlApiCavX{TA4}1b}uDAaE;C zOPTz8i(}7T0z2m4`tUb@;B>F%DTe?70-b@0EvJ+XxU?BT&nl=g(`n9MdOI-&oGm zo;V7hU3L47<%+lU8&kfn z|N73=XGe?P5%?Z~S_b9c?-}&h_jLLfqbk^zH}bGL**5>2=a_en6uIJKUj-&eo2z-x#{QEs)t)~PC5Fl_Jf!vHF1?LaiU#Cf0LVy4P0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAVAZwz8SQMr2fB&EV`CtC?kAJ@YNB;Zo`S1V!`;Q<0@85p> z__rVb?VqcE{CocXU;opO-~ao4MgHeMya*5=K!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ 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 zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U 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 literal 0 HcmV?d00001 diff --git a/lazyfoodSDL/04_keypress/test.cpp b/lazyfoodSDL/04_keypress/test.cpp new file mode 100644 index 0000000..c60ca96 --- /dev/null +++ b/lazyfoodSDL/04_keypress/test.cpp @@ -0,0 +1,230 @@ +/*This source code copyrighted by Lazy Foo' Productions (2004-2015) +and may not be redistributed without written permission.*/ + +//Using SDL and standard IO +#include +#include +#include + +//Screen dimensions +const int SCREEN_WIDTH = 640; +const int SCREEN_HEIGHT = 480; + +//Key press surfaces constants +//enum makes everything a const int +//and sets it to numbers sequentaly starting with 0 +enum KeyPressSurfaces +{ + KEY_PRESS_SURFACE_DEFAULT, + KEY_PRESS_SURFACE_UP, + KEY_PRESS_SURFACE_DOWN, + KEY_PRESS_SURFACE_LEFT, + KEY_PRESS_SURFACE_RIGHT, + KEY_PRESS_SURFACE_TOTAL +}; + +//Starts up SDL and creates window +bool init(); + +//Loads media +bool loadMedia(); + +//Frees media and shuts down SDL +void close(); + +//Loads individual image +SDL_Surface* loadSurface( std::string path ); + +//The window we'll be rendering to +SDL_Window* gWindow = NULL; + +//The surface contained by the window +SDL_Surface* gScreenSurface = NULL; + +//The images that correspond to a keypress +SDL_Surface* gKeyPressSurfaces[ KEY_PRESS_SURFACE_TOTAL ]; + +//Current displayed image +SDL_Surface* gCurrentSurface = NULL; + +SDL_Surface* loadSurface( std::string path ) +{ + //Load image at specified path + SDL_Surface* loadedSurface = SDL_LoadBMP( path.c_str() ); + if( loadedSurface == NULL ) + { + printf( "Unable to load image %s! SDL Error: %s\n", path.c_str(), SDL_GetError() ); + } + + return loadedSurface; +} + +bool init(){ + //Initialization flag + bool success = true; + + //Initialize SDL + if( SDL_Init( SDL_INIT_VIDEO ) < 0 ) + { + printf("SDL could not init! SDL_Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Create window + gWindow = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); + if( gWindow == NULL ) + { + printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() ); + success = false; + } + else + { + //Get window surface + gScreenSurface = SDL_GetWindowSurface( gWindow ); + } + } + return success; +} + + +bool loadMedia() +{ + //Loading success flag + bool success = true; + + //Load default surface + gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ] = SDL_LoadBMP( "images/press.bmp" ); + if( gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ] == NULL ) + { + printf( "Failed to load default image!\n" ); + success = false; + } + + gKeyPressSurfaces[ KEY_PRESS_SURFACE_UP] = SDL_LoadBMP( "images/up.bmp" ); + if( gKeyPressSurfaces[ KEY_PRESS_SURFACE_UP ] == NULL ) + { + printf( "Failed to load up image!\n" ); + success = false; + } + + gKeyPressSurfaces[ KEY_PRESS_SURFACE_DOWN] = loadSurface( "images/down.bmp" ); + if( gKeyPressSurfaces[ KEY_PRESS_SURFACE_DOWN ] == NULL ) + { + printf( "Failed to load down image!\n" ); + success = false; + } + + gKeyPressSurfaces[ KEY_PRESS_SURFACE_LEFT] = loadSurface( "images/left.bmp" ); + if( gKeyPressSurfaces[ KEY_PRESS_SURFACE_LEFT ] == NULL ) + { + printf( "Failed to load left image!\n" ); + success = false; + } + + gKeyPressSurfaces[ KEY_PRESS_SURFACE_RIGHT] = loadSurface( "images/right.bmp" ); + if( gKeyPressSurfaces[ KEY_PRESS_SURFACE_RIGHT ] == NULL ) + { + printf( "Failed to load right image!\n" ); + success = false; + } + + + return success; +} + +void close() +{ + //Deallocate surface + for ( int i=0; i < KEY_PRESS_SURFACE_TOTAL; ++i ) + { + SDL_FreeSurface( gKeyPressSurfaces[ i ] ); + gKeyPressSurfaces[ i ] = NULL; + } + + //Destroy window + SDL_DestroyWindow( gWindow ); + gWindow = NULL; + + //Quit SDL subsystems + SDL_Quit(); +} + +int main( int argc, char* args[] ) +{ + //Start up SDL and create window + if( !init() ) + { + printf( "Failed to init!\n" ); + } + else + { + //Load media + if( !loadMedia() ) + { + printf( "Failed to load media!\n"); + } + else + { + //Main loop flag + bool quit = false; + + //Event handler + SDL_Event e; + + //Set default current surface + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ]; + + //While application is running + while( !quit ) + { + //Handle events on queue + while( SDL_PollEvent( &e ) !=0 ) + { + //User requests quit + if( e.type == SDL_QUIT ) + { + quit = true; + } + //User presses a key + else if( e.type == SDL_KEYDOWN ) + { + //Select surfaces based on key press + switch( e.key.keysym.sym ) + { + case SDLK_UP: + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_UP ]; + break; + + case SDLK_DOWN: + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DOWN ]; + break; + + case SDLK_LEFT: + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_LEFT ]; + break; + + case SDLK_RIGHT: + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_RIGHT ]; + break; + + default: + gCurrentSurface = gKeyPressSurfaces[ KEY_PRESS_SURFACE_DEFAULT ]; + break; + } + } + } + + //Apply the current image + SDL_BlitSurface( gCurrentSurface, NULL, gScreenSurface, NULL ); + + //Update the surface + SDL_UpdateWindowSurface( gWindow ); + } + } + } + //Free resources and close SDL + close(); + + return 0; +} diff --git a/learncthehardway/3/Makefile b/learncthehardway/3/Makefile new file mode 100644 index 0000000..b48e222 --- /dev/null +++ b/learncthehardway/3/Makefile @@ -0,0 +1,4 @@ +CFLAGS=-Wall -g + +clean: + rm -f ex1 diff --git a/learncthehardway/3/ex3 b/learncthehardway/3/ex3 new file mode 100755 index 0000000000000000000000000000000000000000..84bab2e0625f560ea55ca217063a6e6f0fdfe155 GIT binary patch literal 9336 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 r8eOcM9#@E^ + +int main() +{ + int age = 10; + int height = 72; + + printf("I am %d years old.\n", age ); + printf("I am %d inches tall.\n", height); + + return 0; +} diff --git a/learncthehardway/4/Makefile b/learncthehardway/4/Makefile new file mode 100644 index 0000000..5fa7082 --- /dev/null +++ b/learncthehardway/4/Makefile @@ -0,0 +1,4 @@ +CFLAGS=-Wall -g + +clean: + rm -f ex4 diff --git a/learncthehardway/4/ex4 b/learncthehardway/4/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..ef480ee1db9213609de08bcbdebe4fd999be53a0 GIT binary patch literal 9320 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 + +/* Warning: This program is wrong on purpose. */ + +int main() +{ + int age = 10; + int height; + + printf("I am %d years old.\n"); + printf("I am %d inches tall.\n", height); + + return 0; +} diff --git a/learncthehardway/ex10/a.out b/learncthehardway/ex10/a.out new file mode 100755 index 0000000000000000000000000000000000000000..828c1f03ca2ccd515e03e585bcae78abedf134c8 GIT binary patch literal 9016 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 D@+)%M literal 0 HcmV?d00001 diff --git a/learncthehardway/ex10/ex10.c b/learncthehardway/ex10/ex10.c new file mode 100644 index 0000000..6e709a5 --- /dev/null +++ b/learncthehardway/ex10/ex10.c @@ -0,0 +1,23 @@ +#include + +int main(int argc, char *argv[]) +{ + int i = 0; + + // go through each string in argv + for (i = 1; i < argc; i++) { + printf("arg %d: %s\n", i, argv[i]); + } + + // Make an array of strings + char *states[] = { + "California", "Oregon", + "Washington", "Texas" + }; + int num_states = 4; + + for (i = 0; i < num_states; i++) { + printf("states %d: %s\n", i, states[i]); + } + return 0; +} diff --git a/learncthehardway/ex14/a.out b/learncthehardway/ex14/a.out new file mode 100755 index 0000000000000000000000000000000000000000..b415a06012be8aefdf17f1effbafa9a32f38ef5b GIT binary patch literal 9504 zcmcIqYiwLc6`p&qADcSaT_z9p4oO!p3qnG1Rb|jLWrR*$a$NUUA1~KRUQQzp-sr+^779^4_V#<4k%Ul58 z`;TIZ%12vCi?~(82c;wgbGEw=b`vO-H7Cdm=rXqlH{_ zql};QsEfPq9hMfH4^v7)&^Xd~@OY|ps9KMeQ(A+1LL1o12DrHdz7aUp`H6fq@*~i{ zBz31pOy$$r;+SxpWbx3H>x?>?ToMu~IE7*&UvwrD=`4`($y`<;j@UIg(AV#5jBYBI zHb!r!)^#~`soz8zB~ z3a`$mRfY3hAV2oZ`G7sw9BDO${pftLd11ct{W_>DuIt1zbc2Nw$rGe- z?(8CH-Aa-vlyhgKd=<$Q!nt`VztCceu@huKwBe0`*_Xa(&;HGx`TK>vLj$MhM=*o! z)2A-95Ia2&w(w&ZUK$JCutSKa9duyWj@%Ds&s+}Lv;R1_=4tXoVYeT6hAI}%Lis3x z;=r>M;M9i(9N4oL>{AQdZS8scr4Nf&m%X*Ix6lpnwSn{ zl-h@3xR6C)2cB=<21vUoTY9D!3*MgDE=tX>e+zbHXK#_g;+X^I4#TDr5247tIs5SY z_H60G>G*kyTCutK`McxqhmPL>$WF%3+jF}w*mGM>EnEWtl{53&Z2bJWKfVlEJ|xIJg`-xmuffSA>r4@w`g#Ypb5-OU~!wmt+)|&V8Svc;<*whuW(jklKP58RwtlvyNRp z7GFezi+1uwdv^DQg+D<3Db1b})XUJXw%CunMsJjvMR9ES&CsK_qOs7)IMjaw^|K2< zfV!uAHuS62_RQa?Q Z&s)bzZ+B2%5 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 literal 0 HcmV?d00001 diff --git a/learncthehardway/ex14/ex14.c b/learncthehardway/ex14/ex14.c new file mode 100644 index 0000000..395383e --- /dev/null +++ b/learncthehardway/ex14/ex14.c @@ -0,0 +1,42 @@ +#include +#include + +// forward declarations +int can_print_it(char ch); +void print_letters(char arg[]); + +void print_arguments(int argc, char *argv[]) +{ + int i = 0; + + for(i = 0; i < argc; i++) { + print_letters(argv[i]); + } +} + +void print_letters(char arg[]) +{ + int i = 0; + + for(i = 0; arg[i] != '\0'; i++) { + char ch = arg[i]; + + if(can_print_it(ch)) { + printf("'%c' == %d ", ch, ch); + } + } + + printf("\n"); +} + +int can_print_it(char ch) +{ + return isalpha(ch) || isblank(ch); +} + + +int main(int argc, char *argv[]) +{ + print_arguments(argc, argv); + return 0; +} diff --git a/learncthehardway/ex9/notes b/learncthehardway/ex9/notes new file mode 100644 index 0000000..f20f9e8 --- /dev/null +++ b/learncthehardway/ex9/notes @@ -0,0 +1,5 @@ +instead of doing something like + +char name[4] = "zed" +do +char *name = "zed" diff --git a/learncthehardway/exc1/Makefile b/learncthehardway/exc1/Makefile new file mode 100644 index 0000000..1a973e2 --- /dev/null +++ b/learncthehardway/exc1/Makefile @@ -0,0 +1,6 @@ +CFLAGS=-Wall -g + +clean: + rm -f ex1 +all: + ex1 diff --git a/learncthehardway/exc1/a.out b/learncthehardway/exc1/a.out new file mode 100755 index 0000000000000000000000000000000000000000..8d9ab937cc362b7ac7188ac85845d9ffcc8eb00c GIT binary patch literal 8792 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 + +int main(int argc, char *argv[]) +{ + puts("Hello world."); + + return 0; +} diff --git a/learncthehardway/exc2/Makefile b/learncthehardway/exc2/Makefile new file mode 100644 index 0000000..b48e222 --- /dev/null +++ b/learncthehardway/exc2/Makefile @@ -0,0 +1,4 @@ +CFLAGS=-Wall -g + +clean: + rm -f ex1 diff --git a/sdl/first/Makefile b/sdl/first/Makefile new file mode 100644 index 0000000..fff491d --- /dev/null +++ b/sdl/first/Makefile @@ -0,0 +1,25 @@ +#OBJS specifies which files to compile as part of the project +OBJS = main.c + +#CC specifies which compiler to use +CC = clang + +#COMPILER_FLAGS specifies the additional compilation options we're using +# -w suppress all warnings +COMPILER_FLAGS = -Wall + +#LINKER_FLAGS specifies the libraries we're linking against +LINKER_FLAGS = -lSDL + +#OBJ_NAME specifies the name of our executable +OBJ_NAME= first + +#This is the target that compiles our executable +all : $(OBJS) + $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) +clean : + rm euhelp +install : + cp euhelp /usr/bin +uninstall : + rm /usr/bin/euhelp diff --git a/sdl/first/bat.bmp b/sdl/first/bat.bmp new file mode 100644 index 0000000000000000000000000000000000000000..69310896e6669957fa67ef1a003640b6d8a341e3 GIT binary patch literal 257078 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 C=i-O} literal 0 HcmV?d00001 diff --git a/sdl/first/main.c b/sdl/first/main.c new file mode 100644 index 0000000..6f99b1b --- /dev/null +++ b/sdl/first/main.c @@ -0,0 +1,116 @@ +#include "SDL/SDL.h" + +#define TRUE 1 +#define FALSE 0 + +const int WINDOW_WIDTH = 640; +const int WINDOW_HEIGHT = 480; +const char* WINDOW_TITLE = "SDL Start"; + +void drawSprite(SDL_Surface* imageSurface, + SDL_Surface* screenSurface, + int srcX, int srcY, + int dstX, int dstY, + int width, int height); + +int main(int argc, char **argv) +{ + SDL_Init( SDL_INIT_VIDEO ); + + SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH, WINDOW_HEIGHT, 0, + SDL_HWSURFACE | SDL_DOUBLEBUF ); + SDL_WM_SetCaption( WINDOW_TITLE, 0 ); + + SDL_Surface* bitmap = SDL_LoadBMP("bat.bmp"); + SDL_SetColorKey( bitmap, SDL_SRCCOLORKEY, SDL_MapRGB(bitmap->format, 255, 0, 255) ); + + int batImageX = 24; + int batImageY = 63; + int batWidth = 65; + int batHeight = 44; + + //bat pos + int batX = 100; + int batY = 100; + + SDL_Event event; + int gameRunning = TRUE; + int keysHeld[323] = {FALSE}; + + while (gameRunning == TRUE) + { + // Handle input + if (SDL_PollEvent(&event)) + { + if (event.type == SDL_QUIT) + { + gameRunning = FALSE; + } + + if (event.type == SDL_KEYDOWN) { + keysHeld[event.key.keysym.sym] = TRUE; + } + if (event.type == SDL_KEYUP) + { + keysHeld[event.key.keysym.sym] = FALSE; + } + } + + if ( keysHeld[SDLK_ESCAPE] ) + { + gameRunning = FALSE; + } + if (keysHeld[SDLK_LEFT] ) + { + batX -= 1; + } + if (keysHeld[SDLK_RIGHT] ) + { + batX += 1; + } + if (keysHeld[SDLK_UP]) + { + batY -= 1; + } + if (keysHeld[SDLK_DOWN]) + { + batY += 1; + } + + // Draw scene + SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); + + drawSprite(bitmap, + screen, + batImageX, batImageY, + batX, batY, + batWidth, batHeight); + SDL_Flip(screen); + } + + SDL_FreeSurface(bitmap); + SDL_Quit(); + + return 0; +} + +void drawSprite(SDL_Surface* imageSurface, + SDL_Surface* screenSurface, + int srcX, int srcY, + int dstX, int dstY, + int width, int height) +{ + SDL_Rect srcRect; + srcRect.x = srcX; + srcRect.y = srcY; + srcRect.w = width; + srcRect.h = height; + + SDL_Rect dstRect; + dstRect.x = dstX; + dstRect.y = dstY; + dstRect.w = width; + dstRect.h = height; + + SDL_BlitSurface(imageSurface, &srcRect, screenSurface, &dstRect); +} diff --git a/structus/Makefile b/structus/Makefile new file mode 100644 index 0000000..7a81d36 --- /dev/null +++ b/structus/Makefile @@ -0,0 +1,22 @@ +#OBJS specifies which files to compile as part of the project +OBJS = main.c + +#CC specifies which compiler to use +CC = clang + +#COMPILER_FLAGS specifies the additional compilation options we're using +# -w suppress all warnings +COMPILER_FLAGS = -Wall + +#LINKER_FLAGS specifies the libraries we're linking against +LINKER_FLAGS = + +#OBJ_NAME specifies the name of our executable +OBJ_NAME= struct + +#This is the target that compiles our executable +all : $(OBJS) + $(CC) $(OBJS) $(COMPILER_FLAGS) $(LINKER_FLAGS) -o $(OBJ_NAME) +clean : + rm struct + diff --git a/structus/main.c b/structus/main.c new file mode 100644 index 0000000..35f3f8a --- /dev/null +++ b/structus/main.c @@ -0,0 +1,43 @@ +#include + +int gain(int current, int amount_gained); + +void gain_by_pointer(int *current, int amount_gained); + +int main(){ + struct players{ + int life; + int magic; + }; + + struct players player1; + player1.life = 5; + player1.magic = 0; + printf(" Hi\n player1's life is currently: %d\n", player1.life); + printf(" player1's magic is currently: %d\n", player1.magic); + + player1.magic = gain(player1.magic, 5); + player1.life = gain(player1.life, 32); + + printf("\n player1's new magic is %d: \n", player1.magic); + + printf(" player1's new life is %d: \n", player1.life); + + printf(" Adding 1 to both life and magic through pointer magic! \n"); + + gain_by_pointer(&player1.magic, 1); + gain_by_pointer(&player1.life, 1); + + printf("\n Thanks to pointer magic, life is now %d, magic is now, %d\n", player1.life, player1.magic); + + +} + +void gain_by_pointer(int *current, int amount_gained){ + *current += amount_gained; +} +int gain(int current, int amount_gained){ + int new_current; + new_current = current + amount_gained; + return new_current; +} diff --git a/structus/struct b/structus/struct new file mode 100755 index 0000000000000000000000000000000000000000..90bb4777f39a85f1e2e3cc978819711f3ce94c3c GIT binary patch literal 9376 zcmcIpeQX@X6`$Sp$0bfK=LA|qQnEl&49%Tm@@1e&_Uv4;28X1H!*^JpeQW#Z`OdnJ z#Ez6U$boVSfrz$$wEcs$s!;#vAE;GZ)ISJmDuOCim`YWt=!dC5m=I7XDY8ny{k_?F z=e_l%O)GVz+xOmY-g`6iW@h)z+}9I5+jUJ7Ty(KTkThjj67rrxoLnwNg>{IKu*52H zy=VYZkDn!Lhc?8{kFq0?>{^vwtFmJ{NsdvN^7v?M^jo3)t_6$z5O>_YPg-z1OeqP$^GKBHR5(=ae(Sz1Gluv+*k;ARbdfpH8_w>OH> zd^%ek6pllXQz$0$MQ0?L&H@=4$z>Jdh#fuMon6kYv0Gys$f2(KugNiRd`j1*G4r}u zr`nuZ*e5xPHI11|OH-d@Y1;fTFnzdM3R2IWI3Kc))t4GgVL$d#v3|M>us!kX&>2}> zdCYF;hsx~g6rM{~THr_?ruuiMW>Ho@Kr%J??xd7&fIN7D9kjpSU4HFhyZkqM;;jq2 zd%MrRbfm!&_Sw@BNzP8ySz`JZFuXXpWaTy?Uf7Bb@3W&FAoj#e*e<_)VEGH=jk?*q z{}ffsPC@yoY-0Zz>eXP3v9~2F z#r`v1`$sl^zrhru)VvRd(^+(E|I77H0n$E_EuAv40qu#cqE!FhH(^(C_8}R}PVRsA z5Nzi9LnvZx+NZvS0aH1fn4uTQ*~BH1j+JJf7t_yuHalyd`lZr1R=QM9Tm<|y;1@~x z*kK?Srk@4-qKQX2ap~CMndzs&+Nb`k%*u%wSiFrX*+e|re9&lX3*QgC$PD}%f zQVTSB_VL3r_Qct`a^kJ&`yf}q={sd3dzBgbdu$&y^3kWWv+chtC#K4iST-idkH%X@ zZ=qJYWRzygrHjWB7ipG`!jHhz(0m-0c^+ z@0HHc!hUdn{Gs^%_``AM%!#@A`3UP>dQ(eZ!(KD(^g?qqlN@*R?Kc(7OnT5Y(*<*& zl+U}_VrKkyb9HK=@M(-BhtdNzRQz7D?m@Gnw>ovZS>=IhxgAv*Po>h?A+y~q=FI+F zaoDR*W>d;daX6nV4Go*4IlOM%yoX*7w+qeQ;biu!1v0FvTvKTxn>&axteNW&fHiVd z+H&KLZI~x|k3=rb&eBHS4cbQ(!KU?YVbQz}+6OuVdIYoui|7JqpL+RR1)Pd@Xphjw zBHHprjiD1-V}$S(_)UK@J9`T$s8U;B;2ZDhk3oMe>4qcQ!!36%X*w7>BDP+8$1Uqt z-9Rw;q<)`3U(XQ`4@Vx?yB0SPk3#h+{Q5A476NM2AN@D=BvG*c4rP}lFO`p14C%Q-i;)wfeh4`}c_t#22uTP$TUZ1?as;$|6oyPu; ztN!r%dqS;mmV@^DW&4DN;A8F_u~6-&SgfruUP!s4g*K#`4pL8l34L)zECYX|XIjo(A~>00PsB6=g`j(S}q zbyE+?#j0x!_shEaEg(i+Jzm?Wt9Lz>ED^1t52Vh8Kcs*(>*{HH%0?v$j+-Ld!#|L(3=*TC=t~ysXIx zFAqnso%L0ssc8#D1Vgb{Qg!Qv5x%|Yj;8KqTd&cvo9n+Qx|d07c-+@eMH`-1(gih9st3GRjICNvX>*%i4Nn$#J0p-c!bx6qd>1RZ_|p(nDD{Wzsq=4CnI2YUr~2#nUA#r+XJpJ4j=k zQo&7$ipPQBWM0Tdr0?`0w>UoPau{j9b$M?!GdfZ%W!=p~Zr05s#fpw3^8>@1y+fiI z9WtZ4ZZ)H5V)Ib8)ZT7J2SGb-i>9+UO}Y?A-29LmO=dFDfm{|7o-G!DB5}%6as_wD ztD=L&Od&dwOSzfNG?VFMChCs4-hARaAqyr{7M>%HBTo*;koA}b?b+@b!;&g&cU*0A zw!0E)(4^|tJXHfLa79hrsC>`;Mh0GJ!!`BmE8qKS{RUC%J82+m>en{|lx*A_l z`JPwf3kAoy8gCLORotraMPjlhzPNIaRIMKtJa5(b62Y(AYCKZ82dT!J#p{ihACkO* zn*+|f{FR1SCOF@!#;+1|tPB0Z#1(_uX^AP3fWf@iXAf$amHT_T#Sz7jy5WI%W16aEcFIqfwzOlFA?Pi(nmE z0YA?w{VBsDHNpA)o4`pw7@zl9U#-t`(n^TG12+}#Ck>b&>VMGBQsA}p*8r#fPX^-o zhHSUS`(Nc)$e0Sn(%>M{EyuaDYmd{@y|>qKM9R&(L+Ju8LY(4=Gl1m6EkGlcbA~dx z{$$2U6?6H5lPryif!xSw#x1(3*v5?;H`P{ha8OD+$$UOJ?%>WRKQ0FI$r0B{l}1L! zVd9e<>RFX4UG~cUZQm2$nQ#(!Z$k&Y-ZEchlM>Fh`|pnL?Cye=uSO=QfRGS53ET0! z+1vIAXGhPj&UlZrYy0-SiC(8S-r19&7UYF9jx4hG$i8}aI&*R9-PuJ^=}q=$T;aH> zWHG6(sx8ZZ6+MLBJN@I1x;kRFvNQ4?yILJFh9~b*8@g3D+^8$$99%}FsLASN(AQfU zGEDmm1?9%OEx+@Cvq#NoS0-5~$O*+LIG{8B*{Q=qnV>Q$@Et zMghUhfpq%3doM}kd5<`Gzy)P{{yxxsn1LVLzoJ`^=pIdy%6*w9d9h-i=nnjFhRCr! z=iMQ4io)%2e_4-dFLdbci)GHwBg)<+Cn&-Gd#DftV8}Pya~{7|+4DHLeeMtABg(#0 zIkXK+a<;PP`#!Qq_F5Sa+aCl*YoY-^Dts;&Q})43mHXjo3y}xow?C=cKN)DB^&^U5 zdN^Ru=Zr~Z&*NqLp!|5ieoD1JrR;yefep0F{+jkv2V1bHvd1oO-gf*p#6_f<+tba((AOTQPv0A5615&(7_Fn+(V?# zc_sgk9@G!YFT!St&z{d;Eh=z9{h<6C*iskObXCp|<`vq%3R?;_+w*yj|IeRPT>R?>U ze)l5J@Ed{3fG8rDvHyem!{$Js{hK@7uH~P#OaUEHd4o z>^<$d=SdZ)BXf}Cg7Iqx%5(2my literal 0 HcmV?d00001