From 83a266f54786e9a8b18d8d5a92479607c47ac3eb Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 7 Feb 2023 14:58:53 -0500 Subject: [PATCH 1/3] Move party menu graphics to own folder --- .../{party_menu_hpbar.png => hpbar_unused.png} | Bin .../party_menu_misc.bin => party_menu/bg.bin} | Bin .../party_menu_misc.pal => party_menu/bg.pal} | 0 .../party_menu_misc.png => party_menu/bg.png} | Bin .../cancel_button.bin} | 0 .../confirm_button.bin} | 0 graphics/{interface => party_menu}/hold_icons.png | Bin .../pokeball.png} | Bin .../pokeball_small.png} | Bin graphics_file_rules.mk | 3 ++- src/data/party_menu.h | 8 ++++---- src/graphics.c | 14 +++++++------- 12 files changed, 13 insertions(+), 12 deletions(-) rename graphics/interface/{party_menu_hpbar.png => hpbar_unused.png} (100%) rename graphics/{interface/party_menu_misc.bin => party_menu/bg.bin} (100%) rename graphics/{interface/party_menu_misc.pal => party_menu/bg.pal} (100%) rename graphics/{interface/party_menu_misc.png => party_menu/bg.png} (100%) rename graphics/{interface/party_menu_cancel_button.bin => party_menu/cancel_button.bin} (100%) rename graphics/{interface/party_menu_confirm_button.bin => party_menu/confirm_button.bin} (100%) rename graphics/{interface => party_menu}/hold_icons.png (100%) rename graphics/{interface/party_menu_pokeball.png => party_menu/pokeball.png} (100%) rename graphics/{interface/party_menu_pokeball_small.png => party_menu/pokeball_small.png} (100%) diff --git a/graphics/interface/party_menu_hpbar.png b/graphics/interface/hpbar_unused.png similarity index 100% rename from graphics/interface/party_menu_hpbar.png rename to graphics/interface/hpbar_unused.png diff --git a/graphics/interface/party_menu_misc.bin b/graphics/party_menu/bg.bin similarity index 100% rename from graphics/interface/party_menu_misc.bin rename to graphics/party_menu/bg.bin diff --git a/graphics/interface/party_menu_misc.pal b/graphics/party_menu/bg.pal similarity index 100% rename from graphics/interface/party_menu_misc.pal rename to graphics/party_menu/bg.pal diff --git a/graphics/interface/party_menu_misc.png b/graphics/party_menu/bg.png similarity index 100% rename from graphics/interface/party_menu_misc.png rename to graphics/party_menu/bg.png diff --git a/graphics/interface/party_menu_cancel_button.bin b/graphics/party_menu/cancel_button.bin similarity index 100% rename from graphics/interface/party_menu_cancel_button.bin rename to graphics/party_menu/cancel_button.bin diff --git a/graphics/interface/party_menu_confirm_button.bin b/graphics/party_menu/confirm_button.bin similarity index 100% rename from graphics/interface/party_menu_confirm_button.bin rename to graphics/party_menu/confirm_button.bin diff --git a/graphics/interface/hold_icons.png b/graphics/party_menu/hold_icons.png similarity index 100% rename from graphics/interface/hold_icons.png rename to graphics/party_menu/hold_icons.png diff --git a/graphics/interface/party_menu_pokeball.png b/graphics/party_menu/pokeball.png similarity index 100% rename from graphics/interface/party_menu_pokeball.png rename to graphics/party_menu/pokeball.png diff --git a/graphics/interface/party_menu_pokeball_small.png b/graphics/party_menu/pokeball_small.png similarity index 100% rename from graphics/interface/party_menu_pokeball_small.png rename to graphics/party_menu/pokeball_small.png diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk index 591847f43..7b28965e9 100644 --- a/graphics_file_rules.mk +++ b/graphics_file_rules.mk @@ -2,6 +2,7 @@ TILESETGFXDIR := data/tilesets FONTGFXDIR := graphics/fonts FAMECHECKERGFXDIR := graphics/fame_checker INTERFACEGFXDIR := graphics/interface +PARTYMENUGFXDIR := graphics/party_menu BTLANMSPRGFXDIR := graphics/battle_anims/sprites UNUSEDGFXDIR := graphics/unused UNKNOWNGFXDIR := graphics/unknown @@ -199,7 +200,7 @@ $(MASKSGFXDIR)/unknown_D2EC24.4bpp: %.4bpp: %.png $(BATTRANSGFXDIR)/vs_frame.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 16 -Wnum_tiles -$(INTERFACEGFXDIR)/party_menu_misc.4bpp: %.4bpp: %.png +$(PARTYMENUGFXDIR)/bg.4bpp: %.4bpp: %.png $(GFX) $< $@ -num_tiles 62 -Wnum_tiles $(TYPESGFXDIR)/move_types.4bpp: $(types:%=$(TYPESGFXDIR)/%.4bpp) $(contest_types:%=$(TYPESGFXDIR)/contest_%.4bpp) diff --git a/src/data/party_menu.h b/src/data/party_menu.h index de330200a..7624c6596 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -108,8 +108,8 @@ static const u8 sPartyMenuSpriteCoords[PARTY_LAYOUT_COUNT][PARTY_SIZE][4 * 2] = }, }; -static const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_confirm_button.bin"); -static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_cancel_button.bin"); +static const u32 sConfirmButton_Tilemap[] = INCBIN_U32("graphics/party_menu/confirm_button.bin"); +static const u32 sCancelButton_Tilemap[] = INCBIN_U32("graphics/party_menu/cancel_button.bin"); static const u8 sFontColorTable[][3] = { @@ -695,8 +695,8 @@ static const u8 *const sFieldMoveDescriptionTable[] = [FIELD_MOVE_SWEET_SCENT] = gText_LureWildPokemon, }; -static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/interface/hold_icons.4bpp"); -static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/interface/hold_icons.gbapal"); +static const u32 sHeldItemGfx[] = INCBIN_U32("graphics/party_menu/hold_icons.4bpp"); +static const u16 sHeldItemPalette[] = INCBIN_U16("graphics/party_menu/hold_icons.gbapal"); static const struct OamData sOamData_HeldItem = { diff --git a/src/graphics.c b/src/graphics.c index 8a11d58a5..92f83e1de 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -148,7 +148,7 @@ const u32 gBattleAnimSpriteGfx_ClawSlash[] = INCBIN_U32("graphics/battle_anims/s const u32 gBattleAnimSpriteGfx_Scratch3[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_3.4bpp.lz"); const u32 gBattleAnimSpriteGfx_Scratch2[] = INCBIN_U32("graphics/battle_anims/sprites/scratch_2.4bpp.lz"); -const u32 gPartyMenuHpBar_Gfx[] = INCBIN_U32("graphics/interface/party_menu_hpbar.4bpp.lz"); +const u32 gUnusedHpBar_Gfx[] = INCBIN_U32("graphics/interface/hpbar_unused.4bpp.lz"); const u32 gBattleAnimSpriteGfx_BubbleBurst2[] = INCBIN_U32("graphics/battle_anims/sprites/bubble_burst_2.4bpp.lz"); @@ -1074,13 +1074,13 @@ const u32 gBattleAnimSpritePal_Slash2[] = INCBIN_U32("graphics/battle_anims/spri const u32 gBattleAnimSpriteGfx_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.4bpp.lz"); const u32 gBattleAnimSpritePal_WhiteShadow[] = INCBIN_U32("graphics/battle_anims/sprites/white_shadow.gbapal.lz"); -const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/interface/party_menu_misc.4bpp.lz"); -const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/interface/party_menu_misc.gbapal.lz"); -const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/interface/party_menu_misc.bin.lz"); +const u32 gPartyMenuBg_Gfx[] = INCBIN_U32("graphics/party_menu/bg.4bpp.lz"); +const u32 gPartyMenuBg_Pal[] = INCBIN_U32("graphics/party_menu/bg.gbapal.lz"); +const u32 gPartyMenuBg_Tilemap[] = INCBIN_U32("graphics/party_menu/bg.bin.lz"); -const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball.4bpp.lz"); -const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/interface/party_menu_pokeball_small.4bpp.lz"); //unused -const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/interface/party_menu_pokeball.gbapal.lz"); +const u32 gPartyMenuPokeball_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball.4bpp.lz"); +const u32 gPartyMenuPokeballSmall_Gfx[] = INCBIN_U32("graphics/party_menu/pokeball_small.4bpp.lz"); //unused +const u32 gPartyMenuPokeball_Pal[] = INCBIN_U32("graphics/party_menu/pokeball.gbapal.lz"); const u32 gStatusGfx_Icons[] = INCBIN_U32("graphics/interface/status_icons.4bpp.lz"); const u32 gStatusPal_Icons[] = INCBIN_U32("graphics/interface/status_icons.gbapal.lz"); From 4bc2f8821336657e246df1cb15ac293bad908fdc Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 7 Feb 2023 15:07:50 -0500 Subject: [PATCH 2/3] Clarify party menu slot tilemaps --- graphics/party_menu/slot_main.bin | 1 + graphics/party_menu/slot_main_no_hp.bin | 1 + graphics/party_menu/slot_wide.bin | 1 + graphics/party_menu/slot_wide_empty.bin | Bin 0 -> 54 bytes graphics/party_menu/slot_wide_no_hp.bin | 1 + src/data/party_menu.h | 50 ++++-------------------- src/party_menu.c | 24 ++++++------ 7 files changed, 24 insertions(+), 54 deletions(-) create mode 100755 graphics/party_menu/slot_main.bin create mode 100755 graphics/party_menu/slot_main_no_hp.bin create mode 100755 graphics/party_menu/slot_wide.bin create mode 100755 graphics/party_menu/slot_wide_empty.bin create mode 100755 graphics/party_menu/slot_wide_no_hp.bin diff --git a/graphics/party_menu/slot_main.bin b/graphics/party_menu/slot_main.bin new file mode 100755 index 000000000..2f3e729f6 --- /dev/null +++ b/graphics/party_menu/slot_main.bin @@ -0,0 +1 @@ + !!!!!!!!" !!!!!!!!" !!!!!!!!"(;<::::::=.////////0 \ No newline at end of file diff --git a/graphics/party_menu/slot_main_no_hp.bin b/graphics/party_menu/slot_main_no_hp.bin new file mode 100755 index 000000000..653ad1a64 --- /dev/null +++ b/graphics/party_menu/slot_main_no_hp.bin @@ -0,0 +1 @@ + !!!!!!!!" !!!!!!!!" !!!!!!!!"())))))))*.////////0 \ No newline at end of file diff --git a/graphics/party_menu/slot_wide.bin b/graphics/party_menu/slot_wide.bin new file mode 100755 index 000000000..c88b73bf7 --- /dev/null +++ b/graphics/party_menu/slot_wide.bin @@ -0,0 +1 @@ ++,,,,,,,,,,,,,,,,-1!!!!!!!!453333336788888888888888889 \ No newline at end of file diff --git a/graphics/party_menu/slot_wide_empty.bin b/graphics/party_menu/slot_wide_empty.bin new file mode 100755 index 0000000000000000000000000000000000000000..3592178b3fc0a6256883b968542bb851d2cb2f42 GIT binary patch literal 54 VcmWd?Lj&S+3}`@JRSgZO0{~`S1a<%b literal 0 HcmV?d00001 diff --git a/graphics/party_menu/slot_wide_no_hp.bin b/graphics/party_menu/slot_wide_no_hp.bin new file mode 100755 index 000000000..8f662da0a --- /dev/null +++ b/graphics/party_menu/slot_wide_no_hp.bin @@ -0,0 +1 @@ ++,,,,,,,,,,,,,,,,-1!!!!!!!!!!!!!!!!2788888888888888889 \ No newline at end of file diff --git a/src/data/party_menu.h b/src/data/party_menu.h index 7624c6596..6b4ebc1f7 100644 --- a/src/data/party_menu.h +++ b/src/data/party_menu.h @@ -549,48 +549,14 @@ static const struct WindowTemplate sFieldMoveDescriptionWindowTemplate = .baseBlock = 0x373, }; -static const u8 sMainSlotTileNums[] = -{ - 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 40, 59, 60, 58, 58, 58, 58, 58, 58, 61, - 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, - 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, -}; - -static const u8 sMainSlotTileNums_Egg[] = -{ - 24, 25, 25, 25, 25, 25, 25, 25, 25, 26, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 32, 33, 33, 33, 33, 33, 33, 33, 33, 34, - 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, - 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, - 46, 47, 47, 47, 47, 47, 47, 47, 47, 48, -}; - -static const u8 sOtherSlotsTileNums[] = -{ - 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, - 49, 33, 33, 33, 33, 33, 33, 33, 33, 52, 53, 51, 51, 51, 51, 51, 51, 54, - 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, -}; - -static const u8 sOtherSlotsTileNums_Egg[] = -{ - 43, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, - 49, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 50, - 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, -}; - -static const u8 sEmptySlotTileNums[] = -{ - 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, - 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, - 37, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, -}; +// Plain tilemaps for party menu slots. +// The versions with no HP bar are used by eggs, and in certain displays like registering at a battle facility. +// There is no empty version of the main slot because it shouldn't ever be empty. +static const u8 sSlotTilemap_Main[] = INCBIN_U8("graphics/party_menu/slot_main.bin"); +static const u8 sSlotTilemap_MainNoHP[] = INCBIN_U8("graphics/party_menu/slot_main_no_hp.bin"); +static const u8 sSlotTilemap_Wide[] = INCBIN_U8("graphics/party_menu/slot_wide.bin"); +static const u8 sSlotTilemap_WideNoHP[] = INCBIN_U8("graphics/party_menu/slot_wide_no_hp.bin"); +static const u8 sSlotTilemap_WideEmpty[] = INCBIN_U8("graphics/party_menu/slot_wide_empty.bin"); static const u8 sGenderPalOffsets[] = {11, 12}; diff --git a/src/party_menu.c b/src/party_menu.c index f87119218..f192cd2e5 100644 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -110,7 +110,7 @@ enum struct PartyMenuBoxInfoRects { - void (*blitFunc)(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); + void (*blitFunc)(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 hideHP); u8 dimensions[24]; u8 descTextLeft; u8 descTextTop; @@ -145,8 +145,8 @@ struct PartyMenuBox u8 statusSpriteId; }; -static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); -static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 isEgg); +static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 hideHP); +static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 hideHP); static void CursorCB_Summary(u8 taskId); static void CursorCB_Switch(u8 taskId); static void CursorCB_Cancel1(u8 taskId); @@ -2184,35 +2184,35 @@ static void BlitBitmapToPartyWindow(u8 windowId, const u8 *tileNums, u8 menuBoxW } } -static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +static void BlitBitmapToPartyWindow_LeftColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 hideHP) { if (width == 0 && height == 0) { width = 10; height = 7; } - if (!isEgg) - BlitBitmapToPartyWindow(windowId, sMainSlotTileNums, 10, x, y, width, height); + if (!hideHP) + BlitBitmapToPartyWindow(windowId, sSlotTilemap_Main, 10, x, y, width, height); else - BlitBitmapToPartyWindow(windowId, sMainSlotTileNums_Egg, 10, x, y, width, height); + BlitBitmapToPartyWindow(windowId, sSlotTilemap_MainNoHP, 10, x, y, width, height); } -static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, u8 isEgg) +static void BlitBitmapToPartyWindow_RightColumn(u8 windowId, u8 x, u8 y, u8 width, u8 height, bool8 hideHP) { if (width == 0 && height == 0) { width = 18; height = 3; } - if (!isEgg) - BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums, 18, x, y, width, height); + if (!hideHP) + BlitBitmapToPartyWindow(windowId, sSlotTilemap_Wide, 18, x, y, width, height); else - BlitBitmapToPartyWindow(windowId, sOtherSlotsTileNums_Egg, 18, x, y, width, height); + BlitBitmapToPartyWindow(windowId, sSlotTilemap_WideNoHP, 18, x, y, width, height); } static void DrawEmptySlot(u8 windowId) { - BlitBitmapToPartyWindow(windowId, sEmptySlotTileNums, 18, 0, 0, 18, 3); + BlitBitmapToPartyWindow(windowId, sSlotTilemap_WideEmpty, 18, 0, 0, 18, 3); } #define LOAD_PARTY_BOX_PAL(paletteIds, paletteOffsets) \ From cc776ab95f97e546288bc2e50929cd2bfc1411e6 Mon Sep 17 00:00:00 2001 From: GriffinR Date: Tue, 7 Feb 2023 18:26:29 -0500 Subject: [PATCH 3/3] Colorize party menu bg graphics --- graphics/party_menu/bg.pal | 179 ------------------------------------- graphics/party_menu/bg.png | Bin 613 -> 1112 bytes 2 files changed, 179 deletions(-) delete mode 100644 graphics/party_menu/bg.pal diff --git a/graphics/party_menu/bg.pal b/graphics/party_menu/bg.pal deleted file mode 100644 index d6d7e4185..000000000 --- a/graphics/party_menu/bg.pal +++ /dev/null @@ -1,179 +0,0 @@ -JASC-PAL -0100 -176 -123 156 115 -255 255 255 -106 106 106 -0 0 0 -65 205 255 -0 139 189 -49 189 238 -255 156 148 -189 90 82 -222 123 115 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -0 0 0 -139 148 123 -74 74 98 -65 156 148 -32 106 98 -74 172 164 -57 139 139 -82 65 74 -32 16 24 -255 0 255 -255 0 255 -255 255 255 -123 205 180 -57 148 123 -255 0 255 -255 0 255 -115 90 180 -139 148 123 -255 115 49 -65 156 148 -32 106 98 -74 172 164 -57 139 139 -82 65 74 -82 82 90 -255 0 255 -255 0 255 -255 255 255 -123 205 180 -57 148 123 -255 0 255 -255 0 255 -164 115 246 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -131 197 222 -57 148 222 -41 123 180 -131 197 222 -41 123 180 -115 255 172 -90 213 131 -65 205 255 -0 98 148 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -213 197 90 -197 164 24 -156 156 32 -213 197 90 -156 156 32 -255 230 57 -205 172 8 -255 156 148 -156 65 57 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -74 74 98 -115 115 115 -255 255 255 -213 164 32 -197 106 16 -164 74 0 -213 164 32 -164 74 0 -255 115 49 -197 57 0 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -123 156 115 -255 115 49 -115 115 115 -255 255 255 -180 255 164 -123 222 131 -123 156 98 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -172 238 255 -123 213 238 -74 172 205 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -246 246 148 -246 230 98 -222 197 32 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 115 49 -115 115 115 -255 255 255 -255 213 222 -255 189 148 -238 164 131 -255 115 49 -255 115 49 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 -57 156 255 -255 255 115 -115 115 115 -255 255 255 -180 255 164 -123 222 131 -131 172 106 -255 255 115 -255 255 115 -255 0 255 -255 0 255 -255 0 255 -255 0 255 -82 82 82 -255 213 82 -255 180 65 diff --git a/graphics/party_menu/bg.png b/graphics/party_menu/bg.png index c58f3aae98d8e7eb47f33be3d95b71bd78570b98..ed9f8a599afee7528fe6fbd1a5818a3d3fa70584 100644 GIT binary patch literal 1112 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!7>k44ofy`glX=O&z$6gh6XIGu zr}+Q>|5;gCKv~DL{~5aX8t#4ff6kP>Q9<{ri-Ce@pnFQSmsgVGoGA)fNnUG~Sax>@ zIeIAwNc?B`4?_R{SD)QtIi(uHEsoj(RR6!&5KVnhP!v}6ONze%-2*hgxESQB=A-v4 zr`*%5-U4I*$>RTOqOLZB9GNsFC@ARv)u8`d9Ff&uJsNd%iNu^a3P1*s{Qu1I>>3WB zU* zZ#m~bT>YAN|EsUQ^ICJ3NcG>oP5JgL>E2NVBGv!Ddhh?C@u;4Od zMnfFCuEKNHf(tJhX0gi#vo@?@T**1z`u$<0!#4w&1-YiXYaO^W{me`K(5pv;()eDy zTQ^g$x9Fbg8Y>4eHa>~0i1LI`=9`D4uF2-esW|Yyw^$+9XUQ@9-972c77jBbkBbI6 zJZ4CJ$9Ba0AVailg`-x&il>{s{~xXXFY+X{;V#4Jg{K(a{aea>Y1WsWA!$FWI1)}P zo;q%ISB`lN#}#R72H#sT2NuLOn2B3BtXyvkICETf!kPUq5@vHRmpQ=J5X^VSO#F@|d&9Yf_4{`0vpi6L;#I)ab4_aR z-}i>FTQ$rGkbN=jH^aY!rk>|Y7-}~c{#oA;;=N13)*`+4ap|#L&+h+CKAYxMtMOo( z==J^gUyE)PQv0$;^J}Q=8Bu}v&u-_c@x6)@IAE&HWas(wvx-7|;9rI<>=F&%9&kU% z7F`yq)lkm(vb|_V0sB(Ti~wxRK>#xoahOUV=Fk8bY}PRc z<1T+%76GQ!T%(3`*8HSAZdclA1ZS=B3IR>Y$m<%VHF{;1%{$fdg60Jpc~%nM2;=Km{zcat2|QR6Sl`; zPNPiUSw9>g3;1ydODks~rMFIjLjdrIrGvB{#DMWLs}NQa@VBG?1-4uMpimXa-d2C4 z8+bp)8wggy0N!gJcZcKdc&t7UfU62?mJS;P4!h4gc0e(31={TE8XkSXsotNeI6yf# zz~yiboL6yKmSq6gKm`q~`M)US|3uzdv4Mq0$}8ln-l}E2TN{JH_$Xm q0wt-*ftw@&UQ*1#G*w&+;2Sr2H`x$PHX#Q90000