patch 5

Ethan (allanon@crystaltokyo.com)
Sat, 24 Oct 1998 05:20:38 -0700 (PDT)


  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

---942840952-1592286642-909231638=:27953
Content-Type: TEXT/PLAIN; charset=US-ASCII


Here's patch 5, which used to be patch 3.

I moved two free()'s to Done(), which cleared up the environment variable 
problem that Dave was having (fuf, does this work for you too?).  This 
shouldn't have been necessary, if I read the man page for putenv() right, 
but hey. :)

The top three items are new since my patch "3".

ChangeLog:

1.5beta5 patch 5 (allanon)
 o added "make install" to install instructions in README
 o added makeaspatch and makeasclean to doc/code/, and described how to
   create a patch with them in doc/code/Patch
 o changed version from 1.5beta4 to 1.5beta5
 o added mystrdup and mystrndup to aslib; strdup() is not portable
 o added InitBase() to take care of initializing vars from the base.#bpp
   config file (IconPath, ModulePath, PixmapPath)
 o added InitDatabase() to take care of initializing vars from the
   database config file (Scr.TheList, Scr.DefaultIcon)
 o added a kill_client argument to Destroy; if False, Destroy() only
   calls RestoreWithdrawnLocation() instead of killing the client window
 o improved memory allocation checker; countrealloc() works now :)
 o removed safemalloc prototype from Clean, Ident, Pager, Save, Scroll,
   Wharf, WinList, Zharf; included aftersteplib.h instead
 o Wharf: debugging output is now off by default
 o free display_string and rdisplay_string in main()
 o Reborder is no longer recursive, and uses Destroy(,False) instead of
   Reborder_unmap
 o removed Reborder_unmap
 o moved Reborder before ClosePipes (in Done()) to prevent spurious
   allocations showing up when exiting AS
 o added code to free a bunch of stuff just before exit, to prevent
   spurious allocations showing up; this code is only compiled if
   DEBUG_ALLOCS is defined
 o added Stdfont, Windowfont, Iconfont to store the font names while
   loading look; they are much easier to deallocate properly than 
   Scr.IconFont.name, etc
 o fixed bug which caused several vars to be deallocated in InitLook only
   if they were == NULL; this one was my fault :)
 o changed instances of stuff like "Stdback = white" to "Stdback = 
   mystrdup(white)", so that vars like Stdback can be deallocated safely
 o attempt to free global_base_file in MakeMenus() only if it is non-NULL
 o changed several calls to KillModule to have unique "where"'s (second
   parameter)
 o delete menus properly in QuickRestart()
 o AutoPlace() now pays attention to the SHADED flag
 o no longer force client icon windows to 64x64 with !NO_ICONBACKGROUND
 o SmartPlacement() now checks StubbornPlacement properly
 o removed code that set the Stdfore and Stdback to the "*" style colors;
   this did not work properly with the new QuickRestart() (required that
   we always reload look when loading database)
 o added RemoveFromList to take care of deleting a Style

----
Ethan Fischer
allanon@crystaltokyo.com
http://members.xoom.com/allanon1

---942840952-1592286642-909231638=:27953
Content-Type: APPLICATION/octet-stream; name="1.5beta5-05-allanon-free_mem_and_stuff.patch.gz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.3.95.981024052038.27953C@crystaltokyo.com>
Content-Description: 

H4sICCpeMTYCAzEuNWJldGE1LTA1LWFsbGFub24tZnJlZV9tZW1fYW5kX3N0
dWZmLnBhdGNoAOw8XXPbRpLP4l/YlzbNxBQ/RX3ZliJvZMlynCiS13LOW3fe
YkBgSMICARgYiKKzyW9bp5LaylVqk0q8lew9XNVV7es93MNd7eN19+CLIPil
6LK5qmWVRADT09Pf3TOYoWF2u1A/gXoAdQ/2u1J4Z1K4dT3wPGHL5pMH+4cf
PphsWA9bCvV6fWq3laf9AE51Ca0taLV2Nu7srK1B6+7dO4VqtTod58qRZ3K3
9Q1Yb+1sbe2sbalu774L9fW12m2o8v933y1AASpw4gxBmLIvPPACG4qNpmn7
UrOshq97piuLBVgB/jgeteqO3TV7gSdgFwbaOX4V6jDx4ZYIEf5FwNGjgWZj
x+rsjrvzMcAKEje4gM+ajUvTNqWn42V41XAsIwIRet8BjYTmo9DgXrrDLiBG
T14ipwVjjkq1QDokgUQMDdPO00Yu4BSF58JmFbm5s353pv4XwoLmcDsxhztk
DXdCY9g/aB+cnhw9etje/+i37cNHT8oRxtV043toZg+elNUgjf5OZthGH0fF
DoX6BcradOy9Yqux1ViDjpAabBYL1bznWyR7MGzrJpwJGbigOwNUsFG3TFuA
40rs4C+gnsQ4cwQUN05RQ9y+tOin9hz3vu21TRK4+lL+dzVBFUAKX0LxsuR6
omteFmEPLk9OTx7A22+DerRX0vS2IbpaYMm2ejRXeoajIyuGaB70Nbsnjp1e
HrOTUFPkOQk4KdiN2TFtERSb6ymDvrNZ20CTxq/NbRYxftBB33/84CF0HW+g
yQZKDxwYmDbGM5QKyHRgwBsU1gUODp2g28Wg6KAaMDDWYNg3LQGuhkqxe9gq
JdokKNVjBPHoKZByqqgvUtYWAku9D1tQxoCl2Q76RRWH1gxDGFBMR7MiDRxe
87cX6GzzRHyYLJKu1FPzFXJ0kvBetwSGRMQTC63GrYagQN7Bfn0M9djOYVf3
hCYFaCGNQ8wAgElgQAPGCB5TGw+ss/wNCG0Sup4zgJDPTUIa8Zwmc4R8GOjM
TCPd2HRH8vYts0Nhl5rLq2D6YDsSXMeTWscSKRyPMETf13yBQNhPksh0Dd3b
6QJFb1OzzFck+AtUiyIKmYAO9mjc7LhuyKvSUZf0V36Ed8hXvwYfOkZgCXX9
2LwcaC5dr2ZGP9SQpqUp4HGNsOs4AWe613jaF8emL2tAN4fKS4mw9OAanJuW
1dYtk6xR83rBgC6QiEN0fs8ZYXrswpFm+aIWPUIiHdsahWyjMfnwBFscTzxD
BRueNrSPHV0j0yKxo6EJzSBWaCjigmgPRxyatuEMmSBz4HroB6hFMXC8ESDi
EAsahtDPhbeLPAa2RKOiJsQ9dLxz0uoQdhRTHnYlFL7WFQOGQk9zpCNHrlBy
OyADrsEjA0dHjWg94aGAtAvBYnIsq6b4etbXvG4Nnpm2kuE/0z3VCroVsOAi
b0Yja/QjLpkI7rqDLtEJej3i1wmkG0hlgEMURBc6IwjDJvfoekKAYfqupY3a
oZeTPXuZZ+g2A81EqXKvJ6LjeAZGD0YMloPOg/WVwMDmm8QQoQh84ceKq7Ei
x3TCzEaY2oGNBjomyZym8QZMGRjzBArW8cVj08XhykjnoWOjNa+mY53vBp7p
BL4aM1GvDz4GDeIPHXfYFzaIS7R5vN8/S5kqBQtCx8LSMDbaGFKQA19iDIUX
AeaqkBTqXkuPzAPGw+ePvItmafpqFPxmC8cCwUV3MsgHGMfhg/sfYelyfHx6
cEZQqESsHYwUlWfS6DpkWs/YstU1eR1dEU3sKOwC/MTWBigxFfZ5CMvRDKLI
cpxzokmgJ2CHQYDcYgA2UeIUfkXIhSADd4WH1EoMnwoHOTyNeYQjNGiEGgip
K1MzL5FKtEwaE1HqGloIOgwKytMsFWAQf0ekhjDI8ChMHSNNKd9HqTB9Q4EE
7u3ByUfHx6EYUfsw1HyMyMBmHjloFOI5Ddk6sh5r0DIx6hVRfh1NP8daA+mT
gnNW6iGPG8X8MoOsFmvgO8S9VOQzoqiLjjLJMEPBwRopnUkpBq6MzapnOR3N
alM8bXMgRcY/xGj8obADP4p7yLYZerNdJ57HOIskqQIjIv4Ao57KAnTXx1AD
gW2+DJBZNHZPFG+hx/gC1WUo9jD7o8owvCiRGcLCG4yKSEKibCTsN4Gpn1Pk
xXlFGBL2sU5+bGk6JRKKNa428plJm+Mo5RY0vLP3sLo+hK6l9bhXEjzQffQ4
NptIUhigmZHtzcvtTZXEb5ycth9hrX5//+CDh09OPzo5ZERnAySFx6csEtLA
wdtHhQQdjBh23BzzMhZvlJeTLn0hFbXkUWhgFM0irYaMFCtFNJ6RRcnPcjx/
VwmQLdAwDc73lCMSsUUlCNhimBEglD3xMjA9JILHZ1RDHNcakhQ9QZ7JbqmC
VOSoUQJOp9UnzM0RJhzKHhM5nVXKQR45QvIXL5q5WJpZxKpyak6xzEBXL5Sn
dE8XyS2ukfH/uiqRVQVYd9fgHRg5gUdRqc4PaabxMBhZWBcWqoVqPfnQ7b6F
ZNgYrS/QZ2vUlV0ag9asCrWWJGp0FFUrRdSjZXikBHq6f0ZpF5MrVtroIA0Y
K3P5vx8B+ki1ToiwAAmTa5oCuvajUrdBpFfgMWb9WXU00kayoD79CJ5GczwT
CwcMIrESotGxRzPwvabv6c24sTmhqwgZYx84aF5mqq6eh8TAEGYRiieBnaa/
FuYMxSoRGrLlQ1MO3KZSJ/bjPKHJmLkU6+AHKv2RRyOpt7DqtEfgY5Ac4XzJ
l4ybskUFDihypJFg2cQXUREZy4n0WgvTNTYq7dD0FW/Ij3VjQbFRQStT3MDv
Y8ttUevNMHhcSuBVAww0FK5tx9RUcqiPKXyIbKmQb1BG5MCkWVjAGhT10rZA
t+NrYiSBU16UwGdo+r1XppsIneD5ybjkzwQybsooQKLZUsEo8Q91f4Os8gGV
CYsHnLS5zgoJaVbmBJ8U6MozNMtDocNGC1rbO2trav1x++7cEJRGMhmINpJA
tFZbwzhUwwEwDFVv3mh2TLvp90kUN5VFhvLHsODvfYz1nAENqFN84tTPZcDv
gYqkW34zelJqNm99XKhiYgKT/KlEvXdRy5FaoX4AJRNi3ZL+1Zgq00GyimRg
cnLRUP1C1RtAvQvjRBTDNS9dw0xa/Hg2UH8egOX05oGgEcrAnwpVaZh2MZEI
3oXCSDFHSTpwpzFU+WwG8o52XhxH5nReCNQuid1nx8Ypl6d5ppiKv+HMGECb
0eY7MxsblQxpysvnKbDS8MSLGYgpjGURe06XQxkal1pSosBdJnvrUdvqFGS9
AWYxnG8iuiVd3J1bWaTgFnNxBv2pLu5OqTUmXXxzbaqLc9IZUhRWMTgsClDu
fUn1QKGamyHGVMIJx6KlLsyOUS5VmUZ33FFcVbKjk3K8bg57OJI7rg+FLw+S
BleR1wkLAyQVXcEh20d2bmFy6XAdFCVEpURa6GCOchLcWMpBkEYjH3I9HzSW
aCoRzTG0HNxwbyxtMZ+c68m+9Wq1HhX1A5oooFvhlKvnYRVUfwnFZrOY6s1T
ZI6w/Pal+EzzbJTGDYDHju+bHURzgHYWoir7q6g/iTIURqNIvbqmGl96I0qa
mRLlFlV0yUI1YvBG49TEjflE3SSTw2lIPyxEFJFFEgDqvWkHlsWPLV/k8XDi
ZEefQr4SX8oEeN2ZAibPeHCGh6bJFYumLAnrhF1klEAZjGI/FdUsC2zHmTQv
loR2zvP0UF1p9p8/JxpTuKn+QFBCupiajuZQGTNMTquK62KC5zFaJ1LdCZVG
K9uKHy66Qmx+Cl0NHNLs0MRevjMQKVwTrKryrSMi4SQyXyS2Wqi3QOsJP3xp
2tBfTQt3OaAzImwO9MqHmB3OUCetTcAIu9naad2ZO5XLwzMzzrb4VV4repcH
8EozxAuJvjKixba//ee59mpUgJXU+1u8I5dK3t5m39lOvnBNXtimW7JvZvO7
4mjTX9MW4ve/M17UIgr1ovZqOjbEwtI2xDI6NsT16NgQc3S8wTreSL+8x1kg
y4QcSA4FLfpOf4PvhM2LvcK/+jv8edYx41X+vHf5OZ/rerWfr5PzxdV3vpTR
nF+T0ZxfwWjg/G8z7ERYlvi5t3osZyU/44aPXKF3zYX1gxlpCavomtdjFYhn
tlWss1Wsp6zig7+ObNv05V9nbQGSmvkPw5ilP29xFXlLGYZ3TYbhLR0ujull
kAdagJWsY15C1jqS/WHB/2fb+JkTS29xS+ktZSm9a7KU3jxLuc2Wcju0lAo8
HXoa9MEYorRQepNRBIBfKEx8fqlGk4PnF2VCplxYmaZcxoRMeT0mhHhmmtB6
i3ejtlLBZt8Qvu+A8EUvMNGOHJiVjjjqwD8y0gxdvnAXVtcLdxkjeeFmdiij
fte2lzcSxLNsRsoJLb8q3S9579y/+7R0t3Reqt4o/qp8vzAztiykwznqq17R
NBYIJAsZRYrt26WjUrP0bmmrVLpxk5lnd4pfUjLk7nulA4RrJ7AI2Wg0sPHG
zVKx9H7p16UaPv3g6DMGbJYslOZ7u0bpdPMFP6EOVzNEz1nYJDxnGUP0nOuJ
VohnWUPc14MB+FgZeYGlSTM3VI1/CPiXOwO/jpT3fxvOvKBx7ph3Fleqgl/K
nlSXazKqENkys7EK/Df88Pp7+PL7Nz/CFz+8xpvvvnr9pzevdzBffP3V59/A
v73+9s/fv/nqzZf5yZFhpljZyhKWNUv5herK1S1tJuIoue8ubEkosf+AN19+
++V3P8K333z73Tef//lfUTaxjjDCwX/BF9/88fUXf/nh9R++/xH+/c038MNf
4Af405d/xKuv//D5V19/9f2PjasZpb/4yqK/1Mqif00ri/6yK4vhKtH/4LTP
po0awoa5wS1v2Wh6VNv9qcFt9+eIcX+PEDcKFtbrKFjGmkbB9VgT4pltTXzI
rJU+ZHamGRqYlgmuc46Y8zJlMjMkuAVy5Px3DhnrWfqdRUb5M4JWBvK67CPc
KdfM7GjPUVQ+5BTryAdees/homg2NxPb2FirbUMV/98JbcO0pdo0rGu+0Acu
lPW+5kGlBup7dTcFY08Boj2FEiGrdFtJDp7QKTVfMlAl02xn2yMcIcoDTZ7x
zv6NNBQPOfUuobUnZN/xJW/8KI/TCBeOafBmsKe0Va1MHVKMBLZv9mxh8LZf
BCehbd2utdahunW3hn5LYlODtA1NCt/xEIk6MMR7EPhNdAUxTT6L6MMBHE+0
DUf6ma6Kh0K9Wbmp9s+Pb6uvNAvVZgWmtcFNs4tNY88LMXRy8KOsrarjIuFt
u3300cnB00enJ+12Ddrt40cnD+hKWy1Uo9562LMGnbCzPqczQSajRydTUgii
RwtioF3oMeV8M4NupeVKisvIDrpq0z/pgV6Ah1fC7sk+mWiqnz6/n+0J3fEM
P4MlPXrI5VQ0CtSVXi6OmNn5/eM+LrqNbAc2dTPaAzGAMj3H9kXj3cD09dlx
TkHMiW8K6MpxbVr3dDxrbdzBUFalrxbvcQJ0auHZShJHQur9Z4MD2gE/0Nxn
4Yb98v6ZulTulu7xmLaEPmB/LdPJhieOw+GBrh9JFGV+D2oe7/DbBxeRP1fT
4PGBuvuOY2VxRQdJpjYeCWFFjRNo45Nyeb3joxrZcGrSKRzqkf6fNzYz5Me2
NNZ+aKrNaIrpCIQVtK0mV9vRmdt0t/c027BEpJ4TR5rdUf4AZ0I+NaUl7iPR
KfXNonnawbvJ/tizPsaNOhOWsZPqHJB8Kh4K+dDTLkw5Ou12fSH98S5h9jGj
0D+mMudC/JMphi6nGNZTrKwsLBU3bUkS6mheOzyZkkccFwGtba4C4u0qkYhP
bcGHLqJgI3GIGhw9On6QpMg0tdxv3zCeOnyWY6IqGEumE7cJR/SP1mKX6R8H
68yBkjIFyLZFlyqZRm7q+VdgTvNpyOiQYU5P6BpxZ83rJf3nxVos1uIt01N+
wyADMiXaZqCWDrdz+2+mjtBvUbTdCqvH0/vvn6XL7j3oUK6jbbZ0VkAJbYNu
HHek7vBG2BcXmocXzyfndrRj1+SJB9Li8DFA/MJqjg8xqcuuMTQN2c9H0HcG
AoMKbTlHgKgGxEuuCfF25Kq7pOJlRBPzZDqI4Gr6uSACktKJbrB0pJ3H4SUZ
A11aQkxBxYUzjyPNgSAuhqZlNJzJuXVUODecpcd/XqiurERETB0RveHxk9OH
40pDA4inEA1tgWkRWUykaX2aScUAM8w2hrmS0c7onTbZ1l31phS/7oSb8+6r
nlAJUeyq96LhXWLHbdq0XHbpMA5NHVCz5ajLaoMEj6DRVIduV3nGa3bVHdxQ
5z5XlaInuybzpLAzU+EJGWBYT0j7VL2s2+Qthuubd8Og/UlBnTMtZxHHwyqX
4uIxAzONmXG64dfj3MGOOsdK/CzQN8Ne3BsZQkbpKIWpqyi7kMVxMJhqbqp1
hq0pgCsZ2rSuaSvb4DJnYz3eAMqaoZ71e/SfjmzuwW8P+Gcf6PAxplsoG+6o
Bqqif3tg0T8d/xn+6mp0aDjU4idRqItmAW2J0/DwXHEUcrpc+XdpTmkIDycU
xbf8HToTeEtS4FSnqt/yi1jOjk54UBp6NV6mWbD/c3sSQxS/I7qiORdaAM5o
VFJehSpE98VavVKvtzbrlSI9biUoKDC7WFgpVNkBOGzLpDWNRxU32+zt29G+
iJu8f3xSH6SMY0czfhMIb0T6SCkjR/q/GAkvyEb0yzMEM8bOih/ouvB97Mi/
eBAi/nQhF4zz01Q3TCBmuGICtPQJmEz3SZfcnjj70rqtzr6E00p4J6xE+vdS
D4uNxpT1tCKdIpixrkUmiRH+Ez4gyQ90CoZqzSu15qIsn74ig68mxq7zcpF6
FsZ/HW8+zYxt5w0erkQsQoM9NrKNQ4cjo5Wpx/q/2L/Drreer92aJGYRE0mV
KlONJA0zw0zSYFeK27MRpKP3Js2Hkl+Fyl9HC2x6mCBF81GP1EJRDBGu+MT3
lIELQJUn91frfQMxSG/julNrtcLEgdkRG3kZkNZuKl2sZSUv40ThvhrmzjnN
ZBbpH/TYg7XxRk/MbDZmNw+0y/YEQDTdqhRgybW3cGZaa21hGt2ubWyG4hjU
7ykIqlT5Yjd87EqP6q/k92zKyeIZA/ACWEh4GDmr1RTJq1DPMHkvy1VYu03y
mr7LYEk7jiIzcuVQNNWftLwY+jkrn5Re5qvVJOWar4TT5ceryqnxisqP8qAG
a+juk+31e7aq4WJj2lWneRLTGkSQTCiB0nf0kA8m7THl8aOs0qoppUW8Jwwm
K7B/X9XBhOpUuTpm1Vdb0y2oOkIpbjeqSUggNzLVRlgtpCC5eHA81NqYlmAQ
9aXLvUiTlOcJdyTvPaD1YX6z30Haz1WltHm7hsGwertFX+RsK58wSFSjUG1C
JEgnihT8qyGmDbS6coOLlPQSPPldpjvpGfXIPy+Ft28ZE51qEEqPJLeqNkjQ
jxRBmRPVSqyOMLbhg2YlgeDXHiufxhLLs8+wIWujAFPtFNIBJlY26zNtp5AX
ZuijOsa+H68oJIZWrcaFF4RnHMcrzQU8ux5byUzvTggai8gpsae4CmmqTwkK
QC2ZsFDPE3t9UuT1fHHX54u6nhVzfTK+xk+yPsumfnudEvzd7XgFQLlWaze5
XifuqmxdPv2MCnkb/w7JhWbRQmDyk2tqbbGJcZi9++UuYcAKbYD+yD76kqis
0YO9RFa7dB95K/1O5Et4B1pr+FFNe/inRF6Dl9XqKv+63P+296RdbSRJfsa/
IuV940aUBEhIHGbxPIzBsG3AA3jMTD8/PYEKq54llVZHg9bt/e2bceRZWYU4
eq4dzzSSMiOvyMjIzMg4oKodgiqL7+r64NweCGPYJ+5rYGHigsH18oMojnhJ
DWaw7nGUmsVSIK9fqwiCrGnuom4ikORwGPpnMZnN1craFmgjrFeaaku3rrMB
XoMCi3sZTbb4I3gNawsYdkMJPoPRCxgIzF4jJFthJNDLrTw6ihrkKfQw2cpZ
hNdUmbqqdjST+0as+jdNHzHsGgWb7ARREs1RUPyhgyLBxXG5FECP7lEYw1RF
IYIX5aIqLzOa6Qcj+286YxYbM1Mgatu2QXl2+iILnBk0/nZZG6c6vI3FDFGA
JNRcAwnoZaZkczYn5dW17W4I/brmww6EaqeMjQ/k1eyflx+BD5jM5ggc3Lq0
X6PkXt7ZmavnvnKzYFSfnV64RJezcjTERTpp95QPxvFrwURpnytDBXjnMgWc
3T5YpOMX6RQUOW7fcZfAYB/cQqHTJLmUdXH/+Lv94qFnRs3VLa4lGZPPkcQf
6qtytTY6asWq7b+i9vyK2enNGpXH2oVgHXPUgKfZRUcHadGUeQkSneH1cCZr
2ixTr8Vvv4lk3O4Npv3FpUUWhdBpoVwu4znSdOanP4x/kmVdqG27v3KcZiQ/
kDpp1UnWk1HDWVl6nn/3ClzAIwt6baW/YYlLBihH5JKBe7DMZY4aGpb387q8
eazVRQSf5AnvBznkhv89Gw6rAv8T4uMovY4701H8Gn4vWHKDKp+wx2I8jK/J
Idx42L4GL2rIqcbsz5O9nmD5BV4U6VUv7qtWnuffyosqXSxfVG3phn2VrOJB
gaDwxFtVZw4+YP+nWbr6yF1jML6e+EKTqrmQ7uyou21ZV1MsBOfabtrgFFZL
r0NbdlXvzfaJvSpTnnHlCIH/ObP+0NXUnYfGu3Oupu6TV1O3eDVpe1D2u760
9GzUSFvuhzQdkrbkTcfRozwa3KQqo0JU04/H4/bXuOJobLDDVCABgrIk067q
G8tI6aIFOgGs0bLo1peYfpAjqnvB2p2cqgbxLWTMobcB04IusulvPpU4QAVU
4sA9ikruqaFp6YY30OSzUftXoBJWxGp3wLU25g3kuSeW/7dUIVN47GpxS96k
w5HSa3zpKu3MdPH38eSiPfoaT0iNalFpU7WHwwdQC3pSX6nnzR5nF1AIQzz4
scwum6WKpv9Shs9ktQcMCf/mLwAH6N7hMdyjFsA9NTQdU5sG2do0/r0E5lkC
qDdHvlbHjuYoqGjx0/T8FHPXGuIkXRfPpAa7l2o05BPopqAOm3K2NlEBhz6U
IMv9dzQYTienGNKgIvbS4Qy0Ej+i+lAlBC+vx1M5seNvFfGqPSFfy/G4zHJW
YVSSSBFpUn2DPQalUHMbsUBa4CuuhXo4DnBFyF+gV9dylQkuj9vDs3YC7kpJ
bcBrQQuoSSBBxkU1WkD0GcbDxWgqr2VvMUTLx5EkvGM5RvEbp5zF6JnOSTtO
gcIgKYio96P21XHaiXfHs8F1xf95Iu/CwWKQYY6gPi4hDMC8qFSwD8GkVX8Q
kXWy+qPPMCLnoKFno7l/JCwdJj30P7oox3R6cDAnj4FYJfgnf0+yQAp4iwX1
KL5SWN7eeOtN1Olr/v88tN93Gvc0vr2dKW/bm4tSMJ4NfxRQiwtWRDEu5OOo
5r46mpZyU63SQN/dQDfPcEq4/6RLcKhh3Gq3eslk0uO65sQ5xv6hv/n7vwNU
gG8H7lHYvqeGpnW13trA10OlUviOIg+JJcnC2KLvrgVmADdAzh1UUIHEs9PP
56Bmt/vhfF8yT0wC86MdUQNO3Zv2UR2htk0h5eS8x/EA1iV8ZeuZrRrpLiu9
Ur0gcIbT62+tftoZ/1Jvrn9RU3Qgp+6DzJEbpGWt86LqWA2CHaGT4JsPOrZk
N2kP4hx1k3jUHl13QTuTUkAPHWwg8Bc0A1YmIhmrEnBglPwAjYJyitChvN6o
NGtwLAeOSJpQQ4iG0lJx3sLFWdhPQJxHP0icBVNTETNSIuEfFQHB5CqC9Igg
ddIf0sTBm/sSV72sptLAdGPclGwgSuJnBhRSmzzySA0vxjs74t3RWevi9NNH
FEwXA707/XxS9t8D72SzM0fJwBk0ivednmGKBlbFb+V/MMwBq2tZmiVUX6AO
bsm8GliQ9LW8rLROvqMCh0m/4y5nEm9JWcQkQu9mlDgTkV23xvECofhO/KeV
i9NUZq8Vd06neAajBa1BNBBvdmgRvnrFNAR4H6WpInKaH2dcRnuWfG581743
XLrb1um3MIA78xta70J0F6hioUsjVZkrS65rbYXer3Haj8EQsQ+WdRxVhPsM
j9IL9typFx45OTBP7gAgEdPUPMlO4C9F9FZXDSE5Neh8RUgDM7F4aFv4oSjV
W0FUfSZPr6WZptFswdtAni7Y1eQrMQjRzORFlUOfdChek150jLaxfhqmKWFk
lhwCAMq4bw3L4T7fkvEXQWaoVTTf0BBRZmmYw/sjaan6vGyguuCtwRy+mq/9
9E/D7USGsd1teyxwFmKBMybgBehsFGBaitnNHGbH883cbiZCbNJnd+qk8bty
vC4MYuZyvFvZ9TtkNrcuj/k9OB7PVZjPOczmX5fRfdg/uHhWVgcV/n7M7i7L
Flxed+fwOtro/4FZXdHxkIkncEqkccuW9CnUPyJyvQzCLKDMoeQ20aFLrbla
q2yxEMmue2CMzs6T/rAX88WOxC8QDBMcFqDm6CqaYC8o157rjQr+hzkYtag1
TO7KlpYkByFk3NJFHgG/jtLpoMOac5fn6lL5VmdRtF/qg9Nb05DMXwYJEoid
XtB0szciFfCF5wQUXin2EYdUlnnJSAdnpGXwbARM3BBR32xuEeo31xj1cGN6
IQjbCs9aJ4lvIOQUyWKjS0JdWHCct/1WJ+61eOaOBmDivztJ+zxjLz8ft97t
f9i/2G99PjqRN4WXFbLjIvFZ63K3JSE+np1enO6dfjjPrUND2OV5XJubOK71
WlP5u5FEbm8YNquwOIVF5kQhqG8skkncx7BCFifPzohTP05LZbCzmp2aQRRV
8qZnm9u1CGUENEBxiGgXpNZhDZbgfl5WfJdv5gOxojZMT1lQWFd2gIICPGfK
qBM6r+bdHg9fD/2eGT6sVYtl78hpxuZGpV6H5/x6XU2C8vImmT+yEGVK+WoC
ClO/rH4pizeiVpZM3fjnXfTcNk1It8p2rvRyybI1fAmjelmuQCxoVBqJRJMV
qvh2t7KELFRm74xBT/pGtc8louaXykvQ6XrlzSnMBHPv5AaUTkDdkFRLApBK
zxvV+4USpVycfdqnrZinSw5ukvZoWLKvVq8rSC8VUVtFs4QffyP8MY24KNx8
IAo3c1AoaXhOFAJkGIVKGrVg03MuGjf/Tmg8ST9Ox908QiRzeHo+qTeaytGd
IyF6gUJkXl+GC4PStg2mTsSefClrc2Fls13FfPXYClw5dQl302ZtX7aVz27n
8Ki1zThosk+AzaaxOweWawmkFLNUJ/qqOcZDd50DfXbYVrY2J8ktHBqrVwGP
1b1s2GNVOW21v1DeQwXM3XnEvt05BczdJwuY7xHmo3g32qrzM5Dt2EfQE07I
J5LwHue1D7wAELicygAqp0eYIAoeENwKKZw3v9zgCx9XSSbMChqqkP+OZ63L
E5mErqEWbdm5cZKFoeizDT3lhUfuw+AOaIWel3dHo/as4NUhBFxEHCH4xxHJ
fDU1N603Q3TeVFe2TLZdeydJUUU+ZOtuJV7WaiuXaNzum8AvW24/0fTdz82z
kTe1v7SH4uYck5Ytpj5oEuHP/bNHUHNMGwE+ab7yqnAmag0nai00UYx9CzlY
Yy6+nn+aXMB+2pn2YpqZh82N7uR9KNOAc8yQhn3SJBXU4syTCoOhHuFXAAny
tH4wHdAu9HGUTlJQlcL7w33PrSZbebjUetpBH485b6qUCRoddEjiWpY6sbwb
qUYw9PmcLPGvuCH9tXh/dIAKZsqBe9Qs3VODPUO1dfIh+O/9kYruHlzsn7WO
TsDhqXJ22EsklPt6DwIVevWEvzP8e4t/u5X3e2L0fg8+xu/35iQgzU3Mt3yu
HAQuIKggfICwavcS1pw1NbdsrVASo8mPLe3h97zfHk32ktH1Hsgx8HS/ur0A
fKH1effsY+tg5a1Y3QEAiD4RfxqKbVEzv9+lt3ihx7o+tMcTxU5QhMaONIgw
OjTr7GZw28sdZbJ/Z0MJkixuoGPV5qpii/pmIWwKBs0H/UguV8S2sUvxu60z
MgNSfq1YA+mXerP5xaQOpv1faqtftIBqfQ17tt5QLl/Z/pGuPOAIU96XWr00
/daCUL3tq148XlRCrkhoF6xi0ZKcKdermURwuSr84srVqgWtxYwJ6nSIRF7O
26Ov1/JbFDmSw/oGHvfrG1rti53/uV6r5YIG35jHu5eHp+cXJ7vH+0aRzsNg
1g0KOPppWP62qLay5UhLGfF4VcnLNzT37uj844fdv+yAWS64s1K9eeVC/7L1
xUjkh9NJPPg1U2PZf+vDaym7KBSLmeZV09NBcvdaNl1b44u/g8PNGsjFovrm
WqW2ZmHx74UZI+zwUVRbewSOPDP5+Ub1iDHIAVzynnPOPk7lzlN+QIejQhiA
Uq8MAlQv0knmBWKMik/GVtrAk7CDBD6bWxuVuuTRm1ub4CPoWdUlV5S3iBfV
s/gKn9Va00G/PbSd9YqJMrtDB4/Kahbx5JdSuWxwd/lpoN1PG83Xm5G2kMv3
VSzXHGhTE9glux0uqEn90oIiNKyr0tOE6qZYVMIwuZvJ2RNtwRnw/CLZFr7f
QJgG6xkl4vdHMLSygitQa2jD7xUAhV/Q1D6PR79Cm0BYTBJHFOSBxqH8P4/F
4iuY+91zmP3y9gLstZKlXoP3eBU3AueqmsW4KWi9Bdx2E/D36+V5fjm1K2cP
zH4YETiHX7ODofct1ME+SK/BuzbOycc0gRMDva2dwZPt5CJ1EvfoxHKR4MSh
EGgdnYBFW81NCDdALM31AU1vcbpbet9zpoYf4nBe1MRZE2/e0/Z66Zjiwvdn
Ypjw7QbeMyDjIyYsKmMEp4aqWqqjGINp+E4qQfVZovXbJB2eT+BNThaCyTwS
t+kAHwu7MwFRgdR7xyo8c9TQqmCt0mjwffkG3aednLbOd/+8T89d53YT7M/9
dBiDRuSihRJmXpc4EnWmNgQY8u8WfVfPyuhaYToEFwIpxG3QDkCsY8/S7SiZ
EI62Q9kjFl2FcwHZpwM/y1N2huJgEOGD8TUQ6jixXRxxNqth//c0noL25M1N
i1OoyJ8gPVzl11561e614FzTAuseoBTjXwOxwgxeEIMfb7Pryk4qJt0EH/n6
7WSwWK6Iq/i6PZXkNU4ldzg9/2kstLvjJQkPpcArNL7kys0jGaWDPtx19IkN
DJeG8ahnTwA5vcjsMk5udhOKXABY5lpz1nEhQkIQOTiJtUyrZsIzLaq59jNo
mv1UNa8h6BPXW6hOx1nzM/z5csZiovf4w8k7IfM2EymzEnVIzqbTOTmbTkfl
bLo5Lbt5FntW7ikGU4s7L7yLe/Ek1mEVPMgyutWz/cq47kAMPwg4adBEkccj
bLP11fLcblLdC6iR0s1xT7aA57onW/BPvCcX1NQkI1O+J2+A8+loQ7mg9kXK
8tTSIyctemuq5vKWcIZ5DaJ8MA/62EaNOEo4xkUKSRKUBCFvj05a747O1AVx
C+WuW0orQ/IbtZPsf/5wevozxVdDBapepzrGmACwFgzvISEg9/B80gEvurrH
tOs4SdBJSlCdhEgbk2Q4hJEKXQ+cruzf8nCjnvIojkm9UdMuyr6/PP58fCip
+lQeH0ZJJ5ZndXnWOOi1v1aUd4alsvCA6MH2R0WrHODIUhJtsQLU95fgKRi8
2tjRDeTlDtaX7BbkLrMLJwpnIFZljViSRl9Q3gAEqoiKGic8BwoUtmmmwy1J
GMSgIQcSzXjIDBQ/xqAZMBG5xUFvqbg4zGuouKSCwrZlfrZlsgtrkGHYhn7X
/f7yMCmq7DDJGcRhUjSAwySn80DTb9M7Ijr5xaa51QBhAHwBWajsPKIoKK5W
l9dJPsTxomaMzzDEh6wEpbr8UykxqJVBzAl03eT6UEyBj6KNrdVKsymihuQf
zXXLlztsLC153kWJ+9g/8a4ssS4chMgxaobqOmsvKuMi35xH7Hxz91alvSUV
qsADydbh4D9UgwNg9mgsTyszU4qSXVizHH1wk+OWUNPrw6t0eztmNGM0kAye
ib9qTQcKGMapHkKI9WZBIdUFpfXhQVKiDxiokhL9xpPrb7NgV1VGqECwwyrD
LWB4mlfAZIQKBLpkMrwCknOFwDk5CxzqDCdngbtJDng3ySuQ05luEu4O782B
EpyTWQDYQCmHtKIsaZVySCvKkFYpTFpRhrRKYdKKgqRVyietKEhapXzSioKk
VconrShIWqV80ooCpFXKI60oQFqlPNKKgqRVyietKEhapXzSisKkVSogLeFI
Ny72Ly8+ne17PO7rqN1J4ux28gl3co9yKdGl84sQ4EUA8DwEeB4APA4BHgcA
j0KAR6EaD4NVHipQC7cX7wnUxSunuqCfQpCfQnUGqwwAnocAzwOAxyHA4wDg
UQjwKFTjYbBKjSJ/byTd+QzVkMq9TzaU6tFNEPQiBHoeBD0PgR6Hqz0O1nsc
hg2CHoZhDzVwlMVCKQcLURYLpRwsRFkslHKwEAWwUMrDQpTFQikHC1EAC6U8
LNhkAoE1416vPYjT6djIhyxzoYv47gLVXbwzmUp349HI1OP2HeocZ+E5x+sC
mHb4NHq8Oxqlt+HptLK8kduFSkWFtEzCssUJHNszx3UryFLoMO5lu+fsHRMw
Sx2irSTrrGyl6vOwloRYPUVXK6CJxBMGTeIlFYIZw9SQ1jeG6ltHnYbmuhPX
JLDphDYc2Q/FcC313E+ZlItMyrmbgiGZGluVLRGty0utslHyEU9JJ6cX+68h
AwTH3XTa64hu+1eICd6NR8mkddNrfx2D4VFFjFNdgUjGIh30Zi9IuEz/poNe
2u7EHZlzHfPUFt7GlFmIf9nxLFPRxaasGSMrZatzhSj4cE3PNTbN2uWV0COv
mDIyzTrd3D87Oz17LQcKIitwnA7VIkLIWa1wIilQaKwmzsOm0nJBczxo+Pgc
DijnfEBZlhhmXP8mO9I6OD25sLT/f9i4zLubKnQG7oP3YzQjQ/IkS/fj1ZYK
FRR+TuxuNJqV2qaINpqrlfoqrzgjj+/G8hgJCiKS+47hob223FhuLt+Jb/Hs
FmKgeCw4e4kDc03vKvCiumDDcTaYdzjJKnCVuTSIossfNeSce3VDBMfZpiFO
thri07EoutrljMiCs0dkJxePKHMlhIYyFws9+/3uhDhnP4Ev25zYb99hmvwk
m267Xl0dZ6mDrKAznEpVu5ngbZssb5yK9FDsK46y4c4ckMFk1zs7Kitt0wdd
pTlQmgr9DRZq9I8apko9ANNNs6Mae6B+PPoam1clFtAsEm/5RIuvIqboblBM
JUYrgu/E+IVkkLS9yE/Twhy1H6jab6j2G6xdiUOVfPOC6zYnLVyzG1vw1h5t
bK6rN3f9YiRKZptkneDggeEpO8KDdwNH6PgIruU7Y3YZ+tPY8CNZ8HMPid6p
6pW1GrxUbcGnc+YwwkN+2JZL5u2rzxWRfB0Ac5mO45Fk12lyHY8pgMI1kU77
+joeTpx8rkVthp1WR0Kg8+0aGHH7Ikna8nQqPIBO1GO8SdUrDbNdvahAC46s
TLfAfPKqR2zaTdUtYHZxC54AlBpQic4IDpNHDMATm6rqA90/TB7R+4CwVaHI
ZHjzYGU8bCoyYlq7qeCEWBkPGVVAwEtNObu+ParwcWCOUQVEw3ZTjCd7VOED
wTyj8oXK3JBOdkdkkh80Hl8YbRoJzJCV/NCRdJOcZrpJTkPd5NFN5aCtm+Qg
rps8EnW+4Ny0pXPkRTKeWW2ZDN0YQNjaoQCG+/N4mfv1Pp7QYcY+FWWhGWEu
NB8IybCyQboAtUq94W3v1sMfmvvIHi+hukrS7iX/EwtQSVj+j6vh0NILiPBu
jMqUkdGQQad3/vsgRWkMvRxGTpA/9QSGGg2eOJCTPYmHUYDw5B06wy1AJ55A
AZOhCvwgvRjdH0ss4ehd6FSrbp2KlayQWYGFz5CKBSndogpgHc17ohqoQHA8
wh/hiekodaL8eTEaR0+aG0tB6aIbg02ZpztKur+gdgledxHAhvbkhDLjHcVl
BgTbik7mGdYCsCaFBT3cB1uq5NUZnATyT7HSYUVXVhBlNj1aUS4W22MxiMFX
eHs0W7bmh80u6pt1spGpa8MLGte42+71+nFvYuuCDuH9vXUDGmE7qMFsHMe0
e7ft2ZggrFUGXjr01JIIKqSEFlYo09E0sVkkNcmxsGetlFVjWqTmRLpyL8La
bGqsWxvsJX7NMn8J6s1ZRVm0aSgVlR/BIa4tXPRnUeTPojbiLxWNhAyYyIa8
1ljbYA0i2RVQkmVHV6hbJU/Pw/Z4DJ+k6+gLHUqgxkmVM5bYo2O+xiFfLDN6
XCXXhVhuBXDXDiiB6fAzjlMBttnQmmtUiQogv2ACavs1VoRXhm6vFDiltkmh
U9ZVTABZESq9kMIz+iWCKQKv1BPc+zCJvJzTX/Y07srIdMBAZmTP+Y/CJdeb
OOtrde2cFpoHmWlLXnXURZl9zIYveZ5ijqOsU3zBM3o5uYUed7mDx4H7bniN
+sYGXt0ba6A7Tnf3hUl/qMPlQZ/A5O7neKZ1+mGGQukCfWshkrgOkt4vojKM
+KNQgd/p92vBwWWzwGaL/aMVL14V42VNxb7Fs+u0AyUTnXZNgv9rUiakNNBT
htOT/NBpN3IA4AFPfmyrPmuXGYv0ze63Snkt2myDGIULhftvijsj+LXdg8Cg
8GGn1SkNIqpS4LYpsE6MgPjT8Cdyb2YlffypXH6gXi0axI7nUapVkHNp1Crg
J6rT5lXj6dKu49qlD6De74rbX/TJ6bYnKNeGKipfny78HG0zxEvn01BurPGf
k3FyBSxsRrrROpQdnpTZB4n2NK06c7kHkmt4WuqQAIdsksnOBb8v36ENzvIt
y+G4NyfpJLmZgcngtN+flZ9vNHmWOMUjNeyYLU42OfqCCudhhJmX5kgHO+h5
XDBcq1vncS++JlugIvScpJjMJgC52ADdxE6KgXAHEIsR9uz2uCuQuMQV3eWN
Vn8e0uatRr9U6JgRS+KgN5WQEGxyCLemwVcqNUahGIjSaEjLpsiKco2HcQ34
E5EL2LV8g5JrOApSJzPhkCFzf056PbpniMWEnU5FwQxyR6UrJb+cD+MhN2yO
PRcbsYDn4iQW/BOZSUFNkp/UDD9Zq2/QWWAjQ9C4juUl+b3yjcmWg0Qq1TeS
Kl/913TwjUzT8Oslf/6FvELi98/gnZLTD9ENJf94+5m/vAOBgTLXrS5oopyY
NZ5J9Jc3mb8uXMKc76Fxbaa79qKbyY2Q8lf5aLC2iQ496MNFhDY/fho2xD8T
Ouprq3V49sXPTebtwBXQuEaAJc1YVPEFHVCjr4CWbDv/9qFvWXD/Y2kQm3ej
dfdttz3BAK3yZggtvSy7QWXvMQGqzmECNI8lkeKR99SVc3oG19EPZC6o3zIP
Y2HAuZgKwz6RoeTUIplJ3TCT9TW09KEP49t0dzpJP0JcBt8wmvZ1DJQg6bl1
RxGn8fuMv0NUILlcJnfyP0meCWSDP1v+vNVBGvJqCJRgvxN4zbur0OdMJ9/S
ArWc8JpOY8W0f/GTUX2r0liT5zH5uaY2LSEsOL5TWCbC2wTD1Ldow4ITftMa
RFHFh1Z5jW2lKKrFVV6mCvBYtGBtj1ZN1TdgSQslJvS1TFuiUIEpAFPy+LYF
aDVfbxl/XeW+2qq9uHrspzeUCfWU9umFUC2kLvJKHO2dnhwdHO2/Qw+QVe1P
2AHG0FCkqNi6deFCLUcPadNDnttUiT0K0Gg04lUfAWmB0iqqiwXZzYE0Ttjn
q1REog4ryM6/unXKFzeVV4EwFdwFK7hrSVp04GZBuBnBVa3R00xgGA7wcNUC
P91qNLUyTQLkRzB4SBJvBAFqogDNo8lM1wBRDfR4TBWQzLWqKuAigRV8V/Wo
JUUyh22VzFwk2hGqJ1XuBIP80GP/YVE17glMV+eT6dVVOhqgOBy4HlgoK3I0
HlDvLwKjjti3dunhNKwrP9x9JwHKmjq+F9IZegB4PJmhfPgeKosKqIyav3OA
ZmGgmQH68Xuj92+EPSr+98KeXqE7/hL1lqe3NCOLD89MabM8vaXpLMsQS0Wh
8rw7xUKY/bvLvXCmzOovnBADlo93BZGP9KqCuZ8fKkjE7P2sUU9APnv0aizi
lGZOGD6HY+ptuohrGn658MMiF7/KaK4aDQMWiiFnTgs++uncRa80GxSKtL5u
eUzR1yJ359+x7kv9rjw4jRlCnQFd9Wggztbb3b2f35+dfjp5h853zmJwauz6
3gk2VuHgCXA7WVHeLsiRzXrjbr0h71rsNopE3baTHXzu9Ovt6/Bk643tYL6O
PcEAD+lsuLFKXiMwKowWp/xUKeH/26+fuZfhGrdd4EPV5Zx2HuqTEKwa5rlx
EdxcFy4CfeJ9K1yJe93a2iLhq7L2XnrOWKAmHOiLqpY2WNc3LW6OCnIrFNrv
W9LrtdhlmpJY+24BTWFyBfzZumXVmvSI3KyzCron84aLyDX7g7Jk4HaSeePW
kRycXkX0KJ/nUCsjVEYnTiHHWheKLpV7LQIEGcJeOqCgtwHAikQA5z/Yrya7
4Z2HihlyPjpm4KdSck41Li03muiYnz6MYz6MCKV96PySfJH71KrRwcY9VLnA
gdySrZ+sxEn0RmmB6ZgAVdw5wgLkQE591X2ttZ4HHjZjQ3UKnWfSLOC55s2C
f+LUFdTkzl6zAX5I8C+/hBdLDYCfsy+z+6QH32l/n19oUX3ItV9dDfS1gA9J
94kfWJwyt3QhdB3JXEWysoxCSQS/kj9NZCCeKDF4GN2j25x5aJ4B56J3hn0i
refU4tL52hZax8HHlsWl0psbtnx6tSP+F0+BBx923xvzEhXU3FbfwXuXPDyK
VdZwQmdo+LbfSeMxPr7dpqNvAqKl48MZBFf/0zS5/nZGDvTAYxrqP0lwOCzi
JgaaUhgZKFau6LRLtOr+pNseSP62UmuubG0aZfbr9nACTr86pE3kKrvbgnni
pC+XXgacqzZWUWuysbrhcHAXN3A4bu2dfjg9czEEuprXvlEgYUjbX5IyEASB
oV11t9O5SEl7jvql0VwxrcqvA/WtI1nNYNq/ikcVcSWPsINU/lXcCp40WWVf
d4bqYU03rIm/K3WS5joE1G6sr1YadWvMrsLWYDgZbQeyHJ0TnTYcxb+6aQYX
qJ5H+oq+/iAMu0VR1FFthLUVreQhHvG1waLdRefFQ+1okY6LJUksnY7Gce+G
PHYCLbIDLKzZhOYauj0X20Jp1pQyGRJ0qNyhRmq7QAsjHgBThrz2fbOObWhu
ZEH43WV/lthRq3u6clvRMqBUqzWBZO+AyedoUOo3Nh9iqO6aRgmTk/TUDunb
NufBd00KdnHVHd9AUrv4o7yyDfxruzfNhcZMB1y7hsorogGcYto1VF4xDaAc
KXJOGdXa/g9z9cBqgu8AAA==
---942840952-1592286642-909231638=:27953--