From fda2e17eaedb40b33e3abd2a2fa05b641e5660a8 Mon Sep 17 00:00:00 2001 From: Bill Niblock Date: Tue, 6 May 2025 12:50:23 -0400 Subject: [PATCH 1/3] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5a7692e..80aa9de 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ *.AppImage +./GameData From cdc2a8163c296bbca7c40ad77509165d7cd3dc1d Mon Sep 17 00:00:00 2001 From: Bill Niblock Date: Thu, 15 May 2025 12:21:46 -0400 Subject: [PATCH 2/3] Reorganize a bit --- .gitignore | 2 +- DESIGN.md | 35 -------- Docs/DESIGN.md | 181 +++++++++++++++++++++++++++++++++++++++ Docs/Dialog/Inventory.md | 48 +++++++++++ Docs/Dialog/Merchant.md | 55 ++++++++++++ 5 files changed, 285 insertions(+), 36 deletions(-) delete mode 100644 DESIGN.md create mode 100644 Docs/DESIGN.md create mode 100644 Docs/Dialog/Inventory.md create mode 100644 Docs/Dialog/Merchant.md diff --git a/.gitignore b/.gitignore index 80aa9de..85065c1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ *.AppImage -./GameData +*GameData* diff --git a/DESIGN.md b/DESIGN.md deleted file mode 100644 index 856415e..0000000 --- a/DESIGN.md +++ /dev/null @@ -1,35 +0,0 @@ -# Morrowind May Mod: Daedric Merchant - -The player finds an item which, when used, summons a unique NPC merchant for -bartering with. As the player interacts more with this merchant, dialog and -quests become available. Completing these quests expands the merchant's -offering, provides dialog options, and more. - -## Plan - -### Part 1: Merchant - -- The item -- The merchant -- The enchantment (i.e., the spell) - -### Part 2: Dialog - -- Include a different greeting based on geography? -- Could be fun to reference Creeper and Mudcrab Merchant - -### Part 3: Evolving Inventory - -- The merchant will make requests of specific items found throughout the - game-world. Some for personal desire (who doesn't want a nice Colovian hat?), - and some for trade to get the player more interesting items. -- Custom items? - -### Part 4: Quests - -- Some kind of quest involving the merchant, former clients, maybe a custom - location or "hijacked" location to add in some mod lore? - -### Part 5: Player House - -- Always fun to have your own plane of Oblivion... diff --git a/Docs/DESIGN.md b/Docs/DESIGN.md new file mode 100644 index 0000000..964b2d0 --- /dev/null +++ b/Docs/DESIGN.md @@ -0,0 +1,181 @@ +# Morrowind May Mod: Daedric Merchant + +The player finds an item which, when used, summons a unique NPC merchant for +bartering with. As the player interacts more with this merchant, dialog and +quests become available. Completing these quests expands the merchant's +offering, provides dialog options, and more. + +## Plan + +### Part 1: Merchant + +- The item +- The merchant +- The enchantment (i.e., the spell) + +### Part 2: Dialog + +- Include a different greeting based on geography? +- Could be fun to reference Creeper and Mudcrab Merchant + +### Part 3: Evolving Inventory + +- The merchant will make requests of specific items found throughout the + game-world. Some for personal desire (who doesn't want a nice Colovian hat?), + and some for trade to get the player more interesting items. +- Custom items? + +### Part 4: Quests + +- Some kind of quest involving the merchant, former clients, maybe a custom + location or "hijacked" location to add in some mod lore? + +### Part 5: Player House + +- Always fun to have your own plane of Oblivion... + +## Development + +Working through the parts 1 and 2. Adding in items and NPCs is easy enough. +Creating a custom spell is more involved, and so I've opted against it. The +current implementation is a book which offers the options to summon a merchant +NPC, or pick up the book. Picking up the book activates it, resulting in the +player reading it and optionally taking it. Summoning the merchant spawns a +custom NPC in front of the player. An initial idea is to immediately start +dialog when the merchant is summoned (using the apt `ForceGreeting`). However, +given how the player summons the merchant (looking at a book in the worldspace), +it results in the player staring at the book, seeing the feet of the merchant. +Further, there is a script attached to the merchant that disables the merchant +when the dialog box is closed. + +I'm very happy with this initial progress. I've more-or-less implemented my +original idea of a summonable merchant, in the style of Neverwinter Nights. +However, this implementation is not what I would like fully, and so the idea +evolves. + +After playing around with the CS enough, I know that there are several things +which can expand my idea. + +I'm going to add a faction, possibly hidden, which the player becomes a part of +when picking up the book. Initially, the player's reputation with this faction +only allows them to interact with an unfair and invisible representative through +the book. This is handled through dialog, likely from an invisible actor. The +inventory is limited, and prices are unfair. The player is told in the book how +to raise their reputation, and after doing so, will be rewarded with the +opportunity to summon a proper merchant. The reputation requirement will not be +too high, maybe 30, with rep increasing every time the player buys something in +addition to some kind of quest. + +The merchant, once available, is then summoned and placed into the world at the +player as a full NPC. When spoken with, they warmly greet the player, and +possibly even comment on the current region. Unlike the default inventory, the +merchant will offer a smaller selection of better items, also improving and +expanding as player rep increases. The merchant also has quests. + +At the higher rep levels, the player can visit a tradehouse of the faction. I'd +like for it to be a zone the player teleports to which exists outside the +Tamriel world space. I'd like for it to be like a small estate. There are +several gathering rooms, places for food a drink, and rooms the player can stay +in. Eventually, the player earns a permanent room at the tradehouse. + +### Book - Inventory + +As the book can be used anywhere, the inventory should be reasonable, and even +helpful, for an adventurer. I'll need to manipulate the mercantilism skills of +the book-merchant in order for prices to be unfair. The convenience of having an +anywhere merchant is not one to be taken lightly, or provided without some +costs. Perhaps there should be a cost for even accessing the inventory. + +Should the inventory restock? If so, perhaps I can restock it at intervals? +Maybe the player can pay to restock it sooner? + +What items should be sold? Adventurer items make the most sense. Things like +potions for health, fatigue, and mana; lockpicks and probes; sensible food and +drink options (whatever the equivalent of cheap wine, hard-tack, and water would +be); repair hammers; and scrolls for water walking, water breathing, and +levitate. The scrolls and potions can maybe be split better. The quality of +these items can be improved by paying for them to improve, and possibly also +requiring completing quests for the higher/highest levels. + +As for improving over time, I think it may be easier to just have multiple NPCs +which can be enabled/disabled as the player's rank increases. The amount of +money the NPC has can also increase as the player's rank increases. At every +rank increase, the NPC gold increases (it's like a credit limit!), and at every +"title change" (Customer -> Partner -> Member) the quality of gear improves. + +### Book - Quests + +### Merchant - Inventory + +### Merchant - Location Dialog + +Based on where the player summons the merchant, their greeting will be +different. I'm thinking the merchant is knowledgable of, but not experienced +with, the locations they speak about. They can share information and rumors, +perhaps even indications of some in-game relevant hints or such, but they've +also never actually explored Morrowind. + +Locations: + +- Balmora + "The few times I've seen Balmora it has always felt like home. Comfortable, + somewhat familiar, despite this unfamiliar realm. Nice little river. Hard to + complain about living in such a place." +- Vivec + "So this is a city of a god? I suppose it's impressive. Does this god + enforce trade as they do worship? Would they threaten annihilation by large + rocks from the sky if deals went ary?" +- Dwemer Ruins + "Our organization has records of trading with those you call the Dwemer. Big + into technology. Very innovative. If you find any, pass along our interest + in speaking with them about some debts." +- Ghostgate +- Tel Mora +- Tel Vos +- Ald'Ruhn +- Saeda Neen +- Ebonhawk + +It would make sense to expand options to include locations from the Tameriel +Rebuilt, Skyrim, and Cyrodiil landspaces as well. This can come later. + +### Merchant - Quests + +- One requiring trading in a full set of Daedric armor, and in exchange being + given a powerful artifact. Are there Daedric artifacts from lore or other + games that aren't in Morrowind, and are they significant enough? + - Certain thresholds of pieces, or specific pieces turned in could give some + more mundane rewards, as a sort of progression. + - Obviously, if pieces are sold to the merchant, they are removed from it's + inventory, but should still count towards this quest. + +### Trade House - General + +The trade house is a hub and home area. Initially, the player gains access and +can make use of the amenities listed below. After continuing to raise their +faction reputation, the trade house expands their inventory, and offers the +player a permanent room. + +**Amenities:** + +- The "book inventory" NPC is actually located at this trade house, and offers + the same inventory, though in person, that they offered through the book. +- A bar area offers food and drink, as well as rooms to rent for the evening. + Could be really cool to integrate some of the various game mods (Nine Holes, + Thirteen Telvani) into this space as well. +- A small interior courtyard, with some nice artificial lighting, and a few + plants which can be harvested. Should be of medium rarity. +- It could be neat to have a rotating collection of NPCs that each offer + different services or unique inventories. For example, could be an alchemist + that offers potions and ingredients some days, an enchanter with scrolls and + souls on another, and a small mercenary company offering a wide array of + trainers. + +### Trade House - Quests + +### Trade House - Player's Room + +Roughly the size of a small apartment, the player's permanent room at the Trade +House offers several convenience factors. Obviously, the room comes with a bed +and bedroom furniture. A small entertaining area offers some respawning food and +drinks. A small garden offers a collection of rarer alchemical ingredients. diff --git a/Docs/Dialog/Inventory.md b/Docs/Dialog/Inventory.md new file mode 100644 index 0000000..a6845e1 --- /dev/null +++ b/Docs/Dialog/Inventory.md @@ -0,0 +1,48 @@ +# Otherworldly Inventory Dialog + +The "Otherworldly Inventory" (`vbnd_OtherworldlyInventory`) is the basic and +unfair summonable store. Initially only a dialog box, when the player gets +access to the Trade House, they can speak with the actual NPC behind the words. + +**Variables:** + +- `^VBND_MerchantNumber` is a randomly-generated Short stored in a global + variable representing the player character's membership number in the + organization. +- `^PCRank` the PC's faction rank in the speaker's faction + +## Greetings + +### Basic + +- "Welcome ^PCRank ^VBND_MerchantNumber, how may we assist you today?" + +### Rank > 3 + +- "A pleasure as always, ^PCRank ^VBND_MerchantNumber! How may we assist you + today?" + +### Rank > 6 + +- "It is truly an honor, ^PCRank ^VBND_MerchantNumber. How may I assist you + today?" + +### In-Person + +**On First Interaction:** + +- "Yes, I am an actual person. This surprises many, and alarms even a few. Our + professionalism is second-to-none, rest assured. How may I assist you, ^PCRank + ^PCName?"o + +**On Following Interactions:** + +- "Welcome back, ^PCRank. How may I assist you today?" + +## About Me + +- "I am clerk 119 of the Otherworldly Trade Caravan." + +## About the Otherworldly Trade Caravan + +- "We are an organization promoting trade and commerce throughout the realms." diff --git a/Docs/Dialog/Merchant.md b/Docs/Dialog/Merchant.md new file mode 100644 index 0000000..09d440c --- /dev/null +++ b/Docs/Dialog/Merchant.md @@ -0,0 +1,55 @@ +# Otherworldly Merchant Dialog + +The "Otherworldly Merchant" (`vbnd_OtherworldlyMerchant`) is the "personalized" +merchant assigned to the player character once they've risen high enough in +rank. The merchant is a permanent NPC in the world, residing at the Trade House, +and called/teleported to the player when summoned by the Otherworldly Ledger. + +Unlike the somewhat bland Inventory, the Otherworldly Merchant responds to the +cell the player is in with some additional commentary and perhaps small lore +dumps. Initially this is a limited list, potentially to be expanded in time. + +**Variables:** + +- `^VBND_MerchantNumber` is a randomly-generated Short stored in a global + variable representing the player character's membership number in the + organization. +- `^PCRank` the PC's faction rank in the speaker's faction + +## Greetings + +## About Me + +## About the Otherworldly Trade Caravan + +## Locations + +### Ald'Ruhn + +### Balmora + +"The few times I've seen Balmora it has always felt like home. Comfortable, +somewhat familiar, despite this unfamiliar realm. Nice little river. Hard to +complain about living in such a place." + +### Dwemer Ruins + +"Our organization has records of trading with those you call the Dwemer. Big +into technology. Very innovative. If you find any, pass along our interest in +speaking with them about some debts." + +### Ebonhawk + +### Ghostgate + +### Saeda Neen + +### Tel Mora + +### Tel Vos + +### Vivec + +"So this is a city of a god? I suppose it's impressive. Does this god enforce +trade as they do worship? Would they threaten annihilation by large rocks from +the sky if deals went ary?" From 3de694f5ad7b20930cbf808499361326d6ef7fc9 Mon Sep 17 00:00:00 2001 From: Bill Niblock Date: Thu, 15 May 2025 12:22:03 -0400 Subject: [PATCH 3/3] Add actual project and addon files --- DaedricMerchant.omwaddon | Bin 0 -> 22654 bytes DaedricMerchant.omwaddon.project | Bin 0 -> 10957 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 DaedricMerchant.omwaddon create mode 100644 DaedricMerchant.omwaddon.project diff --git a/DaedricMerchant.omwaddon b/DaedricMerchant.omwaddon new file mode 100644 index 0000000000000000000000000000000000000000..a1eb55f24ad031e1b37fade04d42ddd7bcd1d8f4 GIT binary patch literal 22654 zcmeI4&2uDae%FNuY`4~c!ONRp#!t&0W;RwW*ZYfirf2llJ=#@EqE*{7yTB?^RasI- zS7mB5v!u~-@sR@u;6MaH5J3dN%Z&?v!5W7R2Ow;RZ}x$`>;VX0iGVPl@9)VhRaKXy z-kAo1h|LalRb@V}zxTH%d%MT=Z~v*4>GkpM&hvGC4~PHq!|BZ*f4LO`AMxbb=5g=O z=`%^w8(}tH+1c!E{xo+d-S7WtK31OYA8u9krMM0@pY48`?=Q9vc21s!Y5zQk z^MlFwG)z~X@K8v}p6vHtSZ{u4fO^qc9~$5<^JxPdBze>ivz>4hU505mm<}PHo`9~edxA>G`I}nmFEoLXmSuk{I^z)AA8nbUELeH_uLY3 z;Xe4lRoqurA87bx&zbE#$5ex4yzZ)%iuTW#P8?LT?&GpWs%w51vj?ZC| zx+u=WH0bA1eCDpA{M;cT+-`!!n$&{Bt9%@rnR_M5F<2PWo{j%K$cHiLnz6ZdA2hYMR z3(mr=KdvCs*FXKoS?gK;#9f>fB)B-wc~$({B!3MOag8*V#^w7F4`14kE}1^moi z9-NNCY{PBF(Kr}oP9pQdx@9@Q-*Cs10c?#F4&0?CcKu17vF3z9ZRv3mW#O;8rv)f8 z>wFcC`p8}_CYhuz3)4$2dfmkc=6)fVH{8)E1aaUkbYq&wxw|@#Mxnc6nj{`ZXOlG4 zZdh->4~X)IYa-5 z!MB2GcK@XoUAo7OH@BkJYp-ZZjq9a~UAne)cmBDc1=vdQy##U}xbEvOG)V?-2Xu*3 zpX$dGMEE2YuXyFUbm5;DsIv<%aSwhbSy=8vD1RR2lQb4dm^7BeD~V%Y1R@$1EGqVizEjZL`Rm7|ZjLV|jRMV*$ zRuZ`(kEHJ4YvXCJ9U?Sj?1khMWE&+m@7|#4=>KCId|jv%w(Z?u$*+_;dx*&poSDP({CVRty z*-_g`GFrzT9!OkhDL`cDp2K($4OjjDve1_~AM$v1V|NW;~wRkxGB$hOi2~FfM`@&%=wtNx5lawz?=*P@ZWhLVs`W20jVI`@pxH8Gwec z_--uAd3B1xnFf!&qu}+;voM}KO9r8PSloTE6J^$QUSCeZI=e#w_2+K`>Xfiw52~|3 z{g3lNof~NhRK0?o*Ddy;d}Xh<`{~c|jM+Xr`R;VC{47}EN$<-n{QaH17jAQZ@9Dt@YumdA zz1`<)kKccCc+hj(hx>=mKUk~SwdRiZzP=$d7gxPH zJM{kUlb&y9ZA(ES4I|TH-DUkWI>i*jrU>lEg=9)#Uc|eXAr2hjJRCYKveOV}B*aC; zb(0Hsj$MLl8`C?J^M^&_{ZyGQIJATk!Yx6B{<%y}p*N0(hF--fz0D^NYG$k%9RJ2+g`GrH z8cmn*sGf}c+5EUAD*y3Y^Qi1IFDBpP)gCaIr9&T(C7ih+EIVjw&Aj+!q!G9zc7(H6v@~r$Gkc!=K33GQP0k4ta9RBF+*QoF( zr{Q&iBD)!=90G+o9EPcUk}=fnvWu`E6&sR|Hi@I}PNY!7F)o?~q5^jwouP?cpAa!B zcodBzA}4n&MUK6(NP)U>VxgFkh-F}|U_ZE!lJNV(OAWeae8di6@Krnn^-TLBeRuRVw95w=tg-7>)O z;j>*d{o%elKK$mv&fdXOCvEo?+Y!{Pd=cD_n(&D6yYSrMr(EPlTY_vhFWw{Epe#3$ zUF^G*c&|uf>p45k8<5NW`By_aWX;)t{fcg^pw7;t<>!L_Mm!-F z{^rwC<^rR`Uu7KGRN-geoycPiPqOnU#W$ko*j3tt<0i@Rg`UI2VRi%VqEN?2!1>{#W5IMbHBXGw%Xeu2nT7@Kj}}R z6wOsOnSL&7OD+l<=k?kWyU$;3iNmtD(^J;*?UlDJ6Z$7@gX76tT9mGWE|o=p#WR}v zQ%0D7ktT&Lc_ZD7C`A`rgnN?MNYaMBmlQ>(BE?hdxIlkm#SkNT*z+Dv@>i8=^_-9-H`j=Y2`S0Ft{3buA zS2>)Pq2cZpFXd?e@SlJ6`+xigfB5~M`N0QsqcK87i_>W3$ndL;EbljpPbhjAoRI3v zLNP`;;L6HxY^|*PEQ9Iu=GxiY+@DRhYl#v;36^E*Zen$q)T2>m!x=#L4xSwT(;3k2 z(NUgst=*~As+D@TUF$ZQ9j^AuQTeP}tJZ3rdb7%ddacuG)>aO9COWIO8{KZT%A;Dh zQtebL%|>^MLM>OkA+Po-SZ@IXOBG;TvPIJuk zvAl3>ZmeP14}}diiOo;8I+hJG+RAdG#=X=j8ewHDLdM}9{JOiCqy!#p;Fkee;$(tJ zJctCmb+XM{WW}+fNFkfee?i-D6uykeAw?L$Bnnxxe3O8z4h@SN7~U%I zkwq}Q_cA2gV(7tD%97MF;@-T#SRXOYhLH6y7Lau-(5Kj1f=OXZSgu#wt!lN^tW>Iv zR;|(Mwp+I%>(A0Y8z(GN&RKr`W2AxE*F@UiUqISzuoup5MW~Qw<46{i^)0jPq+%F( zV(9>$_ps({v1DuaZrUZaGTjVwH{UkC%_v9#E5@;2~L~MdbQSS zR4TPjwcW0^tDTNXO>4Rof10%vhtgsJ@jfPt-C2}UXk$qHUGDF_J8&;!66VPBF$Vp$ zr5{YNU0W~!UkkCLs01;PmkI!;h$&Z?pBOjm6t@t~ibj;NAPy-~P>3b4+7pLqN6JW1 zjdK-3P^Xe4R+(Z|5!ZG%8R%(5#gBDYk;{mv6cMU`q8Z$w3^Q#V#}ONiIrfzHh`BpS z$s8kUS^2d~lT$@F$Ki&I-d2RnXEl~adJ4xl}x$;`I@UWg`i)dVR;EbvXH1< zsyrH`0h=X!M+9|Vt34_G0h&&=TC-DY);g7Lz1FR@Yqf6mMys`|%_jIld3CC-c8!m^ zX*Ka`wbG(rrP`{t^L`Qpa%NMDBGg?CGFDseW4z6KD;E4)Vl z7(aOsLM`L#0zi&%runfsZnqDT^%c@_%8h^TdjQc5RSV^{4j2t6J0hUWaEO$31`f#f zVcT1XZj_LaoJOy9!JFG1U!bKacN$+nq83Dg9+^M6B2wmyD>ja|UpyD7R~ldcw7$1p zZJc-*?H%~?RxwN2rb?T}k~THkh=3wKx6iFMYVA<5L(yT5QpR4;oPx05qG(%j14Ynv z_bh=C$a_Alf!h zhkwtQ-}ez6O14z%&33h0!%C{7e``?Ijd8`3TD9A(iwZ04M!Q;_8dtSOqh3L(v?}#l z8zF;ysohG4f1Y_@#Pph4HOd;;q!HmCaeEIjkewGnJXknYL76ggidCvYjY=`NpX78e zh%rC|_aYo&Nh(rKOml#p0t78UEi%gp9~I?O*hp4YChU(AvNx&^G_gZ(S)z2$&xzd@ zp(1FAfTxdP3oE@)c~S(28EeA;5jdQTrp0PVWaO3#5LqkqF)+`VG`7DRlFxnBh@@$7_pv!iHqmO_!D zS_|6Aqn@S!F2V#TZMdC8c^>3G(n7$U#1#5iL?0#uS4dxP|6c{yNbS^DIw2}9BSn7I z1$H4eFQx(d+gP0hyMi>DkP@&AlVRE;*amhx5uHOmJfi7oQ$Q}qjKHKY*fnUrEK4A- zN;P39g*qbkcM~`yzGcyP)X9~Umj%GoT^@hAuqj#O3QiN{&Njr1zX-a@OUx((sH`w> zl_?wkgi!r!3#c}+UaK|g)o!QT#fhm_+s$TWUR|pZIvr=H)~eU)b*$x1x8c1pSzx7# zk?dE9NTt?KNihyqvk*M4ph>uH>T=u8F5I$ z+6avf+7A_2uQQN>6GSQMl@3H!sZaIbED0&daCe}F2D=-q?(p2KXe=Kqla_~THkm)h zLS-*ulLU1*#=0FnlzHNrsa0>5pw@;L;wj9)ubb?bTVh%ea9bN zxTjba<8iShTF`O}(0Yv>PQi62J(S?WQi9y7b^fsG8wj2z(h1>%Ayr)luD9L@xQ+nV zrmrhdjk$^jMyO$I>$|{pcL}-RrSo{@CDszW?%AT?^%`KE0<2zdv>>Z`o#>qm%?>~D zm#S^puDyiMAR1=)qV%=JM#^ITyFhez-S{kL))qPQe=dXF-McMecMpgKI~%-=&D?O` zn}JS+(M#wQ*4nF_T2{2&O=EHp@#B0-6&CQ`o~g1^)hSHV{me7NvZiK~vt3^NfwLgJ zxU47u{fD@K31pO*ue7_B zmdW6zsWbBzx|JqcO2Gz2hF~Q#gCy*+CJ{jOF3JoMUg@^0jb^n)RGrqJSDVS|RGM;g zGqu;NR5laWIQ}r0`Y4MTs5$6Qq|D z6u_=FN$jX~pghMc<#P-vf35>_9Qr#CM;AuVc6MiKOnxX>{eUUTtCYa^?5_mY-8e6S zRcm#t%|^S`XuzGVMzd9K1EmVOzSeAi5nw5ww|knzB%;&Yz$LX{v;kGfOr1WR9?!F+ z!|#{-<+I%KJ*zAQ=RJ@q_e`*(g(PmGqFXhHrGuts_hK7@Z(o2wwCAVigc;6o4{Xo! z$ESCo2$(`>{kD=C*&wNYubaXA~EcD+$=eG$CM?fl01 zWa1r5xn}n3q1#sq-g1aWx&LX|7VlnExy5@Rp)HyPTkllbtq#oIV56Amt!ft;S8Ecv z>U;q#%JVx8uLl9=`a&<(gxH%~!r(G7UA=Qb)7{+-ged~sHN4qIOM+WH>Xllp-jG?u zz2#AX`#q3SX7|F8lXE+z(ej2T(TCdMe_n>byBDP`-jA6Qe?%SSOTdCHBH@i{las-9 zvb+uABaJVBKZ$AW=SAW};o`yKcd0-jLZ8T2+|W7+fL5i6 z7D6A@>#b$J!0W0Zai9f&4SVKnE2M^0Ed*;{RhWdg0v!CohrG)mjY#cp+&BYA+lp3T zi+SA?OkIZ?d-oO(>c1}#g<<>7eU>zFH?{>c!^f*O?dyPr-n-Jq-e*);15B%U-Sn!R zfnMDGjRrQ*o%8++<@bxKtXX5!AE~|9j`M+~sU7$47a-+*r!Kmd9C?=*6*S+hbh>R6 zuk>#7#*l;YNeba)H<~D61uo2x`-1S1X-2fqW42oH@oe6+vjZ+ z5Fw6e8KV5!jvy1&?5DvnrzSY2^6(eC z9F3~zCpjum%%TQLMg%DqKDlL<6Odfc$qxKb^71%K*7wk%XYzCL>w-3CVU!ZN6=qhle81cAFXj&J*&We3F_)4|c zCBpoCMADeqCbNSC_S-t%N9y9$lO?3Ogyba8Z=vE>g!m#^ich9ht&Fq#`=Uz)2*|A! zl2-&-mN*vyYM)xbr&o6B(HP=T?izygxhZJcgW_}orP>3_UO==y2}S&Uq;xcTE=@S~ zU_}LrlkvAeJf7IV@)!$Vsq&2F$W5CY%g9FW(a?Z{Nnd9WF2gh4)F2&lbC36U5X_%# zMMfre;b(fW%CsG!b)!>HPUH|d=0Wy=n1zqe?|^Q{Wf{?n$+;gejRS z_>`j>EXLQc@}(&LVyxmIi^#8}OEcCXHc_DwE^aFTvDdz^Js&P88+Oe)GhRBTW=xk_{I)5dU;p7g1( zzNAQl%Iwj&R5Ma+0>*l=J$-0W>9pHJZu8*zuQPp1@Zc?AZ*}V3F7bMKf6X?9lUSf# zicaR!j<4ue4JX~ISApFbr2jiK?BU1XzEF$*AcZO3ctqNMG&U}WTlMZ2sv}jnVFw>5 z+JUTns*Lg>vh?VKh>WpRl<~!-N^cvCcNe6*%u<{#a%EkrJSaJ8bXCLIzyNDudDa^X z+@$s$s+#1wQFKdqp^XVkGg8}4%vFleN)x_Z&5vNH{R61+TPh#3IvSXbO$sW|2j@yD z1`YMz0MhupKFAJ^aqz2n$&fT2A{)`^g_pV&q`=wtka{t4s}j%B>w3t0avtT$BR-I9 zymCj?49HkL>KWO6ta@m#u=8^(TVb3r%HMfBAT>F^QmmA+l%gVtHnISMIEk;v458V1 zWMxd~Yk%U6SH zRc;w*n5sOYSAvRBnOCEl+C0@8$FNtF zf3yHlc{GS@)vzlGMkJDuRyxGI-|?mJf5BHn^4U~t!Zkk0QkW^mlFIWZ zHVYBsk?OXFltG+L3Ol2ykN=t@g8I@kC7i)KbF8xrB%Mb!${i)N_?l6*nOi1rhl&Y^ z&^fQ8H{Y?MzFtYDJd&-K!-FwiEN%%0dKgw4#8VmDnP2Y!2@)!33S+8Hu~e`NRT4$+ z=#)ychweb{_9}`RV-?|33*%{|JXbDK5sm0*jTa*GRPk?@P(`~z&0eR{q7aV+2BGV2 zqunLe*};2!V^p!t#67k*r_1;KTZo7%S=NlL;}Oo5O3k%iV4_|jG6gihRXbj3#&pS2 z9$%7y%NPdNsF-<_TtgC8_p9Mb4Uaht8zQ6q$WxM>$=!L2p*(p=jVUE2WulKwc?nwV z6Jx)~{(*gYy8d*&72}9r5TlgX@D{#@Zd0^xC$yJLQ+oSf8zO-Ex8Q+(Y5s{IReYSV{r7yp5 z$A1p?9-M5!|KsuBzV09X|Bs~>czAep_U%C8@%E#=55WJk%KpG)&HejVM$c?n-$B7o z!Hc@7^74FRaAGoBjnvuo%nY^^OKskHuy?xqL6AC~*ej)r!o8^P()hO%p!bJBx|-UG zaXz^ahlCggS$Y^A%qZVUP(B)>WTq%;^RzKlZYv^%uS?q~H?b3Qp4)Ou4F(MJ;Sfd! zE|^ajDK7)04}q$ipvWMHQo=C#;PQMN{_)Eb&1bAH49zJt;Gv_SPA{%urJ8DPcxJeo zWI(}Fq)c7q%|z7~*KEzPK*KkpztllT`6~_cBAJB z5}G17)qvB-p8ZcD3*X516Y%ZV$nh;~c~0Zsn2@C&fy_FDk3e6C?`xox_##>lUA19L zqb7iBMw@Kw=i+|v*16yFwqDJ>xw0|$Kf`q8)A3I6lbO+#<9z_a>)8Ahb*Yx}tDukF zgIbOlBuUVCfu+D1*n?DL?ER+scMH$9!s%e;X-LT!v~ zrGRwp0_pb&)0cagW|ggLG2*)3xa*V&U(7nhS5SJ)`KN^BM|wyOZPAc5AHd6X!es{( z2{|9#sJ-8oLR$>_hlFeI(mypWpROA&+fT#9|5?E1wTH)XTz4|)4SBj8bQ?U|477x2 zC;!|eTMmnP**J@?>z_NQE7(k56`K;sDy#lIS^d6nB1QKm9Q*5Ts7&|XfqIgUjJWOQ zGR{+5H^ntn6nZ=sr%kuhCA2dNvULj=PkXnpwdei%4R~MaY6AJpRKk6jm^|76bk^jT zx{)IN6_D*OwYEi&ODN1R97%8vl*8NtE%7|2d5tBwE{&bnfz*QP8FqsO z1}XCMNeDB8a#{}yvK1aWAfR}S2I3ESW2UugCc06XF4fSeS)N^(k($qV&6c`jX3IwB zB{(ld(PDS>f<5l&-?_8aKY*Kj&`aX8mPfSJxh``K-#0;i$sRfI5V%aRqX9;k_=*!V3W2H(gHPxRi#klJ8qIb*j#&*@K(NR5{GT_8fh2*w_- z;gNh0Alf__z;hyNDUj}m5jn;}D-xDGc7RsU;2Qzo3*UZ5Lo?#w3J>+CS(VQk$bdU$ z^nJ*^ z$|$}16aE2dl8qf_N)}-NXO9jphPFec zGw6_n86uWC!R#7{$(qMfq-)>tTdA!Tbdm6in8Z&}Z4^ikCs-zGyM-QUXD0tmn8X1?>owE!VpK^F^C=8if4z>K&XqQ91ydV) zS_^FaESXtPXw;M36eG$5D^6-F%zR3U#Lhl4Sig&mpC){w<^}1mvw2?Wnp4J2W3}Ir zcUe=1kwf6MzX2mCfApof4MzK{sl&)2Fr)7!Ho|h$XVc7;Yb)}$RCSzEafhKSh0S!) z&_DgiK}2+D+);kTSx)4`3?xi^0^I>+Vt_Un;h}SppC{9gTtpCNShJ7~4ncfLD9V7P zl#WqbhZAA2m423R>a`N2EN&v-1|?W7)1`zE3nHnP65g_qm2P9}m(QQ0A{-K`i3lnEtYo*@Dg z`bA==UI&M)S+SXJ$D2T#Q1VtH47YeUBXx1Bq)=Oz6h3vN{*_p&*Q3r0E6KT8?oqOT zttg}RN#V*(S;X9y?5)atc&V4Ba;{|!Z@pM@geN0kAj=h^@4RCUm!T?bHGDU*R&)b9 zqecU#Oa+3nW5x#_-;e0t!8!#zuk!>d>i@R=0*1rpVge`KjYHpBa2KVR#W;dtmVqLM zog}bP&eH{)2&UJKwFTqiku1UW9h0`JLNoQZ2dpH|bfHKQz97uds)(7;0=*#wg5(9~2%7f!|nicSc|hQR{XRIOnYNGI6B z?ZnJ<4o3*GiZ2@~dKy|JJ;S~aRQg=szzsJqLC;;kAVEHi_Rlv(y*|8$UOeD?NQI|MQlb*}iOm)F^z}KFK)V_h6aQtb);2~)kY&uT9lgyd}LYIl5 zqL#^pxn}QKasFA$oE`FTwiL4;^|9Nrg zew^}^=b}^7z=)0aRDKted6tlgjN>DyF5pB;YqBWyxrK?Nr>!bTf%{jy)t4~z(z(cw z5{ z>?j}SW`wb@jS}gWL&G>2jzl+nce|LnW_x3r?bE&k0#3OPv>`lW-QP@fN3~gHrclB% z`EbV!$v-e~Z1VJdb7jPj8RT0DNYpr(I!lm=!d7gE;{WEbK?BoXD1#a2?F1)kuG0+; zXD_@w5L3l&a71lD+U(F0zT)G-jFMIWQ6R9O+z!#4T*h9IB^a@-xsJOROGL*PTegHd uSpk6k4mzhUBHl@+9~E0H$d`shYX_tkCoiED7AA|R`CpL{HM|h%(EA@O|L#Bl literal 0 HcmV?d00001