From 2bf7ebc2652e5b9187de5a0bbc2e63ddbb7ee4a8 Mon Sep 17 00:00:00 2001 From: kay27 Date: Wed, 16 Feb 2022 03:47:23 +0400 Subject: [PATCH] Preload village schematics and calc proper sizes --- mods/MAPGEN/mcl_villages/init.lua | 38 +++++++++++++++--- .../mcl_villages/schematics/blacksmith.mts | Bin 986 -> 1052 bytes .../mcl_villages/schematics/butcher.mts | Bin 813 -> 919 bytes .../MAPGEN/mcl_villages/schematics/church.mts | Bin 956 -> 1128 bytes mods/MAPGEN/mcl_villages/schematics/farm.mts | Bin 347 -> 324 bytes mods/MAPGEN/mcl_villages/schematics/lamp.mts | Bin 209 -> 170 bytes .../mcl_villages/schematics/large_house.mts | Bin 1137 -> 1271 bytes .../mcl_villages/schematics/library.mts | Bin 816 -> 892 bytes .../mcl_villages/schematics/medium_house.mts | Bin 760 -> 830 bytes .../mcl_villages/schematics/small_house.mts | Bin 593 -> 617 bytes .../MAPGEN/mcl_villages/schematics/tavern.mts | Bin 1005 -> 1138 bytes mods/MAPGEN/mcl_villages/schematics/well.mts | Bin 476 -> 456 bytes 12 files changed, 32 insertions(+), 6 deletions(-) diff --git a/mods/MAPGEN/mcl_villages/init.lua b/mods/MAPGEN/mcl_villages/init.lua index 6009539da..adbb7a0f5 100644 --- a/mods/MAPGEN/mcl_villages/init.lua +++ b/mods/MAPGEN/mcl_villages/init.lua @@ -13,7 +13,7 @@ local modpath = minetest.get_modpath(modname) local S = minetest.get_translator(modname) local basic_pseudobiome_villages = minetest.settings:get_bool("basic_pseudobiome_villages", true) local schem_path = modpath .. "/schematics/" -local schematic_table = { +--[[local schematic_table = { {name = "large_house", mts = schem_path.."large_house.mts", hwidth = 11, hdepth = 12, hheight = 9, hsize = 14, max_num = 0.08 , rplc = basic_pseudobiome_villages }, {name = "blacksmith", mts = schem_path.."blacksmith.mts", hwidth = 7, hdepth = 11, hheight = 7, hsize = 13, max_num = 0.055, rplc = basic_pseudobiome_villages }, {name = "butcher", mts = schem_path.."butcher.mts", hwidth = 11, hdepth = 8, hheight = 10, hsize = 14, max_num = 0.03 , rplc = basic_pseudobiome_villages }, @@ -25,7 +25,37 @@ local schematic_table = { {name = "small_house", mts = schem_path.."small_house.mts", hwidth = 9, hdepth = 7, hheight = 8, hsize = 13, max_num = 0.7 , rplc = basic_pseudobiome_villages }, {name = "tavern", mts = schem_path.."tavern.mts", hwidth = 11, hdepth = 10, hheight = 10, hsize = 13, max_num = 0.050, rplc = basic_pseudobiome_villages }, {name = "well", mts = schem_path.."well.mts", hwidth = 6, hdepth = 8, hheight = 6, hsize = 10, max_num = 0.045, rplc = basic_pseudobiome_villages }, +}]] +local schematic_table = { + {name = "large_house", mts = schem_path.."large_house.mts", max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "blacksmith", mts = schem_path.."blacksmith.mts", max_num = 0.055, rplc = basic_pseudobiome_villages }, + {name = "butcher", mts = schem_path.."butcher.mts", max_num = 0.03 , rplc = basic_pseudobiome_villages }, + {name = "church", mts = schem_path.."church.mts", max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "farm", mts = schem_path.."farm.mts", max_num = 0.1 , rplc = basic_pseudobiome_villages }, + {name = "lamp", mts = schem_path.."lamp.mts", max_num = 0.1 , rplc = false }, + {name = "library", mts = schem_path.."library.mts", max_num = 0.04 , rplc = basic_pseudobiome_villages }, + {name = "medium_house", mts = schem_path.."medium_house.mts", max_num = 0.08 , rplc = basic_pseudobiome_villages }, + {name = "small_house", mts = schem_path.."small_house.mts", max_num = 0.7 , rplc = basic_pseudobiome_villages }, + {name = "tavern", mts = schem_path.."tavern.mts", max_num = 0.050, rplc = basic_pseudobiome_villages }, + {name = "well", mts = schem_path.."well.mts", max_num = 0.045, rplc = basic_pseudobiome_villages }, } +for k, v in pairs(schematic_table) do + local schem_lua = minetest.serialize_schematic( + v.mts, + "lua", + { + lua_use_comments = false, + lua_num_indent_spaces = 0, + } + ):gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") .. " return schematic" + v.preloaded_schematic = schem_lua + local loaded_schematic = loadstring(schem_lua)() + local size = loaded_schematic.size + v.hwidth = size.x + v.hheight = size.y + v.hdepth = size.z + v.hsize = math.ceil(math.sqrt((size.x/2)^2 + (size.y/2)^2) * 2 + 1) +end local surface_mat = { ["mcl_core:dirt_with_dry_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, ["mcl_core:dirt_with_grass"] = { top = "mcl_core:dirt", bottom = "mcl_core:stone" }, @@ -322,12 +352,8 @@ local function place_schematics(plan, pr) local pos = built_house.pos local rotation = built_house.rotation local platform_material = built_house.surface_mat - local building = built_house.building.mts local replace_wall = built_house.building.rplc - local schem_lua = minetest.serialize_schematic(building, - "lua", - {lua_use_comments = false, lua_num_indent_spaces = 0}).." return schematic" - schem_lua = schem_lua:gsub("mcl_core:stonebrickcarved", "mcl_villages:stonebrickcarved") + local schem_lua = built_house.building.preloaded_schematic if replace_wall then --Note, block substitution isn't matching node names exactly; so nodes that are to be substituted that have the same prefixes cause bugs. -- Example: Attempting to swap out 'mcl_core:stonebrick'; which has multiple, additional sub-variants: (carved, cracked, mossy). Will currently cause issues, so leaving disabled. diff --git a/mods/MAPGEN/mcl_villages/schematics/blacksmith.mts b/mods/MAPGEN/mcl_villages/schematics/blacksmith.mts index d7fb66593dba1636ba133681520ae16721d276b8..09665654a91c13f5ea5f484159ad650954885192 100644 GIT binary patch delta 576 zcmcb`K8HigHze4XfrWvcfsKK)9t;>{7?=|?ix~KGlXK#e^NUiglJk?2a#ANpFquvc zVw9dZRi0k}B$t+&mz-K`1*9e~V3MBvmQhYy1geNl|L*&jGXhNnM zGqZS?rh@U(2W16@56aa&rnNSI{b znVDI5(s{`PIUO>>H*7j=ww_I4xz)8n{84n-g7c0G86R>QcNi#qcDeY7U4^|+{mT2V zEsQ1{1sZ?;|F@4}^HmLb_P@SEYSoIC+pRfLE&}_l6DQ8)58-@bbmj2ZMhSs~RT`~I z?z_Ae7=9ISo~W7fTf%@*nA!0_%PO|{d~R%M8wz`PjxePqxTP*oJMhY8LiL0@N6z%5 iC@VKxaPd!Re88lkHPbM}$UsoA&cXEz55xPgm3sjLWZZfH delta 531 zcmbQkaf`j)Hze4XfrWvcfrEj&9ts%b7$kC&bK;Zpi&CvpGK)&$%QH(d;?s)~i;EeU z6Elk#cu}Mo_~G2-{G_CuR3!P5qSRCd5x9I(QD$;>d{Rz+ayElRMM2_ZM<%g}Rq_f5 z1IzRCQy2t58q!kpl2ePVz|`b^MpH)p$q`JtQfX-nVj$^~{G#Lxpgfq4FHg+LnHVQC zS&2z}ax|kFkd~gz%c#L9GciGoH6_0^DQEIWM#IVTndF!l#3wIc5})WSGx4FAIM^tV z=3=YjlKi|>hyyJrA7<3AubA^Te@%Q6*3pO9x zRHVVca`8z@%bWt%jn0dOQr>(Gygy^lmW5x|UhUv1y76F6RPNQQ8Yh)J;%+_je3lh^ zZK_4>MV87ESF80Llhk)QFU$J>&0@MtX@GTEPRNrt@f|jYea@CP8BeJ=f8|FJS7qkZ ze__8qX9?W+W1~>X;ofAHH^7AZ>?e8b|^Z)qs Q>U;CXzI>f~-O^UC0EnC4S^xk5 diff --git a/mods/MAPGEN/mcl_villages/schematics/butcher.mts b/mods/MAPGEN/mcl_villages/schematics/butcher.mts index 251033b1ec0a3e7bf299f833ab1ffd90e35c18b3..03353de105ded131339bf1d97b4c8dafc59d077b 100644 GIT binary patch delta 589 zcmZ3>Hl5wgHze4XfrWvafrEjq9ts%57?=|?ix~KGlXK#e^NUiglJk?2a#9&2-~uU` zMJ4g&nI#$V=|zdf#giv7nof*RocxGUTr4Tx5J_iFVoFMC5rfR+ct%mq_>}xokU63g z?~6{X&;u%$mXQRRnOTyWn^u&Vn_6rIV#b5n40@A=8FeM|7{owIO7e@6Gl247I=(zH zCui~>M#YKy6ehJQ(qC6oN$CmQX=Bvgo%y3Jd%Thi z;pu}7y0!%d6XwYo6yH%em;bfkK*JdpSM?d^8PcyB8!YHDQV=m{xS`?6d~?HphlVBF z#DhVLBZwiji+O6NP^Ml4cZmFoIn5c$H)GOvlyZnM3r%KxBq#HX zsrBP7@fYS|D_9fM?j+362xwpxeaPiS8y7=SWZ1Vw9e|f>EI!VP8&SN=j-`#hkaH z-9k+Y0yZs1@)x;Z7XSV_!Mx+DM%d#D>nd~Ydz%g^I2c{f3Q%Ea5O#3TF?gd=RhD1< zHD_gHv$Mgqg-ub5xNfjTb*jx;np9kAELdfn|2E}r*PHKJ4_C|&>VJDYV6JSIh3A!t z?FRdkCe977&&z+l#Qd|#7q_Lm|9>f)_&xi9@6+fDr#I-FRC=LSy|}wldfn_#M;32Q znAZFKNx_;=$0pzVap?87w#_L=|2G^Li_ZDDRl?G{PW0lWsy8T1b1(5WRs2oCXwYO78Pw{Y+rY8Z)`euXlZn1Ut?i%aAkCnkSCK} z0T`3P0WgubB$FZn7LyW%zLFAuNMo4FmN;lo=Sdvx3pQDl2qP(l=0h6Buj`G*I?al8aW2QzQu4maF?GGaKx zS`4QP7;)->rE5qi!s-kNZ!|=yAEKkV9+DJs*K?%idXRd2Z6xHnezazSgznI2Jqe&B z1;Jt5dcxfb7;WJ*;;GRY=m17iFO<~atgnaZK(J^ZCG~Isw2L@SeLb=|;tgPc*nr<2 zco-1v9ESS;AOLa)NY8&LsK?-cK-B#Qhi*Lz2SpEx3vimoKtqS(_5u|hiW-XysL@Dd zh!W>e2FgN|M28Yi2Smmx$x%OC9SRJHdi*(yRw2s3fTwh!Y8tH{_*_5m#S^ZoU|hnt=h` z=TvhjioxV0YBp4VQW9a0)-C6?HqDs@TDClv?)HSMLlkZ5}B0Q@T-G3 llxbjQDDh<`bY~Bl;)$qu84LwJQ4U3<3?{nOOaRhvcavh^&eZ`!&5uIht z3IZ+}HnYq!XUEmwj$be2yJK4P!Rd1=EfeN#*q!X)#L>aFQ!=}tQE1uMjT^U@QT;w4`^@JRS7WLkyn0gB zI5GX7)w!4{ezPAhsA6uQE1VQrECLz3YJ6x~EO`t`D=5 z+={KYw{lMjzjnOUc=^dz^K*Oj4xHK@d~xQZIk#I=@0RXP_>@r8*t@wl!e(!QoT>Pe z3RiKLxFtUJrhm1w*Csx_z4E}n8J|RB1-{#tB=YM$=n}CyFQqN??%YDJwdXyu?N;{+ycaaNXT z0wLCW&%TW8$x@b5^zc-aEYw_a_0%*cW-}YXxlRfX93*de_?;7Tws_!>ELFH5q*wED q?-ZGgN9QAbbCjpVPt=MG*&Fcv+OyW*wQk>MITf<~VfL&|?*;&du=@`H diff --git a/mods/MAPGEN/mcl_villages/schematics/farm.mts b/mods/MAPGEN/mcl_villages/schematics/farm.mts index 9094c8681fcde6d5c441593224154176330b7372..e47f6e22f4dd4875a5b3abe920b08e9fa23f7bf8 100644 GIT binary patch delta 214 zcmcc3bc9L7Hze4XfrWvcfsKK^9t;>bC)$fntkmTf$W6|PPfN{9PA#?qQWF>3)-wo# z#7gpuk~4sUV7ekMIl-k-hlk_9p@#YFliCycRBB}$gl9_3keDIqprRbmHnox0W0THBITbP3WV&a$E=2ty=HC zG~lU%4Vyvhv(8`t6$1E0*UBqLX}#wBJ-5*yfkm5f;)9UGXU;IVux#NKo!U~v|J9nI INIBRa01d}caR2}S delta 262 zcmX@YbepN(Hze4XfrWvSfrEj)9ts$^86xEmFD7EaFd|O~5e?3FVL`LSWoFla!i+^pB%(XXOVY#|Cv7Vgj+nIcS=mWz)jegJ{NcwRtHdr?)!fd%N~+@9_s>UvhJ4xoY*{?l c_a*;>w04Ur*~_hX`+3@=-%$(;TmDA_07bKG(EtDd diff --git a/mods/MAPGEN/mcl_villages/schematics/lamp.mts b/mods/MAPGEN/mcl_villages/schematics/lamp.mts index c8d907ebad7a6bbd63574e62b695f22ba428e4b6..4d2d1a350553d2c23044298327b0a732395ac20e 100644 GIT binary patch delta 135 zcmcb}xQfx)Hze4XfrWvYft7)|9t1#)#LOZFf!ySr__Wl#R87mA7Gm?fkpCQ4$H|S2hK1|N>5BsSRuY@ft(Msr@^ZA>(f`b cUyAC_>fzuDpW`^CQP9(c=Lj2vl^M%J0Hnt+FaQ7m delta 152 zcmZ3*c#+Y`Hze4XfrWvYfsKKs9t;@R86o=1t~fGM|{mGuePqYH}cx45P?oLm-~VD8i^VF+gf^ z2NUn)O^njqC8ar;1@Yw>nI)+}t28Elu&=L(OFqCKArY}bLm=%zvV_Hf6AgTdd5NhB z&P{80I0Ea~>Q?Y12DV7P$WmOU(4DkuYT5+Hrb`Lx4~q1qBgDk^`hhL70nYDtbA;ghu9J#9O#wW*)8 z^HI@yjb@DtHg6tkJ5H*Wl=!eTUT;C<8=%pgj*M&pIb4ShOGJvObi9dU+tI&M;=|7A z{aNo?r=-2%k>Q!+@=P)2o$5UnrS3(sKM)uHfiI)B@y(rIRTli6Cmq;U zv@G%Kj2J;y+Wbg2PRSf-Um{ESgrhh198+Z$(HixiX< zUwar%7g;WBAl@GMh~s~!adN2hrky=4O$_sy+}12S=U|x7#K5E9)oB>O&cJZOJH`pj&0uP> z1CtiW4Qfd_rK$1xMadbNDGZWuD~n6=^HP(FGLy5D6N}1HQzkPq%1mZr6rcQnQGW7T zCLUQSuqFBVIaWED=@}*QU}J!43sOrM)IeTRDk;s$EC8CEn3tZ)APQHWUX+@e7Y|lB zxsFkqQGfC*MqQ?~w25mBK<=r}uSl&-jZaC;EUv7W^LE-zp(X2c%DcRJQPu3X*lhCRXB;PiQ2w$-vz%Vm=mOKnRj*k&5xD}MBb-x-P9JI&3$ z{+@RCBlq?d(>|SBH&yPE|9&HB)0El0ht$*#wB9*!_k(xC#+mO8cy8C9ZCID~{V{v` z_muxT=Y@fQm!fe(!O@R5WK9IktavYNOg8@eG|&93i1>~N`+Qdgs_?!1o#lIFmDHli h+_K*SdS4ZUa=yKB>y)6;nrSM3%P#Ma%lNWL2mrP94k`cu diff --git a/mods/MAPGEN/mcl_villages/schematics/library.mts b/mods/MAPGEN/mcl_villages/schematics/library.mts index b47e0b4138f53fbb43aa1887249002d9c1082149..2986a71625064e764e7d60cfeef3eacca8dba011 100644 GIT binary patch delta 587 zcmdnM_J>W^Hze4XfrWvGft`V?9s(GI8JH6@ix~KGlXK#e^NUiglJk?2a#9%-C+9Ls zPflf25fO$<6_@1ar6v_+CTCAR#VEta3zsO*&rg}$!DujXq4;DyMsd-kctZvOkZf9N zUUF)&6_}d*lu>=+F9V4Zprjy3vLwGKIRhvQrWy1mp4Mf|n^>h*UlEt=z}~|n(4lwk z&;hm<9iAiI+(sNm3Bmobb9xz>40RF&n4H*j-lZ_kI@h6i?$`m&mYj$qj!rWkH6=`K zl6Y0v>FjgB#Jz*@iN2!HozAYkrmoMd->h))W0TCh4JMq6 zBPA3*f^2HnLPs`<6qeU5JK9?rcUwp^tF=@(bTBe1emr;N08fdi zhObg`hxJW~8L-QnFxanW9QPr_*J1V`goEq;hrf zz8en@EBa-Z8yO{(t8<5a|6sI%r@^|jzuYfDtKn&$+?0yvjmH#p57!Hen7sJeA?R(F z4 zo~zejaC5M2ijD8riRG%YmNwai(SSKA-f-dv3D%N$Lk7i(0n!sa zR3@(07ZL<%D#!BNik zu+8$`?K@Q_{qk}VJ%U>Q?rht!?eE^8+viv(CkRf^-cYZ%_3q5@2dX<*Zakf|hHZE0 z(n8a)RR0avy5FmJt}>tNQ~ZD3YoV&`VaKdi ztdEfpWnX12@jRiP*-FEXPAgG%7{Li(cm9He#mP{5{nQox{#$U}c<+Wh& cY6bUc>r+oG7iG?N-CCZoR`(_A*T@N30RI{7F#rGn diff --git a/mods/MAPGEN/mcl_villages/schematics/medium_house.mts b/mods/MAPGEN/mcl_villages/schematics/medium_house.mts index 43ce2391b9d1952596c3ec5028d0d66dd7105926..85ef0f9031a47eb81c48356da3c63a7ab12e92d1 100644 GIT binary patch delta 543 zcmeytx{s~iHze4XfrWvCft`V?9s(Fd8JH6@ix~KGlXK#e^NUiglJk?2a#9(DKmz57 zIXT5pk$6J}agbPX2~d5p6_^6*04tV+>n<+I&r3}z%1q8qPAn=*O<~}LOO-GerKV0? zVZetFD$mbPnZzhEc^;$P#0DuKCC*$DZ#dbB(OFUg*{+<#q%mB$=?_?CSKR9 zuZT-tAi`m=!0FI4Ln8$R4^wSsrb9n$cx(~^efBXhZ>nQlz!b*Dr;&0r%W_w3PeN!8 z&l`tW1vTXuadu|4c!n2zi5qrsTu7TxE5kD*oYc6{jBReL7m zo1sC0P)ylsNbp6^$-)ul>x-?Aq|8ZSOn7(4mckEdhkgiTf&O}|Nqz5+Fp?1=v~RLa;PDNe^pgm)r@`r1K4J?Wi@23 zX1AJbQ|oK+`Qpo8Rj+OxcPQL(#hHogtjwH`4hj<=_LR3ZGWYcSc$1cra6tXM$A!B# nHXdFQo!`|Wo7`BUd*UoUoq$H z)K0!;1)er;=}pY#`RjLw%U=`9R?X|K$XQsQ^k?Z5e@hmDg=t|~a=Kq^&v&hS6lokP z*{1p9koLRM)%%Z?c^i3Fyn4;HZC}!3?W23XEq-_5ZRhbO=l2@+0>@t3JomkcK_1ttM8&UD*TRI{;>RkCAS=__^CZXt+$uhES;fm z{<&sp#QE}){)yKC$mA(7> Y9+`7p`pC1USv9EcxqQF)F2}8Y03u+yPXGV_ diff --git a/mods/MAPGEN/mcl_villages/schematics/small_house.mts b/mods/MAPGEN/mcl_villages/schematics/small_house.mts index d7b62529cb804c5fa99a9a99a8677c4f5cc46b9f..d09fbfe00ae358153475021d2d828a1689d93dac 100644 GIT binary patch delta 373 zcmcb}@{&c=Hze4XfrWt`1nVJyL13bT_+&Fi1>xe7#LS{%D=-zGoS&4GlR9yZ{NzAJ z{fQsMCtk9gSRgjJfl*S6K`=KtC%z=VC^;jw*a}QDh=PPr3@FdfPnj&sC{bS#mz;~r;o+Gp%r-b3RWwnb!oG0g(;bb^991M2ni(`5W=>?b@8b3O5a6`6 zQM8|zW2(UQrXOo~j{I!wZJgV9tEMiY<#%H%qu@0jo*k7FDjuk4$w{1Gxx-`QFxQ5s zL*nVNtRP#C2OF4I%Y+C>hsO5{uu4brD_sov_y51VMhyS5R|iEpqT}rwq!b((3f0T( zA9S-UxU9Htefk2m1Shkei4#tqabP{OB+7pco15E;muIF_Oz8Y{fsw)gOUhyZ^-Pa! delta 406 zcmaFKa*?IpHze4XfrWt+2-)jlfI)~sA~!iFJ~_WA)hZ>ks3g8Tvm_%vy(qD`n1L5X zhJiUTvxtEoE|#31l$4XoAPy2JE&<9FTY)K{SzrkfWQm+awxsy-{QQ*3_KXq}6XYg7 z5}$a)QbiD?rX;^8IU}{$3QRMIp=wKtpQx%nv01Ag>`a(FIf)R{fO-om=DZDg%h#;H zqf^pzuJ+fF>aVdgEbQ*^FrBQcn67=}$}<&LC5J{kq09*fo4a>)vDxg}vA4Z^g;BeV zA>P0&%b!TlJ(k@RndKY&#^P_iyt(qx9$nbE2@Yt zd{Mq%rp`!h)vMCB@~S^qC7%^*oRnFYdau~RWX55M``M>6GhAeZ*<)a#Pwp61DM1on=(n8^MWLk^NUigN{Uib z8H7RHtkUe%r2GmiC=D?nIU}{Wq}U2fG3ZTBVbo>JoBWDVZgMD-*u*TUiPudhD>4e# z3xNzMPt3^yD$P$y%1MnkgBXe;W@yA94N{2V*!cX?lGGvwKDevWa}tY-E8>zF7~R-P zID}H2gj16a=xd!&;JDrx&>bss)9%kRqXi6VY(b35%)%n|hu*aOn8BMPz|YJ+;Th{L z=_8^oQhF>RqG<`uT}DcsPG6KfO6-)IB|^4xFmIZ}!EDqpvqS2Yf#@TL**6zN%wd#2 z@YK9)h1!JsHy+eIX71){tUc3kG=G5r<4&I$je>ca%9He29xhr@mwe!%dB=anx)#mE zv z_K!Xvnx@TUj9GDrC;iAecCDV+X%ibY7&b9wN&DC?^V`4?$E-N%%!x3eG6p`;Gc2-x xC(Km7E4^8;EZ2u+@m#NMi5oj+HlA4F%Io%K){FxUGaEx3w#qOt*gdNb001J2L|^~_ delta 670 zcmeyw@s{1wHze4XfrWvaftP`+9vLu5Gf3nn=fo%H7o}RIWEPdgmuHq_#HSY}78f%x zCuSBg@S;dhlvSKOi&1LgMDfW2jH0T-aLMA5{JhkpqRixM1_7{OMrv_Mu~jmVn!Jh8 ze6j$OsIwqQq9nfvBxnVu8Kgl%#U((Cimkv@e0hF;N_>84NooBo}EscQ>ZgF}J(5Vw`E%^`*Eh$P(ot(xfCkplz!ez;cMP;ce6VDk>u4k047Xlek zo|uyZbY*^0Qch~TS;d^UVVy-nP3f7?ut+`qj+d5u$2f3@CPcG{HS{9J8 zTxZVPj=uYMjz2s2`Q{=chtvtW-*f-eU*94ZnzH=(+#4_7dc+pKzG>)&} zQvF^>oKNvRIq`MdlQkjfHQWAAXxb+cdHx)CrS2J7uX{D~#3wxLIK}W*pv*1$1fNSG zkeGY2FJkLIgS;7!jv0QI+xYpRdtH;wex>zNwheo%7aLmJp7M*ZZ_7J*?$XZ5*UB7M zPpCIPdd@Wbnt=88O;y60_Y&LYvfr<7O;>-m{rd~^6R%3xcNf`Se4Sh1RKF@@Wzf=7 zyq?d_>=I9W@j9&VYv=j)Yp&;Gm|leBzk9SnO;hfdckJb)BMT?%bH(Z@CI|9;eqQ2m rRAl>)_aza9d2yO^ixhN@t@_!{pX4@eqp|n5s29Iau5$K?0j-d`W&mMO-oiV;Y+q z+b0HLW|pRsVuKA#it0BM^kh`bnOTes42%zaX?l~En!xT9wx{nw+5<+XyaiHjTwja~ z6n4*KeUoOUboUIyw%KPktXhBk@$O$$6HNFv$?-@m*!2HDGw-VQ2@0`4QYAmkI&+}m kdMM8mW;c&rNesud#GDg0y?OKG#(^U((c%o3{uxFB0D@?)dH?_b delta 275 zcmX@Xe23Z0Hze4XfrWvMft`V)9s(Hn86Pgf$I&kPkkM4BDCu#uDl8Wx9Dy4