# Dave Gnukem — browser integration Original game by David Joffe and contributors. Character sprites include work by Evil Mr Henry; Steve Merrifield contributed levels. Browser integration by Old Games Archive / CatBroDev. All original source headers, credits and licenses are retained. Play: https://oldgamesarchive.org/games/dave-gnukem Chinese notes: https://oldgamesarchive.org/zh-cn/games/dave-gnukem Upstream: https://github.com/davidjoffe/dave_gnukem Pinned code: fbda206d0aac575146b01179330484ccf1569aab Pinned data: b50a69cbe864f6f8e30c82d719f7e46c57d9ad38 This is a browser build of the modern SDL source, not an original DOS executable. Project development began in the 1990s; version 1.0 appeared in April 2018. This is not an official upstream web release. ## Build Install and activate Emscripten 4.0.23 and Python 3. Set DAVE_EMSDK to the absolute emsdk directory, then run from this extracted folder: python -X utf8 scripts/build-web.py release python -X utf8 scripts/package-release.py release The build creates build/release and refuses to overwrite it. The original source and data directories remain untouched. Required SDL2, SDL2_mixer, Ogg and Vorbis ports are fetched by Emscripten on its first build. Serve build/release over HTTP, with dave.wasm.bin as application/wasm. A .bin file may use HTTP gzip encoding; do not change its decoded bytes. ## Changes and controls Unified SDL2 headers/mixer; native menus run under Asyncify; polling waits yield to the browser; persistent native files use IDBFS. Added explicit host pause/resume, input release, mute, cleanup, and shared multi-touch control support. Native gameplay, level data and enemy logic are retained. Left/Right move; Ctrl jumps; Alt fires; Up interacts. Up/Down select menus, Enter confirms, Esc opens the in-game menu. Save Game and Restore game are native level-start checkpoints, not exact-position snapshots. The game uses its own IndexedDB database (oldgames-dave-gnukem-v1), separate from other restorations. Saving is local to this browser and site origin; clearing browser storage removes it. Controls redefined inside the native game also need matching shared touch bindings. Original effects load at startup. Original Ogg music loads on demand after sound is enabled; music failure leaves the game and effects usable, with no automatic retry loop. Audio is muted by default. The source download is not part of startup. ## Credits and licenses Code/most assets retain the author's MIT/GPL options. This browser integration is distributed under GPL-2.0-or-later; separate asset permissions remain separate. See notices.txt, licenses/, source-archive/ and data-archive/ for all original notices. Music by Eric Matyas — www.soundimage.org Additional sound effects: Eric Matyas — www.soundimage.org These assets are under the Soundimage International Public License: https://soundimage.org/sample-page/ . They are not relicensed under GPL. They are credited inside the game as requested at https://soundimage.org/attribution-info/ . Tracks and the exit effect are unmodified. Other credited assets include freepik/flaticon, Zingot, Vinrax and Michel Baradari (CC BY 3.0), Juhani Junkala (CC0), and the Pixel Operator font (CC0). Details and original links remain in the data/source README files. Acceptance covers startup, first-level movement/jump/fire, menu saving and browser reopening, real PCM output/mute, optional music failure, shared touch, pause/cleanup, and responsive layouts. It does not certify the full campaign or physical Android/iOS performance. === data-archive/gnukem_data-b50a69cbe864f6f8e30c82d719f7e46c57d9ad38/credits.tga === @�(((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  (((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  (((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������ ��������������� ������ ((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��� ������������ ��� ��� (((((((((((((((''''''''''''���������&&&&&&&&&&&&������&&&&&&%%%%%%���������%%%%%%���$$$$$$$$$$$$���������#########���������###"""���"""""""""""""""������!!!!!!!!!���!!!!!! ��������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������� ��� ��������� ��� ��� ��������� ��� ��� ��������� ���������((((((((((((((('''''''''���'''''''''���&&&&&&���&&&&&&���&&&&&&���%%%%%%���%%%%%%���$$$$$$$$$���$$$$$$$$$######���###############���""""""""""""���"""!!!���!!!!!!���!!!!!! ��� ��� ������������������������������������������������������������������������������������������������ ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���������((((((((((((((((((''''''''''''''''''���&&&&&&���&&&&&&���&&&&&&���%%%%%%���%%%%%%���%%%$$$$$$���$$$$$$$$$$$$###������������######���""""""""""""���""""""���!!!!!!���!!!!!!!!!��� ��� ������������������������������������������������������������������������������������������������������������������������������������������ ������ ��� ��� ��� ��� ��� ��� ��� ������ ������������ ���������(((((((((((((((((('''''''''���������''''''&&&���&&&&&&���&&&&&&���%%%%%%���%%%%%%������$$$$$$���$$$$$$$$$$$$$$$���######���######������������"""���""""""���!!!!!!������!!!!!!��� ��� ������������������������������������������������������������������������������������������������������������������������ ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���������((((((((((((((((((((('''���''''''''''''''''''&&&������&&&&&&&&&���%%%%%%���%%%%%%���%%%���$$$$$$���������$$$$$$###������#########���###""""""""""""������"""!!!!!!���!!!���!!!!!!��������� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������� ��� ��������� ��������� ��� ��� ��� ��� ������ ���������������((((((((((((((((((((((((���'''''''''���''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$###############���###"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ������������ ��� ��� (((((((((((((((((((((((('''���������''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$############���������������"""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������� ��� ��� )))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������� ��� ��� )))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  ))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������ ������������������ ������ )))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������ ��� )))))))))((((((((((((((((((���������''''''''''''������'''&&&&&&&&&���������&&&&&&���%%%%%%%%%%%%���������$$$$$$$$$���������$$$###############���������"""""""""������"""!!!!!!!!!���������!!! ��������� ������������������������������������������������������������������������������������������������������������������������������������������������������������ ������ ��������� ��������� ��� ��� ��������� ��� ��� ������������������))))))))))))((((((((((((���(((((((((���''''''���''''''���'''&&&���&&&&&&���&&&&&&���%%%%%%%%%���%%%%%%%%%$$$$$$���$$$$$$$$$$$$############���#########""""""���""""""���"""!!!���!!!!!!���!!!!!!��� ��������������������������������������������������������������������������������������������������������������������� ������ ��� ��� ��� ��� ��� ��� ��� ��� ��� ������������)))))))))))))))(((((((((((((((((((((���''''''���''''''���'''&&&���&&&&&&���&&&&&&���%%%%%%%%%���%%%%%%%%%%%%$$$������������$$$$$$#########���#########""""""���""""""���"""!!!���!!!!!!���!!!!!!������������ ��������������������������������������������������������������������������������������������������������������������������������� ��� ������������ ��� ��� ��� ��� ��� ��� ������ ���������������������)))))))))))))))((((((((((((���������(((''''''���''''''���''''''���&&&&&&���&&&&&&������%%%%%%���%%%%%%%%%%%%$$$���$$$$$$���$$$$$$$$$######���############"""���""""""���""""""���!!!!!!���!!!!!!��� ��� ��� ��������������������������������������������������������������������������������������������������������������� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���������������))))))))))))))))))((((((���(((((((((((((((''''''������'''''''''���&&&&&&���&&&&&&���&&&���%%%%%%���������%%%%%%$$$������$$$$$$$$$$$$#########���������###""""""������""""""""""""���������!!!!!!!!!������ ��� ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ��� ������ ��������� ��������� ��� ��� ��� ��� ���������������������))))))))))))))))))((((((���(((((((((���(((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!���!!!!!!!!!!!! ������������������������������ ��� )))))))))))))))))))))((((((���������(((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!���!!!!!!!!!!!!!!! ������������������������������������ ��� ))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""���!!!!!!!!!!!!!!!!!! ��������������������������������� ��� ))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������� ������***))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������ ������������������***))))))))))))))))))))))))���������((((((((((((���������'''''''''���������&&&&&&&&&&&&&&&���&&&&&&%%%���%%%%%%���������$$$$$$$$$���������$$$$$$###���������######���"""""""""""""""���"""!!!!!!���������!!!!!!!!! ��� ��������������������������������������������������������������������������������������������������������������������������������������������������� ������ ��������� ��������� ������ ��� ��������� ��� ������������������������������������������������������������******))))))))))))))))))���)))((((((���((((((���(((((('''''''''���''''''''''''&&&&&&&&&&&&���&&&&&&���%%%%%%���%%%%%%%%%%%%$$$���$$$$$$���$$$$$$���######���######���###"""���""""""���""""""���!!!!!!!!!!!!!!!!!! ��� ��� ������������������������������������������������������������������������������������������ ��� ��� ��� ��� ��� ��� ������ ��� ��� ��� ��� ������������������������������������������������������*********))))))))))))))))))))))))(((���((((((������������''''''������������'''&&&&&&&&&&&&���&&&���&&&%%%%%%������������%%%%%%$$$���������$$$$$$���######���######���###"""���""""""���""""""������������!!!!!!!!!!!! ��� ��� ��������������������������������������������������������������������������������������������������������������������� ��� ��� ��� ��������� ��� ��� ��� ��� ��� ��� ��� ���������������������������������������������������������*********))))))))))))))))))���������(((((((((���((((((���''''''���''''''���''''''&&&&&&&&&������������&&&%%%���%%%%%%���%%%%%%$$$$$$$$$���$$$$$$���$$$###���######���###���"""���"""���""""""���!!!!!!���!!!!!!!!!!!! ��� ��� ������������������������������������������������������������������������������������������������������������������ ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���������������������������������������������������************))))))))))))���)))))))))((((((((((((������((((((''''''������''''''''''''&&&&&&���&&&&&&&&&���%%%%%%������%%%%%%%%%%%%������$$$$$$$$$$$$���������######���###���###���"""���"""""""""������!!!!!!!!!!!!!!!��������� ������ ��������������������������������������������������������������������������������������������������������������������������������������������������������������� ��������� ������ ��� ��� ��� ��������� ��� ���������������������������������������������������������������������������������������************))))))))))))���)))))))))���(((((((((((((((((((((((('''''''''''''''''''''&&&&&&���&&&&&&&&&���&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$���######������######"""������""""""""""""!!!!!!!!!!!!!!!!!!!!!��� ��������������� ��� ��� ��� ������������***************))))))))))))���������)))((((((((((((((((((((((((''''''''''''''''''''''''&&&������������&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$���######������#########������"""""""""""""""!!!!!!!!!!!!!!!!!!��� ��������� ��� ��� ��� ��������������� ������������******************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$���########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!������  ��� ��� ���������������******************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  *********************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%$$$$$$$$$###$#$$$$$#$##############################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%$$$"""!!!!!!###$$$###!!! !!!########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ************************)))(((&&&%%%%%%&&&''''''&&&$$$$$$%%%'''''''''%%%$$$###$$$$$$$$$######$$$&&&%%%%%%%%%#########$$$###"""!!!!!!!!!!!!  !""""""""" ! !!!!!!!!!!!!!""""""!!!!!! !!!!!!!!!  +++*********************)))&&&$$$""""""###$$$$$$"""!!! """$$$%%%$$$""" !!!!!!!!! """$$$%%%%%%###!!! """"""    !!!!!!!!!  ++++++******************)))&&&!!!!!!!!! ###&&&%%%"""������!!!!!!!!!  ++++++******************)))&&&##$!!!!!!$$$&&&&&&"""������!!!!!!!!!!!!  +++++++++***************��茱茱茱���茱茱茱�!!!!!!��茱茱茱�!!!��茱茱茱�!!!$$$&&&��茱茱���茱茱茱���茱茱茱���茱茱茱���茱茱����������!!!!!!!!!!!! ������������� ������������� ���������������������� ������  +++++++++***************)))&&&"""������!!!���%%%��� $$$���&&&"""  ###&&&%%%!!!������ ��� ���������������������������!!!!!!!!!!!!!!! ������������������������������������������������ ++++++++++++************((($$%������!!!��� ��� $$$'''���$$$"""%%%%%%������"""���"""������������������������!!!!!!!!!!!!!!!!!! ������������������������������������������������������� +++++++++++++++*********(((��茱茱������� ���!!!$$$'''%%%���"""%%%���###!!! ���""""""###���###��� ��� ���!!!������! ! �����茱������� !!!!!!!!!!!!!!!!!! ������������������������������������������������������ +++++++++++++++*********���&&&"""������"""���!!! ###%%%'''$$$ ��� ###&&&��茱茱�$$$���$$$$$$%%%���%%%��茱茱茱�!!!"""��茱茱茱�! !!!!###��茱茱� !���"""���!!!��茱����!!!!!!!!!"""!!!!!!!!!!!!!!!!!!!!! ������������������������������������������������������������ ++++++++++++++++++******���(((&&&$$$""####���###"""!!!���###%%%���%%&$$$%%%''''''%%%###���"""###%%%&&&''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$###############��� ! !!!""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ���������������������� +++++++++++++++++++++******��茱茱茱�&&&��茱茱茱�%%%&&&(((���((('''''''''��茱茱�%%%%%%&&&&&&''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$############���""""""!!!""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������������������� +++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!   ++++++++++++++++++++++++)))))))))))))))***))))))(((((('''&&&%%%%%%%%&&&&%%%%%%%%%&&&&&&'''&&&%%%$$$$$$%%%&&&&&&&&&&&&'''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!      ++++++++++++++++++++++++)))'''&&&&&&((()))(((&&&&&&%%%$$$###!!!!!!"""###"""!!! """###$$$###"""""""""#########$$$&&&''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!   ++++++++++++++++++++++++(((%%%"""##$%%%&&&%%%##$ !  !!!"""!!!"""%%%''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ���     �������  ������� ,,,+++++++++++++++++++++'''$$$ !!"  ###"""!!! """$$$'''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���     ���    ��� ,,,,,,++++++++++++++++++���###�����茱茱茱���茱茱������茱茱�###���!!! """$$$''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! �������������������������������������  ������������� �������������� ������� ������������ ��� ��������� ��� ��� ��� ��� ���������������� ������� ��� ������� ��� ��������� ,,,,,,++++++++++++++++++���"""���������"""���"""���������###���""" """$$$''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ��������������������������������������������������������������� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���  ������ ��� ���  ��� ���  ,,,,,,,,,+++++++++++++++���!!!���������%%%���$$$��������� """###!!!"""%%%'''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! �����������������������������������������������������������������  ��� ��� ��� ��� ��� ��� ��� ������� ��� ��� ��������� ��� ��� ��� ��� ��� ,,,,,,,,,+++++++++++++++���!!!������ ������""#'''���&&&���###!!!"""���"""���""""""""""""###���$$$$$$$$$&&&'''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ����������������������������������������������������������������������������� ��� ��������������� ��� ��� ��� ��� ��� ����� ��� ��� ,,,,,,,,,,,,++++++++++++���###������$$$������!!"&&&)))���(((��茱茱�%%&���%%%$$$��茱茱�%%%%%%���''''''&&&&&&''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���������������������������������������������������������������������������������������������������� �������������������������������������� ������ ��������� ,,,,,,,,,,,,,,,+++++++++��錱�$$$$$$'''��茱�##$##$&&&)))*********))))))))))))((('''&&&''''''(((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������� ,,,,,,,,,,,,,,,+++++++++��錱�(()(()***��錱�(((((())))))*********))))))))))))���(((((((((((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ��������������������������������� ,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��� ,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!   ,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!    ,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���       ,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���    ���    ,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���������������������������������������������������������������� ��� ���������� ��� ������ ������� ���������� ������ ��� ���������� ��� ��� ��� ��� ��������� ---,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������������������������������������������������ ��� ��� ������ ��� ��������� ������ ��� ��������� ������ ��� ��� ��� ��� ---,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!! ��������������������������������������������������������������� ��������������������� ������� ������� ������� ��� ��� ��������� ------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���������������������������������������������������������������������������������� �������� ��� ��� ��� ��� ------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������������������������������������������������������������������������������������������ ������������������� ���������������  ---------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������������������ ��� ���  ------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ������������������������������������������ ���  ------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ����������������  ---------------,,,,,,,,,,,,,,,++++*+)))((((((************)))))))))***))))))))))))((('''&&&&&&''''''(((((())))))))))))''''''%%%$$$$$$%%%&&&&&&$$$$$$$$$%%%&&&&&&&&&&&&%%%%%%%%%%%%$$$$$$$$$%%%$$$$$$######"""!!!!!!!!!""""""!!!!!!!!!"""###""""""###############"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ---------------,,,,,,,,,,,,+++***(((&&&%$%&&&'''(()(()'''&&&&&&&&&(((''''''&&&&&&%%%$$$##$##$%%%%%%&&&((()))))))))((('''$$$"""!!!!!!###$$$$$$"""!!!!!!"""""""""$$$$$$$$$""""""""""""""""""###""""""!!!     !"""###############"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  ------------------,,,,,,+++***((($$$!!! !!!###%%%%%%$$$!!!!!!!!!&&&&&&%%% ! $$$&&&))))))((('''%%%!!! """""""""""""""!!!!!!###############"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  ���  ---------------------,,,+*+((($$$""""""#"#"""""" $$$$$$###!!!%%%((()))(((%%%"""  !!! !!!!!!!!! !##################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���  ���  ---------------------,,,)))&&&��錱錱�'''%$%"""������ ���!!!��茱茱����"""'''(((&&&###��茱茱茱�$$$###��茱茱������������������茱茱茱���茱茱���� !##################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������������������������������������������������������� ������ ������� ��� ������ ���  ------------------------(((��� #"#'''���'''#"#��������� ������ %%&(((%%&��� %%%'''(((���"""������������������������������!!!#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������������������������������������������������� ��� ��� ��� ��� ������ ������  ------------------------���&&&!!!"""%$%'''���"""��������� ��錱茱茱����!!"%%%(((���### """%%%$$$���### ��������������������������� """########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!! ������������������������������������������������������������������ ������ ------------------------���((($$$""""""#"#���"""��� ������%%%���'''&&&���$$%��茱�$$$$$%%%&'''(((���%%%""" !!!"""���$$$$$$"""���"""���###!!! ���!!!�����茱� !!!��� ������ ���!!!���! ! !!!###$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!! ������������������������������������������������������������������������������������������������ ------------------------���+++((($$$!!! ���$$$��錱�"""��錱錱錱�$$$(((***��錱�((((((���)))���(((((()))(((���'''%%%""" ��茱茱�%%%%%%��茱茱茱�###$$$��茱����"""���$$$���"""��茱茱茱�"""��茱茱�"""!!!���#########$#$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!! �������������������������������������������������������������������������������� ...------------------------���***(((&&&���&&&(((���((((((���$$$###&&&(((++++++++++++***************************)))���'''%%%###""""""$$$%%%'''(((((((((((((((((('''''''''���$$$###$$$&&&&&&&&&%%%$$$��� !!!"""%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!! ���������������������������������� ......------------------------��錱錱�((()))+*+���++++*+���''''''(((***+++++++++++++++************************))))))��茱茱茱�%%%&&&''''''(((((((((((((((((('''''''''���&&&&&&&&&&&&&&&&&&���%%%���""""""###$$$%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!����������� ������������������������������������������������� ......------------------------------,,,,,,,,,,,,,,,,,,,,,���+++*********+++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&���%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��� .........---------------,,,+++***)))((()))+*++++++++*+)))((()))*********((('''((())))))(((&&&&&&&&&(((((())))))))))))((((((((('''&&&%%&%%&'''&&&'''''''''''''''''''''&&&%%%$$$$$$$$$%%%&&&$$$$$$$$$%%%$$$############$$$$$$$$$$$$$$$$$$$$$#########$#$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!! !!!!!!  ............------------+++)))&&&$$$$$$&&&((())))))(((&&&%$%&&&(((''''''%%%$$$%%%'''&&&%%%###""""""$$$%%%&&&&&&&&&&&&%%%%%%%%%$$$#########$$$$$$%%%%%%%%%$$$$$$$$$$$$###"""!!! !!!"""""""""""""""""""""!!! !!!"""!!!!!!"""""""""!!!!!! !!!###$$$$$$$$$$$$#####################"""""""""""""""""""""!!!  !!!  ............------------***&&&   "!"$$$&&&&&&### """$#$!!!  !!!###!!! """"""""""""""" #########!!!!!!!!!!!!!!! """$$$$$$$$$$$$########################"""""""""""""""""""""!!!  ...............---------)))$$$ ! !###"""!!!!!!  """###""" """!!!!!!!!!$$$$$$$$$$$$$$$#####################""""""""""""""""""""" ...............---------��錱錱錱�$$$%%%###��錱錱� ��錱錱�!!!"""��錱錱錱� �����������茱茱������������茱茱���������茱茱����������!!!$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""��������������������������������������������������������� ..................------���$$$ $$$���(((###��� ��� ��� """���!!!$$$���$$$������������������������ !!!������������������������!!!!!!$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""�������������������������������������������� .....................---���$#$!!!$$$���###���!!! ��� ���$#$"""  ���!!!!!!&&&���&&&�����������茱茱茱������������茱茱������������������� !!!"""$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""�������������������������������������������������������� .....................---���$$$ ! !���###���''''''&&&���&&&���((((((&&&%%%���&&&&&&(((���(((���%%%"""���""###$���$$%���&&&&&&���$$$���$$$"""!!!���###���"""$$$���###���������!!!!!!!!!���!!!���""" ��� !!!���"""!!!"""$$$$$$$$$$$$$$$$$$$$$$$$########################""""""""""""������������������������������������������������������������� ........................���&&&   ���%%%)))��錱錱�((()))+*+��錱錱�(((���(())))***���***��錱錱�&&&��茱�'''((()))��茱�''''''��茱茱茱�%%%&&&��茱�"""��茱�&&&&&&��茱����!!!"""��茱茱�######��茱茱茱�""""""$$$���$$$$$$$$$$$$%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""������������������������������������������������������������� ........................���)))&&&$$$���'&')))+++,,,---,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))���%%%$$$%%%'''(((((((((���$$$######$$$$$$%%%&&&'''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""��� !!!!!!��������������� ........................��錱錱錱�)))***+++,,,------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))���((('''''''''(((((((((���'''&&&���&&&&&&&&&&&&''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################""""""����������� !!!!!!!!!������ ���������������� ..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!���  ��� ..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################""""""!!!!!!!!!!!!!!!   ///..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""!!!  //////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################  //////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################  /////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$##################�������������������������������������������������� /////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$###############������������������������������������������ ////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$###############������������������������������������������������������ ///////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$############����������������������������������������������� ///////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$############����������� ��� ��� ���������������������������������������� //////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#########��� !��� !!!"""""""""!!!!!!!!!!!!!!!  ��������� //////////////////.................................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$######���"""""""""���!!!!!!!!!""""""""""""!!!!!!!!!!!!!!!���  ����������� /////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���������� ////////////////////////---,,,+++******+++,,,,,,+++******+++,,,,,,+++,,,,,,,,,+++)))(((((()))))))))(((((())))))************++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$######""" ! !!!!!!!!!!!!!!!!  !!!   ////////////////////////,,,***'''%%%&&&(((***)))''''''('()))***)))))))))******)))'&'%%%%%%'''&&&'''%$%%$%%%%'''''''''(((***+++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$""" ! ////////////////////////,,,'''!!! !!!$$$$$$""" """&&&'''$$$###$$$('('''### "!" ###%%%$$$'''(()+++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$"""  ////////////////////////***&&& !!!###%%%###!!!$$$$#$  ###"""  #"#$$$###&&&(((++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$### ���   ////////////////////////��録錱錱�&&&(((��錱錱�"""���! !��錱錱������錱錱� ���%$%$#$&&&(((++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$������������������������������������������������������������������������������������������������������� ��� �������  ////////////////////////���&&&"""%%%***���&&&  ���"""��� ��� ������"!"���%%%$#$&&&(((+++++++++++++++++++++***************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$### ������������������������������������������������������������������������������ ��� ���  000/////////////////////���&&&"""%%%***��錱錱錱� """���%%%���$$$$$$��錱錱錱�  ��� ���"!"%%%&&&%%%((((()++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$"""��������������������������������������������������������������������������������������������������� ��� ��������� 000/////////////////////���'''"""'''***���,,,***���((()))���***���))))))���)))(((���'''���"""��� %$%&&&���(((((()))+*+++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$"""���������������������������� ������������������������������������������������������������������������� ��� ������ 000000//////////////////���)))&&&))),,,...��錱�++++++���,,,,,,---���,,,+++��錱�******���%%%��錱錱�((()))���+*++*++++++++++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$��� ���������� ���!!!!!!!!!��� ����� ����������������������������������������������������������������������������������������������� 000000000///////////////���,,,***,,,---..............................------------------���('($$$('())),,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$���""" ��� !"""###"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ���������������������������������� 000000000///////////////���...---......///..............................---------------���***)))***+*+,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$��������� ���!!!!!!"""######""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������������������������������������������� 000000000000/////////////////////////////////..............................------------���,,,+++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! ��������������������� 000000000000000/////////...---,,,******,,,------,,,+++***+++,,,---,,,+++***))))))***+++,,,,,,,,,+++++++++)))(((((()))+*++++,,,++++*+((('''((())))))((('''((()))))))))'''&&&&&&'''((((((&&&%%&&&&'''((((((((((((((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$#$###############""""""!!! ! !!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!! !!!  000000000000000/////////...,,,)))''''''(((*********'''&&&'''*********'''%%%%%%$$$'&'('(*********))))))('(&&&$#$$#$%%%(((+*++++***(((%%%$$$%%%'''&&&%%%$$$%%%'''&&&&&&$$$""""""###%%%%%%######$$$%%%%%%%%%&&&((()))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%###!!! !!!!!!!!!     000000000000000000//////---***&&&"""""""""$$$&&&$$$"""!!!"""$$$%%%$$$"""  !!!('(('(('(######!!!!!! %%%)))+*+((($#$  !!!###!!!  !!!### !"""######%%%''')))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%!!!  000000000000000000//////...+++((($$$!!!!!! """!!!""""""""" !!! """!!!!!!%%%%%%%%%!!!$#$((()))&&& #"####"""   """!!!$$$&&&))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%!!!!!! 000000000000000000000///��録録録�!!!!!!��録録�!!!"""��錱錱錱�"""���!!!���"""��錱錱錱�#"#((((((��錱錱�""""""��錱錱���錱錱茱���茱茱����!!!!!!$$$&&&))))))((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%����������������������!!!���������������������� 000000000000000000000000---***&&&"""���"""���###""""""���"""��� &&&���&&&��� ���!!!��� !!!���#"#(((���&&& #"#���""" ��� ������������"""!!!$$$&&&)))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%������������������!!!��������������������� 000000000000000000000000,,,)))"""!!!���$$$���'''%%%"""���"""���$$$$$$(((���(((���!!!���!!!���$$$###!!!���"""(((���((($#$ ���###!!! ��� ���###!!! �����茱茱茱� !##$$$$###%%%'''))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%������������������������!!!��������������������������� 000000000000000000000000---��録録�!!!$$$���******(((���'''���******+++���+++���'''%%%%%%���'&'���))))))'&'���#"#(((���***(((&&&%%%���(((&&&%%%���%%%���''''''%%%������"""���$$%&&&���%%&%%%&&&((())))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%��������������������!!!��������������������������� 000000000000000000000000���,,,&&&"""""""""&&&��録録�+++,,,���,,,,,,---���---��錱錱錱�)))***+++��錱錱錱�""" %%%(((,,,��錱錱�((()))��錱錱�'''(((***��錱錱錱� ��茱�(((((()))���)))((((((((()))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%��� ��������""""""��������� !�����"""����������������������������� 000000000000000000000000���...***(((''''''))),,,...////////////..............................---------------���('($$$('())),,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++���&&&"""%%%'''***************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%���"""!!!���"""!!!! !"""###$$$$$$$$$###############��� ! !!!"""����������  000000000000000000000000000��録録録�***,,,---...////////////..............................---------------���***)))***+++,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++���((('''''')))******************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%���$$$$$$$$$���#########$#$$$$$$$$$$$$$############���""""""!!!""""""����� ����� !!! ���  000000000000000000000000000000000/////////////////////////////////..............................------------���,,,+++,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++���******))))))*********************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  111000000000000000000000///...---,,,***,,,------,,,+++,,,------,,,++++++,,,,,,+++******+++,,,---...------------------,,,+++***(((((()))******))))))+*++++***(()(()******+++*********))))))***))))))'''&&&&&&&&&''''''''''''(((((((((&&&&&&'''''''''&&&&&&'''&&&&&&&&&&&&&&&'''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%$$$$$$"""!!!!!!!!!!!!#####################!!!!!!!!!"""######"""!!!!!!"""""""""!!!  !!!!!!!!!!!!   111000000000000000000000...,,,(()'''''()))******(((((()))******((('''&&&(((((('''%%%%%%'''***,,,...------------------+++)))&&&$$$$$$&&&((('''&&&&&&(((((((((%%%%%%''')))******((('''''')))***)))&&&##$"""""#$$%%%%%%%$$$$$$%%%%%%%%%$$$###$$$$$$$$$######$$$%%%$$$###$$$&&&''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&$$$!!! !!!!!!! ! ! !!!!!!! !"""""" ! !!!  !!!!!!  111111000000000000000000---(()###!!!###$$$%%%""" """%%%$$$ """"""""" !!!'''+++------+++,,,,,,,,,+++)))&&& "!"$#$""" """$#$"""  """&&&'''%%%""" $$$&&&)))((($$$ """  !!!   """###!!!"""%%%''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&"""  ! !!!!!!!��� 111111000000000000000000,,,'''!!!"""$$%'''$$$ """""""""!!!!!! %%%***,,,+++))))))))))))((('''$$$  "!"""" !!!!!! ###&&&%%&""# ! !!! """$$$'''''''''''''''&&&&&&&&&&&&&&&&&&&&&""" !!!!!!���  111111111000000000000000��録録録�((())*��録録���録録���錱錱錱� $$$***+++)))$$$$#$#########��錱錱錱�!!!!!!��錱���錱����""#��茱茱茱���茱���茱���茱���� """$$$''''''''''''''''''&&&&&&&&&&&&&&&&&&�����������������������������!!!��������������������������������������������������������������������������������������� ��� ���   111111111111000000000000���'''###''',,,���((( ���%%%%%%������ """��� $$$***+++(((###""" ! !���%%%&&&%%%###��� ��� ������ ��� ���$$%$$%""#!!!��������������������� ###$$$''''''''''''''''''&&&&&&&&&&&&&&&&&&��� ������������������������ ��������������������������������������������������������� ��������������� ��� ���  111111111111000000000000���'''###''',,,��録録録�!!!$$$��録録�"""���%%%$$$"""���$$$***���***&&&$$$���###$#$###���&&&$#$!!!��������������錱錱錱錱� $$$%%%���%%%!!"������������������!!!"""$$$%%%'''''''''''''''''''''&&&&&&&&&&&&&&&��������������������������� ��������������������������������������������������������������������� ������������������ 111111111111111000000000���(((###(((,,,���...,,,���)))***,,,+++���)))���******(((��� $$$***���,,,��錱�***���)))('(('(���###! !��� ������������###$$$�����錱錱�''''''&&&��� !��������������茱����$$$$$$%%%'''''''''''''''''''''''''''&&&&&&&&&&&&������������! !���!!!! !����������������������� ������������������������������������������������������������������������ ������������������ 111111111111111111000000���***'''***---000��録�---,,,---��録�,,,,,,---��録録録�###!!!&&&***...���---,,,---���,,,***((($#$���!!!���$$$###��� ���$#$"""��� $#$���'''���""" %%%(((+++***'''"""������""" !������!!! ������!!! ��� ���&&&'''''''''''''''''''''''''''''''''&&&&&&&&&&&&������ """$$$���###��� ���! !������������������ !!!!!!������������������������������������������������������������������������������������������������������������� 111111111111111111000000���---,,,---...000000000000000///////////////////////////���(((%%%(((+++..................---,,,***('(���'&'���))))))���&&&���((((((���&&&(((***��錱�'''&&&'''***+++***(((%%%���$$$���&&&&&&���$$%���%%%%%%���$$$���%%%%%%���###$$$&&&'''((((((((((((''''''''''''''''''''''''&&&&&&&&&���""" """$$$%%%%%%%%%###"""���!!!����������!!!""""""""""""��� ��� ��������� 111111111111111111111000���///...//////000000000000000///////////////////////////���,,,***+++,,,.....................��錱錱�)))***+++��錱�***)))+*+��錱�))))))+*++++,,,���************+++��錱錱�&&&''')))��茱�(((((()))��茱�''''''(((��茱�''''''''''''(((((((((((((((((('''''''''''''''''''''&&&&&&&&&�����������!!!"""$$$$$$%%%%%%%%%���###���! ! !!!###�����!!!!!!"""�����!!! !!!"""""""""""""""��� !!!���  ��������� 111111111111111111111000000000000000000000000000000000000////////////////////////���...,,,------.....................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$���#########$#$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!! �������� 111111111111111111111111000000///...---,,,,,,,,,---...///......---,,,+++,,,------,,,+++,,,,,,,,,,,,,,,,,,+++***+++,,,,,,+++,,,,,,---------,,,+++***(((((()))***+++++++++++++*++++***+++************)))(((&&&&&&(((((((((((()))))))))(((((((((((((((&&&%%%%%%%%%''''''''''''%%%%%%%%%&&&&&&&&&&&&&&&&&&&&&&&&%%%$$$$$$###""""""###$$$$$$$$$$$$"""""""""$$$#####################"""!!! ! !"""###"""!!! !!!!!!!!!  111111111111111111111111111///...,,,)))''(((((()***+++---...---***(((((()))******((('''''')))*********)))'''&&&'''(((*********+++------,,,+++)))'&'%%%%$%&&&((()))++++*+)))(((((((()***(()'''''''''&&&$$$###"""$$$##$%%%%%%'''''''''%%%&&&((((((%%%###!!!!!!"""$$$&&&&&&$$$""""""###%%%$$$###"""###%%%%%%$$$""""""!!! """######!!!!!!!!!! ! ! !!!!!!!  """!!!  111111111111111111111111000...+++''($$$#########%%%%%%***,,,+++$$$ """%%%$$$ """$$$%%%%%%$$$"""!!!""""""$$$$$$('(***------+++)))$$$! !  #"#(((***)))'''$#$%%%''''''&&&$$$"""""" %%%%%%%%%"""$$$&&&&&&###!!!###"""""""""  ######"""!!!!!!  !"""��� 111111111111111111111111///,,,''(%%%%%%&&&(((%%&$$$"""&&&(((''(  """""" """"""""""""""""""$$$))),,,---***'''!!!   &&&)))(((%$% !!!"!""""!!! ############%%%%%%!!!  !!!""""""  """ ��� 111111111111111111111111--.***��録録録�,,,���$$$ ###$$$��録録���録録����!!!��錱錱�!!!"""���"""&&&+++,,,***��錱錱���� &&&)))���$#$ �����錱錱���������� ""#%%%��茱茱茱�!!!""" ��茱茱���� ���""" }�Ї���������������������������������������������������������������������������������������������������������������� 111111111111111111111111---���$$$%%&+++///000���&&& !!"���$$$ ���%%%%%%���������!!!""""""���"""��� $$$))),,,���&&& ��� """''')))���###��������� ������������$$$'''���!!!!!!���%%% ��������� ���!!! }�����!!!���������������������######��������������������������������������������������������������� 111111111111111111111111���***%%%&&&(((+++,,,���''(######��録録録�!!!$$$��録録�"""������"""$$$"""���"""���"""!!!"""$$$***+++���&&& ������###&&&)))+*+���"""��������錱錱���� ������"""&&&)))���!!!!!!��� ��茱茱茱���� ��� !!!!!!"""!!!����������������������������######������������������������ ������������������������������������������������ 111111111111111111111111���,,,(((&&&%%%&&&(((��録�(()))*���,,,+++���))****,,,+++���)))���$$$!!!���''')))'''���'''��錱�'''((()))+++,,,***��錱����&&&))),,,+++���"""������"!"��� %%%���&&&���%%%���###!!!"""���$$$&&&((()))���!!!��� ���$$$###���###$$$���$$$���$$$######���######������!!!"""��� ���!!!���!!!!!!���������###"""��������������������� ��������������������������������������������� 111111111111111111111111���///,,,(((%%%######���+++���......��録�---------��録�,,,,,,��録�%%%(((��録錱�***+++���,,,���,,,,,,------���)))$$$���!!!$$$)))+++---,,,���$$$������&&&�����錱�(()(()���'''��錱錱茱�&&&'''))))))***���##$���"""%%%��茱�&&&&&&���'''''''''���'''&&&���&&&&&&��� ���!!!�����$$$###���$$$$$$$$$���$$$��� ��������� ###"""���������� ������������������ ����������������������������������������������������������������� 222111111111111111111111111���///,,,***((((((***---///000000000000000000000////////////���,,,***,,,---//////...........................���+++)))���''')))+++,,,------��錱�%%%%%%(((��錱�%%%%%%'''***++++++***)))((()))*********************���&&&###!!!���###%%%'''((()))((((((((((((((((((((((((''''''''''''���### ��� """$$$%%%&&&&&&&&&%%%%%%%%%%%%%%%%%%$$$"""!!!"""###$$$��� !###"""���!!!"""""""""������ ��������� 222222111111111111111111111111��録録録�,,,---...///000000000000000000000000/////////���...---......//////..............................��錱�******+++,,,---------��錱�))))))+*+��錱�))))))+*+***++++++���******************************��茱茱茱�%%%&&&(((((()))))))))(((((((((((((((((((((((('''''''''���������######%%%%%%&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%���$$$######$#$$$$���!!! !"""###�����!!!!!!"""""""""""""""��� ��� ������������ 222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$���##############################"""""""""""""""����� ����� !!!!!! ������������� 222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////.................................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  222222222111111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  222222222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  222222222222222111111111111111111111111111111111111111000///...---+++++++++++++++,,,,,,,,,---...////////////////////////..................------++++++)))((((((((()()***+++,,,---,,,,,,+++***(((('(''''''((()))***+++++++++++++++++++++*********)))((('''&&&&&&&&&%%&'''((()))))))))))))))((((((((((((((((((((((((''''''''''''''''''&&&&&&$$$######""""""""""""!!!"""###$$$$$$###"""!!! ! !!!!#########"""  !!!"""###"""""""""!!!  222222222222222222111111111111111111111111111111111111111...+++&&&"""!!!!!!!!!!!!"""##$%%&'''***,,,.../////////////////////.........---,,,***'''$$$"""!!!  #"#'''+*+------+++)))%%%!!!"""&&&)))+++++++++++++++++++++)))'''%%%""" !!!%%%((())))))))))))((((((((((((((((((((((((''''''''''''&&&%%%###!!! ######  """"!" """###!!! 222222222222222222222111111111111111111111111111111111111---&&& %%%))),,,...///////////////......---***&&&!!!!!!(((,,,---+++%$%!!!'''***+++++++++++++++)))%%%!!!!!!&&&)))))))))))))))(((((((((((((((((((((((('''&&&%%%###     !!!!!!        222222222222222222222111111111111111111111111111111111111,,,""" &&&+++...///////////////---)))###&&&,,,---))) $$$***+++++++++***)))%%%%%%))))))))))))))))))((((((((((((((((((((('''$$$            ������ 222222222222222222222222111111111111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�����~sq`XMC=$$$***.../////////...***###A94q`W�~r���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@74&%&,,,,,,qb[Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����"""(((+++++++++)))$$$ dUN�si���Ŧ�Ŧ�Ŧ��si###((()))))))))))))))(((((((((((((((((('''%%%KA;cUM�}r��{Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KB>Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l]VŦ�Ŧ�Ŧ�Ŧ��}q B96{h_��zŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� \PIŦ�Ŧ�Ŧ�Ŧ�Ŧ�bSLaSK�rg���Ŧ�Ŧ�Ŧ��rg E=9Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ��������� 222222222222222222222222111111111111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����eWO$$$+++...//////,,,%%%H@<��{Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@74&%&,,,+++��Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�LA='''++++++***%%&gXQŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����###((())))))))))))))))))(((((((((((('''%%% dVO���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KB>Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l]VŦ�Ŧ�Ŧ�Ŧ��}q &$#�vlŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� ���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�$ cUMŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ���� E=9Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ������������ 222222222222222222222222222111111111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����5/,&&&,,,...---(((aTNŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@74&%&+++>:8Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�q`W%%%***+++(((,*)��}Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�71/ %%%((()))))))))))))))))))))(((((((((&&&"""<63��{Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l]VŦ�Ŧ�Ŧ�Ŧ��}q �wlŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� A94Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�{h^#!��{Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�3,)F>:Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ������������ 222222222222222222222222222222111111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�YMF(((---+++ZOJŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@74&%&+++fZSŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����""")))***0.-��~Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�i[S$$$(((((()))))))))))))))))))))(((((('''$$$>84���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l]VŦ�Ŧ�Ŧ�Ŧ��}q :41Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� �siŦ�Ŧ�Ŧ�Ŧ�Ŧ�$ $! ��|Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�eWOH?;Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ��������� 222222222222222222222222222222111111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84###***>:8���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�����pfŦ�Ŧ�Ŧ�Ŧ�Ŧ�@84&%&***�{pŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�4-+((((((yh`Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�|i`cUNcUNcUN\PJ%%%(((***))))))))))))))))))))))))(((&&&620���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l^WŦ�Ŧ�Ŧ�Ŧ��}q hZRŦ�Ŧ�Ŧ�Ŧ�Ŧ����|j`iZSk]VŦ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� $ Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��}q td[Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�zh^aSKaSKaSKXLFH?;Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ���   222222222222222222222222222222222111111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�MC=��wŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����($"&&&�riŦ�Ŧ�Ŧ�Ŧ�Ŧ��ti'%$&&&Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84&%&20/Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ�q`W%%%<86Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��~r&"!!!!''')))))))))))))))))))))))))))'''###��uŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����_SL731��wŦ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l^WŦ�Ŧ�Ŧ�Ŧ��}q ��tŦ�Ŧ�Ŧ�Ŧ���� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=41 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� n^UŦ�Ŧ�Ŧ�Ŧ�Ŧ�=402.+Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��}q# H?;Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK    222222222222222222222222222222222222111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!sd]Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��tj,*)Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��ti!!!***Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84%%%fYSŦ�Ŧ�Ŧ�Ŧ�dUO���Ŧ�Ŧ�Ŧ���{"""ziaŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����?73$$$(((***)))))))))))))))))))))'''cVPŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�|j`!!!$$$��wŦ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l^WŦ�Ŧ�Ŧ�Ŧ��}q ��tŦ�Ŧ�Ŧ�Ŧ�o^V Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ���z ve]Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����<4/ F>:Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ������������������ ��������� ������������������ ��� 222222222222222222222222222222222222111111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!+++l_YŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�4.+`TMŦ�Ŧ�Ŧ�Ŧ����"""+++Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84$$$�rhŦ�Ŧ�Ŧ�Ŧ�4-+�sŦ�Ŧ�Ŧ�Ŧ�(#"���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�KA<'''***)))))))))))))))))))))&&&���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�|i`######��vŦ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� l^WŦ�Ŧ�Ŧ�Ŧ��}q ��uŦ�Ŧ�Ŧ�Ŧ�bTM Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�UICŦ�Ŧ�Ŧ�Ŧ�Ŧ�UIC ���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�H>9 D<7Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ��������� ������ ������ ��� 222222222222222222222222222222222222222111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!+++000�~tŦ�Ŧ�Ŧ�Ŧ�Ŧ�}jaue\Ŧ�Ŧ�Ŧ�Ŧ��ti'''Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84#"#���Ŧ�Ŧ�Ŧ�Ŧ�hYRŦ�Ŧ�Ŧ�Ŧ�dUO&$#Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�dUN�tiŦ�Ŧ�Ŧ�Ŧ�Ŧ����&"!$$$)))***))))))))))))))))))eYRŦ�Ŧ�Ŧ�Ŧ�Ŧ����"""$$$ ��tŦ�Ŧ�Ŧ�Ŧ�Ŧ�>62 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� k\UŦ�Ŧ�Ŧ�Ŧ��}q �ndŦ�Ŧ�Ŧ�Ŧ�{h_ Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ���� $"!Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�bSL�rhŦ�Ŧ�Ŧ�Ŧ�Ŧ����# B95Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �sŦ�Ŧ�Ŧ�Ŧ�aRK ��������������������� ������ ������ 222222222222222222222222222222222222222111111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!+++000NHDŦ�Ŧ�Ŧ�Ŧ�Ŧ������tŦ�Ŧ�Ŧ�Ŧ�dVOŦ�Ŧ�Ŧ�Ŧ�Ŧ�@84XNIŦ�Ŧ�Ŧ�Ŧ��~rH?;Ŧ�Ŧ�Ŧ�Ŧ��~rF=:Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�[OIŦ�Ŧ�Ŧ�Ŧ�Ŧ��}r""#)))******))))))))))))(((�{pŦ�Ŧ�Ŧ�Ŧ�Ŧ�WKD$$$$$$�sŦ�Ŧ�Ŧ�Ŧ�Ŧ�?72 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� hYRŦ�Ŧ�Ŧ�Ŧ��}q j[TŦ�Ŧ�Ŧ�Ŧ���{ Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ�{h^ E=9Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� XKEŦ�Ŧ�Ŧ�Ŧ�Ŧ��|q @84Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �}rŦ�Ŧ�Ŧ�Ŧ�aRK ������������������������ 222222222222222222222222222222222222222222111111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!+++000000���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�5/,��tŦ�Ŧ�Ŧ�Ŧ�q`WŦ�Ŧ�Ŧ�Ŧ�Ŧ�@84xg^Ŧ�Ŧ�Ŧ�Ŧ�dUO(&%Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�C:7Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�[OIŦ�Ŧ�Ŧ�Ŧ�Ŧ�&"!"""(((******))))))))))))(((���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�$$$��x��u���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�?72 KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� cTMŦ�Ŧ�Ŧ�Ŧ��}q IA=Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�%! Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@<Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�bSLŦ�Ŧ�Ŧ�Ŧ�Ŧ�$  C;7Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� XKEŦ�Ŧ�Ŧ�Ŧ�Ŧ�# @73Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ �|qŦ�Ŧ�Ŧ�Ŧ�aRK ������������������������������������������ 222222222222222222222222222222222222222222222111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�!!!+++000000�vlŦ�Ŧ�Ŧ�Ŧ�Ŧ�YMF�wlŦ�Ŧ�Ŧ�Ŧ����4.+Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84���Ŧ�Ŧ�Ŧ�Ŧ�@74 ���Ŧ�Ŧ�Ŧ�Ŧ�XKF@84Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�LA<��{Ŧ�Ŧ�Ŧ�Ŧ�cUN###)))*********)))))))))=97Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����$$$Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�?72KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� ��{Ŧ�Ŧ�Ŧ�Ŧ��}q Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�VJD Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 H@=Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�{h^ @84Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�I?9 ��zŦ�Ŧ�Ŧ�Ŧ�aSK @84Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�;3/ Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�aRK ������������ 333222222222222222222222222222222222222222222111111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�""#+++000///sd]Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�eWOj[TŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ���{�~r�~rŦ�Ŧ�Ŧ�Ŧ�Ŧ�@84;41Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�#"#|lcŦ�Ŧ�Ŧ�Ŧ��tiŦ�Ŧ�Ŧ�Ŧ�Ŧ����@73'#!���Ŧ�Ŧ�Ŧ�Ŧ�cUN%%%)))************))))))RJEŦ�Ŧ�Ŧ�Ŧ�Ŧ��}r###Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�?72LD?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��}q�}q���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�o^V �zpŦ�Ŧ�Ŧ�Ŧ���{ Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51 IA=Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� {h_Ŧ�Ŧ�Ŧ�Ŧ���� Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����=40 $ ���Ŧ�Ŧ�Ŧ�Ŧ�aSK B:6Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��|q�|q�|qŦ�Ŧ�Ŧ�Ŧ�Ŧ���z�|q���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�H=9������������������ 333333222222222222222222222222222222222222222222111111111Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�"""((),,,**+paZŦ�Ŧ�Ŧ�Ŧ�Ŧ�eWO3.-Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�@84j[TŦ�Ŧ�Ŧ�Ŧ���{%%%i\VŦ�Ŧ�Ŧ�Ŧ�Ŧ���}Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�dUO!!!'''***************))))))RJEŦ�Ŧ�Ŧ�Ŧ�Ŧ��}rŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�E<8MEAŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�YLF"""dXRŦ�Ŧ�Ŧ�Ŧ�Ŧ�%! Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�=51IA=Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� 0*(Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�bSL ��|Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�bSLE<8Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�&! ��� 333333222222222222222222222222222222222222222222222111000Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�"""""# �wmŦ�Ŧ�Ŧ�Ŧ�Ŧ�eWO rd\Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�E<8��~Ŧ�Ŧ�Ŧ�Ŧ�lc"""(((@<:Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�OE?VKFŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�1-+ &&&)))******************)))SJFŦ�Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�F>:"""OGBŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����"""$#$$$$���Ŧ�Ŧ�Ŧ�Ŧ�p`WŦ�Ŧ�Ŧ�Ŧ�Ŧ�@84KB>Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� ��tŦ�Ŧ�Ŧ�Ŧ����QGAŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�*&$H?;Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�}ja��� 333333333222222222222222222222222222222222222222222111///Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�A94##$,,,tf_Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�NFB:64Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�dWQ$$$(((+++---���Ŧ�Ŧ�Ŧ�Ŧ��pg"""%%%|kcŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�xg_$$$''')))*********************)))310Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�?73?72@84@84A94@84@84@84A94 !!!PGCŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����@:7!!!###$$$$$$$$$ziaŦ�Ŧ�Ŧ�Ŧ����Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�H?;KC?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� \PIŦ�Ŧ�Ŧ�Ŧ�Ŧ�]QJwg^Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�scZIA=Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��t" ��� 333333333222222222222222222222222222222222222222222222...QIEIA=A95A95A95A95)%$��{Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�)%$(((...000976ug_�vl��z��z��z��y��y��y��y��y��yJD@^TO��z��z��y��y��y@;9+*+,,,,,,---~ne��z��y��y��y�}r)))***+++UMH�}r���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ���xfYS((()))***+++************************)))���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ����?72 E?<��x��x��x��w��w��w��w��w��wyh`cWP.,+$$$$$$%%%%%%$$$$$$953��x��w��w��w��wLD?!!!��w��w��w��w��wA;8 !!!MD@Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� �xn��w��v��v��v�pfKC?�yn���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ���u_SL?85��v��u��u��u��u��u��u��u��u��u��u��u��u��u��u��u��ui[SG?:������ 333333333333222222222222222222222222222222222222222222�~t��y��u�~s�~s�~s�~s�~s�~s�~s��|Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��~s$$%,,,///000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,@<:UMHTLHTLHIC@******+++++++++++++++***************************rc\Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�����}r�}r�}r�}r�}r�}r�}r�}r|i` &&&''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""MD@Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� !!!!!! 51/KC?KC?KB>?96������������ 333333333333333222222222222222222222222222222222222222�tŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�H@<##$+++///000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************310���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�|i`"""&&&''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################""""""MD@Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� !!!!!! ��������������� 333333333333333222222222222222222222222222222222222222whaŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�xg^%%&+++...000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************g[UŦ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�LB=$$$''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""MD@Ŧ�Ŧ�Ŧ�Ŧ�Ŧ� !!!!!!!!!  333333333333333333222222222222222222222222222222222222FA?Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�pbZ))),,,///000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************g[U���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�%#"###&&&''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""MEAŦ�Ŧ�Ŧ�Ŧ�Ŧ� !!!!!!!!!!!!  333333333333333333222222222222222222222222222222222222222���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�����uk@<:---///000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))>:8|lc���Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ�Ŧ��zo###$$$%%%''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################MEAŦ�Ŧ�Ŧ�Ŧ�Ŧ� !!!!!!!!!!!!  333333333333333333333222222222222222222222222222222222222OIFYQMXOKXOKXOKXOKXOKXOKXOKXOKXOK000000001111000000000000000000000000000000000/////////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))SJFSJFRJERJEQIEQIEQIEQIEQIE<86''''''''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################.,+MEAMEAMD@MD@MD@!!!!!!!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333222222222222222222222222222222222222222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333222222222222222222222222222222222222222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************)))))))))))))))))))))))))))(((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$#####################""""""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333333222222222222222222222222222222222222222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333333333333222222222222222222222222222222222222222222111111111111111111111111111111111111111000000000000000000000000000000000/////////////////////////////////..............................---------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,+++++++++++++++++++++++++++************************))))))))))))))))))))))))((((((((((((((((((((((((((('''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$$$$#####################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!!!!  333333333333333333333333333333333333333222222222222222222222222222222222222222222222111111111111111111111111111111111111000000000000000000000000000000000000//////////////////////////////..............................------------------------------,,,,,,,,,,,,,,,,,,,,,,,,,,,++++++++++++++++++++++++***************************))))))))))))))))))))))))((((((((((((((((((((((((''''''''''''''''''''''''&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$$$########################"""""""""""""""""""""!!!!!!!!!!!!!!!!!!!!!  TRUEVISION-XFILE. === data-archive/gnukem_data-b50a69cbe864f6f8e30c82d719f7e46c57d9ad38/README.md === # Dave Gnukem data subfolder This is the 'data' subfolder for this game: https://github.com/davidjoffe/dave_gnukem NB by default the game looks in a subfolder with name "data" (not "gnukem_data") to find its data, though that may change (and should ideally become a bit more flexibly configurable someday in future) **NB This folder is essential for the game to run** To use this using git, clone the main game, e.g.: $ git clone https://github.com/davidjoffe/dave_gnukem.git gnukem $ cd gnukem $ git clone https://github.com/davidjoffe/gnukem_data.git data $ cd .. OR: @ git clone https://github.com/davidjoffe/dave_gnukem $ cd dave_gnukem $ git clone https://github.com/davidjoffe/gnukem_data data $ cd .. Thereafter, if fetching updates, you must separately update the main folder and the data subfolder. You can do this in one go with a command like: git pull && cd data && git pull && cd .. # Source Files for Data See https://github.com/davidjoffe/gnukem_datasrc # License and Additional Credits Most of the data/sprites for Dave Gnukem are dual-licensed under MIT license or GPL. With respect to particular **data items**, the following license conditions apply: * 2018-03-22 Add boots sprite made by freepik.com, from flaticon.com, license Creative Commons BY 3.0 * 2017-08-04 Add font data/fonts/simple_6x8.tga by http://www.zingot.com/ from https://opengameart.org/content/bitmap-font-pack License https://creativecommons.org/licenses/by/3.0/ (small changes made to color, and convert from PNG to TGA) * 2016-10-30 data/sounds/soft_explode.wav From same Juhani Junkala collection as per below * 2016-10-30 data/sounds/key_pickup.wav http://opengameart.org/content/key-pickup author Vinrax, license 'CC BY 3.0' https://creativecommons.org/licenses/by/3.0/ * 2016-10-30 data/sounds/jump.wav and data/sounds/jump_landing.wav From same Juhani Junkala collection as per below * 2016-10-23 data/sounds/shoot\_cg1_modified.wav Slightly modified version of cg1.wav from http://opengameart.org/content/chaingun-pistol-rifle-shotgun-shots by Michel Baradari http://michel-baradari.de/ "Sounds (c) by Michel Baradari apollo-music.de Licensed under CC BY 3.0 http://creativecommons.org/licenses/by/3.0/ Hosted on opengameart.org" * 2016-10-23 data/sounds/sfx\_weapon_singleshot7.wav by Juhani Junkala (CC0 creative commons license) ("The Essential Retro Video Game Sound Effects Collection [512 sounds]") * 2016-10 Thanks to daveywavey @ livecoding https://www.livecoding.tv/daveywavey/ for help with setting up github repo Apart from the abovementioned, all other data included with 'version 1' is dual-licensed under MIT license or GPL. Additional game data credits: Apart from the abovementioned, most the sprites were done by David Joffe (with some major contributions by Evil Mr Henry http://www.emhsoft.com/ including the main character sprites). Steve Merrifield made major level editing contributions. Apologies if anyone left out. === licenses/Emscripten-MIT-NCSA.txt === Emscripten is available under 2 licenses, the MIT license and the University of Illinois/NCSA Open Source License. Both are permissive open source licenses, with little if any practical difference between them. The reason for offering both is that (1) the MIT license is well-known, while (2) the University of Illinois/NCSA Open Source License allows Emscripten's code to be integrated upstream into LLVM, which uses that license, should the opportunity arise. The full text of both licenses follows. ============================================================================== Copyright (c) 2010-2014 Emscripten authors, see AUTHORS file. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ============================================================================== Copyright (c) 2010-2014 Emscripten authors, see AUTHORS file. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal with the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimers. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimers in the documentation and/or other materials provided with the distribution. Neither the names of Mozilla, nor the names of its contributors may be used to endorse or promote products derived from this Software without specific prior written permission. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE SOFTWARE. ============================================================================== This program uses portions of Node.js source code located in src/library_path.js, in accordance with the terms of the MIT license. Node's license follows: """ Copyright Joyent, Inc. and other Node contributors. All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ The musl libc project is bundled in this repo, and it has the MIT license, see system/lib/libc/musl/COPYRIGHT The third_party/ subdirectory contains code with other licenses. None of it is used by default, but certain options use it (e.g., the optional closure compiler flag will run closure compiler from third_party/). === licenses/GPL-2.0.txt === GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. === licenses/libogg-BSD.txt === Copyright (c) 2002, Xiph.org Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Xiph.org Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. === licenses/libvorbis-BSD.txt === Copyright (c) 2002-2020 Xiph.org Foundation Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - Neither the name of the Xiph.org Foundation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. === licenses/SDL2-mixer-zlib.txt === Copyright (C) 1997-2024 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. === licenses/SDL2-zlib.txt === Copyright (C) 1997-2025 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. === source-archive/dave_gnukem-fbda206d0aac575146b01179330484ccf1569aab/COPYING === GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. === source-archive/dave_gnukem-fbda206d0aac575146b01179330484ccf1569aab/README.md === # Dave Gnukem Dave Gnukem is a retro-style 2D scrolling platform shooter similar to, and inspired by, Duke Nukem 1 (~1991). The source code is cross-platform and open source. It runs on Windows, Linux, Mac OS X and more. (The original Duke Nukem 1 had 16-color EGA 320x200 graphics; the aim here is 'similar but different' gameplay and 'look and feel'. It is kind of a parody of the original. Please note it is not a 'clone', and not a 're-make'.) ![Dave Gnukem Screenshot](https://scorpioncity.com/dave_gnukem/gallery/Dave%20Gnukem%200.90%20%2813%20Jan%202018%29.png "Dave Gnukem Screenshot") **Good news :)** Dave Gnukem is available in the latest official **Debian, Ubuntu, Kali, Raspbian, Devuan** & more! You can finally just "**sudo apt install davegnukem**" to install, then "**davegnukem**" to run. Even on Windows WSL! (Or use your preferred package manager to install.) **29 Nov 2022: Version 1.0.3 released**: First official stable SDL2-based version, with new 'formally maintained' Debian package files (both SDL2 support and Debian packages done by Matteo Bini), as well as Ubuntu, Raspbian etc. **News Apr 2018: Version 1.0 released.** Apr 2019 OpenBSD port. (Apr 2020: Version 1.0.1 released.) (19 Nov 2022: 1.0.2 and 1.0.3 update to SDL2! Also adding OS/2 port) **Release Downloads:** https://sourceforge.net/projects/gnukem/ **Direct Download Link:** https://sourceforge.net/projects/gnukem/files/latest/download?source=files * To install on Windows you can also use: ``` winget install "Dave Gnukem" OR winget install DavidJoffe.DaveGnukem ``` **Source code repository:** https://github.com/davidjoffe/dave_gnukem * **Repository for datasrc:** https://github.com/davidjoffe/gnukem_datasrc (optional) * **Repository for 'data' subfolder:** https://github.com/davidjoffe/gnukem_data **Official project page**: https://djoffe.com/gnukem/ **Mini Demo Video**: https://youtu.be/Hi7WYnOA_fo **Donations or Sponsorship Needed**: https://www.paypal.com/paypalme/davidjoffe ### Who is to blame for this? Created by: [David Joffe](https://davidjoffe.github.io/) ◆ [@davidjoffe](https://github.com/davidjoffe) ◆ [djsoftware](https://djsoftware.tech/) ◆ [LinkedIn](https://linkedin.com/in/david-joffe-50771b4/) ◆ [X](https://x.com/d_joffe/) The project was originally created and maintained by David Joffe (~1994 to 2004, and Oct 2016 to present). It was maintained by EMH (Evil Mr Henry http://www.emhsoft.com/) from 2004 to 2008. Additional contributions by: [T.O.G](https://www.nuke24.net/ "T.O.G."), [Vytautas Shaltenis](https://rtfb.lt/), Kent Mein, Steve Merrifield, Felix Richter, Kevin Joffe. See also 'Additional Credits' below. As of 8 Oct 2016, this project is under 'properly' active development again, and **on 3 Apr 2018, 'version 1.0' has been released**. (Note - this game wasn't 'retro genre' when I started it - it just took so long to complete that it's now 'de facto' "retro"! - David) ### About Duke Nukem 1 Duke Nukem 1 was a famous original 16-color 320x200 'classic' game released by Apogee Software in 1991 that launched the Duke Nukem series: https://goo.gl/yP4PbS The original Duke Nukem 1 was created by Todd Replogle (co-creator of the Duke Nukem series), John Carmack (of id Software), Scott Miller (founder of 3D Realms), Allen H. Blum III, George Broussard, and Jim Norwood. ### Help Wanted * **Translators wanted** to help with **localization** (see https://github.com/davidjoffe/dave_gnukem/issues/178) - Work has begun on translating the game into other languages, such as French! :) * [✅ done] ~~Help Wanted: Packages for major Linux distros, e.g. Debian, Ubuntu~~ * Packages/ports for remaining not-yet-supported Linux distributions, and any other platforms, or consoles. See https://repology.org/project/dave-gnukem/versions as a guide to existing packages Dave Gnukem added to the Arch Linux AUR (Arch User Repository) 🙂 (Added May 2020 by https://github.com/caltlgin) * https://aur.archlinux.org/packages/dave-gnukem * https://aur.archlinux.org/packages/dave-gnukem-git (build from git master) Spotted: openSUSE Leap packages :) (seemingly by Martin Hauke) * https://software.opensuse.org/package/dave_gnukem * https://opensuse.pkgs.org/15.2/games-x86_64/dave_gnukem-1.0.1-lp152.1.1.x86_64.rpm.html (the description here is perfect to me - dj) * https://opensuse.pkgs.org/15.2/games-x86_64/dave_gnukem-data-1.0.1-lp152.1.1.noarch.rpm.html ### Notes Note the aim of Dave Gnukem is not to be a 'clone', nor to try match DN1 gameplay precisely - the goal is to be 'similar but different', sort of a parody though not terribly funny. It's not the purpose or intention of this project to produce a 'clone', nor is it the intention to try load actual original level or sprite data into this 'engine'. The included levels have been created from scratch by users. The included sprites (apart from a few small exceptions mentioned at the bottom of this README) have been drawn by hand from scratch. The game is sort of a hat tip to the original. - David Joffe ## Gameplay Instructions Try find the exit, while dodging or shooting monsters. ### Default Keys: * Left/Right: Move left/right * Ctrl: Jump * Alt: Shoot * Up Arrow: Action key (for e.g. opening doors, using teleporters or lifts, activating the exit, etc.) * Escape: In-game menu * 7/6: Increase/decrease volume * Insert: Toggle sounds on/off * Shift+F6/F7: Dec/Inc speed (framerate) * Shift+F8/F9: Toggle map and sprite auto-shadows on/off, respectively * F10 Save screenshot To open doors, find the correct color key, and press the action key on the 'lock' nearby the door(s). Power boots allow you to jump higher. The special molecule pickup gives you full health. ### Storyline/Plot: The year is $CURRENTYEAR+8. An evil genius, Dr Proetton, has been hired by the CIA to infect the world's computers with a virus called SystemD, crippling them. Only you can stop him. You must find the floppy disk with the Devuan Antivirus on it, and install it on the main computer, which is hidden in Vault7. *Any resemblance to actual persons or entities is purely coincidental* TL;DR Shoot anything that moves ## Features * Now with less crashes * Game taking forever to complete, like Duke Nukem Forever * Shootable bananas * Integrated level editor * Subliminal messages * Puns * Now with extra-retro simulated EGA/CGA settings, you'll feel like you're in the 90s again or your money back * Evil SuperTux* * SystemD integration * Big rockets * Software doesn't spy on you * Cutting edge lighting effects you'd expect from 1990 * Family friendly * Teleporters * Fans that blow you ;) * Something that sort of resembles a cannon on wheels * Nostalgic references to technology nobody uses anymore * Red balloons * Arcane command-line parameters nobody will use * Overweight hero to represent rise in obesity rates since original 1991 release * A surprisingly bearable 18 frames per second * A good time killer when baking * Detects and corrects wrongthink * Bugs older than your children * Procedurally generated bugs * Safe for use during pregnancy * Makefiles (from the 90s) to struggle with, like the 90s * Gluten-free * Supports resolutions nobody owns anymore * Ask your parents what CGA/EGA/VGA means * Floors * Walls * May cause "Is beauty subjective?" debates * Doors * Much much more! \* "Evil SuperTux": Kindly note that no disrespect is intended here toward SuperTux: In this game the SuperTux's have only turned evil due to being infected by the SystemD virus. Save the world by finding the Devuan Antivirus, and they'll be cured. # Ports * Dave Gnukem on repology: https://repology.org/project/dave-gnukem/versions ("Versions for dave-gnukem") * Flathub Flatpak release of Dave Gnukem https://flathub.org/apps/details/com.djoffe.gnukem (~2023 by Matthias Mailänder) * OS/2 port by Andreas Peters (~2022/11 merge of ~2020 https://github.com/davidjoffe/dave_gnukem/pull/128) * Debian official (~2022 - Matteo Bini; https://github.com/enigma9o7, https://github.com/bgermann; Craig Langman) * Bodhi Linux Dec 2021 efforts: https://bodhilinux.boards.net/thread/892/packaged-dave-gnukem-silly-retro * Open Pandora: https://repo.openpandora.org/?page=detail&app=davegnukem-magicsam - release thread: https://pyra-handheld.com/boards/threads/dave-gnukem.79533/ (by https://github.com/sviscapi and https://github.com/ptitseb) * MorphOS (Mar 2018, by Bruno Peloille): https://www.morphos-storage.net/?page=Games%2FShoot+2D&file=Davegnukem_1.00.lha * Instructions for ClockworkPi GameShell: https://forum.clockworkpi.com/t/lets-play-dave-gnukem/1917 by: https://forum.clockworkpi.com/u/Oet * OpenBSD (Apr 2019, by Dr. [Brian Robert Callahan](https://briancallahan.net/)) https://openports.pl/path/games/gnukem * HaikuOS (see discussion thread and instructions here https://discuss.haiku-os.org/t/gaming-on-haiku/3928/74) [22 June 2020] * HaikuOS Instructions: (to check - confirm these instructions are right for SDL2?) ~> pkgman install libsdl2_devel ~> pkgman install sdl_mixer_devel Then follow the same instructions as for Linux, e.g. git clone the src, cd into src folder, git clone the gnukem_data into 'data' folder, and 'make' * Also in HaikuPorts: https://github.com/haikuports/haikuports/tree/master/games-action/dave_gnukem # Awards and Reviews * "a good time killer when I'm baking" - Alessia_Amelia (Jan 2019) # FAQ (Frequently Asked Questions) * Q: 'The scrolling is choppy' or 'framerate low'? * A: The code can handle smoother scrolling and faster frame rates by tweaking settings and gameplay code, but is deliberately soft-limited to 18 frames per second (and the scrolling behaviour intended to mimic the original) because the original DN1 behaved close to this, and the point is to offer a nostalgic similar retro 'look and feel' (and thus also frame rate and scrolling behaviour) of the original Duke Nukem 1, which was designed to run on the much slower computers of that era (I used to play DN1 on an 80286 with 16-color EGA graphics in the '90s, and if you've ever had to code for EGA you'd also understand - dj) - so that anyone who also played the original should experience some nostalgic familiarity. * Q: Why is the game resolution 320x200? * A: The original Duke Nukem 1 had 320x200 16-color EGA-mode graphics ("Enhanced Graphics Adapter", an early video standard that supported 16 colors; many games of the time used 320x200). Since this game is intended as a sort of 'retro parody' it deliberately uses the same original resolution (and frame rate) in order to offer some retro nostalgic recognition and familiarity in look and feel and gameplay, especially for those who played the original. (David Joffe note: The first computer I did 'serious' programming on was an 80286 with EGA display adapter in the 1990s, and I spent quite a lot of time playing the original Duke Nukem 1 - I loved the game - and around ~1994 I started working on a very early [x86 assembly language DOS/EGA version](https://github.com/davidjoffe/dj-90s-assembly-source) of what went on to become Dave Gnukem when in ~1995 I started this C++ version. So this wasn't a retro game when I started it - it just took so long to complete it that by the time version 1 was completed, I noticed everyone was calling it a "retro game", so it's now de facto "retro". I felt during development that if one deviates from 320x200 it feels much less like a 'retro parody of Duke Nukem 1'.) The game source code can support higher resolutions - these are controlled by config options - so the 'engine' could be used to make higher-resolution games, and with higher frame rates and smoother scrolling (with some tweaking). * Q: What does the "Don't quit" menu option do? * A: It does just what it says, it doesn't quit the game * Q: Why does it say "Ordering info" in the menu? * A: A small parody and retro recognition item, because the original shareware Duke Nukem 1 had that in the menu - but since this is open source, we add a "not" right after that is [also very 1990s](https://en.wikipedia.org/wiki/..._Not!) # Roadmap [Here's a roadmap](https://upload.wikimedia.org/wikipedia/commons/a/a8/Paris_printable_tourist_attractions_map.jpg) ### Development LiveStreaming Channels Development live-stream channel(s): * (liveedu/livecoding now defunct: liveedu.tv/david_joffe/) * https://www.twitch.tv/david_joffe/ * https://www.youtube.com/user/davidjoffe2 (partial archive) # History / Changes Recent: * ~2023 Localization work in progress (e.g. to be able to translate Dave Gnukem to French and other languages) 2022/11/29 - Version 1.0.3 First official stable SDL2-based version, with new formally maintained Debian package files * New improved Debian package files by Matteo Bini * First official stable SDL2-based version with Matteo Bini's updates to SDL2 * New in-game fullscreen toggle 2022/11/19 - Version 1.0.3-dev ~2022 - Work on Debian support and Debian packaging - user contributions by Matteo Bini, https://github.com/enigma9o7, https://github.com/bgermann, Craig Langman * [19 Nov 2022] Integrating Matteo Bini's implementation of updating the source from SDL1 to SDL2 * [19 Nov 2022] Integrating Andreas Peters OS/2 port! Matteo Bini implemented SDL2 support (including also contributions for Debian support) https://github.com/davidjoffe/dave_gnukem/pull/135/commits/0f0022b9921982062eb7a93d2aef9a90459f3d33 2022/11/19 - Version 1.0.2 Final SDL1-based release, about to switch to SDL2 * [19 Nov 2022] Final offical SDL1-based release: https://github.com/davidjoffe/dave_gnukem/releases/tag/1.0.2 (https://github.com/davidjoffe/dave_gnukem/releases/tag/1.0.2 (final official SDL1-based source code - if an old downstream port needs to be on SDL1 for some reason we suggest using that 1.0.2 release) 2021 - User work for Bodhi Linux port: https://bodhilinux.boards.net/thread/892/packaged-dave-gnukem-silly-retro 2020/04/25 - Version 1.0.1 * [11 Jun 2019] New 'Retro Settings' menu option with 'extra retro' settings/effects for simulated EGA 16-color and CGA 4-color graphics options. You'll feel like you're back in the 90s or your money back. [NB: currently little-endian platforms only] * [6 Jun 2019] Incorporate OpenBSD build fixes by Dr. Brian Robert Callahan https://github.com/jasperla/openbsd-wip/commit/e51e3a3b9386365cd0eb8317018463ff4682e0d3 * [10 Apr 2018] Tentative fix for XP and ReactOS support (relating to SetProcessDPIAware stuff) * [4 Apr 2018] Got it running on TrueOS (use make -f Makefile.bsd) **2018/04/03 - Version 1.0** * [3 Apr 2018] Change it so that you must first turn cheat/debugging stuff (Ctrl+Shift+G) on before using F4 or F5 for sprite/level editor * [1 Apr 2018] Add Shift+F10 to start/stop auto-save screenshot-per-frame sequence (warning, eats disk space very fast) 2018/03/31 - Version 0.96 * [30 Mar 2018] Change volume control keys from PgUp/PgDn to 7/6 (as PgUp/PgDn conflict on some keyboards, e.g. Pandora, and also some laptops don't have 'actual' PgUp/PgDn etc.) * [30 Mar 2018] Add 'About' page to main menu * [30 Mar 2018] Add new F10 save screenshot function (saves on Windows under \Users\USERNAME\AppData\Roaming\DaveGnukem\screenshots and on Linux under $HOME/.gnukem/screenshots) * [26 Mar 2018] Bugfixes and level improvements (also fixed a level bug where one of the levels was impossible to complete) * [22 Mar 2018] Boot sprite; Improve Dr Proetton (Dr Proton) sprite and behavior * [20 Mar 2018] Fix overly-large window if Windows DPI scaling settings are enabled (unfortunately the fix breaks Windows XP support - but you can enable djWINXP_SUPPORT in config.h if you want to generate a build that supports Windows XP) 2018/03/11 - Version 0.91 * [11 Mar 2018] Create a Windows installer * [22 Jan 2018] Add 'easter egg' [arin_j stream viewer suggestion] * [22 Jan 2018] Level editor highlights instances of selected sprite (yellow), and sprite selection mouse-over sprite (cyan) (F3 toggles this ON/OFF if/when it gets annoying) * [13 Jan 2018] New slightly experimental map auto-shadows and sprite auto-drop-shadows * [13 Jan 2018] New shortcut keys Shift+F8/F9: Toggle map and sprite auto-shadows on/off, respectively * Overhauled shooting/bullets code * Level Editor: New "Ctrl+F7" command shows overview of all levels, and some basic stats on 'important' gameplay items * Ctrl+Shift+W Large gameplay viewport mode (currently classified as a 'cheat') * All cheat keys (and debug/testing keys like H to inflict self-damage) must now first be enabled by pressing Ctrl+Shift+G to enable in-game debugging stuff * New cheat Backspace+PgUp increases firepower by one (added for testing) * Numerous bugfixes and gameplay tweaks 2017/08/12 - Version 0.81 [Linux/Mac source release, Windows source and binary]: * Add water * Add very basic Dr Proetton ('final boss') and basic foundations of game ending sequence when you beat Dr Proetton * Add jump-monster * Add rockets * Level Editor: New "Ctrl+Alt+N" command to generate a new blank level (NB: Still needs to be added manually to default.gam!) * Fix a couple of bugs relating to jump height and powerboots 2017/08/05 - Version 0.72 [Linux/Mac source release, Windows source and binary]: * Add new 'sort of looks like a cannon on wheels' monster type * Implemented new inventory pickup item 'antivirus disk' and corresponding 'main computer' (when we insert "AV" (anti-virus) disk into main computer we save the world) (should only be one of each of these, and in last level of a 'mission') * Add new high-voltage "barrier" that must be shot multiple times to destroy before hero can pass through (touching it results in immediate death) * Add new monster that constitutes the approximate equivalent of DN1 rabbits (for now, or maybe permanently, this is just a sort of 'evil Tux' - not sure yet if placeholder sprite, or part of plot) * Add new floor type that auto-crumbles after hero walks or jumps twice on it (2nd spriteset, position 5x4 - place only 1 block per segment) * Re-do instructions screens to display storyline/plot * Basic more proper/correct implementation of the CAcme falling blocks * Fixed: Bullets go through doors 2017/06/22 - Version 0.71 [Linux/Mac source, binary Windows only]: * Add new 'flying robot' monster type * Implemented access card and access card 'door' and door activator * Added special molecule pickup that gives you full health * Level Editor: Add unsaved-changes indication * Level Editor: Add level statistics page (Ctrl+F6) * Improve character control: Make vertical jumping/falling movement a bit smoother (more similar to the original DN1) * Improve viewport vertical auto-scrolling * New keyboard shortcuts: Shift+F6/F7: Dec/Inc speed (framerate) * Fix soda can not animating 2017/06/22 - Version 0.70 [Linux/Mac source, binary Windows only] * Add new basic 'Instructions' option to in-game menu * Fix: Potential game 'freeze' in teleporter if exiting level editor (or holding in action key) * Added "-scale N" command line option (1 = 320x200, 2=640x400, etc.) (if passed, this overrides the default behavior of attempting to "intelligently" select the scale factor based on e.g. desktop resolution etc.) * Fix: "Key polling behavior is subtly incorrect" (this should slightly improve the character control, especially if trying to move left/right one block only) * Minor sprite and level improvements * Add hero jump/landing sounds (credit for the sounds: Juhani Junkala), key pick-up sound, and more * Increase gameplay viewport width from 12 to 13 blocks 2016/10/29 - Version 0.66 [Linux/Mac source, binary Windows only] * Add shortcut key to toggle sounds on/off (Insert) * Fix: On Windows, game window often starts slightly off bottom of screen * Fix: Restore Game from main menu doesn't work * Fix: Save/Restore game doesn't save "mission" (i.e. selected "game") * New proper exit sound (is "PowerUp13.mp3" by Eric Matyas https://soundimage.org/) * Fixed: A monster could kill you in the moments after you entered the exit * Better hero shooting sound 2016/10/22 - Version 0.63 / 0.64 / 0.65 * Add background music. So far, have only added music by Eric Matyas https://soundimage.org/ * Add game volume controls (use 7 and 6 keys to increase/decrease volume from menus or in-game) * Level Editor: New feature: Hold in Ctrl+Alt and click with the mouse to automatically start level with hero 'dropped in' to the clicked position as starting position (to help with level editing / testing) 2016/10/16 - Version 0.62 * Get Dave Gnukem compiling and running on Mac OS X: https://www.livecoding.tv/david_joffe/videos/jbBvb-dave-gnukem-c-game-side-scrolling-shooter-9 * Miscellaneous minor aesthetic improvements 2016/10/10 - Version 0.61 * Fix: "Dying in the pungee sticks will often cause a crash" (thank you to porter who pointed that out) * Fix a segfault in Linux (possibly VNC only?) when navigating in-game menus and other sub-menus * Add semi-experimental 'big viewport mode' (Backspace + B in game to toggle) to make level creation/testing easier for level editors 2016/10/09 - Version 0.6 (0.60) * Use last EMH release; create github project https://github.com/davidjoffe/dave_gnukem * Fixed 'tiny game window' * Fix some Linux compile issues, make a few other fixes/improvements (streamed on LiveCoding), call it v0.6 ('un-abandoning' project - DJ) 1994 - 2016 - See HISTORY.txt for 1994 - 2016 history 1994/02/22 [david] - Crude origins as a 16-bit x86 assembler implementation (dj: found the old assembly source: https://github.com/davidjoffe/dj-90s-assembly-source) # Developer Info / Build Info **Dependencies: LibSDL2, LibSDL-Mixer 2** ## Windows Build Instructions * Visual Studio 2010 project is included. * **NB** You must set your Visual Studio 'Working Directory' to ../../ in order to run this (under Project / Properties / Configure Properties / Debugging) or it won't find the data files and just immediately exit on run * If you get an error about not finding SDL DLL(s) when running, set 'Project / Properties / Configure Properties / Environment' to: PATH=c:\your\path\to\DLLs;%PATH% ## Linux Build Instructions Either download the source code archive, or get the latest source code with git. Make sure the 'data' subfolder is also present. The latest source code and data archives can be downloaded here (these should generally be stable and the best option to download): https://github.com/davidjoffe/dave_gnukem/archive/master.zip https://github.com/davidjoffe/gnukem_data/archive/master.zip (after extracting, rename this folder to just 'data' as that's what the game looks for) GETTING THE LATEST SOURCE AND DATA FOLDER USING GIT: To get the latest source with git, you need two repos, the source code, and the data, which must be exactly cloned into 'data' under the main folder: $ git clone https://github.com/davidjoffe/dave_gnukem.git gnukem $ cd gnukem $ git clone https://github.com/davidjoffe/gnukem_data.git data $ cd .. BUILDING: Type 'make' (BSD variants: Try 'make -f Makefile.bsd' rather.) Run with ./davegnukem if it built correctly (NB, it must find the 'data' folder) NB: FIRST INSTALL DEPENDENCIES: How to install dependencies on Debian, Ubuntu etc.: $ sudo apt-get install libsdl2-dev $ sudo apt-get install libsdl2-mixer-dev (NOTE: If you don't have libsdl-mixer1.2 for whatever reason and you just want to get it compiling without sound, you can add -DNOSOUND to the CCFLAGS in the Makefile, and remove -lSDL_mixer from the Makefile LIBS setting.) ## SDL1.2 or SDL2? On 19 November 2022 we made an official change from LibSDL1.2 (now very old) to LibSDL2 (thanks to Matteo Bini for that). https://github.com/davidjoffe/dave_gnukem/releases/tag/1.0.2 (final official SDL1-based source code - if an old downstream port needs to be on SDL1 for some reason we suggest using that 1.0.2 release) So for builds prior to this, the dependencies would be e.g. along the lines "sudo apt-get install libsdl1.2-dev" and "libsdl-mixer1.2-dev". Henceforth, it should be e.g.: libsdl2-dev, libsdl2-mixer-dev SDL2 brings various potential advantages. ## Mac OS X Build Instructions Same as Linux - type 'make'. Run with ./davegnukem if it built correctly (and data subfolder present) Installing Dependencies: If using macports, you should be able to just do: % sudo port install libsdl2 % sudo port install libsdl2_mixer Then as with Linux, type 'make' and run with "./davegnukem" if it built correctly (and data subfolder present) (Alternatively, you could install LibSDL2 and LibSDL-Mixer2 by downloading the source code and doing 'make' and 'make install' (as root) for each of these first). ## Windows Installer Build Instructions To build a Windows installer, use Inno Setup 5. Note: As of Apr 2020 it is still recommended to use the older 'version 5' of Inno Setup (and not versions 6 or higher) as Inno Setup version 6 appears to have dropped support for Windows XP, which we still support (this also indirectly allows ReactOS support) The basic process of building a Windows installer is as follows (this process is still a little crude/unrefined and may require a bit of hackery if you're trying to do this): * Build the source code so you have the game's .exe (updating version number and date in main.cpp if/as desired to change it) * Set up a local folder, e.g. c:\src\gnukem\src\installer\ApplicationFolder\ which is basically a mirror of what the installed "\Program Files\Dave Gnukem" is going to look like, containing the data subfolder, .exe, DLLs, license files, README.md etc. Remember to codesign the exe and DLLs if you can. * Open c:\src\gnukem\src\installer\gnukem.iss in Inno Setup * Make any changes to reflect your own local build differences, e.g. if you're using a different folder location to the default c:\src\gnukem * Update the version number * Compile it in Inno Setup. It will generate something like Dave_Gnukem_Setup.exe ... rename to add the version number * Code-sign the generated Setup .exe * Test the generated Setup .exe # Level Editor Instructions (New 1 Jul 2017) Level Editor how-to video: https://youtu.be/xiznDqg2BHg Note there is currently no 'undo', so be careful. If happy with a set of work, save your changes. NB: All in-game cheat/debugging keys (eg level up) must first be turned on by pressing Ctrl+Shift+G * NB: As of Apr 2018, you must first turn cheat/debugging stuff (Ctrl+Shift+G) on before using F4 or F5 for sprite/level editor * F5 from within the game invokes the level editor * F1: Save current changes (NB: there is currently no 'unsaved changes' warning, so remember to save your changes, if desired) * Escape: Exit level editor and start playing current level * Hold in Ctrl+Alt and click with the mouse to drop in hero and start playing/testing level at the clicked position * X: Toggle display/editing of 'foreground layer' (there are two 'layers', the background layer primarily for solid stuff, e.g. walls, and the foreground layer generally for e.g. objects or monsters, or other semi-transparent objects) * Z: Toggle display/editing of 'background layer' * M,N: Previous/Next spriteset. There is a left-click and right-click "sprite palette"; clicking the left or right mouse button in the map preview area places an object from the left-click or right-click palette, respectively. Click in the spriteset with the left or mouse button to select that sprite object to either the left or right-click "sprite palette". * To select the hero start position in the map, select and place either the 2nd-last or 3rd-last object in the first spriteset (it looks like a figure with a left or right arrow, which indicates the start direction). There should only be one of these per level. * To place the exit position in the map, select and place the last object in the first spritset. There should only be one of these per level. * 1-9: Macros: Float the mouse cursor in the map preview area and press one of these shortcuts to place from a few pre-defined complex objects, e.g. crates. * F: Do a 'horizontal fill' of the current selected sprite (on the current layer) * To choose the desired level, use the Up+L 'cheat' from within the game * To choose the desired 'game' i.e. 'mission' (i.e. set of levels), use the main game menu 'Select mission' * Ctrl+F6: Show level sprite instance statistics * Ctrl+F7: Show overview of all levels, with some basic stats on 'important' gameplay items Game Cheats Useful for Testing: * Up+L - Next level * Backspace+P - Get Powerboots * Backspace+G - 'God Mode' * Backspace+PgDn - Get all keys, access card, antivirus disk, and full firepower * H - Damage Health Note that for active animated objects that consist in the spriteset of multiple sprites (e.g. each conveyor belt piece has 4 sprites, for its animation), you *must* place the *first* of the four in the map for the object to work correctly. Keep in mind that once the hero has the powerboots, he'll be able to jump higher. So there is a sort of logical progression if you place powerboots in a level, i.e. they should be placed once per 'mission' (i.e. set of levels), and levels prior to that should assume the default lower jump height, levels after that point might possibly assume the higher jump height. To add a new 'mission' (i.e. set of levels), edit the missions.txt file and add a new line containing the name of your .gam file, e.g. "mygame/mygame.gam" (without quotes). (You should try keep all files associated with a particular game/mission in its own subfolder.) To add/remove levels for that game/mission, edit the .gam file (see the included .gam files to see the format). # TODOs (To Sort - many done now): * Localization (in progress) * Videos? * Check through code for possible buffer over-runs? * 'Texture Manager': * Clean up of 'textures' * Actual hardware accel if available [todo: proper blending] * Restoring hardware surfaces on toggle fullscreen with DirectX (is this no longer an issue now we're on SDL? or still something one must do with SDL?) (low) * Explosion sound doesn't always play (fixed 2016-10-22 but fix could use more testing, cf. channel -1 story) * DEV * Set up working folders to work 'out the box', so to speak * [med] Level Editor is hogging CPU [check sprite editor, does it also?] * Check for all possible hardcoded keys that may be interfering with redefined keys (e.g. Ctrl, H, backspace+G etc.) * More better graphics * Signed executables in binary release? * [check] Dying seems to reset score to 0 - is that right? Cf. DN1 behavior * Is the -640 flag now basically obsolete? Remove? Or change to do something else useful? E.g. to make window maximum size e.g. same as monitor could be useful for level editing. ## Sprite TODOs: * Some of the background brick colors should be a bit darker * Some smoothing on some of hard pixely 'lines' (e.g. on shadow edges) * Un-EGA-ish sprites that still look a bit too EGA-ish (some of the especially ones look a bit too 16-color-ish perhaps, though the original DN1 was 16 colors) * Red background pipes look a bit .. I dunno what .. chromatic? Maybe desaturate slightly .. or something # Notes The name is a pun on 'Duke Nukem' and 'Gnu' as a sort of 'hat-tip'/reference to the open source license/model. The game took forever to complete to mimic the Duke Nukem Forever model of taking forever to be released. The underlying 'engine' supports high frame rates and smooth scrolling etc.; the reason the frame rate is artificially capped to 18fps is that the earliest versions (~1994/1995-ish) were written for 16-bit 8086/80286, which used hardware timer interrupts that ran at around 18Hz. (Though it's possible to uncap the frame-rate, the CThing's are unfortunately currently hardcoded for 18Hz, so they just run silly-fast if one uncaps the frame rate ... if writing a new game or a 'version 2' it should be easy to use a higher frame rate and write new CThing's movement code to be based on time-passed-since-last-frame or some-such. Likewise the blocky viewport scrolling itself should be easy to replace with smooth viewport-scrolling.) # License and Additional Credits The source code itself (and most of the data/sprites) for Dave Gnukem are dual-licensed under MIT license or GPL. With respect to particular **data items**, the following license conditions apply: * 2023-11 Add Pixel Operator fonts (these are licensed "CC0 1.0 Universal": public domain) * 2018-03-22 Add boots sprite made by freepik.com, from flaticon.com, license Creative Commons BY 3.0 * 2017-08-04 Add font data/fonts/simple_6x8.tga by http://www.zingot.com/ from https://opengameart.org/content/bitmap-font-pack License https://creativecommons.org/licenses/by/3.0/ (small changes made to color, and convert from PNG to TGA) * 2016-10-30 data/sounds/soft_explode.wav From same Juhani Junkala collection as per below * 2016-10-30 data/sounds/key_pickup.wav http://opengameart.org/content/key-pickup author Vinrax, license 'CC BY 3.0' https://creativecommons.org/licenses/by/3.0/ * 2016-10-30 data/sounds/jump.wav and data/sounds/jump_landing.wav From same Juhani Junkala collection as per below * 2016-10-23 data/sounds/shoot\_cg1_modified.wav Slightly modified version of cg1.wav from http://opengameart.org/content/chaingun-pistol-rifle-shotgun-shots by Michel Baradari http://michel-baradari.de/ "Sounds (c) by Michel Baradari apollo-music.de Licensed under CC BY 3.0 https://creativecommons.org/licenses/by/3.0/ Hosted on opengameart.org" * 2016-10-23 data/sounds/sfx\_weapon_singleshot7.wav by Juhani Junkala (CC0 creative commons license) ("The Essential Retro Video Game Sound Effects Collection [512 sounds]") * 2016-10 Thanks to daveywavey @ livecoding https://www.livecoding.tv/daveywavey/ for help with setting up github repo Apart from the abovementioned, all other data included with 'version 1' is dual-licensed under MIT license or GPL. Additional game data credits: Apart from the abovementioned, most the sprites were done by David Joffe (with some major contributions by Evil Mr Henry http://www.emhsoft.com/ including the main character sprites). Steve Merrifield made major level editing contributions. Apologies if anyone left out. # Additional Development Credits * ~2022 Matteo Bini entirely developed and contributed updates of the code from SDL1 to SDL2 - https://github.com/davidjoffe/dave_gnukem/pull/135 * ~2021/2022/2023- Valuable contributions for Debian, Ubuntu etc. support (see https://github.com/davidjoffe/dave_gnukem/pull/131 discussion) - amongst others: Matteo Bini https://github.com/enigma9o7 https://github.com/bgermann Craig Langman === source-archive/dave_gnukem-fbda206d0aac575146b01179330484ccf1569aab/src/credits.cpp === /********* credits.cpp Copyright (C) 1999-2024 David Joffe *********/ #include // for NULL #include "djtypes.h" #include "credits.h" #include "menu.h" #include "graph.h" djImage *pImageCredits = NULL; // todo this should just be a generic "DoOK" or "DoDialog" or something? const struct SMenuItem creditsMenuItems[] = { { false, " " }, { true, " OK " }, { false, " " }, { false, "" } }; unsigned char creditsMenuCursor[] = { 128, 129, 130, 131, 0 }; CMenu creditsMenu ( "credits.cpp:creditsMenu" ); void InitCredits() { // Load credits bitmap pImageCredits = new djImage; pImageCredits->Load(djDATAPATHc(DATAFILE_IMG_CREDITS)); djCreateImageHWSurface( pImageCredits ); creditsMenu.setSize ( 0 ); creditsMenu.setItems ( creditsMenuItems ); creditsMenu.setMenuCursor (creditsMenuCursor); creditsMenu.setClrBack( djColor(0,0,0) ); creditsMenu.setXOffset (240); creditsMenu.setYOffset (92); } void KillCredits() { djDestroyImageHWSurface(pImageCredits); djDEL(pImageCredits); } void ShowCredits() { // First time? if ( !pImageCredits ) InitCredits(); // Display credits bitmap djgDrawImage( pVisBack, pImageCredits, 0, 0, pImageCredits->Width(), pImageCredits->Height() ); GraphFlip(true); // Pop up credits menu do_menu( &creditsMenu ); } === source-archive/dave_gnukem-fbda206d0aac575146b01179330484ccf1569aab/src/credits.h === /*! \file credits.h \brief Credits screen \author David Joffe Copyright (C) 1999-2024 David Joffe */ #ifndef _CREDITS_H_ #define _CREDITS_H_ //! Show credits screen extern void ShowCredits(); extern void KillCredits(); //! Credits "skin" (image file) #define DATAFILE_IMG_CREDITS "credits.tga" #endif