From 19c6be7e1b007241822f8d8d00ef1ff999aaa0ea Mon Sep 17 00:00:00 2001 From: Miriam Ruiz Date: Sun, 1 Apr 2012 15:00:47 +0200 Subject: [PATCH] Initial version of the engine --- .gitignore | 0 avatars/crono/back.gif | Bin 0 -> 688 bytes avatars/crono/back_run.000.gif | Bin 0 -> 723 bytes avatars/crono/back_run.001.gif | Bin 0 -> 682 bytes avatars/crono/back_run.002.gif | Bin 0 -> 723 bytes avatars/crono/back_run.003.gif | Bin 0 -> 729 bytes avatars/crono/back_run.004.gif | Bin 0 -> 683 bytes avatars/crono/back_run.005.gif | Bin 0 -> 723 bytes avatars/crono/back_walk.000.gif | Bin 0 -> 707 bytes avatars/crono/back_walk.001.gif | Bin 0 -> 677 bytes avatars/crono/back_walk.002.gif | Bin 0 -> 700 bytes avatars/crono/back_walk.003.gif | Bin 0 -> 705 bytes avatars/crono/back_walk.004.gif | Bin 0 -> 683 bytes avatars/crono/back_walk.005.gif | Bin 0 -> 703 bytes avatars/crono/front.gif | Bin 0 -> 733 bytes avatars/crono/front_run.000.gif | Bin 0 -> 775 bytes avatars/crono/front_run.001.gif | Bin 0 -> 737 bytes avatars/crono/front_run.002.gif | Bin 0 -> 720 bytes avatars/crono/front_run.003.gif | Bin 0 -> 772 bytes avatars/crono/front_run.004.gif | Bin 0 -> 735 bytes avatars/crono/front_run.005.gif | Bin 0 -> 710 bytes avatars/crono/front_walk.000.gif | Bin 0 -> 770 bytes avatars/crono/front_walk.001.gif | Bin 0 -> 725 bytes avatars/crono/front_walk.002.gif | Bin 0 -> 717 bytes avatars/crono/front_walk.003.gif | Bin 0 -> 767 bytes avatars/crono/front_walk.004.gif | Bin 0 -> 739 bytes avatars/crono/front_walk.005.gif | Bin 0 -> 708 bytes avatars/crono/left.gif | Bin 0 -> 636 bytes avatars/crono/left_run.000.gif | Bin 0 -> 710 bytes avatars/crono/left_run.001.gif | Bin 0 -> 874 bytes avatars/crono/left_run.002.gif | Bin 0 -> 677 bytes avatars/crono/left_run.003.gif | Bin 0 -> 710 bytes avatars/crono/left_run.004.gif | Bin 0 -> 859 bytes avatars/crono/left_run.005.gif | Bin 0 -> 665 bytes avatars/crono/left_walk.000.gif | Bin 0 -> 693 bytes avatars/crono/left_walk.001.gif | Bin 0 -> 774 bytes avatars/crono/left_walk.002.gif | Bin 0 -> 649 bytes avatars/crono/left_walk.003.gif | Bin 0 -> 689 bytes avatars/crono/left_walk.004.gif | Bin 0 -> 797 bytes avatars/crono/left_walk.005.gif | Bin 0 -> 662 bytes avatars/crono/sleep.000.gif | Bin 0 -> 705 bytes avatars/crono/sleep.001.gif | Bin 0 -> 758 bytes engine/__init__.py | 19 + engine/actor.py | 170 + engine/common.py | 18 + engine/game.py | 240 + hero.py | 27 + main.py | 60 + .../examples => maps}/graphics/tiles/collision.png | Bin .../examples => maps}/graphics/tiles/desert1.png | Bin .../examples => maps}/graphics/tiles/desert2.png | Bin .../examples => maps}/graphics/tiles/desert_x2.png | Bin .../examples => maps}/graphics/tiles/desert_x3.png | Bin .../examples => maps}/graphics/tiles/desert_x5.png | Bin .../examples => maps}/graphics/tiles/tictactoe.png | Bin .../graphics/tiles/trans_woodland-desert.png | Bin .../graphics/tiles/tulimshar1.png | Bin maps/map.tmx | 257 + maps/template-32x32.png | Bin 0 -> 2225 bytes .../tiledtmxloader => tiledtmxloader}/__init__.py | 0 .../helperspygame.py | 0 .../helperspyglet.py | 0 .../tiledtmxloader => tiledtmxloader}/tmxreader.py | 0 tiledtmxloader3/LICENSE.txt | 25 - tiledtmxloader3/MANIFEST.in | 7 - tiledtmxloader3/README.txt | 38 - tiledtmxloader3/doc/make.bat | 170 - tiledtmxloader3/doc/source/conf.py | 224 - tiledtmxloader3/doc/source/generate_modules.py | 274 - tiledtmxloader3/doc/source/index.txt | 23 - tiledtmxloader3/examples/001-1.tmx | 258 - .../examples/00_load-a-map/00_load_map.py | 79 - tiledtmxloader3/examples/00_load-a-map/_path.py | 21 - .../01_load_and_render_pygame.py | 132 - .../examples/01_resources_and_rendering/_path.py | 21 - .../examples/02_render_features/02_1_layers.py | 151 - .../examples/02_render_features/02_2_scale.py | 162 - .../02_render_features/02_3_parallax_scrolling.py | 145 - .../examples/02_render_features/02_4_collapse.py | 151 - .../02_render_features/02_5_dynamic_sprites.py | 212 - .../examples/02_render_features/_path.py | 21 - .../examples/03_mini_game/03_1_mini_game.py | 183 - .../03_mini_game/03_2_mini_game_coll_detection.py | 271 - tiledtmxloader3/examples/03_mini_game/_path.py | 21 - tiledtmxloader3/examples/README.txt | 55 - tiledtmxloader3/make-dist.bat | 12 - tiledtmxloader3/setup.py | 35 - tiledtmxloader3/test/__init__.py | 1 - tiledtmxloader3/test/invalid_version.tmx | 18 - tiledtmxloader3/test/map.tmx | 12 - tiledtmxloader3/test/map_flip.tmx | 12 - tiledtmxloader3/test/mini2/mini2.tmx | 10 - tiledtmxloader3/test/mini2/mini2_alt.tmx | 12 - tiledtmxloader3/test/mini2/mini2x.png | Bin 26252 -> 0 bytes tiledtmxloader3/test/mini2/mini2x.tsx | 4 - tiledtmxloader3/test/mini3/mini3.tmx | 10 - tiledtmxloader3/test/mini3/tileset/mini3x.png | Bin 26252 -> 0 bytes tiledtmxloader3/test/mini3/tileset/mini3x.tsx | 4 - tiledtmxloader3/test/mini4/mini4.tmx | 10 - .../test/mini4/tileset/graphics/mini4x.png | Bin 26252 -> 0 bytes tiledtmxloader3/test/mini4/tileset/mini4x.tsx | 4 - tiledtmxloader3/test/minix.png | Bin 26252 -> 0 bytes tiledtmxloader3/test/minix.tmx | 18 - tiledtmxloader3/test/minix.tsx | 4 - tiledtmxloader3/test/minix_base64_gzip.tmx | 11 - tiledtmxloader3/test/minix_base64_gzip_dtd.tmx | 12 - tiledtmxloader3/test/minix_base64_uncompressed.tmx | 11 - tiledtmxloader3/test/minix_base64_zlib.tmx | 11 - tiledtmxloader3/test/minix_cvs.tmx | 76 - tiledtmxloader3/test/minix_using_tsx.tmx | 10 - tiledtmxloader3/test/minix_xml.tmx | 6742 -------------------- tiledtmxloader3/test/testtiledtmxloader.py | 171 - tiledtmxloader3/test/watertileset3qb2tg0.png | Bin 95276 -> 0 bytes tiledtmxloader3/todo.txt | 114 - 114 files changed, 791 insertions(+), 9968 deletions(-) create mode 100644 .gitignore create mode 100644 avatars/crono/back.gif create mode 100644 avatars/crono/back_run.000.gif create mode 100644 avatars/crono/back_run.001.gif create mode 100644 avatars/crono/back_run.002.gif create mode 100644 avatars/crono/back_run.003.gif create mode 100644 avatars/crono/back_run.004.gif create mode 100644 avatars/crono/back_run.005.gif create mode 100644 avatars/crono/back_walk.000.gif create mode 100644 avatars/crono/back_walk.001.gif create mode 100644 avatars/crono/back_walk.002.gif create mode 100644 avatars/crono/back_walk.003.gif create mode 100644 avatars/crono/back_walk.004.gif create mode 100644 avatars/crono/back_walk.005.gif create mode 100644 avatars/crono/front.gif create mode 100644 avatars/crono/front_run.000.gif create mode 100644 avatars/crono/front_run.001.gif create mode 100644 avatars/crono/front_run.002.gif create mode 100644 avatars/crono/front_run.003.gif create mode 100644 avatars/crono/front_run.004.gif create mode 100644 avatars/crono/front_run.005.gif create mode 100644 avatars/crono/front_walk.000.gif create mode 100644 avatars/crono/front_walk.001.gif create mode 100644 avatars/crono/front_walk.002.gif create mode 100644 avatars/crono/front_walk.003.gif create mode 100644 avatars/crono/front_walk.004.gif create mode 100644 avatars/crono/front_walk.005.gif create mode 100644 avatars/crono/left.gif create mode 100644 avatars/crono/left_run.000.gif create mode 100644 avatars/crono/left_run.001.gif create mode 100644 avatars/crono/left_run.002.gif create mode 100644 avatars/crono/left_run.003.gif create mode 100644 avatars/crono/left_run.004.gif create mode 100644 avatars/crono/left_run.005.gif create mode 100644 avatars/crono/left_walk.000.gif create mode 100644 avatars/crono/left_walk.001.gif create mode 100644 avatars/crono/left_walk.002.gif create mode 100644 avatars/crono/left_walk.003.gif create mode 100644 avatars/crono/left_walk.004.gif create mode 100644 avatars/crono/left_walk.005.gif create mode 100644 avatars/crono/sleep.000.gif create mode 100644 avatars/crono/sleep.001.gif create mode 100644 engine/__init__.py create mode 100644 engine/actor.py create mode 100644 engine/common.py create mode 100644 engine/game.py create mode 100644 hero.py create mode 100755 main.py rename {tiledtmxloader3/examples => maps}/graphics/tiles/collision.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/desert1.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/desert2.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/desert_x2.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/desert_x3.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/desert_x5.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/tictactoe.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/trans_woodland-desert.png (100%) rename {tiledtmxloader3/examples => maps}/graphics/tiles/tulimshar1.png (100%) create mode 100644 maps/map.tmx create mode 100644 maps/template-32x32.png rename {tiledtmxloader3/tiledtmxloader => tiledtmxloader}/__init__.py (100%) rename {tiledtmxloader3/tiledtmxloader => tiledtmxloader}/helperspygame.py (100%) rename {tiledtmxloader3/tiledtmxloader => tiledtmxloader}/helperspyglet.py (100%) rename {tiledtmxloader3/tiledtmxloader => tiledtmxloader}/tmxreader.py (100%) delete mode 100644 tiledtmxloader3/LICENSE.txt delete mode 100644 tiledtmxloader3/MANIFEST.in delete mode 100644 tiledtmxloader3/README.txt delete mode 100644 tiledtmxloader3/doc/make.bat delete mode 100644 tiledtmxloader3/doc/source/conf.py delete mode 100644 tiledtmxloader3/doc/source/generate_modules.py delete mode 100644 tiledtmxloader3/doc/source/index.txt delete mode 100644 tiledtmxloader3/examples/001-1.tmx delete mode 100644 tiledtmxloader3/examples/00_load-a-map/00_load_map.py delete mode 100644 tiledtmxloader3/examples/00_load-a-map/_path.py delete mode 100644 tiledtmxloader3/examples/01_resources_and_rendering/01_load_and_render_pygame.py delete mode 100644 tiledtmxloader3/examples/01_resources_and_rendering/_path.py delete mode 100644 tiledtmxloader3/examples/02_render_features/02_1_layers.py delete mode 100644 tiledtmxloader3/examples/02_render_features/02_2_scale.py delete mode 100644 tiledtmxloader3/examples/02_render_features/02_3_parallax_scrolling.py delete mode 100644 tiledtmxloader3/examples/02_render_features/02_4_collapse.py delete mode 100644 tiledtmxloader3/examples/02_render_features/02_5_dynamic_sprites.py delete mode 100644 tiledtmxloader3/examples/02_render_features/_path.py delete mode 100644 tiledtmxloader3/examples/03_mini_game/03_1_mini_game.py delete mode 100644 tiledtmxloader3/examples/03_mini_game/03_2_mini_game_coll_detection.py delete mode 100644 tiledtmxloader3/examples/03_mini_game/_path.py delete mode 100644 tiledtmxloader3/examples/README.txt delete mode 100644 tiledtmxloader3/make-dist.bat delete mode 100644 tiledtmxloader3/setup.py delete mode 100644 tiledtmxloader3/test/__init__.py delete mode 100644 tiledtmxloader3/test/invalid_version.tmx delete mode 100644 tiledtmxloader3/test/map.tmx delete mode 100644 tiledtmxloader3/test/map_flip.tmx delete mode 100644 tiledtmxloader3/test/mini2/mini2.tmx delete mode 100644 tiledtmxloader3/test/mini2/mini2_alt.tmx delete mode 100644 tiledtmxloader3/test/mini2/mini2x.png delete mode 100644 tiledtmxloader3/test/mini2/mini2x.tsx delete mode 100644 tiledtmxloader3/test/mini3/mini3.tmx delete mode 100644 tiledtmxloader3/test/mini3/tileset/mini3x.png delete mode 100644 tiledtmxloader3/test/mini3/tileset/mini3x.tsx delete mode 100644 tiledtmxloader3/test/mini4/mini4.tmx delete mode 100644 tiledtmxloader3/test/mini4/tileset/graphics/mini4x.png delete mode 100644 tiledtmxloader3/test/mini4/tileset/mini4x.tsx delete mode 100644 tiledtmxloader3/test/minix.png delete mode 100644 tiledtmxloader3/test/minix.tmx delete mode 100644 tiledtmxloader3/test/minix.tsx delete mode 100644 tiledtmxloader3/test/minix_base64_gzip.tmx delete mode 100644 tiledtmxloader3/test/minix_base64_gzip_dtd.tmx delete mode 100644 tiledtmxloader3/test/minix_base64_uncompressed.tmx delete mode 100644 tiledtmxloader3/test/minix_base64_zlib.tmx delete mode 100644 tiledtmxloader3/test/minix_cvs.tmx delete mode 100644 tiledtmxloader3/test/minix_using_tsx.tmx delete mode 100644 tiledtmxloader3/test/minix_xml.tmx delete mode 100644 tiledtmxloader3/test/testtiledtmxloader.py delete mode 100644 tiledtmxloader3/test/watertileset3qb2tg0.png delete mode 100644 tiledtmxloader3/todo.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/avatars/crono/back.gif b/avatars/crono/back.gif new file mode 100644 index 0000000000000000000000000000000000000000..814ae5eeda8997e902dd33f5b137e5c3d84d95b1 GIT binary patch literal 688 zcwPap0#E%%Nk%w1VITlP0J8u9Kmh+J7$CR+IQWPFKp;3+001y>a0oa!P|)c3`1tsM zXsD=g_{f+50000000000A^8LW00000EC2ui03ZND000F45XedEBsgQs`_-8TfZ;cs z!zPX-L1Ad>t`a;5f|evFuF^JNX4lKjXf?tPS11&j1r1P{fIbCHDM!=9otj1PfGD$Y z3*Ld)I_8y4C}^{bozr6~TiA}S+tVjMEKp=nfNFh$NrY~O0x@)oaC9J&zc^N+* z*a7oEJc=;&v8ahqCQX<(6XuLaOaV)TJv|~tATwIFSx1qMT-sEDARG)BK(%QgY0#=! zaZtdj)hJi5U77Zq6;?pewk$`=?MF5mF9mS9&P92ku2llyI=SN)mt@4il^_Z}96;vC z!2uS7V_TMRO`wJ;&w{8~f#u6wC*!Rg@h*;-N~O{ju$d?`1*Z?7rMkLxL4LHCCUse% zW7?#;)$+c5Fu3mF93~oHioD>01yPgEd#@{kVG1^jF3ep38XF&002Ai>Lg?U literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.000.gif b/avatars/crono/back_run.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..65086ca840cf8025a8c147a2d9cf590cdfac3749 GIT binary patch literal 723 zcwPb10xbPUNk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsccIP1;3|6nMNWNBtWs-`Eps^SYz>0l4+DCbgr^SXeIKv*Rb!(zbXBN~wd z=kk;~5(R?fRj?ve6I(3-+x@JtL>o4_9vp2z%~_Bhw8L&_{NiI{|66}_1UEQS7=2M= zf`g2Mg?kn$TW^YJgg2Lwd;yeDTXkxKn}|X;phSx{M}i=UsCcY@uBMlwesx&1qPba? zk9Gnef}z2M2M1(_AHJ_Q{fSX zMQI-8@NU6UpiUD&W!iD73v=eQ1&F$JtI-2QdeSHdRxH`FZ;_=%>Mj5^YEn>cT^g=l zsk;jD8hA^RBsIUB`sMhyv@lNtU>Arbr+5nEoQ{u1o?I7jiisp~F8!ARZz^)01AwL| zIwxtnflqT~<4mE9UZ}Wp8<>=ecLtQfcfLL>S)9EK$dfBvt{|-QjRt1o zerdAw^$(YWbMFDW9fg1U_R8D`(|iT=4AdiIPuKl<1N)Bbi}uIU{R90!_l^;X^ F06Y3GIW7PI literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.001.gif b/avatars/crono/back_run.001.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b378805c9739ea5da09d48be91fa3a8bcde305a GIT binary patch literal 682 zcwPaj0#*G-Nk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsaOA>7S7&0Z*GplEKSc6R9(3`4o1qzlWlmE9!FOR3gr7wh>-!P+oDAixBI zMB*tR{$`mbRZ6uMO)02Y3~NGRQd}rJCJ)R4bV5CP4W#fg;ru4h*LHY&aeaJEe|0_s zP;g^OIbMu|jzKF~O_O3;K2m~+I!u^t0-JK4DlB$-hM9VYs2*NIOBuz+w}i-c6K zpBI-`4=;?Fo zA_fMEisz$H;q~`E`TD|*vDHXGfdU5-9(ZP9Ai*&Q6)v3Dq29q!2N58Us6YY33Ksth zU@V}KqeqGy>S;X4lBC9s2Rbg8x!|J&l?Ym9e3?)tO`8C4>U0_LKogn^Itr<1V5Lr{ z36IiLs)T7vr!6Hm=|~VeNbrE5TO;a z7+L_;u*I6r@Ytnl){p|!j*T0OZpeFCs;!s1Xz-maiEpcy5MIKeO_b+ge!%$w=mezC zsCVui1G3Q#@H5c8(>d_j#V;ox&$?#q)7eXL|2`a$0He+yupbP68~yxQfS5!r@CDdd zR|Oi_&mGt#7~q1tILP0Eib!Z5g+5p~-Y6Qb$Dw)#QZOJU9ma>Xuyh- QwFpvuGS0}NeGvcvJ8lRl-2eap literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.002.gif b/avatars/crono/back_run.002.gif new file mode 100644 index 0000000000000000000000000000000000000000..09245a1029f1918f4c27c1aa2787ed2e212af69f GIT binary patch literal 723 zcwPb10xbPUNk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsccIP1;(4FN%bURi-6X>K4W2;wlLt-4P28_#1M+!ByX_L3zMD1s6BTM387 z!7;hCb)Gbxa_}4utr~1kE9-i>O-{{A9=zUynrRJ%ZQ(EZHFSRy?NLiF9#n3Ah9ZGd z34?oyc1MphH!eA@`$e_iD$HTzN3JP>u*8wquczJ5IZZ3$RlAO~{#5Fp^kZ;2O%5*==USU@60gh&4_ z9*BrQBR75$CF_374>OsR!UmW1tCw_4$LRWMf? z*afC~;3b+B1V6iUsRlMY@@!$62N3(E>Xk7}ttyf%zV){<}sl&K4#TSf7Y^ z_~*rmA&w~H5H!wI(2hL1I7a|I2I->{Knj^7H%1;A;gU=?>Ex48Mk(c#R90!_l~6_i F06Wn^G;sg` literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.003.gif b/avatars/crono/back_run.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..bd95aadc8ba29e918690f15d46b81d6ea3350280 GIT binary patch literal 729 zcwPb70w(=ONk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsccIP1;3|6nMNWNBtWs-`Eps^SYz>0l4+DCbgr^SXeIKv*Rb!(zbXBN~wd z=kk;~5(R?fRj?ve6I(3-+x@JtL>o4_9vp2z%~_Bhw8L&_{NiI{|66}_1UEQS7=2M= zf`g2Mg?kn$TW^YJgg2Lwd;yeDTXkxKn}|X;phSx{M}i=UsCcY@uBMlwesx&1qPba? zk9GncDOd*wp}~c%A;bd4$Zev!%mE4t#)YV&)})-)*r$uV+=m@03k$|=SPTq~=-rY5 z=<2@g?u_u|9tH+}R;lX5%h2y1n1GlDV(15s2*5(d3KURSf#HE94{t=AxNn0+iQxZM zLD`4^fkcWQ3xv#LgQQ8098#79Y3#remnCZ+h-ttjO=C9?NGzGNCcmBsh`y9~WGGRZ z`gj^sDv@adr!!R^h)U1^5ua7VW=&xY9ajtez6vdnHLTN<)fAXru<6`_Z)-QcEzoZg z0c+$+p~Fj4?90BL{sP`ZR<7BUdbRfJkywhnvX7A#u4-&D0Kb+i1SHq*r_Qw!5d&7R zXEf^orL~?$&DTKVz%=3pOwmtiTegP{P-d(<6>kH+mjX{M{PPS7jR(Juot$cI4$<#U zH-NP|^I>sw$n@R0Ie6UTm6nfDu3tNyVcU78MZrA-_*LbbFVU>nfp$me*FtlD&iuzf zfDFvXUu6Us17HH}P$UO~4ju?00}{HBL_LBi=!Ge2IpSdu{gmiWAp?xao{0sas3J8c zqH@WL;KeA;jWn78+le9-l4FfLvUJ0bAEbpzHUtoP6f#LDY0i!;me>MxP)51mlvrk| L<(6Dd5CH%?Zw5Sv literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.004.gif b/avatars/crono/back_run.004.gif new file mode 100644 index 0000000000000000000000000000000000000000..7db46c446296e5d620653bcda763f5d938145aaa GIT binary patch literal 683 zcwPak0#yA+Nk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsaOA>7S7&0Z*GplEKSc6R9(3`4o1qzlWlmE9!FOR3gr7wh>-!P+oDAixBI zMB*tR{$`mbRZ6uMO)02Y3~NGRQd}rJCJ)R4bV5CP4W#fg;ru4h*LHY&aeaJEe|0_s zP;g^OIbMu|jzKF~O_O3;K2m~+I!u^t0-JK4DlB$-hM9VYs2*NIOBuz+w}i-c6K zpBI-|-;xC=7l1sFF(bm41u}XB6CkC^i!58hL@3i_stguwHYvzcB+QR&P$;bu@R$MS z!-v)~d&S>5`))_C&cwOc2*J3O`}g1h7Ddj70A^wZI(5zGTs zH1+7!6%MgI;SBnWvf&CHw(;S51KKj;b|oTsp@EH!aiR#7 Rxws;R?BzFIWg$cW06WqBGXDSo literal 0 HcwPel00001 diff --git a/avatars/crono/back_run.005.gif b/avatars/crono/back_run.005.gif new file mode 100644 index 0000000000000000000000000000000000000000..55d817cf3273566bb74d7803f1b25c077190e026 GIT binary patch literal 723 zcwPb10xbPUNk%w1VJHAh0P_F<002lpAUIe60QiUixBxgXaBwIXAP6`(P|)c3`1tsM zX!yvOsHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&_V z00jRK$VsccIP1;(4FN%bURi-6X>K4W2;wlLt-4P28_#1M+!ByX_L3zMD1s6BTM387 z!7;hCb)Gbxa_}4utr~1kE9-i>O-{{A9=zUynrRJ%ZQ(EZHFSRy?NLiF9#n3Ah9ZGd z34?oyc1Mp*t`XG|8+6dVM}6r@9) z3WN#c2mpl9rdV-8mAW7z2(CsQuEg3;nlKs`zDf-%HY-fC3(%fODhytLmt@iL5iu25 zRk{o8;%#cz6oI}Jk{DJ2g6ToKK>%A(Y>M$+mJ}iXg*!Q^VZksNf~+AeomB;&^_on` zl(YiVfJp%6Np{qmU~m5bei8Z=WZi9f{%yfZ zfFAhN&khI12aW-Ty>Q|I;s)ys(V>bS zKIp}ZB*yq*I5_60qXATzxZ{sJ4tFDv!pTEx48Mk(c#R90!_l@de% F06W}IHgf;~ literal 0 HcwPel00001 diff --git a/avatars/crono/back_walk.000.gif b/avatars/crono/back_walk.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..c8a449d4606c7280da4d3b33a7718e3c8f95ab34 GIT binary patch literal 707 zcwPa+0zCakNk%w1VI%-X0P_F<002lpAUODl0Js1+`1tr(000O$IQW2Q_{f;3sBkD4 zATV%nP|)ZA0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000BmhPL z00jRK$VqDrIAhB@*P3^M+k^?IP>K|}0%!WNW`GWZMi6%%(3TiZ#}f>Hz+hm9D-?Ro zLMRDa5~9$7b1Kp}aVTd`EZCuDBg}UYej2rIvkIw9y`A_%G!K^1Yj%5hf@^kY5*Sf( zQGIPkT>*+kjBF`uha-V-I9O!_c{DL&dYoiCpe!+k0%VkJp*F0fZKHioG<=n`DFy~x ze$IC)-9V(qF90M#8DChRRmVGW_`MKK-X!>4jl1__2;t#YKp)8RL#_N%QG~rTz777Xn2fI!Q3D!>M_ZU1@8(b<-(Pldhk^6JLV6Nr56F?DOj+;fPq6xa3L(GuS7Y94j~SZD1c(c4(0zG zGQ{Z60F-ql4KQTDAfbkkDo3U~nIPrLmLEC5WI3{@Po518xFn~*AyA(`8IT;hZHdSQ zN0X9t$n=M;r%`(XO<5IyymJSzvQ+9bWxfqx&xy?%)ZtlA)11Z}OSY%m1LFL|9k8~p zOatfg(t&vqX^rNk%w1VI%-X0P_F<002lpAUODl0Js1+`1tr(000O$IQW2Q_{f;3sBkD4 zATV%nP|)ZA0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000BmhPL z00jRK$Vn>*VGL}$|Cq*oB!yu`p$UR`j%D?xYrDNcYz8cwvIIhC02JnQn4aJ#2o8%d z5YL8E5d}$QFKWrUXxFS3d-S}NU|(weik*Au*17JaV zYieVLT^Wd0ijsi^js<=JgO)6d8jG5omvWwxpptG=iG`$;bY&%3tW2*3Tpbt)2vulS zYP-0Q!JDLcS1H7*2M2G0Rw>NFG6B*j$IsR=3JP8~3E&BH8r(Vn+};@B;%npz+uRBZ z3kC+Jlr{D9i4Sbw{A*9HZCL5vzxKaWJW-c!ph&it##+nzZ9mvUWCxL=K8?Mx~3jt08 zBYR4fT2C9brcQ@KWiYiXK&v(*?RtuIs>q_uu#OlqR%=N>=C$8YWjr`Y{BLP-=18DT0 z0bsZz;5q#jNC18aTA`qT+{|I&FNEw@L4_B#b43su@^>MDN`$zf0wXq9Vtq&i;LnRN ivZzXoG|Jdwjqxl9363V}=;Mz-1}Wr_L>5_O1OPkM*)Wj+ literal 0 HcwPel00001 diff --git a/avatars/crono/back_walk.003.gif b/avatars/crono/back_walk.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..61dd03b069f54cd3ddf595d74958f9e0ef89d0e3 GIT binary patch literal 705 zcwPa)0zUmmNk%w1VI%-X0P_F<002lpAUODl0Js1+`1tr(000O$IQW2Q_{f;3sBkD4 zATV%nP|)ZA0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000BmhPL z00jRK$VqDrIAhB@*P3^M+k^?IP>K|}0%!WNW`GWZMi6%%(3TiZ#}f>Hz+hm9D-?Ro zLMRDa5~9$7b1Kp}aVTd`EZCuDBg}UYej2rIvkIw9y`A_%G!K^1Yj%5hf@^kY5*Sf( zQGIPkT>*+kjBF`uha-V-I9O!_c{DL&dYoiCpe!+k0%VkJp*F0fZKHiokWK~$jk0#A zu(`XHw3c{D7zYQsnyXI9m@NUx%PFq1&wm{l2nf1lP6-KlPTbHn+}>{B;^XDn9tsMh zOq_k@7V+~}^_BM(@zik8v!iRl0)G+!8t5@FMZtsb@F{pm4TYSC3>X+Rr_f+UPbmK| zYJ}LK7D}oo>5KPPYaO{G3i3TLY7LD85lvZoPjU;z& z31nNjnrv&+Ks-czA5|$USSH@3x(-*VSE3%acqv~J-aGd|WlonBWY%nzv)>HKCr7 zv>Hw_EDG5ZY+u?PI+YrEbcNed{(Q9b2G$d3?;deI^$FM~K=>gs*!cO)w_jUCKnU^Q zI0bm;o`LD)q2PHK#3P|Rb_nnw6%kHIp&b`qHz6f!bQs--o0KRbEcv7$2MQ;SxFJX> nv`9ldy!0R=3p5T>%>Xw-qM?TMDe>ckK^AG`kw_+~WCQ>^Hy$Wq literal 0 HcwPel00001 diff --git a/avatars/crono/back_walk.004.gif b/avatars/crono/back_walk.004.gif new file mode 100644 index 0000000000000000000000000000000000000000..47264bf3280c8836be91b2ec2a4885d9eecba98d GIT binary patch literal 683 zcwPak0#yA+Nk%w1VI%-X0P_F<002lpAUODl0Js1+`1tr(000O$IQW2Q_{f;3sBkD4 zATV%nP|)ZA0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000BmhPL z00jRK$VqDr!RpN^?jVSLVQGz-si9sV2&8(A?HkJzW{>YKp)8RL#_N%QG~rj}FC2ImS2 zwdd&t?Cp>P@A2~`^1>=@(j!j>KxYC0S$a`Wg}j3=)`5EQZoz_vAs#9?B(V}j0~Y@= za*$`y;=4GQDwcdF(gMkq22dJPY0^N;3G!4jU{LcN6rBv-vGnIs0nnZXeu7-EQ>aa% z6>fsFI~SS0k;)AP8x=D)Rxo@D^;E;a|a^tn;Q0_(WjR|NnYx-ZrK*1HzPG2 zcLrnxqs4Z{y7Thu*jQ)Zy-dw;-MhfEmc`H;L0_Q3*`7A5px@V}Z0l~DtMNBpmE@Rv zRp3tOI!y$Y%k?L(`@8R&#CzH`dYu^ct=MmN9|pb#jT)QTFN$A*{?@(pXHP{mH~@fw zfch*#SP2I{^o&CL&5)lln?%@xMu!|?AvYLi$Pj=G1~B0@8*VGL}$|Cq*oB!yu`p$UR`j%D?xYrDNcYz8cwvIIhC02JnQn4aJ#2o8%d z5YL8E5d}$QFKWrUXxFS3d-S}NU|(weik*Au*17JaV zYieVLT^Wd0ijsi^js<=JgO)6d8jG5omvWwxpptG=iG`$;bY&%3tW2*3Tpbt)2zYQ- zYP*k8!Hm9l1;nZc2fcz;Da*oU0nx?Ii`6;+3JRvIp92O4xE|czlLX-6DL=*Z{-vqfG1h1si`Lob;*9X=cq5KL1}Wr_L>6h}kw``W06U}lF7*Ha literal 0 HcwPel00001 diff --git a/avatars/crono/front.gif b/avatars/crono/front.gif new file mode 100644 index 0000000000000000000000000000000000000000..050934923cbb7aa174b18af8fcafeb1a321a0687 GIT binary patch literal 733 zcwPbB0wVoKNk%w1VITlT0J8u9002lR7$68ZIJf{f_=o^l002NBI8e~&_<(3IaB%qe z_^7CG_{f+50000000000A^8LW00000EC2ui03ZNH000F45Xec5y)^4xujOC}SOoEj zs6?7Znp(r4D5uN8GTpvjUlg&@uZPJHJ-;Afc)S@(Ga)cG_|0Oq%__Q_#;gkLE`%#d ze?O_1Y*3!j>Or=Ho+hbv<=SY-SG|9CC3`AQ1YdAwh;K|CgMkHRhkuL(Cl*(Kh+K70 z3ME;XVVZxOiCl9deUWBqlRpa!f-D*qu2PS%vQwaAe7US(GqHE6g}_oX!@GpPU3Cc2 z2zAB2j?ZY))6~s$1p)#yKic5pmezbfy025(d*z0_6+m_(E$NY^Wh5W-OIPH z9|(Riz(u>q;9m@WC=d=%h=8HP0T4y-16P9LKS?G3GIH1`prbx_B|(bJ!0*5Tj+4N_ zbYo_vgqAN;CY1RIBmtWMz$Hikj;17;0)~R)Ae5*8qh^pQ6)-YD)1p*%4s{6*=uN9h zoo3aVfU5wY{QiM+IdtmQoD^54MSzrT+oopY8Z2b5pi8rFUCy-^%0OQPI02XaJD9)xTroH#1Hg&*K*q~*3`l%vnO}gTXG>=_9bk27eyBgUro!4H-LQ7s-aW~% z_Pu{^b?c_s+w?+wVc)Jjpj_r**2kMRx0_eM^U}ZJa>5Ew7t1mRFVm=qDeFTmypR-+LS67s~=jA+_KF|G^jFf(^>_ zV1%j|xWF>3#j*@I#$+gfhYB31;D-W)2pa(!5`)HrF#We;i@WF|U`PmlwIU*{&B9t$ zJO0rlFF%=93uM5MCebX-l<~?GtRbRDXcBUf)el2v<%wJYScyjgSyHhjf1|Bw literal 0 HcwPel00001 diff --git a/avatars/crono/front_run.000.gif b/avatars/crono/front_run.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..6334753ec59463dcb898f04e92215831619529e7 GIT binary patch literal 775 zcwPYq1Ni($Nk%w1VJHAd0P_F<002lpAUIe600=lZxBxgP7$EqF05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&(R z00jRK$Vq9qxa!S0&Rr;0mtkCE+LdRZzGOfUNrJ-fHP<&jeZYV~Ff$Eg9vFt$*@bUD1qBNWgaZTS=IJ~E=HxKs z=IH9{?KbZV@h{}pp$XD`!*}5tKNbEE02GLgU;u*!K*ql*uz)qM0W)?^pbSQzM zN7bZ@b)hIzp++-F9pEJ0!3|X_Ue&2JUDp9$hds<$F=$G&S7NFxsL-c{wME^oH zN)f<|z`Yn_KLre-kpM+Oqu_ozlEh<0KI(^10b$HQ&Wk^CKu(ebEIGg}P44G}M?~>e z<$_4gf#p+L8i}JvPbPVzL}Ydu#+fOk`DG?s(&lEDaEjSQ0CUP`=NWkx5a)=11}Z`X F06SrYQ&#{0 literal 0 HcwPel00001 diff --git a/avatars/crono/front_run.001.gif b/avatars/crono/front_run.001.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a2df2c127ecc989d869821bfb2d9a473c0b0c00 GIT binary patch literal 737 zcwPbF0v`QGNk%w1VJHAd0P_F<002lpAUIe600=lZxBxgP7$EqF05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&(R z00jRK$VsccIP1;3|6nLiL1~Vkd7^1x7$w`4Z!D8)P7q0AtD>Ba=L<-HBihR#5bRz} zr7h@MHlIv^)R+wHdQc~!`Pv~trEem?jyuD(-8-4Bkno&=JFb><}_5Pyk_*9s~ad z2oxC7n*f9yF_h4_jH5>ZAVrQWiSFcrlo^C@JaFJ+f{-H-(Da8>WsaRaVg8g!a)8Ma zMLTd*pnxY(1QeTsdJ$E_)T#%rW)(VMtAVZ=kW$@oRqNJp7}P3Y%ap8HxM>SmEo&fT z$X5jX4!~;x>EFJ70ShKP!SDd8hXV;-j4|(C$b2PF4#`+3 zcQt7OLGga28agxLt05`ME&Uld=1#b~H(1rIcTi+zIObVhp!9Q}7+ zfEO_qmw)`Y$I*Z&6xiT>5601jIx6gd77ANrNWg|8&{s+)AFijMdh3m-p^5ypz!6{@ zvB+TnFV->*eJ5Jrp(QI;IAb!7^jJWS7jTqFBlP*mf{~Rpk>rpqLc@_II7aDW0aVI( T!x1zl3E>S;d1)aB5dZ)?dJ;Y* literal 0 HcwPel00001 diff --git a/avatars/crono/front_run.002.gif b/avatars/crono/front_run.002.gif new file mode 100644 index 0000000000000000000000000000000000000000..5969fbb7b5439115402eb60299d2608442299e6b GIT binary patch literal 720 zcwPa}0x$hXNk%w1VJHAd0P_F<002lpAUIe600=lZxBxgP7$EqF05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&(R z00jRK$VsccIP1;3|6nMNWH|61R#>fK73(U>|&;`;3wuJ)Bwzk{ z=-nSE#LVLe*X09eBKHd9d$&(nzkeZ!9XPM}U4JZ4Q9Lap2OX z!i*wK%8aSgr_7>G=mC$I$b|zJP9*k?oK~*nyea^jPpn6>@XiKcO2Z;sW?$dVLy&71 zT>^G5;$5rvDBobZ0PJNa0bjnn>3Yzh=4dg3B#sA<9WoaVEOD3(iR969#A!b4lVrL!#Mpi6J;DiH?EVf7ji9ZlIV}$P&X`~RyIr$`%R94AB1OPh& CS}?Kz literal 0 HcwPel00001 diff --git a/avatars/crono/front_run.003.gif b/avatars/crono/front_run.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..bdfeaff53a5d986b13014620cfdf2823cab23e86 GIT binary patch literal 772 zcwPYn1N;0(Nk%w1VJHAd0P_F<002lpAUIe600=lZxBxgP7$EqF05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&(R z00jRK$Vq9qxa!S0&Rr;0mtkCE+LdRZzGOfUNrJ-fHP<&jeZYV~Ff$E>A61qBNWgaZTS=IJ~E=HxKs z=IH9{?KbZV@#6*8p$XD`!*}5tKNaNu1*jnq8^Hhu3-}Of(dkX~w}6CQ%MhIbh(-NCaMnh^e5bf|Ld-4hWNpoHCw1feIz6#^^K- z9#8g6=j2r>Lk(j^Jur3X9ILgmK8+zVU014p1e{D~?%I$%5D^GH>($U&du|25ZHoZu zU7re0CPWaX(gnVLWdauLkMI>UhcWh*2q0!UseuphlT&zF;$ARoUa^8(P>Wes>+nKsw6obmEHo z36)=q^C2kI5E=TbOF|BLL6HRY)Z~#=hS}vrUxpzjl|%l}2u^2)nI;QdwmD`T0m$i8nyJ}Y0F8L|>8Az}002A6 CB}|(D literal 0 HcwPel00001 diff --git a/avatars/crono/front_run.004.gif b/avatars/crono/front_run.004.gif new file mode 100644 index 0000000000000000000000000000000000000000..d95dafe7d5d551fd9f1e307355b018878f93fcea GIT binary patch literal 735 zcwPbD0wDcINk%w1VJHAd0P_F<002lpAUIe600=lZxBxgP7$EqF05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000C;&(R z00jRK$VsccIP1;3|6nLiL1~Vkd7^1x7$w`4Z!D8)P7q0AtD>Ba=L<-HBihR#5bRz} zr7h@MHlIv^)R+wHdQc~!`Pv~trEem?jyuD(-8-0!s)GG)cH4VZecR3?6ipa3O+*2m%%;P>|e!0SW&T ze)J}wV=w{*HFBKT<6}q!Bh!_f$Smc(3L6g`i0Lw9Oo(SLC zJ9rHw;y$;#dNo> zfxC7G=#AUrZr@QKpXNQVS3?QIbNwb(u(&ay0578o)=6}+&dGxvV-BgAbLY*U2Rsd( zp@hVqfS26W`Sht}d;wk`jU9M#Z3VY+FkB|FG||-ueg{7?x~4(npp(~L4xkXmf;$S{ z-8I=ZVbRPIVn?}PJA>}Pzaz`^vLIDryEam{P^kTa_wePbhgRa{;{oXOFkg9VCioY? zM*$`<;2tGxgdi^h?$}%>%mK~?&;_=I0?M|w*Fd(z-~-|a93b;#NKrIy3W)W{-T;mXmBAqp^8m+q z2y#yNrwr-DrA?m(P$z4tQL9-MBuqCj4ln>cXnYkrvFF%sWeK?KAuWK>q&%G}IM;*g z1-ixT0?ZqhZvYy8b!J;&%d7;W0h0|@|JG65z4*&oF literal 0 HcwPel00001 diff --git a/avatars/crono/front_walk.000.gif b/avatars/crono/front_walk.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..5b31edc336063a570ba58c49699ff9045b6c92c0 GIT binary patch literal 770 zcwPYl1O5C*Nk%w1VJHAb0P_F<002lpAUFs(I4Bq(xBxg<008)i05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000C;&zP z00jRK$Vq9qxa!S0&Rr;0mtkCE+LdRZzGOfUNrJ-fHP<&jeZWAWFf$Eg9vFt$*@bUD0|N^SgaQKQ=IJ~E=HxKs z=IH9{?KbZV@h{}pp$XD`!*}5tKNbEE02GLgU;u*y&2AT>K*ql*Oz)qL~W)4UhbSQzM zN7bZ@b)hIzp++-F72qV@!3|X_Ue&2JT~`5Lhds<$F=$G&S7NFxsL-c{wME^oH zN)f<|z`Yn_KLZS*Q2|9kqu_ozlEh<0KI(_i0Ab8P&Wk^CKu(ebEGfV(P44G}M?~>e z<$_4gf#p+L8i}JvPbPVzL}Ydu#+fOk`DG?s(&lEDaEjSQ0CUP`=NWkpz)=JMI~>|j A=l}o! literal 0 HcwPel00001 diff --git a/avatars/crono/front_walk.001.gif b/avatars/crono/front_walk.001.gif new file mode 100644 index 0000000000000000000000000000000000000000..0a90643aa8bbe0e04c64d3cddd128dcb0f412535 GIT binary patch literal 725 zcwPb30xJDSNk%w1VJHAb0P_F<002lpAUFs(I4Bq(xBxg<008)i05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000C;&zP z00jRK$VsccIP1;(3}EPuRVb3E1R4gIl4~2hmuUwCkt8l)rZ-b=*ZaLxwt3CVJI%h70f`9O2#MAmAlcj9&m98;3kx7S0s`ph>_h?R z<|O9m>Iv-b3-CPh3-m^q(}s`THU#}ZXbb3JAcBGd4kiq+a6k%k>P~ef1AEPX+s-fvXrH> zqdwpu@N(JN>AImg^WxAA9}f6GnD}= z#@FH}DVjpzdGc8xp^XH61R#>fTA3(U>|&;!x~wuJ@Ewzk{ z=-nSE#LVLe*X06dBKHR5d$&(nzkeZ!9XPM}U4JZ3=+Hap2OX z!i*wK%8aSgr_7>G=mC$I$b|zJP9*k?oK~*nyea^jPpn6>@XiKcO2Z;sW?$dVLy&71 zT>^G5;$5rvDBobZ0PJNa0bjnn>3Yzh=4dg3B#sA<9WoaVEOD3(iRM!BKA!b4lVrL!#Mpi6J;DiH?EVf7ji9ZlIV}$P&X`~RyIr$_A5dZ)?FNiN? literal 0 HcwPel00001 diff --git a/avatars/crono/front_walk.003.gif b/avatars/crono/front_walk.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..7899578c4263a789f0b94d168c53f5c628148e80 GIT binary patch literal 767 zcwPbj0s#F-Nk%w1VJHAb0P_F<002lpAUFs(I4Bq(xBxg<008)i05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000C;&zP z00jRK$Vq9qxa!S0&Rr;0mtkCE+LdRZzGOfUNrJ-fHP<&jeZWAWFf$E>A60|N^SgaQKQ=IJ~E=HxKs z=IH9{?KbZV@#6#6p$XD`!*}5tKNaNu1*jnq8^Hhu2lybDuHm``*U~}pA%SAWYZw1B z3fPE)+<^n>Of(dkX~w}6CQ%AdDPZ8tNCaMnh^e5bf|Ld-3J8;loHCw1feIz6#^^K- z9#8g6=j2r>Lk(j^Jur3X9ILgmK8+zVU014p3Y<)5?%I$%5D^GH>($U&du|KBZHoZu zU7re0CPWaX(gnVLWdauLkMI>UhcWh*2q0!UseuphlT&zF;$ARoUa^8(O$0es>+nKsw6obmEHo z36)=q^C2kI5E>OwA|p0dgyTp$QnsLJ`H>TbOF|BLL6HL-nNyMj&VUv<Y)Z~#=hS}vrUxpzjl|%l}2u^2)nI;QdwmD`T0m$i8nyJ}2fHDyP06XWDNk{+y literal 0 HcwPel00001 diff --git a/avatars/crono/front_walk.004.gif b/avatars/crono/front_walk.004.gif new file mode 100644 index 0000000000000000000000000000000000000000..9a1b35c260b936c5bee2c80784df7eda849056ee GIT binary patch literal 739 zcwPbH0v!EENk%w1VJHAb0P_F<002lpAUFs(I4Bq(xBxg<008)i05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000C;&zP z00jRK$VsccIP1;(3}EPuRVb3E1R4gIl4~2hmuUwCkt8l)rZ-b=*ZaLsRB^E~P;xHlqQw|(!(0R+*Fpa+8p5DHKzfL_A^DbnRgh`?XBchCQF zIP9R207s7qKw=Y#k>r2_2dZ%VC}2<*10yx0gDG>Ow|6#Kft_r+zdRt&@ zfwF&e+QqAP3SYl~&q;tt6{gpXY861tp)VT+#z`Hsg=};(fy#llt)mIksOHj=2Qci& z&aw~D3rHU@ec&DHbgMzv5D2(&Z2_p?5gfC7^jwpfe+L&Ze9dma#?w*tjWsm%*a)Og zw|$`cZp!hx$xDtJrgsXJP>$zbzI)4PZ literal 0 HcwPel00001 diff --git a/avatars/crono/front_walk.005.gif b/avatars/crono/front_walk.005.gif new file mode 100644 index 0000000000000000000000000000000000000000..6fe22a6b73f126f45e0a526b315cdb8b56a71771 GIT binary patch literal 708 zcwPa-0z3UjNk%w1VJHAb0P_F<002lpAUFs(I4Bq(xBxg<008)i05EWH_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000C;&zP z00jRK$VsccIP1;3|6nMNWH|z-~!?Z6d?0tNKrIy7Kru8o&b&smBAqp^8m+q z2y#yNrwr-DrA?m(P$z4tQL9-MBuqCj4ln>cXnYkrvFF%sWeK?KAuWK>q&%G}IM;*g z1-ixT0?ZqhZvYy8b!J;&%d7;W0h)nCbXfV)?1Tdnim#GK^MB^wqSOS$tn9=yO0V>$3R=iuT zd|E-8$>L|g z-w`YU^~KUd3rmcA2Zivjfn6l_Ef7O(JKzQk#otgk8LNs{%-P)hN$-!UPj8ER-hV z1%f4<8+-L|y2J%AOm15lDy_$n2N$5+_USnym@kgzT-xdB0jW299Q#z|xzMWFW`%k? zGl+9D*s9#tn+5O$!VeI?&B9!PZOvx9YaRe!^aRsE-~mi)n{)=an+)V`z&m#EzE$fP z61RXDD&fzq-y{E4ULd{m7oeNBkpABMwI|Rie+2-RMsea1XrLAd0^!_4fF(4|gB9)3 WpF$BOk^p-Wvapbb9O{KZ1OPjGAr#&K literal 0 HcwPel00001 diff --git a/avatars/crono/left_run.000.gif b/avatars/crono/left_run.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..0556dd1dfdf19f3c99dc47890f383baba04905d4 GIT binary patch literal 710 zcwPa<0y+IhNk%w1VK@Lp0P_F<002lR7$86(IJf{fSO5U{hyVyUI52Q<_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000H~>Td z00jRK$VqDzINQy;_nG#MWC>tJfthS8p{n4{S11s~FeFKehcuS$mfQ6TKT+@lp@oW(Ko$^bfTYO^C=ogARfX7r0}2#$LpO8L7n?YBo|EVBrjDC8bFzHN5J1rb zN0BNO$&{hPoKtVI)ZuWa%m7#w0NpyE>(G<|l7=f67ea{f#p!5Ly;p1?V6=*Urj z3@~uuXTQn6cIWY(c6hWbLlQr*ZQJ>;=~u3A&)~gsk~)adziI#0ra1%X*B)Sh+NGw4 zX}mEI*=eyI7+Qi0_7}uAWpLrpg2YHj1BHxO*x6qh7Kj!baP?%GXhdTd z00jRK$VsccIP1;3|6nMNWO)gwK%qr}nq;a@tUJSDEfYlBzPOJr#q-&M8(=Mw;1vsl z0S}0@C$Ds8z`j6>UYIXRa(f7L>ba?=Qv1!kuPsnrV!JO*Lt8JbMX!1Aj0m zgLnmm19@v<0E=9LT#u1-lPG+5QJ!0mJd>0Ho@tjzqCW)c6rStH(4j|-Ae)F>K(ge?eknDsM9{KB#d9&YyeVmbCBvgpR4y>;;pc*& z6R#09dNe>%olALg)PTb2PFc)+$m&U<>PfOm1bEE~_L`BgTPK+HhgOU>Q&S-tFp`Hy z-3wJQWV4&MpDez2{#poJ0foVbM2Q}XqM)(@#T_4~FdX@?4|SF=$A$KC=hc%$52!vs z+4Abun7NkDdRnin*R3nRRvkMnPHQJA8eph8v~dNmd&~Y^TR8Cp$3rI{ox|SQ0AQX= z->rO~b-LJZ0MPE5JM|a>7%vW>+H{Zuld3NLr*;DL4*@-*WN4_29V)-BSe@Qbmdw24MXZ^n1PA< zZKt9)EL!6t1`N@{1W}<`s3SNbwn*ZE0sP3LWj-6epsg_Xv8 zH_FAQcY?~1U!i>-%7L73q~ZmmC7Kzj9+Lvu`V z3M!N&sLG|Qw7#0iHtCu9XRW-R3TsDx642|g;oaI13dGim>IkML+v)_e6hr_3JA`$E A#Q*>R literal 0 HcwPel00001 diff --git a/avatars/crono/left_run.002.gif b/avatars/crono/left_run.002.gif new file mode 100644 index 0000000000000000000000000000000000000000..57aed16a076b6b94dee148afdfae6d87d38e42e8 GIT binary patch literal 677 zcwPae0$Tk?Nk%w1VK@Lp0P_F<002lR7$86(IJf{fSO5U{hyVyUI52Q<_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000H~>Td z00jRK$VsccIP1;3|C}I>B4~ajd9IyUyhX{*mJ7=?n+n5_BrlmN7fSVhL4jmQ#E6hE z0-^WnNnbx)lkx;cr-SO?TF5H56I;&;CbQS!*m1G==tnuEy7n?22RXCep)$gYEe1lG=(+T00`-{E}$0ptd*+K-qQ z>+SCd@$wbx3;YY(@PHUFNOx#ozkl}v4iuJ80=d{WTF2; zNujVYpT`0qLw+MkF`tbW2M#O}2?;<+c`pmZoO#J+%ZBR|D2PdvD6(}NEd~%;wCK?Q zNjnCJDYWX)1IV66T}RdG)vN}PCgpm-YD};_kP+NM)-2YnX$`DxLbmH!13ma@n@gl_ z*{^s9=taPHh6sMhni@5rjbC9M0uUQee7Es}$15JD1dBEpP4Ygw1s(1VOBg`<;ZKiK^@9m8#=+)KQUXNXRTs8vb98;4{MgaQq>C~-9 z5AZ{vKwPJDtn2O_Jn>Ni%8@UJtcL-^0D{0AfZjvR@p3Fa2@wC(l1RY^<|R zcx(kwpn(V)CIEqPENEZ=4T2y7gq=)y;CX0_=Y<&cX~;x>P=Gjqh7^v_P)@XM7*!^r Lw3s3d5dZ)?`+XxP literal 0 HcwPel00001 diff --git a/avatars/crono/left_run.003.gif b/avatars/crono/left_run.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..617e13e5d919c069a899e106813f3cb3d1210817 GIT binary patch literal 710 zcwPa<0y+IhNk%w1VK@Lp0P_F<002lR7$86(IJf{fSO5U{hyVyUI52Q<_<(5m`1nxJ z==jK(sHkuN0000000000A^!_bMO0HmK~P09E-(WD0000X`2-0H0000i00000H~>Td z00jRK$VqDzINQy;_nG#MWC>tJfthS8p{n4{S11s~FeFKehcuS$mfQ6TKT+@lhAB}3;6l!IK&wB_89W%W5>^czXbLu1PGu_ovI@X|0P`5kln)+5fM%dkb)Soi(mf= zWVE-iqeqZmM!s9vixIH{Fb^!0z<>eC04;UAj5!lP&6_ZF!1U-5X3vBG76u(Kl&Art z0gy^qsGzC>Vmfp_JwWW}$^cfc8pt|eXV<73VOAwp(WwEi=9C^-YoM)DxL=#%L+4Q& z-naquF5t@+!QXBRap2QIxUONeND~uSJfN{($X^u?Bvuuw)T9A4?~P}mvrNo@byd_F z_AsK1I98V}ZPhiPg*9usRja`B#@q~c&+UCWGDk)+W19ATvrKZ{$!#OTIvW;nqSD<^ z$HwEj$Lvc=GSbSUd+@OXzy}deHk^6t>RqrWn|@({YbOhw%`~5^{rlqNw_ji+EM@hd zLdTh;!-2QqWT1TregPkZ1X9SsLewp2VS~0|h@OV=VKGF3dW3k34J0mNVhb4j=OTb# sXqe0$Exu?U8)YmsVTd z00jRK$VsccIP1;3|6nMNWVs1wYOYnPvZIR=cc- zWRTf(3UD@BA`vC@gw+WOThMZm-fx&Pqq%W7gTYwX+Q8Men*blk>2?KpJ5O1Beg<&{ zG<}0Zg=L3wii~iMERdB)e?~NyFqwy&bDe2nPkohJiey`#Ca7?#XOjaqu2fAuNl8b0 zbgwZoyfsj0y@I)U0;{%>eTps;J%r3>hR}%80Mww?nvr{3TMP^+3kwJcQ^6c4Ti|g>uQDC%;RH08>P8%IMOz5(jmW#EUv-ywhj2f`y@a2-Mf3Nf@nhvVS91Oorx zT#}bmCE_N1C)X7{ zx-H)mSKw?0yjV`_)|rKod^{9EZNj%N=WZMmXHG@7M<Td z00jRK$VsccIP1;3|C}I>B4~ajd9IyUyhX{*mJ7=?n+n5_BrlmN7fSVhL4jmQ#E6hE z0-^WnNnbx)lkx;cr-SO?TF5H56I;&;CbQS!*mmjG<6JfNVb0+uY<9nx8or%#{er$?nymEaDUSFcEKzU=xHEKso}$sXKh0IAYLY8SwBD=h6tgA0(^oVu0k zU4weH_66V$4m@ON#|ALW7BOF{*|Z^m!?NewK9RLiHhLM&!?jqgb|&&!E?cNU>*gyq zK=S~sVIP-d?Hcx3*)PksHHvgERo#`N#_sFx9)rMN6I%>m9JyEJ4g-KQuBQidOzx%! zWKey;^`+_D#Q6?4KzL7!$oDDydSOC)RF9tsDfvn-UJJ~D#FgVujCx$bBGq4As zcLMeoz-TKN2;hD(DahanB0y;2g%(bTf&dtHn4xOpROq2QOyD=dh$N2SK?DFhZKx-9 literal 0 HcwPel00001 diff --git a/avatars/crono/left_walk.000.gif b/avatars/crono/left_walk.000.gif new file mode 100644 index 0000000000000000000000000000000000000000..82fee56f79db3f01c1163aefd1f47f189d522f2d GIT binary patch literal 693 zcwPau0!sZyNk%w1VJrYd0P_F<002lR7$CR+I6xpc_=o^l000O$I52Q<`1ttvfM`(A z=%}c0_{f+50000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000EC56R z00jRK$VutAxa!UO#F;0K+C>l-sfs2#tSfjGg&-ivNrNya4>TK2SK#$5gVT^;3kry* z(+}2KHfv7;E$T8-lS~0^Tp$W_uA`)NC7W;PlzI)sp00RtVUBd(^?5XW0Bl)-Wnpr2 zg?~<4i7#p`G)rz_k2s1kV3cT`2_!hqAOVB`2MIi}YnMYV5G4knSn*<%jC}tD z+Tdbi*MXA<1WH)2K;y_LB@LiV8DM40kO5BGI9ajcNtFR}9@u%Hr%9Uc00>mTRKYGA zF?kvQsMDAjF;=#ZMq_!+Zc|9SLxq>^neK_Y`n*Y;Qib{qp^-w^2_N;RWcQ zZ2}d?pL!DD$6WvlYG+_RGKd7#LG)1wf`uyCe+UE&2_TAS-V!ASaN-vt bk|g1a$_x-AOfyoGlz<}c_+XDBL;wIgA2T5r literal 0 HcwPel00001 diff --git a/avatars/crono/left_walk.001.gif b/avatars/crono/left_walk.001.gif new file mode 100644 index 0000000000000000000000000000000000000000..10a99cc66e5d652dcfca1f86e77ea6bed787e0fb GIT binary patch literal 774 zcwPYp1Nr<%Nk%w1VJrYd0P_F<002lR7$CR+I6xpc_=o^l000O$I52Q<`1ttvfM`(A z=%}c0_{f+50000000000A^!_bMO0HmK~P09E-(WD0000X`2-0N0000i00000EC56R z00jRK$VsccIP1;3|6nMFLunEyQI4H?rYoD3D1rzA4ZEfc=r)`V#q0Tg101SQz}bKZ z;=or@5|~Z|R7y4Bu!3b1Ctx0t)$&+OR(DfZru-|fzf*N^Ue1EjtxRHYF(7_wfCYj( zB06ngYyvi5gddG$k8xR(QzS`hby<*HBWZh~nPDoNj3!JA3zBQ7cBHKZud#@9X0;L} zrfOomHpB=XF~50q!UYn=Hmn8)HquN939btz&=uUr1Jcw6*4Ve&1Ktzq93|lh*V5Na z#b>_Y)9(rK<@EI>3=H5&8wh8h0ZOa@3N%=7Ai`QhQW!J{&_$mY4JR6?Xr$0R6dL~z z98jP@0^@6!W(0sEC(vyF{~27m%x{1<0{#$+Dr8z@;MWw{#C;GjuUnq-X+*?AgG zdh_Xtsap(CNm^q_!~tT5o_)Er?X+ios7%|rI8faihI2N~961MRuS}~wEcvqs=nJGf zWo~@~_E*sjINcjp#CPyb$5$^eTe%JJ3sgdt`KmjH67CVemmidVeD=GcUahjAtK;Q}Et@mU%f zwlQJ=xtNH;Vlb8{BY<+%sK|_t$dQyq6C?#mN<69*q>DKb`4@>`AZbBTD(O)Gl~`uk zhLjaxX=RpR=Cq|vJmMGTnIzhfA(Qv>fUf^&XOfM;@X zdQAn0b7+fnE(C{HdqfCvOpI(KGip4WJ(ZI*cVh#4k$eJsYC2*!s->)qgt4d{Ah~@7 z1_ouWrB1ROyaLF6z{0Nu#=CbQ2?@YFz$;K3mE5{#mRt{=U062B10LZG5W0OoF|noMQ7D2)|eK#8VFd;09K(T#F7PeR##Yz02#2&I+ZD0fOElqL?=ug zFuia4mi?>=S=14s{0-e8%5y3Ct3Afu)O>es^kMkf|v zIw#;DUCm0yD)nRR#XwJ|L>F(tT&u4U2I&2}YVa87wDpE1;JAw93zpN-;e6=0I9#fy z4RBp!cGQ7cx0FK>d_TV8(UdowLs)ZkE9Gd9=Kg(1`R1Pos81a}8g!vu#GfO5@%0xV j1t7qu;DQVS=$2y*M!4XCLWCe8d`Sc$!i5eB6#)P{MMW0- literal 0 HcwPel00001 diff --git a/avatars/crono/left_walk.003.gif b/avatars/crono/left_walk.003.gif new file mode 100644 index 0000000000000000000000000000000000000000..78c49b37d87ec12b45f165f311dfc5298544cde4 GIT binary patch literal 689 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 o= len(self.images[self.direction])): + self.frame_num=0; + image = self.images[self.direction][self.frame_num] + rect = image.get_rect() + rect.midbottom = midbottom + self.image = image + self.rect = rect + def setaction(self, action): + self.images = self.images_standing + if (action == WALK): + self.images = self.images_walking + elif (action == RUN): + self.images = self.images_running + if (self.frame_num >= len(self.images[self.direction])): + self.frame_num=0; + def update(self, inc_x, inc_y, action_type): + direction = [NORTHWEST, NORTH, NORTHEAST, WEST, CENTER, EAST, SOUTHWEST, SOUTH, SOUTHEAST] \ + [4 + cmp(inc_x, 0) + cmp(inc_y, 0) * 3] + self.ch_speed = 100 + if action_type == STAND or direction == CENTER: + self.setaction(STAND) + elif action_type == RUN: + self.setaction(RUN) + self.ch_speed = 75 + else: + self.setaction(WALK) + self.lookat(direction) + tick = pygame.time.get_ticks() + if (tick - self.last_tick > self.ch_speed): + self.last_tick = tick; + self.frame_num += 1; + if (self.frame_num >= len(self.images[self.direction])): + self.frame_num=0; diff --git a/engine/common.py b/engine/common.py new file mode 100644 index 0000000..5e12a34 --- /dev/null +++ b/engine/common.py @@ -0,0 +1,18 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +CENTER = -1 +NORTH = 0 +NORTHEAST = 1 +EAST = 2 +SOUTHEAST = 3 +SOUTH = 4 +SOUTHWEST = 5 +WEST = 6 +NORTHWEST = 7 + +STAND = 0 +WALK = 1 +RUN = 2 +JUMP = 3 +CLIMB = 4 diff --git a/engine/game.py b/engine/game.py new file mode 100644 index 0000000..a17d9b7 --- /dev/null +++ b/engine/game.py @@ -0,0 +1,240 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sys +import os +import math +import glob +import re + +import pygame + +try: + import _path +except: + pass + +import tiledtmxloader + +import actor +from hero import avatar_hero + +# ----------------------------------------------------------------------------- + +def start(screen, map_filename, hero, hero_layer, collision_layer): + """ + Use the paralax scrolling feature. + """ + + # parser the map (it is done here to initialize the + # window the same size as the map if it is small enough) + world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(map_filename) + + pygame.display.set_caption("Map viewer: " + map_filename + " ( " + str(world_map.pixel_width) +" x "+ str(world_map.pixel_height) + " )") + + screen_width, screen_height = screen.get_size() + + # load the images using pygame + resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() + resources.load(world_map) + + # prepare map rendering + assert world_map.orientation == "orthogonal" + + # renderer + renderer = tiledtmxloader.helperspygame.RendererPygame() + + # get position of hero + hero_pos_x = hero.rect.centerx + hero_pos_y = hero.rect.bottom + + # dimensions of the hero for collision detection + hero_width = hero.rect.width + hero_height = 5 + + # cam_offset is for scrolling + cam_world_pos_x = hero.rect.centerx + cam_world_pos_y = hero.rect.centery + + # set initial cam position and size + renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ + screen_width, screen_height) + + # retrieve the layers + sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) + + # filter layers + sprite_layers = [layer for layer in sprite_layers if not layer.is_object_group] + + # add the hero the the right layer, it can be changed using 0-9 keys + sprite_layers[hero_layer].add_sprite(hero) + + # layer add/remove hero keys + num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ + pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] + + # variables for the main loop + clock = pygame.time.Clock() + running = True + speed = 0.075 * 2. + # set up timer for fps printing + pygame.time.set_timer(pygame.USEREVENT, 1000) + + speed_factor = 1.0 + action_type = actor.WALK + + # mainloop + while running: + dt = clock.tick() + + # event handling + for event in pygame.event.get(): + if event.type == pygame.QUIT: + running = False + elif event.type == pygame.USEREVENT: + print("fps: ", clock.get_fps()) + elif event.type == pygame.KEYDOWN: + if event.key == pygame.K_ESCAPE: + running = False + elif event.key in num_keys: + # find out which layer to manipulate + idx = num_keys.index(event.key) + # make sure this layer exists + if idx < len(world_map.layers): + if sprite_layers[idx].contains_sprite(hero): + sprite_layers[idx].remove_sprite(hero) + print("removed hero sprite from layer", idx) + else: + sprite_layers[idx].add_sprite(hero) + print("added hero sprite to layer", idx) + else: + print("no such layer or more than 10 layers: " + str(idx)) + elif event.key in (pygame.K_LSHIFT, pygame.K_RSHIFT): + speed_factor = 2.0 + action_type = actor.RUN + elif event.type == pygame.KEYUP: + if event.key in (pygame.K_LSHIFT, pygame.K_RSHIFT): + speed_factor = 1.0 + action_type = actor.WALK + + # find directions + direction_x = pygame.key.get_pressed()[pygame.K_RIGHT] - \ + pygame.key.get_pressed()[pygame.K_LEFT] + direction_y = pygame.key.get_pressed()[pygame.K_DOWN] - \ + pygame.key.get_pressed()[pygame.K_UP] + + # make sure the hero moves with same speed in all directions (diagonal!) + dir_len = math.hypot(direction_x, direction_y) + dir_len = dir_len if dir_len else 1.0 + + # update position + step_x = speed_factor * speed * dt * direction_x / dir_len + step_y = speed_factor * speed * dt * direction_y / dir_len + if collision_layer is not None: + try: + step_x, step_y = check_collision(hero_pos_x, hero_pos_y, step_x, step_y, hero_width, hero_height, sprite_layers[collision_layer]) + except: + pass + hero_pos_x += step_x + hero_pos_y += step_y + hero.rect.midbottom = (hero_pos_x, hero_pos_y) + hero.update(step_x, step_y, action_type) + + # adjust camera according to the hero's position, follow him + # (don't make the hero follow the cam, maybe later you want different + # objects to be followd by the cam) + renderer.set_camera_position(hero.rect.centerx, hero.rect.centery) + + # clear screen, might be left out if every pixel is redrawn anyway + screen.fill((0, 0, 0)) + + # render the map + for sprite_layer in sprite_layers: + if sprite_layer.is_object_group: + # we dont draw the object group layers + # you should filter them out if not needed + continue + else: + renderer.render_layer(screen, sprite_layer) + + pygame.display.flip() + +# ----------------------------------------------------------------------------- + +# unused in this demo, just here to show how you could check for collision! +def is_walkable(pos_x, pos_y, coll_layer): + """ + Just checks if a position in world coordinates is walkable. + """ + tile_x = int(pos_x // coll_layer.tilewidth) + tile_y = int(pos_y // coll_layer.tileheight) + + if coll_layer.content2D[tile_y][tile_x] is None: + return True + return False + +# ----------------------------------------------------------------------------- + +def check_collision(hero_pos_x, hero_pos_y, step_x, step_y, \ + hero_width, hero_height, coll_layer): + """ + Checks collision of the hero against the world. Its not the best way to + handle collision detection but for this demo it is good enough. + + :Returns: steps to add to heros current position. + """ + # create hero rect + hero_rect = pygame.Rect(0, 0, hero_width, hero_height) + hero_rect.midbottom = (hero_pos_x, hero_pos_y) + + # find the tile location of the hero + tile_x = int((hero_pos_x) // coll_layer.tilewidth) + tile_y = int((hero_pos_y) // coll_layer.tileheight) + + # find the tiles around the hero and extract their rects for collision + tile_rects = [] + for diry in (-1, 0 , 1): + for dirx in (-1, 0, 1): + if coll_layer.content2D[tile_y + diry][tile_x + dirx] is not None: + tile_rects.append(coll_layer.content2D[tile_y + diry][tile_x + dirx].rect) + + # save the original steps and return them if not canceled + res_step_x = step_x + res_step_y = step_y + + # x direction, floor or ceil depending on the sign of the step + step_x = special_round(step_x) + + # detect a collision and dont move in x direction if colliding + if hero_rect.move(step_x, 0).collidelist(tile_rects) > -1: + res_step_x = 0 + + # y direction, floor or ceil depending on the sign of the step + step_y = special_round(step_y) + + # detect a collision and dont move in y direction if colliding + if hero_rect.move(0, step_y).collidelist(tile_rects) > -1: + res_step_y = 0 + + # return the step the hero should do + return res_step_x, res_step_y + +# ----------------------------------------------------------------------------- + +def special_round(value): + """ + For negative numbers it returns the value floored, + for positive numbers it returns the value ceiled. + """ + # same as: math.copysign(math.ceil(abs(x)), x) + # OR: + # ## versus this, which could save many function calls + # import math + # ceil_or_floor = { True : math.ceil, False : math.floor, } + # # usage + # x = floor_or_ceil[val<0.0](val) + + if value < 0: + return math.floor(value) + return math.ceil(value) + diff --git a/hero.py b/hero.py new file mode 100644 index 0000000..cd379a7 --- /dev/null +++ b/hero.py @@ -0,0 +1,27 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from engine.actor import * + +class avatar_hero(avatar): + def __init__(self, directory, start_pos_x, start_pos_y): + super(avatar_hero, self).__init__(directory, start_pos_x, start_pos_y) + def load(self, directory): + self.images_standing = { + NORTH: get_images(directory, 'back.gif' ), + SOUTH: get_images(directory, 'front.gif'), + WEST: get_images(directory, 'left.gif'), + } + self.images_walking = { + NORTH: get_images(directory, 'back_walk.*.gif'), + SOUTH: get_images(directory, 'front_walk.*.gif'), + WEST: get_images(directory, 'left_walk.*.gif'), + } + self.images_running = { + NORTH: get_images(directory, 'back_run.*.gif'), + SOUTH: get_images(directory, 'front_run.*.gif'), + WEST: get_images(directory, 'left_run.*.gif'), + } + self.direction = SOUTH + self.frame_num = 0 + self.last_tick = pygame.time.get_ticks() diff --git a/main.py b/main.py new file mode 100755 index 0000000..73d4d92 --- /dev/null +++ b/main.py @@ -0,0 +1,60 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +import sys +import os +import engine +import pygame + +from hero import avatar_hero + +MAP = "maps/map.tmx" +HERO_DIR = "avatars/crono" + +SCREEN_WIDTH = 640 +SCREEN_HEIGHT = 480 + +HERO_START_X = 1024 +HERO_START_Y = 768 + +HERO_LAYER = 1 +COLLISION_LAYER = 3 + +# Este es el programa principal, invocado desde más abajo +def main(): + """ + Main method. + """ + args = sys.argv[1:] + if len(args) < 1: + path_to_map = os.path.join(os.curdir, MAP) + print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ + (os.path.basename(__file__), path_to_map))) + else: + path_to_map = args[0] + + # Inicializa pygame y abre una ventana + pygame.init() + pygame.display.set_caption("Map viewer") + screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) + # Crea el avatar del heroe + hero = create_hero(HERO_DIR, HERO_START_X, HERO_START_Y) + # Muestra el mundo en la ventana de forma interactiva + engine.game.start(screen, path_to_map, hero, HERO_LAYER, COLLISION_LAYER) + +def create_hero(directory, start_pos_x, start_pos_y): + """ + Creates the hero sprite. + """ + hero = avatar_hero(directory, start_pos_x, start_pos_y) + return hero + +# Este es el punto en el que empieza el programa +if __name__ == '__main__': + # Cambia el directorio activo al directorio en el que está el programa + abspath = os.path.abspath(__file__) + dname = os.path.dirname(abspath) + os.chdir(dname) + # Ejecuta el programa principal + main() + diff --git a/tiledtmxloader3/examples/graphics/tiles/collision.png b/maps/graphics/tiles/collision.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/collision.png rename to maps/graphics/tiles/collision.png diff --git a/tiledtmxloader3/examples/graphics/tiles/desert1.png b/maps/graphics/tiles/desert1.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/desert1.png rename to maps/graphics/tiles/desert1.png diff --git a/tiledtmxloader3/examples/graphics/tiles/desert2.png b/maps/graphics/tiles/desert2.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/desert2.png rename to maps/graphics/tiles/desert2.png diff --git a/tiledtmxloader3/examples/graphics/tiles/desert_x2.png b/maps/graphics/tiles/desert_x2.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/desert_x2.png rename to maps/graphics/tiles/desert_x2.png diff --git a/tiledtmxloader3/examples/graphics/tiles/desert_x3.png b/maps/graphics/tiles/desert_x3.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/desert_x3.png rename to maps/graphics/tiles/desert_x3.png diff --git a/tiledtmxloader3/examples/graphics/tiles/desert_x5.png b/maps/graphics/tiles/desert_x5.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/desert_x5.png rename to maps/graphics/tiles/desert_x5.png diff --git a/tiledtmxloader3/examples/graphics/tiles/tictactoe.png b/maps/graphics/tiles/tictactoe.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/tictactoe.png rename to maps/graphics/tiles/tictactoe.png diff --git a/tiledtmxloader3/examples/graphics/tiles/trans_woodland-desert.png b/maps/graphics/tiles/trans_woodland-desert.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/trans_woodland-desert.png rename to maps/graphics/tiles/trans_woodland-desert.png diff --git a/tiledtmxloader3/examples/graphics/tiles/tulimshar1.png b/maps/graphics/tiles/tulimshar1.png similarity index 100% rename from tiledtmxloader3/examples/graphics/tiles/tulimshar1.png rename to maps/graphics/tiles/tulimshar1.png diff --git a/maps/map.tmx b/maps/map.tmx new file mode 100644 index 0000000..98bf83f --- /dev/null +++ b/maps/map.tmx @@ -0,0 +1,257 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/maps/template-32x32.png b/maps/template-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..30831645653fd282db74c8199a95f55534c728e0 GIT binary patch literal 2225 zcwXxa@N?(olHy`uVBq!ia0y~yU}6Aa4mKe5rQ*sjAjMc5WGgtNdSvY3H^?+6GpPSxg<1`4v5c>21s-(i;L;8hj#-Vo2gz+vd=;uunK z>+Ow$TU`YOTn~P87M7TPpyk^i1)i!4p_~Oh-!AR@k*6{%Jw;A__4^I?>wdr8e*a(A z@Bd5;8tx1X4M0;_7#I{l4g#9Sz~BIOD1!h&DPomZTz~iT?iubi`-0^Y<_UhgoxlI@ zx7+c#`{fxJG&~5}LKO!91K=6!Gs%_w8-DSDyblb6_1o_AGcbs#5MuxiDWa9{$^QNa z=zy^MEBOu1a}0YsMJqK)*zcPm1PuvfQgR9?uGcq(Zu@GYb4k==lH#vN@BnQR; z-S5-l66Q_(#eiH8{sk&`WFo= zzySa 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 DR0ID 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. - diff --git a/tiledtmxloader3/MANIFEST.in b/tiledtmxloader3/MANIFEST.in deleted file mode 100644 index 725b227..0000000 --- a/tiledtmxloader3/MANIFEST.in +++ /dev/null @@ -1,7 +0,0 @@ -recursive-include examples * -recursive-include test * -recursive-include doc/html * -prune doc/html/.doctrees -recursive-exclude test *.pyc -exclude doc/html/.buildinfo -include LICENSE.txt \ No newline at end of file diff --git a/tiledtmxloader3/README.txt b/tiledtmxloader3/README.txt deleted file mode 100644 index b99849e..0000000 --- a/tiledtmxloader3/README.txt +++ /dev/null @@ -1,38 +0,0 @@ -pytmxloader - -A python map loader for the map format used by Tiled (see www.mapeditor.org) - -Project homepage and download: - https://code.google.com/p/pytmxloader/ - https://code.google.com/p/pytmxloader/downloads/list - -Dependencies: - python 2.6+ or python 3.1+ http://www.python.org - pygame 9.1+ http://www.pygame.org - - -==== changelog ==== - -2011-12-15 - - 2to3 conversion completed - -2011-12-14 [beta release 3.0.1] - - added examples - - fixed scaling - - fixed hero size of minig game examples - - reogranized module imports - - fixed marging position - - -2011-11-23 [alpha release 3.0.0.82] - - using 'New BSD license' now - - improved loading speed of maps - - improved pygame loader and renderer - - pyglet part is pretty broken - - - - - - - diff --git a/tiledtmxloader3/doc/make.bat b/tiledtmxloader3/doc/make.bat deleted file mode 100644 index 2af6fa4..0000000 --- a/tiledtmxloader3/doc/make.bat +++ /dev/null @@ -1,170 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=. -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\pytmxloader.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\pytmxloader.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/tiledtmxloader3/doc/source/conf.py b/tiledtmxloader3/doc/source/conf.py deleted file mode 100644 index d0dd1ae..0000000 --- a/tiledtmxloader3/doc/source/conf.py +++ /dev/null @@ -1,224 +0,0 @@ -# -*- coding: utf-8 -*- -# -# pytmxloader documentation build configuration file, created by -# sphinx-quickstart on Tue Nov 22 20:52:31 2011. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath(os.path.join(os.curdir))) -print("looking for module to autodoc in:", sys.path[0]) -import generate_modules -generate_modules.main("-n 'tiledtmxloader' -t -d . -f ../../ ../../setup.py ../../dist".split()) - -sys.path.insert(0, os.path.abspath(os.path.join(os.curdir, os.pardir, os.pardir))) -print sys.path - -import tiledtmxloader - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.txt' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'pytmxloader' -copyright = u'2011, DR0ID' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '3.0' -# The full version, including alpha/beta/rc tags. -release = tiledtmxloader.__version__ - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'pytmxloaderdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'pytmxloader.tex', u'pytmxloader Documentation', - u'DR0ID', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'pytmxloader', u'pytmxloader Documentation', - [u'DR0ID'], 1) -] diff --git a/tiledtmxloader3/doc/source/generate_modules.py b/tiledtmxloader3/doc/source/generate_modules.py deleted file mode 100644 index 879eb48..0000000 --- a/tiledtmxloader3/doc/source/generate_modules.py +++ /dev/null @@ -1,274 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -""" -sphinx-autopackage-script - -This script parses a directory tree looking for python modules and packages and -creates ReST files appropriately to create code documentation with Sphinx. -It also creates a modules index (named modules.). -""" - -# Copyright 2008 Société des arts technologiques (SAT), http://www.sat.qc.ca/ -# Copyright 2010 Thomas Waldmann -# All rights reserved. -# -# 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, see . - -# https://bitbucket.org/etienned/sphinx-autopackage-script/src/7199e9725789/generate_modules.py -from __future__ import print_function - -import os -import optparse - - -# automodule options -OPTIONS = ['members', - 'undoc-members', - # 'inherited-members', # disabled because there's a bug in sphinx - 'show-inheritance', - ] - -INIT = '__init__.py' - -def makename(package, module): - """Join package and module with a dot.""" - # Both package and module can be None/empty. - if package: - name = package - if module: - name += '.' + module - else: - name = module - return name - -def write_file(name, text, opts): - """Write the output file for module/package .""" - if opts.dryrun: - return - fname = os.path.join(opts.destdir, "%s.%s" % (name, opts.suffix)) - if not opts.force and os.path.isfile(fname): - print('File %s already exists, skipping.' % fname) - else: - print('Creating file %s.' % fname) - f = open(fname, 'w') - f.write(text) - f.close() - -def format_heading(level, text): - """Create a heading of [1, 2 or 3 supported].""" - underlining = ['=', '-', '~', ][level-1] * len(text) - return '%s\n%s\n\n' % (text, underlining) - -def format_directive(module, package=None): - """Create the automodule directive and add the options.""" - directive = '.. automodule:: %s\n' % makename(package, module) - for option in OPTIONS: - directive += ' :%s:\n' % option - return directive - -def create_module_file(package, module, opts): - """Build the text of the file and write the file.""" - text = format_heading(1, '%s Module' % module) - text += format_heading(2, ':mod:`%s` Module' % module) - text += format_directive(module, package) - write_file(makename(package, module), text, opts) - -def create_package_file(root, master_package, subroot, py_files, opts, subs): - """Build the text of the file and write the file.""" - package = os.path.split(root)[-1] - text = format_heading(1, '%s Package' % package) - # add each package's module - for py_file in py_files: - if shall_skip(os.path.join(root, py_file)): - continue - is_package = py_file == INIT - py_file = os.path.splitext(py_file)[0] - py_path = makename(subroot, py_file) - if is_package: - heading = ':mod:`%s` Package' % package - else: - heading = ':mod:`%s` Module' % py_file - text += format_heading(2, heading) - text += format_directive(is_package and subroot or py_path, master_package) - text += '\n' - - # build a list of directories that are packages (they contain an INIT file) - subs = [sub for sub in subs if os.path.isfile(os.path.join(root, sub, INIT))] - # if there are some package directories, add a TOC for theses subpackages - if subs: - text += format_heading(2, 'Subpackages') - text += '.. toctree::\n\n' - for sub in subs: - text += ' %s.%s\n' % (makename(master_package, subroot), sub) - text += '\n' - - write_file(makename(master_package, subroot), text, opts) - -def create_modules_toc_file(master_package, modules, opts, name='index'): - """ - Create the module's index. - """ - text = format_heading(1, '%s Modules' % opts.header) - text += '.. toctree::\n' - text += ' :maxdepth: %s\n\n' % opts.maxdepth - - modules.sort() - prev_module = '' - for module in modules: - # look if the module is a subpackage and, if yes, ignore it - if module.startswith(prev_module + '.'): - continue - prev_module = module - text += ' %s\n' % module - - write_file(name, text, opts) - -def shall_skip(module): - """ - Check if we want to skip this module. - """ - # skip it, if there is nothing (or just \n or \r\n) in the file - if os.path.getsize(module) < 3: - return True - - if module.find("setup.py") > -1 or module.find(os.sep + "dist" + os.sep) > -1: - return True - - return False - -def recurse_tree(path, excludes, opts): - """ - Look for every file in the directory tree and create the corresponding - ReST files. - """ - # use absolute path for root, as relative paths like '../../foo' cause - # 'if "/." in root ...' to filter out *all* modules otherwise - path = os.path.abspath(path) - # check if the base directory is a package and get is name - if INIT in os.listdir(path): - package_name = path.split(os.path.sep)[-1] - else: - package_name = None - - toc = [] - tree = os.walk(path, False) - for root, subs, files in tree: - # keep only the Python script files - py_files = sorted([f for f in files if os.path.splitext(f)[1] == '.py']) - # exclude private modules, but not __init__.py files - # py_files = sorted([f for f in py_files if not os.path.splitext(f)[0].startswith('_') or os.path.splitext(f)[0].startswith('__')]) - py_files = sorted([f for f in py_files if os.path.splitext(f)[0].find("_path.py") < 0]) - if INIT in py_files: - py_files.remove(INIT) - py_files.insert(0, INIT) - # remove hidden ('.') and private ('_') directories - subs = sorted([sub for sub in subs if sub[0] not in ['.', '_']]) - # check if there are valid files to process - # TODO: could add check for windows hidden files - if "/." in root or "/_" in root \ - or not py_files \ - or is_excluded(root, excludes): - continue - if INIT in py_files: - # we are in package ... - if (# ... with subpackage(s) - subs - or - # ... with some module(s) - len(py_files) > 1 - or - # ... with a not-to-be-skipped INIT file - not shall_skip(os.path.join(root, INIT)) - ): - subroot = root[len(path):].lstrip(os.path.sep).replace(os.path.sep, '.') - create_package_file(root, package_name, subroot, py_files, opts, subs) - toc.append(makename(package_name, subroot)) - elif root == path: - # if we are at the root level, we don't require it to be a package - for py_file in py_files: - if not shall_skip(os.path.join(path, py_file)): - module = os.path.splitext(py_file)[0] - create_module_file(package_name, module, opts) - toc.append(makename(package_name, module)) - - # create the module's index - if not opts.notoc: - create_modules_toc_file(package_name, toc, opts) - -def normalize_excludes(rootpath, excludes): - """ - Normalize the excluded directory list: - * must be either an absolute path or start with rootpath, - * otherwise it is joined with rootpath - * with trailing slash - """ - sep = os.path.sep - f_excludes = [] - for exclude in excludes: - if not os.path.isabs(exclude) and not exclude.startswith(rootpath): - exclude = os.path.join(rootpath, exclude) - if not exclude.endswith(sep): - exclude += sep - f_excludes.append(exclude) - return f_excludes - -def is_excluded(root, excludes): - """ - Check if the directory is in the exclude list. - - Note: by having trailing slashes, we avoid common prefix issues, like - e.g. an exlude "foo" also accidentally excluding "foobar". - """ - sep = os.path.sep - if not root.endswith(sep): - root += sep - for exclude in excludes: - if root.startswith(exclude): - return True - return False - -def main(args): - """ - Parse and check the command line arguments. - """ - parser = optparse.OptionParser(usage="""usage: %prog [options] [exclude paths, ...] - -Note: By default this script will not overwrite already created files.""") - parser.add_option("-n", "--doc-header", action="store", dest="header", help="Documentation Header (default=Project)", default="Project") - parser.add_option("-d", "--dest-dir", action="store", dest="destdir", help="Output destination directory", default="") - parser.add_option("-s", "--suffix", action="store", dest="suffix", help="module suffix (default=txt)", default="txt") - parser.add_option("-m", "--maxdepth", action="store", dest="maxdepth", help="Maximum depth of submodules to show in the TOC (default=4)", type="int", default=4) - parser.add_option("-r", "--dry-run", action="store_true", dest="dryrun", help="Run the script without creating the files") - parser.add_option("-f", "--force", action="store_true", dest="force", help="Overwrite all the files") - parser.add_option("-t", "--no-toc", action="store_true", dest="notoc", help="Don't create the table of content file") - (opts, args) = parser.parse_args(args) - if not args: - parser.error("package path is required.") - else: - rootpath, excludes = args[0], args[1:] - if os.path.isdir(rootpath): - # check if the output destination is a valid directory - if opts.destdir and os.path.isdir(opts.destdir): - excludes = normalize_excludes(rootpath, excludes) - recurse_tree(rootpath, excludes, opts) - else: - print('%s is not a valid output destination directory.' % opts.destdir) - else: - print('%s is not a valid directory.' % rootpath) - - -if __name__ == '__main__': - import sys - main(sys.argv[1:]) - diff --git a/tiledtmxloader3/doc/source/index.txt b/tiledtmxloader3/doc/source/index.txt deleted file mode 100644 index ed51d0b..0000000 --- a/tiledtmxloader3/doc/source/index.txt +++ /dev/null @@ -1,23 +0,0 @@ -.. pytmxloader documentation master file, created by - sphinx-quickstart on Tue Nov 22 20:52:31 2011. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -Welcome to pytmxloader's documentation! -======================================= - -Contents: - -.. toctree:: - :maxdepth: 4 - - tiledtmxloader - test - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - diff --git a/tiledtmxloader3/examples/001-1.tmx b/tiledtmxloader3/examples/001-1.tmx deleted file mode 100644 index c5b13a3..0000000 --- a/tiledtmxloader3/examples/001-1.tmx +++ /dev/null @@ -1,258 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tiledtmxloader3/examples/00_load-a-map/00_load_map.py b/tiledtmxloader3/examples/00_load-a-map/00_load_map.py deleted file mode 100644 index 9660b58..0000000 --- a/tiledtmxloader3/examples/00_load-a-map/00_load_map.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - - -import sys -import os - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Example showing how to load a map. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # print the filename - print("loaded map:", world_map.map_file_name) - - # let see how many pixels it will use - x_pixels = world_map.pixel_width - y_pixels = world_map.pixel_height - print("map size in pixels:", x_pixels, y_pixels) - - - # let see the tilesize - print("tile size used:", world_map.tilewidth, world_map.tileheight) - - # number of tiles - print("tiles used:", world_map.width, world_map.height) - - # count the layers - print("found '", len(world_map.layers), "' layers on this map") - - # # just to see if the map was loaded correctly we print - # # it on the console, warning: may be huge output! - # # tiledtmxloader.tmxreader.printer(world_map) - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - main() - - diff --git a/tiledtmxloader3/examples/00_load-a-map/_path.py b/tiledtmxloader3/examples/00_load-a-map/_path.py deleted file mode 100644 index ce17a5d..0000000 --- a/tiledtmxloader3/examples/00_load-a-map/_path.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -import os - -# run in right directory -if not sys.argv[0]: - appdir = os.path.abspath(os.path.dirname(__file__)) -else: - appdir = os.path.abspath(os.path.dirname(sys.argv[0])) - - -appdir = os.path.abspath(os.path.join(appdir, os.pardir, os.pardir)) - -if not appdir in sys.path: - sys.path.insert(0, appdir) - - - - - diff --git a/tiledtmxloader3/examples/01_resources_and_rendering/01_load_and_render_pygame.py b/tiledtmxloader3/examples/01_resources_and_rendering/01_load_and_render_pygame.py deleted file mode 100644 index 34c1d71..0000000 --- a/tiledtmxloader3/examples/01_resources_and_rendering/01_load_and_render_pygame.py +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Example showing basic loading and rendering of a tmx map. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + " - keys: arrows" ) - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height, "topleft") - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # variables for the main loop - frames_per_sec = 60.0 - clock = pygame.time.Clock() - running = True - - # mainloop - while running: - clock.tick(frames_per_sec) - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key == pygame.K_UP: - cam_world_pos_y -= world_map.tileheight - elif event.key == pygame.K_DOWN: - cam_world_pos_y += world_map.tileheight - elif event.key == pygame.K_RIGHT: - cam_world_pos_x += world_map.tilewidth - elif event.key == pygame.K_LEFT: - cam_world_pos_x -= world_map.tilewidth - - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, \ - cam_world_pos_y, "topleft") - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/01_resources_and_rendering/_path.py b/tiledtmxloader3/examples/01_resources_and_rendering/_path.py deleted file mode 100644 index ce17a5d..0000000 --- a/tiledtmxloader3/examples/01_resources_and_rendering/_path.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -import os - -# run in right directory -if not sys.argv[0]: - appdir = os.path.abspath(os.path.dirname(__file__)) -else: - appdir = os.path.abspath(os.path.dirname(sys.argv[0])) - - -appdir = os.path.abspath(os.path.join(appdir, os.pardir, os.pardir)) - -if not appdir in sys.path: - sys.path.insert(0, appdir) - - - - - diff --git a/tiledtmxloader3/examples/02_render_features/02_1_layers.py b/tiledtmxloader3/examples/02_render_features/02_1_layers.py deleted file mode 100644 index d123774..0000000 --- a/tiledtmxloader3/examples/02_render_features/02_1_layers.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Demo showing the usage of layers and their visibility. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height) - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # layer on/off keys - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key == pygame.K_UP: - cam_world_pos_y -= world_map.tileheight - elif event.key == pygame.K_DOWN: - cam_world_pos_y += world_map.tileheight - elif event.key == pygame.K_RIGHT: - cam_world_pos_x += world_map.tilewidth - elif event.key == pygame.K_LEFT: - cam_world_pos_x -= world_map.tilewidth - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - # visibility - sprite_layers[idx].visible = \ - not sprite_layers[idx].visible - print("layer", idx, "visible:", \ - sprite_layers[idx].visible) - else: - print("no such layer or more than 10 layers: " + \ - str(idx)) - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, cam_world_pos_y) - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/02_render_features/02_2_scale.py b/tiledtmxloader3/examples/02_render_features/02_2_scale.py deleted file mode 100644 index 4a9db57..0000000 --- a/tiledtmxloader3/examples/02_render_features/02_2_scale.py +++ /dev/null @@ -1,162 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Demo showing how to scale a layer. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9, shift+[0,9], r") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height, "topleft") - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # layer on/off keys - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key == pygame.K_UP: - cam_world_pos_y -= world_map.tileheight - elif event.key == pygame.K_DOWN: - cam_world_pos_y += world_map.tileheight - elif event.key == pygame.K_RIGHT: - cam_world_pos_x += world_map.tilewidth - elif event.key == pygame.K_LEFT: - cam_world_pos_x -= world_map.tilewidth - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - growth = 0.05 - if pygame.key.get_mods() & pygame.KMOD_SHIFT: - growth *= -1 - # get the original layer to prevent blurring of images - layer = tiledtmxloader.helperspygame.get_layer_at_index(idx, resources) - - sprite_layers[idx] = tiledtmxloader.helperspygame.SpriteLayer.scale(layer, sprite_layers[idx].scale_x + growth, sprite_layers[idx].scale_y + growth) - print("layer %s has now scale: %s, %s" % (idx, sprite_layers[idx].scale_x, sprite_layers[idx].scale_y)) - else: - print("no such layer or more than 10 layers: " + \ - str(idx)) - elif event.key == pygame.K_r: - print("resetting layer scales") - for idx in range(len(sprite_layers)): - layer = tiledtmxloader.helperspygame.get_layer_at_index(idx, resources) - if not layer.is_object_group: - sprite_layers[idx] = tiledtmxloader.helperspygame.SpriteLayer.scale(layer, 1.0, 1.0) - - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, cam_world_pos_y, "topleft") - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/02_render_features/02_3_parallax_scrolling.py b/tiledtmxloader3/examples/02_render_features/02_3_parallax_scrolling.py deleted file mode 100644 index c20af5a..0000000 --- a/tiledtmxloader3/examples/02_render_features/02_3_parallax_scrolling.py +++ /dev/null @@ -1,145 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Example showing how to use the paralax scrolling feature. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height, alignment='topleft') - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - sprite_layers = [layer for layer in sprite_layers if not layer.is_object_group] - - assert len(sprite_layers) >= 2, "use a map with at least 2 layers!" - - # set paralax factors - for idx in range(len(sprite_layers)): - sprite_layers[idx].set_layer_paralax_factor(1.0 / len(sprite_layers) * (idx + 1)) - - # variables for the main loop - clock = pygame.time.Clock() - running = True - speed = 0.075 - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - dt = clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - - # find directions - direction_x = pygame.key.get_pressed()[pygame.K_RIGHT] - \ - pygame.key.get_pressed()[pygame.K_LEFT] - direction_y = pygame.key.get_pressed()[pygame.K_DOWN] - \ - pygame.key.get_pressed()[pygame.K_UP] - - # update position - cam_world_pos_x += speed * dt * direction_x - cam_world_pos_y += speed * dt * direction_y - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, cam_world_pos_y, "topleft") - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/02_render_features/02_4_collapse.py b/tiledtmxloader3/examples/02_render_features/02_4_collapse.py deleted file mode 100644 index fdb5e71..0000000 --- a/tiledtmxloader3/examples/02_render_features/02_4_collapse.py +++ /dev/null @@ -1,151 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - This is the demo showing the usage of the collapse feature. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9, r") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height, "topleft") - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # layer on/off keys - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key == pygame.K_UP: - cam_world_pos_y -= world_map.tileheight - elif event.key == pygame.K_DOWN: - cam_world_pos_y += world_map.tileheight - elif event.key == pygame.K_RIGHT: - cam_world_pos_x += world_map.tilewidth - elif event.key == pygame.K_LEFT: - cam_world_pos_x -= world_map.tilewidth - elif event.key == pygame.K_r: - print("resetting layers!") - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - sprite_layers[idx] = tiledtmxloader.helperspygame.SpriteLayer.collapse(sprite_layers[idx]) - print("layer %s has collapse level: %s" % \ - (idx, sprite_layers[idx].get_collapse_level())) - else: - print("no such layer or more than 10 layers: " + str(idx)) - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, cam_world_pos_y, "topleft") - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/02_render_features/02_5_dynamic_sprites.py b/tiledtmxloader3/examples/02_render_features/02_5_dynamic_sprites.py deleted file mode 100644 index 813b3bd..0000000 --- a/tiledtmxloader3/examples/02_render_features/02_5_dynamic_sprites.py +++ /dev/null @@ -1,212 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os -import random -from random import randint - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - This is the demo showing the usage of dynamic sprites - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # cam_offset is for scrolling - cam_world_pos_x = 0 - cam_world_pos_y = 0 - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height, "topleft") - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # dynamic sprites - my_sprites = [create_dude(world_map.pixel_width, world_map.pixel_height) for x in range(300)] - - # layer add/remove dynamic sprites - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - dt = clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key == pygame.K_UP: - cam_world_pos_y -= world_map.tileheight - elif event.key == pygame.K_DOWN: - cam_world_pos_y += world_map.tileheight - elif event.key == pygame.K_RIGHT: - cam_world_pos_x += world_map.tilewidth - elif event.key == pygame.K_LEFT: - cam_world_pos_x -= world_map.tilewidth - elif event.key == pygame.K_r: - print("resetting layers!") - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - # sprite_layers[idx] = tiledtmxloader.helperspygame.SpriteLayer.collapse(sprite_layers[idx]) - # print "layer %s has collapse level: %s" % \ - # (idx, sprite_layers[idx].get_collapse_level()) - if sprite_layers[idx].contains_sprite(my_sprites[0]): - sprite_layers[idx].remove_sprites(my_sprites) - print("removed dude sprites from layer", idx) - else: - sprite_layers[idx].add_sprites(my_sprites) - print("added dude sprites to layer", idx) - else: - print("no such layer or more than 10 layers: " + str(idx)) - - # update sprites position - for spr in my_sprites: - spr.update(dt) - - # adjust camera to position according to the keypresses - renderer.set_camera_position(cam_world_pos_x, cam_world_pos_y, "topleft") - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -def create_dude(world_width, world_height): - """ - Creates a random dude. - """ - position_x = randint(0, world_width) - position_y = randint(0, world_height) - image = pygame.Surface((randint(40, 60), randint(70, 80)), pygame.SRCALPHA) - image.fill((randint(0, 255), randint(0, 255), randint(0, 255), 200)) - return Dude(image, position_x, position_y) - -# ----------------------------------------------------------------------------- - -class Dude(tiledtmxloader.helperspygame.SpriteLayer.Sprite): - """ - This is a dynamic sprite. Imagine it is an animal or hero or - similar moving around the world. - """ - - def __init__(self, img, start_pos_x, start_pos_y): - """ - Constructor. - """ - super(Dude, self).__init__(img, img.get_rect()) - self.velocity_x = 0 - self.velocity_y = 0 - self.position_x = start_pos_x - self.position_y = start_pos_y - self.rect.center = (self.position_x, self.position_y) - - def update(self, dt): - """ - Update the movement of the dudue. - """ - if random.random() < 0.025: - if self.velocity_x: - self.velocity_x = 0 - self.velocity_y = 0 - else: - self.velocity_x = randint(-10, 10) * 0.005 - self.velocity_y = randint(-10, 10) * 0.005 - self.position_x += self.velocity_x * dt - self.position_y += self.velocity_y * dt - self.rect.center = (self.position_x, self.position_y) - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/02_render_features/_path.py b/tiledtmxloader3/examples/02_render_features/_path.py deleted file mode 100644 index ce17a5d..0000000 --- a/tiledtmxloader3/examples/02_render_features/_path.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -import os - -# run in right directory -if not sys.argv[0]: - appdir = os.path.abspath(os.path.dirname(__file__)) -else: - appdir = os.path.abspath(os.path.dirname(sys.argv[0])) - - -appdir = os.path.abspath(os.path.join(appdir, os.pardir, os.pardir)) - -if not appdir in sys.path: - sys.path.insert(0, appdir) - - - - - diff --git a/tiledtmxloader3/examples/03_mini_game/03_1_mini_game.py b/tiledtmxloader3/examples/03_mini_game/03_1_mini_game.py deleted file mode 100644 index f85de92..0000000 --- a/tiledtmxloader3/examples/03_mini_game/03_1_mini_game.py +++ /dev/null @@ -1,183 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os -import math - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Example showing how to use the paralax scrolling feature. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # create hero sprite - # use floats for hero position - hero_pos_x = screen_width - hero_pos_y = screen_height - hero = create_hero(hero_pos_x, hero_pos_y) - - # cam_offset is for scrolling - cam_world_pos_x = hero.rect.centerx - cam_world_pos_y = hero.rect.centery - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height) - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # filter layers - sprite_layers = [layer for layer in sprite_layers if not layer.is_object_group] - - # add the hero the the right layer, it can be changed using 0-9 keys - sprite_layers[1].add_sprite(hero) - - # layer add/remove hero keys - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - speed = 0.075 - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - dt = clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - if sprite_layers[idx].contains_sprite(hero): - sprite_layers[idx].remove_sprite(hero) - print("removed hero sprite from layer", idx) - else: - sprite_layers[idx].add_sprite(hero) - print("added hero sprite to layer", idx) - else: - print("no such layer or more than 10 layers: " + str(idx)) - - # find directions - direction_x = pygame.key.get_pressed()[pygame.K_RIGHT] - \ - pygame.key.get_pressed()[pygame.K_LEFT] - direction_y = pygame.key.get_pressed()[pygame.K_DOWN] - \ - pygame.key.get_pressed()[pygame.K_UP] - - # make sure the hero moves with same speed in all directions (diagonal!) - dir_len = math.hypot(direction_x, direction_y) - dir_len = dir_len if dir_len else 1.0 - # update position - hero_pos_x += speed * dt * direction_x / dir_len - hero_pos_y += speed * dt * direction_y / dir_len - hero.rect.midbottom = (hero_pos_x, hero_pos_y) - - # adjust camera according to the hero's position, follow him - renderer.set_camera_position(hero.rect.centerx, hero.rect.centery) - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -def create_hero(start_pos_x, start_pos_y): - """ - Creates the hero sprite. - """ - image = pygame.Surface((50, 70), pygame.SRCALPHA) - image.fill((255, 0, 0, 200)) - rect = image.get_rect() - rect.midbottom = (start_pos_x, start_pos_y) - return tiledtmxloader.helperspygame.SpriteLayer.Sprite(image, rect) - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - - main() - - diff --git a/tiledtmxloader3/examples/03_mini_game/03_2_mini_game_coll_detection.py b/tiledtmxloader3/examples/03_mini_game/03_2_mini_game_coll_detection.py deleted file mode 100644 index 8056a87..0000000 --- a/tiledtmxloader3/examples/03_mini_game/03_2_mini_game_coll_detection.py +++ /dev/null @@ -1,271 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -""" - -This is the pygame minimal example. - -""" - - -__revision__ = "$Rev$" -__version__ = "3.0.0." + __revision__[6:-2] -__author__ = 'DR0ID @ 2009-2011' - -import sys -import os -import math - -import pygame - -try: - import _path -except: - pass - -import tiledtmxloader - -# ----------------------------------------------------------------------------- - -def main(): - """ - Main method. - """ - args = sys.argv[1:] - if len(args) < 1: - path_to_map = os.path.join(os.pardir, "001-1.tmx") - print(("usage: python %s your_map.tmx\n\nUsing default map '%s'\n" % \ - (os.path.basename(__file__), path_to_map))) - else: - path_to_map = args[0] - - demo_pygame(path_to_map) - -# ----------------------------------------------------------------------------- - -def demo_pygame(file_name): - """ - Example showing how to use the paralax scrolling feature. - """ - - # parser the map (it is done here to initialize the - # window the same size as the map if it is small enough) - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode(file_name) - - # init pygame and set up a screen - pygame.init() - pygame.display.set_caption("tiledtmxloader - " + file_name + \ - " - keys: arrows, 0-9") - screen_width = min(1024, world_map.pixel_width) - screen_height = min(768, world_map.pixel_height) - screen = pygame.display.set_mode((screen_width, screen_height)) - - # load the images using pygame - resources = tiledtmxloader.helperspygame.ResourceLoaderPygame() - resources.load(world_map) - - # prepare map rendering - assert world_map.orientation == "orthogonal" - - # renderer - renderer = tiledtmxloader.helperspygame.RendererPygame() - - # create hero sprite - # use floats for hero position - hero_pos_x = screen_width - hero_pos_y = screen_height - hero = create_hero(hero_pos_x, hero_pos_y) - - # dimensions of the hero for collision detection - hero_width = hero.rect.width - hero_height = 5 - - # cam_offset is for scrolling - cam_world_pos_x = hero.rect.centerx - cam_world_pos_y = hero.rect.centery - - # set initial cam position and size - renderer.set_camera_position_and_size(cam_world_pos_x, cam_world_pos_y, \ - screen_width, screen_height) - - # retrieve the layers - sprite_layers = tiledtmxloader.helperspygame.get_layers_from_map(resources) - - # filter layers - sprite_layers = [layer for layer in sprite_layers if not layer.is_object_group] - - # add the hero the the right layer, it can be changed using 0-9 keys - sprite_layers[1].add_sprite(hero) - - # layer add/remove hero keys - num_keys = [pygame.K_0, pygame.K_1, pygame.K_2, pygame.K_3, pygame.K_4, \ - pygame.K_5, pygame.K_6, pygame.K_7, pygame.K_8, pygame.K_9] - - # variables for the main loop - clock = pygame.time.Clock() - running = True - speed = 0.075 - # set up timer for fps printing - pygame.time.set_timer(pygame.USEREVENT, 1000) - - # mainloop - while running: - dt = clock.tick() - - # event handling - for event in pygame.event.get(): - if event.type == pygame.QUIT: - running = False - elif event.type == pygame.USEREVENT: - print("fps: ", clock.get_fps()) - elif event.type == pygame.KEYDOWN: - if event.key == pygame.K_ESCAPE: - running = False - elif event.key in num_keys: - # find out which layer to manipulate - idx = num_keys.index(event.key) - # make sure this layer exists - if idx < len(world_map.layers): - if sprite_layers[idx].contains_sprite(hero): - sprite_layers[idx].remove_sprite(hero) - print("removed hero sprite from layer", idx) - else: - sprite_layers[idx].add_sprite(hero) - print("added hero sprite to layer", idx) - else: - print("no such layer or more than 10 layers: " + str(idx)) - - # find directions - direction_x = pygame.key.get_pressed()[pygame.K_RIGHT] - \ - pygame.key.get_pressed()[pygame.K_LEFT] - direction_y = pygame.key.get_pressed()[pygame.K_DOWN] - \ - pygame.key.get_pressed()[pygame.K_UP] - - # make sure the hero moves with same speed in all directions (diagonal!) - dir_len = math.hypot(direction_x, direction_y) - dir_len = dir_len if dir_len else 1.0 - - # update position - step_x = speed * dt * direction_x / dir_len - step_y = speed * dt * direction_y / dir_len - step_x, step_y = check_collision(hero_pos_x, hero_pos_y, step_x, step_y, hero_width, hero_height, sprite_layers[3]) - hero_pos_x += step_x - hero_pos_y += step_y - hero.rect.midbottom = (hero_pos_x, hero_pos_y) - - # adjust camera according to the hero's position, follow him - # (don't make the hero follow the cam, maybe later you want different - # objects to be followd by the cam) - renderer.set_camera_position(hero.rect.centerx, hero.rect.centery) - - # clear screen, might be left out if every pixel is redrawn anyway - screen.fill((0, 0, 0)) - - # render the map - for sprite_layer in sprite_layers: - if sprite_layer.is_object_group: - # we dont draw the object group layers - # you should filter them out if not needed - continue - else: - renderer.render_layer(screen, sprite_layer) - - pygame.display.flip() - -# ----------------------------------------------------------------------------- - -def create_hero(start_pos_x, start_pos_y): - """ - Creates the hero sprite. - """ - image = pygame.Surface((25, 45), pygame.SRCALPHA) - image.fill((255, 0, 0, 200)) - rect = image.get_rect() - rect.midbottom = (start_pos_x, start_pos_y) - return tiledtmxloader.helperspygame.SpriteLayer.Sprite(image, rect) - -# ----------------------------------------------------------------------------- - -# unused in this demo, just here to show how you could check for collision! -def is_walkable(pos_x, pos_y, coll_layer): - """ - Just checks if a position in world coordinates is walkable. - """ - tile_x = int(pos_x // coll_layer.tilewidth) - tile_y = int(pos_y // coll_layer.tileheight) - - if coll_layer.content2D[tile_y][tile_x] is None: - return True - return False - -# ----------------------------------------------------------------------------- - -def check_collision(hero_pos_x, hero_pos_y, step_x, step_y, \ - hero_width, hero_height, coll_layer): - """ - Checks collision of the hero against the world. Its not the best way to - handle collision detection but for this demo it is good enough. - - :Returns: steps to add to heros current position. - """ - # create hero rect - hero_rect = pygame.Rect(0, 0, hero_width, hero_height) - hero_rect.midbottom = (hero_pos_x, hero_pos_y) - - # find the tile location of the hero - tile_x = int((hero_pos_x) // coll_layer.tilewidth) - tile_y = int((hero_pos_y) // coll_layer.tileheight) - - # find the tiles around the hero and extract their rects for collision - tile_rects = [] - for diry in (-1, 0 , 1): - for dirx in (-1, 0, 1): - if coll_layer.content2D[tile_y + diry][tile_x + dirx] is not None: - tile_rects.append(coll_layer.content2D[tile_y + diry][tile_x + dirx].rect) - - # save the original steps and return them if not canceled - res_step_x = step_x - res_step_y = step_y - - # x direction, floor or ceil depending on the sign of the step - step_x = special_round(step_x) - - # detect a collision and dont move in x direction if colliding - if hero_rect.move(step_x, 0).collidelist(tile_rects) > -1: - res_step_x = 0 - - # y direction, floor or ceil depending on the sign of the step - step_y = special_round(step_y) - - # detect a collision and dont move in y direction if colliding - if hero_rect.move(0, step_y).collidelist(tile_rects) > -1: - res_step_y = 0 - - # return the step the hero should do - return res_step_x, res_step_y - -# ----------------------------------------------------------------------------- - -def special_round(value): - """ - For negative numbers it returns the value floored, - for positive numbers it returns the value ceiled. - """ - # same as: math.copysign(math.ceil(abs(x)), x) - # OR: - # ## versus this, which could save many function calls - # import math - # ceil_or_floor = { True : math.ceil, False : math.floor, } - # # usage - # x = floor_or_ceil[val<0.0](val) - - if value < 0: - return math.floor(value) - return math.ceil(value) - -# ----------------------------------------------------------------------------- - -if __name__ == '__main__': - main() - - diff --git a/tiledtmxloader3/examples/03_mini_game/_path.py b/tiledtmxloader3/examples/03_mini_game/_path.py deleted file mode 100644 index ce17a5d..0000000 --- a/tiledtmxloader3/examples/03_mini_game/_path.py +++ /dev/null @@ -1,21 +0,0 @@ -# -*- coding: utf-8 -*- - -import sys -import os - -# run in right directory -if not sys.argv[0]: - appdir = os.path.abspath(os.path.dirname(__file__)) -else: - appdir = os.path.abspath(os.path.dirname(sys.argv[0])) - - -appdir = os.path.abspath(os.path.join(appdir, os.pardir, os.pardir)) - -if not appdir in sys.path: - sys.path.insert(0, appdir) - - - - - diff --git a/tiledtmxloader3/examples/README.txt b/tiledtmxloader3/examples/README.txt deleted file mode 100644 index 65206da..0000000 --- a/tiledtmxloader3/examples/README.txt +++ /dev/null @@ -1,55 +0,0 @@ - -LICENSES - - - The map "001-1.tmx" and its tilesets are under the GPL2+ license! - - The examples itself are undder the "New BSD license" - - - -Welcome the the examples for the tiledtmxloader version 3.X - -Unfortunately I had not time to implement the pyglet parts, so -this examples are all pygame only. - -There is a map included from the game "The mana world" [http://themanaworld.org/]. -It is called "001-1.tmx" and is placed next to this README file. - - -This map allows to show most of the features of this release. It is -automatically used if you start the examples without argument. If you wish -to start any example with another map, you can provide it as first argument: - - >python 00_load_map.py ../mymap.tmx - -To see how the provided map is structered, I recommend -to load it into "Tiled" and take a look at its layers. - - -The examples are divided into the following categories: - - 00_load-a-map - this examples show how to load a map and how to read certain - properties out of the map - - 01_resources_and_rendering - this examples show how to load a map and then using a resoureloader - and a renderer to actually bring the map on screen - - 02_render_features - this examples show what features the pygame renderer provides: - enabling/disabling layers, scaling layers, parallax scrolling, - collapsing layers and usage of dynamic sprites (sprites within a - single layer that can move around) - - 03_mini_game - this examples show how to make the camera follow a dynamic - sprite (I call it hero) and how you could use a collision - layer for collision detection - -If you have any question, suggestion, improvements or whatever feel -free to contact me through the project homepage or on IRC. - -Enjoy! - -DR0ID @ 2009-2011 - diff --git a/tiledtmxloader3/make-dist.bat b/tiledtmxloader3/make-dist.bat deleted file mode 100644 index 03a1ec8..0000000 --- a/tiledtmxloader3/make-dist.bat +++ /dev/null @@ -1,12 +0,0 @@ -rem del /F /S /Q dist -del /F /S /Q MANIFEST -del /F /Q /S *.pyc -del /F /Q /S *.pyo -del /F /Q /S doc/html - -cd doc -call make.bat html - -cd .. -python setup.py sdist -pause \ No newline at end of file diff --git a/tiledtmxloader3/setup.py b/tiledtmxloader3/setup.py deleted file mode 100644 index b005b08..0000000 --- a/tiledtmxloader3/setup.py +++ /dev/null @@ -1,35 +0,0 @@ -# -*- coding: utf-8 -*- - -from distutils.core import setup -import sys - -sys.path.insert(0, 'tiledtmxloader') -import tiledtmxloader - -extra = {} -if sys.version_info >= (3,): - extra['use_2to3'] = True - -setup( - name='tiledtmxloader', - version=tiledtmxloader.__version__, - author='DR0ID', - author_email='dr0iddr0id@gmail.com', - maintainer='DR0ID', - url='https://code.google.com/p/pytmxloader/', - download_url='https://code.google.com/p/pytmxloader/downloads/list', - description='', - long_description=tiledtmxloader.tmxreader.__doc__, - package_dir={'tiledtmxloader': 'tiledtmxloader'}, - packages=['tiledtmxloader'], - keywords='pygame tiled mapeditor game map', - license='New BSD License', - classifiers=['Development Status :: 5 - Production/Stable', - 'Intended Audience :: Developers', - 'Natural Language :: English', - 'Operating System :: OS Independent', - 'Programming Language :: Python :: 2', - 'License :: OSI Approved :: New BSD License', - ], - **extra - ) diff --git a/tiledtmxloader3/test/__init__.py b/tiledtmxloader3/test/__init__.py deleted file mode 100644 index 40a96af..0000000 --- a/tiledtmxloader3/test/__init__.py +++ /dev/null @@ -1 +0,0 @@ -# -*- coding: utf-8 -*- diff --git a/tiledtmxloader3/test/invalid_version.tmx b/tiledtmxloader3/test/invalid_version.tmx deleted file mode 100644 index 8179dde..0000000 --- a/tiledtmxloader3/test/invalid_version.tmx +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - H4sIAAAAAAAAC+2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/map.tmx b/tiledtmxloader3/test/map.tmx deleted file mode 100644 index 1702363..0000000 --- a/tiledtmxloader3/test/map.tmx +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - eJztymc7FmAAQOHXniErZZO9QkpkK6PsvbdSVkR+fucvPM9X51zX/e0kEmZmZvElIRkpSEUa0pGBTGQhGznIjfgtrBfIQz4K8BKFKEIxSlCKVyiL+C2s13iDclSgElWoRg1qUYd6vI34LawGNKIJzWhBK9rQjg50ogvvIn4Lqxs96MV79OEDPqIfnzCAQXyO+C2sIQxjBKMYwzgmMIkv+IopTEf8FtYMZvEN3zGHeSxgEUtYxgpWI34Law3r2MAmtrCNHexiD/s4wGHEb2Ed4RgnOMUZzvEDP3GBX/iNy4jfwrrCNW5wiz+4wz3+4gGP+IeniN/MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzsufYfzy84uQ== - - - diff --git a/tiledtmxloader3/test/map_flip.tmx b/tiledtmxloader3/test/map_flip.tmx deleted file mode 100644 index 2815cb8..0000000 --- a/tiledtmxloader3/test/map_flip.tmx +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - eJzt1dk212EARuGfWeYpc5KZkkKGTP+QucHYKKQyhkJ16NJcWnu5g+87tfdaz9l7/hYnSVKcJFdI4ToxMzMLKA3pyEAmspCNHOTiDvKQj4KIvYVViKLk5tuTEpSiDOWowF1UogrVEXsLqwa1qEM97qEB99GIB2hCM1oi9hZWK9rQjg50ogsP8QjdeIwePInYW1hP0Ys+9OMZBjCIIQzjOUYwGrG3sMYwjgmk8AKTmMI0XmIGs5iL2FtY81jAIpbwCq/xBm+xjBWsYi1ib2GtYwPv8B4f8BGf8Bmb+IItbEfsLawdfMUuvuE7fmAP+zjAIY5wHLG3sH7iBKc4wy/8xjkucIk/+It/EXszMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzOz29p/Q786dQ== - - - diff --git a/tiledtmxloader3/test/mini2/mini2.tmx b/tiledtmxloader3/test/mini2/mini2.tmx deleted file mode 100644 index 628d3f7..0000000 --- a/tiledtmxloader3/test/mini2/mini2.tmx +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - H4sIAAAAAAAAAO2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/mini2/mini2_alt.tmx b/tiledtmxloader3/test/mini2/mini2_alt.tmx deleted file mode 100644 index 06d7561..0000000 --- a/tiledtmxloader3/test/mini2/mini2_alt.tmx +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - H4sIAAAAAAAAAO2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/mini2/mini2x.png b/tiledtmxloader3/test/mini2/mini2x.png deleted file mode 100644 index d45c384a998f3f4282920d166ea0d0d145fafe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 26252 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 Zm-vZmvmSR(s_^9Tl9y4Iu97qj{yzxU?ydj; diff --git a/tiledtmxloader3/test/mini2/mini2x.tsx b/tiledtmxloader3/test/mini2/mini2x.tsx deleted file mode 100644 index 3ae182f..0000000 --- a/tiledtmxloader3/test/mini2/mini2x.tsx +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/tiledtmxloader3/test/mini3/mini3.tmx b/tiledtmxloader3/test/mini3/mini3.tmx deleted file mode 100644 index 4bd13ea..0000000 --- a/tiledtmxloader3/test/mini3/mini3.tmx +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - H4sIAAAAAAAAAO2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/mini3/tileset/mini3x.png b/tiledtmxloader3/test/mini3/tileset/mini3x.png deleted file mode 100644 index d45c384a998f3f4282920d166ea0d0d145fafe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 26252 zcwRKRWmKEp^EC{`A-FU+v^W8Rl;X4niaVt^1edfp#ak>mv^d2jP$&}IDG=P9;9lI_ z%FF%xKkxM=*IL=L_spI%Ip?gEa1AwiLVOy0G&D3qMFm-{r_WMMn+*0K8Gq5fT#O;NXyzl|_4l1_T0Cbj;AeXqX%TG&)=~4KzJVsD_3H8ZIUp z1tyvi8ij}k02fGti$(&Lg}Qm7LD7IDEJj8~bh1V)bYM(OKv+})m_;J{R|zhQ$Quw) zMTEl^YK!KJCIOP=(6H5$6#+AmVA6r0Ihy04A{w|t03ZMjEeh@Y{$9fJn+O^j028ejk)VNwmYtui^TtTWHwB7`W~O3` zYRh*^K?Gx>?N8RDrC{D~4?5{N)z{ajenA4Qtv6+3rA>#9WF_j`ukV%! z9R*7TrcO&ez2G;p6u2aV;3yH0EejCP#smgnW+OaPzUfSQLY;I#*|H)EAQCzfG~aYR zAWDKsj}BzXVoO4zBLTecZHsb}-Of%}7#yWgq3A@^`+}G@7CJY~01{A;ucgR&^)He) zBwz_yGynyFj)Mg(fl0xHh6w<&2t75iZJ{k8At5m_F)1l2IXO8cB_%aA_2FF668JU@xSy@@x+1WWcIk~yHd3kyH`T1}-yr7_kJUl!yGBP?k zIyN>oK0ZD%F)=wgIW;vkJv}`$GlN2*W@l&T=H}+-=NA?h78e(nmX?;6mseI+R##Wo z*4Eb7*Pptxxw-lG@87Mht?ljYot>TC-QB&tz5V_DgM)*^!^5MaqvPY_larIv)6=uF zv-9)wi;IiP%gd{)tLy9Qo12^4+uOUlyQiK$JUsmS_wVuXk%-5C4-Jh8O;Pr(j_2G# zi=o3y{YD-!@z3k|TpT1KAYQqdRyd zqemv1W@0Nf`HPG5IVOY@kwW3|A}am+<9E$h7w?zXdlcgeoRdQIe@0tZfnCorv!qnt z5R;R<7r*VhII&I8g&4tiW@b4eBP*jOz}ykaM`uejX;2}h^LYGZYyI@KmZ-9-lygi+ zEH~d{km`HEh4%3g<8s=M`f>0NM$yGDRFNWzk>~$Yvxa>&TF24zg?0d?d#z`#{l>_R zsA8P*gi7A$iG1F%DeGwhX+v#}^;q@wR!rqIS*rf0MypXt`j0?<##uD&gQ7(7v4fzp z`ddbbtNBHUPcl*pXG@~fczrp(xmM%}8}8KC(yAL=bG`mW@qt(NlF%t^Gg^dDC+VmvYaVLEn? zuaA{*$=tudJTB??IFH|B&Rwf6;V7FZ*MmAoV7Tx2E!}xT?V97F#<89nXcm(qZtzXas6LNP?h8WQ;$<6=YW%(meoroPbhA` zc$nBi-dc+@Z+z?C4L>ZyeA;UMx$&}trv|%` zQ`S}MQj{&D&dm2$tRAe@uW(ZL&>Apwa)*CBBsQ>2%aGj z%h%^;Sqkm zHmGig1U$zImZVcjA!9YwR0*nxUAi(`VC;X9|0>e7dp7V=p}xU8^X_RaLL#c1sB7M1YP07bAj|(5<9hkLO_@5i*HqZ+ zaHr`5116dJE$`-+%g}qG{9X!H77zTl=+h@msUGKAZLh9GhNM%oj|<)l`6%{q7i)d4 z&;LfY#UJs1JoxEq1K+o9Y+99@S^r(O_^J!ui>s;HA1g7l)J*z<9TifOzIz!|BWw_o z3hMRio{A~-qswRBuJ;6P)y>^^$`$r5d?|kezWi+hI_%!OT{*C`{`u6E=iLdc0JnYe zyKmp^X?*Y+1IAdpQNO0*l48CD4uQpU{>)tby?*Y5YOy=qlmg;jo33oBGF1S~4*I+)G`h7)SSMfU`x9TqT1lGkCMD=vQ;{Lf@2E#4F{|LQ7@ z9_f!36V!XgLrBmxSQGs~G~|hH8px?ilNMN(4w;rg&ds8FWJ2 ztaH5=L-blwLjG&{-p~nOr$^IY80{=UF77jcVKcgGg>%~7{+I3*jdk^Sih^L@r~{1c z#Mtb7pi$sxejWA<<#2JHsZCzh|4Dbmta1d32}s27w}#*Mnn|zx4kap;Eg;ONs&+LZ zab3Y+;^ipM!H~yWeiz3QRbqU!4IzHWD0?k$24K-_YnhFtyclZ;Z=ihf*)Qwv*`qq8 z=)EmUi=ewx?Trk`_0eRTSkOMhVVD0y9nU-U&6%5Y<dR#?@ekJ= zX(Jc*AkAOvZG{|y(tHx!wa z{+Q*dms~_A<$LPl5k<)_;Wm8yjn+7v=wrP?FIbg0_T-xy)5=STGF6mfKPx8ph~t~A zOq+|gHbncKAWWW`OPHXDNT!ei+1<}ax2vxrvl8@#C0EoPl@k(Sf zkZ_nxJEOk{lyg7Wa#e`MER{s@F?x6cV#6i`=0PSHTr&oB{6_(u#WKgEqSWB%yC8Ti zrW_g-=xX_~-cA?2AvzND&l5!kTnI7s+YgAFvG{Yjye$FKAvKNcMVO<(cwO2t9@`PD zyHm#3Q-xRBntt$y*JA30u5mP`{AjqPMVh@Y0n&7}vOHA;e}3ktJot6WCR882_j8ND z^-PR9*-V1$A192C%OjHz=XcrMvIkMld)J%9-Y}vuoY^4-b=n^`_sL3oPj2X~yl_Va zGLDCHDFeg%l%Mi^4$AERN#ru}PDOxM8dxhUUG9W>#*#>~Od)*b@LH@uS-ywOVf`d9 zMXT{MBfzjD&iu6jl$rB}*w)_jWBKBCO3W9t_ju8S2o+AAFwUE&I)hT2$5wD(o4or% z)L-0KX7Z5T;})X4qfGrf5!5Lwc>a_|vv4F{D#Vn1)?K$7T(|yFdK)ienia(DkY7up zeSd;rg@EnQ6oXU`2!inbz@{$#OGI#uUQll>9#ZPufxG;)L}QrXdR*7E;53a2Buluh zice>v6j!YqCg@g3EA zR|?@mbUo9hS)PQ^YHav_`2;uJ5InaK-VxLuD`7p@lKOJq)0xEN;N&fiAaf44^x(JF zmXaZ!1u;rze@XGzfZ`p-e?jAJ7y3tI0R2lg_*c{~Nh{(7FPQpChAb!k9!;;K%gUYK zI%rD5EMvcSo)5nS+<0lK3#$kv$}O)!8^f1PhekDietjaTc&X^lazW3Mc@IPT!`+3EAH zG-0iqXt&J7%O8V*S0sre;VzwzLa6agAn~K>JqZ~%-}stncT2~$dJvCs%*mU))dhnM zbe!9p8&O53lmC!#Ah8;{o^LHb57eM( zI8>7N6K2ZGfhYOG7--`r-02+)D*v8zUzALY6V3iQ^epgh+n>RZHgGx#VjvVkoD#V67XBh>ucvaBwmu(^w=A^T3F> zrq7!!f)T?XV~$F2iG9M)+$T$DFYoJDXm|+mKf?;Rw%Bq@>?hm)dL};)H%TeiXE-KB z*ekDlH@H`%s-mt|F%~bjc9t0pPow&)m!f#+$6UquIWbgMZWb<3>3aSI=I#8y<0!;9 z^KKz3l6g#17n0{!ZAk`g=RBx!JmWF*eY=7gna)fjbz4j-3QOJ2QGKE@>ew}|2eIFt z3@2Xu7k>ZY%?y9OHdEf(A>6C>JFt}rTG{rNC;6wo1HJD*nazF|MKC&lSAmwyO8Rc6M0kV zA*tItGvx$*$F`*5v4`G5<7{kdEGfXY-In)U!goVq;GpGstN+iZs@sziCQrp`-C|OF`9jUCC26Ye)a2*dd~^DozR6fHm{XZZ}jA>8O@VJ){22|9S@)+{LM(vejIiLPS-zmpQTF_DC6AGsm zQxdxLjVA*h4_OWh{KWAtGSDH4*rELO_XRzdDQdHq6_MTWA?hV8!_(XyLj=6a%{$cI z2-^za&zuZtC)w_~0EL(vRMzCt)+&Vaei}aJMUkPO%v8Y7+`#+crX1^m7YpyFnaX?S z*v{XvR-T6x8qbv+`&cNCjPNv`S>o8y6cfX`c+=_46Jt?#>rKpMMkT0=y_2%(Q)suQD|Lx~}b%f$o zj^--!)KZ)sjm-}Pn0d-F$mvRb*u#8(w(WJ2rysy7`6hz}CPOzxF%8kT^rj8j2WO}qj=Pd%|}nI#h_ctil|UE`@2V1W_< ztiLB5Kw+kh@K9`-x9AivVfdXNMe|U0=O~Lq@os6dW*4^%-YyBIknnIo!#f2A5&Ty* zFT5wEC`6fqzPJS2we;_fVt=Gu;s6wi;vzn%=D0IfEbbpE7@U%k*Jz0M$5)Z;2i#T(h zK3={4jT)&9wfru_ekb+1uEeHh*WPgS$4gel9py1JNimne1BsRy!$yj#9q!3BGUGtX z9}t>`>#)Hqd#TOL&gW_OdUpf$=6^U`91dp7-^}UvhKvw9XD%J_7>CWCC$8Nv6HeDz z$Zd2Ps?sCRBR}e-2DnkS{!HiG)*KUvV&v45*^7xw?lFO0j{3B~mHE?J&6QJepPR{1 z$dZnLsV~3wwx|m=U!T;pIprE%6i0tEge`tVnknWTtX_=$zX%rte-&vjaovsi0wY~k zxq-H{f7uh=CTWD%8MlpJD=bp>Y@!_%4yWvQ2PXROw$GC)U6;n;DXOOJLe!VVPucMx zC0wQQdc3MC_b`{zb|&M^mdX*+<<6!eWbc{z>&k4lf7VfCoh0#gL5Gt&W8am6F>D+= zBMe{=D%mK8v-t9AowwB;f#O!x7Qmyn9y}6LDQYD3sI>P}TtfAd7UJrEp|2&w4w8u0 z&P(-vSfP;iabLJyp7}amUY$%f^=F!en#-*a9BoawG^F1~NP6B7D-Rs$H!@>uyNtLJ zVEH&cZLoiR4I_mpKX=vN(pJ0}KuBk3q4Z(QB_9*SU^^t^e68o1R-WY{3dHs8QmPd< zKHIPqRV@QYyt-u{<#Kc3Rptlidfd5riGtDf0B1$no1EW9r24!i7O2RQ+&b@+f?te! zkx>F8$Qo8Yx>Vl$iD((n*M`Xk#qQOWFF2jjdG4Rr( zvcSIM#SA8_ZlK6 zbu;vFyhRUKZY7c%e%L3lsxA@wP8{ai!nC_B15@AWNWy<+PZF76SXwt3JDVRmo}RyWqW)9%`uOGJI?14rLixrsX# zad>X9oChXWg z5qMD>eDESamB{{L_fe$LX6HWOFHif={ER-!((H?*TYlPBtoQYHpbz}M4Aws9)nS4s z{JOG!moIdK4UgS;Di{w)S&;sddJU{!Qs-aI@qxu9sxT1nosgCOZ?=TgL`hyv9oZ-^ zWeuk3Wo#t>gpO02H-egODoWTXZZPF17U}BP|8!V{6 z3e^T)d&afVmFTfIfb|8CwliK=X@ah&Uvx_SEZl$DREem+JSaP%2rtHY*!(@jn?J4k z7iQ!N1=1Gr_r+J=+Mzu6?Js(og9Pvx?}``iYkH4`k}H@R-oaX$FYxkOzBuG+^(@s& ze0B+t_?O^iLx%53-v7qpnBbkgqS&Vv03)($%J6Qq}iVe}$*;I!`~&p+)7a64r}QdgM@rtAbw#M8IXxC6Zekm2sA zajz0wfBr&Cr({oVA1W3v41PMhoH;C5bJgG1x_V@(waPNfBZhHASnVIXZfLy=Ef*mY zSS6xZLoZ^1038)R>!1*|l;z;)tV%(iTAZZQ>O~i3+D#H}b3JZBp*)|8-1?|a8mtek zE`LL%YXFAxvN>G*=~PiSV9uWS%g7C8?Z!T!;h1BZn0M!O_;L&**S(P@vHtDCB%g(F zbtl&|Ws!kvNUyQqf(GsH4;o5eDsqFbf8d#RM67(BGm`)k6>taew!S<2L8x^*9aRaS zg)@znAA50pxeU8VEwq&S7QdknD-;W1 zR99zhy4*|-QfX7)x4HrbuIMXnH*M3#lb-~S=V$8hGPVf5zA`1OtLmw8@FCv-tm#J; zCLC*D_gd(1w*ad|?IOy92VRyaC{8}Ha29&?MQ5KdDlqKaztzBs3s4H4N}v#>I3>rh z3Z?hMVvvul2FM4G%$>+^eky$Y9BaPO;N2b z%p$67Q>Sz5cy3pboABwJx}M;!;sq|w=9ImpeD1Aai|bMoApVeS;we7=cxs2U;*(_5_R@?d(y>_zuFF6$uzjuK1QQ2oqE z1SuOq29sh@Q1l7;zzC^%yPOndUg6Or3u(Q-MA2d$os_*uP2uS#?;b->I-{|+;K^%q zR>3#~-c_LDfS1%JD=xDe{-MVF)@VcKC)kTLG=FJ#(+8ypAFoNyC^iy^4PHuh?}IaQ zCE8q;zRiL?p@c3p3GyiQ9~ySZt1$wNY|^9pNMlh@gd=wyzp!uXik3zvF6!6@Jzd!451)OxADUPoH2!I$0H=wJ%Iagsgnk#ksnJ&c z8HKD3b<8!}j?gWLcpSeDNNm)E0or=%cxHKecVBD;Juc%gNKC zoFx-Trwt(N7mRL%2T8QvPIMB3NdE{qPq=x$#VsC&TPxs9u6PH6e_6 zFSU{J(KjQ$@QWNQj{)|wsfs#s>kHAkV)0AR7V99Jp4zJ0ZdOBJq_UrD*hAYvP%ND1 zQ+-Zs#cvBx|G&(y8Y7nf&f*^oN|XLRv0#QV?tIE1HO9Z~{BdDeI!e|Z&)TCmJdiR( zG0f6nEeVi5q23P-_kss{8bH2!g&Aj#amO14r3QoB6uH7`gu_TuOtC=`A#Q<>1;QmbydsJ0qS8 z@@DlG{2sgMK#&HWR`TjEq!WctcwuKSN+8{8G$LylBFbkj%w&GDY3m&gXS9&MkE;u| z;9}%EGXL14r!#O|mWg*CxBBPt&rBMNQK?Fm!KU;Zg@0Rx-TQm#64C|FInz2Ey@WJ> zhuGbC7d=0sX6uem_)QMl`Y_l%%W5f7ch3NkF4A~0fE`4J`bajQq_efb&M)=xGj&YK{wXE>kGFX9)BqdbiXy9&RGo$o za>oDT-tze_Hj1Bx^f%M9Y<1;wI>Cf~TqMmG9v1OUUH#bZ-hRK!uD|&Tg@8zaI@?v4|{zuDu!o z!%DFy7ufX@EcEnd3Irz6NvW+pS7*wTAS3)yrmNxKe$beQXy3l5JTgENnB(LaerFv; zU#DK*@qPTm3(!{R(~3c>+A$MM;{Bv{S=efI4Z74OF|_B7;Nhx7mZ?>6)OCQCL4f2L zK}*k|XeUWBWCKo7M!D|o8$6llDO`Wd1qwdO?ia+d{EW^A^E&Z?yb`$KhN~c{$jyB) z?S2-ou*J@~TFsH`o>f+t|8{PV$pGT((;70@yj(BhRoaW3k%u|6?t=!L&|pEV)M{ba zto(G9<6!ifYN{pyGOI4xvZz_yS7CN7$Ua!zGmHg|Z8{54@xi~iX%%j7{Z!%+0N0gE z>ixo~DaZcLH7g|lIUIE=NU%2S;dipscI;yHCy9!~@>}uAsufpfLWO68f}|5``ESzC zy%ytC{N!xR8$>w_0=E5)aF%|`KjNJ(9w|el!ZQAwV3)3k2mGvde_->Ao}|_L|4~!S zhLB=?2y*Cid;>EM^H=0t1QkAho4t@(@zk^lp9~@0apMgB^kSMXnd-qzB=Ip+oQ5ib zX|2~Ou<7l5VD=Dnlo8vNf}#JPZ029;iVk?6t7 z%WWV(#*bIZ{5K93es)6uHqnyai z>Xhihf5bk}ZX2|Q3TBRH2&3k1SHRQEusXPoYrV)8?I??>;0R%cI1gUa1eb-cuIybb zuWFhr3xYdpvi{c98HmG~I5>udes?Z2cTUQw@RKg6c{tl?k=&J-M{eTgNOZao@ux`& zBd^+Sw#f`NSspl*_vkLQ$<92cP5!F^qDj*q{k$TafYARF^{~w!m!3dKZjOc*cz(v* z^D^-tIphoWh{(ZgtY?pwIKf<#5VH;G>C6dLWVurSGjYhKt?CeZk_99(J7`u9+THC0 z%&}*Y-N*l3wa$Mj<*y2j+sg@eppJQVDx% zsZRg3cfI6kE*h2e<{!5Z9GP<6r74$)?)d2?x75%OiMSPCv5>y5)d9hqM3xzW^ezE4>)2Yl^fA!2EXpkH+;Q zJb-BE1BoRlN-_Zl^?{hGi>uon#<;Nh<@3uFL|PIA4(T5qODd>V5_y@TD4bL4MiDYt znf*0R;S7GSA21VV%LXyhvegI41HM$G8-Mc|LAB<7z4t++^5xxct!i(a{f zZeIJq=##1}L{5nisq{#rYCAJaGgtNW9{&Uh{4+_eT$%k{3967iW0!m6B9HFu$d$KV zvsV4B!*aF$bJ_ELw|vu=o%%ysSWZaZjHx@GMTqDn;O^Am1?D&y?ig~j-fV?G;OhbT?p zoQM?fu{waX1hnqtjwPc4e;KoMx%CJfkWu(-S`}r{avA%=KZ=3OQTm(H@~_1~@@j9Z zkS+$WO>X--18BGF4W{?on4X1aI5riGK3_qncpmN%a$T5u4ftb|rpuBgGxxws+I5c* zxZGz#VCLIK(o%vCT*%wP@7mYzgsCbpn1;uPn3E><5$Q6pD^%3tc=S|FW?ov-D*1j- zE|-LoJZkFcAd+Y@C}x%U-Yn}-uDG0^VSq51a2~ECZRW*p6SAjdGk)s>3pWEq zT#WM6b_Rd)80QIk342Idr5CoKwq6)yr?R`U8~}HH(-o<4fL%ObL+w01J*&qLa0}7` z2z<87@c!HFV_Ba<3Uf+{w;QZUJ-z6Gd5MWX9fF3it~?}9-X(Itg^xfLimEZIy#fGN zNbHbE&Zg+`hx0ZLwiR|wvT#T-vu~Ee!BnpSmt3zEAZ%jG4d72`6$*GLdK#!4b-nc+JOYM}>8Y zsBQrk;0B{_J^kLn$X?)38G4(Q#&SgC#u*Y0LfLvtub(IpYe~AYM)PyMRvz}@nX|W_ zKdoNU|LuIu0y{~2I#GcbtZ?*ii45@*OFN(?3ypcg-)N3`CiXs6P}3r6)QmU4wEr*x zg>tgAydm+={xH|Hc(!6028L$((6Eh;hPtLHezg-d3+$5yTwSQwD*?#$MSex*@@(<5 zjb3)T>JjlcTXDmgOCsMtcP5U2U=_^q@Obm430%?}yRa)M@g?^0PQ;iPYWb1ZS_17~ zr0{>Bn{piao=f0~A%^tKSiEJw6>Z+F=Z&~_>d5}qH<#(z0VSh4=@F#b9dFcFQ0x2Y zRM5gJJTX4RPcL78yhEQ@f)`pe42ux{w4((L=L=iOC(PwvGXoh|C%Ak+1ITc|a9S>+ z0JZUr9L4p)!v&5;>JpKgV47|Z5smJOwHO}j^;8*X0bIVvjn}lZ(ndy8mW~H#QP{`!MQ<1KU7V?w0~ zSNf8{Q(Fy7 z=CJ)=$KzlSekFNrv{TE4S>USQo9mQ~>@5>rPf^ltp<{xvkj>+g_DCSoZiNFaQuoZm-G`i)8?lR{93_P<{T z;WL*7+H_gW>#`wq9Z)j~dUHWPx8~wW7NWNVSCWTfC^E|UtXg+XJ~QRN6Q`k@(!Jmy zn+DfTU(@Rymm54bi5tSHCSrz_i)8}r7q%K+gMQBLnzQ>3D&)U#BbvX3W*XbrS&Oyo zBs|IrlX>Y-Rf%?6-);kFI8Rd$I9shfiwuSa_R7gm6X;U`PXU|}G!9l}C{ug@P%Kpf z2J8}&367{hRMqX4*!-e{7Yn~Ts25KWfHr}xb7S(l-OGYV>KW@5L7oA6YuDhR^RXRH zii8Z28Rx>DMIu9kIl4ls|A<)yK+~tfaBZcL0b_}yiLc(%p}A*{ds**7))yI@8}dG$ zR^z+u@s~@ccNNU15k)iux=6^UK-R8NPn2HxdQhMs@4}9A9Wsdy2}dRsn?UiDp=UId z&G~rjWzZU^mSWz3`q;#IHZnqr-LOUHS;&n{O}Ke-s-L4|t__F_ zGaeGE=9evJV=vZ{7{BB;!&E4TG8gVa4Jy0ESC(EwVw)suWw9nUx<7-`jX^>qG5!PWx`i^e_`Dy9js^ z1yNdeUg`VHYUHLL;e<8Cd}c+tKhIh&s&(nb)Qqq$u>9krR0T#ZT7xu6Oe1E`uSQ?i zTJG@#u@ZC=l!>w8IfSZJzz_Y*{i%9ok(|FV6{tt0zgzi?+E; zb$UtOW616H*lA1s5#46se8jL4s8Y-Y{tC7YOj>0YZAy)VNPQ}?A;LZr&D=MjSRrI} z{5j%=C%L#nZg6dJwb1_W?3&75<((Ktlb70ti0P8wjf;2&Zz}VcxT7La#Q>V%zDj)j zef1l_fv4x}Hy(q~2HD8XjIRXHG+^D?><*p!anr=B(^HF3&0)ul+vJzb+Uh)*Iq=2= z30cV$U;3Ka`X`wU1M@L!1P;y3v&_U}gocY0Zn!m><7x+i-F33ixiBAj`T^F}j zl{GREzR{`;v(m4Bs!88mARA*;=x^Ldw)pp*dzNylH~NB2Hk=+Yzl7a9JNCx8wvb41 z(5`Smo0rW@&C>DM;_8ws@Mrx{#AWo8CH%ldqS)+`VFY4M&P97Ixc;_{uyCt!B#(hZ zB_x1d3Bz&1>(F}+)Iwt_(mhe2n}_d_E?WPm$Sl5awE#u2Pr5?P!f^dnGKdy`-UrGU z#%_9oNgSB|32687z-P^UHyU4zS3C-5Acd7y?UnPd!@<^%>W{V3Ji9IvexK>XO!@E&ep_jC7m(Sc2YlZ@9C>!63h=0k=F05+MH!C4 zUP2|&<$5P_9BcdvVUS2#>!;p)c%L7Uk;vnRq-v5tR=dAn#l8d!-(Z)JbK=h8*7R+}PY%;EME5i8 zmDxq>)QlIq#q;((x52@BgYS5o!gA%A?Ci>+tK9X~o&&mLDH|HQ%p zW`>BX=v+JKvJP7sVH#mosc+F=e7Dm}cLn|`6m)5cB$iRxMTvSXL&o!)owcvp2QM;K zaX|Q`sL|_JD{WjWc@RFTp#|FqtT)3CJSLa%64Ch1cNV>11q;aq}};BiZL z9xq+ge00bN(pVLb41mSGru@n8dI7&S(K`Zss8!N3FW#{*@w4N%)42{R?!d3`pQ*|L zqqjtxR{i=-OJ*6c6gx{o0Z|UY^D??3j_DRYDc$2#TyyQA z^B4V9dPHd*|{sk>(bN>@d?VGOa0Wa}gZj}c-mr{>e&E4)Hso?HT1zXD>FGIGO)CXC6kXiGa2 z2jzk~!@uYyl=^mUYEemake5~fr%inc?z6duQQHkg9j}jJYtLLFR0XE%OwFul(jn{e zH3eyBA)%c~@4u%3$T)EpdCP%Ggo=u)UDBy<7)MGmE37lchHu7NKQh!^!hGzJoIKFo zj-(y96V4{cJTdW?L*#Z)FBI6doKII(msKZwM;C{=Fnqyb5`ssrEH zX%NOGe*FqIwTktd^5xy*#U|tc#}mE5RM4H{Mm(5(7z`qf$#fbL3e2gg{`=9~lgSDc zz@HyO;}R+kYYAfod@7fiS?A?JgeU_wx~zj1p^=P!@QE#9+W4KiTI?y=+CNMiiZxkv z6um$o;Mid9JuCt;C(t(8^DtJuH~ZA{B+HqOap(LkATkT_ zHK>w((zdNC{5NE=UK1i;MLP2in^_IcbQ&_Zgir5xVSJ0bp#fEx&HU+Mwm>~-iGsD@ zFkP>i#+LuYo5M}h!|A#`PT=QeG3`7K{y{qBwHw%U%{^jqUD zw;qq%0-Ci#mZ0Slk(#7#-CU0K+Vm`R2liBc9(;X%Gppa#UvA*FOn2pCJE0JP7Tjr8 zdNF+!KS8Y@Mr*h?*7t@KtVZv1jEx5la{S>%Z5dlm#M_>1Uy+0E3)Ytp|SX?(hXT zyqnE)@+W8#Wua--OVIuKDy|$)zcy64AS)UVQzy&fh|39u;^-3+ZqIrj@W*ti?D*xQSeNd3A5r?)BV>Zl+`3c#{&_gOZq@7(E)4Oa76s*wjjRJ$NmVD7TtLMUFd z^I2JdBkk}CR~e~Wm~?LKMa=c(gtMZ&unLa#Q}0J5TosVMNUysoC3PUy|0k%=fj4| z*W_N-X0*x@StAga07q^Kh@qNa!65Yv_sE>mf@rI19#Mjic*=JNJt6X>qTBfJ{rrU_ z5B`^ETW=ZEp%uS8cs7$A)QRi={JneSv5E#Bd|lDgy#j_rc72bplkVV#c|SwG)tv0a zos7)X&ehu(>(FM4TYS6e^VQw`t8{&1)}SM{;dZFczP&;$e{kw>!eYEV+5olsej+=F zJwFjbzOFwjX7_AgsuzT47#*r;+*qXL$Z*`Xk!pUW=4Ds$>v!7k2Lmmg6U;VN>4L~l zz7y@;B20y0d%sMikM9j&%8ACKDIv3Og}4(IS6w%9#*WI^}dbJ zhLxa4JIGa+O~(8zW%pZt=3Ug~V*8eZIJ%&VVqdd)wRqL6BIR#lCAOO*i6pT`Hi znhc^!e`)(Se&5~PV@J8D6CQHP7=KI{YOd@ zZ_RvwIMF8}jIcg@=L1sVr*XL=rMpRF4(Sm4( zcH@TMxhqPmi=`#kjgSM+TxKl!U5da=c67u`;Cl>wt^MaIG(wV}r7ZZ%sjmNF0HUx$av$Ty{gLCls2-o+N%tF?1zj5*i~ePZ!G=84FlV>4LiJDy5UbC|8HM@ z^+ktYAqJq(9LA+8_uU1Y8Yz_1*2WmBgI$-h>0{;BRAlf*r0EzB&AbRdQbjn-JISBQ zaGYbi(tb;n9}(AhN9#CqLr7-b8b2N{3O}Dx&no{cWg2i@l{hZF9Od|#1I~`bdR=u8 z-g5;P%U7-Z;Y3vOZP?g%pYHuDI^j$q!Ium4`-RUZc5@ib6|5WX&tr?eULAw2b`K`g z&6P74zC^B4dUhYe6Iv^@ZVT_yPSopf)OD2}0kpDO-Xi)S6fEFxF8-(B6KGuAsS-e3 zZZb%-kB)I7(8%1z9g(%P=d+CiOk^$=%ILWHW1-ztB>HsA@>yu_0KPdhF+PBwkAUm_ zTYK0ZQ>TFYdPA-|C%}B4E&m@jWT+0bCu3~<7@nYStQc>*bMYakYcA-Q zt)En$1=0RHp8)oFNIl|BV_Tk%AaX;m%&u)3RnM|u7C)Jli$(6q6YY-uyaXl}bSW zz`oD&=8pjV^NEK*8qfQiOsex0o3LWMX0}6fPtq(LWZH>kz~d3Na=nQcsL9&%Po*4D zKy)5)k34XyzANId>rGV@iL7#W%L>T(b}wbfBXDBx?y#yS3DL?89+Rbl*ze>4mc)W` z&xs(OZr;ms*8KI45}EgyuVg7DsJ}9}u=D-Bx<*ei0u*IA2UfS$zAHOO?9uq`-8V0c zJCR6B~h*K+|_#->cOc@v(RFMQ^=vjU8uL2cEmAHx0T$x$)QloM; zH~&D-Ej|7u6|lNWNOjEac{keiaenn-eaP$-myMDAtlgu+*sS4X2y?lHV8KHR*+c(n zyxQ$y|Kv8?_7g7AE;Lk=5Qi6tBc5h&_nptxkgF9^_yA57w5R4+@^|uE_6z1AmBDYe z-km~?JV|11X`Rx{2jtq>UA7z@^D{zpOn462>$wMu57w-eVb6np_h8kHd+?|5m0{1X zuAAG=F`&h)YM7C3wnh}MKARX~1Q@D>!ODGELMio$&Gt7*=)b!}QGDvSb{I6m?~rdF zyVyDm`ivs+Ji{^PPjwBc zn{S`;5O1DSLsWlET3y{3oBne|&9?9++sa~~YnAk=HRkVRAUX!LT`yC)pG`NnB}S9k z+}v3UO|UUyd)WBg?ZqAfk=p@Y{_ni%8Pw4ce63k zEaQ>$S}7C=1|Rq&VsJ$SaJ^nrM73 zk=L8u+)TwCxF^G{YW!{6^^*>PcF6FX^$S%Z;tdkRxy4XQ6EBrENSS5Fpk8di?^Pkj+LZ4lc|<*83AI)QBd5+zEwfJGUR$QGnBoS* z0wxBdPa}RcX4K?NG7ZLYf8${*c2@b4$sp;1#FKffH5+4$PV^0*(8zu8t>XqDNQ$e+!yq^V*rCwBdRO?qWm z8(q|Gg+g(P1}}x;60A71XesV4!QC}9c!NWM;#S;Au;5Us)-KXGC%ec1G=g{t##zz9<@CC~7>C!x$&ks%=x;yJq!-`yD`hj(YKYkp7yw zr4%kVD27&5h~e)D1fBnXB86Yo|GMDQppR6l{LMpn{szAEahGxkjhki@dB+q6@aPS*eIrt}f-hW7=^Ozt) zJ0a2HktRc&c!{FKn=M#p*kG(fO1jAV7xC1o?9j?a@}YjU=6O7}=3Ml=5-tBvMNabh zu(A*KqD7*rdDI|tCsEJ!gS{xp95JBB|8WLd~Yz5i@wZY+FX*>&&S(> z^0x441aSGNgtMVHk(plhMK=hz^F-I){rtG{1Z?}AWB-Th*S4WNJw-lEpP zgC&GUvk|OSw>itR_L<(^UwvYiv1(B)8cB**gmtf0P+AAvERb6HGP`awEkr^AGgb5Z zWjq739kv6zkZ%8U!?Ex7?A<_9IMRC~S%VZ%__jn7I>=-;t2gY9%Wkg!$LAv zD(e591;`$DeczB+JmB@Y9vFq0OhuWBgTIj|=VR@&YEW@D-I!o9!-hYUs6{;Pb*tC? zm5*G!C$zDgLz^$BtL5lTQ2xXd!uC+1#-LZNEUC})&~Wx_(AC>a!#LE8_?sNDC_C*! z6QdIKNuQFVhwX;ZIv+=*ZavlD(OjghoxAYV{AWp}8|muJzABCc9_ebvmt0PoAHn{i zSJmGi`)6Q%e-zUULH&M`PIcG|wn{W!cd0osNHC@nyEb3LlZPa5m7iKo=KJ^Q+=eAf7gfbq6Cyw_v{_XXTKd<8C?ONIjm&f3%zl!+D~N-3CZK zT~K=bQF5QI3&6lMwJPMVm=|Qg2qqe<7P43^Pv4}g`ZcxAbo4;6MA3;js;;GjgT zyqw6#moqUEBO)b@=6MxATi{u0$UpyiuO(dw=Rrb=KADzYY=vu4>=fDbck+hGA|S6v?nrzU-513gRD0D;?%6(+$`h z5KG1IbBLe=nnZl2>@%9MduO*P!@bmQHTEHOESDq8!u~E%xcE7Ah1`fc`We&~{Qd$b z8=goDW3=#T2~2<1ZNU5|qnNt8N+%nbtpxZK{h|u`9&SUc-81ziL;$fmcZX)iR$jIG z)h+yc%(eb3VB;ww)RPuyQewtB)NagLVUfvG!5zul8c`>#GiEV|@{UhFa&2!jlg2g# z>8#>NbS?wyxUYnNTujmX^C3rR=dZ*aVXdUA@n(!j9*3cqbv>N$K@~CQ-ZLa=|NA@k zh@qrykeCMKTtPSf$)WOHVnGtH;G|=+H~A6U)Q86xOd%1|;6j8m`O5nefWwvTl1k=L z2sH!1o=it1jo%pilCI`Xy>A9Ks#ZT_>Wyb?gufO805Z$g1BTV4D3>k~#q)N4$KxWn;Y7Zv_A z;!te+@oN5}v0L6jJ4bY)>Z{&TB|ld}gwX9pneD>dY)874C6^Q5nY_}P;b)4dzqV78 zA`Yedkg&Li%gfWyUIRrJs|Fl}KR73+;wW|++JU1a@_;^tpqoaxHTP3;0}syRd*B!jk}{&vd=>w|Bfri z7=DVYZU|pY;}(+uN`Fe-jvsr#=gV z`!XSiRRpAXaF%`zgM5~;0Gabl_73%Jf7$!Ge_0OqwZ03pUS^njKQ!EG5@}PU@Qb0^ z_q_)v_NPnop)Yz51tcdRzC}=$o%_Ynszkt5@1%mTj)teC1#b;ShPRzn=2wDA#VfN} zO#j&O%#k(M?r%CYV+ViTDCElI>K zie*CmDLy-sSB6$QPNfegb4r|6k>`=Wz@{>}WupkdQQ*UY; z5fS(qoW81(X|w01J7pC`FP0|3Q`fY3(Nn9dT(W1Ivi?rfDW|69r%QJ@n@wU62ZqL> zBWW`6r(@il&%Bc{plXcKQ<<25%x?L7$Ue=-y_M9z>nfY}cU##jg))I(FSihI| z-~4$43jWT&D^V0Js~nRA`iTC;XJL*tZ4^?Npnb;Z4^mW8HWN{ezQG+f=mNinzgbE# zm$6AYxcfwiKqJ;2Qq!|P4jree$%1b1>a(So+1{pO30loQOBB)V=&3-l&;OVzeWX>F+KnxCEs^BogbCoKz-dLEpe^A%&Ug(d2JTLnEU3=~O$sQ*b#PD+gAoW6E zTlc~+E-BDdh%O6|MFN#xCaA%Q8U@tbAIvR#Kie>LOOybxRJj zgo7m*etK73m-vFzD?Dd}uEW)zDXRQtV8Z3EFE`Z^`-Va9+Dnh|c>3hpfkxHg&+Z&2 z?s1gD#h`x`~ZOLI|IBHs87J_5hV+VRKoZE{?{XoP=fdTwpef*en5$ys`@ z`{82@?aE*Cd9!_x&3iec#Xx(XgA*Z#{r>(J?WtnJI9z5zmZ^@WS6>jzX~z(tXb{}0 zsLm?58war(0RUUWCf>{v%U6RI#~m~adAAry(5BJdqH=By4zML|7bOA;2rDwujV9=^ zPiD$e${b}_VqV`-nMmB9#Nq_xehL*ipmzx7?CsR{nI40d_zMtp1+#A@2h2&Z5*xnIOzM7A%eS^Wns-vR- zZi}|%siK@!(<}r_^x6uVgIo!V^VJ+V7+*3TW3PL(82ddgZ`+Rq>_$TDQ$!JMhjTA1 z16xadm$*7am%XPOG(QSHvEPF0cU$hh%Fw+s@P)=H%IJSJ(#5=}iL64*zqq4s4b3?k zfNjA{%}uyp9Wx;_FKInOz<)~pUve5#q*yf8ojjq>h~3`EEg5K5hJBKr{0v(l&S-45 zD!rXCspWHT^_k?qrLhK(9lm4rQi#7ra>Hc#b!@;BFg5M5zxTk4Wd zUq?1_La*Xw_pIN;1-0pCD)oN0-xgY?NJ@5K&nx$2r?qyx zK7mBPBN19cU8;M&92|*Nv&@kFo(9}2tQmv2DHiw}o_N08k3rbYlH7P+yfLCd{;F1V zyD=s0LzmY9wN99~eJv{XF)t6Cml}jv<*|7KFUk-Rl=2JW4R&HuvAdj}bpC2$rso1U zLv!$cYAX6ZRYcUvGH(H45AW!KYE!}G36qm6xbAZ1Pd1&|i{4`>VtxSaP^t9H(OC=~ z3|E7GZ{(4N?s2Tuxbbc6K6vpIeE6NuO7e6etEHrdD+n?H45L*DnOq$tJ8@ z37d=4T)jI==;k=6V7mkKx^K>iL~g$^u~E4}BrtWIqaNtB(VZ&0NH8WwQdtjXo`bF$W^KXR-a+tsS6Suc z*;I7vs1-d(qFKePX*EaJ&^%3<%`X&tjsi1<;(%nI+LL`PR?E_>a^GOLA-Z(&PjIXN zNs66H?_kEua`X&W?l8}{F`~JfgY1EwBcb)|?lx?B<56FtO4wL8-N(`80LeGkbWhFL z&6va2HQ^m~gnRUf)ftM~v0VpeCa_tl!|R!NIPGtZGf?@Q%tn9%pt!yC$mb^w{TQ0M z3#7Npp$m11n^YG{tbcH^Lm^oWcYc~t{4QezY7?}nlG;~e8ACVr*P;>bLaSU=ld9=H zz~|3Y-<0!$2Of#m=ThwdvcDDy5)w?xko2HZ79>kH*1p+=Rc9SfTkoHh1$43eH2aWi z@hoZ}VXc`4R4Djb(k$Z)r&YWnD)p-X-_t32w!`X7vqda8Uxsar>(8m83g&knrnHcN znk>PW;V)@ZQa<#(s3uE}G$=`wFTz5?m8X?SSpW%hQ}~v9?1)ncZsj>0Ix>2*Lax_kfcVvgn#HIxid#sl58M5K$Fkd%1v9v|i+9hoNWBu3M^mPuC zmi=pABG-x#r$N5LSZNvnHXVgVu?MkgvDCc)9BI6KIf)AaV3wmwYa$A~Vml^W!Mrs! zYwRUAQ_ChbcuJ3{7yPpDoMFOEkT+^x#1TgOMH#!6oC;=5uXV7Yc$G8!+{IHZS1nE? z^+qu!^-?MV)nr!`#(wQBgN-Ho8<<-$&Kj2%OX8|IX)kt6)z+N-*3MVYNM{o~n|0b) zZk5kNW7IuKTTR?TqqW@e<34Wo6TOvG%-z|ZUT1rtD*6i*;6*_2>QF)9(G!C|HTuYkHE5Hqf1QHBQBGa30OBT4f00DthnFi4pbg4!-Bj{ek3me2?U(kH5lg>_#(uLY8&z^{xsuglr##!M;OdrOW#&1${-n~%pjizXnP&fbD~C(~FH|RC zBzw2O_Zsuko({d((ICu>}^c^C|+nJE#-aD3L zBH&fl+viYIUAiT?i`K;g>all}h^L>8V5QaBuBIUlZd^z&NJr_fE zoA>Ui(>8Oezdqq!z?D0X+^#UEHLs1ba#GDnaw-ME0eAvLTQ7DX*twx4>_^`Ho;2$V z+B>4SU6M-|>g%l*FbgM;-0Sh5NqzU8)qu0QC?j=ZX_hSxi#aK4py)$qS=#-ND#^uc zpG6c{M3~P-NJBG}G$gBmc!J2YZ98})k!+U6`^sZIV`dBZnRUgqQK3#Bk}lkrEDcNa z2ODtlJG#Y)@H^gV?87KVs`+Vd2^bZ++zZyR3@)4M{7nvCMd)7Dw>?xb85cKX=WB>D zZHK$QB1a*ZXjV zac+qPZ5%DXux70dewrq}%FQw_aD?MxgG;XLEq2Vq4_&&L9ug#ff46BiXybwx<@c@G zS3$lWXYWVM$AOf14$_lG9IlBFs3TE=+I)r+Q;hp_+hNqAm`9%~WRxDgT#ew0qdV79 zFkG7|k8IU2)|6)K&tJW#q9Sc!@CLxBSKB4L5Ffnz1tB&Qey>*;sF7!N*LPNvVds(S z=4K~AG9Tj!PCHP-_0OVb^uDNey(kTWsGU!UNt(4&1iO*4Pd8a2osoX_vo;49l?6L& z(&O&ehN`l1UTDlBc6|O>Uk>i+ty255P~co#eG_*u?h?7uz1=tMe;ioXsx3SZM{M9A z<-J)Ks;6)BTjH{;F`Cn%Jy|yxzF~NHyZoDn5hi`p9NqcC4;bz)f`g39YdZdygm0Ke zOTHLDR~pyKzgMc{{VMykm2Wp=;9MZfIz!inejBAsaYF2Ul1!2DbKv+KwUR=6I$_Jo zgY(nR>wum}J*dyWnGP8Oslc+9{k|_KBT+$F^44T^?gx;RW$KpU9qG4O5INL8gEQpr z&UY|3NVWw9E=ZZ#L#h8UnT?K@3Ey69E$rJ6o0!JL>p+I*hGk=iuM_{~*+cb{wOI{) zeGdMWOF762cm*8^MglLVOYU7YHG1E*XK%_KIc$F(pH<1p(csVeo!rN7DmWl~k|&#Q zC$Smffl%ZqpREX0iwMDycvCg!s}NH(;kvF2us8m$asoB@=195-`BpSOzFHvK`j9=E z#BcAP7S`g~*4|Q?ltMU7)w*bt%HdF1kYz<_wcOzGQChnE8;<>)fe05XL-%9fH{Nub zWKmmz2fbSLLM5PM+1uT1e*$y;N@M90o+@aI(?Y=C%5S>k9Xi7>jGhHhOYhFpKJ2E1 z&7U$(2_RT1zT;H(500tYwLgpKp90)Qj%+LXGpe z;mrF(lHbl(_3}ZCdZyKTayYq)HA9bo-+9lh^1_OCwlJd{E5YK7UYD4fBz($s!s%A!*U&m2f6kI$ z881=KHT40sqfv7+Ouv6xVKk)jzB^V@kKLjVOK%8;d?e4!jl}I|+u^0W<`FU|Ze}Aab z@o=)AZ{^y0bF|8aOw2hztBaa?9Bbg*Q(+-S(ZrsfQ1L67wWV6E;w1O9g7vvQb;7C%*etlb z1zG|Y=qC%F2zFDrtrX3cabg8?ueZn9nNU_S8~4`v(5SC)a3CzI$q|CC_pB(&@=^u4 z3zW3=gq!4UvJR9SiC&2uQ4wwr_^Ef;fWO;vc0I(Ui<4-0P$X-KJ>?U*m33=9G;-Du_m_fuJ8ck2-*BDo~+dO zVbzYb!M?KB&P)c1v^W*d{uP%NzcPM<4nX|wp-+phb-=D4ESQNVi8wi?@_F@y?P&+SLzjx}bk;M^B# zoZCU3-__30Z$YseJ)sEQh1^XTROdPOCdXFi>`8)sSY&0OQ}n6zZ1y|m02)t&hf}YL zEraSp`aSC~y0&;4rW7;HJqy=O9@+X)D39=8uHMLY5(D8L|8v0j{FWci_6Q(p|9Iz_ zrDADu-yiaJ0=DaS4%-Abn1iGlzLbzSI-@|f55FifTxB;S6TQiY!fzEG={u8~k#RE> z+BvtRQs699?^n*Q62S0Z`m}Jh=*7FEquz?nqe9)^0w4vWy?*nYL~3ZAe!J|U*~b)9 zO&YcLvMswk*ln5#<*|>Al5<~VJEp;onZ(Fsju)^%XWIy8n=pFNe9+&+&zr2r{~1^6 z8C-Fvo%mm7rBQc3EbBWxqUhQ_J;IThY8q4DoOQ=}`(~z3_E42dLhls*v*)}IB8|)s zp=*jsxd6zBvNi(#0mxXFY-sQHVg#u>G%z>KwyE1!#>tdp8hi) zZfz)rqn*x!$5ZXo5AZ_wnR(HQ})_ls{sHO$cd(&I|96E#Ul!n7uMOBD<-epEo<5YdK_Vd{NH zC~_74h@AYK*g`-_h>nKMs5iw-hW3R4k7Bq3Y>aX&l^&d{W}fLh79-Z3W5VlY*zyR@ zj8wD!E}mBq8TatK zeYzw)_-L>=9%5}^e(H?sO3zKzAZ)aR0+0JGnU`f3_2?4L|2)^6TUT;i&+!ra?!HGL z!)icUYf-5fx0{0sC4n$Fu(0f%?J1GbPCV*T?<$}e(-|3Wn3AA2m!ZWpc(dHUJ3A#T zluIPGQKwS0T_9@ZTpl3Y7b#ARASMjTWiTuJ`zmX<^F)aYiXrT0emB9becA~xyuW6c zyVZR%-W?1bqTJ1it5EJ`fx0KAajO$2$$n~AzdN2cSrqs$%=4Hk6V-1fSruj+ z=H#~p5p>uNxPM{NaTnLo2wS@UOB-;*_TYu9ATl#glhlZ>5ifii52XA5Kp$@VA1>#Y z?ymz*R3LX}um=rd0sa#AHYlr$vU)m+OqemZZUTCdPqUrh`>O==SLY0OaAnCu>BNZLC5X7 z39-;))K@c^nh2FG)t`I0-e9pwq};1q#?vQHp40z33(%c>4P+RR7cMg}<9N5wx!0Io z8d|4@-$pO|pDm^MQf}@E!k!8gTinP{+iLk$yey>zp|{3jr@|idQit6jgoE@IyKr7-HvY=qy2xA>oU zbz11!27~8LGQv)@;{Hl)GFQ$H_W-;_{cBe0&(kKr(uqb(G3z3mi2{r`|Asmx88a-^xj<`RMXxih)*G~gv_1Mn-NoqX?|#7EHr zOtvNs#JGGC5k_1fb&oBokL|nv8%JW$j7B6}aJZZJKcre5QX?vn4ohozi`n}BI||yl z5FSq%Jw7hYFr6747A1QCkaJh^gd0j1GA`=VKmJ$yVHAf^ASU&1?=$&W6uK~?HT%Ks zBv}}TozFSK_?y5f{uZ&vzd`t@6(Z-b{YG&syuDoInR9`2zysvwhW1iw#`)n=ii0k0 zCt1+h7N|!25I9?tmu%GMH*K{GLtu#^sjkQ^m`@7e|5V4ybFA({!;PsRJISF!77ra)#cS?uwc#kt7r z%}n;nQp0ukh`~;Cj+99Ew>9|`8o1IH<}^uK2o3n*9m0c!(Ia+L^@29C#fVa8`xQhfI+Z(C-&2g7y68>5 Zm-vZmvmSR(s_^9Tl9y4Iu97qj{yzxU?ydj; diff --git a/tiledtmxloader3/test/mini3/tileset/mini3x.tsx b/tiledtmxloader3/test/mini3/tileset/mini3x.tsx deleted file mode 100644 index d53cc19..0000000 --- a/tiledtmxloader3/test/mini3/tileset/mini3x.tsx +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/tiledtmxloader3/test/mini4/mini4.tmx b/tiledtmxloader3/test/mini4/mini4.tmx deleted file mode 100644 index 169ff98..0000000 --- a/tiledtmxloader3/test/mini4/mini4.tmx +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - H4sIAAAAAAAAAO2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/mini4/tileset/graphics/mini4x.png b/tiledtmxloader3/test/mini4/tileset/graphics/mini4x.png deleted file mode 100644 index d45c384a998f3f4282920d166ea0d0d145fafe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 26252 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 Zm-vZmvmSR(s_^9Tl9y4Iu97qj{yzxU?ydj; diff --git a/tiledtmxloader3/test/mini4/tileset/mini4x.tsx b/tiledtmxloader3/test/mini4/tileset/mini4x.tsx deleted file mode 100644 index 107b35d..0000000 --- a/tiledtmxloader3/test/mini4/tileset/mini4x.tsx +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/tiledtmxloader3/test/minix.png b/tiledtmxloader3/test/minix.png deleted file mode 100644 index d45c384a998f3f4282920d166ea0d0d145fafe75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 26252 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 Zm-vZmvmSR(s_^9Tl9y4Iu97qj{yzxU?ydj; diff --git a/tiledtmxloader3/test/minix.tmx b/tiledtmxloader3/test/minix.tmx deleted file mode 100644 index 0f8dd30..0000000 --- a/tiledtmxloader3/test/minix.tmx +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - H4sIAAAAAAAAC+2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/minix.tsx b/tiledtmxloader3/test/minix.tsx deleted file mode 100644 index 53caea3..0000000 --- a/tiledtmxloader3/test/minix.tsx +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/tiledtmxloader3/test/minix_base64_gzip.tmx b/tiledtmxloader3/test/minix_base64_gzip.tmx deleted file mode 100644 index 11f4bcb..0000000 --- a/tiledtmxloader3/test/minix_base64_gzip.tmx +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - H4sIAAAAAAAAC+2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/minix_base64_gzip_dtd.tmx b/tiledtmxloader3/test/minix_base64_gzip_dtd.tmx deleted file mode 100644 index 7f95a4b..0000000 --- a/tiledtmxloader3/test/minix_base64_gzip_dtd.tmx +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - H4sIAAAAAAAAC+2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/minix_base64_uncompressed.tmx b/tiledtmxloader3/test/minix_base64_uncompressed.tmx deleted file mode 100644 index c37832b..0000000 --- a/tiledtmxloader3/test/minix_base64_uncompressed.tmx +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - FgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVgAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAATgAAAEwAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAuAAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAAtAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAFYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAA4AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAApAAAAKgAAACsAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAFYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAzAAAANAAAADUAAAAtAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAFYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAACEAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAA9AAAAPgAAAD8AAAAVAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAFYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAfAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAE4AAABLAAAATAAAACEAAAAWAAAAFwAAAC4AAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAAJQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAVAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAFQAAABVAAAAVQAAAFUAAABVAAAAVgAAACEAAAAWAAAAFwAAABgAAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAFQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFwAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAfAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAAF4AAABfAAAAXwAAAFcAAABVAAAAVgAAACEAAAAWAAAAFwAAACIAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAHwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAA3AAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAAEcAAABIAAAASQAAACsAAAAqAAAAKwAAACwAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAzAAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAAFEAAABSAAAAUwAAADUAAAA0AAAANQAAADYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAKQAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAA9AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAFsAAABcAAAAXQAAAD8AAAA+AAAAPwAAAEAAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAMwAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAAC0AAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAPQAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAA4AAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAATgAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAFQAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAF4AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABXAAAAVQAAAFgAAABfAAAAXwAAAF8AAABfAAAAVwAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAABAAAAAgAAAAMAAAAEAAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAALAAAADAAAAA0AAAAOAAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAAfAAAAIAAAACEAAAAiAAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAApAAAAKgAAACsAAAAsAAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAAzAAAANAAAADUAAAA2AAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFYAAAA9AAAAPgAAAD8AAABAAAAAVAAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAE4AAABLAAAASwAAAEsAAABLAAAATQAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABUAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABWAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAABeAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABgAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAABAAAAAgAAAAMAAAADAAAAAwAAAAQAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFwAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAALAAAASgAAAEsAAABLAAAATAAAAA4AAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAVAAAAVAAAAFUAAABVAAAAVgAAABgAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAfAAAAVAAAAFgAAABfAAAAYAAAACIAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAApAAAARwAAAEkAAAArAAAAKwAAACwAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAzAAAAUQAAAFMAAAA1AAAANQAAADYAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFwAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAA9AAAAWwAAAF0AAAA/AAAAPwAAAEAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAVAAAAE4AAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABLAAAASwAAAEsAAABMAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAXgAAAF8AAABfAAAAXwAAAFcAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABVAAAAVQAAAFUAAABWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABYAAAAXAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAAF4AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABfAAAAXwAAAF8AAABgAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABYAAAAXAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAiAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABgAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAYAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAACIAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAApAAAAKgAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACoAAAArAAAAKgAAACsAAAAqAAAAKwAAACwAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAzAAAANAAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADQAAAA1AAAANAAAADUAAAA0AAAANQAAADYAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAA9AAAAPgAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAD4AAAA/AAAAPgAAAD8AAAA+AAAAPwAAAEAAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAIAAAACEAAAAWAAAAFwAAACAAAAAhAAAAIAAAACEAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAACAAAAAhAAAAIAAAACEAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAgAAAAIQAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAAFgAAABcAAAAWAAAAFwAAABYAAAAXAAAA - - - diff --git a/tiledtmxloader3/test/minix_base64_zlib.tmx b/tiledtmxloader3/test/minix_base64_zlib.tmx deleted file mode 100644 index ef8e66d..0000000 --- a/tiledtmxloader3/test/minix_base64_zlib.tmx +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - eJztnE1vEzEQhg30BvRGw61LJA5A4AIELkBuUChIfDVIfOX//wrG6g5xV5v4Y8f2a8eH0RslzXrWz7zr3amVE6XUjOKkYP1G8Z3iAiCfjuLeiObOq3Hx41IzNxcuqc6/cWl+QdeSuPhyK1lNLrnP25cLwvw1LunzekjxSFBDuHyiOG9c/usTimcUzwX1cQAX9kzO64Vt3JR5vaR4TfFGUB+orXdK4oKk8wjHfaqueqdx8de7vUr69pXaeueOEBfXtS33fKbgIqGnHlz02v9Bbdd//jufNfA+yLyic/Hxi+kbMx+do+vaZhuvFJ33r3P55Q/F3z7WO7jMBccrRXndj8XlhXJfG95SvKM4G7y/8BivFr/Evo6Z92Y2/UzxheLr4P2lx3jmPXqI5uYx9Eus45v3Zjb9SfGL4vfg/ZXHeD51MKa2+/rUfsmdh1azV5aiDsb0GGAeSuXSqXjXXZT5QMkDhUvs63ppeaBwQalTlDxQuKDUKUoeJhfux8SIUuoUJQ+TS8y4sOSBUqdIXMyeTEis+7n/seczGxeU+UDJw0U7tX9dMdenaxTXKW5QHCn3fTcofkHJQ5rLTYpbFLfV5bOiK5cpdWrLr/nlsq/Mfz/34DKlTiW51OoXs3+58OCC4pcQLjy+ZB4Sas692b9cenBB8UtJ1zEfLmb/cuXBBcUvNXIZey796MgF5bqOkocklynPlSh1ipKHhLo8l24sx0GpU5Q8UBSlTlHyQFGUOm1cMOcDJQ8URfGLVB5mn5DjCOD8ctTpbOL3Jf2i+4Tv1fZ5Qe8xPgaY50P3i97nONybr5kj9WlS1ikKl9OeC/9PatMfuzQutflF92/1/mLeW8x93NK4oPhFKg/dv9X7i3lvMfdxS+MiUaezid+X9Ivu3+r9xby3mPu4Obl0AePX5heten0J2WN0DsSttvVF67BvuFbue4dy+GXs89h+4dc5feu672iTiUvsOkXxi+s8DTXX+Y+NX+P6UgOX2HXKrxG47OKRi8u+8Wvyi22ec81/iB7S+lISl5r8UpOaddqpfPXE+xKlf4OsVF2AcOF9idK/QVaqLke45ODD+xKlf4OsVF0lnn8J7RTGfW7q882dRywupXIsJd9QLofqN3Quu77XuDS/1KzoXKSPh6rD82xcMLRxCdN/rGDVFw== - - - diff --git a/tiledtmxloader3/test/minix_cvs.tmx b/tiledtmxloader3/test/minix_cvs.tmx deleted file mode 100644 index 0a37a98..0000000 --- a/tiledtmxloader3/test/minix_cvs.tmx +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,32,33,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,32,33,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,32,33,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,32,33,32,33,32,33,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,32,33,32,33,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,84,85,86,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,32,33,32,33,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,22,23,22,23,22,23,22,23,22,23,22,84,85,78,76,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,32,33,32,33,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,46,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,45,23,22,23,22,23,22,23,22,23,22,84,85,85,86,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,22,23,22,23,32,33,32,33,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,56,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,41,42,43,23,22,23,22,23,22,23,22,84,85,85,86,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,51,52,53,45,22,23,22,23,22,23,22,84,85,85,86,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,33,22,23,22,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,61,62,63,21,22,23,22,23,22,23,22,84,85,85,86,23,32,33,32,33,22,42,43,42,43,42,43,42,43,42,43,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,31,22,23,22,23,22,23,22,84,85,85,78,75,76,33,22,23,46,52,53,52,53,52,53,52,53,52,53,37,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,21,22,23,22,23,22,23,22,84,85,85,85,85,86,33,22,23,24,62,63,62,63,62,63,62,63,62,63,21,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,23,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,31,22,23,22,23,22,23,22,94,95,95,87,85,86,33,22,23,34,23,22,23,22,23,22,23,22,23,22,31,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,55,42,43,42,43,42,43,42,43,42,43,71,72,73,43,42,43,44,23,22,23,22,23,22,23,22,23,22,21,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,51,52,53,52,53,52,53,52,53,52,53,81,82,83,53,52,53,54,23,22,23,22,23,22,23,22,23,22,41,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,61,62,63,62,63,62,63,62,63,62,63,91,92,93,63,62,63,64,23,22,23,22,23,22,23,22,23,22,51,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,45,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,23,22,23,22,23,22,23,22,23,22,23,22,23,22,61,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,14,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,78,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,75,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,86,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,94,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,87,85,88,95,95,95,95,87,85,86,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,84,85,86,1,2,3,4,84,85,86,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,84,85,86,11,12,13,14,84,85,86,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,84,85,86,31,32,33,34,84,85,86,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,84,85,86,41,42,43,44,84,85,86,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,51,52,53,54,84,85,86,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,86,61,62,63,64,84,85,86,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,78,75,75,75,75,77,85,86,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,85,85,85,85,85,85,85,85,86,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,94,95,95,95,95,95,95,95,95,96,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,1,2,3,3,3,4,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,11,74,75,75,76,14,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,21,84,85,85,86,24,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,31,84,88,95,96,34,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,41,71,73,43,43,44,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,51,81,83,53,53,54,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -23,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,61,91,93,63,63,64,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,84,78,75,75,75,75,75,75,75,75,75,75,75,75,76,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,94,95,95,95,87,85,85,85,85,85,85,85,85,85,86,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,32,33,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,22,23,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,94,95,95,95,95,95,95,95,95,95,96,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,22,23,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,24,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,34,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,41,42,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,42,43,44,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,51,52,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,52,53,54,22,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,61,62,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,62,63,64,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,32,33,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23, -22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,32,33,32,33,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,32,33,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23,22,23 - - - diff --git a/tiledtmxloader3/test/minix_using_tsx.tmx b/tiledtmxloader3/test/minix_using_tsx.tmx deleted file mode 100644 index cacecdb..0000000 --- a/tiledtmxloader3/test/minix_using_tsx.tmx +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - H4sIAAAAAAAAAO2cTW8TMRCGDfQG9EbDrUskDkDgAgQuQG5QKEh8NUh85f//CsbqDnFXm/hjx/Zrx4fRGyXNetbPvOvdqZUTpdSM4qRg/UbxneICIJ+O4t6I5s6rcfHjUjM3Fy6pzr9xaX5B15K4+HIrWU0uuc/blwvC/DUu6fN6SPFIUEO4fKI4b1z+6xOKZxTPBfVxABf2TM7rhW3clHm9pHhN8UZQH6itd0rigqTzCMd9qq56p3Hx17u9Svr2ldp6544QF9e1Lfd8puAioaceXPTa/0Ft13/+O5818D7IvKJz8fGL6RszH52j69pmG68Unfevc/nlD8XfPtY7uMwFxytFed2PxeWFcl8b3lK8ozgbvL/wGK8Wv8S+jpn3Zjb9TPGF4uvg/aXHeOY9eojm5jH0S6zjm/dmNv1J8Yvi9+D9lcd4PnUwprb7+tR+yZ2HVrNXlqIOxvQYYB5K5dKpeNddlPlAyQOFS+zreml5oHBBqVOUPFC4oNQpSh4mF+7HxIhS6hQlD5NLzLiw5IFSp0hczJ5MSKz7uf+x5zMbF5T5QMnDRTu1f10x16drFNcpblAcKfd9Nyh+QclDmstNilsUt9Xls6Irlyl1asuv+eWyr8x/P/fgMqVOJbnU6hezf7nw4ILilxAuPL5kHhJqzr3Zv1x6cEHxS0nXMR8uZv9y5cEFxS81chl7Lv3oyAXluo6ShySXKc+VKHWKkoeEujyXbizHQalTlDxQFKVOUfJAUZQ6bVww5wMlDxRF8YtUHmafkOMI4Pxy1Ols4vcl/aL7hO/V9nlB7zE+BpjnQ/eL3uc43JuvmSP1aVLWKQqX054L/09q0x+7NC61+UX3b/X+Yt5bzH3c0rig+EUqD92/1fuLeW8x93FL4yJRp7OJ35f0i+7f6v3FvLeY+7g5uXQB49fmF616fQnZY3QOxK229UXrsG+4Vu57h3L4Zezz2H7h1zl967rvaJOJS+w6RfGL6zwNNdf5j41f4/pSA5fYdcqvEbjs4pGLy77xa/KLbZ5zzX+IHtL6UhKXmvxSk5p12ql89cT7EqV/g6xUXYBw4X2J0r9BVqouR7jk4MP7EqV/g6xUXSWefwntFMZ9burzzZ1HLC6lciwl31Auh+o3dC67vte4NL/UrOhcpI+HqsPzbFwwtHEJ038iI+EdMGkAAA== - - - diff --git a/tiledtmxloader3/test/minix_xml.tmx b/tiledtmxloader3/test/minix_xml.tmx deleted file mode 100644 index 3e5a380..0000000 --- a/tiledtmxloader3/test/minix_xml.tmx +++ /dev/null @@ -1,6742 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tiledtmxloader3/test/testtiledtmxloader.py b/tiledtmxloader3/test/testtiledtmxloader.py deleted file mode 100644 index 0c21fd6..0000000 --- a/tiledtmxloader3/test/testtiledtmxloader.py +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -import sys -import os -p = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir)) -print("inserting to sys.path: ", p) -sys.path.insert(0, p) -# print sys.path - -import os -import unittest - -import tiledtmxloader - - -_has_pygame = False -try: - import pygame - _has_pygame = True - import tiledtmxloader.helperspygame -except: - pass - - -class MapLoadTestsPygame(unittest.TestCase): - - def setUp(self): - os.chdir(os.path.abspath(os.path.dirname(__file__))) - if not _has_pygame: - self.fail("needs either module 'pygame' installed for testing") - self.resourceloader = tiledtmxloader.helperspygame.ResourceLoaderPygame() - - - def test_tile_properties(self): - self.fail("implement test!! (load map with tile properties and read a tile proerty from test") - - def test_wrong_sized_tileset(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("map.tmx") - self.resourceloader.load(world_map) - num_images = len(self.resourceloader.indexed_tiles) - self.assertTrue(num_images == 120, "should be 120 tiles, wrong number of tile images loaded: " + str(num_images)) - - def test_load_unkown_version_should_raise_exception(self): - try: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("invalid_version.tmx") - self.fail("should have raised an exception because of wrong version") - except tiledtmxloader.tmxreader.VersionError as e: - pass - except Exception as ex: - self.fail("should be a VersionError exception, not: " + str(ex)) - - - - #--- pygame tests ---# - def test_load_map_from_cur_dir(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix.tmx") - self.resourceloader.load(world_map) - - def test_load_map_from_cur_dir_using_tsx(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_using_tsx.tmx") - self.resourceloader.load(world_map) - - def test_load_map_from_sub_dir_using_tsx(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("mini2/mini2.tmx") - self.resourceloader.load(world_map) - - def test_load_map_from_sub_dir(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("mini2/mini2_alt.tmx") - self.resourceloader.load(world_map) - - def test_load_map_from_sub_dir_using_tsx_from_sub_dir(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("mini3/mini3.tmx") - self.resourceloader.load(world_map) - - def test_load_map_from_sub_dir_using_tsx_from_sub_dir_and_img_from_sub_dir(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("mini4/mini4.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_xml(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_xml.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_cvs(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_cvs.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_base64_zlib(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_base64_zlib.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_base64_uncompressed(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_base64_uncompressed.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_base64_gzip(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_base64_gzip.tmx") - self.resourceloader.load(world_map) - - def test_can_load_compression_base64_gzip_dtd(self): - if _has_pygame: - world_map = tiledtmxloader.tmxreader.TileMapParser().parse_decode("minix_base64_gzip_dtd.tmx") - self.resourceloader.load(world_map) - - def test_get_list_of_quad_coords(self): - if _has_pygame: - layer = tiledtmxloader.helperspygame.SpriteLayer - coords = layer._get_list_of_neighbour_coord(0, 0, 1, 10, 10) - expected = ((0, 0), ) - self.compare(expected, coords) - - coords = layer._get_list_of_neighbour_coord(0, 0, 2, 10, 10) - expected = ((0, 0), (1, 0), (0, 1), (1, 1)) - self.compare(expected, coords) - - coords = layer._get_list_of_neighbour_coord(1, 1, 3, 10, 10) - expected = ((3, 3), (4, 3), (5, 3), (3, 4), (4, 4), (5, 4), (3, 5), (4, 5), (5, 5)) - self.compare(expected, coords) - - def compare(self, expected, captured): - """ - Helper method to compare to lists. - """ - if len(expected) != len(captured): - self.fail(str.format("Not same number of expected and captured actions! \n expected: {0} \n captured: {1}", \ - ", ".join(map(str, expected)), \ - ", ".join(map(str, captured)))) - for idx, expected_action in enumerate(expected): - action = captured[idx] - if action != expected_action: - self.fail(str.format("captured action does not match with expected action! \n expected: {0} \n captured: {1}", \ - ", ".join(map(str, expected)), \ - ", ".join(map(str, captured)))) - - -# ----------------------------------------------------------------------------- - -_has_pyglet = False -try: - import pyglet - _has_pyglet = True - import tiledtmxloader.helperspyglet -except: - pass - - -class MapLoadTestsPyglet(MapLoadTestsPygame): - - def setUp(self): - os.chdir(os.path.abspath(os.path.dirname(__file__))) - if not _has_pyglet: - self.fail("needs either module 'pyglet' installed for testing") - self.resourceloader = tiledtmxloader.helperspyglet.ResourceLoaderPyglet() - - - -if __name__ == '__main__': - unittest.main() - \ No newline at end of file diff --git a/tiledtmxloader3/test/watertileset3qb2tg0.png b/tiledtmxloader3/test/watertileset3qb2tg0.png deleted file mode 100644 index 822258618b6f23c834f4e51482f5d7222fdb7ca0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcwPel00001 literal 95276 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¥il~ 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 ShYsxTAuX;TR`bIs=)VDp8L5u| diff --git a/tiledtmxloader3/todo.txt b/tiledtmxloader3/todo.txt deleted file mode 100644 index cc4eb9c..0000000 --- a/tiledtmxloader3/todo.txt +++ /dev/null @@ -1,114 +0,0 @@ - - ----- TODO ---------------------------------------------------------------------- - -2011-08-03 - Gumm recollects ideas from past conversations. - -- Support tile attributes. -- maybe introduce a global image cache -- Integrate an efficient scrollbuffer of some kind (instead of collapse)? - - - - ----- Done ---------------------------------------------------------------------- - -2011-12-14 -+ Flashy examples. -+ Maybe a tutorial for nubs. "How do I use Tiled to make a level?" -+ Redo layers (I see there are some notes above). Also, when layers are - transformed (merge, scale, etc.) the resulting layer needs to retain its Tiled attributes. - -2011-11-03 -+ class ResourceLoaderPygame: implement new feature to support flipped tiles (newer versions of tiled support that) - -2011-08-04 -+ 1. Convert x,y,w,h arguments to rects. (make the camera values use a rect!) - - - -==== Notes ===================================================================== - - - class Sprite: - will stay the same (more or less) - class Layer: - will be a public class - - Layer.merge([layers]) -> Layer - layers is a list of the layers that should be merged into one layer, not sure yet what this list contains - Layer.scale(Layer, factor) -> Layer - should be pretty straight forward - Layer.collapse(Layer, level) -> Layer - collapses the layer - - class RendererPygame: - will probably be removed and replaces with a camera class since - there isn't more to it than cam set_camera_position() and render_layer() - -On 29.05.2011 01:14, B W wrote: -> Hi, DR0ID. -> -> I was thinking more about the performance of loading maps in the context of a supermap (many maps connected as one) for seamless transitions from one map to the next. I was wondering if you could modify your TMX loader to add a generator-like function that lets you tell it how "nice" to be. -> -> Like the UNIX "nice" command, it would load a map in smaller, nicer pieces. The user would call it with a "nice" value; let's call it N. When called, the loader would load an N-size chunk of the map and return; True is returned of there is more, False if it is finished loading--or some kind of meaningful value as a signal. One would call this repeatedly in a game loop until the map is finished loading. -> -> An example: -> -> 1. If N is the number of columns to load -> 2. A map has 30 column -> 3. My program runs 30 ticks per second -> 4. I call map_loader.load_nice(1) -> -> Then I would have to call map_loader.load_nice(1) 30 times to load the map. The result is that the map would slowly load over the course of one second. -> -> This may not seem worth it for a small map of 30 columns, but The Mana World map is huge and takes a rather long time to load. Having a load_nice() could provide an option that does not require preloading an entire huge world, or freezing the game to load the next map. -> -> Interested in your thoughts. -> -> Gumm -> -> On Fri, May 27, 2011 at 11:58 AM, B W wrote: -> -> Oh yeah... Attached is the demo proggy. It uses your renderer, and is performing well. The renderer was surprisingly easy to incorporate. -> -> Gumm -> -> - -Hello Gumm - -Yes, this would be a very useful feature. I just looked through the code. I think the most time goes into loading the images, but I also think the decoding the map might take some time. I see those steps currently implemented to load a map: - - 1. read and parse xml - 2. convert (converts the strings into integers and other types) - 3. decode and decompress the map data - 4. load resources (load the images) - -There is probably optimization potential on each of those steps. Currently steps 1. and 2. are not separated (see TileMapParser.parse()). - -(Random) Thoughts about each step: - - 1. does probably not take long, has many for loops (but most maps do not have that many nodes), not sure if that could be split into smaller tasks - - 2. does probably not take long, this maybe could be done in step one, not sure why I made this a separate step - - 3. might take some time, probably could be split into (depends a bit on the formats and compressions, see TileLayer.decode()): - - 1. decode - 2. decompress - 3. re-interpret bytes as integers - - - 4. this is what probably takes the longest time. This is actually done int the ResourceLoader. You a free to write your own ResourceLoader at any time that fits you needs best. I think the ResourceLoader could definitively use partial loading methods. Something like load_line(), load_column() or load_region() - Actually I'm not sure. Maybe the entire render engine would need to changed, I have something like this in mind: - When the camera is moved (or at next draw method call) the new visible tiles are determined. Those tiles should be looked up in the ResourceLoader and if there is no image/data cached then load it from harddisk (maybe I'm missing some details). This would have the effect that tiles could be blend in during runtime. There should also be an unload method or an automatic algorithm to unload allocated resources (otherwise it would behave like a memory leak and at the end all data is loaded but we don't want that). An important aspect of this is how to test that it behaves correctly (running it and looking at the taskmanager isn't the best way) and I'm not sure how it could be tested. - -It could be that I'm completely wrong about which method takes how long to complete (I have not profiled it). - -Profiling and breaking the map loading process into small (and fast) task should get the job done for what you want. - -Do you mind stalling this feature to the 3.1 (or 4.0 if api needs to change) version? - - - -- 2.11.4.GIT