Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » B3 » Command / Query / Advice (r10662)
Command / Query / Advice (r10662) [message #487213] Tue, 22 September 2009 13:19 Go to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040406000203020709080500
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi,
attached is the new model that describes commands (import a.k.a query,
and invoke). The model contains the description for advice.

This version is very much simplified as it uses a generic mechanism for
advice. Each advice is simply an advice to set a value of a particular
type (string, boolean, version, etc) with an escape mechanism to
instantiate any type.

The applicability of the advice is controlled via a PointCut (a
selection of resources where the advice should be applied), and a
featurePath in each advice that is a path relative to the selection made
by the pointcut to the particular item(s) that should receive the advice.

This should enable tooling to present/edit advice in a fashion similar
to CSS. Perhaps something like this:

request[name=org.foo.*] {
source: required;
mutable: required;
revision: r10662;
}

Another nice effect is that it is possible to describe an invocation of
an action on a build unit that is not currently present in the current
environment.

All that is required is that the invocation command references a
resolver that is configured to resolve against other "repos" than the
workspace and target platform.


Regards
- henrik

--------------040406000203020709080500
Content-Type: application/pdf;
name="Command.pdf"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="Command.pdf"

JVBERi0xLjQKJaqrrK0KNCAwIG9iago8PCAvVHlwZSAvSW5mbwovUHJvZHVj ZXIgPEZFRkYw
MDQxMDA3MDAwNjEwMDYzMDA2ODAwNjUwMDIwMDA0NjAwNEYwMDUwMDAzQTAw MjAwMDUzMDA1
NjAwNDcwMDIwMDA3NDAwNkYwMDIwMDA1MDAwNDQwMDQ2MDAyMDAwNTQwMDcy MDA2MTAwNkUw
MDczMDA2MzAwNkYwMDY0MDA2NTAwNzI+Ci9DcmVhdGlvbkRhdGUgPEZFRkYw MDQ0MDAzQTAw
MzIwMDMwMDAzMDAwMzkwMDMwMDAzOTAwMzIwMDMyMDAzMTAwMzUwMDMwMDAz OTAwMzUwMDM2
MDAyQjAwMzAwMDMyMDAyNzAwMzAwMDMwMDAyNz4KPj4KZW5kb2JqCjYgMCBv YmoKPDwvVHlw
ZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMQovTGVuZ3Ro IDcgMCBSCi9X
aWR0aCAxNDkKL0hlaWdodCA3OQovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9E
ZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0K eJztwTEBAAAA
wqBs61/KGh5AAQAAAAAAAAAAAABwblzYrWEKZW5kc3RyZWFtCmVuZG9iago3 IDAgb2JqCjM1
CmVuZG9iago4IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0lt YWdlCi9OYW1l
IC9JbTIKL0xlbmd0aCA5IDAgUgovV2lkdGggMTQ5Ci9IZWlnaHQgNzkKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1 IDI1NSAyNTUg
MjU1IDI1NV0KL1NNYXNrIDYgMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUg XQo+PgpzdHJl
YW0KeJztwkENAAAMAyHpe57t+WggdKWqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqq
qqo6/QGeNFJpCmVuZHN0cmVhbQplbmRvYmoKOSAwIG9iago2MAplbmRvYmoK MTAgMCBvYmoK
PDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMwov TGVuZ3RoIDEx
IDAgUgovV2lkdGggMTQ5Ci9IZWlnaHQgNzkKL0JpdHNQZXJDb21wb25lbnQg OAovQ29sb3JT
cGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4K c3RyZWFtCnic
7cExAQAAAMKgbOtfyhoeQAEAAAAAAAAAAAAAcG5c2K1hCmVuZHN0cmVhbQpl bmRvYmoKMTEg
MCBvYmoKMzUKZW5kb2JqCjEyIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1 YnR5cGUgL0lt
YWdlCi9OYW1lIC9JbTQKL0xlbmd0aCAxMyAwIFIKL1dpZHRoIDE0OQovSGVp Z2h0IDc5Ci9C
aXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFz ayBbMjU1IDI1
NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAxMCAwIFIKL0ZpbHRlciBbIC9G bGF0ZURlY29k
ZSBdCj4+CnN0cmVhbQp4nO3CQQ0AAAwDIel7nu35aCB0paqqqqqqqqqqqqqq qqqqqqqqqqqq
qqqqqqqqqqqqqqqqqjr9AZ40UmkKZW5kc3RyZWFtCmVuZG9iagoxMyAwIG9i ago2MAplbmRv
YmoKMTQgMCBvYmoKPDwgCi9GdW5jdGlvblR5cGUgMiAKL0RvbWFpbiBbIDAg MSBdIAovQzAg
WyAxIDEgMC44MTk2MCBdIAovQzEgWyAxIDEgMSBdIAovTiAxIAo+PiAKZW5k b2JqCjE1IDAg
b2JqCjw8IAovRnVuY3Rpb25UeXBlIDMgCi9Eb21haW4gWyAwIDEgXSAKL0Z1 bmN0aW9ucyBb
IDE0IDAgUiBdIAovRW5jb2RlIFsgMCAxIF0gCi9Cb3VuZHMgWyBdIAo+PiAK ZW5kb2JqCjE2
IDAgb2JqCjw8IAovU2hhZGluZ1R5cGUgMiAKL0NvbG9yU3BhY2UgL0Rldmlj ZVJHQiAKL0Nv
b3JkcyBbIDE2MjEgMzExIDE2MjEgMzkwIF0gCi9Eb21haW4gWyAwIDEgXSAK L0V4dGVuZCBb
IHRydWUgdHJ1ZSBdIAovRnVuY3Rpb24gMTUgMCBSIAo+PiAKZW5kb2JqCjE3 IDAgb2JqCjw8
IAovVHlwZSAvUGF0dGVybiAKL1BhdHRlcm5UeXBlIDIgCi9TaGFkaW5nIDE2 IDAgUiAKPj4g
CgplbmRvYmoKMTggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAv SW1hZ2UKL05h
bWUgL0ltNQovTGVuZ3RoIDE5IDAgUgovV2lkdGggMTYKL0hlaWdodCAxNgov Qml0c1BlckNv
bXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAv RmxhdGVEZWNv
ZGUgXQo+PgpzdHJlYW0KeJxjYCAM/kMAGhcm8P8/igAy/R9B/6cmH9l8dPsx 3IfhfhQAAMZ3
foIKZW5kc3RyZWFtCmVuZG9iagoxOSAwIG9iago0MQplbmRvYmoKMjAgMCBv YmoKPDwvVHlw
ZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNgovTGVuZ3Ro IDIxIDAgUgov
V2lkdGggMTYKL0hlaWdodCAxNgovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9E
ZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1NSAyNTUgMjU1XQovU01h c2sgMTggMCBS
Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJxjYKAfOHPs yfSOY0UJGwvi
NhTGbwCygSK4FC+cegaorDZnR3/DIQgCsoEiQHGsilNDVvY1HFw68/y6pVcg CMgGigDF0bTc
uf4m0X95Z9X+FXMuIItfv/gSKNJdux8oC1QDFwe6szZne3PJHiCaN/E0RPDo ngcQESBqKto5
p/8kXH1x4sbMyDX5sesgCCK4c8MtCDc7eg0QAdXA1ScFLI/xXBDrtTDSfR4Q QQTXLbkI4QLF
o9znJ/ovQzY/wX9ZrPfCKI/5QARVv/QSkA1RH+O1ANl8oNtSg1ckBSxN8F8U 57cQIrhx+RUg
GygCRClByxdNQwTRo3sfQp3m58eta6vYjRw+R/feA4oUJmwEyiKHDxDMn3Q6 1mtJRdqWrpp9
yCgnZk1K0AqgLGaUAQXjvJeUpmwqTdkIQ5uAIlgVQwAwtUxtP5oTvRbofSA5 o+s4nvRDJAAA
uCHWTwplbmRzdHJlYW0KZW5kb2JqCjIxIDAgb2JqCjM0NgplbmRvYmoKMjIg MCBvYmoKPDwv
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNwovTGVu Z3RoIDIzIDAg
UgovV2lkdGggMTYKL0hlaWdodCAxNgovQml0c1BlckNvbXBvbmVudCA4Ci9D b2xvclNwYWNl
IC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJl YW0KeJxjYKA9
+A8DVOJTEwAABSMs1AplbmRzdHJlYW0KZW5kb2JqCjIzIDAgb2JqCjE5CmVu ZG9iagoyNCAw
IG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAv SW04Ci9MZW5n
dGggMjUgMCBSCi9XaWR0aCAxNgovSGVpZ2h0IDE2Ci9CaXRzUGVyQ29tcG9u ZW50IDgKL0Nv
bG9yU3BhY2UgL0RldmljZVJHQgovTWFzayBbMjU1IDI1NSAyNTUgMjU1IDI1 NSAyNTVdCi9T
TWFzayAyMiAwIFIKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVh bQp4nGNgGAXE
grk1+rgQVvVTKwx//LyIiYDiWNV3FZliVQ8Ux6q+Nsfy+49rQPTjJxj9gJJA cazqi9Jss5Ls
MRFQnLwAGQYAALIKVikKZW5kc3RyZWFtCmVuZG9iagoyNSAwIG9iago3NQpl bmRvYmoKMjYg
MCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L0ltOQovTGVu
Z3RoIDI3IDAgUgovV2lkdGggMTE0Ci9IZWlnaHQgNDAKL0JpdHNQZXJDb21w b25lbnQgOAov
Q29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVjb2Rl IF0KPj4Kc3Ry
ZWFtCnic7cEBDQAAAMKgbO9fyhxuQAEAAADwZHWshg0KZW5kc3RyZWFtCmVu ZG9iagoyNyAw
IG9iagoyOAplbmRvYmoKMjggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3Vi dHlwZSAvSW1h
Z2UKL05hbWUgL0ltMTAKL0xlbmd0aCAyOSAwIFIKL1dpZHRoIDExNAovSGVp Z2h0IDQwCi9C
aXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFz ayBbMjU1IDI1
NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAyNiAwIFIKL0ZpbHRlciBbIC9G bGF0ZURlY29k
ZSBdCj4+CnN0cmVhbQp4nO3CMQ0AAADDIOk7a3tGILRSVVVVVVVVVVVVVVVV dR2W8KEmCmVu
ZHN0cmVhbQplbmRvYmoKMjkgMCBvYmoKMzcKZW5kb2JqCjMwIDAgb2JqCjw8 L1R5cGUgL1hP
YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTExCi9MZW5ndGggMzEg MCBSCi9XaWR0
aCAxMTQKL0hlaWdodCA0MAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNw YWNlIC9EZXZp
Y2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJzt wQENAAAAwqBs
71/KHG5AAQAAAPBkdayGDQplbmRzdHJlYW0KZW5kb2JqCjMxIDAgb2JqCjI4 CmVuZG9iagoz
MiAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFt ZSAvSW0xMgov
TGVuZ3RoIDMzIDAgUgovV2lkdGggMTE0Ci9IZWlnaHQgNDAKL0JpdHNQZXJD b21wb25lbnQg
OAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAy NTUgMjU1IDI1
NV0KL1NNYXNrIDMwIDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4K c3RyZWFtCnic
7cIxDQAAAMMg6Ttre0YgtFJVVVVVVVVVVVVVVVV1HZbwoSYKZW5kc3RyZWFt CmVuZG9iagoz
MyAwIG9iagozNwplbmRvYmoKMzQgMCBvYmoKPDwgCi9TaGFkaW5nVHlwZSAy IAovQ29sb3JT
cGFjZSAvRGV2aWNlUkdCIAovQ29vcmRzIFsgMTM3OCA1NDUgMTM3OCA1ODUg XSAKL0RvbWFp
biBbIDAgMSBdIAovRXh0ZW5kIFsgdHJ1ZSB0cnVlIF0gCi9GdW5jdGlvbiAx NSAwIFIgCj4+
IAplbmRvYmoKMzUgMCBvYmoKPDwgCi9UeXBlIC9QYXR0ZXJuIAovUGF0dGVy blR5cGUgMiAK
L1NoYWRpbmcgMzQgMCBSIAo+PiAKCmVuZG9iagozNiAwIG9iago8PC9UeXBl IC9YT2JqZWN0
Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xMwovTGVuZ3RoIDM3IDAgUgov V2lkdGggMTQ0
Ci9IZWlnaHQgNjMKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAv RGV2aWNlR3Jh
eQovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic7cGBAAAA AMMgtvlLXeEA
VQEAAAAAAAAAAK8BA+z/6QplbmRzdHJlYW0KZW5kb2JqCjM3IDAgb2JqCjMz CmVuZG9iagoz
OCAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFt ZSAvSW0xNAov
TGVuZ3RoIDM5IDAgUgovV2lkdGggMTQ0Ci9IZWlnaHQgNjMKL0JpdHNQZXJD b21wb25lbnQg
OAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAy NTUgMjU1IDI1
NV0KL1NNYXNrIDM2IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4K c3RyZWFtCnic
7cIxEQAADAMh6R3fdmVkgaMrVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV3 H8Zz99sKZW5k
c3RyZWFtCmVuZG9iagozOSAwIG9iago1MgplbmRvYmoKNDAgMCBvYmoKPDwv VHlwZSAvWE9i
amVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMTUKL0xlbmd0aCA0MSAw IFIKL1dpZHRo
IDE0NAovSGVpZ2h0IDYzCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3Bh Y2UgL0Rldmlj
ZUdyYXkKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3B gQAAAADDILb5
S13hAFUBAAAAAAAAAACvAQPs/+kKZW5kc3RyZWFtCmVuZG9iago0MSAwIG9i agozMwplbmRv
YmoKNDIgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UK L05hbWUgL0lt
MTYKL0xlbmd0aCA0MyAwIFIKL1dpZHRoIDE0NAovSGVpZ2h0IDYzCi9CaXRz UGVyQ29tcG9u
ZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFzayBbMjU1IDI1NSAy NTUgMjU1IDI1
NSAyNTVdCi9TTWFzayA0MCAwIFIKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBd Cj4+CnN0cmVh
bQp4nO3CMREAAAwDIekd33ZlZIGjK1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVdx/Gc/fb
CmVuZHN0cmVhbQplbmRvYmoKNDMgMCBvYmoKNTIKZW5kb2JqCjQ0IDAgb2Jq Cjw8IAovU2hh
ZGluZ1R5cGUgMiAKL0NvbG9yU3BhY2UgL0RldmljZVJHQiAKL0Nvb3JkcyBb IDEzNDIgMTQg
MTM0MiA3NyBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVlIHRy dWUgXSAKL0Z1
bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iago0NSAwIG9iago8PCAKL1R5cGUg L1BhdHRlcm4g
Ci9QYXR0ZXJuVHlwZSAyIAovU2hhZGluZyA0NCAwIFIgCj4+IAoKZW5kb2Jq CjQ2IDAgb2Jq
Cjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTE3 Ci9MZW5ndGgg
NDcgMCBSCi9XaWR0aCAxMTIKL0hlaWdodCA0NwovQml0c1BlckNvbXBvbmVu dCA4Ci9Db2xv
clNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+ PgpzdHJlYW0K
eJztwTEBAAAAwqBs61/KFl5AAQAAAAB8DF7VONwKZW5kc3RyZWFtCmVuZG9i ago0NyAwIG9i
agoyOQplbmRvYmoKNDggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlw ZSAvSW1hZ2UK
L05hbWUgL0ltMTgKL0xlbmd0aCA0OSAwIFIKL1dpZHRoIDExMgovSGVpZ2h0 IDQ3Ci9CaXRz
UGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFzayBb MjU1IDI1NSAy
NTUgMjU1IDI1NSAyNTVdCi9TTWFzayA0NiAwIFIKL0ZpbHRlciBbIC9GbGF0 ZURlY29kZSBd
Cj4+CnN0cmVhbQp4nO3CMREAAAwDIekd33Y1ZIejK1VVVVVVVVVVVVVVVVVV VfcPAFPlIgpl
bmRzdHJlYW0KZW5kb2JqCjQ5IDAgb2JqCjQxCmVuZG9iago1MCAwIG9iago8 PC9UeXBlIC9Y
T2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0xOQovTGVuZ3RoIDUx IDAgUgovV2lk
dGggMTEyCi9IZWlnaHQgNDcKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JT cGFjZSAvRGV2
aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic 7cExAQAAAMKg
bOtfyhZeQAEAAAAAfAxe1TjcCmVuZHN0cmVhbQplbmRvYmoKNTEgMCBvYmoK MjkKZW5kb2Jq
CjUyIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9O YW1lIC9JbTIw
Ci9MZW5ndGggNTMgMCBSCi9XaWR0aCAxMTIKL0hlaWdodCA0NwovQml0c1Bl ckNvbXBvbmVu
dCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1 IDI1NSAyNTUg
MjU1XQovU01hc2sgNTAgMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+ PgpzdHJlYW0K
eJztwjERAAAMAyHpHd92NWSHoytVVVVVVVVVVVVVVVVVVVX3DwBT5SIKZW5k c3RyZWFtCmVu
ZG9iago1MyAwIG9iago0MQplbmRvYmoKNTQgMCBvYmoKPDwgCi9TaGFkaW5n VHlwZSAyIAov
Q29sb3JTcGFjZSAvRGV2aWNlUkdCIAovQ29vcmRzIFsgNjQ5IDIzIDY0OSA3 MCBdIAovRG9t
YWluIFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVlIHRydWUgXSAKL0Z1bmN0aW9u IDE1IDAgUiAK
Pj4gCmVuZG9iago1NSAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9QYXR0 ZXJuVHlwZSAy
IAovU2hhZGluZyA1NCAwIFIgCj4+IAoKZW5kb2JqCjU2IDAgb2JqCjw8L1R5 cGUgL1hPYmpl
Y3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTIxCi9MZW5ndGggNTcgMCBS Ci9XaWR0aCAx
MDAKL0hlaWdodCAzOAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNl IC9EZXZpY2VH
cmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwQEN AAAAwqBs71/K
HG5AAQAAwK8BiCjFBgplbmRzdHJlYW0KZW5kb2JqCjU3IDAgb2JqCjI4CmVu ZG9iago1OCAw
IG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAv SW0yMgovTGVu
Z3RoIDU5IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgMzgKL0JpdHNQZXJDb21w b25lbnQgOAov
Q29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUg MjU1IDI1NV0K
L1NNYXNrIDU2IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3Ry ZWFtCnic7cIx
EQAADAMh6R3fdjVkh6MrVVVVVVVVVVVVVdXlA1twBlIKZW5kc3RyZWFtCmVu ZG9iago1OSAw
IG9iagozNwplbmRvYmoKNjAgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3Vi dHlwZSAvSW1h
Z2UKL05hbWUgL0ltMjMKL0xlbmd0aCA2MSAwIFIKL1dpZHRoIDEwMAovSGVp Z2h0IDM4Ci9C
aXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKL0Zp bHRlciBbIC9G
bGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3BAQ0AAADCoGzvX8ocbkABAADA rwGIKMUGCmVu
ZHN0cmVhbQplbmRvYmoKNjEgMCBvYmoKMjgKZW5kb2JqCjYyIDAgb2JqCjw8 L1R5cGUgL1hP
YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTI0Ci9MZW5ndGggNjMg MCBSCi9XaWR0
aCAxMDAKL0hlaWdodCAzOAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNw YWNlIC9EZXZp
Y2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1NSAyNTUgMjU1XQovU01hc2sg NjAgMCBSCi9G
aWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwjERAAAMAyHp Hd92NWSHoytV
VVVVVVVVVVVV1eUDW3AGUgplbmRzdHJlYW0KZW5kb2JqCjYzIDAgb2JqCjM3 CmVuZG9iago2
NCAwIG9iago8PCAKL1NoYWRpbmdUeXBlIDIgCi9Db2xvclNwYWNlIC9EZXZp Y2VSR0IgCi9D
b29yZHMgWyA3MzkgNDE5IDczOSA0NTcgXSAKL0RvbWFpbiBbIDAgMSBdIAov RXh0ZW5kIFsg
dHJ1ZSB0cnVlIF0gCi9GdW5jdGlvbiAxNSAwIFIgCj4+IAplbmRvYmoKNjUg MCBvYmoKPDwg
Ci9UeXBlIC9QYXR0ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgNjQg MCBSIAo+PiAK
CmVuZG9iago2NiAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9J bWFnZQovTmFt
ZSAvSW0yNQovTGVuZ3RoIDY3IDAgUgovV2lkdGggMTYKL0hlaWdodCAxNgov Qml0c1BlckNv
bXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAv RmxhdGVEZWNv
ZGUgXQo+PgpzdHJlYW0KeJxjYCAE/iMAhI+QgZMQSSR5ND6aPIiHykc17z+G +Wh8FHk095EG
AGVdOsYKZW5kc3RyZWFtCmVuZG9iago2NyAwIG9iago0NAplbmRvYmoKNjgg MCBvYmoKPDwv
VHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMjYKL0xl bmd0aCA2OSAw
IFIKL1dpZHRoIDE2Ci9IZWlnaHQgMTYKL0JpdHNQZXJDb21wb25lbnQgOAov Q29sb3JTcGFj
ZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0K L1NNYXNrIDY2
IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnicY2Cg B2jAC7CqJ9X8
UfUDqH7oAgCchByBCmVuZHN0cmVhbQplbmRvYmoKNjkgMCBvYmoKMjYKZW5k b2JqCjcwIDAg
b2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9J bTI3Ci9MZW5n
dGggNzEgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCA0MAovQml0c1BlckNvbXBv bmVudCA4Ci9D
b2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUg XQo+PgpzdHJl
YW0KeJztwTEBAAAAwqBs61/KGD5AAQAAAG8Dbo73zgplbmRzdHJlYW0KZW5k b2JqCjcxIDAg
b2JqCjI4CmVuZG9iago3MiAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0 eXBlIC9JbWFn
ZQovTmFtZSAvSW0yOAovTGVuZ3RoIDczIDAgUgovV2lkdGggMTAwCi9IZWln aHQgNDAKL0Jp
dHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNr IFsyNTUgMjU1
IDI1NSAyNTUgMjU1IDI1NV0KL1NNYXNrIDcwIDAgUgovRmlsdGVyIFsgL0Zs YXRlRGVjb2Rl
IF0KPj4Kc3RyZWFtCnic7cIxEQAADAMh6R3fdmVkgaMrVVVVVVVVVVVVVVVd f1PJPIkKZW5k
c3RyZWFtCmVuZG9iago3MyAwIG9iagozNwplbmRvYmoKNzQgMCBvYmoKPDwv VHlwZSAvWE9i
amVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMjkKL0xlbmd0aCA3NSAw IFIKL1dpZHRo
IDEwMAovSGVpZ2h0IDQwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3Bh Y2UgL0Rldmlj
ZUdyYXkKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3B MQEAAADCoGzr
X8oYPkABAAAAbwNujvfOCmVuZHN0cmVhbQplbmRvYmoKNzUgMCBvYmoKMjgK ZW5kb2JqCjc2
IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1l IC9JbTMwCi9M
ZW5ndGggNzcgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCA0MAovQml0c1BlckNv bXBvbmVudCA4
Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1 NSAyNTUgMjU1
XQovU01hc2sgNzQgMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+Pgpz dHJlYW0KeJzt
wjERAAAMAyHpHd92ZWSBoytVVVVVVVVVVVVVVV1/U8k8iQplbmRzdHJlYW0K ZW5kb2JqCjc3
IDAgb2JqCjM3CmVuZG9iago3OCAwIG9iago8PCAKL1NoYWRpbmdUeXBlIDIg Ci9Db2xvclNw
YWNlIC9EZXZpY2VSR0IgCi9Db29yZHMgWyAxMzA2IDY4OSAxMzA2IDcyOSBd IAovRG9tYWlu
IFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVlIHRydWUgXSAKL0Z1bmN0aW9uIDE1 IDAgUiAKPj4g
CmVuZG9iago3OSAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9QYXR0ZXJu VHlwZSAyIAov
U2hhZGluZyA3OCAwIFIgCj4+IAoKZW5kb2JqCjgwIDAgb2JqCjw8L1R5cGUg L1hPYmplY3QK
L1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTMxCi9MZW5ndGggODEgMCBSCi9X aWR0aCAxNgov
SGVpZ2h0IDE2Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0Rl dmljZUdyYXkK
L0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nGNgIAz+w8Aw 4SMDAKVSdIwK
ZW5kc3RyZWFtCmVuZG9iago4MSAwIG9iagoxOAplbmRvYmoKODIgMCBvYmoK PDwvVHlwZSAv
WE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMzIKL0xlbmd0aCA4 MyAwIFIKL1dp
ZHRoIDE2Ci9IZWlnaHQgMTYKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JT cGFjZSAvRGV2
aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL1NNYXNr IDgwIDAgUgov
RmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnicY2CgH5hbo48L 4VL/4+dFTIRL
/exqA6zqgeJY1U+vMPj+4xoQ/fgJRj+gJFAcq/rJ5UYLZ+QswEBAcazq+0pN sLoHKI5VfWeR
GVb1QHGs6pvzzbG6HyiOVX1djkVTW2NTKzoCimNVX5llhdU9QHGs6ksybLCq B4pjVV+QaovV
/UBxrOpzU+yzkrAgoDhW9cQAANYX80cKZW5kc3RyZWFtCmVuZG9iago4MyAw IG9iagoxNTEK
ZW5kb2JqCjg0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0lt YWdlCi9OYW1l
IC9JbTMzCi9MZW5ndGggODUgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCAzOAov Qml0c1BlckNv
bXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAv RmxhdGVEZWNv
ZGUgXQo+PgpzdHJlYW0KeJztwQENAAAAwqBs71/KHG5AAQAAwK8BiCjFBgpl bmRzdHJlYW0K
ZW5kb2JqCjg1IDAgb2JqCjI4CmVuZG9iago4NiAwIG9iago8PC9UeXBlIC9Y T2JqZWN0Ci9T
dWJ0eXBlIC9JbWFnZQovTmFtZSAvSW0zNAovTGVuZ3RoIDg3IDAgUgovV2lk dGggMTAwCi9I
ZWlnaHQgMzgKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2 aWNlUkdCCi9N
YXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL1NNYXNrIDg0IDAgUgov RmlsdGVyIFsg
L0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic7cIxEQAADAMh6R3fdjVkh6Mr VVVVVVVVVVVV
VdXlA1twBlIKZW5kc3RyZWFtCmVuZG9iago4NyAwIG9iagozNwplbmRvYmoK ODggMCBvYmoK
PDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltMzUK L0xlbmd0aCA4
OSAwIFIKL1dpZHRoIDEwMAovSGVpZ2h0IDM4Ci9CaXRzUGVyQ29tcG9uZW50 IDgKL0NvbG9y
U3BhY2UgL0RldmljZUdyYXkKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+ CnN0cmVhbQp4
nO3BAQ0AAADCoGzvX8ocbkABAADArwGIKMUGCmVuZHN0cmVhbQplbmRvYmoK ODkgMCBvYmoK
MjgKZW5kb2JqCjkwIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUg L0ltYWdlCi9O
YW1lIC9JbTM2Ci9MZW5ndGggOTEgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCAz OAovQml0c1Bl
ckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1 NSAyNTUgMjU1
IDI1NSAyNTUgMjU1XQovU01hc2sgODggMCBSCi9GaWx0ZXIgWyAvRmxhdGVE ZWNvZGUgXQo+
PgpzdHJlYW0KeJztwjERAAAMAyHpHd92NWSHoytVVVVVVVVVVVVV1eUDW3AG UgplbmRzdHJl
YW0KZW5kb2JqCjkxIDAgb2JqCjM3CmVuZG9iago5MiAwIG9iago8PCAKL1No YWRpbmdUeXBl
IDIgCi9Db2xvclNwYWNlIC9EZXZpY2VSR0IgCi9Db29yZHMgWyAxNTU4IDU0 NSAxNTU4IDU4
MyBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVlIHRydWUgXSAK L0Z1bmN0aW9u
IDE1IDAgUiAKPj4gCmVuZG9iago5MyAwIG9iago8PCAKL1R5cGUgL1BhdHRl cm4gCi9QYXR0
ZXJuVHlwZSAyIAovU2hhZGluZyA5MiAwIFIgCj4+IAoKZW5kb2JqCjk0IDAg b2JqCjw8L1R5
cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTM3Ci9MZW5n dGggOTUgMCBS
Ci9XaWR0aCAxMDAKL0hlaWdodCA0MAovQml0c1BlckNvbXBvbmVudCA4Ci9D b2xvclNwYWNl
IC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJl YW0KeJztwTEB
AAAAwqBs61/KGD5AAQAAAG8Dbo73zgplbmRzdHJlYW0KZW5kb2JqCjk1IDAg b2JqCjI4CmVu
ZG9iago5NiAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFn ZQovTmFtZSAv
SW0zOAovTGVuZ3RoIDk3IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgNDAKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1 IDI1NSAyNTUg
MjU1IDI1NV0KL1NNYXNrIDk0IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2Rl IF0KPj4Kc3Ry
ZWFtCnic7cIxEQAADAMh6R3fdmVkgaMrVVVVVVVVVVVVVVVdf1PJPIkKZW5k c3RyZWFtCmVu
ZG9iago5NyAwIG9iagozNwplbmRvYmoKOTggMCBvYmoKPDwvVHlwZSAvWE9i amVjdAovU3Vi
dHlwZSAvSW1hZ2UKL05hbWUgL0ltMzkKL0xlbmd0aCA5OSAwIFIKL1dpZHRo IDEwMAovSGVp
Z2h0IDQwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0Rldmlj ZUdyYXkKL0Zp
bHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3BMQEAAADCoGzr X8oYPkABAAAA
bwNujvfOCmVuZHN0cmVhbQplbmRvYmoKOTkgMCBvYmoKMjgKZW5kb2JqCjEw MCAwIG9iago8
PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW00MAov TGVuZ3RoIDEw
MSAwIFIKL1dpZHRoIDEwMAovSGVpZ2h0IDQwCi9CaXRzUGVyQ29tcG9uZW50 IDgKL0NvbG9y
U3BhY2UgL0RldmljZVJHQgovTWFzayBbMjU1IDI1NSAyNTUgMjU1IDI1NSAy NTVdCi9TTWFz
ayA5OCAwIFIKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4 nO3CMREAAAwD
Iekd33ZlZIGjK1VVVVVVVVVVVVVVXX9TyTyJCmVuZHN0cmVhbQplbmRvYmoK MTAxIDAgb2Jq
CjM3CmVuZG9iagoxMDIgMCBvYmoKPDwgCi9TaGFkaW5nVHlwZSAyIAovQ29s b3JTcGFjZSAv
RGV2aWNlUkdCIAovQ29vcmRzIFsgNzM5IDMwMiA3MzkgMzQyIF0gCi9Eb21h aW4gWyAwIDEg
XSAKL0V4dGVuZCBbIHRydWUgdHJ1ZSBdIAovRnVuY3Rpb24gMTUgMCBSIAo+ PiAKZW5kb2Jq
CjEwMyAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9QYXR0ZXJuVHlwZSAy IAovU2hhZGlu
ZyAxMDIgMCBSIAo+PiAKCmVuZG9iagoxMDQgMCBvYmoKPDwvVHlwZSAvWE9i amVjdAovU3Vi
dHlwZSAvSW1hZ2UKL05hbWUgL0ltNDEKL0xlbmd0aCAxMDUgMCBSCi9XaWR0 aCAxMDAKL0hl
aWdodCAzOAovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZp Y2VHcmF5Ci9G
aWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwQENAAAAwqBs 71/KHG5AAQAA
wK8BiCjFBgplbmRzdHJlYW0KZW5kb2JqCjEwNSAwIG9iagoyOAplbmRvYmoK MTA2IDAgb2Jq
Cjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTQy Ci9MZW5ndGgg
MTA3IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgMzgKL0JpdHNQZXJDb21wb25l bnQgOAovQ29s
b3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1 IDI1NV0KL1NN
YXNrIDEwNCAwIFIKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVh bQp4nO3CMREA
AAwDIekd33Y1ZIejK1VVVVVVVVVVVVXV5QNbcAZSCmVuZHN0cmVhbQplbmRv YmoKMTA3IDAg
b2JqCjM3CmVuZG9iagoxMDggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3Vi dHlwZSAvSW1h
Z2UKL05hbWUgL0ltNDMKL0xlbmd0aCAxMDkgMCBSCi9XaWR0aCAxMDAKL0hl aWdodCAzOAov
Qml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9G aWx0ZXIgWyAv
RmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwQENAAAAwqBs71/KHG5AAQAA wK8BiCjFBgpl
bmRzdHJlYW0KZW5kb2JqCjEwOSAwIG9iagoyOAplbmRvYmoKMTEwIDAgb2Jq Cjw8L1R5cGUg
L1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTQ0Ci9MZW5ndGgg MTExIDAgUgov
V2lkdGggMTAwCi9IZWlnaHQgMzgKL0JpdHNQZXJDb21wb25lbnQgOAovQ29s b3JTcGFjZSAv
RGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL1NN YXNrIDEwOCAw
IFIKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3CMREA AAwDIekd33Y1
ZIejK1VVVVVVVVVVVVXV5QNbcAZSCmVuZHN0cmVhbQplbmRvYmoKMTExIDAg b2JqCjM3CmVu
ZG9iagoxMTIgMCBvYmoKPDwgCi9TaGFkaW5nVHlwZSAyIAovQ29sb3JTcGFj ZSAvRGV2aWNl
UkdCIAovQ29vcmRzIFsgMTE2MiA1NDUgMTE2MiA1ODMgXSAKL0RvbWFpbiBb IDAgMSBdIAov
RXh0ZW5kIFsgdHJ1ZSB0cnVlIF0gCi9GdW5jdGlvbiAxNSAwIFIgCj4+IApl bmRvYmoKMTEz
IDAgb2JqCjw8IAovVHlwZSAvUGF0dGVybiAKL1BhdHRlcm5UeXBlIDIgCi9T aGFkaW5nIDEx
MiAwIFIgCj4+IAoKZW5kb2JqCjExNCAwIG9iago8PC9UeXBlIC9YT2JqZWN0 Ci9TdWJ0eXBl
IC9JbWFnZQovTmFtZSAvSW00NQovTGVuZ3RoIDExNSAwIFIKL1dpZHRoIDE3 MAovSGVpZ2h0
IDc5Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZUdy YXkKL0ZpbHRl
ciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3BMQEAAADCoGzrX8rX EEABAAAAAAAA
AAAAAAAAvAE3o1K6CmVuZHN0cmVhbQplbmRvYmoKMTE1IDAgb2JqCjM3CmVu ZG9iagoxMTYg
MCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L0ltNDYKL0xl
bmd0aCAxMTcgMCBSCi9XaWR0aCAxNzAKL0hlaWdodCA3OQovQml0c1BlckNv bXBvbmVudCA4
Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1 NSAyNTUgMjU1
XQovU01hc2sgMTE0IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4K c3RyZWFtCnic
7cIxEQAADAMh6R3fdi1EABxdqaqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq qqqqqqqqqqqq
qqqqbh/Odl++CmVuZHN0cmVhbQplbmRvYmoKMTE3IDAgb2JqCjY1CmVuZG9i agoxMTggMCBv
YmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0lt NDcKL0xlbmd0
aCAxMTkgMCBSCi9XaWR0aCAxNzAKL0hlaWdodCA3OQovQml0c1BlckNvbXBv bmVudCA4Ci9D
b2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUg XQo+PgpzdHJl
YW0KeJztwTEBAAAAwqBs61/K1xBAAQAAAAAAAAAAAAAAALwBN6NSugplbmRz dHJlYW0KZW5k
b2JqCjExOSAwIG9iagozNwplbmRvYmoKMTIwIDAgb2JqCjw8L1R5cGUgL1hP YmplY3QKL1N1
YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTQ4Ci9MZW5ndGggMTIxIDAgUgovV2lk dGggMTcwCi9I
ZWlnaHQgNzkKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2 aWNlUkdCCi9N
YXNrIFsyNTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL1NNYXNrIDExOCAwIFIK L0ZpbHRlciBb
IC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3CMREAAAwDIekd33YtRAAc Xamqqqqqqqqq
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqm4fznZfvgplbmRzdHJl YW0KZW5kb2Jq
CjEyMSAwIG9iago2NQplbmRvYmoKMTIyIDAgb2JqCjw8IAovU2hhZGluZ1R5 cGUgMiAKL0Nv
bG9yU3BhY2UgL0RldmljZVJHQiAKL0Nvb3JkcyBbIDE0MzIgMTY3IDE0MzIg MjQ2IF0gCi9E
b21haW4gWyAwIDEgXSAKL0V4dGVuZCBbIHRydWUgdHJ1ZSBdIAovRnVuY3Rp b24gMTUgMCBS
IAo+PiAKZW5kb2JqCjEyMyAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9Q YXR0ZXJuVHlw
ZSAyIAovU2hhZGluZyAxMjIgMCBSIAo+PiAKCmVuZG9iagoxMjQgMCBvYmoK PDwvVHlwZSAv
WE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNDkKL0xlbmd0aCAx MjUgMCBSCi9X
aWR0aCAxMDAKL0hlaWdodCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9E
ZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0K eJztwTEBAAAA
wqBs61/KDt5AAQAAAMBnk7OpmQplbmRzdHJlYW0KZW5kb2JqCjEyNSAwIG9i agoyOAplbmRv
YmoKMTI2IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTUwCi9MZW5ndGggMTI3IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgNDcKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUgMjU1 IDI1NSAyNTUg
MjU1IDI1NV0KL1NNYXNrIDEyNCAwIFIKL0ZpbHRlciBbIC9GbGF0ZURlY29k ZSBdCj4+CnN0
cmVhbQp4nO3CwQkAAAwDodH7vLU7R0CxK1VVVVVVVVVVVVVVVVVd+JjDelEK ZW5kc3RyZWFt
CmVuZG9iagoxMjcgMCBvYmoKMzkKZW5kb2JqCjEyOCAwIG9iago8PC9UeXBl IC9YT2JqZWN0
Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW01MQovTGVuZ3RoIDEyOSAwIFIK L1dpZHRoIDEw
MAovSGVpZ2h0IDQ3Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2Ug L0RldmljZUdy
YXkKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3BMQEA AADCoGzrX8oO
3kABAAAAwGeTs6mZCmVuZHN0cmVhbQplbmRvYmoKMTI5IDAgb2JqCjI4CmVu ZG9iagoxMzAg
MCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L0ltNTIKL0xl
bmd0aCAxMzEgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCA0NwovQml0c1BlckNv bXBvbmVudCA4
Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1 NSAyNTUgMjU1
XQovU01hc2sgMTI4IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4K c3RyZWFtCnic
7cLBCQAADAOh0fu8tTtHQLErVVVVVVVVVVVVVVVVVV34mMN6UQplbmRzdHJl YW0KZW5kb2Jq
CjEzMSAwIG9iagozOQplbmRvYmoKMTMyIDAgb2JqCjw8IAovU2hhZGluZ1R5 cGUgMiAKL0Nv
bG9yU3BhY2UgL0RldmljZVJHQiAKL0Nvb3JkcyBbIDQxNSAzMDIgNDE1IDM0 OSBdIAovRG9t
YWluIFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVlIHRydWUgXSAKL0Z1bmN0aW9u IDE1IDAgUiAK
Pj4gCmVuZG9iagoxMzMgMCBvYmoKPDwgCi9UeXBlIC9QYXR0ZXJuIAovUGF0 dGVyblR5cGUg
MiAKL1NoYWRpbmcgMTMyIDAgUiAKPj4gCgplbmRvYmoKMTM0IDAgb2JqCjw8 L1R5cGUgL1hP
YmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9JbTUzCi9MZW5ndGggMTM1 IDAgUgovV2lk
dGggMTEwCi9IZWlnaHQgNDcKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JT cGFjZSAvRGV2
aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic 7cExAQAAAMKg
bOtfyssWQAEAAAAA3ADS4SD+CmVuZHN0cmVhbQplbmRvYmoKMTM1IDAgb2Jq CjI5CmVuZG9i
agoxMzYgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UK L05hbWUgL0lt
NTQKL0xlbmd0aCAxMzcgMCBSCi9XaWR0aCAxMTAKL0hlaWdodCA0NwovQml0 c1BlckNvbXBv
bmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUg MjU1IDI1NSAy
NTUgMjU1XQovU01hc2sgMTM0IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2Rl IF0KPj4Kc3Ry
ZWFtCnic7cIxEQAADAMh6R3fdhXEARxdqaqqqqqqqqqqqqqqqqqq7g+P51Nc CmVuZHN0cmVh
bQplbmRvYmoKMTM3IDAgb2JqCjQxCmVuZG9iagoxMzggMCBvYmoKPDwvVHlw ZSAvWE9iamVj
dAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNTUKL0xlbmd0aCAxMzkgMCBS Ci9XaWR0aCAx
MTAKL0hlaWdodCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNl IC9EZXZpY2VH
cmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwTEB AAAAwqBs61/K
yxZAAQAAAADcANLhIP4KZW5kc3RyZWFtCmVuZG9iagoxMzkgMCBvYmoKMjkK ZW5kb2JqCjE0
MCAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFt ZSAvSW01Ngov
TGVuZ3RoIDE0MSAwIFIKL1dpZHRoIDExMAovSGVpZ2h0IDQ3Ci9CaXRzUGVy Q29tcG9uZW50
IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFzayBbMjU1IDI1NSAyNTUg MjU1IDI1NSAy
NTVdCi9TTWFzayAxMzggMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+ PgpzdHJlYW0K
eJztwjERAAAMAyHpHd92FcQBHF2pqqqqqqqqqqqqqqqqqqruD4/nU1wKZW5k c3RyZWFtCmVu
ZG9iagoxNDEgMCBvYmoKNDEKZW5kb2JqCjE0MiAwIG9iago8PCAKL1NoYWRp bmdUeXBlIDIg
Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IgCi9Db29yZHMgWyAxMCAzMDIgMTAg MzQ5IF0gCi9E
b21haW4gWyAwIDEgXSAKL0V4dGVuZCBbIHRydWUgdHJ1ZSBdIAovRnVuY3Rp b24gMTUgMCBS
IAo+PiAKZW5kb2JqCjE0MyAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9Q YXR0ZXJuVHlw
ZSAyIAovU2hhZGluZyAxNDIgMCBSIAo+PiAKCmVuZG9iagoxNDQgMCBvYmoK PDwvVHlwZSAv
WE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNTcKL0xlbmd0aCAx NDUgMCBSCi9X
aWR0aCAxNzAKL0hlaWdodCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xv clNwYWNlIC9E
ZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0K eJztwYEAAAAA
wyC2+Usd5FUBAAAAAAAAwKsBUW3tIAplbmRzdHJlYW0KZW5kb2JqCjE0NSAw IG9iagozMQpl
bmRvYmoKMTQ2IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0lt YWdlCi9OYW1l
IC9JbTU4Ci9MZW5ndGggMTQ3IDAgUgovV2lkdGggMTcwCi9IZWlnaHQgNDcK L0JpdHNQZXJD
b21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdCCi9NYXNrIFsyNTUg MjU1IDI1NSAy
NTUgMjU1IDI1NV0KL1NNYXNrIDE0NCAwIFIKL0ZpbHRlciBbIC9GbGF0ZURl Y29kZSBdCj4+
CnN0cmVhbQp4nO3CMREAAAwDIekd33aFBI6uVFVVVVVVVVVVVVVVVVVVVVVV VVVVVVU3PmT4
aY8KZW5kc3RyZWFtCmVuZG9iagoxNDcgMCBvYmoKNDgKZW5kb2JqCjE0OCAw IG9iago8PC9U
eXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQovTmFtZSAvSW01OQovTGVu Z3RoIDE0OSAw
IFIKL1dpZHRoIDE3MAovSGVpZ2h0IDQ3Ci9CaXRzUGVyQ29tcG9uZW50IDgK L0NvbG9yU3Bh
Y2UgL0RldmljZUdyYXkKL0ZpbHRlciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0 cmVhbQp4nO3B
gQAAAADDILb5Sx3kVQEAAAAAAADAqwFRbe0gCmVuZHN0cmVhbQplbmRvYmoK MTQ5IDAgb2Jq
CjMxCmVuZG9iagoxNTAgMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlw ZSAvSW1hZ2UK
L05hbWUgL0ltNjAKL0xlbmd0aCAxNTEgMCBSCi9XaWR0aCAxNzAKL0hlaWdo dCA0NwovQml0
c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sg WzI1NSAyNTUg
MjU1IDI1NSAyNTUgMjU1XQovU01hc2sgMTQ4IDAgUgovRmlsdGVyIFsgL0Zs YXRlRGVjb2Rl
IF0KPj4Kc3RyZWFtCnic7cIxEQAADAMh6R3fdoUEjq5UVVVVVVVVVVVVVVVV VVVVVVVVVVVV
VTc+ZPhpjwplbmRzdHJlYW0KZW5kb2JqCjE1MSAwIG9iago0OAplbmRvYmoK MTUyIDAgb2Jq
Cjw8IAovU2hhZGluZ1R5cGUgMiAKL0NvbG9yU3BhY2UgL0RldmljZVJHQiAK L0Nvb3JkcyBb
IDE4MSAzMDIgMTgxIDM0OSBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQg WyB0cnVlIHRy
dWUgXSAKL0Z1bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iagoxNTMgMCBvYmoK PDwgCi9UeXBl
IC9QYXR0ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgMTUyIDAgUiAK Pj4gCgplbmRv
YmoKMTU0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTYxCi9MZW5ndGggMTU1IDAgUgovV2lkdGggMTA4Ci9IZWlnaHQgNDcKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0Zs YXRlRGVjb2Rl
IF0KPj4Kc3RyZWFtCnic7cEBDQAAAMKgbO9fyhxuQAEAAAAATwYLBwkgCmVu ZHN0cmVhbQpl
bmRvYmoKMTU1IDAgb2JqCjI5CmVuZG9iagoxNTYgMCBvYmoKPDwvVHlwZSAv WE9iamVjdAov
U3VidHlwZSAvSW1hZ2UKL05hbWUgL0ltNjIKL0xlbmd0aCAxNTcgMCBSCi9X aWR0aCAxMDgK
L0hlaWdodCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9E ZXZpY2VSR0IK
L01hc2sgWzI1NSAyNTUgMjU1IDI1NSAyNTUgMjU1XQovU01hc2sgMTU0IDAg UgovRmlsdGVy
IFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic7cIxDQAAAMMg6Ttre0Yg tFJVVVVVVVVV
VVVVVVVVVdcBvQbBhwplbmRzdHJlYW0KZW5kb2JqCjE1NyAwIG9iagozOQpl bmRvYmoKMTU4
IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1l IC9JbTYzCi9M
ZW5ndGggMTU5IDAgUgovV2lkdGggMTA4Ci9IZWlnaHQgNDcKL0JpdHNQZXJD b21wb25lbnQg
OAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVj b2RlIF0KPj4K
c3RyZWFtCnic7cEBDQAAAMKgbO9fyhxuQAEAAAAATwYLBwkgCmVuZHN0cmVh bQplbmRvYmoK
MTU5IDAgb2JqCjI5CmVuZG9iagoxNjAgMCBvYmoKPDwvVHlwZSAvWE9iamVj dAovU3VidHlw
ZSAvSW1hZ2UKL05hbWUgL0ltNjQKL0xlbmd0aCAxNjEgMCBSCi9XaWR0aCAx MDgKL0hlaWdo
dCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VS R0IKL01hc2sg
WzI1NSAyNTUgMjU1IDI1NSAyNTUgMjU1XQovU01hc2sgMTU4IDAgUgovRmls dGVyIFsgL0Zs
YXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic7cIxDQAAAMMg6Ttre0YgtFJVVVVV VVVVVVVVVVVV
VdcBvQbBhwplbmRzdHJlYW0KZW5kb2JqCjE2MSAwIG9iagozOQplbmRvYmoK MTYyIDAgb2Jq
Cjw8IAovU2hhZGluZ1R5cGUgMiAKL0NvbG9yU3BhY2UgL0RldmljZVJHQiAK L0Nvb3JkcyBb
IDU3NyAzMDIgNTc3IDM0OSBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQg WyB0cnVlIHRy
dWUgXSAKL0Z1bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iagoxNjMgMCBvYmoK PDwgCi9UeXBl
IC9QYXR0ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgMTYyIDAgUiAK Pj4gCgplbmRv
YmoKMTY0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTY1Ci9MZW5ndGggMTY1IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgNDAKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0Zs YXRlRGVjb2Rl
IF0KPj4Kc3RyZWFtCnic7cExAQAAAMKgbOtfyhg+QAEAAABvA26O984KZW5k c3RyZWFtCmVu
ZG9iagoxNjUgMCBvYmoKMjgKZW5kb2JqCjE2NiAwIG9iago8PC9UeXBlIC9Y T2JqZWN0Ci9T
dWJ0eXBlIC9JbWFnZQovTmFtZSAvSW02NgovTGVuZ3RoIDE2NyAwIFIKL1dp ZHRoIDEwMAov
SGVpZ2h0IDQwCi9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0Rl dmljZVJHQgov
TWFzayBbMjU1IDI1NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAxNjQgMCBS Ci9GaWx0ZXIg
WyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwjERAAAMAyHpHd92ZWSB oytVVVVVVVVV
VVVVVV1/U8k8iQplbmRzdHJlYW0KZW5kb2JqCjE2NyAwIG9iagozNwplbmRv YmoKMTY4IDAg
b2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9J bTY3Ci9MZW5n
dGggMTY5IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgNDAKL0JpdHNQZXJDb21w b25lbnQgOAov
Q29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVjb2Rl IF0KPj4Kc3Ry
ZWFtCnic7cExAQAAAMKgbOtfyhg+QAEAAABvA26O984KZW5kc3RyZWFtCmVu ZG9iagoxNjkg
MCBvYmoKMjgKZW5kb2JqCjE3MCAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9T dWJ0eXBlIC9J
bWFnZQovTmFtZSAvSW02OAovTGVuZ3RoIDE3MSAwIFIKL1dpZHRoIDEwMAov SGVpZ2h0IDQw
Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgov TWFzayBbMjU1
IDI1NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAxNjggMCBSCi9GaWx0ZXIg WyAvRmxhdGVE
ZWNvZGUgXQo+PgpzdHJlYW0KeJztwjERAAAMAyHpHd92ZWSBoytVVVVVVVVV VVVVVV1/U8k8
iQplbmRzdHJlYW0KZW5kb2JqCjE3MSAwIG9iagozNwplbmRvYmoKMTcyIDAg b2JqCjw8IAov
U2hhZGluZ1R5cGUgMiAKL0NvbG9yU3BhY2UgL0RldmljZVJHQiAKL0Nvb3Jk cyBbIDkxMCAz
MDIgOTEwIDM0MiBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQgWyB0cnVl IHRydWUgXSAK
L0Z1bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iagoxNzMgMCBvYmoKPDwgCi9U eXBlIC9QYXR0
ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgMTcyIDAgUiAKPj4gCgpl bmRvYmoKMTc0
IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1l IC9JbTY5Ci9M
ZW5ndGggMTc1IDAgUgovV2lkdGggMTEzCi9IZWlnaHQgNDcKL0JpdHNQZXJD b21wb25lbnQg
OAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0ZsYXRlRGVj b2RlIF0KPj4K
c3RyZWFtCnic7cExAQAAAMKgbOtfyhoeQAEAAAAAXBruRkTLCmVuZHN0cmVh bQplbmRvYmoK
MTc1IDAgb2JqCjI5CmVuZG9iagoxNzYgMCBvYmoKPDwvVHlwZSAvWE9iamVj dAovU3VidHlw
ZSAvSW1hZ2UKL05hbWUgL0ltNzAKL0xlbmd0aCAxNzcgMCBSCi9XaWR0aCAx MTMKL0hlaWdo
dCA0NwovQml0c1BlckNvbXBvbmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VS R0IKL01hc2sg
WzI1NSAyNTUgMjU1IDI1NSAyNTUgMjU1XQovU01hc2sgMTc0IDAgUgovRmls dGVyIFsgL0Zs
YXRlRGVjb2RlIF0KPj4Kc3RyZWFtCnic7cLBCQAADAOh0fu8tTtHQLErVVVV VVVVVVVVVVVV
VVVVxz9zkC4UCmVuZHN0cmVhbQplbmRvYmoKMTc3IDAgb2JqCjQxCmVuZG9i agoxNzggMCBv
YmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUgL0lt NzEKL0xlbmd0
aCAxNzkgMCBSCi9XaWR0aCAxMTMKL0hlaWdodCA0NwovQml0c1BlckNvbXBv bmVudCA4Ci9D
b2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUg XQo+PgpzdHJl
YW0KeJztwTEBAAAAwqBs61/KGh5AAQAAAABcGu5GRMsKZW5kc3RyZWFtCmVu ZG9iagoxNzkg
MCBvYmoKMjkKZW5kb2JqCjE4MCAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9T dWJ0eXBlIC9J
bWFnZQovTmFtZSAvSW03MgovTGVuZ3RoIDE4MSAwIFIKL1dpZHRoIDExMwov SGVpZ2h0IDQ3
Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgov TWFzayBbMjU1
IDI1NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAxNzggMCBSCi9GaWx0ZXIg WyAvRmxhdGVE
ZWNvZGUgXQo+PgpzdHJlYW0KeJztwsEJAAAMA6HR+7y1O0dAsStVVVVVVVVV VVVVVVVVVVXH
P3OQLhQKZW5kc3RyZWFtCmVuZG9iagoxODEgMCBvYmoKNDEKZW5kb2JqCjE4 MiAwIG9iago8
PCAKL1NoYWRpbmdUeXBlIDIgCi9Db2xvclNwYWNlIC9EZXZpY2VSR0IgCi9D b29yZHMgWyAx
MDcyIDMwMiAxMDcyIDM0OSBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQg WyB0cnVlIHRy
dWUgXSAKL0Z1bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iagoxODMgMCBvYmoK PDwgCi9UeXBl
IC9QYXR0ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgMTgyIDAgUiAK Pj4gCgplbmRv
YmoKMTg0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTczCi9MZW5ndGggMTg1IDAgUgovV2lkdGggMTAwCi9IZWlnaHQgNDcKL0Jp dHNQZXJDb21w
b25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsgL0Zs YXRlRGVjb2Rl
IF0KPj4Kc3RyZWFtCnic7cExAQAAAMKgbOtfyg7eQAEAAADAZ5OzqZkKZW5k c3RyZWFtCmVu
ZG9iagoxODUgMCBvYmoKMjgKZW5kb2JqCjE4NiAwIG9iago8PC9UeXBlIC9Y T2JqZWN0Ci9T
dWJ0eXBlIC9JbWFnZQovTmFtZSAvSW03NAovTGVuZ3RoIDE4NyAwIFIKL1dp ZHRoIDEwMAov
SGVpZ2h0IDQ3Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0Rl dmljZVJHQgov
TWFzayBbMjU1IDI1NSAyNTUgMjU1IDI1NSAyNTVdCi9TTWFzayAxODQgMCBS Ci9GaWx0ZXIg
WyAvRmxhdGVEZWNvZGUgXQo+PgpzdHJlYW0KeJztwsEJAAAMA6HR+7y1O0dA sStVVVVVVVVV
VVVVVVVVXfiYw3pRCmVuZHN0cmVhbQplbmRvYmoKMTg3IDAgb2JqCjM5CmVu ZG9iagoxODgg
MCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1hZ2UKL05hbWUg L0ltNzUKL0xl
bmd0aCAxODkgMCBSCi9XaWR0aCAxMDAKL0hlaWdodCA0NwovQml0c1BlckNv bXBvbmVudCA4
Ci9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Ci9GaWx0ZXIgWyAvRmxhdGVEZWNv ZGUgXQo+Pgpz
dHJlYW0KeJztwTEBAAAAwqBs61/KDt5AAQAAAMBnk7OpmQplbmRzdHJlYW0K ZW5kb2JqCjE4
OSAwIG9iagoyOAplbmRvYmoKMTkwIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QK L1N1YnR5cGUg
L0ltYWdlCi9OYW1lIC9JbTc2Ci9MZW5ndGggMTkxIDAgUgovV2lkdGggMTAw Ci9IZWlnaHQg
NDcKL0JpdHNQZXJDb21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlUkdC Ci9NYXNrIFsy
NTUgMjU1IDI1NSAyNTUgMjU1IDI1NV0KL1NNYXNrIDE4OCAwIFIKL0ZpbHRl ciBbIC9GbGF0
ZURlY29kZSBdCj4+CnN0cmVhbQp4nO3CwQkAAAwDodH7vLU7R0CxK1VVVVVV VVVVVVVVVVVd
+JjDelEKZW5kc3RyZWFtCmVuZG9iagoxOTEgMCBvYmoKMzkKZW5kb2JqCjE5 MiAwIG9iago8
PCAKL1NoYWRpbmdUeXBlIDIgCi9Db2xvclNwYWNlIC9EZXZpY2VSR0IgCi9D b29yZHMgWyAx
NDY4IDY4OSAxNDY4IDczNiBdIAovRG9tYWluIFsgMCAxIF0gCi9FeHRlbmQg WyB0cnVlIHRy
dWUgXSAKL0Z1bmN0aW9uIDE1IDAgUiAKPj4gCmVuZG9iagoxOTMgMCBvYmoK PDwgCi9UeXBl
IC9QYXR0ZXJuIAovUGF0dGVyblR5cGUgMiAKL1NoYWRpbmcgMTkyIDAgUiAK Pj4gCgplbmRv
YmoKMTk0IDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTc3Ci9MZW5ndGggMTk1IDAgUgovV2lkdGggMTU1Ci9IZWlnaHQgMjE5Ci9C aXRzUGVyQ29t
cG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKL0ZpbHRlciBbIC9G bGF0ZURlY29k
ZSBdCj4+CnN0cmVhbQp4nO3BMQEAAADCoGzrX8oaHkABAAAAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAB3BqwfrMkKZW5kc3RyZWFtCmVuZG9iagoxOTUgMCBvYmoK NTcKZW5kb2Jq
CjE5NiAwIG9iago8PC9UeXBlIC9YT2JqZWN0Ci9TdWJ0eXBlIC9JbWFnZQov TmFtZSAvSW03
OAovTGVuZ3RoIDE5NyAwIFIKL1dpZHRoIDE1NQovSGVpZ2h0IDIxOQovQml0 c1BlckNvbXBv
bmVudCA4Ci9Db2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUg MjU1IDI1NSAy
NTUgMjU1XQovU01hc2sgMTk0IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2Rl IF0KPj4Kc3Ry
ZWFtCnic7cLBCQAADAOh0fu8tTtHQLErVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVUd/NBxrUkKZW5kc3RyZWFtCmVuZG9iagoxOTcgMCBv YmoKMTI0CmVu
ZG9iagoxOTggMCBvYmoKPDwvVHlwZSAvWE9iamVjdAovU3VidHlwZSAvSW1h Z2UKL05hbWUg
L0ltNzkKL0xlbmd0aCAxOTkgMCBSCi9XaWR0aCAxNTUKL0hlaWdodCAyMTkK L0JpdHNQZXJD
b21wb25lbnQgOAovQ29sb3JTcGFjZSAvRGV2aWNlR3JheQovRmlsdGVyIFsg L0ZsYXRlRGVj
b2RlIF0KPj4Kc3RyZWFtCnic7cExAQAAAMKgbOtfyhoeQAEAAAAAAAAAAAAA AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAHcGrB+syQplbmRzdHJlYW0KZW5kb2JqCjE5OSAwIG9i ago1NwplbmRv
YmoKMjAwIDAgb2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdl Ci9OYW1lIC9J
bTgwCi9MZW5ndGggMjAxIDAgUgovV2lkdGggMTU1Ci9IZWlnaHQgMjE5Ci9C aXRzUGVyQ29t
cG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZVJHQgovTWFzayBbMjU1IDI1 NSAyNTUgMjU1
IDI1NSAyNTVdCi9TTWFzayAxOTggMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNv ZGUgXQo+Pgpz
dHJlYW0KeJztwsEJAAAMA6HR+7y1O0dAsStVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVV
VVVVVVVVVVVVVVVVVVVVVR380HGtSQplbmRzdHJlYW0KZW5kb2JqCjIwMSAw IG9iagoxMjQK
ZW5kb2JqCjIwMiAwIG9iago8PCAKL1NoYWRpbmdUeXBlIDIgCi9Db2xvclNw YWNlIC9EZXZp
Y2VSR0IgCi9Db29yZHMgWyAxNjIxIDIzIDE2MjEgMjQyIF0gCi9Eb21haW4g WyAwIDEgXSAK
L0V4dGVuZCBbIHRydWUgdHJ1ZSBdIAovRnVuY3Rpb24gMTUgMCBSIAo+PiAK ZW5kb2JqCjIw
MyAwIG9iago8PCAKL1R5cGUgL1BhdHRlcm4gCi9QYXR0ZXJuVHlwZSAyIAov U2hhZGluZyAy
MDIgMCBSIAo+PiAKCmVuZG9iagoyMDQgMCBvYmoKPDwvVHlwZSAvWE9iamVj dAovU3VidHlw
ZSAvSW1hZ2UKL05hbWUgL0ltODEKL0xlbmd0aCAyMDUgMCBSCi9XaWR0aCAx NgovSGVpZ2h0
IDE2Ci9CaXRzUGVyQ29tcG9uZW50IDgKL0NvbG9yU3BhY2UgL0RldmljZUdy YXkKL0ZpbHRl
ciBbIC9GbGF0ZURlY29kZSBdCj4+CnN0cmVhbQp4nGNgoBz8hwEq8TFNR2b8 ByNMPswIDHkQ
BYbYbAAAhFpSrgplbmRzdHJlYW0KZW5kb2JqCjIwNSAwIG9iagozNQplbmRv YmoKMjA2IDAg
b2JqCjw8L1R5cGUgL1hPYmplY3QKL1N1YnR5cGUgL0ltYWdlCi9OYW1lIC9J bTgyCi9MZW5n
dGggMjA3IDAgUgovV2lkdGggMTYKL0hlaWdodCAxNgovQml0c1BlckNvbXBv bmVudCA4Ci9D
b2xvclNwYWNlIC9EZXZpY2VSR0IKL01hc2sgWzI1NSAyNTUgMjU1IDI1NSAy NTUgMjU1XQov
U01hc2sgMjA0IDAgUgovRmlsdGVyIFsgL0ZsYXRlRGVjb2RlIF0KPj4Kc3Ry ZWFtCnicY2AY
PmBujT4uhFX91ArDHz8vYiKgOFb1XUWmWNUDxbGqr82x/P7jGhD9+AlGP6Ak UByr+qI026wk
e0wEFCcvQOBg/r7XkvZlQARkoEkBBY/e+AxEQAayIBoDDiAqIboIqoeoREbk mY/mfoguOInp
fuIBAJKIiLUKZW5kc3RyZWFtCmVuZG9iagoyMDcgMCBvYmoKMTIxCmVuZG9i agoyMDggMCBv
YmoKPDwgL0xlbmd0aCAyMDkgMCBSCi9GaWx0ZXIgWyAvRmxhdGVEZWNvZGUg XQo+PgpzdHJl
YW0KeJykvdmuZUlyJfaeXxE/oOD22f1dgCABAlrgg54bRFMFIZKCmgSE+/fy tWxw831PZFd1
s8DMc1fa9nkwM7ch/Xj2//6ntP/RevrxL3/+8fwcjaD/2OD/+0fqOf8oKf/4 U3+u9OPXH2mM
dP3cBL/++Nsf/+cf//ZHqksKH+uHf7LL+qf/9c/843/+f/74P6TUsj8qUur+ ubIUla+fm+A3
pconUmoNpT77o0dKfX7b1sdLfX78L3/803/6z//xH//lv/7bj3/59x/7d/rx 7//ybz9QAEgT
yhrj4c9f+nOhACEIP0nwtz/+9b+3KT/bk1bfDco//rc/0o//+4/0Mz37/378 f/uv//1uUF/e
IPycy1sRfmqD/lkb1Kp9zp95kBD9CT/1G474T6wF+X/8xmc/SfKTayN1XUP4 9/6HTEY/kzHO
wsHP3NneMq+fYeE8P3N71vzxf3Fa9kfl58pjbHJZJ6P9LKOgBe3nGKVKo/vP smZ9gfXnaiXx
S5S+kfkzP08+ZCxw/cy59de38+ded21/+/wspSwDn9XQlPSz5jx/CN1aldBK uwVfQjceVpx/
1lQxLruSNrECDALdfH7W/Uek29BcpUt5dXebdOlnqVbv3B8Qan0Wad/+S+h2 MXOUuyez/CwT
H1/gpuxryOdt91NBnZj0c5bySDUVk4MWtqdPa3afE2NTfqb5dOle6U89kA7D 84x50Y1dTNFh
mFmHq/9caz6sd8yahC6vJ0n7cs2b7m/Sl71hmq+FWXdDucjHz92dLN3Y/Vz1 +Qa2PZ4bnBss
RcD+s40ln7f5sMP7m5n7gdjhPckj3XQsZrG8Jw2lW/t37wRrq0o3O6tYP9NK 1cpLz6i6MFlp
qq3Fv2etkx/t4VoGrp6lxpWKNnbu1Sed6klGfYNj/1MakZ4kdCX1eqAv6Xwt uV90bf9iebve
vfGErv4cpdSwi3Y31xhnFtY+Csp8zcLKP3ls3eDzcw9aLGt/m8uzy0p9V9O8 QG6va8nuAsus
38G0cj2fa6l1963pCs1Zzt9VbFcqSKjwLN/LcTxZBmaDT3smwTz3zUVIzo29 QvducbqZS9EB
XDJLG0xt5W9gecp4jcU+1zp2xwXWn6nzgPL+bLDt5fF0gr3mZpQrr3eZ3Sb6 BtNI69WkPauz
vdu5a184P3Y3S1vF27mPJA4HjzrSzckjWaEvaeXe7Omi20d1r/rpLtDockln 8aMlPY9rWt7T
J7t/2Xa1dbe3Xq73oT+efX8k9jaCe5W1CBIaqcrKyUVOor0E9lD1ISON3Upo z7ys44Yr8+sP
/TjLRnn2Vv7BetMeTEJ7K2ajm3LrFWtcjxt/7UOhFzkdVtVTaeGS6m9w6Pl1 ds7EHFU5WdBo
HRK220Grdd+pByS08tTVsy8ma21qupn26cWZ2AcB+C+HvqSSOXWUCLJB4+k/ 94pqnO25T2+y
KE/bv0fcdIBSmSPO7gaxG/q86HBxZdmHZR9VNkNjTbmjWq9V6J4K/ufcFQTz nHrupv1jQ5tv
WVWWfKm9C93eRs8jO6aNlqR9a2/CA31p58Z8Lrp9R3XO056wNofQYTyrHAq7 siJ09clyVWc9
ZACWwjtv8wBL9h8HYZX0DZy5yRW8+bouLax71g6kLXx6rxfd2Gu3LkKPnOd/ kz7vEekcm7G3
g0zUnsvMg1jBX9rrvUCli2sfVqxbl75COor79m8X3bsSqXuzjVJNrrICUXfa 2+5p0vRH7ztQ
5tVWXBFp77FU82vl7AluI18rZ/NfdchK3HOgbdyzXsYSLiPv04UQr3OMd0u1 G92+fMe5sVlF
z1PuT/JSoNuNqSlHpgBNrmRVA/OAzpXx3HR7g9QmV3R58jA62QHh7B5pr4hS +gs0Ns/GUPbf
hje9Mgh9n3Y6tJuZHqcqbeV61775+zpWpGOvq+yrune9jfZejHo5YlplIGYp B/rS2QMrF+ky
+GzlYp/iK2IzQ4nbQxYiGpBSey2GvV1yKtdi2Od2Hu1eDPt8b6Vei2FD2crb HI7S4QabXZpX
p9LtOzrJyfK0aeXt42a9xn/fzf15zxS2H6vZp6gymPich4Bwtkub/XRb63Xv hC/5OAlHvZuz
9tQR2jfwONCXDEMduV90+/6eTQSQVKrOJg76/Gp2xg1V383eF9iodkNhPrio yryP8T2ck/LV
Gdf9KydunjD+6BRZwUCXwAvn+xjfbZncFOcYR/vTvFh+gueSk2N8F6NSbDjG N7j26MTjOYNv
oTAUjnF0rpI9O3QN50K9j/ENDpEJ/RjfUB0qEfoxDvBZ5T6xedrW9gI3K7B6 i8fzbmGTFReO
8d3CVIy3UjpwVj2/j3GsgaZMiB/j+/O2lA3xYzyTX+vxeN51U9S6jnHskNHG RfeuROvewkjr
YfL/FDCvfp3YeQsZqckNNMFusRos7SwHwSqPaAH2x1sWjmzmyPtkKKtfbCbA 1mp/0c2hQmUa
VfuipzcraQ9neskEA+rJVuKWXNvQ/ZOFbjNRrcmkDh+b3ZiK+wx3RZvNGi1C TsbxmdjjLcst
MgB7Z23mWT7GbV9ktMtoS+jWU4TxWOAstJK9xnq8K9C+PNN9p2RMBlitQ1ce 5TI2ZKIMwL17
ZMuPmmTLg7LoZd027y892Yf96DOe/xiup+T7ntgt3Iduu+imiSd7r4zejO5p RW7RmpIN66I2
aLf+mcunKWfhTddTszVmr80pW630It17VpPToYOn0e7tA03mZGHcCO3DS6Zz M6PF6PYlqMdm
Jt2uojbde5tD9zmeqd2n3Huhy/ov+/CD6vFa/0V1JOHzDaX5jEvAHGUfBbaE RcAEHe+6KGAC
7Lnfghs+Xj3PFwgGarT7aN+gKEte4OrUuB0BE71ZVWUhEzABitx/fd5kk9zg PlRtTZwm7cNt
znc7N6u+5aVLwGQ7V15xR2+6LcaUe+dvcHP046KDuDyfS8AE+JRmaj9piTDG Z1re0/cVVbaY
mSUq2/2ziryNGyz8zOsvNKT7gEOb1l9pSOfRkGLki+go8LOKzIphCj9L1BHf GtLawO/toa6i
1/W/92y5FqB2XOvjd2A/WrEKFRimc1OqtqtOYV8cghhY9xYaODkD3dKLZpfn WrH2yGUCcHMC
UDQdaBytmIM1STsW5vTD32UcrdgBu2nFKoRqHI7olGnFdg82H5elEaLtqlNX qEFf0vkt4jwX
nQ/SOFoxB2tSebxBksQBXMG/dFOxgx/CTCZTbjSsPRyDBrHv++gYL7q9pyv4 jV3eZrt1jJIc
nQD3XQsNtENlH+Fd2PQATrnCWF4tCu27qAldwQZa7NvcJKLeb1T5GvQl/dgs 7zjgrxeYIVHd
YNcLApXMhJPEIK35aemmA2cHGWRD++SqNjIKNjllfmmzyRmcpdeKTXBYorsx c4x50W12j6o8
lDcfrQTsXpZ1u6dr/oiQdu6mg2w0ZAk6uOek4r1hQ9ApQatgED/eIFXGF52w R4B2i4yuzioL
aUHM/yVg4n0VFsiuF8v7XkibV5yyiZzuvTC/bL3qRO1NC+3knxc4ofjvNqWV dyrAnKZNwd4s
AZRZadDPYdFl1aY23K8QlnY1T871xw01aM/edBMMGaGFBz80/FnC6Z9K0Bsc +YRYjEM69Zvt
yBfdu8c6ELjKnuLHp/8dT8oGnjD/FgzHZwND2a5jsWPC57rXZgeDUspFt+/2 hwOo5ZEuK7cM
Ooosve+xn70eiHRV5IVItzs8WtG1ro9JfV/hPekJt5mOHxHCQ0RuN50evx3K Yd6Cr7+xQZYe
xwfsoilhYyu4Qoe0U5sFqxeddx6SQCs2SAJapY8K1O+/r0Y46Lu5Q2Zb60Bf MlN13nRnRkMj
HPSzfjxy2WBxbRlZ1k2HurbnuPU6JI4x7i3aN2s827VF+4Aoq4taZeR9lm9O l7O8VEYO0HQZ
OYBDZWSUl6HVZc9URga4cKPFBbJvRapkroXkl7jTDeq6ZA5NRuYgUHDG1UsZ OUDTZWQB+fG+
cJ9Hnso7BBeezDc4hAN4VPZFY+TsMUhLfPDmHujijBwZGSX2kuSKMhmZEzWe fsBfF9hV9sXo
zD7SgXQUB4XIQPeuROoeDTqTc66cvx9hCvThevbnt6AvOPuWPE197gLjmeTf fgb1c33Igz4B
ylhtof8N3j+8Hz8dOuAL3Df0gzfWgtOuvsFIiYkGd/8R1G2Mh9iZwt9Z3wkL XiTVmMFBH5WV
odqbN8u18Fg+etxea4vBtc97G05b5oduQijUReQsFx91Z4ssl0OR5Tqgs1wb GlUvTme5dmPq
mDWyXLvJs0bu6ks694wn8GG/XqCzXAd0VmqhT+W5Wa4FU4F00U3n4QPLNQNj 7ywXml1XitcV
3m6pW47XGl5k5y0VbKhDXrlYLryy8un+HL4HCizXAQPL5eBhpRaUaStwV/px p5LloqP2/2K5
ABpr5izXBvfROa6FtOsd6cW742F6jXrRvRfml61XnajAch0wsFx7aAfU0hfL hdfz1ldkuTAr
fY6b5cL7PIY5sFwRcpYrgspy7fL2B+1mubySw0ot3HtP4K6+/tBn+2dedO8e 60CcM2e1+6ha
n4TXAwZGa/EsW9dK2wdwn+21IieMRG66fS+nGeRe0i3lk/3e4zPp6s91P+KZ dNOmi253c2pT
jNECWO1GEUYrQIfROqAcfih/i7fz+9+BxwmgMVBo7Jj9uRgtgHJVHkbrdD7w OA7qCYxH6BZO
ZP87MloHPHt4n+zJGTtltPZMjfWi8xmNjQiKDH1T3jWYbGWMFh9e28VA8fUS t37cmHiqLKvV
i65CtTsuRovPrpTCnNEK0LzelBUc4U25ddVtnDdlvDhdnDjal0srr4UE5cfI F92QbRwZLQ5C
HU9gtAI0w5sywJwungotnEtZsgM26AtLYKDQQjlxAqPFV+qqd5/RhRm535QX 1feB0eJETb2t
zpuyg93firuaXQRGC218urI85035ruStttsnl6ntenJdXfhJDd5fq+1q+wfU drW72q7L0ML8
K/ys/b+ttmvjVtu19EFD9xnMH9R2m/KttjPoUtsFOmOFdnlPGulWx0Fx9FLb QQj/prZr49bI
ffu7fFDbUca/1Xbo1De1HRrxUtsZdKntAp0PUvmgtmvjrbZr/YParo1vajuD LrVdoDO1Xesf
1HbUAd1qu7bvuW6qUgfrN7Xdhr6r7aBae6ntDLrUdgb+eoHf1Xa7vrfazqBL bRfoTEPX8ge1
3e7Sd7XdWXqutotL1NV2gc7Udijvm9oOjXmp7axzN137oLaDvu2ltjPoUttd dKK2ww+YZ1xq
u/3ju9ouLBBT210LydR2ge69MF9qu/3Jd7UdVXVvtR1+fFPbGRg0aijlm9oO LXup7Tb0XW2H
5rzUdrvh39V26M1LbWfQpbYLdO8ev9R2enyev9MHDd1nMH9Q250152q7uDZd bRfoTEll5V1q
O9ANblFX2xl0qe0CnantuNZN72DqOBwIsFiLUPmgttPj1zVy3/4uH9R23Ei3 2s6gS20X6Lzz
5YPazio1jdy3v8sHtd3Zza62M+hS24Vd7zNaPqjt/Kx3JdFeXN/Vdmfrudou blFX2wU6U9th
sX5T22GbvNR2OMO/qe0wey+1HXr2TW0XFoip7a6F5Je407narsGKY85bbYd9 +lLb7fZ9V9vh
ZvmmtnuBorbDMLzUdgZdartDF2fkk9qulQ9qOwMvtR26+FLbGXSp7QLduxJV 2+FG4jk+xGvh
TwFz6+OAcGaBikWOudl18g+4zypooX7Jx6VWvWnUHQRWPs88ED+GpX3PFx0Y 9fdZOswSCVfJ
WOXHDe27Yrzo4CbRl9BlWimTXVhe76KzBaYfViKESjXGYTSl279rVo5qdvWJ wWm/hL172pbm
CTW6tYA9WmFkepHzK2VpjEPpOJcc8Nk3Cy+oDYlU32DBlos1pgyqbJYctNLo hHoN0kFItdeL
rsPmLRGa8OsgnYG7kn2o6MztkSm8qx+xV5BKxvMcyEamcAccun0SrSTldTuc Bw5qCAvtkR0c
oSQX0E2XxJlD+ktlLy6Fpar6DfpNlmnXzvblrpcRblyd4b2kZfWvlkUe2iMz pnKM5Fw4CMnO
0dXmYyOjN54yFxFq4hF103XhnkVDTRvNhsPOBgv23+neS+89p1txH320LG3T jYUDGK70ATO9
ln8HhnsejlgQ0ML9PZ89yGPc9/zcBY06LjpYD9VHR3uqewyY3iJTQOunCMEG erQXXRPzUvG3
anoIFFjuar0tz+s6mrBOzi+OEf2gZu3Qnf7245ZxwBmMhQPcjt/NLrNTd2sF sG7RGccyp2kn
A51D+wyZujwPmMUGSPsy2oG0L4Pq0kN32qccgjqAjS2gJjlKXVqbe9UKT3uG rMkFeg3ZrNa9
Q1fVnDlKaxOCz5SFbBp/h4K0dkCX1nZ5rXL2grS2G7OXSxDN2OQO499LWpvw MXieH5e0FkGX
1g7oUtiuZNFnKkprMzCNRlfFHvuS1g4YpDU0u0b2l/U+awYdgzZ7c6n5ooPL gzK1Lq3RWy0F
Zi5CQVo7YJDWDuhSGLzyypo/Lmltg5VGixcdLQEvaQ0gzaujtLbB3MnzngUy cEU8r4VkiruL
7l6Yul59ooK0dsAgreEJrCpn5dIaXBmF7XBpDbMil2GQ1uCjR53akdYidDT+ AVRpbeILFVud
wziVuBQ2MRnP8+OS1iZs8J9+0b17/GV+fgqP4JEH+9qbpd6QCsI+jnyoKGOp 5LnX8Y8I4dLX
m+WAmxfJrVp5T7u3BeqVmy+FN6rnuhb0ZWdL8DddUddE3MztWfZ8VG3vtda7 vcr1Rzfavu6K
VrJqP5C+muz+33TgipWpnSO8G9JyE9e18A4HqmIIe9M1UQdLedK+Ju9cVi/N KSm8SHmBpSWk
g7DvunTRFXFD5pp5VK6I4Cxz2iDs83BcM/xeCV/mzrbPBFlyLpstOMKm+/P9 q5WXHg4PB1L3
oUPvbUOabLYq3et/BNnsQEE2O6DLZnDCbMpCuWy2sMbbJXMtNN/WlslmeJeS MTx0sJ/Wu9Fl
M3+qOrLZgYJsBjDrbeti2G6M+OG8QLI+QeZaQzzaL9lsg4tG4YEuzEiQzXaJ LQ/hEV02w0TR
Fy7KZgd0mQsvQT0HcU1HsTfVPhjduxJ9ZbB3WtH5hL+7W0/glWDweegzaO5S 59vsJhUBPHxk
+PYjmINJBfyjxF7cWmh/13XcUdNj71wRhOfGEhFuT2G7wYuyqQXBR1BULPhS 1fzD6pylSs/M
pCKANipwEpJT6zBYcBLaV0TUYtLtSDU6wfvKl/mhsxekwGDBt2ml+gQGK0CH wQqgMVgob+/b
52Kw6DJGWdAZLDRZZenDYAHcd/2tDr9AY7ACmN1tzuw7wk0y6DPUb7qh8SkC gxXAw2Cx2aIX
sOuFjluiiDvXEObkobXMoYMTyuMqwqca3RZwozo8QIfBCuBhsAJojBM9t+iG HRgsgmuuF13P
6bkYLIJz1YvBojsXY8GcBYJ6e791bQAzXQIuunthqvegT9RhsAJ4GCyAvao2 xBgsTMGky7Mz
WJwVvhUGBgvzN0dbgcG6IGOwLlAYLPo3GuNkDFaoxBgnQHsT3+pwNLrQATfQ vXvs3mCTj916
8Jy/w6EFN742yu/AIybTj4ymYGHNNTno7rW5tzVdYwPdUC/doA4HqDpCuwHp bbNSu25K+OW0
VftFZ2YqQR1O1x+7W0QdHqCjDg+gHINwp1qrfPj7aKIDaGpuOi/NdKvD6Rwk l+ah884fTXQA
tdIjsL7+jo1w8OxmWMPVWx2OmVKp9tD5jMZGOGhnfenqcRlYLnr4tBQOdjrU VLocxS0KF5r1
XFsU/k/NdAVmXAFnJyrlnOUK0GG5AmgsF8rbnGy5WC7Um1KLrBS9gESZGhZS gWbqen8B1JOe
j8ZycRCq6sjVuOJAh+UiWPjx4a6O69IFwskpR3U4WtjtUdiNKwo41PpcdGFG gnHFrmaWPi+W
ixM1WlBf/7pAY6XoDjVy4K6+ohtYoHtXonXvG0nO8aMOHzBAU9MFVeGNAg9t Ve6bOjyARx2O
j1tdctCJmhuVqDnAUYcDFGuPQwczlPQ+SysUxVOuM1GHX5CpwwNo6vBBG8Cu 86fqcIBpNbkA
RB2OprSqNgymDgf4VLWGMHU4OpfoNO/qcAzCqPqSZupwjkyfcn6JOjxARx0e QFOHA1qi1j/q
cA7qWE9Qc7PRqbdLHc4RbKlFupp+biYgX+rwAwZ1OEem9KgOZyWjpR9RHS4j w21x6OD82aW8
7oczGKAlPRF1eICOOvwCRR3O8mjZGdThAP0mE3U42ydmEUcdjn48dd7qcIBr 9qgOxyAUO0dN
HQ5QbzxThwfoqMMDaOpwQE9RkwNTh3NGZN+dvfTec7IVK8JoscSjDg9guNJr hWa5/A4M9/wG
d7NSvL+raxLDPV+h1lnzohuII6HinarDAS4RQ0wdHqCjDg+gqcMB7b9ULlV1 OOrdB+p1HdVm
6vpwHVV/Mz903t+jug5gVIcH+KjDAc6V2ymAdbfe32V2xJl7LjqHjjo8gKbm Zl/MgsXU4ah3
pb4uOm9fVIcPjHzqyjOatMadk6MyZJ9YuJnfQ7ase2fI6BUtU+DSWoUVcYnq 8AAFae2ALq1B
QG0KubTWLF7IkdYaDOBb/3FJazBGk6MlSGsRdGntgC6FNZh8jlsdjpqdaVS6 GowJXFo7YJDW
0OwW2V8Z6acEAU6bnVYuF93ecEnfklxawwVRxhP5tgMFae2AQVo7oEthuIUY NC5KazD3efQp
49ANN3IyaQ0gTfmjtIaDcERLJal39HQvJLLg+dp73xamr1edqCCtHTBIa1Sv 5lsdjilQC0mX
1jAr9sbt0lqFxND0eVKktQi5tBZBldZgzZhVbHUO41TiUhiuxdyCPdOXNLrm KMJ96LEOxDD4
qMMHtak3Sw3+RRjMow4fYFZobe7q8AAddXgATR3O8mbrr23R7OY7K3aA9QnX wpc0evZ0002s
yVsdHsCjDufHKauYQjU3K1lrHOhLBqH1Fx244narwwdPHjWBFHV4gI46PICm Dmd50r6jDme9
syvXXqW8wNKaOhzgmjNfdNPsuo46/AJNHY6P9xaa1wy/V4IskL659lSEVXDZ rDPS2fV536PU
5ksP1/fhJ3UfOrjv2IY02awhEEeP6vAABdnsgC6bdXB2aoXrstmu9xGLPpe5 dvue3MuPSzbb
oI7hoYMxYFFmwmSz7ma4LpsdKMhmBIucIC6GdUYprd9AcZk7MhcM9S6rpC8Z abVUPXRhRoJs
tkscJd/qcE7UUNMKl80O6DIX7OT6COLal7axqfbB6N6VvA3f9SUcP8dwa/fw s/9VRF8xfO9/
GdH3Zfjesxu+q1gH6+vws/8+oq8buuvjgf/dxwcb98/gvAzft3DwkPIYvu9N sQ6EZwZYw/Pi
u+hEBYVKHglPFEB4TGQ1WJ8itgBUE4WKIK9wtzDoSxojqynQeaM1mutX7Mmw eI5gQCZW9sjB
ED05mdsFm2vf8NglNMKXR79At+c3Q4KD+ZSZNlRTr41spg0HSseZ8YCPG6Iz LJdAxxB9rxmG
soH1oRqiZ4kW59CXdK7TCsvAXy/wGKI7ON3A3Byu+gyG6GazGOgexBzqhI4h uoMjGKInXIgl
LgWwoKO+lgzmpOvHx2A9zSZ0xxDd2Cw0Rk1SHVrBEN1AjLUbojuY3cAcVtBg swzixxscq7/o
ygO+HpDHjzALNZjmuSF6VZE8LBAzBb8WUlblQqB7L8wvW68yUbsvxxDdwScY ouM7mNYBdEN0
BDoqAZRZIQeLReeG6I/wEKjGDNEDdAzRA2iG6FBdPDI6xxDdK8luYL7Z+MVG hzC11CuM56J7
91gHAt5bnCw5zvzveHKBveC99RkMx5lzRWHNmVHLtTa3uLXSTbf02bqHoNQb XCnriSRBqQ8U
glI7qK+3EJARN+3b3z0EpT6gB6Vu2HxgUnoISt1MXdM92HSD51p5DvQlnd/s a77ofJBCUGoH
/fjsmBNuhSpPzH8KKA+IFkSeJsMZVmmLlPtSVcv8BmWdQ6gDlvR0qAp0DkGV p0/nB9w8cK/d
LOo7zRQGeFZmK4BFPU8sg76kMZUiSKDzMx+u1FXN+u3lbOD9jTa6B4JWVC8v BzG1T4E5Ilgw
WxWlJrfk71VvPnNjgDHpSPcq61U1n4HO+huP4wOG9d3NnPQjiN3bbLgchEZ9 TTGa3/tdTqyy
bLgQ8kCPJ3rmEmoUhWmZq/dXh/MM+jK2BFhpbYk5pobUIBsGvnYEuvdCUpP0 MMvJIjDEoWDI
VZ361p4Rb6Zd93z0ZjpDZjxmoPP7ZsrDvLax0LC/I8j+SD8CNPBQ+qYb2exv MaVJVyEhHZtK
G8VA9+6c2t8micnHxamhQI+zwLkh0ArZUeEm6Ygsyilwus4QvDLLx18Cka2H nubqL+HQE/wl
DOzL/SXg8LqUB3B/iT0VT9K7XcOcLFWo9RMKFI2eY85INxiYVmbuhDnBdpwy J+YvYdB4gr+E
b9sT9RON0UV3g+KWOXLwg9i3cz+QlvhAvI90YUaivwQk7iJnpNvkDNOW9BMK NIDT/SDg/a/M
y/GXQAjltS66dyW6SLaASgcmq9b/ziGiyZb++ezwGfT8HPYt7w4Lc+JgOEX8 28/gvMKcmImj
thB23IyK2V9pMhjR4ALbYSoYV11NUTdz+f586k57fb7oA+AdRJQKaLuvHbVM Aj07BUZy7Wn3
jlr2gHXoEMKB3qFxR03c6uCXz446UNhRDp4dhaAoLT33jkL4FD5onp2ywHnN du+ohbvMBCyl
w1toK/eOYqiOJ8cd5VDcUQDJpcfNsxvDJ5E3uAewxZ1Cg86U7x0Fm8yi/LLR hRmJVm4WCCPu
KExUL/XeUQf0nYJAGC1uHh3FYovT6N6VuIVdoiejVWt/x7W+Pt2tBwwMJWzu crmu+mXKuHjV
wwSQ7o6BzmxXonx8wCAfL7OTPnLvgkP602/5mAaA45KjT6ODfOygbR1mMaA+ x1b/nwKqkHu2
zr53qMgbJ+RwAEPI4SdIyPpugxgaWXk0f99BXgTK/oEuqQfwCCGHHzN5Gh5y OEIecjiCGnL4
MQvdEUIOP+Z7MU7IYaaMENHQQg4fqJ+QwwG0kMOAOuPT9hByGIMg16qHEkZj RLERQg4/JiQF
uoxEKSKBeHDbJ1PbI6CFHD5gCDmMMaSLh/M/rJkvDoFPYgtrWS86hzzk8AE9 5DCmk2Eyegg5
jGQg6ZF70UMOPy7uecjhJ4itHnL4cYbRQw4fKIQcPqCHHMZw0ZZzhJDDiONC IwJfwN8XukfY
EON2C65hf4cDgCFPahq/Ac9e8m9P1p0AxswpXuBHMGbdga1r4SvetUMh5o11 dXCvIN93+3qX
geh24+lOidBz9PkO2mKX8oqtmlxP0JSU57Ve1xmxk57BYoMdOuQugHLmKi+Z S/Op1yFqxFRn
fcDdDyhEtTyVGtkArzfd4/Ievy8fVgZvs+PnT/lcEhicM+lAsTkGhs3jwxA3 mRkuBjqDruF3
8JyF7/apZeYWd5PoKaXF9ndcmglrTrVuH8Bzi8G+WWxPwjz1zf4/r3MKNsPC rh+6IeMR1SK0
VabM4mqRAB21yAFVi4+42XM83/8OapEAmloE0F7W41KLAKz1KUHdwfwQRXkH U4uw83RECXQ+
SEctckDf6cjkNcOp4X/H/YzsFHT/ukBcnxGkCWFhRPEeciYhzwIfPbvnTDpQ yJl0QM+ZhPQs
XSHPmZQt+IclL4AMO9P5O+kDYT/pkQajwrffgT4akcxyJtECWTTJIWdSzsbP eM6kAzFnkppD
O2g5k9DALKLTyZkUar5yJsGslJGPgtIf5qLCnZ2jIZt7WZAHYCEqhh6BDrmL hmxPN+DI5hji
Sv8AHaV/AE3pjypyUsgNOHKXMT5Kf/Sj0BEmKP2ZqoGB2IPS/wLdgOOAJ6uA RRqIp1TGY2i/
6SzFSlD6B/Ao/dlsKgPPyQCr5Eu/r83uxlmfJAzPqPqI4Ob2m81YusnN8Nah FcztDQxK/wCa
Mp9ZCh7VTLsBB8B+PQ4AUvHgKP2Z94DxDYLSn5bTJbVrgZj787WQEDEh54vu vTC/bL3KRAWl
fwCP0p+JIpJytG7AgSQfOQVQZqUUueTdgANpQ8gautL/gtyAI4JqwLEhZa6P 0j9UYsp8JiuZ
LR3oS3cec2UGuneP1Sx2M6+9nnPV/+53soWa+/gdGG63YlZ8Z82VKil+rrWJ VAvzuemayr7x
ditNnz7O7XagcLs5aPbDVYwVvv0db7cD+u0GA2cm5Ym3G+zGlz+Q8taCMbI8 WoTbDabkz1gX
nQ9SuN0c9PO8WMyfoPQHOJ8sZ6Up/WkvSvNtV+bDylL1oEfpTxNNhoE4dAc6 Sv8AHqU/TDmV
pzNlPi2bs77kmdKf9qz0Vwp0fuYfpT9AEZtc6R+go/Q/oCv9WZ6tClP600hY FC9n9ayXfv/r
DzWLrlFjcPobj+MDhvVdmddq/QYMSv8AmtIfJa6kJ5Yp/WlJO7NokkXpD0gs rYLSH80Wd2JX
5nOOaWARlP4yDLigA917IanFbZhlU/pfQ2FKfxkyU0U/Zn/dl95MPmQMyTov obf4fXOU/gDz
6HLHitL/QEHpH0BT5nNKH12FpvQ/VsaH7lvntM9DfRqCipLmv7KM/Yao5hAR bxKYrpKjC3T7
HMv9uVSUsFquNDlzFWWAQv4vB11FSVNYphgLKkqa/84VNPw0rRXf3KCipDmx qJ8OHd5bs+rv
LORmHcb8ev4vh4KKUsBcL20kGqOL7gY3FjT8bExJere75REMQ5JpdJUuzEiw PNolNvKEQUXJ
iTLx2C2PDuh5vWB4XJV5ccsjtLGosGh070ouy6P9vb608uFYeso3n/MzxwiY f09y8zw8uTlT
kv9zqG2M/0Yq9TH+wdp2L622MU9t6EGT6J78KR4Qdcv98WeI7gnfJZpN4bK1 T8R0aosHZjuF
ndcqO8GfNEBPeMOKP+v4TbH6iRabT7G724jC/qf+/E1r67exEZOsf/pP//k/ /uO//Nd/+/Ev
//5j/84//v1f/u0Hipo/moRURc489UnmT1FGkiD81Oiq//o/2KjfTtjVoHQa tH/OehpU3w3y
OfXP+VPiwuLUjj//KkRsQUpzkPyVpVw/07I7Y4sIPyUuLLsdfv4+RGyhV/7e QE2cOvelhXzV
WJnH87syuXF+g2BgewAJTTDBDX5DUwy/K5Lslj3CABkQhRB9yBrsYlSWw8dk 9RoDPk7SJRjo
7hFjaFTRe5IOkRiaWSoS6mtfea01yYypdA2MfYM1JdzTWB6DVDUad4itM0AY 8nAE9l+PJNls
TflwjMjmGBs/ykhXZsOUUj0gR0RvaAcJke9gI5A1UWusc5/KaO4kBwioF7bs +PcAJKfQYIze
oG7mTCDTNqAny0sGK0GwEYxIg0DC9vE92qEvaXTPcx7wl3WQgesabWAHzS45 DjBCc1A7uJ6e
Dyh9QfLARtez03C+TgDMtSaZIubuxpTbOw/ALYDo0qBqA1V0pPpzSDuYN/EB 2fCK5MPQ8ura
xd8Z/lAcbBUlKuNic22YpXJFbOot1B2IdegYR7rNB2TOU/e8rli7vPQ5yczr CmghfHEzTyMt
b6Q2pcPLBrDhih4vEMntZjurV0Ga6AKUvK6kg88Iu6d5XdkXaH3YHOZrBUTx 1aEvGQbe9ZFO
s0azXs3rWh/EoFzvZi8JyXuDQ56em3n7gmzhwc3mA0EoIEpen0F7XfMbhA45 zVDWJoNkzCm3
9wOAPC6ucwjZj5H/+w2yS/65lgqN49NOC6vot/DtZkTlxEwNck95gThs2Gxv Ic6FWk9ZS1x1
rtWHIBarXqsKuuIkJZ3Vl7r4IkY6aJiaHB2WYroy+3CXpSYppisTznOBV08x jfJojNksjjah
zWB3bkrzL0dj+pbnOBsih6HJPXPnH8cMdK71edFlfQxrwdEDIA0Yr7GzZKg3 +Iit+jWgNA/k
6aLZpQFSoei1aAPHvCtOcCfpz0WHDpckx2cSCQ6gbvOuWaM5Bsgj7tCXTtzU 28PoFuZBzuiT
XbpCZY2k9L7+0OxcP1yjuUhS9UZfNV0hSHKMY4Sl4oGWUJPtBl3rlLOSzvW6 0cVXGZXsosuB
SNfklo10WAycUSypoTPVEWVD651cIYy08Mh9Q5dg0iGGKbmM2JMpxpE3uCkz 5w+7qjQDqZ3g
XYcUk6ymzSIXqnkho9lzHz6yAeijiu61lMeBdBhSf9JFlyWZLns8sw5XFndG OT95BeEtoPK8
c8eTv0lfmI3a9jGDQdTXAVUQObiXbyAlnBbcXWvZl3ZJNe4U+r3X145CztBc bjpEP+1ybZqe
rUoCUtlmEiQf0JYO69ncWt7etUP3EyulgBX+5vNzC0Hyq4Q60AudejahywKZ no096EtaJvqz
ytAJyjWYng2dpz9YpNtX9sjKnKieDWNMLejZ/Ez7us4sIE7Bet8dyIrR8nsW uij8Qlm46953
xwYpjl9LFvk2Ydn5Bkv9fndA6THHPEc0S522K/3chu4nL1mOZrNQi5oi8zhh Ql5Acm7Qx645
HV8Tmjnm/hKQ+erfYG088OJYLDH3eIMl5Rb7s9kfjX/TzFtewWfmV5lQhMlE 3yC30N0kPAaM
dzvx5EzGo3lCXraz6pErb7ysuz7Pgb60leWpL7qWun6qWvXK5CElLH5cJcLT +7S8p092P9Q6
woKe4BMVHu8InB0OmYpLk6wvFqYyVZVPW3KG7ulNQkftG5Z7Wbp9+PFqutcr mK/K7S/jz2QT
X9IYPvs1D51QocFBgACHSKdug5Fur7q+hG7ZdqxTVJeoZO6jXaauSziD5qET ADEagEP8eEsi
KfeLDh5xUw6y1FRugwLt4RkCrp9SStUIKhiECktZHQTq9HH8jkmpZ9PROoNb YMrbH8C5us45
rAikKTJ33c0b2GhyFYFuiFkOD/2mBy20b0Wvhy3+LBuEp5GLPzP8XgmyQLhp nrDDuUB03MP6
gm9659HX3eSEs8LzBT6iSfqM3G2P3pJq88CPhdcravpRGSpDBTAzEWFjHt30 emnQq6gEiHTF
NtOhK3YOx/Kq8bBeL1zhG1nk6jYe/Hg9wpF0qFo2lE1qDHNCZ7J+jcu38fNh nSaPmMlJ5bkx
VtzucMgtNlyhOcyUEpi9prEwLqawqfVjoMOwJh7Y9/DrEj71vtunzd5iWc5H 5ARXI1dNOBzh
UCsXyA322urNLDToiFO+5mlKVOh7PhFrbt10mkvMywMdHDsfO2jo9lqZKKGU A5EuS2aASJdh
VdRlG2sMrM3xyBNrkxhYWB/wMe26ZCwGFj7W20TOX/iICNenf6tauYXwU/yo LmXZGdsK3zGW
yiWjwDV11hTpMB4tiXhj4acA0lzRKt0j+Yya49976l+NgHuRsMEWIwFQ7q0f 6Etnqsx00YGD
tlPOG9GsscaNIPMFD3VdMr1JHrRrdcA7ZT79BTbTdIUlsyn3TryWAp9ln9eS oXNESxfdMlVI
WDLj+YlWx6UwkuSuv5bMCHK70WEC9VNfMkPjsYYlM/TXtWRoqjAPfwoTyJ7P 7ImnRL5nawT+
UpcCnCzwenUtGXQqP9eSwXjIHRJmq/sFqet0CNvqf08JVXavW/iY1GvJ0HhZ OTRfMh0BbV50
EILS82pEs8bakhm4QuxqU5udOpoEow5n69CYUpcqAZkCxosOzMaQs9psdgCq EtaCrgCisyeP
ebXZAbjrFqlQbHZQL9NythB0Be1LIv5Z0BX0g3GOHPqSzo1U5gF/Cbh3jYBm s7MlVfHsD8c3
cyisIOZrzYzjEOmqDdYJugKQgSVbCLqCjxkrLOyT0SU437WfBqw55nWlDojG qjwxmx2Ae//2
OOtwGnnInZ6gKwD5+t9C0BWAelZYMBVW0ts6kH7MLDk33dEPaNAVgjIyJ+gK QCYdigtkj3Qv
L53UcJXhoXsvzC9fry7kq80OwP6oNsFsdgAyNV8LQVcwBXWuAHKqlqgDTtAV TupSiUlsdmQl
VlFtmM0OwdyETmx2OPU5mR6+d6Oj3Z+LElJvX+PHJV1giYynXHTvHutAwPCw H/3ifMRD7TrW
Z5IkNTeIOLm6YP2s35RTpCxfc0hRnMfrrJ8wYOzXWb8huu1cugQE4e9Jz2bR JcwqgSMvXcI0
lZYegxNmt08/fxdTEgddwlQbm6BLIJ0e165LmFn8w4KOYMLBxQVcFV6YHmOM iw53RFMdhukS
xjL1uR2f0zWYOgtTIulcmtmJS7NdqxuB5UsJG4PN2BOsV4TTNby+yy5wzSxc wJrKMqqZRYz7
teSYdM3s1EAoQTM7ETBlvq4wZAAoaV5zOiVe5z336yjsjQ7K2hbOQ9DBq6mr RtKVsEjiTDV5
BOcRbmxAl5gBXppZjGqa16nLBq5XxVMNIiJdl7DEl2YWrmxycLrGdY8BxepL M4uJe8q66DSV
x6WZjW/E/fE34lH9WTT87M8/+EaslzJ0YnzZ/edQmzyh/cWL9Mj/YG1iesHa aHBhtSGGoLw2
719DTtN9L59fKTw1V33nh+uJ0uszfz3vyfTlkxLrj2FbJfxK/Xclkl5LDC/U OGaKlJg+t7F8
G42PRgPFjAYqeAtZgxDcpZz+Q+zw8F/PryRv///6P9CW389MaEfzdrQfEqKG 7eivdti8wcxI
HpJhZsRtVxCQwX+lY7Pw3URg8l/177UQWLZG9q+s6o8ZfoU18rIO4IMvbhsx weGTP3QNCCTt
ZgDMGlVvLEkYQjXMkUdTJPq0cprYQV3f4PEW0RwjppaxhslLZMKjK5JJm0EA rNGeBaw3eZRe
wp/iNaqPZVQ0c864UymWPGDu9+bFu8DQ0xmtwIM1nhmgK2JbyUMYoo+uPGYM swdb6OROn5u4
1OUsl6l2nLFPDNMH6jk3R2KYPMxC45qT2GbYuyw84eCbAK0ckfygqXiF6I9R 8WEpa251faVd
HDCe1tpJ+i7jUU9f3bvEVjNEX4wTYq4b5u+yzMCO2NGmDUt72SAov2Ec7IEn mdyOLgyTAsdH
RJMWVdizxJsXL2imink0qn7OppCCGxMCYuZ09FZJXQURpF5fLdVH1hBSaRzC QAUGaI/eVRbE
GmyIUyMiUuzRQLtM5YQvZ0psPX2uUHrFiYw+mv4rIQzjiCPxHq8vG0W2CN+a 8itB6TyLY0Ra
1vHxdhQJoo8e6DMn2KP9Xw35khlhgtRA9YhpQhzrhFWyWaBQ46td2toma053 b8JLyp5A7C5/
wB+yUy+sY1+1syPgswTFCjMn2JM+IpbCPjls+zQk4d8LG8jzZt9qiRq2xlq2 JEZVbEV+xI73
hfGswcO08dqZPpsrLBZsSFxxcUlljbwdqODV3zghzmfDoWhz1sCUzcaTLs4o PEsal71/U6mX
uzWA5kz2Z5bsqPvfzmLjN2Jm4WAQDptUiYgz2Gg37iHULnwz6GGHbsiXVEc9 XqB6xMoDtRhz
DaMGyOg+h1kTqcf9D6+eWktY9RuhLe3+tz+BZerXFzB9AcuabB0PvfYAlpU9 ZrP0CQl00B9d
GAyr67qntYkL7gtjrI6zbtiHibxEzNegpzCcOsbz+nYKS39hQ4b+agvSEvZv 7VtITwpDAHv1
Qvt4Hvl+y12UYGe/SesQXzNQDbHxAWIyKfxNhuxJa8JTZpyC10TJVi5JDqvc z2tXhhU559hf
1PkKyWMgmdEavG0ajslqT11w4OFhl89LF7+cumf40AVfIrzi0y1QD7EC/7VB PkKfr/DqjBS5
huiLNj3NAlUT9Uia542rqD04Ljh74sLbOoLzYfXKyxXC6MNIxhBtBZV2gYpe aTwr/HkL5gBr
X5bw4ZPXrQxPbyD5PG7B2YrHcrG3rcy0PI2L2562CuISY6SbvVihDZylcImg rU9+IhXXkb9o
wU4AagGkyzD2oyDaEg9bm8T3VOsC0LiFemKWKfl0sJ3cKECNwc9aKl3C4521 JM/uvFAO1W7O
LGy3W8vBdag/bKoayxXYyIG5qcdWrkCSe9q10eBxAgfQC+sS0S3XYyhX1Mwl V7OTI9VgO9xM
Dj2A2QjaIdZvBSovYVHcSA5x73mQHSpEH9sCKmo0Ezl4XXCoQ8sQ+f/pr9aq 44ufnRWvcmld
ZyeehvFic4YRDiqz1OvsxEMzAmeds7PCVwxcYzg7a5YQP/EcgmdLb98wbp+r A/vQx2PJCxtI
VhjPzt0H2rzEsxNv2TBKu76tEm7ihY0x73Oy8pm83VgWnVo8OyvNSyOvgndn mNbFs7Mi/zmm
JlKt8Yzr7KyaS1fPTr5Cr8i0vScqqhMQZFvk+/2rUnBEMIfzqxzh/rvoVgfi oOa/LwxqQWoF
EVf3r2q6uPCrRHH1NuyGjwtubjOPtz+Lb3RxuNjjC38XdpzBMxCqw5AvUA2x yA1UAxY3BWWZ
+kucjvd/xZqh9usgyZVfB3tU94WyEJ71B8xEVPXFuB4TrhZTmSz6LYGPNeRL W19bpLI+oizl
hA/WXcEFj6BSGJzwO6bOAldhpvISJ3JI7FpBEueddVdJl3R4ex8qRWBKo+qu gxXVYtG9GO8r
hmgn29rs+qHyiczBCLHwcSg9Pkmccj0lz8ThHQhTYXYXHCA8sO+NUbOKZQdJ Lioc7FEhScoa
MhYqSkmNWJZnSpqOYpg4ZHEu+aIa8AGvd1lwL9wLI9RoSHJx6GBZxTIpazNy 6KPeqKwRuf7C
SLzG64wiAm7zUFq6cfQVz7CAxHYodubcex4XI168ELLlUClyjbVhp8ZXu6S1 Uw2z4pwjmTLH
4/QUGZdxfBQP7w4fE6rMcagyuvtBkgd3P9gjoWylrPFa7ahxwC/OZxOKex6T Yc4REK3ViwoR
4+GHOT2s+8GWR3XnlzB5oRUbd8BUqc0QbYUkQTxUEHgXqSyiO7CnZ/ZIArof JIy/Y1nDubMs
tAuHm0ZzZ41QXmBcq5SVJNOGIdrvAsP2QIU3kX358iCew/utmAVyx5dU9p+Z fM+3roKhO1P1
ifZnOOeRObhf5zx17e0+56fyFoGqCkvNW7UpFTwPE8sXhu4g2Rk6x5iTR25/ lM/b4hNWszN0
EROGDsi+lWTIlKEDNsAyoh1k1QpydI82HfnSnsPXLVANP+6MoXPsapkexp8w vyOQ5Rd6BB17
+zN+sxCJa/4GW65+KEuFqLNBkO12hfvti95jGkX2UEGGbsXLIpXKBczYBPVp YYC23B35Es+v
vQlmpMJrsWzJNcVMvCAUGxNRL7XmcAR3uBpzHKyqAlvMNt9/Pm5E4Zjd+2wj zb0jJ7B7Qu41
UGl/sYXVgOJgWl3Rc+v1Z6xdMZaLN3ogGbbXhnzJnEgIwkOlM3fVblg9ym7y BNjNmldBnNZy
2M3i+1RW3IJ0Rcv5iVQwbM1yF6hnM924Ks6ZrI7NB0nu13ywR92a6UW1qgy5 ejVTwQ+7dl8E
1N3r1rWlwtbr1jUqKD8nJ8s8mtlvxCtjVrVcfhwEqb5MlAHGUyx5zgQ6fWW5 USM2i967dFJG
K6inN0RLe4awtUZ1Rv94MrMGvATAgV8dmfkt3A8M+xUw9EtsXR61nzNER23A 6iBQvcr/si
Re: Command / Query / Advice (r10662) [message #487218 is a reply to message #487213] Tue, 22 September 2009 13:24 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
In r10663 I also added FilterAdvice with the ability to specify REPLACE,
AND, or OR.

Regards
- henrik
Re: Command / Query / Advice (r10662) [message #487224 is a reply to message #487213] Tue, 22 September 2009 13:42 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Comments about the BuildUnitSelector and pointcut:

- it should probably be called something else - it is really a selector
for "name", "namespace" and "version range" - which does not necessarily
have to be a reference to a "build unit".

- more powerful selection is wanted - instead of just matching on name,
namespace and version (as described in BuilUnitSelector), it is of
interest to select on additional traits (e.g. to support "source is
required for anything that has a requirement on x.y.*" without having to
known which of the build units have such a requirement). Maybe this
should just be a b3 filter.

- the envisioned functionality is not fully modeled - there is
information lacking regarding what the pointcut is applied to
(BuildUnits, resolutions, requests, etc) - more work is required.

Regards
- henrik
Re: Command / Query / Advice (r10662) [message #487225 is a reply to message #487213] Tue, 22 September 2009 13:53 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 03:19 PM, Henrik Lindberg wrote:
> This version is very much simplified as it uses a generic mechanism for
> advice. Each advice is simply an advice to set a value of a particular
> type (string, boolean, version, etc) with an escape mechanism to
> instantiate any type.
>
I think one important IAdvice implementation will be the FilterAdvice. It should allow you to and/or/replace a filter to
an existing filter. The replace would consist of two filters. Old (the part to be replaced) and new.

- thomas
Re: Command / Query / Advice (r10662) [message #487290 is a reply to message #487225] Tue, 22 September 2009 16:32 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Thomas Hallgren wrote:

> I think one important IAdvice implementation will be the FilterAdvice.
> It should allow you to and/or/replace a filter to an existing filter.
> The replace would consist of two filters. Old (the part to be replaced)
> and new.
>

I added filter advice, but now with specification of the part to replace
- that would need to be some sort of pattern matching - can't see a
specification of a Filter being used (remember that we support having a
combination of OSGi and pattern filters. Think it is too complicated to
specify the part to replace - can just as well re-specify the filter as
it is supposed to be...

If the intent is to negate part of the filter, an AND with a NOT + the
normalization should do the trick don't you think?

- henrik
Re: Command / Query / Advice (r10662) [message #487296 is a reply to message #487290] Tue, 22 September 2009 16:53 Go to previous messageGo to next message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
crap - i can't spell -
> I added filter advice, but now with specification of the part to
> replace

Should have been:

I added filter advice, but NOT with specification of the part to replace

- henrik
Henrik Lindberg wrote:
> Thomas Hallgren wrote:
>
>> I think one important IAdvice implementation will be the FilterAdvice.
>> It should allow you to and/or/replace a filter to an existing filter.
>> The replace would consist of two filters. Old (the part to be
>> replaced) and new.
>>
>
> I added filter advice, but now with specification of the part to replace
> - that would need to be some sort of pattern matching - can't see a
> specification of a Filter being used (remember that we support having a
> combination of OSGi and pattern filters. Think it is too complicated to
> specify the part to replace - can just as well re-specify the filter as
> it is supposed to be...
>
> If the intent is to negate part of the filter, an AND with a NOT + the
> normalization should do the trick don't you think?
>
> - henrik
Re: Command / Query / Advice (r10662) [message #487315 is a reply to message #487290] Tue, 22 September 2009 18:10 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 06:32 PM, Henrik Lindberg wrote:
> Thomas Hallgren wrote:
>
>> I think one important IAdvice implementation will be the FilterAdvice.
>> It should allow you to and/or/replace a filter to an existing filter.
>> The replace would consist of two filters. Old (the part to be
>> replaced) and new.
>>
>
> I added filter advice, but now with specification of the part to replace
> - that would need to be some sort of pattern matching - can't see a
> specification of a Filter being used (remember that we support having a
> combination of OSGi and pattern filters.
>
Can't that be resolved by using two distinct IAdvice's. An OSGiFilterAdvice and a PatternFilterAdvice.

> Think it is too complicated to
> specify the part to replace - can just as well re-specify the filter as
> it is supposed to be...
>
> If the intent is to negate part of the filter, an AND with a NOT + the
> normalization should do the trick don't you think?
>
No, not really. (!a AND a) will always yield false. Simply removing a will not.

What's wrong with using two filters for a replace? One is the filter to remove. The other is its replacement. Simple and
easy to grok.

- thomas
Re: Command / Query / Advice (r10662) [message #487318 is a reply to message #487315] Tue, 22 September 2009 18:24 Go to previous messageGo to next message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 08:10 PM, Thomas Hallgren wrote:
>> Think it is too complicated to
>> specify the part to replace - can just as well re-specify the filter as
>> it is supposed to be...
>>
There's also the case when you don't know what the final filter is supposed to be. You just know that if a certain
filter is there, it should be replaced by something else. You don't care or have knowledge about other parts of the filter.

- thomas
Re: Command / Query / Advice (r10662) [message #487332 is a reply to message #487318] Tue, 22 September 2009 19:16 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Ok, agree,
I forgot that the Buckminster filter impl is really smart :) and that
Filter x - Filter y should be possible - I complicated the matter
thinking in terms of "strings" - I will add a second Filter to REPLACE,
with semantics that if it is empty it means replace the entire filter,
and if the replacement is empty that the part should simply be removed
(replace with nothing).

ok? or should there be a REMOVE as well

- henrik

Thomas Hallgren wrote:
> On 09/22/2009 08:10 PM, Thomas Hallgren wrote:
>>> Think it is too complicated to
>>> specify the part to replace - can just as well re-specify the filter as
>>> it is supposed to be...
>>>
> There's also the case when you don't know what the final filter is
> supposed to be. You just know that if a certain filter is there, it
> should be replaced by something else. You don't care or have knowledge
> about other parts of the filter.
>
> - thomas
Re: Command / Query / Advice (r10662) [message #577714 is a reply to message #487213] Tue, 22 September 2009 13:24 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
In r10663 I also added FilterAdvice with the ability to specify REPLACE,
AND, or OR.

Regards
- henrik
Re: Command / Query / Advice (r10662) [message #577728 is a reply to message #487213] Tue, 22 September 2009 13:42 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Comments about the BuildUnitSelector and pointcut:

- it should probably be called something else - it is really a selector
for "name", "namespace" and "version range" - which does not necessarily
have to be a reference to a "build unit".

- more powerful selection is wanted - instead of just matching on name,
namespace and version (as described in BuilUnitSelector), it is of
interest to select on additional traits (e.g. to support "source is
required for anything that has a requirement on x.y.*" without having to
known which of the build units have such a requirement). Maybe this
should just be a b3 filter.

- the envisioned functionality is not fully modeled - there is
information lacking regarding what the pointcut is applied to
(BuildUnits, resolutions, requests, etc) - more work is required.

Regards
- henrik
Re: Command / Query / Advice (r10662) [message #577739 is a reply to message #487213] Tue, 22 September 2009 13:53 Go to previous message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 03:19 PM, Henrik Lindberg wrote:
> This version is very much simplified as it uses a generic mechanism for
> advice. Each advice is simply an advice to set a value of a particular
> type (string, boolean, version, etc) with an escape mechanism to
> instantiate any type.
>
I think one important IAdvice implementation will be the FilterAdvice. It should allow you to and/or/replace a filter to
an existing filter. The replace would consist of two filters. Old (the part to be replaced) and new.

- thomas
Re: Command / Query / Advice (r10662) [message #577749 is a reply to message #487225] Tue, 22 September 2009 16:32 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Thomas Hallgren wrote:

> I think one important IAdvice implementation will be the FilterAdvice.
> It should allow you to and/or/replace a filter to an existing filter.
> The replace would consist of two filters. Old (the part to be replaced)
> and new.
>

I added filter advice, but now with specification of the part to replace
- that would need to be some sort of pattern matching - can't see a
specification of a Filter being used (remember that we support having a
combination of OSGi and pattern filters. Think it is too complicated to
specify the part to replace - can just as well re-specify the filter as
it is supposed to be...

If the intent is to negate part of the filter, an AND with a NOT + the
normalization should do the trick don't you think?

- henrik
Re: Command / Query / Advice (r10662) [message #577758 is a reply to message #487290] Tue, 22 September 2009 16:53 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
crap - i can't spell -
> I added filter advice, but now with specification of the part to
> replace

Should have been:

I added filter advice, but NOT with specification of the part to replace

- henrik
Henrik Lindberg wrote:
> Thomas Hallgren wrote:
>
>> I think one important IAdvice implementation will be the FilterAdvice.
>> It should allow you to and/or/replace a filter to an existing filter.
>> The replace would consist of two filters. Old (the part to be
>> replaced) and new.
>>
>
> I added filter advice, but now with specification of the part to replace
> - that would need to be some sort of pattern matching - can't see a
> specification of a Filter being used (remember that we support having a
> combination of OSGi and pattern filters. Think it is too complicated to
> specify the part to replace - can just as well re-specify the filter as
> it is supposed to be...
>
> If the intent is to negate part of the filter, an AND with a NOT + the
> normalization should do the trick don't you think?
>
> - henrik
Re: Command / Query / Advice (r10662) [message #577769 is a reply to message #487290] Tue, 22 September 2009 18:10 Go to previous message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 06:32 PM, Henrik Lindberg wrote:
> Thomas Hallgren wrote:
>
>> I think one important IAdvice implementation will be the FilterAdvice.
>> It should allow you to and/or/replace a filter to an existing filter.
>> The replace would consist of two filters. Old (the part to be
>> replaced) and new.
>>
>
> I added filter advice, but now with specification of the part to replace
> - that would need to be some sort of pattern matching - can't see a
> specification of a Filter being used (remember that we support having a
> combination of OSGi and pattern filters.
>
Can't that be resolved by using two distinct IAdvice's. An OSGiFilterAdvice and a PatternFilterAdvice.

> Think it is too complicated to
> specify the part to replace - can just as well re-specify the filter as
> it is supposed to be...
>
> If the intent is to negate part of the filter, an AND with a NOT + the
> normalization should do the trick don't you think?
>
No, not really. (!a AND a) will always yield false. Simply removing a will not.

What's wrong with using two filters for a replace? One is the filter to remove. The other is its replacement. Simple and
easy to grok.

- thomas
Re: Command / Query / Advice (r10662) [message #577788 is a reply to message #487315] Tue, 22 September 2009 18:24 Go to previous message
Thomas Hallgren is currently offline Thomas HallgrenFriend
Messages: 3232
Registered: July 2009
Senior Member
On 09/22/2009 08:10 PM, Thomas Hallgren wrote:
>> Think it is too complicated to
>> specify the part to replace - can just as well re-specify the filter as
>> it is supposed to be...
>>
There's also the case when you don't know what the final filter is supposed to be. You just know that if a certain
filter is there, it should be replaced by something else. You don't care or have knowledge about other parts of the filter.

- thomas
Re: Command / Query / Advice (r10662) [message #577804 is a reply to message #487318] Tue, 22 September 2009 19:16 Go to previous message
Henrik Lindberg is currently offline Henrik LindbergFriend
Messages: 2501
Registered: July 2009
Senior Member
Ok, agree,
I forgot that the Buckminster filter impl is really smart :) and that
Filter x - Filter y should be possible - I complicated the matter
thinking in terms of "strings" - I will add a second Filter to REPLACE,
with semantics that if it is empty it means replace the entire filter,
and if the replacement is empty that the part should simply be removed
(replace with nothing).

ok? or should there be a REMOVE as well

- henrik

Thomas Hallgren wrote:
> On 09/22/2009 08:10 PM, Thomas Hallgren wrote:
>>> Think it is too complicated to
>>> specify the part to replace - can just as well re-specify the filter as
>>> it is supposed to be...
>>>
> There's also the case when you don't know what the final filter is
> supposed to be. You just know that if a certain filter is there, it
> should be replaced by something else. You don't care or have knowledge
> about other parts of the filter.
>
> - thomas
Previous Topic:Command / Query / Advice (r10662)
Next Topic:Command r10667
Goto Forum:
  


Current Time: Fri Dec 19 08:11:21 GMT 2014

Powered by FUDForum. Page generated in 0.04111 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software