[Image-SIG] Accessing Photoshop layers in PIL?

Hamish Lawson hamish_lawson@yahoo.co.uk
Sat, 20 Oct 2001 21:25:14 +0100 (BST)


--0-1132328652-1003609514=:43173
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Content-Disposition: inline

Fredrik Lundh wrote: 

> PIL 1.1.2 only loads the first channel.  I've attached a
> rewritten PsdImagePlugin which allows you to use the
> seek/tell methods to select which channel to load:
> 
>     im = Image.open("spam.psd")
> 
>     im.seek(2) # get third channel
>     layer3 = im.copy()
> 
> I've tested this code on exactly one sample; let me know
> if it works for your images.

Thanks for taking the trouble, Fredrik. Unfortunately I'm getting the
following error report (when I set Image.DEBUG to 2):

Traceback (most recent call last):
  File "C:\Python21\PIL\ImageFile.py", line 69, in __init__
    self._open()
  File "C:\Python21\PIL\PsdImagePlugin.py", line 145, in _open
    offset = offset + i16(bytecount[i:i+2])
  File "C:\Python21\PIL\PsdImagePlugin.py", line 39, in i16
    return ord(c[1]) + (ord(c[0])<<8)
IndexError: string index out of range
Traceback (most recent call last):
  File "C:\WINDOWS\Desktop\test_layers.py", line 5, in ?
    image = Image.open("test.psd")
  File "C:\Python21\PIL\Image.py", line 960, in open
    raise IOError, "cannot identify image file"
IOError: cannot identify image file

I've attached the (small) test.psd file I used. (This was actually
generated by Paint Shop Pro 7, as I don't actually have Photoshop, but
I did get the same error with other files that *have* been generated by
Photoshop - so I don't think it's because Paint Shop Pro might be
writing invalid PSD files.)

Regards,
Hamish Lawson


____________________________________________________________
Nokia Game is on again. 
Go to http://uk.yahoo.com/nokiagame/ and join the new
all media adventure before November 3rd.
--0-1132328652-1003609514=:43173
Content-Type: application/octet-stream; name="test.psd"
Content-Transfer-Encoding: base64
Content-Description: test.psd
Content-Disposition: attachment; filename="test.psd"

OEJQUwABAAAAAAAAAAMAAAAyAAAAMgAIAAMAAAAAAAADRjhCSU0EBAAAAAAA
FBwCAAACAAIcAjcACDIwMDExMDIwOEJJTQQMAAAAAALeAAAAAQAAADIAAAAy
AAAAmAAAHbAAAALBABgAAf/Y/+AAEEpGSUYAAQEAASwBLAAA/9sAQwAFAwQE
BAMFBAQEBQUFBgcMCAcHBwcPCwsJDBEPEhIRDxERExYcFxMUGhURERghGBod
HR8fHxMXIiQiHiQcHh8e/9sAQwEFBQUHBgcOCAgOHhQRFB4eHh4eHh4eHh4e
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4e/8AAEQgA
MgAyAwEiAAIRAQMRAf/EABwAAAICAwEBAAAAAAAAAAAAAAADBAcBAgYIBf/E
ACUQAAIBAgYCAwEBAAAAAAAAAAABAgMRBAUGEiExE1EUImEykf/EABsBAAID
AQEBAAAAAAAAAAAAAAYHAgQFAQAI/8QAIxEAAgIBBAICAwAAAAAAAAAAAAEC
AwQFERIhBjETMhQzNP/aAAwDAQACEQMRAD8AhGNyF1J2Eupz2GGPp07luaeT
qMKXsS00zKTbsuyNTndnQ6eyyWJmpSTKefV+HHlP0Tqz65w5C8ryapipKUk7
FmaQyv4tCMfRjIsnpwpx+iOoweHjSilawBatrs7YOpPoFdUyVdPoaocAOsAJ
fIzJ2PMVYizbuTqkCPKnyfTOlZdUIdmzquJbOfQ/Kqbq4iKZaej8vXii2it9
OwXz4pouLTEEqUbLiwD+cZba2h6K8HKmvi2dDhKCpwXA9ySMx/hEarJp8Ch7
m+yl9n2SN69gRd0gO/Gd4Hntq4ucEkMNZ9DnpslGSSYw7q4yi20b5VNQxsPb
Zb+lMRF0YL8KXg3CvGfplh6RzKK2Rbse8lwVkYqmvYCZ/NWbbdFp03eBpKF2
RsBi4TprkmwlGSvcTNkJVyaZUW6FeP8AAG3j7AhyZLkzzgD6ABxr2MqXoRU7
Pvafb3R5fYAbGT/KCGf9yx8llLxx+z/06PDt7FywATWpfsZlTNrv2wADOIH/
2QA4QklNA+0AAAAAABAAYAAAAAEAAQBgAAAAAQABOEJJTQQAAAAAAAACAAA4
QklNBAIAAAAAAAYAAAAAAAAAABjWAAAY0gADAAAAAAAAAAAAAAAyAAAAMgAD
AAAAAADKAAEAAADKAAIAAADKOEJJTW5vcm3/AAEAAAAAPAAAAAAAAAAoAAD/
/wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wpCYWNrZ3Jv
dW5kAAAAAAAAAAAAAAAAMgAAADIABP//AAAHrAAAAAABeAABAAABeAACAAAB
eDhCSU1ub3Jt/wAAAAAAADgAAAAAAAAAKAAA//8AAP//AAD//wAA//8AAP//
AAD//wAA//8AAP//AAD//wAA//8GTGF5ZXIyAAAAAAAAAAAUAAAAMgAAADIA
BP//AAAGBAAAAAABAgABAAABAgACAAABAjhCSU1ub3Jt/wAAAAAAADgAAAAA
AAAAKAAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8G
TGF5ZXIxAAABAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIA
AgACAAIAAgACAAIAAgACAAIAAs+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Y
z5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jP
mM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5jPmM+Yz5gAAQACAAIAAgACAAIAAgAC
AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIA
AgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAALPYc9h
z2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HP
Yc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9hz2HPYc9h
z2HPYc9hAAEAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIA
AgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgAC
AAIAAgACAAIAAgACAAIAAgACz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nP
mc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Z
z5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmc+Zz5nPmQABABMAEwATABMAEwAhACUA
JwAoACoALAAsACsAKgAqACsAKQAiACIAIgAiACIAIgAiACIAJwApACgAKgAs
AC0ALgAvAC0ALAAtACsAJgAmACYAJgAmACYAJgAmACYAJgAkACIAIt8ADw8f
Lz9PX29/j5+vv8/e6e7fAA8PHy8/T19vf4+fr7/P3unu3wAPDx8vP09fb3+P
n668y9nj6d8ADw8fLz9PXmx7i5uptMHP2d7fAA8MGys7S1lkcoKRn6y5wcvP
+gD/AgEFDPsPAQwF/wL0AA8FEiIyQlFfbHuJk5+stLy//AAFAgUMDxIb+x8F
GxIPDAUC9gAPAg8fLjxLWWRxf4qTn6mur/0ABgQKERsfIiv7LwYrIh8bEQoE
9wANAgwbKTRBT1xpc3+JkZv/n/4ABwUNFB8pLjI7+z8HOzIuKR8UDQX3AAwF
ER8sOURRX2lxe4KL/4//AAgFDxkhLDQ8Qkv7TwhLQjw0LCEZDwX4AAwCChQh
LzxJUVxkbHJ7/38LAAUPGiMvOUFLUVle/V8KXllRS0E5LyMaDwX4AAsEDRkj
LzxET1lfZGz/bwsEDRkjLzxET1lfZGz9bwtsZF9ZT0Q8LyMZDQT4AAoFDxoj
LzlBS1FZXv9fCwoUIS88SVFcZGxye/1/DHtybGRcUUk8LyEUCgL4AAgFDxkh
LDQ8Qkv+TwsRHyw5RFFfaXF7gov9jwyLgntxaV9RRDksHxEF9wAHBQ0UHyku
Mjv+PwsbKTRBT1xpc3+JkZv9nw2bkYl/c2lcT0E0KRsMAvcABgQKERsfIiv+
LwwfLjxLWWRxf4qTn6mu/68Orqmfk4p/cWRZSzwuHw8C9gAFAgUMDxIb/h8M
IjJCUV9se4mTn6y0vP+/Dry0rJ+TiXtsX1FCMiISBfQA/wIBBQz+DwwrO0tZ
ZHKCkZ+sucHL/88Oy8G5rJ+RgnJkWUs7KxsM7QAMLz9PXmx7i5uptMHP2f/e
DtnPwbSpm4t7bF5PPy8fD+0ADC8/T19vf4+frrzL2eP/6Q7j2cu8rp+Pf29f
Tz8vHw/tAAwvP09fb3+Pn6+/z97p/+4O6d7Pv6+fj39vX08/Lx8P7QAMLz9P
X29/j5+vv8/e6f/uDunez7+vn49/b19PPy8fD+0ADC8/T19vf4+frrzL2eP/
6Q7j2cu8rp+Pf29fTz8vHw/tAAwvP09ebHuLm6m0wc/Z/94O2c/BtKmbi3ts
Xk8/Lx8P7QAMKztLWWRygpGfrLnBy//PDsvBuayfkYJyZFlLOysbDO0ADCIy
QlFfbHuJk5+stLz/vxG8tKyfk4l8bWJZTT4vIBQPDAX/AvIADB8uPEtZZHF/
ipOfqa7/rxWuqZ+Ti4J4bWVeVEc6LCEfGxIPDAUC9AALGyk0QU9caXN/iZGb
/Z8Vm5GLhHx5cGZhWVBFOTEvKyIfGxEKBPUACxEfLDlEUV9pcXuCi/2PDIuE
gnx7eXBpZ2BWTEP/Pwc7Mi4pHxQNBfYACwoUIS88SVFcZGxye/1/AH7/ev94
/3QFbmxmXVZQ/08IS0I8NCwhGQ8F9wALBA0ZIy88RE9ZX2Rs/m8McnV0dXh2
dHVxcG5nYv9fCl5ZUUtBOS8jGg8F+AALAAUPGiMvOUFLUVle/18MYmducHF1
dHZ4dXR1cv5vC2xkX1lPRDwvIxkNBPkA/wAIBQ8ZISw0PEJL/08FUFZdZmxu
/3T/eP96AH79fwx7cmxkXFFJPC8hFAoC+gD+AAcFDRQfKS4yO/8/DENMVmBn
aXB5e3yChIv9jwyLgntxaV9RRDksHxEF+gD9ABUEChEbHyIrLzE5RVBZYWZw
eXyEi5Gb/Z8Nm5GJf3NpXE9BNCkbDAL7APwAFQIFDA8SGx8hLDpHVF5lbXiC
i5Ofqa7/rw6uqZ+Tin9xZFlLPC4fDwL7APoA/wIRBQwPFCAvPk1ZYm18iZOf
rLS8/78OvLSsn5OJe2xfUUIyIhIF+wD1AA4MGys7S1lkcoKRn6y5wcv/zw7L
wbmsn5GCcmRZSzsrGwz7APUADg8fLz9PXmx7i5uptMHP2f/eDtnPwbSpm4t7
bF5PPy8fD/sA9QAODx8vP09fb3+Pn668y9nj/+kO49nLvK6fj39vX08/Lx8P
+wD1AA4PHy8/T19vf4+fr7/P3un/7g7p3s+/r5+Pf29fTz8vHw/7APUADg8f
Lz9PX29/j5+vv8/e6f/uDunez7+vn49/b19PPy8fD/sA9QAODx8vP09fb3+P
n668y9nj/+kO49nLvK6fj39vX08/Lx8P+wD1AA4PHy8/T15se4ubqbTBz9n/
3g7Zz8G0qZuLe2xeTz8vHw/7APUADgwbKztLWWRygpGfrLnBy//PDsvBuayf
kYJyZFlLOysbDPsA9QAOBRIiMkJRX2x7iZOfrLS8/78OvLSsn5OJe2xfUUIy
IhIF+wD1AA4CDx8uPEtZZHF/ipOfqa7/rw6uqZ+Tin9xZFlLPC4fDwL7APUA
DQIMGyk0QU9caXN/iZGb/Z8Nm5GJf3NpXE9BNCkbDAL7APQADAURHyw5RFFf
aXF7gov9jwyLgntxaV9RRDksHxEF+gD0AAwCChQhLzxJUVxkbHJ7/X8Me3Js
ZFxRSTwvIRQKAvoAAAEABAAEAAQABAAEAAgACAAIAAgACAAIAAYABgAGAAYA
BgAGAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAGAAYABgAGAAYABgAG
AAYABgAGAAYABgAGAAYABgAGAAYABgAG3wDxKt8A8SrfAPEq3wDxKt8A8Sr6
APMq9ADxKvwA7yr2APEq/QDtKvcA8Sr+AOsq9wDyKv8A6Sr4APIqAADnKvgA
8yrlKvgA9CrkKvgA9SrkKvcA9irjKvcA9yrjKvYA+CrjKvQA+irjKu0A4yrt
AOMq7QDjKu0A4yrtAOMq7QDjKu0A4yrtAN4q8gDcKvQA2yr1ANoq9gDZKvcA
2Cr4AAAA2Cr5AP8A2Cr6AP4A2Sr6AP0A2Sr7APwA2ir7APoA3Cr7APUA4Sr7
APUA4Sr7APUA4Sr7APUA4Sr7APUA4Sr7APUA4Sr7APUA4Sr7APUA4Sr7APUA
4Sr7APUA4Sr7APUA4Sr7APQA4yr6APQA4yr6AAABAAQABAAEAAQABAAIAAgA
CAAIAAgACAAGAAYABgAGAAYABgAEAAQABAAEAAQABAAEAAQABAAEAAQABAAE
AAQABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYABt8A8Wvf
APFr3wDxa98A8WvfAPFr+gDza/QA8Wv8AO9r9gDxa/0A7Wv3APFr/gDra/cA
8mv/AOlr+ADyawAA52v4APNr5Wv4APRr5Gv4APVr5Gv3APZr42v3APdr42v2
APhr42v0APpr42vtAONr7QDja+0A42vtAONr7QDja+0A42vtAONr7QDea/IA
3Gv0ANtr9QDaa/YA2Wv3ANhr+AAAANhr+QD/ANhr+gD+ANlr+gD9ANlr+wD8
ANpr+wD6ANxr+wD1AOFr+wD1AOFr+wD1AOFr+wD1AOFr+wD1AOFr+wD1AOFr
+wD1AOFr+wD1AOFr+wD1AOFr+wD1AOFr+wD1AOFr+wD0AONr+gD0AONr+gAA
AQAEAAQABAAEAAQACAAIAAgACAAIAAgABgAGAAYABgAGAAYABAAEAAQABAAE
AAQABAAEAAQABAAEAAQABAAEAAYABgAGAAYABgAGAAYABgAGAAYABgAGAAYA
BgAGAAYABgAGAAbfAPH+3wDx/t8A8f7fAPH+3wDx/voA8/70APH+/ADv/vYA
8f79AO3+9wDx/v4A6/73APL+/wDp/vgA8v4AAOf++ADz/uX++AD0/uT++AD1
/uT+9wD2/uP+9wD3/uP+9gD4/uP+9AD6/uP+7QDj/u0A4/7tAOP+7QDj/u0A
4/7tAOP+7QDj/u0A3v7yANz+9ADb/vUA2v72ANn+9wDY/vgAAADY/vkA/wDY
/voA/gDZ/voA/QDZ/vsA/ADa/vsA+gDc/vsA9QDh/vsA9QDh/vsA9QDh/vsA
9QDh/vsA9QDh/vsA9QDh/vsA9QDh/vsA9QDh/vsA9QDh/vsA9QDh/vsA9QDh
/vsA9ADj/voA9ADj/voAAAEADwAQABIAFAAVABYAFwAYABkAGgAaABsAHQAd
AB4AIAAdAB4AHwAfACAAHwAgACEAHwAfACEAHwAgACAAHwAgAB0AHwAfACAA
HgAgAB8AHwAdAB4AHgAfAB8AHwAfACAAHgAf7wALBQ0dP2uNqL/R3+rx8AAM
BQ8ZJUZxkq3E1eLs8/IADgIHFCUwP1d9nbTK2OTt9PQAEAIFEBspOkhXaYmm
vc/c5/D19QARBAoTJDE/UmBygZuyx9fh6/L29gASBQ0UIzdHVWdyhJaqv9Le
5+/0+PcAEwUPGSM2SVtpeYaWpLbJ2eTs8/b5+AAUBQ8aIzFFWGt6ipakscLR
3ujv9fj6+QAVBA0ZIy9AUWZ6iJWjsb3M2ePs8vb5/PoAFgIKFiMzRVxsgI+e
qLK+ydXh6vH1+fv8+gAWBxYqOEdYb4OToa+6w8zV3+ju9Pj7/P37ABcGFipA
TVptgpSisb3H0Nfe5u3y9/r8/f78ABUFDyI6UF9uf5Ghsb3H0trf5Orw9Pj7
//0A/v0AFwUPHjFIXG5+jqCvvcfR2+Hm6u/09vn7/f/+/gAYBQ8aLUVabYCO
mqu6x9Lb4+jt8fT3+Pn7/P/9/wATBA0ZIztUZnqMmqa3xdHa4uju8/X++AH5
+//8AP0UAAIKFCEvR19xhJSjr8DN19/n7fL2/PkB+vv//BYABREfLDlPZnyP
nq68ydTc5Ozx9vn6+//6//n++hQCDBspNEFZcYebrLrI09zj6u/z9/r/+wH6
+f74//kUAg8fLjxLZnyTqbjE0tzj6u3x9ff5//oB+fj+9//4EwUSIjJCVHCI
oLTCztri6O3x8/T2//cD+Pf19P71APYQDBsrO09jepGpu8vX4eft8vT/9f/2
//UB9PP98gDzEg8fL0NZboKbscPS3Obu8/X29/b/9QT08/Lx8P7vAPEODx8y
SWB1i6O3ydbh6vL2//n/+AP29PLx/+8A7f7sAO0ODyE3TmZ8kqi7zNjj7PT5
/voJ+PXz8O7t7Ovq6f/qDg8jPVZtg5Wqvs7a5e71+f/7B/r49vLv7Ovo/uf/
6A4RKkVec4icrsDP3Ofv9fn/+wf6+PXy7uro5v/kAuLk5hgRLEhieI2fr8DR
3ubv9Pj5+vn39PDs6ebj/uEB4OMZEStHYXqOnq/C0d3o7/P3+Pn49vTx7Ofi
4N//3gHd3w4RK0dheo6gssXT3+fv8/f/+Qj49vTx7Ojk4d//3f/eDhEsSGJ4
j6W3x9bg5+/1+P75C/f08e3p5uPi4OHi4Q4RKkVedY6lucnX4erw9vn/+wj6
+Pby7ern5eP+4gDjDg8jPVhzjaO4ydbg6vH2+v77B/r28+7r6efl/eQODyE3
UnCMpLjH1eHp8Pb5/vsL+ffz7uzq6ejm5ebnFw8fNFFxi6G2x9Xg6O/1+fr7
+vn29PDu7f/r/ukA6g4PHzFObYies8TS3eXt8/f++QP49vTy/+8A7f7sAevs
EQwbL0lmgpervs3Z4+vx9ff4+f/3A/Xz8e/87gDvEAUSLEhifJSnucjU3unv
9Pb3/vgD9fTz8v/wAe/w//EVAg8sR2B3jqGyxNDc5+7y9vj5+vj39f/0APP/
8v7zEAIMKENZcIaarLzK2OPs8vb5//sC+vj3/fUB9PX/9BAABR86U2p+kqW1
wtLf6fD2+f77APn/9/z2AfX2EQACGDFKYniNna2+zdrm7vT4+v/7Afn4//f8
+AD3/wAQEypDWW+Flae7ytfi6/H2+fr/+QL49/j9+v/4/wAQDyM7U2d8jZ2y
w9Hc5Ozy9Pb99wH5+v/7APr/+f8AEAwbL0ddbn+PpbfI1N7k6+7x//MC9fb4
/fsB+vn/ABYFEiI2TF9yhJmru8nU3OLn6+7w8vX3+f77Afn4/wAbAg8fLj9S
ZHSJnrC9ydPZ3uTp7O7y9ff5+vj39v8AFwIMGyk0QlJkeo2isbzIz9Pa4eXn
7O/y9P/1AfPx/gAaBREfLDlEUmh8j6Cst7/FzNTa3uTo7O3u7ezr/gAWAgoU
IS88SVRoeYmWpa+1vcfO09vf4+T/5QHj4QABAAQABAAEAAQABAAEAAQABAAE
AAQABAAEAAQABAAEAAQABAAEAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIA
AgACAAIAAgACAAIAAgACAAIABAAEAAQABAAEAAQABAAEAAQABP4A5q/+AOav
/wDlr/8A5a//AOWv/wDlr/8A5a//AOWv/wDlr/8A5a//AOWv/wDlr/8A5a//
AOWv/wDlr/8A5a8AAOSvAADkr+Ov46/jr+Ov46/jr+Ov46/jr+Ov46/jr+Ov
46/jr+Ov46/jr+Ov46/jr+OvAADkrwAA5K//AOWv/wDlr/8A5a//AOWv/wDl
r/8A5a/+AOav/gDmrwABAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAE
AAQABAAEAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIA
AgACAAIABAAEAAQABAAEAAQABAAEAAQABP4A5vf+AOb3/wDl9/8A5ff/AOX3
/wDl9/8A5ff/AOX3/wDl9/8A5ff/AOX3/wDl9/8A5ff/AOX3/wDl9/8A5fcA
AOT3AADk9+P34/fj9+P34/fj9+P34/fj9+P34/fj9+P34/fj9+P34/fj9+P3
4/fj9+P3AADk9wAA5Pf/AOX3/wDl9/8A5ff/AOX3/wDl9/8A5ff+AOb3/gDm
9wABAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAIAAgAC
AAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIAAgACAAIABAAEAAQA
BAAEAAQABAAEAAQABP4A5oP+AOaD/wDlg/8A5YP/AOWD/wDlg/8A5YP/AOWD
/wDlg/8A5YP/AOWD/wDlg/8A5YP/AOWD/wDlg/8A5YMAAOSDAADkg+OD44Pj
g+OD44Pjg+OD44Pjg+OD44Pjg+OD44Pjg+OD44Pjg+OD44Pjg+ODAADkgwAA
5IP/AOWD/wDlg/8A5YP/AOWD/wDlg/8A5YP+AOaD/gDmgwABABMAEwATABQA
FQAkACkALAAuADEALQAwADAALgAtACwALQAwAC4ALQAoACcAJgAnACsAKwAt
ACgAKAApACkAKQApACkAJwAmACMAHwAjAB4AHgAeACMAJgAnACgAKAAlACMA
JwATABMAEwAUABUAGgAbACAAIQAmACoAKQArACwALAAuACsALwAvADEAMQAx
ADEALwAxACsAMgAtAC0ALAAtACsAKAApACsAKAAoACcAKgAlACYAKQAoACkA
KQAoACgAKAAoACcAEwATABMAEwAUACMAKQArAC4AMAAyADIAMAAuACwALAAt
ADAALQAsACgAJwAlACcAKwArAC0AKQAoACYAKQAtACgAKQAoACoAKAAjACMA
HgAeAB4AIwAlACYAJwAoACQAKAAn35gPkouEfXdycHR+ho6Vm6ClqN+YD5KL
hH55dXJ2gIiPl52hpqnfmA+Si4WBfnt6fISMkpmeo6aq35gEk42JhYP/gQiC
iZCWnKCkqKrgmAaZlZGNi4qJ/4sHkJWboKOnqav6mP+XAZaT+5IBk5b/l/aY
BJmamZeU/5EKj5CSlpqgo6apq6z8mAWXlpOSkIz7iwWMkJKTlpf5mAaZmpuc
mpiW/5UJlpeanqOmqKqsrf2YBpaUkYyLiYX7hAaFiYuMkZSW+5gDmZqbnP+d
AJv+mgmbnJ+ipaiqq6yt/pgHlpKPi4aEgn/7fQd/goSGi4+Slv2YB5mam5ye
n6Cf/p4Jn6Cipaepq6ytrv+YCJaSjYqFgn58ePt2CHh8foKFio2Slv+YBpma
m52eoKL+o/+iB6Okpaiqq6yt/64KmJaSjYmEf3x4dXL7bxJydXh8f4SJjZKW
mZqcnZ6goqSl/KYFp6iqq6yt/q4LlpKNiYR+e3Zyb21p/WgUaW1vcnZ7foSJ
jZOYnJ6foKKkpaeo/KkDqqusrf6uAK8LlI+KhH55dXBtaWdj/WEVY2dpbXB1
eX6Ei5GYnJ+hoqOlp6ipqv2r/6wArf+u/q8LkYuFf3t1b2tnY2Bc/VoVXGBj
Z2tvdXuAh4+XnaCio6WmqKmqq/2s/q3/rv6vC4yGgnx2cGtmYV1ZVf1TFFVZ
XWFma3B3f4eNlZ2hpKWmp6mqq/+s/636rv+vC4uEfnhybWdhXFlTT/1NE09T
WVxhZ251fYWOl56ipaanqaqr/6z/rfqu/q8MiYJ8dW9pY11ZU05KR/9GFUdK
TlNZXWRsdH2Fj5eeo6WnqKmqq6z/rfmu/q8MhX94cm1nYFlTTkhFQP8/FEBF
SE5TWWJsdX2Ejpado6aoqaqrrP+t/q79r/+u/q8MhH12b2ljXFVPSkU/Ov84
Ejo/RUpPVmBrdHyFjpeepKipqqv/rACt/q79r/uuDIR9dm9oYVpTTUdAOjb/
MxE2OkBHTVRfanV+h5GZoKWpqqv/rP+t/a7/r/quDIR9dm9oYVpTTUY/ODP/
MRAzOD9GTVVga3aAiZOboqapq/+s/63zrgyEfXZvaGFaU01GPzgz/zERMzg/
Rk1XY254g4yVnKOnqqus/63yrgyEfXZvaGFaU01HQDo2/zMQNjpAR01YZG97
hY+WnqSoq6z/rfGuDIR9dm9pY1xVT0pFPzr/OBE6P0VKT1pmcn2HkJifpamr
rK31rvytDIV/eHJtZ2BZU05IRUD/PxFARUhOU15qd4GKk5qhpqmrrK3/rv6v
/a75rQyJgnx1b2ljXVlTTkpH/0YRR0pOU1libXqEjJSaoaapq6yt/67+r/2u
+a0Li4R+eHJtZ2FcWVNP/U0QT1NZXGVwfIWMk5qgpaiqrK3/rv6v/q77rQCs
/60LjIaCfHZwa2ZhXVlV/VMPVVlcX2hxfIaNlJmeo6epq/+t+q7+rfusC5GL
hX97dW9rZ2NgXP1aEVxfYGNocXyFjJOYnaOmqKusrfqu/636rAuUj4qEfnl1
cG1pZ2P9YQBi/2MOZGlyeoSKkZidoqWoqqyt+q7+rfusC5aSjYmEfnt2cm9t
af5oAGf+Zg5kanN7g4mQl52hpaepq636rv6t+6wKmJaSjYmEf3x4dXL+bxNu
bGloZ2ZrcXiBh4+WnKCkp6qrrfqu/a38rP+YCJaSjYqFgn58eP92A3VzcGz/
aQ5mam52fYWNk5meoqapq637rvet/pgHlpKPi4aEgn//fQV7d3NvbGv/aA1t
c3mCipGXnKGlqKusrfyu9639mA6WlJGMi4mFhIN/enVybmz/aA1sb3Z/ho2V
m6Ckp6qsrf2u9q38mByXlpOSkIyLioV/eXRvbGloamxzeoKKkpieoqapq/6t
AK71rfqY/5cZlpOSj4qEfXdybmlnZmltdX2FjJSboKSoqqzzrQCu9ZgXk4yF
f3hybWdiX2NpcHmAiJCXnaKnqaus+q36rvWYF5KLhH12b2ljXVpgZm1ze4OL
lJqgpamqrP+tAK79rfqu9ZgYkouEfXZvaGFbV1xiZ212foePl56kqKqsrfSu
9ZgYkouEfXZvaGFaVVleY2lweYOLk5uip6qsrfSu9ZgYkouEfXZvaGFaVFZa
YGZtd3+HkZmgpamrrfSu9ZgZkouEfXZvaGFaU1RYXWNrdHuFkJifpKiqrK37
rv2v/671mAiSi4R9dm9pY1z/VQ5YXmNpcnqCjZadoqWpq6z+rf6u/a//rvWY
GZOMhX94cm1nYFlXWFtjaG93foqSmp+kp6mr/6z/rf+u/K8ArvWYGpaQiYJ8
dW9pY11bWVtfZm11fYePlp2hpaepqv+sAK3+rv6v/671mAqXkouEfnhybWdh
Xf9eEGBlbXN6g4yUmp6jpaepq6yt/a4Ar/6u9Zgdl5OMhoJ8dnBrZmJhYmNm
a3F3gImRl5ygo6Woqqus/637rvSYHZaRi4V/e3Vva2dkZWZpbXF1foaOlJmd
oKOlqKqrrPqt9JgJl5SPioR+eXVwbf9qEGlrb3N3fISKkJWbnqGkp6mq/qz+
rf+s32H/Yv9jC2dsdoqjt8bT3eXr799h/2INY2Ztc3qOp7nJ1uDn7PDfYQ9i
Y2dveYCJl67Azdnh6O3x4GEQYmVrc3uFjpeitMXS3OTq7/HhYRFjZ2x3f4iT
m6avvszX4ebs8PL2Yfti82ESZGltdoKLlJ+msbvH097k6u7x8/lh9WL3YRNk
anB2gY2XoKmxusPN2OHo7PDy9Pth/WL5Y/1i+mEUZGpwdn6KlaGqs7rDytTd
5Oru8fP0/WH+YvNj/mL9YRVjaXB2fYeRnamxucLK0drh5+zw8vT1/mH+Yv5j
92T+Y/5i/2EUYmdudn+Kl6Gstb7EytHY3+br7/H0//X/Yf5i/2P9ZPtl/WT/
Y/5iFGFlbnqCi5WirrfAyM/U2d/l6u3x8//1APYAYf5i/2P+ZPdl/mT/Y/9i
FWZueoeOlqGtuMDJ0Nbc4OTo7fDy9PX/9gBh/2L/Y/9k/WX7Zv1l/2T/YxVl
a3WDkJmirLbAydDW3eHk5+vu8fP1/vb/Yv9j/2T+Zf5m/Wf+Zv5l/2QWZmx0
f4uXoqu1v8jQ1tzi5ejr7vHy9PX+9gBi/2P/ZP9l/mb5Z/5m/2UUZ21yfYqW
oay1vMbO1t3i5+ns7/Hy//P/9f/2AGL/Y/9k/2X/Zv9n+2j/Z/9mFGVna3J3
hZOeqbO8w83V3OHm6e3w8f3z/vUA9gFiY/9k/2X/Zv9n+Wj/ZxRmZ2twd3+M
mqSvuMHI0trf5Ons7/L88wD0/vX/Y/9k/2UAZv9n/2j7af9o/2cVaW93fYWR
nqq1vsfQ197i5+zv8vP09f/0//P+9P9jAGT/Zf9mAGf/aP9p/Wr/af5oE211
fIOJl6WxvcbO193i5+vu8PL0//UA9Pvz/2MAZP9lAGb/Z/9oAGn7agBp/mgT
b3h/h4+eq7jFzdTd4ufr7O/x8vP/9P/z/vL/8/9jAGT/ZQBm/2f/aABp+2oA
af9oEmpxeYKLlKSyv8vT2uHm6ezv8PH+8gHz8vzxAPL/YwBk/2UAZv9n/2gA
aftqAGn/aA9udn6Hkp2qt8XP2N/l6ezv/vH/8v7xAPD97wDw/2MAZP9lAGb/
Z/9oAGn7agBp/2gPb3mBi5ijrr3J1N3i6O3w8f7y/vEA8P/v/e4A7/9jAGT/
Zf9mAGf/aP9p/Wr/af9oDm94go+cp7TCzdff5evv8v3zAfLx/+//7vzs/2P/
ZP9lAGb/Z/9o+2n/aA9nb3mEkp+ruMXP2eDn7PHz/vQE8/Hw7u3/7P/rAOr/
6wFiY/9k/2X/Zv9n+Wj/Zw5veoiWo7C5xtHa4ejt8fP/9Qb08/Lv7uzr++kA
Yv9j/2T/Zf9m/2f7aP9nD2Zwfo2bp7K+yNLb4+nu8fP/9Qf08/Hv7evp6P/n
Aubn6ABi/2P/ZP9l/mb5Z/9mDXB/jp2qtcDJ0tzk6O7x//MI9PPy8e7s6ujn
/eUA5/9i/2P/ZP5l/mb9Z/1mDnB+jp2rtr/J1Nzj6u7w8v7zBvLx7+zp5uX+
5AHj5ABh/2L/Y/9k/WX4Zg9wfo6dq7bBy9be5enu8PL0//MH8vHv7Onn5eT/
4//kAGH+Yv9j/mT6Zf1mDnB/j52qt8PO1+Dl6e7x8//0CPPy8e/s6ujn5v/l
Aebl/2H+Yv9j/WT5ZQ9mcH6Nm6m3w8/Y4Obr7vL0//UI9PPy7+zr6ejn/uYA
5/5h/mL+Y/tk/WUPZm96iZintsPP2ODl6+/y9P71B/Ty8O3r6uno/ef9Yf5i
+2P+ZP1lDm95hZWmtsTP19/m6u7y9P71B/Ty8O3s6+rp/ugA6fth/WL9Y/5k
/mUNb3iElKe1ws7X3+Xq7vH/9AD1//QE8vHu7ez/6/7qAOv5Yfxi/2P/ZP5l
Dm94gpOltMHM1t7k6O3w8v70A/Py8e//7v3sAevs9mH+Yv9j/2T/ZRFtdYKQ
obG9yNPb4ufs7/Hy8/T/8gPx8O/u/O0A7vRhAGL/Y/9k/2UOaXGAkJ+uu8bQ
2N/k6+7x//L+8//xAfDv/e7/7/Vh/2L/YwBk/2URZmdvgZCeq7nDzNbd5Ort
8PLz//QB8/L+8QDw/+/+8PVh/2L/YwBk/2URZmhufo6bqLS/ydLa4efs8PL0
//UC9PPy+fH1Yf9i/2MAZP9lEWZnanmJl6Wwu8XO1d7l6+/y9P71APT68gHx
8vVh/2L/YwBk/2USZmdodYOSoKy4wcrT2+Lp7fHz9P/1AfTz//L88wDy9WH/
Yv9jAGT/ZQBm/2cOc4COm6e0vMbR2eHn7O/y/fQC8/Lz/fT/8/Vh/2L/YwBk
/2X/ZhBncHyKl6OvuMHM1t3j6Ozw8fzyAfP0//UA9P/z9GEAYv9j/2T/ZRJm
Z253gpGdprC5xc/Y3+To7O3v//AC8fLz/fUB9PP0Yf9iAGP/ZP9l/2YWanF7
hpOdqLK+yNHZ3+Pm6evt7u/x8vP+9f/z9GH/Yv9j/2T/ZRpmZ295gouWoKm1
wMrR2N7h5Ofq7O3v8fLz9PP/8vNhAGL/Y/9k/2UXZmdtdn6EjJWfrLfCy9HY
3N7i5ujp7O7v/vEB8O/zYf9i/2P/ZP5lFGlweICHjZWhrbfBx87S1tne4eTn
6f/sAO3/7ADr8mH/Yv9j/2T/ZRRma3F5gYiQlqGqs7vDyczR1trd4uT/5//o
Aefl35kPn6Wssre8vbmxqaKclpGMid+ZD5+lrLG1ubu3r6egmpSQi4jfmQ+f
pauusLS1squknpeTjouI35kPnqOoqqytrq2noJqVkI2Jh+CZEJicn6Olpqel
pKCblpGOi4iH+pn/mgGbnvufAZ6b/5r2mRGYl5ianJ+goaCem5aRjouJh4b8
mQWam56foKT7pQWkoJ+em5r5mQWYl5aVl5n/mwqcmpmWko6LiYeGhf2ZBpud
oKSlpqr7rAaqpqWkoJ2b+5kGmJeWlZSVlv6XB5aVko+MioiG/4X+mQebnqGl
qautsPuyB7Ctq6mloZ6b/ZkHmJeWlZOSkZL+kwmSkY+NioiHhoWE/5kIm5+j
pqqusbO3+7gIt7Oxrqqmo5+b/5kGmJeWlZORkP6O/o8GjoyKiIeGhf+EC5mb
n6OnrLCzt7m8vv2/Er68ubezsKyno5+bmJeVlJORj47/jAGLjP6LBImIh4aF
/oQLm56jp6yxtLi8v8HE/cUUxMG/vLi0sayno52ZlZOSkZCOjIuK/YkBiIf/
hgCF/4T/gwudoaassba5vcHExsr9yxXKxsTBvbm2sayln5qVkpGQjoyLiomI
/Yf/hgCF/4T+gwugpaqwtLm/w8bKzND90hXQzMrGw7+5tK+ooZqUkZCOjYuK
iYiH/ob+hf6E/oMLpKmus7i9w8fLz9LW/dgV1tLPy8fDvbewqqKblJCOjYyK
iYiHhv6F+4T+gwulq7G3vMHGy9DT2Nz93hPc2NPQy8bAubKropqUj42Mi4mI
h/+GAIX5hP6DDKats7m/xMrP09jd4OP/5RPj4N3Y08/JwbqyqqGZk4+Mi4qI
h/+G/4X5hP6DDKqwt7zBxszS2N3i5en/6xTp5eLd2NLLwrmyq6KalI+LiomI
h4b/hf6E/YP/hP6DDKyyuL7EytDW3ODl6+//8RPv6+Xg3NXMwrqyqqKak46K
iYiHhv+F/oT9g/uEDKyyuL/Fy9LY3uPp7/P/9RLz7+nj3tfNwrmxqJ+YkYyJ
iIeG/oX9hP+D+oQMrLK4v8XL0tje5evx9f/3EPXx6+Xe1szBuK+nnZaQi4iH
/4b/hfOEDKyyuL/Fy9LY3uXr8fX/9w/18evl3tTKv7aso5yVjoqH/4b/hfKE
DKyyuL/Fy9LY3uPp7/P/9RHz7+nj3tPIvrSqoZqTjYqHhoXwhAyssri+xMrQ
1tzg5evv//ER7+vl4NzRx7yxqKCYko2Jh4aF9YT8hQyqsLe8wcbM0tjd4uXp
/+sP6eXi3djNw7iupZ6WkIyIhv+F/4T+g/yE+oUMpq2zub/Eys/T2N3g4//l
EePg3djTy8C0q6Scl5GMiYeGhf+E/oP9hPmFC6Wrsbe8wcbL0NPY3P3eENzY
09DHvbKqo52WkY2KiIaF/4T+g/2E/IUAhv+FC6SprrO4vcPHy8/S1v3YENbS
0M3FvbKpo5yXko6KiIeF+YT9hf2GAIULoKWqsLS5v8PGyszQ/dIR0M3MysW9
s6uknpiTj4uJh4aF+oT/hfqGC52hpqyxtrm9wcTGyvzL/skNxLy0rKWemZSP
jIqIhoX6hP6F+4YLm56jp6yxtLi8v8HE/sUAxv7HDsnDu7SspqCZlJCNioiG
hfqE/YX8hguZm5+jp6yws7e5vL7/vwHAwv/FD8bHwr22rqihm5WRjYuIh4X6
hPyF/oYAhf+ZCJufo6aqrrGzt/+4FLm7vsHExcfDv7ixqaOdl5KPjImHhfqE
+IX+mQebnqGlqautsP+yBbS3u7/Cw//FC8G7taymn5mUkIyJh/+F/IT3hf2Z
BpudoKSlpqr/rAWwtLm8v8H/xQ3BvrivqaKblpGNioiGhf2E9oX8mRyam56f
oKSlpqqwtbq+wcTFw8G7tK2mnpiTj4yJh/+F/oT9hQCE+4X6mf+aCpuen6Gm
rLK3vMDE/8cMxMC5saqjnJaRjYqHhv+FAIT7hfuE9ZkVnqSqsLe8wcbLzMnE
vbWup6CZlI+LiP+G/oUAhP6F+oT1mRefpayyuL7Eys/RzcbAurOspJyWkIyJ
h4b/hf6EAIX5hPWZGJ+lrLK4v8XL0dTQysXAuLCooJmTjoqHhoX0hPWZGJ+l
rLK4v8XL0tbTz8nDvbWspJ2Vj4uIhoX0hPWZGJ+lrLK4v8XL0tfV0s3Hv7ew
qJ+XkYyJhoX0hPWZGZ+lrLK4v8XL0tjX087JwrqyqqCYko2Kh4aF+4T9g/+E
9ZkZn6Wssri+xMrQ1tfTzsnDvLStopqUj4yJh4b/hf2E/YP/hPWZGp6kqrC3
vMHGzNLU09DKxL63sKaelpGNi4iHhv6F/4T8gwCE9Zkbm6CmrbO5v8TKz9HS
0czGwLmxqKGalJCNiomHhv+F/oT+g/+E9ZkKmp+lq7G3vMHGy8//zhDMyMG6
tayjnJeSj4yKiYeGhf2EAIP+hPWZHpqepKmus7i9w8fKy8rJx8K9t66mn5mV
kY6MioiHhoX6hPSZCpugpaqwtLm/w8bJ/8cQxMC9ubGpopyYlJGOjIqIh4b+
hQCE/oX0mQmanaGmrLG2ub3B/8MQxMK+urazq6Wgm5aTkI6LiYf/hvyFAIY=


--0-1132328652-1003609514=:43173--