From c9d0db23ac79d1806d8d1dd9f5475568e2e3a6db Mon Sep 17 00:00:00 2001 From: Kurt Date: Wed, 25 Nov 2015 22:20:09 -0800 Subject: [PATCH] Refactoring Increase flexibility, use game personal data and structure to clearly define what is going on. Helps for implementing future games. --- Misc/PK6.cs | 9 +- Misc/PKX.cs | 220 +++++++++++++++++++++++++++++----------- Misc/pk2pk.cs | 7 +- PKX/f1-Main.cs | 13 +-- Resources/byte/personal | Bin 11564 -> 66080 bytes SAV/SAV_HallOfFame.cs | 3 +- SAV/SAV_PokedexORAS.cs | 7 +- SAV/SAV_PokedexXY.cs | 6 +- SAV/SAV_SecretBase.cs | 6 +- 9 files changed, 181 insertions(+), 90 deletions(-) diff --git a/Misc/PK6.cs b/Misc/PK6.cs index 790f02575..c2665ece1 100644 --- a/Misc/PK6.cs +++ b/Misc/PK6.cs @@ -407,7 +407,12 @@ namespace PKHeX get { return CurrentHandler == 1 ? OT_Friendship : HT_Friendship; } set { if (CurrentHandler == 1) OT_Friendship = value; else HT_Friendship = value; } } - public int[] IVs { get { return new[] { IV_HP, IV_ATK, IV_DEF, IV_SPE, IV_SPA, IV_SPD }; } } + + public int[] IVs { + get { return new[] {IV_HP, IV_ATK, IV_DEF, IV_SPE, IV_SPA, IV_SPD}; } + set { if (value == null || value.Length != 6) return; + IV_HP = value[0]; IV_ATK = value[1]; IV_DEF = value[2]; + IV_SPE = value[3]; IV_SPA = value[4]; IV_SPD = value[5]; } } public int[] EVs { get { return new[] { EV_HP, EV_ATK, EV_DEF, EV_SPE, EV_SPA, EV_SPD }; } } public int[] Moves { get { return new[] { Move1, Move2, Move3, Move4 }; } } public int PSV { get { return (int)(((PID >> 16) ^ (PID & 0xFFFF)) >> 4); } } @@ -667,7 +672,7 @@ namespace PKHeX Geo1_Country = Country; Geo1_Region = Region; } - private void TradeMemory(bool Bank) + public void TradeMemory(bool Bank) { HT_Memory = 4; // Link trade to [VAR: General Location] HT_TextVar = Bank ? 0 : 9; // Somewhere (Bank) : Pokécenter (Trade) diff --git a/Misc/PKX.cs b/Misc/PKX.cs index e4c4e00d5..4d36a5f6f 100644 --- a/Misc/PKX.cs +++ b/Misc/PKX.cs @@ -1,6 +1,7 @@ using System; using System.Drawing; using System.Drawing.Text; +using System.IO; using System.Linq; namespace PKHeX @@ -136,6 +137,40 @@ namespace PKHeX }; #endregion + internal static string[][] SpeciesLang = + { + Util.getStringList("Species", "ja"), // none + Util.getStringList("Species", "ja"), // 1 + Util.getStringList("Species", "en"), // 2 + Util.getStringList("Species", "fr"), // 3 + Util.getStringList("Species", "it"), // 4 + Util.getStringList("Species", "de"), // 5 + Util.getStringList("Species", "es"), // none + Util.getStringList("Species", "es"), // 7 + Util.getStringList("Species", "ko"), // 8 + }; + + internal static string getSpeciesName(int species, int lang) + { + try { return SpeciesLang[lang][species]; } + catch { return ""; } + } + internal static PersonalInfo[] Personal = getPersonalArray(Properties.Resources.personal); + internal static PersonalInfo[] getPersonalArray(byte[] data) + { + PersonalInfo[] d = new PersonalInfo[data.Length / PersonalInfo.Size]; + int formeIndex = 723; + for (int i = 0; i < d.Length; i++) + { + d[i] = new PersonalInfo(data.Skip(i*PersonalInfo.Size).Take(PersonalInfo.Size).ToArray()); + if (d[i].FormeCount <= 1) continue; + + d[i].FormeOffset = formeIndex; + formeIndex += d[i].FormeCount; + } + return d; + } + // Stat Fetching internal static int getMovePP(int move, int ppup) { @@ -200,14 +235,13 @@ namespace PKHeX } internal static byte getBaseFriendship(int species) { - return PersonalGetter.GetPersonal(species).BaseFriendship; + return Personal[species].BaseFriendship; } internal static int getLevel(int species, uint exp) { if (exp == 0) { return 1; } - PersonalParser.Personal MonData = PersonalGetter.GetPersonal(species); - int growth = MonData.EXPGrowth; + int growth = Personal[species].EXPGrowth; // Iterate upwards to find the level above our current level int tl = 0; // Initial Level, immediately incremented before loop. @@ -231,15 +265,11 @@ namespace PKHeX if ((level == 0) || (level == 1)) return 0; if (level > 100) level = 100; - - PersonalParser.Personal MonData = PersonalGetter.GetPersonal(species); - int growth = MonData.EXPGrowth; - - return ExpTable[level, growth]; + return ExpTable[level, Personal[species].EXPGrowth]; } internal static byte[] getAbilities(int species, int formnum) { - return PersonalGetter.GetPersonal(species, formnum).Abilities; + return Personal[Personal[species].FormeIndex(species, formnum)].Abilities; } internal static int getGender(string s) { @@ -382,13 +412,13 @@ namespace PKHeX int HP_EV, int ATK_EV, int DEF_EV, int SPA_EV, int SPD_EV, int SPE_EV, int HP_IV, int ATK_IV, int DEF_IV, int SPA_IV, int SPD_IV, int SPE_IV) { - PersonalParser.Personal MonData = PersonalGetter.GetPersonal(species, form); - int HP_B = MonData.BaseStats[0]; - int ATK_B = MonData.BaseStats[1]; - int DEF_B = MonData.BaseStats[2]; - int SPE_B = MonData.BaseStats[3]; - int SPA_B = MonData.BaseStats[4]; - int SPD_B = MonData.BaseStats[5]; + PersonalInfo p = Personal[Personal[species].FormeIndex(species, form)]; + int HP_B = p.HP; + int ATK_B = p.ATK; + int DEF_B = p.DEF; + int SPE_B = p.SPE; + int SPA_B = p.SPA; + int SPD_B = p.SPD; // Calculate Stats ushort[] stats = new ushort[6]; // Stats are stored as ushorts in the PKX structure. We'll cap them as such. @@ -529,8 +559,7 @@ namespace PKHeX } internal static uint getRandomPID(int species, int cg) { - PersonalParser.Personal MonData = PersonalGetter.GetPersonal(species); - int gt = MonData.GenderRatio; + int gt = Personal[species].Gender; uint pid = Util.rnd32(); if (gt == 255) //Genderless return pid; @@ -800,48 +829,6 @@ namespace PKHeX } // Personal.dat - internal static PersonalParser PersonalGetter = new PersonalParser(); - internal class PersonalParser - { - internal byte[] file = Properties.Resources.personal; - internal const int EntryLength = 0xE; - internal struct Personal - { - public byte[] BaseStats; - public byte[] Abilities; - public byte BaseFriendship; - public byte GenderRatio; - public byte EXPGrowth; - public byte AltFormCount; - public byte FormPointer; // 721 + FormPointer + (FormID - 1) = SpeciesIndex - } - - internal Personal GetPersonal(int species) - { - Personal data = new Personal(); - byte[] MonData = new byte[EntryLength]; - data.BaseStats = new byte[6]; - data.Abilities = new byte[3]; - Array.Copy(file, species * EntryLength, MonData, 0, EntryLength); - Array.Copy(MonData, data.BaseStats, 6); - Array.Copy(MonData, 6, data.Abilities, 0, 3); - data.BaseFriendship = MonData[0x9]; - data.GenderRatio = MonData[0xA]; - data.EXPGrowth = MonData[0xB]; - data.AltFormCount = MonData[0xC]; - data.FormPointer = MonData[0xD]; - return data; - } - internal Personal GetPersonal(int species, int formID) - { - Personal data = GetPersonal(species); - if (formID <= 0 || formID > data.AltFormCount || data.AltFormCount <= 0 || data.FormPointer <= 0) - return data; - - // Working with an Alt Forme with a base stat change - return GetPersonal(721 + --formID + data.FormPointer); - } - } internal static string[] getFormList(int species, string[] t, string[] f, string[] g) { @@ -1373,5 +1360,118 @@ namespace PKHeX } } } + + public class PersonalInfo + { + internal static int Size = 0x50; + public byte HP, ATK, DEF, SPE, SPA, SPD; + public int BST; + public int EV_HP, EV_ATK, EV_DEF, EV_SPE, EV_SPA, EV_SPD; + public byte[] Types = new byte[2]; + public byte CatchRate, EvoStage; + public ushort[] Items = new ushort[3]; + public byte Gender, HatchCycles, BaseFriendship, EXPGrowth; + public byte[] EggGroups = new byte[2]; + public byte[] Abilities = new byte[3]; + public ushort FormStats, FormeSprite, BaseEXP; + public byte FormeCount, Color; + public float Height, Weight; + public bool[] TMHM; + public bool[] Tutors; + public bool[][] ORASTutors = new bool[4][]; + public byte EscapeRate; + + public PersonalInfo(byte[] data) + { + using (BinaryReader br = new BinaryReader(new MemoryStream(data))) + { + HP = br.ReadByte(); ATK = br.ReadByte(); DEF = br.ReadByte(); + SPE = br.ReadByte(); SPA = br.ReadByte(); SPD = br.ReadByte(); + BST = HP + ATK + DEF + SPE + SPA + SPD; + + Types = new[] { br.ReadByte(), br.ReadByte() }; + CatchRate = br.ReadByte(); + EvoStage = br.ReadByte(); + + ushort EVs = br.ReadUInt16(); + EV_HP = ((EVs >> 0) & 0x3); + EV_ATK = ((EVs >> 2) & 0x3); + EV_DEF = ((EVs >> 4) & 0x3); + EV_SPE = ((EVs >> 6) & 0x3); + EV_SPA = ((EVs >> 8) & 0x3); + EV_SPD = ((EVs >> 10) & 0x3); + + Items = new[] { br.ReadUInt16(), br.ReadUInt16(), br.ReadUInt16() }; + Gender = br.ReadByte(); + HatchCycles = br.ReadByte(); + BaseFriendship = br.ReadByte(); + + EXPGrowth = br.ReadByte(); + EggGroups = new[] { br.ReadByte(), br.ReadByte() }; + Abilities = new[] { br.ReadByte(), br.ReadByte(), br.ReadByte() }; + EscapeRate = br.ReadByte(); + FormStats = br.ReadUInt16(); + + FormeSprite = br.ReadUInt16(); + FormeCount = br.ReadByte(); + Color = br.ReadByte(); + BaseEXP = br.ReadUInt16(); + + Height = br.ReadUInt16(); + Weight = br.ReadUInt16(); + + byte[] TMHMData = br.ReadBytes(0x10); + TMHM = new bool[8 * TMHMData.Length]; + for (int j = 0; j < TMHM.Length; j++) + TMHM[j] = ((TMHMData[j / 8] >> (j % 8)) & 0x1) == 1; //Bitflags for TMHM + + byte[] TutorData = br.ReadBytes(8); + Tutors = new bool[8 * TutorData.Length]; + for (int j = 0; j < Tutors.Length; j++) + Tutors[j] = ((TutorData[j / 8] >> (j % 8)) & 0x1) == 1; //Bitflags for Tutors + + if (br.BaseStream.Length - br.BaseStream.Position == 0x10) // ORAS + { + byte[][] ORASTutorData = + { + br.ReadBytes(2), // 15 + br.ReadBytes(3), // 17 + br.ReadBytes(2), // 16 + br.ReadBytes(2), // 15 + }; + for (int i = 0; i < 4; i++) + { + ORASTutors[i] = new bool[8 * ORASTutorData[i].Length]; + for (int b = 0; b < 8 * ORASTutorData[i].Length; b++) + ORASTutors[i][b] = ((ORASTutorData[i][b / 8] >> (b % 8)) & 0x1) == 1; + } + } + } + } + + // Data Manipulation + public int FormeOffset; + public int FormeIndex(int species, int forme) + { + return forme == 0 ? species : FormeOffset; + } + public int RandomGender + { + get + { + switch (Gender) + { + case 255: // Genderless + return 2; + case 254: // Female + return 1; + case 0: // Male + return 0; + default: + return (int)Util.rnd32()%2; + } + } + } + } } } \ No newline at end of file diff --git a/Misc/pk2pk.cs b/Misc/pk2pk.cs index 226f6fd00..6b25fa081 100644 --- a/Misc/pk2pk.cs +++ b/Misc/pk2pk.cs @@ -52,9 +52,7 @@ namespace PKHeX public int g6trgend; private int getAbilityNumber(int species, int ability, int formnum) { - PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(species, formnum); - int[] spec_abilities = new int[3]; - Array.Copy(MonData.Abilities, spec_abilities, 3); + byte[] spec_abilities = PKX.Personal[PKX.Personal[species].FormeIndex(species, formnum)].Abilities; int abilval = Array.IndexOf(spec_abilities, ability); if (abilval >= 0) return 1 << abilval; @@ -126,8 +124,7 @@ namespace PKHeX } // Gender Form Fateful - PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(species); - int genderratio = MonData.GenderRatio; + int genderratio = PKX.Personal[species].Gender; uint PID = BitConverter.ToUInt32(pk4, 0); int gv = (int)(PID & 0xFF); int gender; diff --git a/PKX/f1-Main.cs b/PKX/f1-Main.cs index b59642fb8..8d6770e37 100644 --- a/PKX/f1-Main.cs +++ b/PKX/f1-Main.cs @@ -594,7 +594,7 @@ namespace PKHeX } #endregion #region Wondercard - else if (input.Length == 0x108 && ext == ".wc6") + else if (input.Length == 0x108 && ext == ".wc6") new SAV_Wondercard(input).Show(); #endregion else @@ -877,7 +877,7 @@ namespace PKHeX int[] ball_nums = { 7, 576, 13, 492, 497, 14, 495, 493, 496, 494, 11, 498, 8, 6, 12, 15, 9, 5, 499, 10, 1, 16 }; int[] ball_vals = { 7, 25, 13, 17, 22, 14, 20, 18, 21, 19, 11, 23, 8, 6, 12, 15, 9, 5, 24, 10, 1, 16 }; BallDataSource = Util.getVariedCBList(Util.getCBList(itemlist, new[] { 4 }, new[] { 3 }, new[] { 2 }, new[] { 1 }), itemlist, ball_nums, ball_vals); - ItemDataSource = Util.getCBList(itemlist, (DEV_Ability.Enabled) ? null : Legal.Items_Held); + ItemDataSource = Util.getCBList(itemlist, DEV_Ability.Enabled ? null : Legal.Items_Held); SpeciesDataSource = Util.getCBList(specieslist, null); NatureDataSource = Util.getCBList(natures, null); AbilityDataSource = Util.getCBList(abilitylist, null); @@ -1094,8 +1094,7 @@ namespace PKHeX // Form Tables cb.DisplayMember = "Text"; cb.ValueMember = "Value"; - PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(species); - bool hasForms = !(MonData.AltFormCount == 0 && species != 664 && species != 665); // If no forms & not Scatterbug / Spewpa... + bool hasForms = !(PKX.Personal[species].FormeCount == 1 && species != 664 && species != 665); // If no forms & not Scatterbug / Spewpa... cb.Enabled = cb.Visible = hasForms; if (l != null) l.Visible = hasForms; @@ -1191,8 +1190,7 @@ namespace PKHeX private void clickGender(object sender, EventArgs e) { // Get Gender Threshold - PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(Util.getIndex(CB_Species)); - int gt = MonData.GenderRatio; + int gt = PKX.Personal[Util.getIndex(CB_Species)].Gender; if (gt == 255 || gt == 0 || gt == 254) // Single gender/genderless return; @@ -1638,8 +1636,7 @@ namespace PKHeX // Check for Gender Changes // Get Gender Threshold - PKX.PersonalParser.Personal MonData = PKX.PersonalGetter.GetPersonal(Species); - int gt = MonData.GenderRatio; + int gt = PKX.Personal[Species].Gender; int genderflag; if (gt == 255) // Genderless diff --git a/Resources/byte/personal b/Resources/byte/personal index 62d10267b7613997797aaf5e84ea72b7f3abac37..c5a8b6c0c6973b4a73c4f7353e5f0149cd7a9d28 100644 GIT binary patch literal 66080 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 RzqW<&z+AS22a>Ym{{i5-v||7O literal 11564 zcmchd+jmsQx!}72nQN>VcLXwG3u%K?NGhpSk|GJ*a0?|&1D$8~;pIHcnl&9g z_?NGCUBCKnMJi=~PvJjsXD8X^x{ajg^TMTBsFrjoWc3hmvy!vqj-h&!;NAx6guv9ze< zc_9)?pKyBJiCUNBs2PFIvol0kLd+5M^<79?mN21? zOdHk3_n$@qi&$&{|9noOmJGL0>scJtImmqAx~?P6*DlmM=#? zG%a`0THnPx#y>XXDpDlE63k2^)N?*L6)sqT^X;2Ny0es%7rxP8zEcacp06w+43bM%RRT*pdpl z2!thsTtR|^!)@XYtU(DLsG=pLf{f#gRqZgnP`}_}Y)KW%m~uzLK!i$J z0zoxGdouTp%$Jc9sD#p9tt+rkTdMv=#MXu|UlfI>oQglpx>`)2LLe$gE1@0@a zykgdl3HA%r65}i?%Y@RexcHH9U|-%#W|qY*t-AVZvmtL%j7}CTIiV)CwcWC0WVBq6 zgjhlj2`FvddD-j)BVt{tXM_}DaDM-6=IQ$$Ex|oXh!EdJWUPK$GP;T|QI<%t=Y$(= zFCG`LxhWFPO}kOosb)i(N{7kJo^P1%5cge%&5EEU*G1+DOUm~)3eR(8$-&eU)OA2ZKtGxE3V~+{VXlK>>#OI@cOp_DRr&ME5GSr*@b_Fj z0i(mr7W+cq+qrW>48`R4tp;9a=O&c`kBaU~KY{h7yJX-;NYpHXjfC+syQr$pG&KA) z+4<7kJPT@SOw0bVref6vG+N4op~dbyK&TD7GmFu%IGy5K3;Gu+AHkMj$g5rkqx5J4oQ z76P>h5kx{Zg4p|91d))9AQB>cxV0@iI$AOIpM`S=y{0bMw+xh$(`aw+E_b)lkWzpD==8Lu460_X`^@*()>UI_eX(|`t5L>!SU1Bnh|@!% zsE_A@JOp~aNr+$}a9#GpMCYXd&ti#!Y3F$7&OT$o1Zaz5mbCO}K_`@MlFBDKXl%Tf zw9F8cAst6PGV2S7B1~BlLBVl&)fnsx=(Uzo=wSB?Tg-PZ*ddoTUI5<@=T5;6VQxuM z5mDa~71TqN^sJZ>9P?{Doi*P{NuAKM#5wjQ-uhy4eqiORYinQFea(#Sd!Ea=CAd{l z*{`en(A*WDM{vvP>YCm7{xPp**=wl|AG-0(e5sruvi^uM=6N32IyXMe>_is+V$1h5 zbs+UcLw`d<|Gs_eW;~&|r+IT0_67PRTvxkpRTcOSAgR|u3oHe2CY&E4$u4mj!bH1w zyp*iZ`pNz(Fajc^$A8oGqRWy>ne&q<2qBaa2z4f&i;$wD z)YpWF>;lo}ks{q&X5o ztvBpGYWn1AT_DjF`%SPfm^oaL?A|-ZqDW2rNF|hRm*Dbz-}(;C7)-pU2cnW#2a83R zSyddP0C`HY(6{z;($9Gwuek{)1|!gnD>FEA9_9&q4S`e~OR0&(H^RMfqZ;rX&`AnA z)!gHIuC5y2frpOxoLb+3<&i}}t?%$v7$DK{+DGCm7~$!zT~w}FZ>T+4C#Au>#kVv@`4Fl!gbMHdH4J7_5QZZzlz7{~jP?!2tak$%wL z{yng?snq4N))CNsLy6sm%Vg{>#Jhr1&W{@#N#GuNV1*MB9xsM~F{S4)Ls&rOw$-#` z9-|(!q>4gCBB68} zxlu zX@WVm8K)yx5<@VT`$a|&vqUl|lR>fXh^?E0*Bq>?T0TzB4`WDXdcXZcBNLp1gR(>< zMCrUMi0yS+5zix(cGrN#+?LJ}5rD<48vCx0E5KAI@659eJOLsVkGDN4Q66?*F zR7@t6#!v;|9PO;{H@hSx3qzJrdI(nFd$O;uJ~>T9zz+BK?=r+Esn;Rh{6mp~UE&?o zo0NN^hvF+(J7E}-C#UH`qD!qksI_O9K?Vl0U~-X8E?UAm!+B=^{;g&WqKJGSC6qp1 z7A_O+(LL?vyT=+cjV*z4f=A!81bQ9csz9Jnq8p1q>GQ%{&v;^TQYN#mgIewi8Y9U#L2-i2}ZIP5N*G~94Oh>84xQ~>`|mWYR35AE2o+xQhxU=ZzF z!U%RvIu2wLurCl5C=n)+4M40g!GeILWojivX`gvZ4{vtMbjtH$kCa7 zgD1ZAt=C08%yVh}OzZp=OV}q8k!{-=j7*jSER>~8bw=%?4SQfb_|9i@^Fe9o(_TYh zP~bN(FaY!1`VAJxgT-%t^Ot5n+oX$!8me!WO>{8~HHXEagwojz(zT9$<&~R8hD5oR zmD}4BI+tJUnmEyTI?3@kST{d82iT=JwwJ6ud=TG`0e@e1U;LM7IhZ>5H5U?J47LD% z38ha8L~1GNDC{va(@bC~EJaFlUt4mAy+czFC&2B8)zV90_i5SC0A4$$<6-yfKyWHR zfi6Ry(=b+La*I}nom%yCuVQmx&@T}=5#jO z*q39k$DS*ldUY}1ys}_P1|tPFa=vFJh^?t6je@mZKK@U}E>%>U(#I^(kv6Zbmt5SQ zis!(7UF>GtKexN()rT&CJNkRd?lTdpp>2SW&;gEeP+} zvETUAyygo8>emTfE&CUgmr#0m%|lhl>)EVGATXFNQq2#O^NWNoKnnc;DBY8vm_5|g zf-&qo+`p^W-|WawSVBZ|hi*Fqs|A_Rk>wh8=*o%jn{!{h%)KQJWac>)Otk9> zvuE&KXJ_w7=U~I@iFF$rn_eDUvV=1bITmfc!g2)V*c)%On(_3CWGh}m>0_eEOBgCA zNzNs}IhM7pV@9428*D3Wh4nJ{r}`UkQ(^QVD3OTRikZAU3YpIAY*Lq!{^(-Kx0!}V zd{r#iynktW$-mLNHA?bg4w*0G7cMlKY!?z?UiRnb3x=d$^0DmRq0KFh$_he9o5y)j zpI?*9o7JX#i7Q@E>VXS3a)HqeBr7&r!@(NnYt}nKfi+TMe!gt-BSL1D{h4?_pQfsI zNLlt}Ybm8{wzV^vrvjXvylbGqOL%Gv<}uZ&f|ihQna+JFVB=O@7>!O#Jdzd ziUJi~zkc1ctOP}<`Xw#X+l!*;nel=+14}&K>guYg7ADr)l7QmYn!bJew&~>`v!(P4 zMe}>>t+zn-5}Zo>``OQaW~@HObSSp-ZyWuDIC7CmOH%r;N#7D5!tfgz=`bzzDuqIa zrRX;20lbJ6jSPx0cnFVGADUi@*W&%7^lBYMC14eAQ19Rs-x8su^{}%MLLLX!EjN?nq{Wgd zs8voaVRmSm9IBuF$jn*>LpRirB`Q70|Ej9MGC(gP454ae$y4EmIzzAcmE=+A-yOSb!**R>6CeU@j?$$M@!+l z4+>(55Hw6s!zxt$U}lojF-|RozMS%8!}k+eG4QbC<(e-UKPI7y5e^#@JpCWOGJvSD+Yg3 z;~KxI3;nnNWLi%2t1}nX56?!1njl4|{Kr53v7vsl;rOAYW3v})dhm@Zi0)y8sjKfD zTI81Kbu6avJMX-cX!1Ibu5(L}<#Uuvv&*JWskB1ob*)yVAZD>pFCm6hg&0R`roFi|D zQA8|F|4^S{!V-nDEJO42kb%K|LMfC8H9w!cPYdFN{#rcirywK9t3`ZubLW*n8v$Eo z$IW-wMvfnvKeu!H4ny!v&naoX50OW#OC>0jGD|Z>on?A|DY1hCQ&5^Ar!Jl|Bb@q< zqEuPJo`CY}-RAb>HkJYil`Z*^Pmy2z2qGkynOG$32jfZN< z#{2KNvDc1xsHktrJ2S$=k%hgJrkDO}*RN%>c?#7n=(C%XCir&*l$tDZ!V~>*-6)}z zP@gSn*cT(C9%TgTw4golX+qIqEwr?(-?^$M9z1wp^2X(N^wkOdjP%4+{f?!%f_Sy0 z9zMJq=Z*WGqy0fK(3RrPfBy3%o~RTdg!#oUeqrcTNuMvMk3TNO-_@4N+AqWVSe!R* z$t+LktM6=%m#ztBX7t^=NrstzdA#VKEBYr-o`ja$QoVz`DGM(N|6%OQ;H=-*+i&UQ zm0QD85Qii(sAoaFaAf4MX*n>^KdGT=n~)rvxb%8p>1Zz+&$W$?{?fEOHq?D)5%SH1 zCj8M`7so9%9d7D7bhzi=kC>hJdS_ou8OEcjTxF5Anl_=pMU;_q1!VP{pVIJK~M}2a=pF3H?r9k`R3Hn_T!0t z8SU>oKR^2KJ@7IKeG(|E5UAT!nV21_!idU`R{w{&#d+Do7GJZZ19*+7Sn5;DQk{7C z@Uih0ts>h*m~-==O`l#g-OCp&b&iOxHrjI&UZGN3N4dUrykBmTpkrR$AvaT~GT-@c z{GqO`-BMiF!06@&No~y&>h>9B>Fs;|xqD~-{O3QzO--i~`qQ8OWN!b};4OdN|I1(g zVu%D4_&azI{83f)pF|C-tQ#naY#QW_<~2v5&NP^o)G{ z#NV_bTT^TRRfK@c}B>c)!cm*iV)!+^D z|Bg(-(^foF|0(@r9VI19966T6k*UxL>3X;s52k{<`tHokrX5U`irRl1B(`-+s`NPU zi#oBbTT;*2&(vI?-iq}7`}bo@o0<#7`3<#e*Dgb+HuQ1`RmK`ajH~ivf8V}+V6)OG zd#68zb5Ez9yZ!&)Dev*%leORf{`YY;G^PCze-d4~1a}4Ise;?;RWuNoTuM9S60hY#T;W?MQH{Gu}M7a_$>T2|I2 z56+)IZ+hWBErwkG;SYZR`vS9G^D4qO^8^wbC$F!I<>h5Fx_&ow-VNV);|{3BTXbjttfwRurC`vQIP3Iw$5!w)}7VCtOU42|wDf%CO9M_lNyK)dc zir)&1zNnxWtyf}#3UaD#MD#whA*o{{qWxmyi&$1*jg{{?;NO76yR|n&rM76D1y=rj2>IQl-j67VFWq>Q5Wb^Me8Sz{`%Ly8oLxc zd88})i!Z(~6g~+GPl7MM{L;{K|7JGz|Ay2frXE`>oD#(#vjLW