Skip to main content



      Home
Home » Modeling » EMF » building a plugin for external binaries (fao Ed Merks)
building a plugin for external binaries (fao Ed Merks) [message #389569] Sun, 28 November 2004 04:45 Go to next message
Eclipse UserFriend
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm on
the brink of success so can I ask you to glance at the following (preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your binaries.
I'm not sure if you include the binaries in the plugin.xml for the plugin
that needs to compile against them, if the source code will look at those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries into a
plugin. Be sure to change the plugin's ID to something unique. Once you do
this, use that ID to define a Model Plug-in Variable, remove the plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin
id="lginterface"
name="%pluginName"
version="1.0.0"
provider-name="%providerName">

<runtime>
<library name="lginterface">
<export name="*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory where
the directory of binaries called 'lginterface' lives (yes, it has the same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent directory
where I've put a copy of the plugin.xml..I make sure it shows up on the list
for the build path

ii) project>properties>java build path>add library>user library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml and
on the way back I select this 'user library' and make sure it shows on the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in my
project before!)

I understand from this that the plugin.xml of the 'host' app should, after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally contains
the representation of my famous binaries - otherwise this would create code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this should be
so for plugins and the fact that I've a directory with the same name isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian
Re: building a plugin for external binaries (fao Ed Merks) [message #389582 is a reply to message #389569] Mon, 29 November 2004 07:43 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------010902050500050703010901
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Ian,

I would expect your plugin.xml to have:

<runtime>
<library name="xyz.jar">
<export name="*"/>
</library>
</runtime>

and then in the same directory as that plugin.xml I expect to see an
xyz.jar. (The name's location is relative to the plugin.xml, and should
be either a jar or a directory containing .class files.)

Once such a plugin exists, you can set a variable like this:


And if you remove the plugin.xml from that project and renenerate it,
you'll end up with the extra dependency:

<requires>
<import plugin="org.eclipse.core.runtime" />
<import plugin="org.eclipse.emf.ecore" export="true"/>
* <import plugin="lginterface" export="true"/>*
<import plugin="org.eclipse.emf.ecore.xmi" export="true"/>
</requires>


Ian Ward wrote:

>Ed,
>I decided to take the plunge this weekend and try the procedure you
>described - before, as I said, leaving it to cool for a while. Maybe I'm on
>the brink of success so can I ask you to glance at the following (preceded
>by your 'recipe') and to nod/shake your head in the appropriate places?
>
>You wrote..." I think you should create a new plugin to hold your binaries.
>I'm not sure if you include the binaries in the plugin.xml for the plugin
>that needs to compile against them, if the source code will look at those
>binaries while being compiled. I think not. Try to follow an existing
>example, like org.apache.lucene_1.3.0/plugin.xml or
>org.apache.ant_1.6.2/pluin.xml, which package some external binaries into a
>plugin. Be sure to change the plugin's ID to something unique. Once you do
>this, use that ID to define a Model Plug-in Variable, remove the plugin.xml
>from that project, and regenerate the model (by right clicking on the
>GenModel not on the GenPackage, which won't generate artifacts global to the
>model)."
>
>Here goes,
>
>In the plugin development workbench (in a different workspace to that of the
>intended 'host' app)....
>
>Step 1: create a plugin
>
>Here is my plugin.xml
>
><?xml version="1.0" encoding="UTF-8"?>
><?eclipse version="3.0"?>
><plugin
> id="lginterface"
> name="%pluginName"
> version="1.0.0"
> provider-name="%providerName">
>
> <runtime>
> <library name="lginterface">
> <export name="*"/>
> </library>
> </runtime>
></plugin>
>
>The plugin examples you suggested (ex ant) have a number of dependencies
>displayed in their outlines (which correspond to the runtime libraries
>mentioned in their plugin.xml) - I don't have this for my plugin (and the
>workbench only proposes jars)
>
>I've copied the plugin.xml from the workspace to the parent directory where
>the directory of binaries called 'lginterface' lives (yes, it has the same
>name as the id of the plugin)
>
>Back in the 'host' app (EMF workbench)..
>
>(BTW, the plugin view doesn't show the plugin I've created)
>
>Step 2: define a Model Plug-in Variable
>
>I tried two approaches
>
>i) project>properties>java build path>add variable>configure
>variables>new>..at this point I give a name to the variable (the id I've
>entered in the plugin.xml 'lginterface') and identify the parent directory
>where I've put a copy of the plugin.xml..I make sure it shows up on the list
>for the build path
>
>ii) project>properties>java build path>add library>user library/next>user
>libraries>..at this point I enter the id I've entered in the plugin.xml and
>on the way back I select this 'user library' and make sure it shows on the
>list for the build path
>
>Step 3: remove the plugin of the 'host' app (which I'd never noticed in my
>project before!)
>
>I understand from this that the plugin.xml of the 'host' app should, after
>step 4, carry some sort of reference to the plugin I've created for my
>binaries.
>
>Step 4: regenerate the code for the complete model of the 'host'
>BTW, I've had to exclude the package of the model which normally contains
>the representation of my famous binaries - otherwise this would create code
>for them which is what I don't want. So, for the moment, I just have an
>import statement in the package class for the wrapper of the javaclass which
>is 'standing in' for the external class.
>
>Conclusion: I see no change in the plugin.xml of the app and the import is
>still unresolved. I'm mostly concerned about step 2.
>
>Should I perhaps create a jar? I didn't think that it was obligatory.
>You said that the plugin id should be unique - I assumed that this should be
>so for plugins and the fact that I've a directory with the same name isn't a
>problem.
>I did have a look at the Eclipse doc for plugins but quickly got lost (I
>haven't dreamed about searching 'plugin' in the platform forum!)
>
>Many thanks
>Ian
>
>
>
>
>
>


--------------010902050500050703010901
Content-Type: multipart/related;
boundary="------------000507030602030506030607"


--------------000507030602030506030607
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ian,<br>
<br>
I would expect your plugin.xml to have:<br>
<pre wrap=""> &lt;runtime&gt;
&lt;library name="xyz.jar"&gt;
&lt;export name="*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</pre>
and then in the same directory as that plugin.xml I expect to see an
xyz.jar.&nbsp; (The name's location is relative to the plugin.xml, and
should be either a jar or a directory containing .class files.)<br>
<br>
Once such a plugin exists, you can set a variable like this:<br>
<blockquote><img src="cid:part1.07080308.07090707@ca.ibm.com" alt=""><br>
</blockquote>
And if you remove the plugin.xml from that project and renenerate it,
you'll end up with the extra dependency:<br>
<blockquote>&nbsp; &lt;requires&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;import plugin="org.eclipse.core.runtime" /&gt;<br>
&nbsp;&nbsp;&nbsp; &lt;import plugin="org.eclipse.emf.ecore" export="true"/&gt;<br>
<b>&nbsp;&nbsp;&nbsp; &lt;import plugin="lginterface" export="true"/&gt;</b><br>
&nbsp;&nbsp;&nbsp; &lt;import plugin="org.eclipse.emf.ecore.xmi" export="true"/&gt;<br>
&nbsp; &lt;/requires&gt;<br>
</blockquote>
<br>
Ian Ward wrote:
<blockquote cite="midcoc740$7ab$1@www.eclipse.org" type="cite">
<pre wrap="">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm on
the brink of success so can I ask you to glance at the following (preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your binaries.
I'm not sure if you include the binaries in the plugin.xml for the plugin
that needs to compile against them, if the source code will look at those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries into a
plugin. Be sure to change the plugin's ID to something unique. Once you do
this, use that ID to define a Model Plug-in Variable, remove the plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;?eclipse version="3.0"?&gt;
&lt;plugin
id="lginterface"
name="%pluginName"
version="1.0.0"
provider-name="%providerName"&gt;

&lt;runtime&gt;
&lt;library name="lginterface"&gt;
&lt;export name="*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory where
the directory of binaries called 'lginterface' lives (yes, it has the same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent directory
where I've put a copy of the plugin.xml..I make sure it shows up on the list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the plugin.xml and
on the way back I select this 'user library' and make sure it shows on the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in my
project before!)

I understand from this that the plugin.xml of the 'host' app should, after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally contains
the representation of my famous binaries - otherwise this would create code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this should be
so for plugins and the fact that I've a directory with the same name isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




</pre>
</blockquote>
<br>
</body>
</html>

--------------000507030602030506030607
Content-Type: image/jpeg;
name="moz-screenshot-1.jpg"
Content-Transfer-Encoding: base64
Content-ID: <part1.07080308.07090707@ca.ibm.com>
Content-Disposition: inline;
filename="moz-screenshot-1.jpg"

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRof
Hh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwL DBgNDRgyIRwh
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy MjIyMjL/wAAR
CALWAlEDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcI CQoL/8QAtRAA
AgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS 0fAkM2JyggkK
FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWG
h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW 19jZ2uHi4+Tl
5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcI CQoL/8QAtREA
AgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMz UvAVYnLRChYk
NOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0 dXZ3eHl6goOE
hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk
5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD1LTrG3utLk1jU4jNAqNLF b5ymxQTkjOGJ
6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOPmVWJHIPGM8GpbY7fhyT6ac5/8cNc frF2+l3+sCx1
a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCnClKo3GLs7f1cHJRtc9DTRdFk jWSPTNPZGAKs
sCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2NqJ7j7cbaCIAY3S3flLw WUHBcHaWUHGN
y5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKgZi6ksRGrS5AXY0xd 0mxvc6j+wtH/
AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQx3tnBcWthqUs dqI1S4maNchm
n3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6XykRSZGwY2U sWIO8EABMbix
Haf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/AGx/ Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtG
V+cBQDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2O q2emzQzW7yST
ecbfc6uJFCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4l wXmAW4zuxDgq
uR8+FAO8/sLR/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2r HTZX0i3vLq8c
WzqLpYIrWUJGPMPlErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIs aWz4WHzQVJ+1
qMmRv9WTj5sKAdJ/YWj/APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8 V6JaajELSz0+
PU9HEtq0TSyu0j2k+Vl3KFA85VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+ tCTEjKv221wo
AmdpRiQZcpFjAyuXAUA7u9svDWmwia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHv DcdzAks1vp9z
cuRCnmIBK3Awsb5B6r90Z6etaPiH/UWnkf8AIS+0f8S/P3fO2P8Ae7bNnmbu +3O35ttY6/2N
59t9i/5Bv2iLz8b92/ev2Xbu5+z7923y/l3Yx8vmUAVLnR49MkCXthatEzBU uo4FCEnoGHJU
/p79qd/Zlh/z5W3/AH6X/Cu2mhjuIXhmRXjcbWVhkEVyV5ZyaNMscjM9k5xF M3JQ9kY/yPfo
eestDTK39mWH/Plbf9+l/wAKP7MsP+fK2/79L/hVqipKKv8AZlh/z5W3/fpf 8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/w
o/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKA Kv8AZlh/z5W3
/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8A hVqigCr/AGZY
f8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/ 79L/AIVaooAq
/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD /nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj
+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq /wBmWH/Plbf9
+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCF WqKAKv8AZlh/
z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v 0v8AhVqigCr/
AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+ fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KKtUUAaei2qXvgu2tJCwjntPLYr1AZcHHvz TbrwtFfRCK71
C6uIw24JNFbuAfXBi68mrWkzx23haxuJm2xRWUbu2M4AQEninSa7ZRRtJIt4 iICzM1jMAAOp
J2VptqiCW30q2h0t9OlH2q3k8wSi4VW80OSWDAAAg7iMYxils9J03TkgSx0+ 0tUgR0hWCFUE
auwZwuBwGYAkDqQCaszSeVBJJjOxS2PXArlv+Equf7f/ALM22H+v8nHnHzv9 T5u/y/7v8Oc9
aqMHLYTklubD+GtBkuLS4fRNNaeyREtZGtULQKhygQ4yoU8gDGO1WE0nTY0R E0+0VESJFUQq
AqxNuiA44CMcqP4TyMUyC7madEk2EOSPlUjHBPqfSuc1XxjHpmrzWDy3jzIB IUtrCWfahZgp
JRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESEPIYEDztFgo8hCjc4Ybs9jyMV ci0LR4ft3laV
Yx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8dH+FH9qXn/Pb/wAdH+FT zIdh+q+D9M1n
xDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6Fo9vLcyw6VYxyXUqz 3DpboDLIrb1d
iB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBBFOzFF2lZGdRj 3zG2fqKOZBY6
GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tikiv9KsbuOS UTuk9ukgaQKE
DkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY3F9B t8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/
Z291Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BV migApk0MdxC8
MyK8bjaysMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f +7cqY8/Qng/g
TXcUUmkO5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7 bf8Af1f8aP7T
sP8An9tv+/q/413NFHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKO ULnDf2nYf8/t
t/39X/Gj+07D/n9tv+/q/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9 /V/xruaKOULn
Df2nYf8AP7bf9/V/xo/tOw/5/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9 p2H/AD+23/f1
f8a7mijlC5w39p2H/P7bf9/V/wAaP7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf 22/7+r/jR/ad
h/z+23/f1f8AGu5oo5QucN/adh/z+23/AH9X/Gj+07D/AJ/bb/v6v+NdzRRy hc4b+07D/n9t
v+/q/wCNH9p2H/P7bf8Af1f8a7mijlC5w39p2H/P7bf9/V/xo/tOw/5/bb/v 6v8AjXc0UcoX
OG/tOw/5/bb/AL+r/jR/adh/z+23/f1f8a7mijlC5w39p2H/AD+23/f1f8aP 7TsP+f22/wC/
q/413NFHKFzhv7TsP+f22/7+r/jR/adh/wA/tt/39X/Gu5oo5QucN/adh/z+ 23/f1f8AGj+0
7D/n9tv+/q/413NFHKFzhv7TsP8An9tv+/q/40f2nYf8/tt/39X/ABruaKOU LnDf2nYf8/tt
/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tOw/5/bb/v6v8AjR/adh/z+23/ AH9X/Gu5oo5Q
ucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHKFzhv7TsP+f22/wC/q/40 f2nYf8/tt/39
X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+NdzRRyhc4b+07D/n 9tv+/q/40f2n
Yf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb/v6v+NdzRRyh c4b+07D/AJ/b
b/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7TsP8An9tv +/q/413NFHKF
zhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39X/Gi u5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8A
IvaZ/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa4 1C3t5NNVC1ta
+ar4M24MSpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07Sy khWByp6e/UdR
pTmovUicWzC8CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK 1S8h8iFImsb1
YVDpLMzB1Mqbxh06hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUt YurDT5XkuVSN
WkCZKu5ZiN3RT9fyoqN1Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7ID gLIeDtyyg5xm
WXbz+m+EZn1WCKfR5v7GW5ime3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6T qUyQwYEru6oj
wyru2k85zjBAyOc49DxW1fSaRpmkjUr2OSOAmNcRrJKxaRlVVCoCzEswHA71 nKnKO5b0dmjx
2XRLixfQI9R0X7dFN9lNzaDyn+0XgtrvznYOwVn/ANWS5PzbRySKnn8KatKr eZbTfYz5TNaw
tA7mISXjJAElzEfLE0HB+UbPkJKrXr2mjS9Vt2nt7W7RFcoRdW01u2cA8LIF JHPXGOvoauf2
XZ/88f8Ax4/41NmK5zXgOyk07TobWUTKUjchJnRnRS+VU7AEGAQNqjauNoJA BPY1BBZW9u5e
KPaxGM5J4qLU9Sh0q1S4nWRke4gtwEAJ3SyrEp5I43OCfbPXpTSEXKKKKYBR RRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFF
FABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv/QBWhQAVy99FO2oXqpqe s6bm43g2Nksq
ygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeERvNiKIFmUoMZKsOAB ycAcY5zxtZ3U
sVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky7pW2KIldmZsE 9EyTwDz7VdOf
JK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4wenoPinT7jU/ BsVta209zIJr
KUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZKqPu jp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5Eu
dgOTs27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2 wsYypUc5fPUW
upa7eWcF1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpG fwsTTW5wGjeB
73S7HSzBpEFtdWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvD VzpXh/8As2Fb
TT3vG/cR/wBoMLi0lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G +aaLzN69OMeT
JyeDt4JyM6FWI8/8BeFr/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIc B+hLuR6BRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAZ+hf8i9pn/XpF/6AK0Kz9C/5F7TP+vSL/0AVoUA FFFFABWTrquV
smRrmMLO2ZbaLzHizDIoYLtYcFh1BHqK1qKAOF8OaVd2CwWsup6ndu+o3Vxv lsxGsCyG4YOD
5KDc3mKWByN3CgDiuqvY2QRlppJAZOFYLheHPGAPUDnso75J0KZLEkybZFyM 564x+NNbiZyG
jWLy6Hp8n9jaXJutozveTDNlRyf3Z5/E1qeEzu0a0PrZwH/x01J/wiHh3/oD Wf8A36FaltaQ
WcQit4hGgAUKOwHQD2HpWNOnyFNtnO2enajF4obWn0+BftkslrLGNu6CFA2y fdn5mk8uMMAM
7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+hf8i9pn/XpF/6AK0K z9C/5F7TP+vS
L/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUA
FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF AGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUU
UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFA
BRRRQAUUUUAZ+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFF FFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFAB
RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XW tKi0LT45NTs0
dLaNWVp1BBCjIIzV7+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH /wCgrY/+BCf4
0AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQV sf8AwIT/ABo/
t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRW f/buj/8AQVsf
/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDoK2P/ AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/
+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQ Vsf/AAIT/Gj+
3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/ jQBoUVn/ANu6
P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCg rY/+BCf40AaF
FZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8A wIT/ABo/t3R/
+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/bu j/8AQVsf/AhP
8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ /jQBoUVn/wBu
6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t 3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/
AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBo UVn/ANu6P/0F
bH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+ BCf40AaFFZ/9
u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ ABo/t3R/+grY
/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8A QVsf/AhP8aP7
d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQB oUVn/wBu6P8A
9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+ grY/+BCf40Aa
FFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT /Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/w
IT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/GigDlTPNcOVtBGEU4a aTJGe4UDGfQn
I/HBpfLv/wDn5tv/AAHb/wCLrI/tO+tv7J0/TrG2uJrmzkuHa4uWhVQhjB+7 G5JJlz26GpLH
xho1/aefHcOpWCKaSIxMXjEioyKQAfmYSKFUEljkLkqcZlGn5d//AM/Nt/4D t/8AF0eXf/8A
Pzbf+A7f/F1izeLrVNUsoo0uZLaaC4aVUsZ3njkRodoaMLuQFZSfmUdVOcEZ kg8VWhnvxLJ5
sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjIBreXf/8APzbf+A7f/F0eXf8A /Pzbf+A7f/F1
nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk9ASLUOt6fc3kdrbTPcM6 hhJBC8kQBXcM
yqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8AtVL5d/8A8/Nt/wCA 7f8AxdUr7UP7
J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0X2eZp0lUMqkK ditv3Og27ed6
7dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJLlmZmXyEs 5mnUgAndEF3q
AGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6ngA4A NPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0
IJzp/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5t v/Adv/i6PLv/
APn5tv8AwHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+ U4tafqtpqfmC
3MyvHjfHPBJDIAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqX y7//AJ+bb/wH
b/4uoYGuk0C2azhhmuBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fUL aGdcxSNEhkAw
hl27A2TgAkEkjjkUAaHl3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fL BbTRTPItzaNe
whIXZpIVCEsFAzn94ny4yc8CoD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5K gfOv94ZALvl3
/wDz823/AIDt/wDF0eXf/wDPzbf+A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjh k8mOSRFYIZMF
UY7hhWbJ3L13DOnp+q2mqeYbQzOiY/eNBIkcgOcFHZQsinGcqSMEHuKAG2zX 9xawz+fbL5iK
+3yGOMjP9+pfLv8A/n5tv/Adv/i6zLvV/wCxvDthPshO9Y4/MuJvJgi+TO6S TB2LxtBwcsyj
vkPTxJaQWtu+oSQpLLGJmNmZLmGOMk7ZGlCAKhAJ3MFHDckKTQBoeXf/APPz bf8AgO3/AMXR
5d//AM/Nt/4Dt/8AF1WvPEGm6fNcR3ks0HkRtKzyW0gjYKm8hH27XYKCdqkn CtxwcCeINNlk
t0hlmnNxgxmG2kkG0sVV2KqQqMQdrthWAJBIGaALPl3/APz823/gO3/xdRW7 X88Zfz7ZcO6Y
8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje3kiViVG4x7wN6gsOVLAZXnkZ fd6jLpeiPcwW
6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzbf+A7f/F0eXf/APPzbf8A gO3/AMXWZa+J
7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLVMnibSJElcXLhUXer NBIomXIUGLK/
vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8WaN cXUdqtxMtzLI
0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLkKDFlf3wJ ZQPL3ZLrj7y5
ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5LeNR eGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/
ABdZ9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM9 4rtIIlgNhOJi
SrMCItm/aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4u qyeINNkkt44p
ZpnnxhYraRzH8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksc k8cbPGxAEigO
DuUkfMp6EZANby7/AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7 DW9P1KdobWZ2
bbvQvC6LKmQN8bMAJF5X5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6 j/zxtv8Avlv8
aP8AhKdR/wCeNt/3y3+Nalp4Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5A glEhk3ZxjjGP
Rm9a1cEiFJlb/hKdR/5423/fLf40f8JTqP8Azxtv++W/xok0r53SBmlZHKMC mMnBPHJz901D
/Z8m0ttXAz0YZOOpA7j3HpUWRWpN/wAJTqP/ADxtv++W/wAaP+Ep1H/njbf9 8t/jUTaZMjbS
ik5wcMDg++Dx36+hoOmyhWbYNqjJYMCO/f8AA/jxRZBqS/8ACU6j/wA8bb/v lv8AGj/hKdR/
5423/fLf402XSnjkkQYcq+0EEYxzyeeOn+NM/s2XcRtUYGdxcBfzzj1/I+lF kGpL/wAJTqP/
ADxtv++W/wAafH4pvCQJIoVGeWVCcD6bhnt3rOltSVXBkVd6lzFt37Nw3Bd3 G7bnGeM4zWlq
Ph1LTSGv11RntbpANKeFP3k7uhdDKGXCqFBJxy2MjacISyC5r2N9NqCFoLy3 yPvI1swK/wDj
9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1FdRpmpi8XypcLcKOR2Yeo/wAO 1S1YaZP5d/8A
8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6nNpsuq2OkQ3OnfZnuLfF0 wuJwELJiIRkD
ecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb/wAB2/8Ai6xdQ8Wx Wzym2jtprZVg
K30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmuJ5IY444bstC3 myrGjCXZkrhw
2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxpb3P9pRfZ 7m2uRbSQ2++4
3uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5gw+f bgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlR
uUk4INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPz bf8AgO3/AMXR
5d//AM/Nt/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTm i/8AENnZaGmr
q6PameKJ3kbyxGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz 823/AIDt/wDF
1ip400qbVmtbe9sZbVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlr fbbtZcO9lOjK
yNEOUKAhT5v3zhRtxn0ANPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCL rPbxZoiQyTS3
vkwJtPnTRPHG6s6oHRmADpl0y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKI yilSAQT5sfbj
POMHAAqtftdSQefbfIivu8huclh/f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrc f9cIv/QpKz11
yaHUtTtb+y2JaRxTRvaGS5eRJHkVcosYYN+7yQNwGevFAGh5d/8A8/Nt/wCA 7f8AxdHl3/8A
z823/gO3/wAXVYeIdKa1urkXX7q1tvtU5MbZjjy4ORjIYGKQFfvAqQQDU39q 2g1P+zmMyXB+
6ZIJFjc7d2EkK7GbGThSTgN6HAA/y7//AJ+bb/wHb/4ujy7/AP5+bb/wHb/4 usJ/F2zxNPpH
kWbeTcx2+xbzN0+9EbesGzlF8z5ju4VHPbFalt4g02783yJZn8uMzDFtJ++Q dWi+X96vI5Tc
PmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5+bb/AMB2/wDi6z28V6SvlDfePLJv xDHYTvKuzbu3
xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJIIXkiAK7hmVQUUlSCASCQyn+ IZAFia/lknTz
7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLqlfah/ZOma7qXleb9kV5/ L3bd+yFWxnBx
nHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yAuAMHPXABoeXf/wDP zbf+A7f/ABdF
Z/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snjFvcQLIpZ/KO7 noQIyOn8X5z3
GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2lGptChQKq lVPRR/sH1FW/
7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQVwLd OrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP
/jg/+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7s JReQhLO2jhP2
aBoZLopEIwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8A xuiwFC+0/wDt
bTNd03zfK+1q8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIk hDRs7FwzRpuy
3KrgbSSTsppUyM7LrGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp 4Vn03ybjTrjT
rW8TzVIi00JbbZPL3ARI6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP 8jzZZJN0Pzr5
b/vcFud2xDgYrrP7Ouf+gz/44P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7 B9ohfF7Nd7bi
382CTzJJH2SR7hvUeZkcj5kVu2KzoPA8ttpN5YQahbRrfWk9rcBLMqiq7zOn lKH+QKZ2BBLZ
CgDb1rqf7Ouf+gz/AOOD/wCN0f2dc/8AQZ/8cH/xuiwHO6h4Plv7S5sW1FEs ma6mgUW5Mkcs
6yqxZt+GUefIQoVT935uDndi0/y9butS83Pn20MHl7fu+W0rZznnPm9McY9+ Jf7Ouf8AoM/+
OD/43R/Z1z/0Gf8Axwf/ABuiwFOOO/k0OyGn3NtbzeVGS1xbtMpXb0wHTnOO c/hWE3gOJJ7D
yLi2aGza1KSXdoJrlFgKYSOUMuxWEfI2nl3P8WB00WlTQxJFHrGERQqjaOAO n/LOn/2dc/8A
QZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLKqhzIY3XPzo0jzFhxlZSmQAMUtN8H 3WkTPd2F5p1v
dtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/AGdc/wDQZ/8AHB/8bo/s65/6 DP8A44P/AI3R
YDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/CqfIjJUqx+983Ixr6Hpt1pF jHYSXcM9pbxp
DahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAbo/s65/6DP/jg/wDj dFgKccd/Jodk
NPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLcPd6es5BaWSVj AGOIzumf7wkG
AmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAbosByeq+A f7Su7iX7XZp5
v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcxzQGT ekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8e
Znyfn68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nX P/QZ/wDHB/8A
G6ZHpU0SlU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3 rxuSMYA5jPGO
d354r+Ep4rCFGvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ /wDHB/8AG6P7
Ouf+gz/44P8A43RYDnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2Q wOQcqILLwHb2
FnLbQxaKy+QtvF5ukK3mIGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8 bo/s65/6DP8A
44P/AI3QBgReE5o7jTpG1Hc1rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/ +Qrcf9cIv/Qp
Kd/Z1z/0Gf8Axwf/ABumDSphK0o1j52UKTtHQZx/yz9zRYDKPh26Omy6L9vh GhvbParCLY/a
EiZCoUS79vy5ABKE4Azk5Ykfh26k1m21a/v4ZbuGRCRBbGKNkSOdFXBdiGzc MSc4IAGByTsf
2dc/9Bn/AMcH/wAbo/s65/6DP/jg/wDjdFgMBPCTx6hBcLeQxiO5knaWGBo7 lw07zeUZQ+DF
lwCjKQcE8EgqyPwfL5dhDLqKNDpqww2YS3KsIkmhkIkO872It0G4BQMsdpyA Oi/s65/6DP8A
44P/AI3VXUlfS9NuL6fWHMUCF2VIwWOOw/d9T05osBm+HPCNv4dnDQrYhY4P s8TQWKxSumRz
NJkmRvlHI2gksSp42ksXmX96f+m3/sq1uvpl0jsjaxhlOCNg6/8AfumRaQsZ kY30cjSNvZmD
ZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAPSX27YHt0qK7mvdQmie7eMiJW ChA/fH9529O2
K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2kkmaRizA7gFLZ27gRxTV XCAbDuVSgOeM
HOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZbOEnkaJWAZyxO7k9 Rxxx1NRy5lQq
Q5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJDlXd1QhnbcxD d8EHHp96jed5
YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0aBqc3cWTy xBUMYIdGxKm9
GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtltzAM Nz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf
/wCJougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZl QDCr5vmYIXgA
lM4ABJOWOg2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2 w0G40XS2tNIu
raGRp95kuLdpV8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QK SN9oE7rsJ4Vj
uUAk4BGd2OdX+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3 FmtlBc/arW0u
LQTQROwcOCmRuQ+YWC5BVu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAE JJwY2VsjJJLH
cN/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpx W3IKKkkUi+b8
58w5gizt2ZG7pkbbWl+Hbq012XV7y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2x zsf2dc/9Bn/x
wf8Axuj+zrn/AKDP/jg/+N0WA52XwhLPo9ppdxc2Nzbac0ZsUuLAyKFVGjAm UyYkO1s5XZhg
DjHFaC+H0TQbbS0khiENzDcZgt1jjyk6zFVRcBVJBA5JAOSWOSdL+zrn/oM/ +OD/AON0f2dc
/wDQZ/8AHB/8bosBj6r4Y/tLWf7R+0Q8RonkT2/mxttjuU+YbhlT9p5HomM/ NkR6d4YuNNnt
bmLUEM8TSKyGFjAsLmPdHChkJiA8lNvzMq5bC4IC7n9nXP8A0Gf/ABwf/G6P 7Ouf+gz/AOOD
/wCN0WA52PwfL5dhDLqKNDpqww2YS3KsIkmhkIkO872It0G4BQMsdpyANCTS ftHi6PUpINsV
vbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ/wDHB/8AG6P7Ouf+gz/44P8A 43RYBsf/ACFb
j/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzNqyQmQl+ZWb74G5Yzj5Tn cGlTCVpRrHzs
oUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uGWWFjZXMsxEEBijZX lMwjVNx2Ksiw
sOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjbwqIO2a3/AOzr n/oM/wDjg/8A
jdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYtoEm/G3MK k/JnBIyOCM6y
8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/AOOD /wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkIS
zto4T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/ AMcH/wAbosBQ
vtP/ALW0zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2 RWt5m2lf3sQK
7xjBHIwyof4cVpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSM FjjsP3fU9OaL
Bc53/hBf+nPwj/4Tv/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJ TxHqdqmoaiJr
6+WznvzcW01qIreOCEzbPLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbm f7TDEBlVwMOw
JPHpjpz1xTa21BtMudNPhVjaXXnedH/acHzeazNJzvyMl26HjPGKGtQQl74l vLJLh30tFFla
C+vUe5w8cJMm0IApDybYmyuVUHADMPmEMnjCWzgmvr7TkTTlnu4InguDJKzW 4lLZQooUFYHx
hjyVHckSX9jfalOs114WlZtuxwmrRIsqZJ2SKsgEi8t8rgj5m4+Y5pWOg31s Z3ufDUt4009x
KUn1SJ4lEzuxAiaQop2uVJABILf3iKVh3JoPGF/K0EH9gTC6nuVgjDGWKI7o 5XzumiRjt8o7
gFOAwI3H5am03XdRWBptQghe0bVprNLlJvnVfPljTcgQfxiKMYJzu3EjBplt pl5azRTJ4XuJ
J4pPNSafWY5pAdjoBueUkqBI+FJwCxIGTmmXumarcWd9bQ+HpYI79l+0p/ac LIyFsyqqeZhC
6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9zw/NnfFuPlv0GNybWweRuweRV2sn7 br3/AELbf+DG
3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17/oW2/wDBjb//ABdH23Xv+hbb /wAGNv8A/F0W
YXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde/wCh bb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZ
P23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+269/0Lbf+DG3/ APi6Ptuvf9C2
3/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/APF0WYXN aisn7br3/Qtt
/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH23Xv +hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//
AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/ 4Mbf/wCLoswu
a1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL +oqb7br3/Qtt
/wCDG3/+LqhrSa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9k kFxLgAloUcNK
oB43GMOB05I5HUYcviS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi 5IJC1sXGo61N
cyyReHJDG7ll339urYJ4yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3p KGK/KuQTglQT
kgUWAZ4a8Sf2rrV1GizNb3ubuAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriy WHRrloZlt/Oa
NJXMTyxpIMFY/LKqJFyWdTgMdvTcqaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG 27YowRnBKAnJ
GafBo09s9sYfCUqLbrGqRDWIvLPlgBGZPM2uyhVwzAsNq8/KMFgOtorJ+269 /wBC23/gxt//
AIuj7br3/Qtt/wCDG3/+LpWYXNaisn7br3/Qtt/4Mbf/AOLo+269/wBC23/g xt//AIuizC5r
UVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF0WYXNaisn7br3/Qtt/4M bf8A+Lo+269/
0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23Xv+hbb/wY2/8A8XRZ hc1qKyftuvf9
C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/AMGNv/8AF0fb de/6Ftv/AAY2
/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6LMLmtRWT9 t17/AKFtv/Bj
b/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Qtt/4Mbf/AOLo+269/wBC 23/gxt//AIui
zC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF0WYXNaisn7br3/Qt t/4Mbf8A+Lo+
269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23Xv+hbb/wY2/8A 8XRZhc1qKyft
uvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/AMGNv/8A F0fbde/6Ftv/
AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6LMLmt WH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/
Vf8Avq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SG eJykkcl5aKyM
DgggrkEHjFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvL rEumeGbi9lDX
lzHPJbwRsQhnlMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlv bW1ljDAgNtM0
o3YwSqkcdb17oCazptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4 Ctob9JbbUrxb
WK7NzFBNFNOUzPaTuu92JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X /v03+FAE1FQ/
aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+F AE1FQ/aY/wC7
L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/ aY/7sv8A36b/
AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7 L/36b/Cj7TH/
AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/ AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UAT
UVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8A v03+FAE1FQ/a
Y/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UAF p/x5wf8AXNf5
VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+FICaioftMf92X/v03+FH2mP8A uy/9+m/wpgTU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/
ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATU VD9pj/uy/wDf
pv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ ALsv/fpv8KPt
Mf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDf pv8ACj7TH/dl
/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPt Mf8Adl/79N/h
QBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl /wC/Tf4UATUV
D9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/h QBNRUP2mP+7L
/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UActR RRWZZf8ABv8A
yL0P4f8AoC10Fc54QkZPD8IWF3GF5Ur/AHF9SK3fOk/59pfzX/4qtCCaiofO k/59pfzX/wCK
o86T/n2l/Nf/AIqgDJv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjSKiKiuhJzE5 LFhjCgBtxKxn
xMlpeCyuoJ5vIlhtLzUIY1SCO5kCbU2FzJ8xljxgMB5gy3DETalpb31wt3bT ahpt4EEbXNp5
JaSMEkIwkDqwBJIJGVy2CAzA0z4ZR7wTy3GpyRvLDc3MDGAJdXEQQJM5Chgw 8qI4Qqh2D5cF
gQCG08fWVxYW97caZqVlBc26XcDXAiPmW5eNWmOyRgiIJo2cvtIUkgHacXP+ Eus21yPSYbO+
nmklliSWKINE3leUJW37sBVM20k4+aN05barYuj+Er/S/CsNvcM2qapb6OdP gjvxEbSLciho
8Iqs0TNHGDv3NtXjGTnc07QrfTZdNliivHksLSW1V5HjJm81o3kkkP8AFIzR Bi3GSzE5J4AM
2w8eQXOnadcrp99dQz/Y4ri8hjijjhmuBEUVkaUuOJoydu8ANjcSDjLsPH2o L4M0a4udMuzq
11b2MiiYQ4vleWCKZ49kmFP79SA+zl14wGAc/gq/tLjTbDSnuYNFgeymuvMu ImaaS2MYUmPy
sklYIlysqAYzsOCH2G8IWLWGlWmzUANLshZ2sgki3LteF0kPYurW8bDjaeQV IOKALXijU9U0
/wAG3ms6cILW6tLR7t4L6HzshI2Yxny5AA2QBuDMBg8HrWfq3juw8JSwWHiC 8glvvK8+4lgE
duiRFmCsI5ZS78K3yx+Y3y9BuUHav9P/ALT8PXOjXgvJI7q0e1mnzEJGDIVZ uPlDHJPC4z2x
xVfUNF+3aib2OfU7KSWJYLkWkkS/aIlLFVLHLJjzJPmjKN855yFwAVdf8Xf2 bpOsta2c51LT
7S4uDFNF8kaxxsySOQwBjcqAu0ljlhgGOTZ0FjcS3dnHPNZT2UjZzBOULpgk clGZeevBPX14
rFufDdpePdPdR6hMb1JYbvdMoE8DqVEJAIARQfl24YHcc5eQvqWK3NpZxwTP eXsi5zPP5Id8
knkIFXjpwB09eaAL1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+ a/8AxVHnSf8A
PtL+a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8A xVHnSf8APtL+
a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHn Sf8APtL+a/8A
xVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8A PtL+a/8AxVAE
1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+ a/8AxVAE1FQ+
dJ/z7S/mv/xVHnSf8+0v5r/8VQBycFzdmG8dpJY4IY0McrSsqljLIrLy6rwF TjIxnvkCl8O6
leXmslPO+1W6KRIYpI2ERIO0ti5c4OCANvXuMGtqLT7OS1X/AIluGkQbpYtq O3Q53AhuTS2e
mW1hcm4gtb3zCpX95dtIuPZWkIB464zVpwUbW/AzcJc17mtRUPnSf8+0v5r/ APFUedJ/z7S/
mv8A8VUGhNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR 50n/AD7S/mv/
AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/ AD7S/mv/AMVQ
BNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S /mv/AMVQBNRU
PnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/ AMVQBNRUPnSf
8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQ BNRUPnSf8+0v
5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRU PnSf8+0v5r/8
VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf 8+0v5r/8VR50
n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v 5r/8VR50n/Pt
L+a//FUActRRRWZZf8G/8i9D+H/oC10Fc54QMo8Pw+WiMMLyzkfwL7Gt3dc/ 88ov+/p/+JrQ
gmoqHdc/88ov+/p/+Jo3XP8Azyi/7+n/AOJoA43XvEOs6R4yuTbr9s02HT7Z PsGUj3XM8k6x
P5hBIy8UUWOg87ecBDmnpHjDV7DQrtb8R6vPoyXM+qXrsLZnhS5uI1MUaIVZ 9ts/ykoPu/Mc
kjtktPL1Ga/W2iF1NFHDI/nN8yIXKjGMcGR/z9hWXL4S0yY5bT1AZ5GlVL2Z Fn3yNIyyqMCV
C0kh2PuUb2AADEEAwdc8X3lvc6fqptfK0K01C9SV4romef7PbXYdWi2hdu+F iuZDnahIBPyy
W3inUNX1jQoZ9Ou9OI1PbJhLhIp0a0umC5miiZiGjBI2kD5DkngbUvhLTJ7/ AO2Taesh3yP5
D3sxt90iMkh8g/ussJHydvJdieSTUlp4ZsrOeG4S0aW4hl85J7m/mnkDBHQD fJlioWWTCk7Q
XYgZOaAOV1zxTrOk3fjJ2vP9Fjimh0w+Un+i3MVilzjoS+8PI3zcL5OOd4Fa Gt/EQaLfX0f9
nfarWGK4ME8LTbZJYYXleNnMIiGPKkU7ZHYMMFfvbdrU/DGn6xp2pWF/psU1 rqcqTXafaZF8
x1CBTkYIwIo+mPu+5zXvfBmlahPLLc2DOsvmloRqM6wgyo6SMIgQisyyPlgA SXY5ySaAKNz4
7m0o3TaxpUcUVm8sE5tLozN5yWxu8KGRMoYR94kHedu3Hz1qeGPEV1rv2pLz SZ7GSDYQzRTr
HIGzwpmiiYsNpyAuAGXkkkCafw/Y3UsslxpltMZbg3MiyTMyvIYPs5JUjBBi +XbjHfGeak0z
R4tI802sDNJLgPNc30txIwGcLvk3NtGWIXOAWYgZJyAa1FQ7rn/nlF/39P8A 8TRuuf8AnlF/
39P/AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0 /wDxNG65/wCe
UX/f0/8AxNAE1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf 9/T/APE0brn/
AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/n lF/39P8A8TRu
uf8AnlF/39P/AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuu f+eUX/f0/wDx
NG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRU O65/55Rf9/T/
APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAH FW5WX7duaAhE
Xy1G0yB/NkD8BWb7vl9VI9O5qfw2ty+tlx80KKQ4lBjIyDgqDbR7jxg/NgA8 9q3Rd2stilvc
NYSR7FDRyzjnHqCKbY2+l292ZdPstJjuWUqWt2UOV6kZC5xwPyqlOna1tTN0 5XvcyPFl9q8f
iHSLDTJNVEc1pdTSppi2nmMUeAKSbn5do8xunOSOwrU/tW7s9UttEa2kuriR FeK5klQCWFNg
mlfao2urMBsVcMZEwQN/lu1XQYNZuLe4u4ZVnt0dIpLXUZ7ZgrlSwJiKkglE ODnoKE0C0V0l
Nmrzo8TrPJdyvKDEu1MSNlsYLAjOG8yTOfMfdJoc7N8RZVu5rWDSo53kdP7P lEsyQXKNcRQB
zI8AGP38bAxeaCM8/dLSS+PbyKNVOjQG4nlNvbJ9tOxpEu4rSbe3l5VRJKCp AYsoJIQ/LWlH
4M0qO6S4WwYtFtEMbajO0cIWWOVVjjJ2xqHijO1QBhAMY4qPV/BlpqdnHBHC tq6XBmEsdzKG
Ae6juZgCMFS7xD5gcr/DjpQBi6l42udP15Hu7SRZ7K3ubaeytpnmikneSw8k ghAzAC5XJ8ss
MuFVuN3WeG9an1zTpJ7nTp7GaKUxMkscqK/AYMnmxxuVw2MlF+YMBkAE1R4S 0wIFbT1kfY6+
dLezPKd7RsWMjZcuDDFtcncvlrtIwK0NN01dJt2htLdQHcvI8t1JLJI2AMu7 gsxwAASTgKB0
AFAGlRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/ 55Rf9/T/APE0
ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eU X/f0/wDxNAE1
FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/3 9P8A8TQBNRUO
65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/ APE0ATUVDuuf
+eUX/f0//E0brn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDx NAE1FQ7rn/nl
F/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQB NRUO65/55Rf9
/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUV Duuf+eUX/f0/
/E0brn/nlF/39P8A8TQBy1FFFZll/wAG/wDIvQ/h/wCgLXQVznhASnw/D5bo owvDIT/AvuK3
dtz/AM9Yv+/R/wDiq0IJqKh23P8Az1i/79H/AOKo23P/AD1i/wC/R/8AiqAO J1yfXoPHV5ca
PLJMYNMtYRZSs7Qbp5blRMY17rJHCWbtEJepxWXpGv6xo/h/VIIbz7ZH4eiu 7q4l1LfPPexr
d3aKnmBl2MFtsbiHHzj5QFwfRhautw9wv2YTuio8gg+ZlUkqCd2SAWYgdtx9 apzeH7C4ltpZ
tP0ySS1lae3d7JSYpGbezqSflYt8xI5J560AcT4i8RalEdP8RSi0fT9P1PUR FYrEyys1tbXq
ZabcRhvKY4EYxuAyduWsQarrl74k0Cz12yjt54NTEsbARRsyvZ3o5iSeYgAo cMWG7JAHyEnr
v+EfsP7Y/tf+z9M/tP8A5/fsS+d93b9/O77vHXpxRY+H7DTIo4rDT9MtI45T OiQWSxhZCpQu
ADwxUlc9cHHSgDlVTVLzxtrH2OPVTJbarbKl0b/FnDAILd5YjAZOWZWlwREf mkU7gRla/g7x
JeQfDyw2xwH7HLpGnx5U8xzRWe4nn7w898HpwvB5z30dq8LzPF9mR5n3yssG C7bQuW+bk7VU
ZPYAdqz38MaVJcWlw+k6Q09kiJayNYKWgVDlAhzlQp5AGMdqAMHS/FOu3Eul XUtrBe2uraU+
pQWVlAI54sNb4QySTBHws5ycJnZkDnFRwa7r1/4uu9JsDaaeS8sr/b4HuWTZ b2JCbVnCqc3L
Z2nb8uQCSWOtpXg210nxDe65FJE99d+YC/2SKLYruHYZjVS+Sq8yF2+Xg8tn YTTkjvGvEis1
unzumFth2yEBy2c8iOMH/cX0FAHM61fHxB4B0TVVa7sjfXGmSlbW8kiZVnmi V0LoVLDbIw/I
4BAxTsGntLRdYhvb6XUbjxBPZeRNeSyxyw/bpI2VYmYquyFS4KBSBFknbvB6 aTR9K1fS4bKW
00i90+2fZFA1oskUTR5jwq5IUrhlwOnIqS18P2FjqM+o2en6Zb30+7zrmGyV JJNx3NuYHJyQ
Cc9TQBrUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A 8VRtuf8AnrF/
36P/AMVQBNRUO25/56xf9+j/APFUbbn/AJ6xf9+j/wDFUATUVDtuf+esX/fo /wDxVG25/wCe
sX/fo/8AxVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf 9+j/APFUbbn/
AJ6xf9+j/wDFUATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/n rF/36P8A8VRt
uf8AnrF/36P/AMVQBNRUO25/56xf9+j/APFUbbn/AJ6xf9+j/wDFUATUVDtu f+esX/fo/wDx
VG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBx8Q mgt7+adp44jG
gjUo6qpErksGyi8h06OCce3Mfha4W68QP5V+pMcZLQPK0jOp7qBcyBcHbkle +B1ro7fUkFvG
on+6oXi1kbBHGMjg1YhvDPII0mG49N1q6j8yatVvdsZOmua5jeKdb1mx1HT9 M0Ox+0XV1FNc
M/lJLsSIxqRseaEcmUc7+MY2nOVjs/E19d3+lWhGmxPqVvDeLtn83yEKbniy pxI7bXMbqQGV
ZWwfJxJpa5a6VdW9tb+IP7ImgluFSCO/gVleYghQodsFyNwAHPWrFxa20KO9 z/Z6JNcRO7Sw
AB5tyLGTluX3LGFPXIUDoKg1OJm8c66bhEt7aAWup+VLpV7PaBUML3VvCGKL cMz5S5VvmEJG
37vJCyTeMteiSKIHTTPd3D2sEn2Z9sTQ38NnI7L5mXDmYyKoK7MbSX+9XVR+ GNKhvZr2LSdI
S7mffLOtgod23iTLNnJO9VbJ7gHqKj1XwrYazYizuraz8nzRKQtqvzfvkndT nOVd41Lj+Lvz
zQBxuq+JtUsPEymSCC81PT4rjTkaCPy0meaXTSrCNn42/aANpkG7Z95N3y9p 4X1LU9RsrldY
tY7e8trgwsqmMFhsRwWRJZRGcPjaXJIAbgMAJovD9hBZrZxafpkdqsUkCwpZ KEEchBkQLnG1
iASOhxzVix05NMs47Owis7S1jzshgtvLRckk4UHAyST+NAF6iodtz/z1i/79 H/4qjbc/89Yv
+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqN tz/z1i/79H/4
qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PW L/v0f/iqAJqK
h23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/ +KoAmoqHbc/8
9Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCa iodtz/z1i/79
H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P /PWL/v0f/iqN
tz/z1i/79H/4qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+ /R/+Ko23P/PW
L/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgDlqKKKzLL/AIN/5F6H 8P8A0Ba6Cuc8
IRs/h+ErM6DC8KF/uL6g1u+TJ/z8y/kv/wATWhBNRUPkyf8APzL+S/8AxNHk yf8APzL+S/8A
xNAHC63/AMS74h3/AIkTj+y9Ks/tXvZvLded/wB87Ul4BY+TtH3zWP4V169g 0XQLZdU8q6ji
0u3tNI2x/wCl2rw2/mz7Svmts8yf5kYKPJ5B2vn0K61fS7HUYNOvNftre+n2 +TbTTxJJJuO1
dqkZOSCBjqa0PJk/5+ZfyX/4mgDhfDmreIjZ6C327+17rV9EOoNHftHbpHIp t8hGhiyFInfh
lc/KoBHJPN+JzNpVj8QNbnjjiF4jadqKRuXVGbT4PIYMQCwWV2j4UZ+0bmwE 49amK2yB579o
kLqgZyigszBVHI6liAB3JAojKzPMkV+zvC+yVVKEo20NhuODtZTg9iD3oA4W y1LQbvwprOkX
fiHTbOeHU76S4Sa4T92v2+QgTIWBMTkorKSNyvtyNwNRlrP/AIVP4xjsLbSk tYrS7VLrSbcQ
215/owJkRQWHBJjJ3NzEeR90eheTJ/z8y/kv/wATUc5W1t5bi4v2hgiQvJJI UVUUDJJJGAAO
c0Aec3uk3Hh7XNAvbmGe6tdHu57XSbe3jDSNbfYrmUqgByzYEMIDck227P7w 1X0nxRr2o61b
6LB4ksbhZLuEPfWk8N8QjwXjMm5YYkDA26MuUOCcsXU7K9G03ULHWbdrjS9Z ivoFco0lrLFK
obAOCVBGcEHHuKueTJ/z8y/kv/xNAHmKa7q+kaLqRhljtg+p3sVkzYET7tRk 8+R5CrbHij3u
AVKhFaQiUBli0PDusa/qes6XZya7aT2bJdzPPabbj7SkTWu0Cbyo0J3SyKWR Mbcr/rBvXvvJ
k/5+ZfyX/wCJqOYrbIHnv2iQuqBnKKCzMFUcjqWIAHckCgDmfAutXWr/AG/7 XqX9oTReWXmt
JYJrAM24lLeSNVfgY3LLllyvLA7m7Cs0X9o2qDTF1NmvNjuYlCkqE8vduwuF IE0RwcEhwRxU
curadBqK2EusKl02RsLJwQYhtJxgMTPDhTyfMXANAGtRVWArdW8Vxb37TQSo HjkjKMrqRkEE
DBBHOak8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8AiaAJqKh8 mT/n5l/Jf/ia
PJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgCaiofJk/5+Zf yX/4mjyZP+fm
X8l/+JoAmoqHyZP+fmX8l/8AiaPJk/5+ZfyX/wCJoAmoqHyZP+fmX8l/+Jo8 mT/n5l/Jf/ia
AJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+Zf yX/4mgCaiofJ
k/5+ZfyX/wCJo8mT/n5l/Jf/AImgDjv7P1y3iuLvTbYNcyKm1ZQhSREeR8Bt 4ILCQDJHGPfI
p+GhqNt4sP2q4LR3EjpLdeScXU6IQYQTwqxneRjGcMP4WrprXU1ZBFGbpnjU blTyuBkjOCc4
yrYz6GrNtfrdXbWqzXCyoAXUmIlM5IyBkjODjjtWkar5bW/AzcI3vcy9Wt5b j4h+H/KvZ7Xy
9PvZG8kIfNUS2mUberfKe+3DccEVw8/iq91TVorKS+gmtbm7tLsWjXUclzYl NRtAsUsaRIYW
xKQyu0hymN3ykt6deX0FjcWtvNeXJnun2xRxQ+Yx5ALEKhKoCygucKu4ZIyK kvZ4tPgWa6vZ
Y42ljhB2A5eR1jQcL3ZlHtnniszQ81/4S3W30mR4taglka7ijvNTS7tv7Ntl aOVz5FwIW2fM
saFZ0Zh5iKCS6yH0Dwtd3l94ctLi/nguJ23jzoCSkqh2COGKJuyoU7lVVbO5 RtIrS8mT/n5l
/Jf/AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJ k/5+ZfyX/wCJ
o8mT/n5l/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8 l/8AiaPJk/5+
ZfyX/wCJoAmoqHyZP+fmX8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImj yZP+fmX8l/8A
iaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l /Jf/AImgCaio
fJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8l/8AiaPJk/5+ZfyX/wCJ oAmoqHyZP+fm
X8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8AiaAJqKh8 mT/n5l/Jf/ia
PJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgCaiofJk/5+Zf yX/4mjyZP+fm
X8l/+JoAmoqHyZP+fmX8l/8AiaPJk/5+ZfyX/wCJoA5aiiisyy/4N/5F6H8P /QFroK5Tw/It
t4Pe8ZXcwQmTYsrJu2xg44/nWrs1T/nztv8AwZS//G60INaiufm1uxsdPt7n URdxPPcyWqRW
wnuWeRC+QojUsfljZs7egqa51WwtvDV1rzJqH2S2t5bh0dJYpSsYJI2SbSD8 pxnGeOxzQBzv
iXR9a1LXteisVj+wXej2trco8B33CGS5EiQSl1RJQjkjcGGWTO0c0Xup6gLi 7gjj1nff6xp9
zZFLS42raZtRKGYLiIfJPuRyp5bI+bnqra7sLu9ns4pbn7RAivJG/moQrPIi n5sZBaJ8EdQA
ehBNz7NH/el/7+t/jQB5a+i6t/wjWgQyLrky3Wn215q4mubiWRZYbizkbbuY tHIENwQke1mI
4BKriTUIdckvNWn08+IBb2lld3OlgyXI3Sra2BgDKxzId/n/ACSA7m8zIJ3V 6d9mj/vS/wDf
1v8AGj7NH/el/wC/rf40Aea6zaa7DfTWKXmq2+hW13KsUvk3t3IxMNsyDdBI s7rua6+YsyAj
aeQgHUX1tqJ0Xw7c3qz3bWEsVxqUXlL5k22FwW8pCysyysku1ScGP5NzBQei +zR/3pf+/rf4
0fZo/wC9L/39b/GgDkdY1OLVbixnkj8QJoapOk4tbS9t5/tGYjFlY1WYpsM3 ONmcZ+YLWPpe
meIbu6tTrkmsrcXN7DbX/lXc0cYiGmpI5Ty2CIPtS4LpjJyucMVPo32aP+9L /wB/W/xo+zR/
3pf+/rf40AeW+Hr7Vr658y5k1xvEa3enCRGW4W2jiNtaPcq6cW6Ntac7WAYE jaN22q9zDrup
3s8U8Wq/ZZ/LvNQs1t71fsjxXltIUimd2EjKnn7fswTdsyqn5APVo9OtYXme KNkeZ98rK7Au
20LlueTtVRk9gB2qT7NH/el/7+t/jQB5jNAreLluNRi8TnR0SdLOS3W/81Va 308qGMf70AlZ
iQ3V1bPzA1Xgg8XtrNjcajFqRvEe3SeRFbau5tIMwUp8oQlbkkL8p2ydg1er fZo/70v/AH9b
/Gj7NH/el/7+t/jQB5zpMOoeHfCGgLphu11SBBpk9jqUlw0b3DwoNyKx+ZI5 I1bdGSixC4K5
r0SwtfsOnW1n9onuPIiSLzrh98km0AbnbuxxknuabJp1rM8Lyxs7wvviZnYl G2lcrzwdrMMj
sSO9SfZo/wC9L/39b/GgCaiofs0f96X/AL+t/jR9mj/vS/8Af1v8aAJqKh+z R/3pf+/rf40f
Zo/70v8A39b/ABoAmoqH7NH/AHpf+/rf40fZo/70v/f1v8aAJqKh+zR/3pf+ /rf40fZo/wC9
L/39b/GgCaiofs0f96X/AL+t/jR9mj/vS/8Af1v8aAJqKh+zR/3pf+/rf40f Zo/70v8A39b/
ABoAmoqH7NH/AHpf+/rf40fZo/70v/f1v8aAJqKh+zR/3pf+/rf40fZo/wC9 L/39b/GgCaio
fs0f96X/AL+t/jR9mj/vS/8Af1v8aAOUbw/q7W002n3UVtcyqrJL5uVIVndV ZTGeCZMHB7D3
Bp+HdG1LTfEqySi+axeSRfNOAZpwmGklA5MZw2zPGfqpPZWtujWkJLS5KKeJ WHb61L9mj/vS
/wDf1v8AGtFVko2IdNXuYOq6Wb7x1oVw6XYgtbK7bzIZZI1Enm2pVXKEBgQr HY2Q208HFcOf
+Egu9aRXh1IxXFxbXV5ZtaXZS0mS/tW2LLK7RuFUzfNCEQhC2MBdvq32aP8A vS/9/W/xo+zR
/wB6X/v63+NZlnluzxDJpMixz6qYTdxfbdVeHUA9wvlylttnuSWHEhhz5DBT uzwqui+geFkv
I/Dlot9PPPMN+JJ4TE7JvbZlWZmHybfvsX7vhtwrS+zR/wB6X/v63+NH2aP+ 9L/39b/GgCai
ofs0f96X/v63+NH2aP8AvS/9/W/xoAmoqH7NH/el/wC/rf40fZo/70v/AH9b /GgCaiofs0f9
6X/v63+NH2aP+9L/AN/W/wAaAJqKh+zR/wB6X/v63+NH2aP+9L/39b/GgCai ofs0f96X/v63
+NH2aP8AvS/9/W/xoAmoqH7NH/el/wC/rf40fZo/70v/AH9b/GgCaiofs0f9 6X/v63+NH2aP
+9L/AN/W/wAaAJqKh+zR/wB6X/v63+NH2aP+9L/39b/GgCaiofs0f96X/v63 +NH2aP8AvS/9
/W/xoAmoqH7NH/el/wC/rf40fZo/70v/AH9b/GgCaiofs0f96X/v63+NH2aP +9L/AN/W/wAa
AJqKh+zR/wB6X/v63+NH2aP+9L/39b/GgCaiofs0f96X/v63+NH2aP8AvS/9 /W/xoAmoqH7N
H/el/wC/rf40fZo/70v/AH9b/GgCaiofs0f96X/v63+NH2aP+9L/AN/W/wAa AJqKh+zR/wB6
X/v63+NH2aP+9L/39b/GgDlqKKKzLF0eN5fAN3HGjO72zqqqMkkxDAAp0+ma Jc3Es7yeJw8j
l2Ed3qSKCTnhVYBR7AADtVnwhBFL4fhaSJHOFGWUH+Ba3fslt/z7xf8AfArQ g43W9NutQ0zR
5YtN1K5jg1i4uZYbS4+yXAjZblVZWZ4yOZEyNwJBPUZFZfinw/eazpd7u8KX d+bjR/sWnQ3c
1vNLp86+cDIzySkAuGhO9Gdj5fzYIGfRvslt/wA+8X/fAo+yW3/PvF/3wKAO J8O+GZ9N8Wy6
nf6NHM8z3K210PKZrMG7vJdxJO5RIk8YGzceCGC4rvKxdSv7WxuFtLbSJdSv Cgka2tFiDRxk
kB2MjIqgkEAE5bDYBCsRIl/o4iY3LWdrNFEZbiCeSIPbhVRn34JA2iRCTkgb lOcEEgGtRWLJ
rXhiHS4dUl1PSE0+Z9kV208YidueFfOCflbgHsfSq/8AwkOg/wBqX2mD7N9v sriGCS3Z4kci
TytsihmBKZmUZ6kggAnAIB0VFYra14YVL121PSAlg4S8Yzx4t2LFQJOfkJYE YOORirEN3olz
pZ1SC40+XTwjObtHRogq53HeOMDByc8YNAGlRWDa6nBP5811oVzp1hFE0326 +WCOMoOcld5k
Tj5vnVcAHdg8VIuteGGSyddT0gpfuUs2E8eLhgwUiPn5yGIGBnk4oA2qKxV1 rwwyWTrqekFL
9ylmwnjxcMGCkR8/OQxAwM8nFEmteGIdLh1SXU9ITT5n2RXbTxiJ254V84J+ VuAex9KANqis
n+0/D39sf2R9u0z+0/8Any82Pzvu7vuZ3fd56dOazz4m8PHxC2kxXGmS+RaX NzeyrcRn7J5L
xqVkH8P+sY5JGNh/AA6aiqNjJpWp2cd5YPZ3drJnZNAVkRsEg4YcHBBH4VY+ yW3/AD7xf98C
gCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7x f98CgCaiofsl
t/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCai ofslt/z7xf8A
fAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7 xf8AfAo+yW3/
AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+ yW3/AD7xf98C
gAtP+POD/rmv8qmrlrPUPPle3EdorRKhLSQZzud0UZ3cklD27in6VrFnqOpP agWjIjmNXEIV
ZnAJYRksd20DnA701GVr2J543tc6aisW/wBW0TTNZ0/S7021vPqCSG2aXYiu yNGuwZIJcmUY
ABzg+nNi1u9EvnVLS40+4d03qsLo5K7UbIx22yRnPo6n+IZRRpUVkpqfh6S8 tbOO+0x7q7iE
9tCssZeaMgkOi5yy4BORxwa0Pslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt /wA+8X/fAoAm
oqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/f AoAmoqH7Jbf8
+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7 Jbf8+8X/AHwK
Pslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/ AHwKPslt/wA+
8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt /wA+8X/fAoAm
oqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/f AoAmoqH7Jbf8
+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7 Jbf8+8X/AHwK
Pslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoA5aiiisyy54Qni i8PwrJKiHCnD
MB/Atbv2u2/5+Iv++xWL4N/5F6H8P/QFroK0IIftdt/z8Rf99ij7Xbf8/EX/ AH2KmooA52/j
ubbWZNX0h9PuZ7i3jtZ7e7ujCu2NpGR1dUcg5lcFSpzlSCu0hse68NG/stfk ml0+G/1S9s7z
MF0ykiBLciIzKquo3xSAOBlQ+4DOVq9rPi+bTvFS6Dbx6N5728Msf9o6qbVp mkeRAkaiJy5B
j5/3hxUfiHx3a6VcwRWv71VluFuZpbecQKsVtNKwWdUKlg8QVgu9hhxtyDgA zR4dv4LIeRNb
AzXDz3NkviC7jLOUjRHa85lcqsZGzaqkSDjMYZo9J8LX+maHBpBu9MkjMumX Us4uWBWS2+yo
6Kuz5lK2zMGJBywBUD5q67QPEEWurehLeeGS0u57Zw8ThG8uV4wyuVCvny8k KTtzg81h23jm
5Tw5ba1q+m2ljb31kbuzZLx5lJEDT7JcRBkOxWOVVx8jd9ocAzY/C1+9tolr Nd6YkehxW1rb
yJcsxuo47m1kZ2UoPLbba8KC4JfG4BcnoDo1td2/iqzvbyIWutytgwyjekbW sUDdRgNlGI6j
p9Ktf8JfobJctHdyTfZrhrWRILeWR/OVnDRqqqSzjYzFVBIXDn5SCZE8UaTL LaxQTTzyXONq
QWkshiyxT96FU+T8ysp8zbgo4PKtgAyb9Nb1WxazvBoqeRLBcw3EN6/7+SGa OVVaMx/ulfYQ
SHkKZ/jxzj33ha/1Jtau5bvTIbrVdPv7doUuWdIZJorWKPD7AWXFsWJ2gjfg A4yd7SvHWm6h
4e07VJYL6GS9iWQWqWNxLIDsVmKqse5413qPNC7CSOckCrieMNAluJIIdSjm eN4EcwozqpmM
Yi+ZQRh/OTac4PzY+420A5nV/ClzqGo+I7iK/wBPVNTsr23hDzEFWmt7OJS3 HADWzk4zwV65
IFjUtE1CTUdRuba9tpbe7vTcfZF1WaxLf6PbxK7TQqXypikGzlWEgJOVArsr e+t7ue7hgk3y
WkohnG0jY5RZAOevyup49fXNWKAPPdF8KXOm+FRpc1/p7Ti90u43JMSu22Sz WQcjOSbZ8cd1
zjJxXHhjUGtdMsbqLSLm00jTPsNsV1ea3e4YS2zJKxSLMJH2bdhWfkgZxzXp VFAGToj3Fro8
EOrarFeXw3GSbcg6sSF+VVB2ghdwVd23O0ZwND7Xbf8APxF/32KmooAh+123 /PxF/wB9ij7X
bf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9 ij7Xbf8APxF/
32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8A PxF/32KmooAh
+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32Km ooAh+123/PxF
/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooA5Wbw3 pGo6eYbq8bEo
DkZiDRt8xBVtu4FS7Ec8ZPqc19J8NwaVryalFcaeEG+HyB0ihC4Qof752jd6 g/7OWltdVvpf
tMMUshNtEjgKoIIaSRMYCM3Aj689e1T6Rq2pT6ulvdxTLEythvJlwSBnkmBF Axnnd1wMHNaR
dTl8jJ8lyxqETt4h0zVrOezk+zxTWs0U0/l4jleJmdSA2WXyQApAB3feXHOH pmhXPh7S/DX9
mf2RNd6Xpj2M9u1yYInaTyWklV1jYk74ScFBu3kkgjB6bW9Sm09LGO1WN7u8 vYbeKNwcMu7d
Kc5GCsKSsMnqoHJIBrx+L9DlSaQXcixRJ5nmyW8qI8W4KZUZlAkiG5S0ikoo YMSAQazNTjdF
8Dy6a2nxXFxZ3EafYZZ5BqtwiRyW8UKYW2XEcuTAGDuQRuGVYIA3pH2u2/5+ Iv8AvsVRn8Qa
fBby3A+1zxxXBtmNpZTXH7wD5gBGjEgEFSw4DAqSGBFU28a6CJ5IY7qe4ZNg DW1nNMkhZFkV
Y2RCJG2OH2oSduWxgEgA2vtdt/z8Rf8AfYo+123/AD8Rf99ismLxfoc9/wDY 4buSQ74089Le
U2+6RFeMeeF8rLCRMDdyXUDkgVT0DxnZajpOjPey7L69tLeSYxW8hgilljVh G0mCiMS67UZt
x3p13LkA6L7Xbf8APxF/32KPtdt/z8Rf99iqup61ZaR5QumnaSXJSG2tpLiR gMZbZGrNtGVB
bGAWUE5Izj6x4zsrVbWPTZftk093ZxeZFbyTQKk0sandKg2K3lyblDMPvIcE MMgHRfa7b/n4
i/77FH2u2/5+Iv8AvsVzOj+PNP1G01G5uI5IILC3S6kuI4ppIGhNvFOWEhjU ZAlxs++Qudoz
gWIPFkFnpsX9uiSDULeyFxqQtrWWWC1cReZIrSIGRSBkhS2SCuM7lyAb32u2 /wCfiL/vsUfa
7b/n4i/77FZqeKNJmltY4Jp7hrrBjNvaSyjaWKrIxVSEjYhtrthWAJUkAmti gCH7Xbf8/EX/
AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8 /EX/AH2KPtdt
/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2K Ptdt/wA/EX/f
YqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/ EX/fYqaigCH7
Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqai gCH7Xbf8/EX/
AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8 /EX/AH2KPtdt
/wA/EX/fYqaigDkKKKKzLLnhCZY/D8IYOThT8qM38C+grd+0x/3Zf+/Tf4Vi +Df+Reh/D/0B
a6CtCCH7TH/dl/79N/hR9pj/ALsv/fpv8KmooA5m90/VP+Ehn1bSdStrb7Ra Q20kV3pcs/8A
q3lYMCsqYz5pGCD0FY+r+DLjVLWXTl1dYdMaW9uI4zpsjTLJcxTo2ZN4UqGu XYDYDgKM9WN7
WNf1aPxkdEsbiC3j+yW8qu+j3F7ueWSVDueJ1WJR5a8v6k5wDVPxN44nsTBP YW13HYQ3F4k1
80UUkUpgtrlmjVPMEhKyw+iA+WcNggkA6LR7NtJN5CLhpbOW4kuIE+yOskbS yPJIGfOGG5zt
wq4Awdx5rm18GXFz4Uj0DU9XWeG0097KxeDTZIvLZoGg82QF23sEdgACq/M2 QTtK9F4a1q71
mK+a6sJIBb3tzbxz5Ty51jnkjBUBywICDduC5J4yK4vTPHuqanpWlzJqWlXk l59hluDpsWPs
BkureNoJcySfM6zSAE7CPKfAJ+6Ab1/4Rtb7RIrCV4p3g1O41GIXunNPAWle ZtskWRuCrOwG
GHzKrf7Jk0vw9Lol1bzaZdW0CtFHDeQjSSsbIsskgEKxsoi5mkHzeZxtzkhi 1pvGumrYaVd+
RdkapZC8tYwi7m3PCiRn5sB2a4jUc7RySwAzUlj4w0y4ne1vz/ZF8t39jW01 CeFZJZNkbgJs
dg/E0fQk5OMUAZtr4dvtNt9MWw1SJZ9Lt3sbR59MlkX7KwiwsiiRS0oMKfOC q8t8gyMFt4bt
dC8Ja3pdvb3OqwXNuEjs5A0TSqlpFbiIyAAAsIvv4GN/TinaN48g1G1tZX0+ ++zt9lil1Dy4
khE08UTouzzWkGTPGvAYAty2AWrUv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjS KiKiuhJzE5LF
hjCgBtxKgE2iWsej6PBZNJLPMu6Sef7Oy+dM7F5JNvO3c7M20cDOBwBWh9pj /uy/9+m/wrkX
8XyaDHrMutyx3IttTis4zHJBaqM2cMpx50qjBZnOC7Nz3AyLkPj3R7lrmW1E 9xYWlot5eXyB
AltG0XnKWjLCU5TBG1COcZyGCgHRfaY/7sv/AH6b/Cj7TH/dl/79N/hVXRtU Osacl79hntI5
MGITSQyeYhAIdWid1KnPHPbpjGdCgCH7TH/dl/79N/hR9pj/ALsv/fpv8Kmo oAh+0x/3Zf8A
v03+FH2mP+7L/wB+m/wqaigCH7TH/dl/79N/hR9pj/uy/wDfpv8ACpqKAIft Mf8Adl/79N/h
R9pj/uy/9+m/wqaigCH7TH/dl/79N/hR9pj/ALsv/fpv8KmooAh+0x/3Zf8A v03+FH2mP+7L
/wB+m/wqaigCH7TH/dl/79N/hR9pj/uy/wDfpv8ACpqKAIftMf8Adl/79N/h R9pj/uy/9+m/
wqaigCH7TH/dl/79N/hR9pj/ALsv/fpv8KmooAh+0x/3Zf8Av03+FH2mP+7L /wB+m/wqaigD
CXS7CXTzERdKJVBfAd1ySGJCsCnX2pmkaHZaLeS3FtLdHzV2vH9lRFJHQnZG pJHOMkjk1mwX
N2Ybx2kljghjQxytKyqWMsisvLqvAVOMjGe+QKXw7qV5eayU877VbopEhikj YREg7S2Llzg4
IA29e4wa0Sqcu+hk5Q5loaeoxy3viPRZDDL9hsvPumkEZBE+wRRqRjlSk05O B1ReR0bD0LwX
F4dR102aztHW3FpDc2uiKlwYty5aWQ58yXagw2FTcSzI/Cja8T+MNM8K/ZVv jumut5ij8+GH
Kpjcd0zonBZeN245yAQCRJb+KrG8e1S1hu5jepFNabYsCeB1DGYE4ARQfm3Y YHaMZeMPmamL
e+EI7jTrKwjmtp7Sw3R2lrqeltdQJCQoUMm5d0ibSqSZyEZgQzEuTQvB0eiQ 6ZH/AGhLN9hu
4rnP2Nl37LAWe3qcZxvzz/d96ml+I2kxX9/YLBPNfWkqxLbQT28rzEzpBxtl Oz55E4l2H5un
ytiSTx9ZRxFm0zUvMZxHBDiLdPIJ0t5EU+ZtBjmlRGLFQeql15oAxfD/AIR1 GwSbS7m9X+yI
buxlTFg/nXBtre1CuH3kIpkgwVKE4DYPIIk0r4e2Wl3VhKGs7g26WpkuJ9GD 3ReCKONfKlYk
RoREp27WILOQwJBW1fePYLHVo5LwT2NrbWlyL2znEQdLgSWYiBcMUGVuRzv2 DzPmI2nb0Hhv
xLYeKNOkvNPbKxSmGVPMjk2OAGxvjZkb5WU/Kx64OCCAAYut+FhrhtJ7yWzv bu1e5WP+09HN
xAIpZAwXywy/OipGgfdyA2QS3EbeE5YdlrY6ksWmtd2d3PFLphMjPb+SAEZC iRqVt4xjyzgl
scEATRfESwOmW1/daVqtpDdxRT2ivFHK9xFJJFHuVYnc8GeLKnDHd8oYggaB 8WQJeCCXTr6O
NJYba5nbyilrcShCkLgOWLHzYhlAyDePmwGIAOdHhO70rwrc6HZXLXdpfW9t Z3ataMkuNkNt
NKjltqgQRlghVjv5yw+Wrmu+Ef7cvtTmF6tlHe2ktu32SwlSSUvCYgbhg+2d V3FlBUFSFwwG
7del8aWb22nvbJOsl15DSK0Ic23mXMcHlzKHGyQs7rjJwYpOGKFTl3PxBit9 StL+a3u7XQZN
Mnuo5pvJC3hMtskLod+UB87/AJaeWB5gLYwSoBvXFlcL4h/tawu1h86KG3u4 p7GSXfHG7svl
kMuxv3sgJIcfd4GDnY+0x/3Zf+/Tf4VzOlfEHStauLO2sLe7uJ7l5UKw+XKs RjMW/fIjtHgL
OjZDEdV+/hCeK/EGoaVrOl2FlLHCl1b3E0kh0q4v2zG0IACQspUHzTljkcAd 6AOm+0x/3Zf+
/Tf4UfaY/wC7L/36b/Cs0a39mvIdLuoZ5dSbYB5MG1J1IG+ZMsQsanO4M25f lHJePfjy/EbS
Yr+/sFgnmvrSVYltoJ7eV5iZ0g42ynZ88icS7D83T5WwAdV9pj/uy/8Afpv8 KPtMf92X/v03
+FczJ4+so4izaZqXmM4jghxFunkE6W8iKfM2gxzSojFioPVS681TvvHsFjq0 cl4J7G1trS5F
7ZziIOlwJLMRAuGKDK3I537B5nzEbTtAOy+0x/3Zf+/Tf4UfaY/7sv8A36b/ AArgZ/iKdTuN
PTQp44o5UuftJOnSamySRGDCgWshXBWcEsGYDhThsgamteJr20WGytYJ5riD ULC0vtQhjjSC
N5JYd6bHcv8ANHKMbQ2PMHzZBIAOq+0x/wB2X/v03+FH2mP+7L/36b/CvPY/ iFqNx4evdQWC
C3hil09Y9TuYlS2RbhLRmMkfn7wyi4dsZ2gADeSDmxZ+N7j+2rJLm5gvLB/N gW60+MCG8dpr
GOOVMs2FRrmSNsO3KMeoCgA7r7TH/dl/79N/hR9pj/uy/wDfpv8ACsW48WQR 6ncaZaadfX1/
BK0bW8HlKWVY4ZGcNI6rtH2iIcndluAQCay9O+IEWpyolhpOpX73KefDDDHD G0cXkW0p3mSY
Bj/pSdMdxj5dzAHXfaY/7sv/AH6b/Cj7TH/dl/79N/hTbC+t9T062v7OTzLW 6iSaF9pG5GAK
nB5GQR1qxQBD9pj/ALsv/fpv8KPtMf8Adl/79N/hU1FAEP2mP+7L/wB+m/wo +0x/3Zf+/Tf4
VNRQBD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4VNRQBD9pj/uy/9+m/wo+0x/3Z f+/Tf4VNRQBD
9pj/ALsv/fpv8KPtMf8Adl/79N/hU1FAEP2mP+7L/wB+m/wo+0x/3Zf+/Tf4 VNRQByFFFFZl
lzwhIyeH4QsLuMLypX+4vqRW750n/PtL+a//ABVctpX/ACT29/69JP8A0UKf P5MNxLEnw9u5
0RyqyxpYhXAP3humBwevIB9QK0IOm86T/n2l/Nf/AIqjzpP+faX81/8Aiq4v WLq/0/StHtdI
N5EbnWbm3aPTkt/NMYW5fannjyxgxqeccAgVD4m1nWbHwlrFhZCea+tNEe9u ru/ukgngEiy7
NnkRlGkUxP02D5VwxySADev9DuLrWZNUtNS1fTp5beO3lW1
Re: building a plugin for external binaries (fao Ed Merks) [message #389590 is a reply to message #389582] Mon, 29 November 2004 11:48 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_000B_01C4D63B.B499A840
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_000C_01C4D63B.B4A14960"


------=_NextPart_001_000C_01C4D63B.B4A14960
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,

Next time you tell me 'model plugin variable' I shall know that you mean =
exactly that.. 'model plugin variable'.and it was under my nose all the =
time - thanks for pointing it out !

I have regenerated the plugin.xml of the app but the requires>import =
line carries a warning that the plugin dependency cannot be resolved.

To recall - having written my plugin, I simply copied the plugin.xml =
from that workspace to the folder where the folder of binaries called =
'lginterface' lives (yes, it has the same name as the id of the plugin). =
Back in the 'host' or dependent app (in an EMF workspace) I found that =
the plugin view doesn't show the plugin I'd created in the other =
workspace (and had pasted into the correct folder to find the binaries =
folder).=20

It seems I'm missing a plugin 'registration' step? When I tapped in the =
name of the model plugin variable how is this associated with the plugin =
with that id? Why doesn't my plugin show up in the plugin view when I'm =
in the workspace of my dependent app/plugin?

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cof5h3$bk5$1@www.eclipse.org...
Ian,

I would expect your plugin.xml to have:

<runtime>
<library name=3D"xyz.jar">
<export name=3D"*"/>
</library>
</runtime>

and then in the same directory as that plugin.xml I expect to see an =
xyz.jar. (The name's location is relative to the plugin.xml, and should =
be either a jar or a directory containing .class files.)

Once such a plugin exists, you can set a variable like this:



And if you remove the plugin.xml from that project and renenerate it, =
you'll end up with the extra dependency:

<requires>
<import plugin=3D"org.eclipse.core.runtime" />
<import plugin=3D"org.eclipse.emf.ecore" export=3D"true"/>
<import plugin=3D"lginterface" export=3D"true"/>
<import plugin=3D"org.eclipse.emf.ecore.xmi" export=3D"true"/>
</requires>


Ian Ward wrote:=20
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<?eclipse version=3D"3.0"?>
<plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName">

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project>properties>java build path>add library>user =
library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml =
and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=20



------=_NextPart_001_000C_01C4D63B.B4A14960
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Next time you tell me &#8216;model plugin variable&#8217; I shall =
know that you mean=20
exactly that&#8230;. &#8216;model plugin variable&#8217;&#8230;and it =
was under my nose all the time &#8211;=20
thanks for pointing it out&nbsp;!</P>
<P>I have regenerated the plugin.xml of the app but the =
requires&gt;import line=20
carries a warning that the plugin dependency cannot be resolved.</P>
<P>To recall - having written my plugin, I simply copied the plugin.xml =
from=20
that workspace to the folder where the folder of binaries called =
&#8216;lginterface&#8217;=20
lives (yes, it has the same name as the id of the plugin). Back in the =
&#8216;host&#8217; or=20
dependent app (in an EMF workspace) I found that the plugin view =
doesn&#8217;t show=20
the plugin I&#8217;d created in the other workspace (and had pasted into =
the correct=20
folder to find the binaries folder). </P>
<P>It seems I&#8217;m missing a plugin &#8216;registration&#8217; step? =
When I tapped in the name=20
of the model plugin variable how is this associated with the plugin with =
that=20
id? Why doesn&#8217;t my plugin show up in the plugin view when =
I&#8217;m in the workspace=20
of my dependent app/plugin?</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:cof5h3$bk5$1@www.eclipse.org">cof5h3$bk5$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
would expect your plugin.xml to have:<BR><PRE wrap=3D""> =
&lt;runtime&gt;
&lt;library name=3D"xyz.jar"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</PRE>and then in the same directory as that plugin.xml I expect to see =
an=20
xyz.jar.&nbsp; (The name's location is relative to the plugin.xml, and =
should=20
be either a jar or a directory containing .class files.)<BR><BR>Once =
such a=20
plugin exists, you can set a variable like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
src=3D"cid:000601c4d633$52475820$dda60950@l8t7p3"><BR></BLOCKQUOTE>And =
if you=20
remove the plugin.xml from that project and renenerate it, you'll end =
up with=20
the extra dependency:<BR>
<BLOCKQUOTE>&nbsp; &lt;requires&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;import=20
plugin=3D"org.eclipse.core.runtime" /&gt;<BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.emf.ecore" =
export=3D"true"/&gt;<BR><B>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"lginterface" =
export=3D"true"/&gt;</B><BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/&gt;<BR>&nbsp;=20
&lt;/requires&gt;<BR></BLOCKQUOTE><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcoc740$7ab$1@www.eclipse.org"><PRE wrap=3D"">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;?eclipse version=3D"3.0"?&gt;
&lt;plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName"&gt;

&lt;runtime&gt;
&lt;library name=3D"lginterface"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the =
id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user =
library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the =
plugin.xml and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_000C_01C4D63B.B4A14960--

------=_NextPart_000_000B_01C4D63B.B499A840
Content-Type: image/jpeg;
name="moz-screenshot-1.jpg"
Content-Transfer-Encoding: base64
Content-ID: <000601c4d633$52475820$dda60950@l8t7p3>

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCALWAlEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1LTrG
3utLk1jU4jNAqNLFb5ymxQTkjOGJ6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOP mVWJHIPGM8GpbY7f
hyT6ac5/8cNcfrF2+l3+sCx1a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCn ClKo3GLs7f1cHJRt
c9DTRdFkjWSPTNPZGAKssCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2 NqJ7j7cbaCIAY3S3
flLwWUHBcHaWUHGNy5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKg Zi6ksRGrS5AXY0xd
0mxvc6j+wtH/AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQ x3tnBcWthqUsdqI1
S4maNchmn3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6Xyk RSZGwY2UsWIO8EAB
MbixHaf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/ AGx/Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtGV+cB
QDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2Oq2em zQzW7ySTecbfc6uJ
FCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4lwXmAW4zu xDgquR8+FAO8/sLR
/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2rHTZX0i3vLq8c WzqLpYIrWUJGPMPl
ErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIsaWz4WHzQVJ+1qMmR v9WTj5sKAdJ/YWj/
APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8V6JaajELSz0+PU9HEtq0 TSyu0j2k+Vl3KFA8
5VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+tCTEjKv221woAmdpRiQZcpFj AyuXAUA7u9svDWmw
ia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHvDcdzAks1vp9zcuRCnmIBK3Awsb5B 6r90Z6etaPiH/UWn
kf8AIS+0f8S/P3fO2P8Ae7bNnmbu+3O35ttY6/2N59t9i/5Bv2iLz8b92/ev 2Xbu5+z7923y/l3Y
x8vmUAVLnR49MkCXthatEzBUuo4FCEnoGHJU/p79qd/Zlh/z5W3/AH6X/Cu2 mhjuIXhmRXjcbWVh
kEVyV5ZyaNMscjM9k5xFM3JQ9kY/yPfoeestDTK39mWH/Plbf9+l/wAKP7Ms P+fK2/79L/hVqipK
Kv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/sy w/58rb/v0v8AhVqi
gCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7 MsP+fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v0v8A
hVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf 8KP7MsP+fK2/79L/
AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36 X/Cj+zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9 +l/wo/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD/nyt
v+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/P lbf9+l/wo/syw/58
rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/ z5W3/fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/wo/sy
w/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8A Zlh/z5W3/fpf8KKt
UUAaei2qXvgu2tJCwjntPLYr1AZcHHvzTbrwtFfRCK71C6uIw24JNFbuAfXB i68mrWkzx23haxuJ
m2xRWUbu2M4AQEninSa7ZRRtJIt4iICzM1jMAAOpJ2VptqiCW30q2h0t9OlH 2q3k8wSi4VW80OSW
DAAAg7iMYxils9J03TkgSx0+0tUgR0hWCFUEauwZwuBwGYAkDqQCaszSeVBJ JjOxS2PXArlv+Equ
f7f/ALM22H+v8nHnHzv9T5u/y/7v8Oc9aqMHLYTklubD+GtBkuLS4fRNNaey REtZGtULQKhygQ4y
oU8gDGO1WE0nTY0RE0+0VESJFUQqAqxNuiA44CMcqP4TyMUyC7madEk2EOSP lUjHBPqfSuc1XxjH
pmrzWDy3jzIBIUtrCWfahZgpJRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESE PIYEDztFgo8hCjc4
Ybs9jyMVci0LR4ft3laVYx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8 dH+FH9qXn/Pb/wAd
H+FTzIdh+q+D9M1nxDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6F o9vLcyw6VYxyXUqz
3DpboDLIrb1diB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBB FOzFF2lZGdRj3zG2
fqKOZBY6GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tiki v9KsbuOSUTuk9ukg
aQKEDkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY 3F9Bt8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/Z291
Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BVmigA pk0MdxC8MyK8bjay
sMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f+7cqY8/Q ng/gTXcUUmkO5w39
p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Gj+07D/n9tv+/q
/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xruaKOULnDf2nYf8A P7bf9/V/xo/tOw/5
/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8a7mijlC5w3 9p2H/P7bf9/V/wAa
P7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf22/7+r/jR/adh/z+23/f1f8AGu5o o5QucN/adh/z+23/
AH9X/Gj+07D/AJ/bb/v6v+NdzRRyhc4b+07D/n9tv+/q/wCNH9p2H/P7bf8A f1f8a7mijlC5w39p
2H/P7bf9/V/xo/tOw/5/bb/v6v8AjXc0UcoXOG/tOw/5/bb/AL+r/jR/adh/ z+23/f1f8a7mijlC
5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFHKFzhv7TsP+f22/7+r/jR /adh/wA/tt/39X/G
u5oo5QucN/adh/z+23/f1f8AGj+07D/n9tv+/q/413NFHKFzhv7TsP8An9tv +/q/40f2nYf8/tt/
39X/ABruaKOULnDf2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tO w/5/bb/v6v8AjR/a
dh/z+23/AH9X/Gu5oo5QucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHK Fzhv7TsP+f22/wC/
q/40f2nYf8/tt/39X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+ NdzRRyhc4b+07D/n
9tv+/q/40f2nYf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb /v6v+NdzRRyhc4b+
07D/AJ/bb/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Giu5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8AIvaZ
/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa41C3t 5NNVC1ta+ar4M24M
SpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07SykhWByp6e /UdRpTmovUicWzC8
CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK1S8h8iFImsb1 YVDpLMzB1Mqbxh06
hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUtYurDT5XkuVSNWkCZ Ku5ZiN3RT9fyoqN1
Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7IDgLIeDtyyg5xmWXbz+m+E Zn1WCKfR5v7GW5im
e3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6TqUyQwYEru6ojwyru2k85zjBA yOc49DxW1fSaRpmk
jUr2OSOAmNcRrJKxaRlVVCoCzEswHA71nKnKO5b0dmjx2XRLixfQI9R0X7dF N9lNzaDyn+0Xgtrv
znYOwVn/ANWS5PzbRySKnn8KatKreZbTfYz5TNawtA7mISXjJAElzEfLE0HB +UbPkJKrXr2mjS9V
t2nt7W7RFcoRdW01u2cA8LIFJHPXGOvoauf2XZ/88f8Ax4/41NmK5zXgOyk0 7TobWUTKUjchJnRn
RS+VU7AEGAQNqjauNoJABPY1BBZW9u5eKPaxGM5J4qLU9Sh0q1S4nWRke4gt wEAJ3SyrEp5I43OC
fbPXpTSEXKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv /QBWhQAVy99FO2oX
qpqes6bm43g2NksqygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeER vNiKIFmUoMZKsOAB
ycAcY5zxtZ3UsVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky 7pW2KIldmZsE9EyT
wDz7VdOfJK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4weno PinT7jU/BsVta209
zIJrKUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZ KqPujp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5EudgOT
s27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2wsYy pUc5fPUWupa7eWcF
1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpGfwsTTW5w GjeB73S7HSzBpEFt
dWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvDVzpXh/8As2Fb TT3vG/cR/wBoMLi0
lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G+aaLzN69OMeTJyeD t4JyM6FWI8/8BeFr
/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIcB+hLuR6BRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAZ+hf8i9pn/X
pF/6AK0Kz9C/5F7TP+vSL/0AVoUAFFFFABWTrquVsmRrmMLO2ZbaLzHizDIo YLtYcFh1BHqK1qKA
OF8OaVd2CwWsup6ndu+o3VxvlsxGsCyG4YOD5KDc3mKWByN3CgDiuqvY2QRl ppJAZOFYLheHPGAP
UDnso75J0KZLEkybZFyM564x+NNbiZyGjWLy6Hp8n9jaXJutozveTDNlRyf3 Z5/E1qeEzu0a0PrZ
wH/x01J/wiHh3/oDWf8A36FaltaQWcQit4hGgAUKOwHQD2HpWNOnyFNtnO2e najF4obWn0+Bftks
lrLGNu6CFA2yfdn5mk8uMMAM7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+h f8i9pn/XpF/6AK0K
z9C/5F7TP+vSL/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAZ
+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFAB
RRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XWtKi0LT45NTs0dLaNWVp1BBCj IIzV7+3dH/6Ctj/4
EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaFFZ/9u6P/ANBW x/8AAhP8aP7d0f8A
6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY/wDgQn+NAGhR Wf8A27o//QVsf/Ah
P8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/AKCtj/4EJ/jQ BoUVn/27o/8A0FbH
/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDAhP8AGj+3dH/6 Ctj/AOBCf40AaFFZ
/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3 R/8AoK2P/gQn+NAG
hRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/ AMCE/wAaP7d0f/oK
2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o// AEFbH/wIT/Gj+3dH
/wCgrY/+BCf40AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFF Z/8Abuj/APQVsf8A
wIT/ABo/t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQ n+NAGhRWf/buj/8A
QVsf/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDo K2P/AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/wIT/G
j+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaF FZ/9u6P/ANBWx/8A
AhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY /wDgQn+NAGhRWf8A
27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/ AKCtj/4EJ/jQBoUV
n/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDA hP8AGj+3dH/6Ctj/
AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBB Wx/8CE/xo/t3R/8A
oK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/ AG7o/wD0FbH/AMCE
/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/j QBoUVn/27o//AEFb
H/wIT/GigDlTPNcOVtBGEU4aaTJGe4UDGfQnI/HBpfLv/wDn5tv/AAHb/wCL rI/tO+tv7J0/TrG2
uJrmzkuHa4uWhVQhjB+7G5JJlz26GpLHxho1/aefHcOpWCKaSIxMXjEioyKQ AfmYSKFUEljkLkqc
ZlGn5d//AM/Nt/4Dt/8AF0eXf/8APzbf+A7f/F1izeLrVNUsoo0uZLaaC4aV UsZ3njkRodoaMLuQ
FZSfmUdVOcEZkg8VWhnvxLJ5sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjI BreXf/8APzbf+A7f
/F0eXf8A/Pzbf+A7f/F1nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk 9ASLUOt6fc3kdrbT
PcM6hhJBC8kQBXcMyqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8A tVL5d/8A8/Nt/wCA
7f8AxdUr7UP7J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0 X2eZp0lUMqkKditv
3Og27ed67dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJL lmZmXyEs5mnUgAnd
EF3qAGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6n gA4ANPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0IJzp
/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5tv/Ad v/i6PLv/APn5tv8A
wHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+U4tafqtp qfmC3MyvHjfHPBJD
IAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqXy7//AJ+bb/wH b/4uoYGuk0C2azhh
muBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fULaGdcxSNEhkAwhl27 A2TgAkEkjjkUAaHl
3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fLBbTRTPItzaNewhIXZpIV CEsFAzn94ny4yc8C
oD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5KgfOv94ZALvl3/wDz823/AIDt /wDF0eXf/wDPzbf+
A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjhk8mOSRFYIZMFUY7hhWbJ3L13DOnp +q2mqeYbQzOiY/eN
BIkcgOcFHZQsinGcqSMEHuKAG2zX9xawz+fbL5iK+3yGOMjP9+pfLv8A/n5t v/Adv/i6zLvV/wCx
vDthPshO9Y4/MuJvJgi+TO6STB2LxtBwcsyjvkPTxJaQWtu+oSQpLLGJmNmZ LmGOMk7ZGlCAKhAJ
3MFHDckKTQBoeXf/APPzbf8AgO3/AMXR5d//AM/Nt/4Dt/8AF1WvPEGm6fNc R3ks0HkRtKzyW0gj
YKm8hH27XYKCdqknCtxwcCeINNlkt0hlmnNxgxmG2kkG0sVV2KqQqMQdrthW AJBIGaALPl3/APz8
23/gO3/xdRW7X88Zfz7ZcO6Y8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje 3kiViVG4x7wN6gsO
VLAZXnkZfd6jLpeiPcwW6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzb f+A7f/F0eXf/APPz
bf8AgO3/AMXWZa+J7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLV MnibSJElcXLhUXer
NBIomXIUGLK/vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8 B2/+LrPg8WaNcXUd
qtxMtzLI0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLk KDFlf3wJZQPL3ZLr
j7y5ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5 LeNReGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/ABdZ
9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM94rtI IlgNhOJiSrMCItm/
aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4uqyeINNkk t44pZpnnxhYraRzH
8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksck8cbPGxAEigO DuUkfMp6EZANby7/
AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7DW9P1KdobWZ2bbvQ vC6LKmQN8bMAJF5X
5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6j/zxtv8Avlv8aP8AhKdR /wCeNt/3y3+Nalp4
Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5AglEhk3ZxjjGPRm9a1cEiFJlb /hKdR/5423/fLf40
f8JTqP8Azxtv++W/xok0r53SBmlZHKMCmMnBPHJz901D/Z8m0ttXAz0YZOOp A7j3HpUWRWpN/wAJ
TqP/ADxtv++W/wAaP+Ep1H/njbf98t/jUTaZMjbSik5wcMDg++Dx36+hoOmy hWbYNqjJYMCO/f8A
A/jxRZBqS/8ACU6j/wA8bb/vlv8AGj/hKdR/5423/fLf402XSnjkkQYcq+0E EYxzyeeOn+NM/s2X
cRtUYGdxcBfzzj1/I+lFkGpL/wAJTqP/ADxtv++W/wAafH4pvCQJIoVGeWVC cD6bhnt3rOltSVXB
kVd6lzFt37Nw3Bd3G7bnGeM4zWlqPh1LTSGv11RntbpANKeFP3k7uhdDKGXC qFBJxy2MjacISyC5
r2N9NqCFoLy3yPvI1swK/wDj9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1F dRpmpi8XypcLcKOR
2Yeo/wAO1S1YaZP5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6n Npsuq2OkQ3OnfZnu
LfF0wuJwELJiIRkDecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb /wAB2/8Ai6xdQ8Wx
Wzym2jtprZVgK30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmu J5IY444bstC3myrG
jCXZkrhw2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxp b3P9pRfZ7m2uRbSQ
2++43uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5 gw+fbgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlRuUk4
INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPzbf8A gO3/AMXR5d//AM/N
t/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTmi/8AENnZ aGmrq6PameKJ3kby
xGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz823/AIDt/wDF 1ip400qbVmtbe9sZ
bVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlrfbbtZcO9lOjKyNEO UKAhT5v3zhRtxn0A
NPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCLrPbxZoiQyTS3vkwJtPnT RPHG6s6oHRmADpl0
y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKIyilSAQT5sfbjPOMHAAqtftdS QefbfIivu8huclh/
f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrcf9cIv/QpKz11yaHUtTtb+y2JaRxT RvaGS5eRJHkVcosY
YN+7yQNwGevFAGh5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVYeIdKa1 urkXX7q1tvtU5MbZ
jjy4ORjIYGKQFfvAqQQDU39q2g1P+zmMyXB+6ZIJFjc7d2EkK7GbGThSTgN6 HAA/y7//AJ+bb/wH
b/4ujy7/AP5+bb/wHb/4usJ/F2zxNPpHkWbeTcx2+xbzN0+9EbesGzlF8z5j u4VHPbFalt4g0278
3yJZn8uMzDFtJ++QdWi+X96vI5TcPmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5 +bb/AMB2/wDi6z28
V6SvlDfePLJvxDHYTvKuzbu3xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJ IIXkiAK7hmVQUUlS
CASCQyn+IZAFia/lknTz7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLq lfah/ZOma7qXleb9
kV5/L3bd+yFWxnBxnHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yA uAMHPXABoeXf/wDP
zbf+A7f/ABdFZ/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snj FvcQLIpZ/KO7noQI
yOn8X5z3GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2l GptChQKqlVPRR/sH
1FW/7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQ VwLdOrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP/jg/
+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7sJReQ hLO2jhP2aBoZLopE
IwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8AxuiwFC+0 /wDtbTNd03zfK+1q
8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIkhDRs7FwzRpuy 3KrgbSSTsppUyM7L
rGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp4Vn03ybjTrjTrW8T zVIi00JbbZPL3ARI
6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP8jzZZJN0Pzr5b/vcFud2 xDgYrrP7Ouf+gz/4
4P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7B9ohfF7Nd7bi382CTzJJH2SR 7hvUeZkcj5kVu2Kz
oPA8ttpN5YQahbRrfWk9rcBLMqiq7zOnlKH+QKZ2BBLZCgDb1rqf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwHO6h4Plv7S5sW1FEsma6mgUW5Mkcs6yqxZt+GUefIQoVT935u Dndi0/y9butS83Pn
20MHl7fu+W0rZznnPm9McY9+Jf7Ouf8AoM/+OD/43R/Z1z/0Gf8Axwf/ABui wFOOO/k0OyGn3Ntb
zeVGS1xbtMpXb0wHTnOOc/hWE3gOJJ7DyLi2aGza1KSXdoJrlFgKYSOUMuxW EfI2nl3P8WB00WlT
QxJFHrGERQqjaOAOn/LOn/2dc/8AQZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLK qhzIY3XPzo0jzFhx
lZSmQAMUtN8H3WkTPd2F5p1vdtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/ AGdc/wDQZ/8AHB/8
bo/s65/6DP8A44P/AI3RYDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/Cqf IjJUqx+983Ixr6Hp
t1pFjHYSXcM9pbxpDahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAb o/s65/6DP/jg/wDj
dFgKccd/JodkNPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLc Pd6es5BaWSVjAGOI
zumf7wkGAmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAb osByeq+Af7Su7iX7
XZp5v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcx zQGTekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8eZnyf
n68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nXP/QZ /wDHB/8AG6ZHpU0S
lU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3rxuSMYA5 jPGOd354r+Ep4rCF
GvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ/wDHB/8AG6P7 Ouf+gz/44P8A43RY
DnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2QwOQcqILLwHb2FnLb QxaKy+QtvF5ukK3m
IGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8bo/s65/6DP8A44P/AI3Q BgReE5o7jTpG1Hc1
rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/+Qrcf9cIv/QpKd/Z1z/0Gf8A xwf/ABumDSphK0o1
j52UKTtHQZx/yz9zRYDKPh26Omy6L9vhGhvbParCLY/aEiZCoUS79vy5ABKE 4Azk5Ykfh26k1m21
a/v4ZbuGRCRBbGKNkSOdFXBdiGzcMSc4IAGByTsf2dc/9Bn/AMcH/wAbo/s6 5/6DP/jg/wDjdFgM
BPCTx6hBcLeQxiO5knaWGBo7lw07zeUZQ+DFlwCjKQcE8EgqyPwfL5dhDLqK NDpqww2YS3KsIkmh
kIkO872It0G4BQMsdpyAOi/s65/6DP8A44P/AI3VXUlfS9NuL6fWHMUCF2VI wWOOw/d9T05osBm+
HPCNv4dnDQrYhY4Ps8TQWKxSumRzNJkmRvlHI2gksSp42ksXmX96f+m3/sq1 uvpl0jsjaxhlOCNg
6/8AfumRaQsZkY30cjSNvZmDZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAP SX27YHt0qK7mvdQm
ie7eMiJWChA/fH9529O2K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2 kkmaRizA7gFLZ27g
RxTVXCAbDuVSgOeMHOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZ bOEnkaJWAZyxO7k9
Rxxx1NRy5lQqQ5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJ DlXd1QhnbcxDd8EH
Hp96jed5YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0a Bqc3cWTyxBUMYIdG
xKm9GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtl tzAMNz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf/wCJ
ougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZlQDCr 5vmYIXgAlM4ABJOW
Og2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2w0G40XS2 tNIuraGRp95kuLdp
V8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QKSN9oE7rsJ4Vj uUAk4BGd2OdX+zrn
/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3FmtlBc/arW0uLQTQ ROwcOCmRuQ+YWC5B
Vu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAEJJwY2VsjJJLHcN/+zrn/ AKDP/jg/+N0f2dc/
9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpxW3IKKkkUi+b858w5gizt2ZG7 pkbbWl+Hbq012XV7
y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2xzsf2dc/9Bn/xwf8Axuj+zrn/AKDP /jg/+N0WA52XwhLP
o9ppdxc2Nzbac0ZsUuLAyKFVGjAmUyYkO1s5XZhgDjHFaC+H0TQbbS0khiEN zDcZgt1jjyk6zFVR
cBVJBA5JAOSWOSdL+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bosBj6r4Y/tL Wf7R+0Q8RonkT2/m
xttjuU+YbhlT9p5HomM/NkR6d4YuNNntbmLUEM8TSKyGFjAsLmPdHChkJiA8 lNvzMq5bC4IC7n9n
XP8A0Gf/ABwf/G6P7Ouf+gz/AOOD/wCN0WA52PwfL5dhDLqKNDpqww2YS3Ks IkmhkIkO872It0G4
BQMsdpyANCTSftHi6PUpINsVvbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ /wDHB/8AG6P7Ouf+
gz/44P8A43RYBsf/ACFbj/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzN qyQmQl+ZWb74G5Yz
j5TncGlTCVpRrHzsoUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uG WWFjZXMsxEEBijZX
lMwjVNx2KsiwsOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjb wqIO2a3/AOzrn/oM
/wDjg/8AjdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYt oEm/G3MKk/JnBIyO
CM6y8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkISzto4
T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH /wAbosBQvtP/ALW0
zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2RWt5m2lf 3sQK7xjBHIwyof4c
VpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSMFjjsP3fU9OaL Bc53/hBf+nPwj/4T
v/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJTxHqdqmoaiJr6+Wz nvzcW01qIreOCEzb
PLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbmf7TDEBlVwMOwJPHpjpz1 xTa21BtMudNPhVja
XXnedH/acHzeazNJzvyMl26HjPGKGtQQl74lvLJLh30tFFlaC+vUe5w8cJMm 0IApDybYmyuVUHAD
MPmEMnjCWzgmvr7TkTTlnu4InguDJKzW4lLZQooUFYHxhjyVHckSX9jfalOs 114WlZtuxwmrRIsq
ZJ2SKsgEi8t8rgj5m4+Y5pWOg31sZ3ufDUt4009xKUn1SJ4lEzuxAiaQop2u VJABILf3iKVh3JoP
GF/K0EH9gTC6nuVgjDGWKI7o5XzumiRjt8o7gFOAwI3H5am03XdRWBptQghe 0bVprNLlJvnVfPlj
TcgQfxiKMYJzu3EjBpltpl5azRTJ4XuJJ4pPNSafWY5pAdjoBueUkqBI+FJw CxIGTmmXumarcWd9
bQ+HpYI79l+0p/acLIyFsyqqeZhC6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9z w/NnfFuPlv0GNybW
weRuweRV2sn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17 /oW2/wDBjb//ABdH
23Xv+hbb/wAGNv8A/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMb f/4uizC5rUVk/bde
/wChbb/wY2//AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi 6Ptuvf8AQtt/4Mbf
/wCLoswua1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+2 69/0Lbf+DG3/APi6
Ptuvf9C23/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/ APF0WYXNaisn7br3
/Qtt/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH 23Xv+hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZP23X
v+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL+oqb7br3 /Qtt/wCDG3/+Lqhr
Sa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9kkFxLgAloUcNK oB43GMOB05I5HUYc
viS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi5IJC1sXGo61NcyyR eHJDG7ll339urYJ4
yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3pKGK/KuQTglQTkgUWAZ4a 8Sf2rrV1GizNb3ub
uAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriyWHRrloZlt/OaNJXMTyxpIMFY /LKqJFyWdTgMdvTc
qaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG27YowRnBKAnJGafBo09s9sYfCUqL brGqRDWIvLPlgBGZ
PM2uyhVwzAsNq8/KMFgOtorJ+269/wBC23/gxt//AIuj7br3/Qtt/wCDG3/+ LpWYXNaisn7br3/Q
tt/4Mbf/AOLo+269/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23 Xv8AoW2/8GNv/wDF
0WYXNaisn7br3/Qtt/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW 2/8ABjb/APxdH23X
v+hbb/wY2/8A8XRZhc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Los wua1FZP23Xv+hbb/
AMGNv/8AF0fbde/6Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+26 9/0Lbf8Agxt//i6L
MLmtRWT9t17/AKFtv/Bjb/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Q tt/4Mbf/AOLo+269
/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF 0WYXNaisn7br3/Qt
t/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23X v+hbb/wY2/8A8XRZ
hc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/ AMGNv/8AF0fbde/6
Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6L MLmtWH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/Vf8A
vq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SGeJyk kcl5aKyMDgggrkEH
jFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvLrEumeGbi 9lDXlzHPJbwRsQhn
lMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlvbW1ljDAgNtM0 o3YwSqkcdb17oCaz
ptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4Ctob9JbbUrxbWK7N zFBNFNOUzPaTuu92
JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A 36b/AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UATUVD9
pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+ FAE1FQ/aY/7sv/fp
v8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/u y/8Afpv8KPtMf92X
/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KP tMf92X/v03+FAE1F
Q/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03 +FAE1FQ/aY/7sv8A
36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY /wC7L/36b/Cj7TH/
AHZf+/Tf4UAFp/x5wf8AXNf5VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+F ICaioftMf92X/v03
+FH2mP8Auy/9+m/wpgTUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj /uy/9+m/wo+0x/3Z
f+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo +0x/3Zf+/Tf4UATU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/ALsv
/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9p j/uy/wDfpv8ACj7T
H/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv 8KPtMf8Adl/79N/h
QBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl /wC/Tf4UATUVD9pj
/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNR UP2mP+7L/wB+m/wo
+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UActRRRWZZf8A Bv8AyL0P4f8AoC10
Fc54QkZPD8IWF3GF5Ur/AHF9SK3fOk/59pfzX/4qtCCaiofOk/59pfzX/wCK o86T/n2l/Nf/AIqg
DJv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjSKiKiuhJzE5LFhjCgBtxKxnxMlp eCyuoJ5vIlhtLzUI
Y1SCO5kCbU2FzJ8xljxgMB5gy3DETalpb31wt3bTahpt4EEbXNp5JaSMEkIw kDqwBJIJGVy2CAzA
0z4ZR7wTy3GpyRvLDc3MDGAJdXEQQJM5Chgw8qI4Qqh2D5cFgQCG08fWVxYW 97caZqVlBc26XcDX
AiPmW5eNWmOyRgiIJo2cvtIUkgHacXP+Eus21yPSYbO+nmklliSWKINE3leU JW37sBVM20k4+aN0
5barYuj+Er/S/CsNvcM2qapb6OdPgjvxEbSLciho8Iqs0TNHGDv3NtXjGTnc 07QrfTZdNliivHks
LSW1V5HjJm81o3kkkP8AFIzRBi3GSzE5J4AM2w8eQXOnadcrp99dQz/Y4ri8 hjijjhmuBEUVkaUu
OJoydu8ANjcSDjLsPH2oL4M0a4udMuzq11b2MiiYQ4vleWCKZ49kmFP79SA+ zl14wGAc/gq/tLjT
bDSnuYNFgeymuvMuImaaS2MYUmPysklYIlysqAYzsOCH2G8IWLWGlWmzUANL shZ2sgki3LteF0kP
YurW8bDjaeQVIOKALXijU9U0/wAG3ms6cILW6tLR7t4L6HzshI2Yxny5AA2Q BuDMBg8HrWfq3juw
8JSwWHiC8glvvK8+4lgEduiRFmCsI5ZS78K3yx+Y3y9BuUHav9P/ALT8PXOj XgvJI7q0e1mnzEJG
DIVZuPlDHJPC4z2xxVfUNF+3aib2OfU7KSWJYLkWkkS/aIlLFVLHLJjzJPmj KN855yFwAVdf8Xf2
bpOsta2c51LT7S4uDFNF8kaxxsySOQwBjcqAu0ljlhgGOTZ0FjcS3dnHPNZT 2UjZzBOULpgkclGZ
eevBPX14rFufDdpePdPdR6hMb1JYbvdMoE8DqVEJAIARQfl24YHcc5eQvqWK 3NpZxwTPeXsi5zPP
5Id8knkIFXjpwB09eaAL1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8A PtL+a/8AxVHnSf8A
PtL+a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8A xVHnSf8APtL+a/8A
xVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8A PtL+a/8AxVAE1FQ+
dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8A xVAE1FQ+dJ/z7S/m
v/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8AxVAE1FQ+ dJ/z7S/mv/xVHnSf
8+0v5r/8VQBycFzdmG8dpJY4IY0McrSsqljLIrLy6rwFTjIxnvkCl8O6leXm slPO+1W6KRIYpI2E
RIO0ti5c4OCANvXuMGtqLT7OS1X/AIluGkQbpYtqO3Q53AhuTS2emW1hcm4g tb3zCpX95dtIuPZW
kIB464zVpwUbW/AzcJc17mtRUPnSf8+0v5r/APFUedJ/z7S/mv8A8VUGhNRU PnSf8+0v5r/8VR50
n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v 5r/8VR50n/PtL+a/
/FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50 n/PtL+a//FUATUVD
50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a/ /FUATUVD50n/AD7S
/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD 50n/AD7S/mv/AMVR
50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S /mv/AMVR50n/AD7S
/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR 50n/AD7S/mv/AMVQ
BNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S /mv/AMVQBNRUPnSf
8+0v5r/8VR50n/PtL+a//FUActRRRWZZf8G/8i9D+H/oC10Fc54QMo8Pw+Wi MMLyzkfwL7Gt3dc/
88ov+/p/+JrQgmoqHdc/88ov+/p/+Jo3XP8Azyi/7+n/AOJoA43XvEOs6R4y uTbr9s02HT7ZPsGU
j3XM8k6xP5hBIy8UUWOg87ecBDmnpHjDV7DQrtb8R6vPoyXM+qXrsLZnhS5u I1MUaIVZ9ts/ykoP
u/MckjtktPL1Ga/W2iF1NFHDI/nN8yIXKjGMcGR/z9hWXL4S0yY5bT1AZ5Gl VL2ZFn3yNIyyqMCV
C0kh2PuUb2AADEEAwdc8X3lvc6fqptfK0K01C9SV4romef7PbXYdWi2hdu+F iuZDnahIBPyyW3in
UNX1jQoZ9Ou9OI1PbJhLhIp0a0umC5miiZiGjBI2kD5DkngbUvhLTJ7/AO2T aesh3yP5D3sxt90i
Mkh8g/ussJHydvJdieSTUlp4ZsrOeG4S0aW4hl85J7m/mnkDBHQDfJlioWWT Ck7QXYgZOaAOV1zx
TrOk3fjJ2vP9Fjimh0w+Un+i3MVilzjoS+8PI3zcL5OOd4FaGt/EQaLfX0f9 nfarWGK4ME8LTbZJ
YYXleNnMIiGPKkU7ZHYMMFfvbdrU/DGn6xp2pWF/psU1rqcqTXafaZF8x1CB TkYIwIo+mPu+5zXv
fBmlahPLLc2DOsvmloRqM6wgyo6SMIgQisyyPlgASXY5ySaAKNz47m0o3Tax pUcUVm8sE5tLozN5
yWxu8KGRMoYR94kHedu3Hz1qeGPEV1rv2pLzSZ7GSDYQzRTrHIGzwpmiiYsN pyAuAGXkkkCafw/Y
3UsslxpltMZbg3MiyTMyvIYPs5JUjBBi+XbjHfGeak0zR4tI802sDNJLgPNc 30txIwGcLvk3NtGW
IXOAWYgZJyAa1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf 9/T/APE0brn/AJ5R
f9/T/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/3 9P8A8TRuuf8AnlF/
39P/AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0 /wDxNG65/wCeUX/f
0/8AxNAE1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf9/T/ APE0brn/AJ5Rf9/T
/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/39P8A 8TRuuf8AnlF/39P/
AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0/wDx NG65/wCeUX/f0/8A
xNAHFW5WX7duaAhEXy1G0yB/NkD8BWb7vl9VI9O5qfw2ty+tlx80KKQ4lBjI yDgqDbR7jxg/NgA8
9q3Rd2stilvcNYSR7FDRyzjnHqCKbY2+l292ZdPstJjuWUqWt2UOV6kZC5xw PyqlOna1tTN05Xvc
yPFl9q8fiHSLDTJNVEc1pdTSppi2nmMUeAKSbn5do8xunOSOwrU/tW7s9Utt Ea2kuriRFeK5klQC
WFNgmlfao2urMBsVcMZEwQN/lu1XQYNZuLe4u4ZVnt0dIpLXUZ7ZgrlSwJiK kglEODnoKE0C0V0l
Nmrzo8TrPJdyvKDEu1MSNlsYLAjOG8yTOfMfdJoc7N8RZVu5rWDSo53kdP7P lEsyQXKNcRQBzI8A
GP38bAxeaCM8/dLSS+PbyKNVOjQG4nlNvbJ9tOxpEu4rSbe3l5VRJKCpAYso JIQ/LWlH4M0qO6S4
WwYtFtEMbajO0cIWWOVVjjJ2xqHijO1QBhAMY4qPV/BlpqdnHBHCtq6XBmEs dzKGAe6juZgCMFS7
xD5gcr/DjpQBi6l42udP15Hu7SRZ7K3ubaeytpnmikneSw8kghAzAC5XJ8ss MuFVuN3WeG9an1zT
pJ7nTp7GaKUxMkscqK/AYMnmxxuVw2MlF+YMBkAE1R4S0wIFbT1kfY6+dLez PKd7RsWMjZcuDDFt
cncvlrtIwK0NN01dJt2htLdQHcvI8t1JLJI2AMu7gsxwAASTgKB0AFAGlRUO 65/55Rf9/T/8TRuu
f+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX /f0//E0brn/nlF/3
9P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xN G65/55Rf9/T/APE0
ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eU X/f0/wDxNAE1FQ7r
n/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A 8TQBNRUO65/55Rf9
/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUV Duuf+eUX/f0//E0b
rn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nl F/39P/xNG65/55Rf
9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBy1FFFZll/wAG/wDI vQ/h/wCgLXQVznhA
Snw/D5boowvDIT/AvuK3dtz/AM9Yv+/R/wDiq0IJqKh23P8Az1i/79H/AOKo 23P/AD1i/wC/R/8A
iqAOJ1yfXoPHV5caPLJMYNMtYRZSs7Qbp5blRMY17rJHCWbtEJepxWXpGv6x o/h/VIIbz7ZH4eiu
7q4l1LfPPexrd3aKnmBl2MFtsbiHHzj5QFwfRhautw9wv2YTuio8gg+ZlUkq Cd2SAWYgdtx9apze
H7C4ltpZtP0ySS1lae3d7JSYpGbezqSflYt8xI5J560AcT4i8RalEdP8RSi0 fT9P1PURFYrEyys1
tbXqZabcRhvKY4EYxuAyduWsQarrl74k0Cz12yjt54NTEsbARRsyvZ3o5iSe YgAocMWG7JAHyEnr
v+EfsP7Y/tf+z9M/tP8A5/fsS+d93b9/O77vHXpxRY+H7DTIo4rDT9MtI45T OiQWSxhZCpQuADwx
Ulc9cHHSgDlVTVLzxtrH2OPVTJbarbKl0b/FnDAILd5YjAZOWZWlwREfmkU7 gRla/g7xJeQfDyw2
xwH7HLpGnx5U8xzRWe4nn7w898HpwvB5z30dq8LzPF9mR5n3yssGC7bQuW+b k7VUZPYAdqz38MaV
JcWlw+k6Q09kiJayNYKWgVDlAhzlQp5AGMdqAMHS/FOu3EulXUtrBe2uraU+ pQWVlAI54sNb4QyS
TBHws5ycJnZkDnFRwa7r1/4uu9JsDaaeS8sr/b4HuWTZb2JCbVnCqc3LZ2nb 8uQCSWOtpXg210nx
De65FJE99d+YC/2SKLYruHYZjVS+Sq8yF2+Xg8tnYTTkjvGvEis1unzumFth 2yEBy2c8iOMH/cX0
FAHM61fHxB4B0TVVa7sjfXGmSlbW8kiZVnmiV0LoVLDbIw/I4BAxTsGntLRd Yhvb6XUbjxBPZeRN
eSyxyw/bpI2VYmYquyFS4KBSBFknbvB6aTR9K1fS4bKW00i90+2fZFA1oskU TR5jwq5IUrhlwOnI
qS18P2FjqM+o2en6Zb30+7zrmGyVJJNx3NuYHJyQCc9TQBrUVDtuf+esX/fo /wDxVG25/wCesX/f
o/8AxVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/ APFUbbn/AJ6xf9+j
/wDFUATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A 8VRtuf8AnrF/36P/
AMVQBNRUO25/56xf9+j/APFUbbn/AJ6xf9+j/wDFUATUVDtuf+esX/fo/wDx VG25/wCesX/fo/8A
xVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/APFU bbn/AJ6xf9+j/wDF
UATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A8VRt uf8AnrF/36P/AMVQ
Bx8Qmgt7+adp44jGgjUo6qpErksGyi8h06OCce3Mfha4W68QP5V+pMcZLQPK 0jOp7qBcyBcHbkle
+B1ro7fUkFvGon+6oXi1kbBHGMjg1YhvDPII0mG49N1q6j8yatVvdsZOmua5 jeKdb1mx1HT9M0Ox
+0XV1FNcM/lJLsSIxqRseaEcmUc7+MY2nOVjs/E19d3+lWhGmxPqVvDeLtn8 3yEKbniypxI7bXMb
qQGVZWwfJxJpa5a6VdW9tb+IP7ImgluFSCO/gVleYghQodsFyNwAHPWrFxa2 0KO9z/Z6JNcRO7Sw
AB5tyLGTluX3LGFPXIUDoKg1OJm8c66bhEt7aAWup+VLpV7PaBUML3VvCGKL cMz5S5VvmEJG37vJ
CyTeMteiSKIHTTPd3D2sEn2Z9sTQ38NnI7L5mXDmYyKoK7MbSX+9XVR+GNKh vZr2LSdIS7mffLOt
god23iTLNnJO9VbJ7gHqKj1XwrYazYizuraz8nzRKQtqvzfvkndTnOVd41Lj +LvzzQBxuq+JtUsP
EymSCC81PT4rjTkaCPy0meaXTSrCNn42/aANpkG7Z95N3y9p4X1LU9RsrldY tY7e8trgwsqmMFhs
RwWRJZRGcPjaXJIAbgMAJovD9hBZrZxafpkdqsUkCwpZKEEchBkQLnG1iASO hxzVix05NMs47Owi
s7S1jzshgtvLRckk4UHAyST+NAF6iodtz/z1i/79H/4qjbc/89Yv+/R/+KoA moqHbc/89Yv+/R/+
Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1 i/79H/4qjbc/89Yv
+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqN tz/z1i/79H/4qgCa
iodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0 f/iqAJqKh23P/PWL
/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqH bc/89Yv+/R/+Ko23
P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79 H/4qjbc/89Yv+/R/
+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z 1i/79H/4qgDlqKKK
zLL/AIN/5F6H8P8A0Ba6Cuc8IRs/h+ErM6DC8KF/uL6g1u+TJ/z8y/kv/wAT WhBNRUPkyf8APzL+
S/8AxNHkyf8APzL+S/8AxNAHC63/AMS74h3/AIkTj+y9Ks/tXvZvLded/wB8 7Ul4BY+TtH3zWP4V
169g0XQLZdU8q6ji0u3tNI2x/wCl2rw2/mz7Svmts8yf5kYKPJ5B2vn0K61f S7HUYNOvNftre+n2
+TbTTxJJJuO1dqkZOSCBjqa0PJk/5+ZfyX/4mgDhfDmreIjZ6C327+17rV9E OoNHftHbpHIpt8hG
hiyFInfhlc/KoBHJPN+JzNpVj8QNbnjjiF4jadqKRuXVGbT4PIYMQCwWV2j4 UZ+0bmwE49amK2yB
579okLqgZyigszBVHI6liAB3JAojKzPMkV+zvC+yVVKEo20NhuODtZTg9iD3 oA4Wy1LQbvwprOkX
fiHTbOeHU76S4Sa4T92v2+QgTIWBMTkorKSNyvtyNwNRlrP/AIVP4xjsLbSk tYrS7VLrSbcQ215/
owJkRQWHBJjJ3NzEeR90eheTJ/z8y/kv/wATUc5W1t5bi4v2hgiQvJJIUVUU DJJJGAAOc0Aec3uk
3Hh7XNAvbmGe6tdHu57XSbe3jDSNbfYrmUqgByzYEMIDck227P7w1X0nxRr2 o61b6LB4ksbhZLuE
PfWk8N8QjwXjMm5YYkDA26MuUOCcsXU7K9G03ULHWbdrjS9ZivoFco0lrLFK obAOCVBGcEHHuKue
TJ/z8y/kv/xNAHmKa7q+kaLqRhljtg+p3sVkzYET7tRk8+R5CrbHij3uAVKh FaQiUBli0PDusa/q
es6XZya7aT2bJdzPPabbj7SkTWu0Cbyo0J3SyKWRMbcr/rBvXvvJk/5+ZfyX /wCJqOYrbIHnv2iQ
uqBnKKCzMFUcjqWIAHckCgDmfAutXWr/AG/7XqX9oTReWXmtJYJrAM24lLeS NVfgY3LLllyvLA7m
7Cs0X9o2qDTF1NmvNjuYlCkqE8vduwuFIE0RwcEhwRxUcuradBqK2EusKl02 RsLJwQYhtJxgMTPD
hTyfMXANAGtRVWArdW8Vxb37TQSoHjkjKMrqRkEEDBBHOak8mT/n5l/Jf/ia AJqKh8mT/n5l/Jf/
AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJk/5+ ZfyX/wCJo8mT/n5l
/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8l/8AiaPJ k/5+ZfyX/wCJoAmo
qHyZP+fmX8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8A iaAJqKh8mT/n5l/J
f/iaPJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgDjv7P1y3 iuLvTbYNcyKm1ZQh
SREeR8Bt4ILCQDJHGPfIp+GhqNt4sP2q4LR3EjpLdeScXU6IQYQTwqxneRjG cMP4WrprXU1ZBFGb
pnjUblTyuBkjOCc4yrYz6GrNtfrdXbWqzXCyoAXUmIlM5IyBkjODjjtWkar5 bW/AzcI3vcy9Wt5b
j4h+H/KvZ7Xy9PvZG8kIfNUS2mUberfKe+3DccEVw8/iq91TVorKS+gmtbm7 tLsWjXUclzYlNRtA
sUsaRIYWxKQyu0hymN3ykt6deX0FjcWtvNeXJnun2xRxQ+Yx5ALEKhKoCygu cKu4ZIyKkvZ4tPgW
a6vZY42ljhB2A5eR1jQcL3ZlHtnniszQ81/4S3W30mR4taglka7ijvNTS7tv 7NtlaOVz5FwIW2fM
saFZ0Zh5iKCS6yH0Dwtd3l94ctLi/nguJ23jzoCSkqh2COGKJuyoU7lVVbO5 RtIrS8mT/n5l/Jf/
AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJk/5+ ZfyX/wCJo8mT/n5l
/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8l/8AiaPJ k/5+ZfyX/wCJoAmo
qHyZP+fmX8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8A iaAJqKh8mT/n5l/J
f/iaPJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgCaiofJk/ 5+ZfyX/4mjyZP+fm
X8l/+JoAmoqHyZP+fmX8l/8AiaPJk/5+ZfyX/wCJoAmoqHyZP+fmX8l/+Jo8 mT/n5l/Jf/iaAJqK
h8mT/n5l/Jf/AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4 mgCaiofJk/5+ZfyX
/wCJo8mT/n5l/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+ fmX8l/8AiaPJk/5+
ZfyX/wCJoA5aiiisyy/4N/5F6H8P/QFroK5Tw/Itt4Pe8ZXcwQmTYsrJu2xg 44/nWrs1T/nztv8A
wZS//G60INaiufm1uxsdPt7nURdxPPcyWqRWwnuWeRC+QojUsfljZs7egqa5 1WwtvDV1rzJqH2S2
t5bh0dJYpSsYJI2SbSD8pxnGeOxzQBzviXR9a1LXteisVj+wXej2trco8B33 CGS5EiQSl1RJQjkj
cGGWTO0c0Xup6gLi7gjj1nff6xp9zZFLS42raZtRKGYLiIfJPuRyp5bI+bnq ra7sLu9ns4pbn7RA
ivJG/moQrPIin5sZBaJ8EdQAehBNz7NH/el/7+t/jQB5a+i6t/wjWgQyLrky 3Wn215q4mubiWRZY
bizkbbuYtHIENwQke1mI4BKriTUIdckvNWn08+IBb2lld3OlgyXI3Sra2BgD KxzId/n/ACSA7m8z
IJ3V6d9mj/vS/wDf1v8AGj7NH/el/wC/rf40Aea6zaa7DfTWKXmq2+hW13Ks Uvk3t3IxMNsyDdBI
s7rua6+YsyAjaeQgHUX1tqJ0Xw7c3qz3bWEsVxqUXlL5k22FwW8pCysyysku 1ScGP5NzBQei+zR/
3pf+/rf40fZo/wC9L/39b/GgDkdY1OLVbixnkj8QJoapOk4tbS9t5/tGYjFl Y1WYpsM3ONmcZ+YL
WPpemeIbu6tTrkmsrcXN7DbX/lXc0cYiGmpI5Ty2CIPtS4LpjJyucMVPo32a P+9L/wB/W/xo+zR/
3pf+/rf40AeW+Hr7Vr658y5k1xvEa3enCRGW4W2jiNtaPcq6cW6Ntac7WAYE jaN22q9zDrup3s8U
8Wq/ZZ/LvNQs1t71fsjxXltIUimd2EjKnn7fswTdsyqn5APVo9OtYXmeKNke Z98rK7Au20LlueTt
VRk9gB2qT7NH/el/7+t/jQB5jNAreLluNRi8TnR0SdLOS3W/81Va308qGMf7 0AlZiQ3V1bPzA1Xg
g8XtrNjcajFqRvEe3SeRFbau5tIMwUp8oQlbkkL8p2ydg1erfZo/70v/AH9b /Gj7NH/el/7+t/jQ
B5zpMOoeHfCGgLphu11SBBpk9jqUlw0b3DwoNyKx+ZI5I1bdGSixC4K5r0Sw tfsOnW1n9onuPIiS
Lzrh98km0AbnbuxxknuabJp1rM8Lyxs7wvviZnYlG2lcrzwdrMMjsSO9SfZo /wC9L/39b/GgCaio
fs0f96X/AL+t/jR9mj/vS/8Af1v8aAJqKh+zR/3pf+/rf40fZo/70v8A39b/ ABoAmoqH7NH/AHpf
+/rf40fZo/70v/f1v8aAJqKh+zR/3pf+/rf40fZo/wC9L/39b/GgCaiofs0f 96X/AL+t/jR9mj/v
S/8Af1v8aAJqKh+zR/3pf+/rf40fZo/70v8A39b/ABoAmoqH7NH/AHpf+/rf 40fZo/70v/f1v8aA
JqKh+zR/3pf+/rf40fZo/wC9L/39b/GgCaiofs0f96X/AL+t/jR9mj/vS/8A f1v8aAOUbw/q7W00
2n3UVtcyqrJL5uVIVndVZTGeCZMHB7D3Bp+HdG1LTfEqySi+axeSRfNOAZpw mGklA5MZw2zPGfqp
PZWtujWkJLS5KKeJWHb61L9mj/vS/wDf1v8AGtFVko2IdNXuYOq6Wb7x1oVw 6XYgtbK7bzIZZI1E
nm2pVXKEBgQrHY2Q208HFcOf+Egu9aRXh1IxXFxbXV5ZtaXZS0mS/tW2LLK7 RuFUzfNCEQhC2MBd
vq32aP8AvS/9/W/xo+zR/wB6X/v63+NZlnluzxDJpMixz6qYTdxfbdVeHUA9 wvlylttnuSWHEhhz
5DBTuzwqui+geFkvI/Dlot9PPPMN+JJ4TE7JvbZlWZmHybfvsX7vhtwrS+zR /wB6X/v63+NH2aP+
9L/39b/GgCaiofs0f96X/v63+NH2aP8AvS/9/W/xoAmoqH7NH/el/wC/rf40 fZo/70v/AH9b/GgC
aiofs0f96X/v63+NH2aP+9L/AN/W/wAaAJqKh+zR/wB6X/v63+NH2aP+9L/3 9b/GgCaiofs0f96X
/v63+NH2aP8AvS/9/W/xoAmoqH7NH/el/wC/rf40fZo/70v/AH9b/GgCaiof s0f96X/v63+NH2aP
+9L/AN/W/wAaAJqKh+zR/wB6X/v63+NH2aP+9L/39b/GgCaiofs0f96X/v63 +NH2aP8AvS/9/W/x
oAmoqH7NH/el/wC/rf40fZo/70v/AH9b/GgCaiofs0f96X/v63+NH2aP+9L/ AN/W/wAaAJqKh+zR
/wB6X/v63+NH2aP+9L/39b/GgCaiofs0f96X/v63+NH2aP8AvS/9/W/xoAmo qH7NH/el/wC/rf40
fZo/70v/AH9b/GgCaiofs0f96X/v63+NH2aP+9L/AN/W/wAaAJqKh+zR/wB6 X/v63+NH2aP+9L/3
9b/GgDlqKKKzLF0eN5fAN3HGjO72zqqqMkkxDAAp0+maJc3Es7yeJw8jl2Ed 3qSKCTnhVYBR7AAD
tVnwhBFL4fhaSJHOFGWUH+Ba3fslt/z7xf8AfArQg43W9NutQ0zR5YtN1K5j g1i4uZYbS4+yXAjZ
blVZWZ4yOZEyNwJBPUZFZfinw/eazpd7u8KXd+bjR/sWnQ3c1vNLp86+cDIz ySkAuGhO9Gdj5fzY
IGfRvslt/wA+8X/fAo+yW3/PvF/3wKAOJ8O+GZ9N8Wy6nf6NHM8z3K210PKZ rMG7vJdxJO5RIk8Y
GzceCGC4rvKxdSv7WxuFtLbSJdSvCgka2tFiDRxkkB2MjIqgkEAE5bDYBCsR Il/o4iY3LWdrNFEZ
biCeSIPbhVRn34JA2iRCTkgblOcEEgGtRWLJrXhiHS4dUl1PSE0+Z9kV208Y idueFfOCflbgHsfS
q/8AwkOg/wBqX2mD7N9vsriGCS3Z4kciTytsihmBKZmUZ6kggAnAIB0VFYra 14YVL121PSAlg4S8
Yzx4t2LFQJOfkJYEYOORirEN3olzpZ1SC40+XTwjObtHRogq53HeOMDByc8Y NAGlRWDa6nBP5811
oVzp1hFE0326+WCOMoOcld5kTj5vnVcAHdg8VIuteGGSyddT0gpfuUs2E8eL hgwUiPn5yGIGBnk4
oA2qKxV1rwwyWTrqekFL9ylmwnjxcMGCkR8/OQxAwM8nFEmteGIdLh1SXU9I TT5n2RXbTxiJ254V
84J+VuAex9KANqisn+0/D39sf2R9u0z+0/8Any82Pzvu7vuZ3fd56dOazz4m 8PHxC2kxXGmS+RaX
NzeyrcRn7J5LxqVkH8P+sY5JGNh/AA6aiqNjJpWp2cd5YPZ3drJnZNAVkRsE g4YcHBBH4VY+yW3/
AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+ yW3/AD7xf98CgCai
ofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98C gCaiofslt/z7xf8A
fAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7 xf8AfAo+yW3/AD7x
f98CgCaiofslt/z7xf8AfAo+yW3/AD7xf98CgCaiofslt/z7xf8AfAo+yW3/ AD7xf98CgAtP+POD
/rmv8qmrlrPUPPle3EdorRKhLSQZzud0UZ3cklD27in6VrFnqOpPagWjIjmN XEIVZnAJYRksd20D
nA701GVr2J543tc6aisW/wBW0TTNZ0/S7021vPqCSG2aXYiuyNGuwZIJcmUY ABzg+nNi1u9EvnVL
S40+4d03qsLo5K7UbIx22yRnPo6n+IZRRpUVkpqfh6S8tbOO+0x7q7iE9tCs sZeaMgkOi5yy4BOR
xwa0Pslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8 +8X/AHwKPslt/wA+
8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt /wA+8X/fAoAmoqH7
Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAm oqH7Jbf8+8X/AHwK
Pslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/ AHwKPslt/wA+8X/f
AoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+ 8X/fAoAmoqH7Jbf8
+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7 Jbf8+8X/AHwKPslt
/wA+8X/fAoAmoqH7Jbf8+8X/AHwKPslt/wA+8X/fAoAmoqH7Jbf8+8X/AHwK Pslt/wA+8X/fAoA5
aiiisyy54Qnii8PwrJKiHCnDMB/Atbv2u2/5+Iv++xWL4N/5F6H8P/QFroK0 IIftdt/z8Rf99ij7
Xbf8/EX/AH2KmooA52/jubbWZNX0h9PuZ7i3jtZ7e7ujCu2NpGR1dUcg5lcF SpzlSCu0hse68NG/
stfkml0+G/1S9s7zMF0ykiBLciIzKquo3xSAOBlQ+4DOVq9rPi+bTvFS6Dbx 6N5728Msf9o6qbVp
mkeRAkaiJy5Bj5/3hxUfiHx3a6VcwRWv71VluFuZpbecQKsVtNKwWdUKlg8Q Vgu9hhxtyDgAzR4d
v4LIeRNbAzXDz3NkviC7jLOUjRHa85lcqsZGzaqkSDjMYZo9J8LX+maHBpBu 9MkjMumXUs4uWBWS
2+yo6Kuz5lK2zMGJBywBUD5q67QPEEWurehLeeGS0u57Zw8ThG8uV4wyuVCv ny8kKTtzg81h23jm
5Tw5ba1q+m2ljb31kbuzZLx5lJEDT7JcRBkOxWOVVx8jd9ocAzY/C1+9tolr Nd6YkehxW1rbyJcs
xuo47m1kZ2UoPLbba8KC4JfG4BcnoDo1td2/iqzvbyIWutytgwyjekbWsUDd RgNlGI6jp9Ktf8Jf
obJctHdyTfZrhrWRILeWR/OVnDRqqqSzjYzFVBIXDn5SCZE8UaTLLaxQTTzy XONqQWkshiyxT96F
U+T8ysp8zbgo4PKtgAyb9Nb1WxazvBoqeRLBcw3EN6/7+SGaOVVaMx/ulfYQ SHkKZ/jxzj33ha/1
Jtau5bvTIbrVdPv7doUuWdIZJorWKPD7AWXFsWJ2gjfgA4yd7SvHWm6h4e07 VJYL6GS9iWQWqWNx
LIDsVmKqse5413qPNC7CSOckCrieMNAluJIIdSjmeN4EcwozqpmMYi+ZQRh/ OTac4PzY+420A5nV
/ClzqGo+I7iK/wBPVNTsr23hDzEFWmt7OJS3HADWzk4zwV65IFjUtE1CTUdR uba9tpbe7vTcfZF1
WaxLf6PbxK7TQqXypikGzlWEgJOVArsre+t7ue7hgk3yWkohnG0jY5RZAOev yup49fXNWKAPPdF8
KXOm+FRpc1/p7Ti90u43JMSu22SzWQcjOSbZ8cd1zjJxXHhjUGtdMsbqLSLm 00jTPsNsV1ea3e4Y
S2zJKxSLMJH2bdhWfkgZxzXpVFAGToj3Fro8EOrarFeXw3GSbcg6sSF+VVB2 ghdwVd23O0ZwND7X
bf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9 ij7Xbf8APxF/32Km
ooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/ 32KmooAh+123/PxF
/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123 /PxF/wB9ij7Xbf8A
PxF/32KmooAh+123/PxF/wB9ij7Xbf8APxF/32KmooAh+123/PxF/wB9ij7X bf8APxF/32KmooA5
Wbw3pGo6eYbq8bEoDkZiDRt8xBVtu4FS7Ec8ZPqc19J8NwaVryalFcaeEG+H yB0ihC4Qof752jd6
g/7OWltdVvpftMMUshNtEjgKoIIaSRMYCM3Aj689e1T6Rq2pT6ulvdxTLEyt hvJlwSBnkmBFAxnn
d1wMHNaRdTl8jJ8lyxqETt4h0zVrOezk+zxTWs0U0/l4jleJmdSA2WXyQApA B3feXHOHpmhXPh7S
/DX9mf2RNd6Xpj2M9u1yYInaTyWklV1jYk74ScFBu3kkgjB6bW9Sm09LGO1W N7u8vYbeKNwcMu7d
Kc5GCsKSsMnqoHJIBrx+L9DlSaQXcixRJ5nmyW8qI8W4KZUZlAkiG5S0ikoo YMSAQazNTjdF8Dy6
a2nxXFxZ3EafYZZ5BqtwiRyW8UKYW2XEcuTAGDuQRuGVYIA3pH2u2/5+Iv8A vsVRn8QafBby3A+1
zxxXBtmNpZTXH7wD5gBGjEgEFSw4DAqSGBFU28a6CJ5IY7qe4ZNgDW1nNMkh ZFkVY2RCJG2OH2oS
duWxgEgA2vtdt/z8Rf8AfYo+123/AD8Rf99ismLxfoc9/wDY4buSQ74089Le U2+6RFeMeeF8rLCR
MDdyXUDkgVT0DxnZajpOjPey7L69tLeSYxW8hgilljVhG0mCiMS67UZtx3p1 3LkA6L7Xbf8APxF/
32KPtdt/z8Rf99iqup61ZaR5QumnaSXJSG2tpLiRgMZbZGrNtGVBbGAWUE5I zj6x4zsrVbWPTZft
k093ZxeZFbyTQKk0sandKg2K3lyblDMPvIcEMMgHRfa7b/n4i/77FH2u2/5+ Iv8AvsVzOj+PNP1G
01G5uI5IILC3S6kuI4ppIGhNvFOWEhjUZAlxs++QudozgWIPFkFnpsX9uiSD ULeyFxqQtrWWWC1c
ReZIrSIGRSBkhS2SCuM7lyAb32u2/wCfiL/vsUfa7b/n4i/77FZqeKNJmltY 4Jp7hrrBjNvaSyja
WKrIxVSEjYhtrthWAJUkAmtigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7 Xbf8/EX/AH2KPtdt
/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2K Ptdt/wA/EX/fYqai
gCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/f YqaigCH7Xbf8/EX/
AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8 /EX/AH2KPtdt/wA/
EX/fYqaigCH7Xbf8/EX/AH2KPtdt/wA/EX/fYqaigCH7Xbf8/EX/AH2KPtdt /wA/EX/fYqaigCH7
Xbf8/EX/AH2KPtdt/wA/EX/fYqaigDkKKKKzLLnhCZY/D8IYOThT8qM38C+g rd+0x/3Zf+/Tf4Vi
+Df+Reh/D/0Ba6CtCCH7TH/dl/79N/hR9pj/ALsv/fpv8KmooA5m90/VP+Eh n1bSdStrb7RaQ20k
V3pcs/8Aq3lYMCsqYz5pGCD0FY+r+DLjVLWXTl1dYdMaW9uI4zpsjTLJcxTo 2ZN4UqGuXYDYDgKM
9WN7WNf1aPxkdEsbiC3j+yW8qu+j3F7ueWSVDueJ1WJR5a8v6k5wDVPxN44n sTBPYW13HYQ3F4k1
80UUkUpgtrlmjVPMEhKyw+iA+WcNggkA6LR7NtJN5CLhpbOW4kuIE+yOskbS yPJIGfOGG5ztwq4A
wdx5rm18GXFz4Uj0DU9XWeG0097KxeDTZIvLZoGg82QF23sEdgACq/M2QTtK 9F4a1q71mK+a6sJI
Bb3tzbxz5Ty51jnkjBUBywICDduC5J4yK4vTPHuqanpWlzJqWlXkl59hluDp sWPsBkureNoJcySf
M6zSAE7CPKfAJ+6Ab1/4Rtb7RIrCV4p3g1O41GIXunNPAWleZtskWRuCrOwG GHzKrf7Jk0vw9Lol
1bzaZdW0CtFHDeQjSSsb
Re: building a plugin for external binaries (fao Ed Merks) [message #389592 is a reply to message #389590] Mon, 29 November 2004 14:23 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------020801080608070201040808
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

I expect your wrapper plugin to be in the same workspace. Maybe if you
try "File->New->Other...->Plug-in Development->Plug-in Project" and
don't create a Plug-in class you'll get something that's pretty close to
right already...


Ian Ward wrote:

> Ed,
>
> Next time you tell me 'model plugin variable' I shall know that you
> mean exactly that.... 'model plugin variable'...and it was under my
> nose all the time - thanks for pointing it out !
>
> I have regenerated the plugin.xml of the app but the requires>import
> line carries a warning that the plugin dependency cannot be resolved.
>
> To recall - having written my plugin, I simply copied the plugin.xml
> from that workspace to the folder where the folder of binaries called
> 'lginterface' lives (yes, it has the same name as the id of the
> plugin). Back in the 'host' or dependent app (in an EMF workspace) I
> found that the plugin view doesn't show the plugin I'd created in the
> other workspace (and had pasted into the correct folder to find the
> binaries folder).
>
> It seems I'm missing a plugin 'registration' step? When I tapped in
> the name of the model plugin variable how is this associated with the
> plugin with that id? Why doesn't my plugin show up in the plugin view
> when I'm in the workspace of my dependent app/plugin?
>
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389602 is a reply to message #389592] Tue, 30 November 2004 04:37 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0014_01C4D6C8.9AA319C0
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0015_01C4D6C8.9AA319C0"


------=_NextPart_001_0015_01C4D6C8.9AA319C0
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,

I seem, somehow(!), with your suggestion, to have managed to fix the =
warning in my 'wrapper' plugin.xml - it can 'see' the plugin, or at =
least A plugin, with the right name, lginterface - I presume it's the =
plugin I've created in that workspace. (I am in the workspace of the =
'wrapper' - which I have previously been calling the 'host' or =
dependent).

My 'wrapper' code now has an error on the same import statement but on =
the complete reference - I believe it was only objecting to =
'lginterface' before - now it doesn't like lginterface.LGClassFoo, =
LGClassFoo being one of the .class files in the folder lginterface (yes, =
the plugin has this name as well).

I notice that, in the plugin dependencies list (required plugins) for =
the wrapper plugin.xml, the plugin lginterface icon is slightly =
different to the others (eg org.eclipse.core.runtime) - there seems to =
be a tiny red (?) dot in the top left corner - that's not an error flag =
is it? - no other signal/message that I can see.

I have checked the java build path for the project and I find, under =
libraries>plugin dependencies, a folder icon, called lginterface, but =
I'm not able to verify anything about this entry. There are also some =
jar entries with full path names quoted but there is nothing for my =
lginterface entry.

I am concerned that the copy of the plugin (the original is still in the =
workspace), which I have placed so that it can reference the folder of =
binaries (eg LGClassFoo) may not be visible from anywhere that matters. =
It seems to me that this may be why the complete reference cannot be =
resolved.

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cofsv5$t6n$1@www.eclipse.org...
Ian,

I expect your wrapper plugin to be in the same workspace. Maybe if =
you try "File->New->Other...->Plug-in Development->Plug-in Project" and =
don't create a Plug-in class you'll get something that's pretty close to =
right already...


Ian Ward wrote:=20
Ed,

Next time you tell me 'model plugin variable' I shall know that you =
mean exactly that.. 'model plugin variable'.and it was under my nose all =
the time - thanks for pointing it out !

I have regenerated the plugin.xml of the app but the requires>import =
line carries a warning that the plugin dependency cannot be resolved.

To recall - having written my plugin, I simply copied the plugin.xml =
from that workspace to the folder where the folder of binaries called =
'lginterface' lives (yes, it has the same name as the id of the plugin). =
Back in the 'host' or dependent app (in an EMF workspace) I found that =
the plugin view doesn't show the plugin I'd created in the other =
workspace (and had pasted into the correct folder to find the binaries =
folder).=20

It seems I'm missing a plugin 'registration' step? When I tapped in =
the name of the model plugin variable how is this associated with the =
plugin with that id? Why doesn't my plugin show up in the plugin view =
when I'm in the workspace of my dependent app/plugin?

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cof5h3$bk5$1@www.eclipse.org...
Ian,

I would expect your plugin.xml to have:

<runtime>
<library name=3D"xyz.jar">
<export name=3D"*"/>
</library>
</runtime>
=20
and then in the same directory as that plugin.xml I expect to see =
an xyz.jar. (The name's location is relative to the plugin.xml, and =
should be either a jar or a directory containing .class files.)

Once such a plugin exists, you can set a variable like this:



And if you remove the plugin.xml from that project and renenerate =
it, you'll end up with the extra dependency:

<requires>
<import plugin=3D"org.eclipse.core.runtime" />
<import plugin=3D"org.eclipse.emf.ecore" export=3D"true"/>
<import plugin=3D"lginterface" export=3D"true"/>
<import plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/>
</requires>


Ian Ward wrote:=20
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<?eclipse version=3D"3.0"?>
<plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName">

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project>properties>java build path>add library>user =
library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml =
and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=20





------=_NextPart_001_0015_01C4D6C8.9AA319C0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV>
<P>Ed,</P>
<P>I seem, somehow(!), with your suggestion, to have managed to fix the =
warning=20
in my &#8216;wrapper&#8217; plugin.xml &#8211; it can &#8216;see&#8217; =
the plugin, or at least A plugin, with=20
the right name, lginterface - I presume it&#8217;s the plugin I&#8217;ve =
created in that=20
workspace. (I am in the workspace of the &#8216;wrapper&#8217; &#8211; =
which I have previously=20
been calling the &#8216;host&#8217; or dependent).</P>
<P>My &#8216;wrapper&#8217; code now has an error on the same import =
statement but on the=20
complete reference &#8211; I believe it was only objecting to =
&#8216;lginterface&#8217; before &#8211;=20
now it doesn&#8217;t like lginterface.LGClassFoo, LGClassFoo being one =
of the .class=20
files in the folder lginterface (yes, the plugin has this name as =
well).</P>
<P>I notice that, in the plugin dependencies list (required plugins) for =
the=20
wrapper plugin.xml, the plugin lginterface icon is slightly different to =
the=20
others (eg org.eclipse.core.runtime) &#8211; there seems to be a tiny =
red (?) dot in=20
the top left corner &#8211; that&#8217;s not an error flag is it? =
&#8211; no other signal/message=20
that I can see.</P>
<P>I have checked the java build path for the project and I find, under=20
libraries&gt;plugin dependencies, a folder icon, called lginterface, but =
I&#8217;m not=20
able to verify anything about this entry. There are also some jar =
entries with=20
full path names quoted but there is nothing for my lginterface =
entry.</P>
<P>I am concerned that the copy of the plugin (the original is still in =
the=20
workspace), which I have placed so that it can reference the folder of =
binaries=20
(eg LGClassFoo) may not be visible from anywhere that matters. It seems =
to me=20
that this may be why the complete reference cannot be resolved.</P>
<P>Ian</P></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:cofsv5$t6n$1@www.eclipse.org">cofsv5$t6n$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
expect your wrapper plugin to be in the same workspace.&nbsp; Maybe if =
you try=20
"File-&gt;New-&gt;Other...-&gt;Plug-in Development-&gt;Plug-in =
Project" and=20
don't create a Plug-in class you'll get something that's pretty close =
to right=20
already...<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midcofkah$caq$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Next time you tell me &#8216;model plugin variable&#8217; I shall =
know that you mean=20
exactly that&#8230;. &#8216;model plugin variable&#8217;&#8230;and =
it was under my nose all the time=20
&#8211; thanks for pointing it out&nbsp;!</P>
<P>I have regenerated the plugin.xml of the app but the =
requires&gt;import=20
line carries a warning that the plugin dependency cannot be =
resolved.</P>
<P>To recall - having written my plugin, I simply copied the =
plugin.xml from=20
that workspace to the folder where the folder of binaries called=20
&#8216;lginterface&#8217; lives (yes, it has the same name as the id =
of the plugin).=20
Back in the &#8216;host&#8217; or dependent app (in an EMF =
workspace) I found that the=20
plugin view doesn&#8217;t show the plugin I&#8217;d created in the =
other workspace (and=20
had pasted into the correct folder to find the binaries folder). =
</P>
<P>It seems I&#8217;m missing a plugin &#8216;registration&#8217; =
step? When I tapped in the=20
name of the model plugin variable how is this associated with the =
plugin=20
with that id? Why doesn&#8217;t my plugin show up in the plugin view =
when I&#8217;m in=20
the workspace of my dependent app/plugin?</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:cof5h3$bk5$1@www.eclipse.org">cof5h3$bk5$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
would expect your plugin.xml to have:<BR><PRE wrap=3D""> =
&lt;runtime&gt;
&lt;library name=3D"xyz.jar"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</PRE>and then in the same directory as that plugin.xml I expect to=20
see an xyz.jar.&nbsp; (The name's location is relative to the =
plugin.xml,=20
and should be either a jar or a directory containing .class=20
files.)<BR><BR>Once such a plugin exists, you can set a variable =
like=20
this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:000b01c4d6c0$3850c9a0$9ea40950@l8t7p3"><BR></BLOCKQUOTE>And =
if=20
you remove the plugin.xml from that project and renenerate it, =
you'll end=20
up with the extra dependency:<BR>
<BLOCKQUOTE>&nbsp; &lt;requires&gt;<BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.core.runtime" /&gt;<BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.emf.ecore"=20
export=3D"true"/&gt;<BR><B>&nbsp;&nbsp;&nbsp; &lt;import=20
plugin=3D"lginterface" =
export=3D"true"/&gt;</B><BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.emf.ecore.xmi"=20
export=3D"true"/&gt;<BR>&nbsp; =
&lt;/requires&gt;<BR></BLOCKQUOTE><BR>Ian=20
Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcoc740$7ab$1@www.eclipse.org"><PRE wrap=3D"">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;?eclipse version=3D"3.0"?&gt;
&lt;plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName"&gt;

&lt;runtime&gt;
&lt;library name=3D"lginterface"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the =
id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user =
library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the =
plugin.xml and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BODY>=
</HTML>

------=_NextPart_001_0015_01C4D6C8.9AA319C0--

------=_NextPart_000_0014_01C4D6C8.9AA319C0
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <000b01c4d6c0$3850c9a0$9ea40950@l8t7p3>

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCALWAlEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1LTrG
3utLk1jU4jNAqNLFb5ymxQTkjOGJ6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOP mVWJHIPGM8GpbY7f
hyT6ac5/8cNcfrF2+l3+sCx1a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCn ClKo3GLs7f1cHJRt
c9DTRdFkjWSPTNPZGAKssCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2 NqJ7j7cbaCIAY3S3
flLwWUHBcHaWUHGNy5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKg Zi6ksRGrS5AXY0xd
0mxvc6j+wtH/AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQ x3tnBcWthqUsdqI1
S4maNchmn3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6Xyk RSZGwY2UsWIO8EAB
MbixHaf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/ AGx/Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtGV+cB
QDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2Oq2em zQzW7ySTecbfc6uJ
FCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4lwXmAW4zu xDgquR8+FAO8/sLR
/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2rHTZX0i3vLq8c WzqLpYIrWUJGPMPl
ErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIsaWz4WHzQVJ+1qMmR v9WTj5sKAdJ/YWj/
APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8V6JaajELSz0+PU9HEtq0 TSyu0j2k+Vl3KFA8
5VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+tCTEjKv221woAmdpRiQZcpFj AyuXAUA7u9svDWmw
ia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHvDcdzAks1vp9zcuRCnmIBK3Awsb5B 6r90Z6etaPiH/UWn
kf8AIS+0f8S/P3fO2P8Ae7bNnmbu+3O35ttY6/2N59t9i/5Bv2iLz8b92/ev 2Xbu5+z7923y/l3Y
x8vmUAVLnR49MkCXthatEzBUuo4FCEnoGHJU/p79qd/Zlh/z5W3/AH6X/Cu2 mhjuIXhmRXjcbWVh
kEVyV5ZyaNMscjM9k5xFM3JQ9kY/yPfoeestDTK39mWH/Plbf9+l/wAKP7Ms P+fK2/79L/hVqipK
Kv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/sy w/58rb/v0v8AhVqi
gCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7 MsP+fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v0v8A
hVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf 8KP7MsP+fK2/79L/
AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36 X/Cj+zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9 +l/wo/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD/nyt
v+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/P lbf9+l/wo/syw/58
rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/ z5W3/fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/wo/sy
w/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8A Zlh/z5W3/fpf8KKt
UUAaei2qXvgu2tJCwjntPLYr1AZcHHvzTbrwtFfRCK71C6uIw24JNFbuAfXB i68mrWkzx23haxuJ
m2xRWUbu2M4AQEninSa7ZRRtJIt4iICzM1jMAAOpJ2VptqiCW30q2h0t9OlH 2q3k8wSi4VW80OSW
DAAAg7iMYxils9J03TkgSx0+0tUgR0hWCFUEauwZwuBwGYAkDqQCaszSeVBJ JjOxS2PXArlv+Equ
f7f/ALM22H+v8nHnHzv9T5u/y/7v8Oc9aqMHLYTklubD+GtBkuLS4fRNNaey REtZGtULQKhygQ4y
oU8gDGO1WE0nTY0RE0+0VESJFUQqAqxNuiA44CMcqP4TyMUyC7madEk2EOSP lUjHBPqfSuc1XxjH
pmrzWDy3jzIBIUtrCWfahZgpJRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESE PIYEDztFgo8hCjc4
Ybs9jyMVci0LR4ft3laVYx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8 dH+FH9qXn/Pb/wAd
H+FTzIdh+q+D9M1nxDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6F o9vLcyw6VYxyXUqz
3DpboDLIrb1diB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBB FOzFF2lZGdRj3zG2
fqKOZBY6GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tiki v9KsbuOSUTuk9ukg
aQKEDkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY 3F9Bt8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/Z291
Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BVmigA pk0MdxC8MyK8bjay
sMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f+7cqY8/Q ng/gTXcUUmkO5w39
p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Gj+07D/n9tv+/q
/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xruaKOULnDf2nYf8A P7bf9/V/xo/tOw/5
/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8a7mijlC5w3 9p2H/P7bf9/V/wAa
P7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf22/7+r/jR/adh/z+23/f1f8AGu5o o5QucN/adh/z+23/
AH9X/Gj+07D/AJ/bb/v6v+NdzRRyhc4b+07D/n9tv+/q/wCNH9p2H/P7bf8A f1f8a7mijlC5w39p
2H/P7bf9/V/xo/tOw/5/bb/v6v8AjXc0UcoXOG/tOw/5/bb/AL+r/jR/adh/ z+23/f1f8a7mijlC
5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFHKFzhv7TsP+f22/7+r/jR /adh/wA/tt/39X/G
u5oo5QucN/adh/z+23/f1f8AGj+07D/n9tv+/q/413NFHKFzhv7TsP8An9tv +/q/40f2nYf8/tt/
39X/ABruaKOULnDf2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tO w/5/bb/v6v8AjR/a
dh/z+23/AH9X/Gu5oo5QucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHK Fzhv7TsP+f22/wC/
q/40f2nYf8/tt/39X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+ NdzRRyhc4b+07D/n
9tv+/q/40f2nYf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb /v6v+NdzRRyhc4b+
07D/AJ/bb/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Giu5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8AIvaZ
/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa41C3t 5NNVC1ta+ar4M24M
SpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07SykhWByp6e /UdRpTmovUicWzC8
CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK1S8h8iFImsb1 YVDpLMzB1Mqbxh06
hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUtYurDT5XkuVSNWkCZ Ku5ZiN3RT9fyoqN1
Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7IDgLIeDtyyg5xmWXbz+m+E Zn1WCKfR5v7GW5im
e3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6TqUyQwYEru6ojwyru2k85zjBA yOc49DxW1fSaRpmk
jUr2OSOAmNcRrJKxaRlVVCoCzEswHA71nKnKO5b0dmjx2XRLixfQI9R0X7dF N9lNzaDyn+0Xgtrv
znYOwVn/ANWS5PzbRySKnn8KatKreZbTfYz5TNawtA7mISXjJAElzEfLE0HB +UbPkJKrXr2mjS9V
t2nt7W7RFcoRdW01u2cA8LIFJHPXGOvoauf2XZ/88f8Ax4/41NmK5zXgOyk0 7TobWUTKUjchJnRn
RS+VU7AEGAQNqjauNoJABPY1BBZW9u5eKPaxGM5J4qLU9Sh0q1S4nWRke4gt wEAJ3SyrEp5I43OC
fbPXpTSEXKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv /QBWhQAVy99FO2oX
qpqes6bm43g2NksqygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeER vNiKIFmUoMZKsOAB
ycAcY5zxtZ3UsVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky 7pW2KIldmZsE9EyT
wDz7VdOfJK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4weno PinT7jU/BsVta209
zIJrKUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZ KqPujp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5EudgOT
s27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2wsYy pUc5fPUWupa7eWcF
1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpGfwsTTW5w GjeB73S7HSzBpEFt
dWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvDVzpXh/8As2Fb TT3vG/cR/wBoMLi0
lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G+aaLzN69OMeTJyeD t4JyM6FWI8/8BeFr
/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIcB+hLuR6BRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAZ+hf8i9pn/X
pF/6AK0Kz9C/5F7TP+vSL/0AVoUAFFFFABWTrquVsmRrmMLO2ZbaLzHizDIo YLtYcFh1BHqK1qKA
OF8OaVd2CwWsup6ndu+o3VxvlsxGsCyG4YOD5KDc3mKWByN3CgDiuqvY2QRl ppJAZOFYLheHPGAP
UDnso75J0KZLEkybZFyM564x+NNbiZyGjWLy6Hp8n9jaXJutozveTDNlRyf3 Z5/E1qeEzu0a0PrZ
wH/x01J/wiHh3/oDWf8A36FaltaQWcQit4hGgAUKOwHQD2HpWNOnyFNtnO2e najF4obWn0+Bftks
lrLGNu6CFA2yfdn5mk8uMMAM7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+h f8i9pn/XpF/6AK0K
z9C/5F7TP+vSL/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAZ
+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFAB
RRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XWtKi0LT45NTs0dLaNWVp1BBCj IIzV7+3dH/6Ctj/4
EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaFFZ/9u6P/ANBW x/8AAhP8aP7d0f8A
6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY/wDgQn+NAGhR Wf8A27o//QVsf/Ah
P8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/AKCtj/4EJ/jQ BoUVn/27o/8A0FbH
/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDAhP8AGj+3dH/6 Ctj/AOBCf40AaFFZ
/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3 R/8AoK2P/gQn+NAG
hRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/ AMCE/wAaP7d0f/oK
2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o// AEFbH/wIT/Gj+3dH
/wCgrY/+BCf40AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFF Z/8Abuj/APQVsf8A
wIT/ABo/t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQ n+NAGhRWf/buj/8A
QVsf/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDo K2P/AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/wIT/G
j+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaF FZ/9u6P/ANBWx/8A
AhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY /wDgQn+NAGhRWf8A
27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/ AKCtj/4EJ/jQBoUV
n/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDA hP8AGj+3dH/6Ctj/
AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBB Wx/8CE/xo/t3R/8A
oK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/ AG7o/wD0FbH/AMCE
/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/j QBoUVn/27o//AEFb
H/wIT/GigDlTPNcOVtBGEU4aaTJGe4UDGfQnI/HBpfLv/wDn5tv/AAHb/wCL rI/tO+tv7J0/TrG2
uJrmzkuHa4uWhVQhjB+7G5JJlz26GpLHxho1/aefHcOpWCKaSIxMXjEioyKQ AfmYSKFUEljkLkqc
ZlGn5d//AM/Nt/4Dt/8AF0eXf/8APzbf+A7f/F1izeLrVNUsoo0uZLaaC4aV UsZ3njkRodoaMLuQ
FZSfmUdVOcEZkg8VWhnvxLJ5sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjI BreXf/8APzbf+A7f
/F0eXf8A/Pzbf+A7f/F1nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk 9ASLUOt6fc3kdrbT
PcM6hhJBC8kQBXcMyqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8A tVL5d/8A8/Nt/wCA
7f8AxdUr7UP7J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0 X2eZp0lUMqkKditv
3Og27ed67dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJL lmZmXyEs5mnUgAnd
EF3qAGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6n gA4ANPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0IJzp
/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5tv/Ad v/i6PLv/APn5tv8A
wHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+U4tafqtp qfmC3MyvHjfHPBJD
IAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqXy7//AJ+bb/wH b/4uoYGuk0C2azhh
muBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fULaGdcxSNEhkAwhl27 A2TgAkEkjjkUAaHl
3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fLBbTRTPItzaNewhIXZpIV CEsFAzn94ny4yc8C
oD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5KgfOv94ZALvl3/wDz823/AIDt /wDF0eXf/wDPzbf+
A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjhk8mOSRFYIZMFUY7hhWbJ3L13DOnp +q2mqeYbQzOiY/eN
BIkcgOcFHZQsinGcqSMEHuKAG2zX9xawz+fbL5iK+3yGOMjP9+pfLv8A/n5t v/Adv/i6zLvV/wCx
vDthPshO9Y4/MuJvJgi+TO6STB2LxtBwcsyjvkPTxJaQWtu+oSQpLLGJmNmZ LmGOMk7ZGlCAKhAJ
3MFHDckKTQBoeXf/APPzbf8AgO3/AMXR5d//AM/Nt/4Dt/8AF1WvPEGm6fNc R3ks0HkRtKzyW0gj
YKm8hH27XYKCdqknCtxwcCeINNlkt0hlmnNxgxmG2kkG0sVV2KqQqMQdrthW AJBIGaALPl3/APz8
23/gO3/xdRW7X88Zfz7ZcO6Y8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje 3kiViVG4x7wN6gsO
VLAZXnkZfd6jLpeiPcwW6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzb f+A7f/F0eXf/APPz
bf8AgO3/AMXWZa+J7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLV MnibSJElcXLhUXer
NBIomXIUGLK/vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8 B2/+LrPg8WaNcXUd
qtxMtzLI0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLk KDFlf3wJZQPL3ZLr
j7y5ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5 LeNReGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/ABdZ
9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM94rtI IlgNhOJiSrMCItm/
aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4uqyeINNkk t44pZpnnxhYraRzH
8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksck8cbPGxAEigO DuUkfMp6EZANby7/
AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7DW9P1KdobWZ2bbvQ vC6LKmQN8bMAJF5X
5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6j/zxtv8Avlv8aP8AhKdR /wCeNt/3y3+Nalp4
Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5AglEhk3ZxjjGPRm9a1cEiFJlb /hKdR/5423/fLf40
f8JTqP8Azxtv++W/xok0r53SBmlZHKMCmMnBPHJz901D/Z8m0ttXAz0YZOOp A7j3HpUWRWpN/wAJ
TqP/ADxtv++W/wAaP+Ep1H/njbf98t/jUTaZMjbSik5wcMDg++Dx36+hoOmy hWbYNqjJYMCO/f8A
A/jxRZBqS/8ACU6j/wA8bb/vlv8AGj/hKdR/5423/fLf402XSnjkkQYcq+0E EYxzyeeOn+NM/s2X
cRtUYGdxcBfzzj1/I+lFkGpL/wAJTqP/ADxtv++W/wAafH4pvCQJIoVGeWVC cD6bhnt3rOltSVXB
kVd6lzFt37Nw3Bd3G7bnGeM4zWlqPh1LTSGv11RntbpANKeFP3k7uhdDKGXC qFBJxy2MjacISyC5
r2N9NqCFoLy3yPvI1swK/wDj9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1F dRpmpi8XypcLcKOR
2Yeo/wAO1S1YaZP5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6n Npsuq2OkQ3OnfZnu
LfF0wuJwELJiIRkDecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb /wAB2/8Ai6xdQ8Wx
Wzym2jtprZVgK30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmu J5IY444bstC3myrG
jCXZkrhw2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxp b3P9pRfZ7m2uRbSQ
2++43uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5 gw+fbgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlRuUk4
INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPzbf8A gO3/AMXR5d//AM/N
t/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTmi/8AENnZ aGmrq6PameKJ3kby
xGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz823/AIDt/wDF 1ip400qbVmtbe9sZ
bVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlrfbbtZcO9lOjKyNEO UKAhT5v3zhRtxn0A
NPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCLrPbxZoiQyTS3vkwJtPnT RPHG6s6oHRmADpl0
y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKIyilSAQT5sfbjPOMHAAqtftdS QefbfIivu8huclh/
f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrcf9cIv/QpKz11yaHUtTtb+y2JaRxT RvaGS5eRJHkVcosY
YN+7yQNwGevFAGh5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVYeIdKa1 urkXX7q1tvtU5MbZ
jjy4ORjIYGKQFfvAqQQDU39q2g1P+zmMyXB+6ZIJFjc7d2EkK7GbGThSTgN6 HAA/y7//AJ+bb/wH
b/4ujy7/AP5+bb/wHb/4usJ/F2zxNPpHkWbeTcx2+xbzN0+9EbesGzlF8z5j u4VHPbFalt4g0278
3yJZn8uMzDFtJ++QdWi+X96vI5TcPmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5 +bb/AMB2/wDi6z28
V6SvlDfePLJvxDHYTvKuzbu3xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJ IIXkiAK7hmVQUUlS
CASCQyn+IZAFia/lknTz7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLq lfah/ZOma7qXleb9
kV5/L3bd+yFWxnBxnHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yA uAMHPXABoeXf/wDP
zbf+A7f/ABdFZ/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snj FvcQLIpZ/KO7noQI
yOn8X5z3GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2l GptChQKqlVPRR/sH
1FW/7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQ VwLdOrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP/jg/
+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7sJReQ hLO2jhP2aBoZLopE
IwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8AxuiwFC+0 /wDtbTNd03zfK+1q
8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIkhDRs7FwzRpuy 3KrgbSSTsppUyM7L
rGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp4Vn03ybjTrjTrW8T zVIi00JbbZPL3ARI
6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP8jzZZJN0Pzr5b/vcFud2 xDgYrrP7Ouf+gz/4
4P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7B9ohfF7Nd7bi382CTzJJH2SR 7hvUeZkcj5kVu2Kz
oPA8ttpN5YQahbRrfWk9rcBLMqiq7zOnlKH+QKZ2BBLZCgDb1rqf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwHO6h4Plv7S5sW1FEsma6mgUW5Mkcs6yqxZt+GUefIQoVT935u Dndi0/y9butS83Pn
20MHl7fu+W0rZznnPm9McY9+Jf7Ouf8AoM/+OD/43R/Z1z/0Gf8Axwf/ABui wFOOO/k0OyGn3Ntb
zeVGS1xbtMpXb0wHTnOOc/hWE3gOJJ7DyLi2aGza1KSXdoJrlFgKYSOUMuxW EfI2nl3P8WB00WlT
QxJFHrGERQqjaOAOn/LOn/2dc/8AQZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLK qhzIY3XPzo0jzFhx
lZSmQAMUtN8H3WkTPd2F5p1vdtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/ AGdc/wDQZ/8AHB/8
bo/s65/6DP8A44P/AI3RYDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/Cqf IjJUqx+983Ixr6Hp
t1pFjHYSXcM9pbxpDahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAb o/s65/6DP/jg/wDj
dFgKccd/JodkNPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLc Pd6es5BaWSVjAGOI
zumf7wkGAmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAb osByeq+Af7Su7iX7
XZp5v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcx zQGTekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8eZnyf
n68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nXP/QZ /wDHB/8AG6ZHpU0S
lU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3rxuSMYA5 jPGOd354r+Ep4rCF
GvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ/wDHB/8AG6P7 Ouf+gz/44P8A43RY
DnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2QwOQcqILLwHb2FnLb QxaKy+QtvF5ukK3m
IGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8bo/s65/6DP8A44P/AI3Q BgReE5o7jTpG1Hc1
rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/+Qrcf9cIv/QpKd/Z1z/0Gf8A xwf/ABumDSphK0o1
j52UKTtHQZx/yz9zRYDKPh26Omy6L9vhGhvbParCLY/aEiZCoUS79vy5ABKE 4Azk5Ykfh26k1m21
a/v4ZbuGRCRBbGKNkSOdFXBdiGzcMSc4IAGByTsf2dc/9Bn/AMcH/wAbo/s6 5/6DP/jg/wDjdFgM
BPCTx6hBcLeQxiO5knaWGBo7lw07zeUZQ+DFlwCjKQcE8EgqyPwfL5dhDLqK NDpqww2YS3KsIkmh
kIkO872It0G4BQMsdpyAOi/s65/6DP8A44P/AI3VXUlfS9NuL6fWHMUCF2VI wWOOw/d9T05osBm+
HPCNv4dnDQrYhY4Ps8TQWKxSumRzNJkmRvlHI2gksSp42ksXmX96f+m3/sq1 uvpl0jsjaxhlOCNg
6/8AfumRaQsZkY30cjSNvZmDZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAP SX27YHt0qK7mvdQm
ie7eMiJWChA/fH9529O2K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2 kkmaRizA7gFLZ27g
RxTVXCAbDuVSgOeMHOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZ bOEnkaJWAZyxO7k9
Rxxx1NRy5lQqQ5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJ DlXd1QhnbcxDd8EH
Hp96jed5YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0a Bqc3cWTyxBUMYIdG
xKm9GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtl tzAMNz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf/wCJ
ougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZlQDCr 5vmYIXgAlM4ABJOW
Og2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2w0G40XS2 tNIuraGRp95kuLdp
V8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QKSN9oE7rsJ4Vj uUAk4BGd2OdX+zrn
/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3FmtlBc/arW0uLQTQ ROwcOCmRuQ+YWC5B
Vu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAEJJwY2VsjJJLHcN/+zrn/ AKDP/jg/+N0f2dc/
9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpxW3IKKkkUi+b858w5gizt2ZG7 pkbbWl+Hbq012XV7
y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2xzsf2dc/9Bn/xwf8Axuj+zrn/AKDP /jg/+N0WA52XwhLP
o9ppdxc2Nzbac0ZsUuLAyKFVGjAmUyYkO1s5XZhgDjHFaC+H0TQbbS0khiEN zDcZgt1jjyk6zFVR
cBVJBA5JAOSWOSdL+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bosBj6r4Y/tL Wf7R+0Q8RonkT2/m
xttjuU+YbhlT9p5HomM/NkR6d4YuNNntbmLUEM8TSKyGFjAsLmPdHChkJiA8 lNvzMq5bC4IC7n9n
XP8A0Gf/ABwf/G6P7Ouf+gz/AOOD/wCN0WA52PwfL5dhDLqKNDpqww2YS3Ks IkmhkIkO872It0G4
BQMsdpyANCTSftHi6PUpINsVvbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ /wDHB/8AG6P7Ouf+
gz/44P8A43RYBsf/ACFbj/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzN qyQmQl+ZWb74G5Yz
j5TncGlTCVpRrHzsoUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uG WWFjZXMsxEEBijZX
lMwjVNx2KsiwsOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjb wqIO2a3/AOzrn/oM
/wDjg/8AjdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYt oEm/G3MKk/JnBIyO
CM6y8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkISzto4
T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH /wAbosBQvtP/ALW0
zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2RWt5m2lf 3sQK7xjBHIwyof4c
VpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSMFjjsP3fU9OaL Bc53/hBf+nPwj/4T
v/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJTxHqdqmoaiJr6+Wz nvzcW01qIreOCEzb
PLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbmf7TDEBlVwMOwJPHpjpz1 xTa21BtMudNPhVja
XXnedH/acHzeazNJzvyMl26HjPGKGtQQl74lvLJLh30tFFlaC+vUe5w8cJMm 0IApDybYmyuVUHAD
MPmEMnjCWzgmvr7TkTTlnu4InguDJKzW4lLZQooUFYHxhjyVHckSX9jfalOs 114WlZtuxwmrRIsq
ZJ2SKsgEi8t8rgj5m4+Y5pWOg31sZ3ufDUt4009xKUn1SJ4lEzuxAiaQop2u VJABILf3iKVh3JoP
GF/K0EH9gTC6nuVgjDGWKI7o5XzumiRjt8o7gFOAwI3H5am03XdRWBptQghe 0bVprNLlJvnVfPlj
TcgQfxiKMYJzu3EjBpltpl5azRTJ4XuJJ4pPNSafWY5pAdjoBueUkqBI+FJw CxIGTmmXumarcWd9
bQ+HpYI79l+0p/acLIyFsyqqeZhC6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9z w/NnfFuPlv0GNybW
weRuweRV2sn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17 /oW2/wDBjb//ABdH
23Xv+hbb/wAGNv8A/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMb f/4uizC5rUVk/bde
/wChbb/wY2//AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi 6Ptuvf8AQtt/4Mbf
/wCLoswua1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+2 69/0Lbf+DG3/APi6
Ptuvf9C23/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/ APF0WYXNaisn7br3
/Qtt/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH 23Xv+hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZP23X
v+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL+oqb7br3 /Qtt/wCDG3/+Lqhr
Sa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9kkFxLgAloUcNK oB43GMOB05I5HUYc
viS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi5IJC1sXGo61NcyyR eHJDG7ll339urYJ4
yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3pKGK/KuQTglQTkgUWAZ4a 8Sf2rrV1GizNb3ub
uAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriyWHRrloZlt/OaNJXMTyxpIMFY /LKqJFyWdTgMdvTc
qaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG27YowRnBKAnJGafBo09s9sYfCUqL brGqRDWIvLPlgBGZ
PM2uyhVwzAsNq8/KMFgOtorJ+269/wBC23/gxt//AIuj7br3/Qtt/wCDG3/+ LpWYXNaisn7br3/Q
tt/4Mbf/AOLo+269/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23 Xv8AoW2/8GNv/wDF
0WYXNaisn7br3/Qtt/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW 2/8ABjb/APxdH23X
v+hbb/wY2/8A8XRZhc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Los wua1FZP23Xv+hbb/
AMGNv/8AF0fbde/6Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+26 9/0Lbf8Agxt//i6L
MLmtRWT9t17/AKFtv/Bjb/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Q tt/4Mbf/AOLo+269
/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF 0WYXNaisn7br3/Qt
t/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23X v+hbb/wY2/8A8XRZ
hc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/ AMGNv/8AF0fbde/6
Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6L MLmtWH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/Vf8A
vq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SGeJyk kcl5aKyMDgggrkEH
jFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvLrEumeGbi 9lDXlzHPJbwRsQhn
lMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlvbW1ljDAgNtM0 o3YwSqkcdb17oCaz
ptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4Ctob9JbbUrxbWK7N zFBNFNOUzPaTuu92
JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A 36b/AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UATUVD9
pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+ FAE1FQ/aY/7sv/fp
v8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/u y/8Afpv8KPtMf92X
/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KP tMf92X/v03+FAE1F
Q/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03 +FAE1FQ/aY/7sv8A
36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY /wC7L/36b/Cj7TH/
AHZf+/Tf4UAFp/x5wf8AXNf5VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+F ICaioftMf92X/v03
+FH2mP8Auy/9+m/wpgTUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj /uy/9+m/wo+0x/3Z
f+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo +0x/3Zf+/Tf4UATU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/ALsv
/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9p j/uy/wDfpv8ACj7T
H/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv 8KPtMf8Adl/79N/h
QBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl /wC/Tf4UATUVD9pj
/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNR UP2mP+7L/wB+m/wo
+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UActRRRWZZf8A Bv8AyL0P4f8AoC10
Fc54QkZPD8IWF3GF5Ur/AHF9SK3fOk/59pfzX/4qtCCaiofOk/59pfzX/wCK o86T/n2l/Nf/AIqg
DJv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjSKiKiuhJzE5LFhjCgBtxKxnxMlp eCyuoJ5vIlhtLzUI
Y1SCO5kCbU2FzJ8xljxgMB5gy3DETalpb31wt3bTahpt4EEbXNp5JaSMEkIw kDqwBJIJGVy2CAzA
0z4ZR7wTy3GpyRvLDc3MDGAJdXEQQJM5Chgw8qI4Qqh2D5cFgQCG08fWVxYW 97caZqVlBc26XcDX
AiPmW5eNWmOyRgiIJo2cvtIUkgHacXP+Eus21yPSYbO+nmklliSWKINE3leU JW37sBVM20k4+aN0
5barYuj+Er/S/CsNvcM2qapb6OdPgjvxEbSLciho8Iqs0TNHGDv3NtXjGTnc 07QrfTZdNliivHks
LSW1V5HjJm81o3kkkP8AFIzRBi3GSzE5J4AM2w8eQXOnadcrp99dQz/Y4ri8 hjijjhmuBEUVkaUu
OJoydu8ANjcSDjLsPH2oL4M0a4udMuzq11b2MiiYQ4vleWCKZ49kmFP79SA+ zl14wGAc/gq/tLjT
bDSnuYNFgeymuvMuImaaS2MYUmPysklYIlysqAYzsOCH2G8IWLWGlWmzUANL shZ2sgki3LteF0kP
YurW8bDjaeQVIOKALXijU9U0/wAG3ms6cILW6tLR7t4L6HzshI2Yxny5AA2Q BuDMBg8HrWfq3juw
8JSwWHiC8glvvK8+4lgEduiRFmCsI5ZS78K3yx+Y3y9BuUHav9P/ALT8PXOj XgvJI7q0e1mnzEJG
DIVZuPlDHJPC4z2xxVfUNF+3aib2OfU7KSWJYLkWkkS/aIlLFVLHLJjzJPmj KN855yFwAVdf8Xf2
bpOsta2c51LT7S4uDFNF8kaxxsySOQwBjcqAu0ljlhgGOTZ0FjcS3dnHPNZT 2UjZzBOULpgkclGZ
eevBPX14rFufDdpePdPdR6hMb1JYbvdMoE8DqVEJAIARQfl24YHcc5eQvqWK 3NpZxwTPeXsi5zPP
5Id8knkIFXjpwB09eaAL1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8A PtL+a/8AxVHnSf8A
PtL+a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8A xVHnSf8APtL+a/8A
xVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8A PtL+a/8AxVAE1FQ+
dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8A xVAE1FQ+dJ/z7S/m
v/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8AxVAE1FQ+ dJ/z7S/mv/xVHnSf
8+0v5r/8VQBycFzdmG8dpJY4IY0McrSsqljLIrLy6rwFTjIxnvkCl8O6leXm slPO+1W6KRIYpI2E
RIO0ti5c4OCANvXuMGtqLT7OS1X/AIluGkQbpYtqO3Q53AhuTS2emW1hcm4g tb3zCpX95dtIuPZW
kIB464zVpwUbW/AzcJc17mtRUPnSf8+0v5r/APFUedJ/z7S/mv8A8VUGhNRU PnSf8+0v5r/8VR50
n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v 5r/8VR50n/PtL+a/
/FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50 n/PtL+a//FUATUVD
50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a/ /FUATUVD50n/AD7S
/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD 50n/AD7S/mv/AMVR
50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S /mv/AMVR50n/AD7S
/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR 50n/AD7S/mv/AMVQ
BNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S /mv/AMVQBNRUPnSf
8+0v5r/8VR50n/PtL+a//FUActRRRWZZf8G/8i9D+H/oC10Fc54QMo8Pw+Wi MMLyzkfwL7Gt3dc/
88ov+/p/+JrQgmoqHdc/88ov+/p/+Jo3XP8Azyi/7+n/AOJoA43XvEOs6R4y uTbr9s02HT7ZPsGU
j3XM8k6xP5hBIy8UUWOg87ecBDmnpHjDV7DQrtb8R6vPoyXM+qXrsLZnhS5u I1MUaIVZ9ts/ykoP
u/MckjtktPL1Ga/W2iF1NFHDI/nN8yIXKjGMcGR/z9hWXL4S0yY5bT1AZ5Gl VL2ZFn3yNIyyqMCV
C0kh2PuUb2AADEEAwdc8X3lvc6fqptfK0K01C9SV4romef7PbXYdWi2hdu+F iuZDnahIBPyyW3in
UNX1jQoZ9Ou9OI1PbJhLhIp0a0umC5miiZiGjBI2kD5DkngbUvhLTJ7/AO2T aesh3yP5D3sxt90i
Mkh8g/ussJHydvJdieSTUlp4ZsrOeG4S0aW4hl85J7m/mnkDBHQDfJlioWWT Ck7QXYgZOaAOV1zx
TrOk3fjJ2vP9Fjimh0w+Un+i3MVilzjoS+8PI3zcL5OOd4FaGt/EQaLfX0f9 nfarWGK4ME8LTbZJ
YYXleNnMIiGPKkU7ZHYMMFfvbdrU/DGn6xp2pWF/psU1rqcqTXafaZF8x1CB TkYIwIo+mPu+5zXv
fBmlahPLLc2DOsvmloRqM6wgyo6SMIgQisyyPlgASXY5ySaAKNz47m0o3Tax pUcUVm8sE5tLozN5
yWxu8KGRMoYR94kHedu3Hz1qeGPEV1rv2pLzSZ7GSDYQzRTrHIGzwpmiiYsN pyAuAGXkkkCafw/Y
3UsslxpltMZbg3MiyTMyvIYPs5JUjBBi+XbjHfGeak0zR4tI802sDNJLgPNc 30txIwGcLvk3NtGW
IXOAWYgZJyAa1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf 9/T/APE0brn/AJ5R
f9/T/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/3 9P8A8TRuuf8AnlF/
39P/AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0 /wDxNG65/wCeUX/f
0/8AxNAE1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf9/T/ APE0brn/AJ5Rf9/T
/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/39P8A 8TRuuf8AnlF/39P/
AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0/wDx NG65/wCeUX/f0/8A
xNAHFW5WX7duaAhEXy1G0yB/NkD8BWb7vl9VI9O5qfw2ty+tlx80KKQ4lBjI yDgqDbR7jxg/NgA8
9q3Rd2stilvcNYSR7FDRyzjnHqCKbY2+l292ZdPstJjuWUqWt2UOV6kZC5xw PyqlOna1tTN05Xvc
yPFl9q8fiHSLDTJNVEc1pdTSppi2nmMUeAKSbn5do8xunOSOwrU/tW7s9Utt Ea2kuriRFeK5klQC
WFNgmlfao2urMBsVcMZEwQN/lu1XQYNZuLe4u4ZVnt0dIpLXUZ7ZgrlSwJiK kglEODnoKE0C0V0l
Nmrzo8TrPJdyvKDEu1MSNlsYLAjOG8yTOfMfdJoc7N8RZVu5rWDSo53kdP7P lEsyQXKNcRQBzI8A
GP38bAxeaCM8/dLSS+PbyKNVOjQG4nlNvbJ9tOxpEu4rSbe3l5VRJKCpAYso JIQ/LWlH4M0qO6S4
WwYtFtEMbajO0cIWWOVVjjJ2xqHijO1QBhAMY4qPV/BlpqdnHBHCtq6XBmEs dzKGAe6juZgCMFS7
xD5gcr/DjpQBi6l42udP15Hu7SRZ7K3ubaeytpnmikneSw8kghAzAC5XJ8ss MuFVuN3WeG9an1zT
pJ7nTp7GaKUxMkscqK/AYMnmxxuVw2MlF+YMBkAE1R4S0wIFbT1kfY6+dLez PKd7RsWMjZcuDDFt
cncvlrtIwK0NN01dJt2htLdQHcvI8t1JLJI2AMu7gsxwAASTgKB0AFAGlRUO 65/55Rf9/T/8TRuu
f+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX /f0//E0brn/nlF/3
9P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xN G65/55Rf9/T/APE0
ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eU X/f0/wDxNAE1FQ7r
n/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A 8TQBNRUO65/55Rf9
/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUV Duuf+eUX/f0//E0b
rn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nl F/39P/xNG65/55Rf
9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBy1FFFZll/wAG/wDI vQ/h/wCgLXQVznhA
Snw/D5boowvDIT/AvuK3dtz/AM9Yv+/R/wDiq0IJqKh23P8Az1i/79H/AOKo 23P/AD1i/wC/R/8A
iqAOJ1yfXoPHV5caPLJMYNMtYRZSs7Qbp5blRMY17rJHCWbtEJepxWXpGv6x o/h/VIIbz7ZH4eiu
7q4l1LfPPexrd3aKnmBl2MFtsbiHHzj5QFwfRhautw9wv2YTuio8gg+ZlUkq Cd2SAWYgdtx9apze
H7C4ltpZtP0ySS1lae3d7JSYpGbezqSflYt8xI5J560AcT4i8RalEdP8RSi0 fT9P1PURFYrEyys1
tbXqZabcRhvKY4EYxuAyduWsQarrl74k0Cz12yjt54NTEsbARRsyvZ3o5iSe YgAocMWG7JAHyEnr
v+EfsP7Y/tf+z9M/tP8A5/fsS+d93b9/O77vHXpxRY+H7DTIo4rDT9MtI45T OiQWSxhZCpQuADwx
Ulc9cHHSgDlVTVLzxtrH2OPVTJbarbKl0b/FnDAILd5YjAZOWZWlwREfmkU7 gRla/g7xJeQfDyw2
xwH7HLpGnx5U8xzRWe4nn7w898HpwvB5z30dq8LzPF9mR5n3yssGC7bQuW+b k7VUZPYAdqz38MaV
JcWlw+k6Q09kiJayNYKWgVDlAhzlQp5AGMdqAMHS/FOu3EulXUtrBe2uraU+ pQWVlAI54sNb4QyS
TBHws5ycJnZkDnFRwa7r1/4uu9JsDaaeS8sr/b4HuWTZb2JCbVnCqc3LZ2nb 8uQCSWOtpXg210nx
De65FJE99d+YC/2SKLYruHYZjVS+Sq8yF2+Xg8tnYTTkjvGvEis1unzumFth 2yEBy2c8iOMH/cX0
FAHM61fHxB4B0TVVa7sjfXGmSlbW8kiZVnmiV0LoVLDbIw/I4BAxTsGntLRd Yhvb6XUbjxBPZeRN
eSyxyw/bpI2VYmYquyFS4KBSBFknbvB6aTR9K1fS4bKW00i90+2fZFA1oskU TR5jwq5IUrhlwOnI
qS18P2FjqM+o2en6Zb30+7zrmGyVJJNx3NuYHJyQCc9TQBrUVDtuf+esX/fo /wDxVG25/wCesX/f
o/8AxVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/ APFUbbn/AJ6xf9+j
/wDFUATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A 8VRtuf8AnrF/36P/
AMVQBNRUO25/56xf9+j/APFUbbn/AJ6xf9+j/wDFUATUVDtuf+esX/fo/wDx VG25/wCesX/fo/8A
xVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/APFU bbn/AJ6xf9+j/wDF
UATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A8VRt uf8AnrF/36P/AMVQ
Bx8Qmgt7+adp44jGgjUo6qpErksGyi8h06OCce3Mfha4W68QP5V+pMcZLQPK 0jOp7qBcyBcHbkle
+B1ro7fUkFvGon+6oXi1kbBHGMjg1YhvDPII0mG49N1q6j8yatVvdsZOmua5 jeKdb1mx1HT9M0Ox
+0XV1FNcM/lJLsSIxqRseaEcmUc7+MY2nOVjs/E19d3+lWhGmxPqVvDeLtn8 3yEKbniypxI7bXMb
qQGVZWwfJxJpa5a6VdW9tb+IP7ImgluFSCO/gVleYghQodsFyNwAHPWrFxa2 0KO9z/Z6JNcRO7Sw
AB5tyLGTluX3LGFPXIUDoKg1OJm8c66bhEt7aAWup+VLpV7PaBUML3VvCGKL cMz5S5VvmEJG37vJ
CyTeMteiSKIHTTPd3D2sEn2Z9sTQ38NnI7L5mXDmYyKoK7MbSX+9XVR+GNKh vZr2LSdIS7mffLOt
god23iTLNnJO9VbJ7gHqKj1XwrYazYizuraz8nzRKQtqvzfvkndTnOVd41Lj +LvzzQBxuq+JtUsP
EymSCC81PT4rjTkaCPy0meaXTSrCNn42/aANpkG7Z95N3y9p4X1LU9RsrldY tY7e8trgwsqmMFhs
RwWRJZRGcPjaXJIAbgMAJovD9hBZrZxafpkdqsUkCwpZKEEchBkQLnG1iASO hxzVix05NMs47Owi
s7S1jzshgtvLRckk4UHAyST+NAF6iodtz/z1i/79H/4qjbc/89Yv+/R/+KoA moqHbc/89Yv+/R/+
Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1 i/79H/4qjbc/89Yv
+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqN tz/z1i/79H/4qgCa
iodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0 f/iqAJqKh23P/PWL
/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqH bc/89Yv+/R/+Ko23
P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79 H/4qjbc/89Yv+/R/
+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z 1i/79H/4qgDlqKKK
zLL/AIN/5F6H8P8A0Ba6Cuc8IRs/h+ErM6DC8KF/uL6g1u+TJ/z8y/kv/wAT WhBNRUPkyf8APzL+
S/8AxNHkyf8APzL+S/8AxNAHC63/AMS74h3/AIkTj+y9Ks/tXvZvLded/wB8 7Ul4BY+TtH3zWP4V
169g0XQLZdU8q6ji0u3tNI2x/wCl2rw2/mz7Svmts8yf5kYKPJ5B2vn0K61f S7HUYNOvNftre+n2
+TbTTxJJJuO1dqkZOSCBjqa0PJk/5+ZfyX/4mgDhfDmreIjZ6C327+17rV9E OoNHftHbpHIpt8hG
hiyFInfhlc/KoBHJPN+JzNpVj8QNbnjjiF4jadqKRuXVGbT4PIYMQCwWV2j4 UZ+0bmwE49amK2yB
579okLqgZyigszBVHI6liAB3JAojKzPMkV+zvC+yVVKEo20NhuODtZTg9iD3 oA4Wy1LQbvwprOkX
fiHTbOeHU76S4Sa4T92v2+QgTIWBMTkorKSNyvtyNwNRlrP/AIVP4xjsLbSk tYrS7VLrSbcQ215/
owJkRQWHBJjJ3NzEeR90eheTJ/z8y/kv/wATUc5W1t5bi4v2hgiQvJJIUVUU DJJJGAAOc0Aec3uk
3Hh7XNAvbmGe6tdHu57XSbe3jDSNbfYrmUqgByzYEMIDck227P7w1X0nxRr2 o61b6LB4ksbhZLuE
PfWk8N8QjwXjMm5YYkDA26MuUOCcsXU7K9G03ULHWbdrjS9ZivoFco0lrLFK obAOCVBGcEHHuKue
TJ/z8y/kv/xNAHmKa7q+kaLqRhljtg+p3sVkzYET7tRk8+R5CrbHij3uAVKh FaQiUBli0PDusa/q
es6XZya7aT2bJdzPPabbj7SkTWu0Cbyo0J3SyKWRMbcr/rBvXvvJk/5+ZfyX /wCJqOYrbIHnv2iQ
uqBnKKCzMFUcjqWIAHckCgDmfAutXWr/AG/7XqX9oTReWXmtJYJrAM24lLeS NVfgY3LLllyvLA7m
7Cs0X9o2qDTF1NmvNjuYlCkqE8vduwuFIE0RwcEhwRxUcuradBqK2EusKl02 RsLJwQYhtJxgMTPD
hTyfMXANAGtRVWArdW8Vxb37TQSoHjkjKMrqRkEEDBBHOak8mT/n5l/Jf/ia AJqKh8mT/n5l/Jf/
AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJk/5+ ZfyX/wCJo8mT/n5l
/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8l/8AiaPJ k/5+ZfyX/wCJoAmo
qHyZP+fmX8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8A iaAJqKh8mT/n5l/J
f/iaPJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgDjv7P1y3 iuLvTbYNcyKm1ZQh
SREeR8Bt4ILCQDJHGPfIp+GhqNt4sP2q4LR3EjpLdeScXU6IQYQTwqxneRjG cMP4WrprXU1ZBFGb
pnjUblTyuBkjOCc4yrYz6GrNtfrdXbWqzXCyoAXUmIlM5IyBkjODjjtWkar5 bW/AzcI3vcy9Wt5b
j4h+H/KvZ7Xy9PvZG8kIfNUS2mUberfKe+3DccEVw8/iq91TVorKS+gmtbm7 tLsWjXUclzYlNRtA
sUsaRIYWxKQyu0hymN3ykt6deX0FjcWtvNeXJnun2xRxQ+Yx5ALEKhKoCygu cKu4ZIyKkvZ4tPgW
a6vZY42ljhB2A5eR1jQcL3ZlHtnniszQ81/4S3W30mR4taglka7ijvNTS7tv 7NtlaOVz5FwIW2fM
saFZ0Zh5iKCS6yH0Dwtd3l94ctLi/nguJ23jzoCSkqh2COGKJuyoU7lVVbO5 RtIrS8mT/n5l/Jf/
AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4mgCaiofJk/5+ ZfyX/wCJo8mT/n5l
/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+fmX8l/8AiaPJ k/5+ZfyX/wCJoAmo
qHyZP+fmX8l/+Jo8mT/n5l/Jf/iaAJqKh8mT/n5l/Jf/AImjyZP+fmX8l/8A iaAJqKh8mT/n5l/J
f/iaPJk/5+ZfyX/4mgCaiofJk/5+ZfyX/wCJo8mT/n5l/Jf/AImgCaiofJk/ 5+ZfyX/4mjyZP+fm
X8l/+JoAmoqHyZP+fmX8l/8AiaPJk/5+ZfyX/wCJoAmoqHyZP+fmX8l/+Jo8 mT/n5l/Jf/iaAJqK
h8mT/n5l/Jf/AImjyZP+fmX8l/8AiaAJqKh8mT/n5l/Jf/iaPJk/5+ZfyX/4 mgCaiofJk/5+ZfyX
/wCJo8mT/n5l/Jf/AImgCaiofJk/5+ZfyX/4mjyZP+fmX8l/+JoAmoqHyZP+ fmX8l/8AiaPJk/5+
ZfyX/wCJoA5aiiisyy/4N/5F6H8P/QFroK5Tw/Itt4Pe8ZXcwQmTYsrJu2xg 44/nWrs1T/nztv8A
wZS//G60INaiufm1uxsdPt7nURdxPPcyWqRWwnuWeRC+QojUsfljZs7egqa5 1WwtvDV1rzJqH2S2
t5bh0dJYpSsYJI2SbSD8pxnGeOxzQBzviXR9a1LXteisVj+wXej2trco8B33 CGS5EiQSl1RJQjkj
cGGWTO0c0Xup6gLi7gjj1nff6xp9zZFLS42raZtRKGYLiIfJPuRyp5bI+bnq ra7sLu9ns4pbn7RA
ivJG/moQrPIin5sZBaJ8EdQAehBNz7NH/el/7+t/jQB5a+i6t/wjWgQyLrky 3Wn215q4mubiWRZY
bizkbbuYtHIENwQke1mI4BKriTUIdckvNWn08+IBb2lld3OlgyXI3Sra2BgD KxzId/n/ACSA7m8z
IJ3V6d9mj/vS/wDf1v8AGj7NH/el/wC/rf40Aea6zaa7DfTWKXmq2+hW13Ks Uvk3t3IxMNsyDdBI
s7rua6+YsyAjaeQgHUX1tqJ0Xw7c3qz3bWEsVxqUXlL5k22FwW8pCysyysku 1ScGP5NzBQei+zR/
3pf+/rf40fZo/wC9L/39b/GgDkdY1OLVbixnkj8QJoapOk4tbS9t5/tGYjFl Y1WYpsM3ONmcZ+YL
WPpemeIbu6tTrkmsrcXN7DbX/lXc0cYiGmpI5Ty2CIPtS4LpjJyucMVPo32a P+9L/wB/W/xo+zR/
3pf+/rf40AeW+Hr7Vr658y5k1xvEa3enCRGW4W2jiNtaPcq6cW6Ntac7WAYE jaN22q9zDrup3s8U
8Wq/ZZ/LvNQs1t71fsjxXltIUimd2EjKnn7fswTdsyqn5APVo9OtYXmeKNke Z98rK7Au20LlueTt
VRk9gB2qT7NH/el/7+t/jQB5jNAreLluNRi8TnR0SdLOS3W/81Va308qGMf7 0AlZiQ3V1bPzA1Xg
g8XtrNjcajFqRvEe3SeRFbau5tIMwUp8oQlbkkL8p2ydg1erfZo/70v/AH9b /Gj7NH/el/7+t/jQ
B5zpMOoeHfCGgLphu11SBBpk9jqUlw0b3DwoNyKx+ZI5I1bdGSixC4K5r0Sw tfsOnW1n9onuPIiS
Lzrh98km0AbnbuxxknuabJp1rM8Lyxs7wvviZnYlG2lcrzwdrMMjsSO9SfZo /wC9L/39b/GgCaio
fs0f96X/AL+t/jR9mj/vS/8Af1v8aAJqKh+zR/3pf+/rf40fZo/70v8A39b/ ABoAmoqH7NH/AHpf
+/rf40fZo/70v/f1v8aAJqKh+zR/3pf+/rf40fZo/wC9L/39b/GgCaiofs0f 96X/AL+t/jR9mj/v
S/8Af1v8aAJqKh+zR/3pf+/rf40fZo/70v8A39b/ABoAmoqH7NH/AHpf+/rf 40fZo/70v/f1v8aA
JqKh+zR/3pf+/rf40fZo/wC9L/39b/GgCaiofs0f96X/AL+t/jR9mj/vS/8A f1v8aAOUbw/q7W00
2n3UVtcyqrJL5uVIVndVZTGeCZMHB7D3Bp+HdG1LTfEqySi+axeSRfNOAZpw mGklA5MZw2zPGfqp
PZWtujWkJLS5KKeJWHb61L9mj/vS/wDf1v8AGtFVko2IdNXuYOq6Wb7x1oVw 6XYgtbK7bzIZZI1E
nm2pVXKEBgQrHY2Q208HFcOf+Egu9aRXh1IxXFxbXV5ZtaXZS0mS/tW2LLK7 RuFUzfNCEQhC2MBd
vq32aP8AvS/9/W/xo+zR/wB6X/v63+NZlnluzxDJpMixz6qYTdxfbdVeHUA9 wvlylttnuSWHEhhz
5DBTuzwqui+geFkvI/Dlot9PPPMN+JJ4TE7JvbZlWZmHybfvsX7vhtwrS+zR /wB6X/v63+NH2aP+
9L/39b/GgCaiofs0f96X/v63+NH2aP8AvS/9/W/xoAmoqH7NH/el/wC/rf40 fZo/70v/AH9b/GgC
aiofs0f96X/v63+NH2aP+9L/AN/W/wAaAJqKh+zR/wB6X/v63+NH2aP+9L/3 9b/G
Re: building a plugin for external binaries (fao Ed Merks) [message #389604 is a reply to message #389602] Tue, 30 November 2004 05:59 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------040906050307010305030107
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

So it sounds like you have a directory with .class files not a jar. If
your runtime/library points at a folder f, and you want to access class
a.B, that folder better have f/a/B.class in it. It sounds like maybe in
your case the folder is called "a" and only has B.class in it, which
won't work.


Ian Ward wrote:

> Ed,
>
> I seem, somehow(!), with your suggestion, to have managed to fix the
> warning in my 'wrapper' plugin.xml - it can 'see' the plugin, or at
> least A plugin, with the right name, lginterface - I presume it's the
> plugin I've created in that workspace. (I am in the workspace of the
> 'wrapper' - which I have previously been calling the 'host' or dependent).
>
> My 'wrapper' code now has an error on the same import statement but on
> the complete reference - I believe it was only objecting to
> 'lginterface' before - now it doesn't like lginterface.LGClassFoo,
> LGClassFoo being one of the .class files in the folder lginterface
> (yes, the plugin has this name as well).
>
> I notice that, in the plugin dependencies list (required plugins) for
> the wrapper plugin.xml, the plugin lginterface icon is slightly
> different to the others (eg org.eclipse.core.runtime) - there seems to
> be a tiny red (?) dot in the top left corner - that's not an error
> flag is it? - no other signal/message that I can see.
>
> I have checked the java build path for the project and I find, under
> libraries>plugin dependencies, a folder icon, called lginterface, but
> I'm not able to verify anything about this entry. There are also some
> jar entries with full path names quoted but there is nothing for my
> lginterface entry.
>
> I am concerned that the copy of the plugin (the original is still in
> the workspace), which I have placed so that it can reference the
> folder of binaries (eg LGClassFoo) may not be visible from anywhere
> that matters. It seems to me that this may be why the complete
> reference cannot be resolved.
>
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389611 is a reply to message #389604] Tue, 30 November 2004 08:46 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0018_01C4D6EB.730FF220
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0019_01C4D6EB.730FF220"


------=_NextPart_001_0019_01C4D6EB.730FF220
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,=20

I haven't quite followed that. At one point you seem to say that f has =
to have f in it?!

My runtime/library (quoted in my plug-in) points at something named f =
and I want to access B.class - the folder holding B.class is indeed =
called f.So where did a come from?

I'll summarise..........

My import statement says 'import f.B'.

B is on the path f/B.class relative to the folder where I've put my =
plugin (so the plug-in can see f).

Can you explain what I need to do in these terms?

Thanks

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cohjq8$m73$1@www.eclipse.org...
Ian,

So it sounds like you have a directory with .class files not a jar. =
If your runtime/library points at a folder f, and you want to access =
class a.B, that folder better have f/a/B.class in it. It sounds like =
maybe in your case the folder is called "a" and only has B.class in it, =
which won't work. =20


Ian Ward wrote:=20
Ed,

I seem, somehow(!), with your suggestion, to have managed to fix the =
warning in my 'wrapper' plugin.xml - it can 'see' the plugin, or at =
least A plugin, with the right name, lginterface - I presume it's the =
plugin I've created in that workspace. (I am in the workspace of the =
'wrapper' - which I have previously been calling the 'host' or =
dependent).

My 'wrapper' code now has an error on the same import statement but =
on the complete reference - I believe it was only objecting to =
'lginterface' before - now it doesn't like lginterface.LGClassFoo, =
LGClassFoo being one of the .class files in the folder lginterface (yes, =
the plugin has this name as well).

I notice that, in the plugin dependencies list (required plugins) =
for the wrapper plugin.xml, the plugin lginterface icon is slightly =
different to the others (eg org.eclipse.core.runtime) - there seems to =
be a tiny red (?) dot in the top left corner - that's not an error flag =
is it? - no other signal/message that I can see.

I have checked the java build path for the project and I find, under =
libraries>plugin dependencies, a folder icon, called lginterface, but =
I'm not able to verify anything about this entry. There are also some =
jar entries with full path names quoted but there is nothing for my =
lginterface entry.

I am concerned that the copy of the plugin (the original is still in =
the workspace), which I have placed so that it can reference the folder =
of binaries (eg LGClassFoo) may not be visible from anywhere that =
matters. It seems to me that this may be why the complete reference =
cannot be resolved.

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cofsv5$t6n$1@www.eclipse.org...
Ian,

I expect your wrapper plugin to be in the same workspace. Maybe =
if you try "File->New->Other...->Plug-in Development->Plug-in Project" =
and don't create a Plug-in class you'll get something that's pretty =
close to right already...


Ian Ward wrote:=20
Ed,

Next time you tell me 'model plugin variable' I shall know that =
you mean exactly that.. 'model plugin variable'.and it was under my nose =
all the time - thanks for pointing it out !

I have regenerated the plugin.xml of the app but the =
requires>import line carries a warning that the plugin dependency cannot =
be resolved.

To recall - having written my plugin, I simply copied the =
plugin.xml from that workspace to the folder where the folder of =
binaries called 'lginterface' lives (yes, it has the same name as the id =
of the plugin). Back in the 'host' or dependent app (in an EMF =
workspace) I found that the plugin view doesn't show the plugin I'd =
created in the other workspace (and had pasted into the correct folder =
to find the binaries folder).=20

It seems I'm missing a plugin 'registration' step? When I tapped =
in the name of the model plugin variable how is this associated with the =
plugin with that id? Why doesn't my plugin show up in the plugin view =
when I'm in the workspace of my dependent app/plugin?

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cof5h3$bk5$1@www.eclipse.org...
Ian,

I would expect your plugin.xml to have:

<runtime>
<library name=3D"xyz.jar">
<export name=3D"*"/>
</library>
</runtime>
=20
and then in the same directory as that plugin.xml I expect to =
see an xyz.jar. (The name's location is relative to the plugin.xml, and =
should be either a jar or a directory containing .class files.)

Once such a plugin exists, you can set a variable like this:



And if you remove the plugin.xml from that project and =
renenerate it, you'll end up with the extra dependency:

<requires>
<import plugin=3D"org.eclipse.core.runtime" />
<import plugin=3D"org.eclipse.emf.ecore" =
export=3D"true"/>
<import plugin=3D"lginterface" export=3D"true"/>
<import plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/>
</requires>


Ian Ward wrote:=20
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<?eclipse version=3D"3.0"?>
<plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName">

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project>properties>java build path>add library>user =
library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml =
and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=20







------=_NextPart_001_0019_01C4D6EB.730FF220
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT size=3D2>
<P>Ed, </P>
<P>I haven't quite followed that. At one point you seem to say that f =
has to=20
have f in it?!</P>
<P>My runtime/library (quoted in my plug-in) points at something named f =
and I=20
want to access B.class &#8211; the folder holding B.class is indeed =
called f&#8230;So where=20
did a come from?</P>
<P>I'll summarise..........</P>
<P>My import statement says &#8216;import f.B&#8217;.</P>
<P>B is on the path f/B.class relative to the folder where I&#8217;ve =
put my plugin=20
(so the plug-in can see f).</P>
<P>Can you explain what I need to do in these terms?</P>
<P>Thanks</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:cohjq8$m73$1@www.eclipse.org">cohjq8$m73$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>So=20
it sounds like you have a directory with .class files not a jar.&nbsp; =
If your=20
runtime/library points at a folder f, and you want to access class =
a.B, that=20
folder better have f/a/B.class in it.&nbsp; It sounds like maybe in =
your case=20
the folder is called "a" and only has B.class in it, which won't =
work.&nbsp;=20
<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midcohfdm$dba$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV>
<P>Ed,</P>
<P>I seem, somehow(!), with your suggestion, to have managed to fix =
the=20
warning in my &#8216;wrapper&#8217; plugin.xml &#8211; it can =
&#8216;see&#8217; the plugin, or at least A=20
plugin, with the right name, lginterface - I presume it&#8217;s the =
plugin I&#8217;ve=20
created in that workspace. (I am in the workspace of the =
&#8216;wrapper&#8217; &#8211; which I=20
have previously been calling the &#8216;host&#8217; or =
dependent).</P>
<P>My &#8216;wrapper&#8217; code now has an error on the same import =
statement but on=20
the complete reference &#8211; I believe it was only objecting to =
&#8216;lginterface&#8217;=20
before &#8211; now it doesn&#8217;t like lginterface.LGClassFoo, =
LGClassFoo being one of=20
the .class files in the folder lginterface (yes, the plugin has this =
name as=20
well).</P>
<P>I notice that, in the plugin dependencies list (required plugins) =
for the=20
wrapper plugin.xml, the plugin lginterface icon is slightly =
different to the=20
others (eg org.eclipse.core.runtime) &#8211; there seems to be a =
tiny red (?) dot=20
in the top left corner &#8211; that&#8217;s not an error flag is it? =
&#8211; no other=20
signal/message that I can see.</P>
<P>I have checked the java build path for the project and I find, =
under=20
libraries&gt;plugin dependencies, a folder icon, called lginterface, =
but I&#8217;m=20
not able to verify anything about this entry. There are also some =
jar=20
entries with full path names quoted but there is nothing for my =
lginterface=20
entry.</P>
<P>I am concerned that the copy of the plugin (the original is still =
in the=20
workspace), which I have placed so that it can reference the folder =
of=20
binaries (eg LGClassFoo) may not be visible from anywhere that =
matters. It=20
seems to me that this may be why the complete reference cannot be=20
resolved.</P>
<P>Ian</P></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:cofsv5$t6n$1@www.eclipse.org">cofsv5$t6n$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
expect your wrapper plugin to be in the same workspace.&nbsp; =
Maybe if you=20
try "File-&gt;New-&gt;Other...-&gt;Plug-in Development-&gt;Plug-in =

Project" and don't create a Plug-in class you'll get something =
that's=20
pretty close to right already...<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcofkah$caq$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Next time you tell me &#8216;model plugin variable&#8217; I =
shall know that you=20
mean exactly that&#8230;. &#8216;model plugin =
variable&#8217;&#8230;and it was under my nose all=20
the time &#8211; thanks for pointing it out&nbsp;!</P>
<P>I have regenerated the plugin.xml of the app but the=20
requires&gt;import line carries a warning that the plugin =
dependency=20
cannot be resolved.</P>
<P>To recall - having written my plugin, I simply copied the =
plugin.xml=20
from that workspace to the folder where the folder of binaries =
called=20
&#8216;lginterface&#8217; lives (yes, it has the same name as =
the id of the plugin).=20
Back in the &#8216;host&#8217; or dependent app (in an EMF =
workspace) I found that=20
the plugin view doesn&#8217;t show the plugin I&#8217;d created =
in the other=20
workspace (and had pasted into the correct folder to find the =
binaries=20
folder). </P>
<P>It seems I&#8217;m missing a plugin =
&#8216;registration&#8217; step? When I tapped in=20
the name of the model plugin variable how is this associated =
with the=20
plugin with that id? Why doesn&#8217;t my plugin show up in the =
plugin view=20
when I&#8217;m in the workspace of my dependent app/plugin?</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans=20
le message news: <A=20
=
href=3D"mailto:cof5h3$bk5$1@www.eclipse.org">cof5h3$bk5$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
would expect your plugin.xml to have:<BR><PRE wrap=3D""> =
&lt;runtime&gt;
&lt;library name=3D"xyz.jar"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</PRE>and then in the same directory as that plugin.xml I expect=20
to see an xyz.jar.&nbsp; (The name's location is relative to =
the=20
plugin.xml, and should be either a jar or a directory =
containing=20
.class files.)<BR><BR>Once such a plugin exists, you can set a =

variable like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:000f01c4d6e3$1092e880$d7a70950@l8t7p3"><BR></BLOCKQUOTE>And=20
if you remove the plugin.xml from that project and renenerate =
it,=20
you'll end up with the extra dependency:<BR>
<BLOCKQUOTE>&nbsp; &lt;requires&gt;<BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.core.runtime" =
/&gt;<BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.emf.ecore"=20
export=3D"true"/&gt;<BR><B>&nbsp;&nbsp;&nbsp; &lt;import=20
plugin=3D"lginterface" =
export=3D"true"/&gt;</B><BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.emf.ecore.xmi"=20
export=3D"true"/&gt;<BR>&nbsp; =
&lt;/requires&gt;<BR></BLOCKQUOTE><BR>Ian=20
Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcoc740$7ab$1@www.eclipse.org"><PRE wrap=3D"">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;?eclipse version=3D"3.0"?&gt;
&lt;plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName"&gt;

&lt;runtime&gt;
&lt;library name=3D"lginterface"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the =
id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user =
library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the =
plugin.xml and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BLOCK=
QUOTE><BR></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_0019_01C4D6EB.730FF220--

------=_NextPart_000_0018_01C4D6EB.730FF220
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <000f01c4d6e3$1092e880$d7a70950@l8t7p3>

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCALWAlEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1LTrG
3utLk1jU4jNAqNLFb5ymxQTkjOGJ6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOP mVWJHIPGM8GpbY7f
hyT6ac5/8cNcfrF2+l3+sCx1a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCn ClKo3GLs7f1cHJRt
c9DTRdFkjWSPTNPZGAKssCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2 NqJ7j7cbaCIAY3S3
flLwWUHBcHaWUHGNy5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKg Zi6ksRGrS5AXY0xd
0mxvc6j+wtH/AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQ x3tnBcWthqUsdqI1
S4maNchmn3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6Xyk RSZGwY2UsWIO8EAB
MbixHaf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/ AGx/Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtGV+cB
QDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2Oq2em zQzW7ySTecbfc6uJ
FCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4lwXmAW4zu xDgquR8+FAO8/sLR
/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2rHTZX0i3vLq8c WzqLpYIrWUJGPMPl
ErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIsaWz4WHzQVJ+1qMmR v9WTj5sKAdJ/YWj/
APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8V6JaajELSz0+PU9HEtq0 TSyu0j2k+Vl3KFA8
5VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+tCTEjKv221woAmdpRiQZcpFj AyuXAUA7u9svDWmw
ia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHvDcdzAks1vp9zcuRCnmIBK3Awsb5B 6r90Z6etaPiH/UWn
kf8AIS+0f8S/P3fO2P8Ae7bNnmbu+3O35ttY6/2N59t9i/5Bv2iLz8b92/ev 2Xbu5+z7923y/l3Y
x8vmUAVLnR49MkCXthatEzBUuo4FCEnoGHJU/p79qd/Zlh/z5W3/AH6X/Cu2 mhjuIXhmRXjcbWVh
kEVyV5ZyaNMscjM9k5xFM3JQ9kY/yPfoeestDTK39mWH/Plbf9+l/wAKP7Ms P+fK2/79L/hVqipK
Kv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/sy w/58rb/v0v8AhVqi
gCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7 MsP+fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v0v8A
hVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf 8KP7MsP+fK2/79L/
AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36 X/Cj+zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9 +l/wo/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD/nyt
v+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/P lbf9+l/wo/syw/58
rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/ z5W3/fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/wo/sy
w/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8A Zlh/z5W3/fpf8KKt
UUAaei2qXvgu2tJCwjntPLYr1AZcHHvzTbrwtFfRCK71C6uIw24JNFbuAfXB i68mrWkzx23haxuJ
m2xRWUbu2M4AQEninSa7ZRRtJIt4iICzM1jMAAOpJ2VptqiCW30q2h0t9OlH 2q3k8wSi4VW80OSW
DAAAg7iMYxils9J03TkgSx0+0tUgR0hWCFUEauwZwuBwGYAkDqQCaszSeVBJ JjOxS2PXArlv+Equ
f7f/ALM22H+v8nHnHzv9T5u/y/7v8Oc9aqMHLYTklubD+GtBkuLS4fRNNaey REtZGtULQKhygQ4y
oU8gDGO1WE0nTY0RE0+0VESJFUQqAqxNuiA44CMcqP4TyMUyC7madEk2EOSP lUjHBPqfSuc1XxjH
pmrzWDy3jzIBIUtrCWfahZgpJRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESE PIYEDztFgo8hCjc4
Ybs9jyMVci0LR4ft3laVYx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8 dH+FH9qXn/Pb/wAd
H+FTzIdh+q+D9M1nxDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6F o9vLcyw6VYxyXUqz
3DpboDLIrb1diB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBB FOzFF2lZGdRj3zG2
fqKOZBY6GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tiki v9KsbuOSUTuk9ukg
aQKEDkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY 3F9Bt8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/Z291
Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BVmigA pk0MdxC8MyK8bjay
sMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f+7cqY8/Q ng/gTXcUUmkO5w39
p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Gj+07D/n9tv+/q
/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xruaKOULnDf2nYf8A P7bf9/V/xo/tOw/5
/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8a7mijlC5w3 9p2H/P7bf9/V/wAa
P7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf22/7+r/jR/adh/z+23/f1f8AGu5o o5QucN/adh/z+23/
AH9X/Gj+07D/AJ/bb/v6v+NdzRRyhc4b+07D/n9tv+/q/wCNH9p2H/P7bf8A f1f8a7mijlC5w39p
2H/P7bf9/V/xo/tOw/5/bb/v6v8AjXc0UcoXOG/tOw/5/bb/AL+r/jR/adh/ z+23/f1f8a7mijlC
5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFHKFzhv7TsP+f22/7+r/jR /adh/wA/tt/39X/G
u5oo5QucN/adh/z+23/f1f8AGj+07D/n9tv+/q/413NFHKFzhv7TsP8An9tv +/q/40f2nYf8/tt/
39X/ABruaKOULnDf2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tO w/5/bb/v6v8AjR/a
dh/z+23/AH9X/Gu5oo5QucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHK Fzhv7TsP+f22/wC/
q/40f2nYf8/tt/39X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+ NdzRRyhc4b+07D/n
9tv+/q/40f2nYf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb /v6v+NdzRRyhc4b+
07D/AJ/bb/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Giu5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8AIvaZ
/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa41C3t 5NNVC1ta+ar4M24M
SpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07SykhWByp6e /UdRpTmovUicWzC8
CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK1S8h8iFImsb1 YVDpLMzB1Mqbxh06
hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUtYurDT5XkuVSNWkCZ Ku5ZiN3RT9fyoqN1
Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7IDgLIeDtyyg5xmWXbz+m+E Zn1WCKfR5v7GW5im
e3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6TqUyQwYEru6ojwyru2k85zjBA yOc49DxW1fSaRpmk
jUr2OSOAmNcRrJKxaRlVVCoCzEswHA71nKnKO5b0dmjx2XRLixfQI9R0X7dF N9lNzaDyn+0Xgtrv
znYOwVn/ANWS5PzbRySKnn8KatKreZbTfYz5TNawtA7mISXjJAElzEfLE0HB +UbPkJKrXr2mjS9V
t2nt7W7RFcoRdW01u2cA8LIFJHPXGOvoauf2XZ/88f8Ax4/41NmK5zXgOyk0 7TobWUTKUjchJnRn
RS+VU7AEGAQNqjauNoJABPY1BBZW9u5eKPaxGM5J4qLU9Sh0q1S4nWRke4gt wEAJ3SyrEp5I43OC
fbPXpTSEXKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv /QBWhQAVy99FO2oX
qpqes6bm43g2NksqygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeER vNiKIFmUoMZKsOAB
ycAcY5zxtZ3UsVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky 7pW2KIldmZsE9EyT
wDz7VdOfJK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4weno PinT7jU/BsVta209
zIJrKUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZ KqPujp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5EudgOT
s27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2wsYy pUc5fPUWupa7eWcF
1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpGfwsTTW5w GjeB73S7HSzBpEFt
dWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvDVzpXh/8As2Fb TT3vG/cR/wBoMLi0
lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G+aaLzN69OMeTJyeD t4JyM6FWI8/8BeFr
/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIcB+hLuR6BRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAZ+hf8i9pn/X
pF/6AK0Kz9C/5F7TP+vSL/0AVoUAFFFFABWTrquVsmRrmMLO2ZbaLzHizDIo YLtYcFh1BHqK1qKA
OF8OaVd2CwWsup6ndu+o3VxvlsxGsCyG4YOD5KDc3mKWByN3CgDiuqvY2QRl ppJAZOFYLheHPGAP
UDnso75J0KZLEkybZFyM564x+NNbiZyGjWLy6Hp8n9jaXJutozveTDNlRyf3 Z5/E1qeEzu0a0PrZ
wH/x01J/wiHh3/oDWf8A36FaltaQWcQit4hGgAUKOwHQD2HpWNOnyFNtnO2e najF4obWn0+Bftks
lrLGNu6CFA2yfdn5mk8uMMAM7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+h f8i9pn/XpF/6AK0K
z9C/5F7TP+vSL/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAZ
+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFAB
RRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XWtKi0LT45NTs0dLaNWVp1BBCj IIzV7+3dH/6Ctj/4
EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaFFZ/9u6P/ANBW x/8AAhP8aP7d0f8A
6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY/wDgQn+NAGhR Wf8A27o//QVsf/Ah
P8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/AKCtj/4EJ/jQ BoUVn/27o/8A0FbH
/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDAhP8AGj+3dH/6 Ctj/AOBCf40AaFFZ
/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3 R/8AoK2P/gQn+NAG
hRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/ AMCE/wAaP7d0f/oK
2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o// AEFbH/wIT/Gj+3dH
/wCgrY/+BCf40AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFF Z/8Abuj/APQVsf8A
wIT/ABo/t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQ n+NAGhRWf/buj/8A
QVsf/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDo K2P/AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/wIT/G
j+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaF FZ/9u6P/ANBWx/8A
AhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY /wDgQn+NAGhRWf8A
27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/ AKCtj/4EJ/jQBoUV
n/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDA hP8AGj+3dH/6Ctj/
AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBB Wx/8CE/xo/t3R/8A
oK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/ AG7o/wD0FbH/AMCE
/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/j QBoUVn/27o//AEFb
H/wIT/GigDlTPNcOVtBGEU4aaTJGe4UDGfQnI/HBpfLv/wDn5tv/AAHb/wCL rI/tO+tv7J0/TrG2
uJrmzkuHa4uWhVQhjB+7G5JJlz26GpLHxho1/aefHcOpWCKaSIxMXjEioyKQ AfmYSKFUEljkLkqc
ZlGn5d//AM/Nt/4Dt/8AF0eXf/8APzbf+A7f/F1izeLrVNUsoo0uZLaaC4aV UsZ3njkRodoaMLuQ
FZSfmUdVOcEZkg8VWhnvxLJ5sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjI BreXf/8APzbf+A7f
/F0eXf8A/Pzbf+A7f/F1nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk 9ASLUOt6fc3kdrbT
PcM6hhJBC8kQBXcMyqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8A tVL5d/8A8/Nt/wCA
7f8AxdUr7UP7J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0 X2eZp0lUMqkKditv
3Og27ed67dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJL lmZmXyEs5mnUgAnd
EF3qAGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6n gA4ANPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0IJzp
/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5tv/Ad v/i6PLv/APn5tv8A
wHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+U4tafqtp qfmC3MyvHjfHPBJD
IAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqXy7//AJ+bb/wH b/4uoYGuk0C2azhh
muBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fULaGdcxSNEhkAwhl27 A2TgAkEkjjkUAaHl
3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fLBbTRTPItzaNewhIXZpIV CEsFAzn94ny4yc8C
oD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5KgfOv94ZALvl3/wDz823/AIDt /wDF0eXf/wDPzbf+
A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjhk8mOSRFYIZMFUY7hhWbJ3L13DOnp +q2mqeYbQzOiY/eN
BIkcgOcFHZQsinGcqSMEHuKAG2zX9xawz+fbL5iK+3yGOMjP9+pfLv8A/n5t v/Adv/i6zLvV/wCx
vDthPshO9Y4/MuJvJgi+TO6STB2LxtBwcsyjvkPTxJaQWtu+oSQpLLGJmNmZ LmGOMk7ZGlCAKhAJ
3MFHDckKTQBoeXf/APPzbf8AgO3/AMXR5d//AM/Nt/4Dt/8AF1WvPEGm6fNc R3ks0HkRtKzyW0gj
YKm8hH27XYKCdqknCtxwcCeINNlkt0hlmnNxgxmG2kkG0sVV2KqQqMQdrthW AJBIGaALPl3/APz8
23/gO3/xdRW7X88Zfz7ZcO6Y8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje 3kiViVG4x7wN6gsO
VLAZXnkZfd6jLpeiPcwW6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzb f+A7f/F0eXf/APPz
bf8AgO3/AMXWZa+J7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLV MnibSJElcXLhUXer
NBIomXIUGLK/vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8 B2/+LrPg8WaNcXUd
qtxMtzLI0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLk KDFlf3wJZQPL3ZLr
j7y5ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5 LeNReGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/ABdZ
9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM94rtI IlgNhOJiSrMCItm/
aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4uqyeINNkk t44pZpnnxhYraRzH
8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksck8cbPGxAEigO DuUkfMp6EZANby7/
AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7DW9P1KdobWZ2bbvQ vC6LKmQN8bMAJF5X
5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6j/zxtv8Avlv8aP8AhKdR /wCeNt/3y3+Nalp4
Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5AglEhk3ZxjjGPRm9a1cEiFJlb /hKdR/5423/fLf40
f8JTqP8Azxtv++W/xok0r53SBmlZHKMCmMnBPHJz901D/Z8m0ttXAz0YZOOp A7j3HpUWRWpN/wAJ
TqP/ADxtv++W/wAaP+Ep1H/njbf98t/jUTaZMjbSik5wcMDg++Dx36+hoOmy hWbYNqjJYMCO/f8A
A/jxRZBqS/8ACU6j/wA8bb/vlv8AGj/hKdR/5423/fLf402XSnjkkQYcq+0E EYxzyeeOn+NM/s2X
cRtUYGdxcBfzzj1/I+lFkGpL/wAJTqP/ADxtv++W/wAafH4pvCQJIoVGeWVC cD6bhnt3rOltSVXB
kVd6lzFt37Nw3Bd3G7bnGeM4zWlqPh1LTSGv11RntbpANKeFP3k7uhdDKGXC qFBJxy2MjacISyC5
r2N9NqCFoLy3yPvI1swK/wDj9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1F dRpmpi8XypcLcKOR
2Yeo/wAO1S1YaZP5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6n Npsuq2OkQ3OnfZnu
LfF0wuJwELJiIRkDecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb /wAB2/8Ai6xdQ8Wx
Wzym2jtprZVgK30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmu J5IY444bstC3myrG
jCXZkrhw2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxp b3P9pRfZ7m2uRbSQ
2++43uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5 gw+fbgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlRuUk4
INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPzbf8A gO3/AMXR5d//AM/N
t/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTmi/8AENnZ aGmrq6PameKJ3kby
xGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz823/AIDt/wDF 1ip400qbVmtbe9sZ
bVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlrfbbtZcO9lOjKyNEO UKAhT5v3zhRtxn0A
NPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCLrPbxZoiQyTS3vkwJtPnT RPHG6s6oHRmADpl0
y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKIyilSAQT5sfbjPOMHAAqtftdS QefbfIivu8huclh/
f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrcf9cIv/QpKz11yaHUtTtb+y2JaRxT RvaGS5eRJHkVcosY
YN+7yQNwGevFAGh5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVYeIdKa1 urkXX7q1tvtU5MbZ
jjy4ORjIYGKQFfvAqQQDU39q2g1P+zmMyXB+6ZIJFjc7d2EkK7GbGThSTgN6 HAA/y7//AJ+bb/wH
b/4ujy7/AP5+bb/wHb/4usJ/F2zxNPpHkWbeTcx2+xbzN0+9EbesGzlF8z5j u4VHPbFalt4g0278
3yJZn8uMzDFtJ++QdWi+X96vI5TcPmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5 +bb/AMB2/wDi6z28
V6SvlDfePLJvxDHYTvKuzbu3xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJ IIXkiAK7hmVQUUlS
CASCQyn+IZAFia/lknTz7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLq lfah/ZOma7qXleb9
kV5/L3bd+yFWxnBxnHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yA uAMHPXABoeXf/wDP
zbf+A7f/ABdFZ/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snj FvcQLIpZ/KO7noQI
yOn8X5z3GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2l GptChQKqlVPRR/sH
1FW/7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQ VwLdOrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP/jg/
+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7sJReQ hLO2jhP2aBoZLopE
IwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8AxuiwFC+0 /wDtbTNd03zfK+1q
8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIkhDRs7FwzRpuy 3KrgbSSTsppUyM7L
rGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp4Vn03ybjTrjTrW8T zVIi00JbbZPL3ARI
6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP8jzZZJN0Pzr5b/vcFud2 xDgYrrP7Ouf+gz/4
4P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7B9ohfF7Nd7bi382CTzJJH2SR 7hvUeZkcj5kVu2Kz
oPA8ttpN5YQahbRrfWk9rcBLMqiq7zOnlKH+QKZ2BBLZCgDb1rqf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwHO6h4Plv7S5sW1FEsma6mgUW5Mkcs6yqxZt+GUefIQoVT935u Dndi0/y9butS83Pn
20MHl7fu+W0rZznnPm9McY9+Jf7Ouf8AoM/+OD/43R/Z1z/0Gf8Axwf/ABui wFOOO/k0OyGn3Ntb
zeVGS1xbtMpXb0wHTnOOc/hWE3gOJJ7DyLi2aGza1KSXdoJrlFgKYSOUMuxW EfI2nl3P8WB00WlT
QxJFHrGERQqjaOAOn/LOn/2dc/8AQZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLK qhzIY3XPzo0jzFhx
lZSmQAMUtN8H3WkTPd2F5p1vdtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/ AGdc/wDQZ/8AHB/8
bo/s65/6DP8A44P/AI3RYDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/Cqf IjJUqx+983Ixr6Hp
t1pFjHYSXcM9pbxpDahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAb o/s65/6DP/jg/wDj
dFgKccd/JodkNPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLc Pd6es5BaWSVjAGOI
zumf7wkGAmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAb osByeq+Af7Su7iX7
XZp5v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcx zQGTekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8eZnyf
n68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nXP/QZ /wDHB/8AG6ZHpU0S
lU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3rxuSMYA5 jPGOd354r+Ep4rCF
GvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ/wDHB/8AG6P7 Ouf+gz/44P8A43RY
DnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2QwOQcqILLwHb2FnLb QxaKy+QtvF5ukK3m
IGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8bo/s65/6DP8A44P/AI3Q BgReE5o7jTpG1Hc1
rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/+Qrcf9cIv/QpKd/Z1z/0Gf8A xwf/ABumDSphK0o1
j52UKTtHQZx/yz9zRYDKPh26Omy6L9vhGhvbParCLY/aEiZCoUS79vy5ABKE 4Azk5Ykfh26k1m21
a/v4ZbuGRCRBbGKNkSOdFXBdiGzcMSc4IAGByTsf2dc/9Bn/AMcH/wAbo/s6 5/6DP/jg/wDjdFgM
BPCTx6hBcLeQxiO5knaWGBo7lw07zeUZQ+DFlwCjKQcE8EgqyPwfL5dhDLqK NDpqww2YS3KsIkmh
kIkO872It0G4BQMsdpyAOi/s65/6DP8A44P/AI3VXUlfS9NuL6fWHMUCF2VI wWOOw/d9T05osBm+
HPCNv4dnDQrYhY4Ps8TQWKxSumRzNJkmRvlHI2gksSp42ksXmX96f+m3/sq1 uvpl0jsjaxhlOCNg
6/8AfumRaQsZkY30cjSNvZmDZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAP SX27YHt0qK7mvdQm
ie7eMiJWChA/fH9529O2K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2 kkmaRizA7gFLZ27g
RxTVXCAbDuVSgOeMHOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZ bOEnkaJWAZyxO7k9
Rxxx1NRy5lQqQ5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJ DlXd1QhnbcxDd8EH
Hp96jed5YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0a Bqc3cWTyxBUMYIdG
xKm9GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtl tzAMNz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf/wCJ
ougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZlQDCr 5vmYIXgAlM4ABJOW
Og2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2w0G40XS2 tNIuraGRp95kuLdp
V8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QKSN9oE7rsJ4Vj uUAk4BGd2OdX+zrn
/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3FmtlBc/arW0uLQTQ ROwcOCmRuQ+YWC5B
Vu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAEJJwY2VsjJJLHcN/+zrn/ AKDP/jg/+N0f2dc/
9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpxW3IKKkkUi+b858w5gizt2ZG7 pkbbWl+Hbq012XV7
y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2xzsf2dc/9Bn/xwf8Axuj+zrn/AKDP /jg/+N0WA52XwhLP
o9ppdxc2Nzbac0ZsUuLAyKFVGjAmUyYkO1s5XZhgDjHFaC+H0TQbbS0khiEN zDcZgt1jjyk6zFVR
cBVJBA5JAOSWOSdL+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bosBj6r4Y/tL Wf7R+0Q8RonkT2/m
xttjuU+YbhlT9p5HomM/NkR6d4YuNNntbmLUEM8TSKyGFjAsLmPdHChkJiA8 lNvzMq5bC4IC7n9n
XP8A0Gf/ABwf/G6P7Ouf+gz/AOOD/wCN0WA52PwfL5dhDLqKNDpqww2YS3Ks IkmhkIkO872It0G4
BQMsdpyANCTSftHi6PUpINsVvbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ /wDHB/8AG6P7Ouf+
gz/44P8A43RYBsf/ACFbj/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzN qyQmQl+ZWb74G5Yz
j5TncGlTCVpRrHzsoUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uG WWFjZXMsxEEBijZX
lMwjVNx2KsiwsOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjb wqIO2a3/AOzrn/oM
/wDjg/8AjdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYt oEm/G3MKk/JnBIyO
CM6y8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkISzto4
T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH /wAbosBQvtP/ALW0
zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2RWt5m2lf 3sQK7xjBHIwyof4c
VpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSMFjjsP3fU9OaL Bc53/hBf+nPwj/4T
v/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJTxHqdqmoaiJr6+Wz nvzcW01qIreOCEzb
PLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbmf7TDEBlVwMOwJPHpjpz1 xTa21BtMudNPhVja
XXnedH/acHzeazNJzvyMl26HjPGKGtQQl74lvLJLh30tFFlaC+vUe5w8cJMm 0IApDybYmyuVUHAD
MPmEMnjCWzgmvr7TkTTlnu4InguDJKzW4lLZQooUFYHxhjyVHckSX9jfalOs 114WlZtuxwmrRIsq
ZJ2SKsgEi8t8rgj5m4+Y5pWOg31sZ3ufDUt4009xKUn1SJ4lEzuxAiaQop2u VJABILf3iKVh3JoP
GF/K0EH9gTC6nuVgjDGWKI7o5XzumiRjt8o7gFOAwI3H5am03XdRWBptQghe 0bVprNLlJvnVfPlj
TcgQfxiKMYJzu3EjBpltpl5azRTJ4XuJJ4pPNSafWY5pAdjoBueUkqBI+FJw CxIGTmmXumarcWd9
bQ+HpYI79l+0p/acLIyFsyqqeZhC6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9z w/NnfFuPlv0GNybW
weRuweRV2sn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17 /oW2/wDBjb//ABdH
23Xv+hbb/wAGNv8A/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMb f/4uizC5rUVk/bde
/wChbb/wY2//AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi 6Ptuvf8AQtt/4Mbf
/wCLoswua1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+2 69/0Lbf+DG3/APi6
Ptuvf9C23/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/ APF0WYXNaisn7br3
/Qtt/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH 23Xv+hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZP23X
v+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL+oqb7br3 /Qtt/wCDG3/+Lqhr
Sa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9kkFxLgAloUcNK oB43GMOB05I5HUYc
viS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi5IJC1sXGo61NcyyR eHJDG7ll339urYJ4
yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3pKGK/KuQTglQTkgUWAZ4a 8Sf2rrV1GizNb3ub
uAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriyWHRrloZlt/OaNJXMTyxpIMFY /LKqJFyWdTgMdvTc
qaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG27YowRnBKAnJGafBo09s9sYfCUqL brGqRDWIvLPlgBGZ
PM2uyhVwzAsNq8/KMFgOtorJ+269/wBC23/gxt//AIuj7br3/Qtt/wCDG3/+ LpWYXNaisn7br3/Q
tt/4Mbf/AOLo+269/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23 Xv8AoW2/8GNv/wDF
0WYXNaisn7br3/Qtt/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW 2/8ABjb/APxdH23X
v+hbb/wY2/8A8XRZhc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Los wua1FZP23Xv+hbb/
AMGNv/8AF0fbde/6Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+26 9/0Lbf8Agxt//i6L
MLmtRWT9t17/AKFtv/Bjb/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Q tt/4Mbf/AOLo+269
/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF 0WYXNaisn7br3/Qt
t/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23X v+hbb/wY2/8A8XRZ
hc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/ AMGNv/8AF0fbde/6
Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6L MLmtWH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/Vf8A
vq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SGeJyk kcl5aKyMDgggrkEH
jFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvLrEumeGbi 9lDXlzHPJbwRsQhn
lMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlvbW1ljDAgNtM0 o3YwSqkcdb17oCaz
ptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4Ctob9JbbUrxbWK7N zFBNFNOUzPaTuu92
JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A 36b/AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UATUVD9
pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+ FAE1FQ/aY/7sv/fp
v8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/u y/8Afpv8KPtMf92X
/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KP tMf92X/v03+FAE1F
Q/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03 +FAE1FQ/aY/7sv8A
36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY /wC7L/36b/Cj7TH/
AHZf+/Tf4UAFp/x5wf8AXNf5VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+F ICaioftMf92X/v03
+FH2mP8Auy/9+m/wpgTUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj /uy/9+m/wo+0x/3Z
f+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo +0x/3Zf+/Tf4UATU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/ALsv
/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9p j/uy/wDfpv8ACj7T
H/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv 8KPtMf8Adl/79N/h
QBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl /wC/Tf4UATUVD9pj
/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNR UP2mP+7L/wB+m/wo
+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UActRRRWZZf8A Bv8AyL0P4f8AoC10
Fc54QkZPD8IWF3GF5Ur/AHF9SK3fOk/59pfzX/4qtCCaiofOk/59pfzX/wCK o86T/n2l/Nf/AIqg
DJv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjSKiKiuhJzE5LFhjCgBtxKxnxMlp eCyuoJ5vIlhtLzUI
Y1SCO5kCbU2FzJ8xljxgMB5gy3DETalpb31wt3bTahpt4EEbXNp5JaSMEkIw kDqwBJIJGVy2CAzA
0z4ZR7wTy3GpyRvLDc3MDGAJdXEQQJM5Chgw8qI4Qqh2D5cFgQCG08fWVxYW 97caZqVlBc26XcDX
AiPmW5eNWmOyRgiIJo2cvtIUkgHacXP+Eus21yPSYbO+nmklliSWKINE3leU JW37sBVM20k4+aN0
5barYuj+Er/S/CsNvcM2qapb6OdPgjvxEbSLciho8Iqs0TNHGDv3NtXjGTnc 07QrfTZdNliivHks
LSW1V5HjJm81o3kkkP8AFIzRBi3GSzE5J4AM2w8eQXOnadcrp99dQz/Y4ri8 hjijjhmuBEUVkaUu
OJoydu8ANjcSDjLsPH2oL4M0a4udMuzq11b2MiiYQ4vleWCKZ49kmFP79SA+ zl14wGAc/gq/tLjT
bDSnuYNFgeymuvMuImaaS2MYUmPysklYIlysqAYzsOCH2G8IWLWGlWmzUANL shZ2sgki3LteF0kP
YurW8bDjaeQVIOKALXijU9U0/wAG3ms6cILW6tLR7t4L6HzshI2Yxny5AA2Q BuDMBg8HrWfq3juw
8JSwWHiC8glvvK8+4lgEduiRFmCsI5ZS78K3yx+Y3y9BuUHav9P/ALT8PXOj XgvJI7q0e1mnzEJG
DIVZuPlDHJPC4z2xxVfUNF+3aib2OfU7KSWJYLkWkkS/aIlLFVLHLJjzJPmj KN855yFwAVdf8Xf2
bpOsta2c51LT7S4uDFNF8kaxxsySOQwBjcqAu0ljlhgGOTZ0FjcS3dnHPNZT 2UjZzBOULpgkclGZ
eevBPX14rFufDdpePdPdR6hMb1JYbvdMoE8DqVEJAIARQfl24YHcc5eQvqWK 3NpZxwTPeXsi5zPP
5Id8knkIFXjpwB09eaAL1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8A PtL+a/8AxVHnSf8A
PtL+a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8A xVHnSf8APtL+a/8A
xVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8A PtL+a/8AxVAE1FQ+
dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8A xVAE1FQ+dJ/z7S/m
v/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8AxVAE1FQ+ dJ/z7S/mv/xVHnSf
8+0v5r/8VQBycFzdmG8dpJY4IY0McrSsqljLIrLy6rwFTjIxnvkCl8O6leXm slPO+1W6KRIYpI2E
RIO0ti5c4OCANvXuMGtqLT7OS1X/AIluGkQbpYtqO3Q53AhuTS2emW1hcm4g tb3zCpX95dtIuPZW
kIB464zVpwUbW/AzcJc17mtRUPnSf8+0v5r/APFUedJ/z7S/mv8A8VUGhNRU PnSf8+0v5r/8VR50
n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v 5r/8VR50n/PtL+a/
/FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50 n/PtL+a//FUATUVD
50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a/ /FUATUVD50n/AD7S
/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD 50n/AD7S/mv/AMVR
50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S /mv/AMVR50n/AD7S
/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR 50n/AD7S/mv/AMVQ
BNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S /mv/AMVQBNRUPnSf
8+0v5r/8VR50n/PtL+a//FUActRRRWZZf8G/8i9D+H/oC10Fc54QMo8Pw+Wi MMLyzkfwL7Gt3dc/
88ov+/p/+JrQgmoqHdc/88ov+/p/+Jo3XP8Azyi/7+n/AOJoA43XvEOs6R4y uTbr9s02HT7ZPsGU
j3XM8k6xP5hBIy8UUWOg87ecBDmnpHjDV7DQrtb8R6vPoyXM+qXrsLZnhS5u I1MUaIVZ9ts/ykoP
u/MckjtktPL1Ga/W2iF1NFHDI/nN8yIXKjGMcGR/z9hWXL4S0yY5bT1AZ5Gl VL2ZFn3yNIyyqMCV
C0kh2PuUb2AADEEAwdc8X3lvc6fqptfK0K01C9SV4romef7PbXYdWi2hdu+F iuZDnahIBPyyW3in
UNX1jQoZ9Ou9OI1PbJhLhIp0a0umC5miiZiGjBI2kD5DkngbUvhLTJ7/AO2T aesh3yP5D3sxt90i
Mkh8g/ussJHydvJdieSTUlp4ZsrOeG4S0aW4hl85J7m/mnkDBHQDfJlioWWT Ck7QXYgZOaAOV1zx
TrOk3fjJ2vP9Fjimh0w+Un+i3MVilzjoS+8PI3zcL5OOd4FaGt/EQaLfX0f9 nfarWGK4ME8LTbZJ
YYXleNnMIiGPKkU7ZHYMMFfvbdrU/DGn6xp2pWF/psU1rqcqTXafaZF8x1CB TkYIwIo+mPu+5zXv
fBmlahPLLc2DOsvmloRqM6wgyo6SMIgQisyyPlgASXY5ySaAKNz47m0o3Tax pUcUVm8sE5tLozN5
yWxu8KGRMoYR94kHedu3Hz1qeGPEV1rv2pLzSZ7GSDYQzRTrHIGzwpmiiYsN pyAuAGXkkkCafw/Y
3UsslxpltMZbg3MiyTMyvIYPs5JUjBBi+XbjHfGeak0zR4tI802sDNJLgPNc 30txIwGcLvk3NtGW
IXOAWYgZJyAa1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf 9/T/APE0brn/AJ5R
f9/T/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/3 9P8A8TRuuf8AnlF/
39P/AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0 /wDxNG65/wCeUX/f
0/8AxNAE1FQ7rn/nlF/39P8A8TRuuf8AnlF/39P/AMTQBNRUO65/55Rf9/T/ APE0brn/AJ5Rf9/T
/wDE0ATUVDuuf+eUX/f0/wDxNG65/wCeUX/f0/8AxNAE1FQ7rn/nlF/39P8A 8TRuuf8AnlF/39P/
AMTQBNRUO65/55Rf9/T/APE0brn/AJ5Rf9/T/wDE0ATUVDuuf+eUX/f0/wDx NG65/wCeUX/f0/8A
xNAHFW5WX7duaAhEXy1G0yB/NkD8BWb7vl9VI9O5qfw2ty+tlx80KKQ4lBjI yDgqDbR7jxg/NgA8
9q3Rd2stilvcNYSR7FDRyzjnHqCKbY2+l292ZdPstJjuWUqWt2UOV6kZC5xw PyqlOna1tTN05Xvc
yPFl9q8fiHSLDTJNVEc1pdTSppi2nmMUeAKSbn5do8xunOSOwrU/tW7s9Utt Ea2kuriRFeK5klQC
WFNgmlfao2urMBsVcMZEwQN/lu1XQYNZuLe4u4ZVnt0dIpLXUZ7ZgrlSwJiK kglEODnoKE0C0V0l
Nmrzo8TrPJdyvKDEu1MSNlsYLAjOG8yTOfMfdJoc7N8RZVu5rWDSo53kdP7P lEsyQXKNcRQBzI8A
GP38bAxeaCM8/dLSS+PbyKNVOjQG4nlNvbJ9tOxpEu4rSbe3l5VRJKCpAYso JIQ/LWlH4M0qO6S4
WwYtFtEMbajO0cIWWOVVjjJ2xqHijO1QBhAMY4qPV/BlpqdnHBHCtq6XBmEs dzKGAe6juZgCMFS7
xD5gcr/DjpQBi6l42udP15Hu7SRZ7K3ubaeytpnmikneSw8kghAzAC5XJ8ss MuFVuN3WeG9an1zT
pJ7nTp7GaKUxMkscqK/AYMnmxxuVw2MlF+YMBkAE1R4S0wIFbT1kfY6+dLez PKd7RsWMjZcuDDFt
cncvlrtIwK0NN01dJt2htLdQHcvI8t1JLJI2AMu7gsxwAASTgKB0AFAGlRUO 65/55Rf9/T/8TRuu
f+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX /f0//E0brn/nlF/3
9P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xN G65/55Rf9/T/APE0
ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eU X/f0/wDxNAE1FQ7r
n/nlF/39P/xNG65/55Rf9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A 8TQBNRUO65/55Rf9
/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nlF/39P/xNG65/55Rf9/T/APE0ATUV Duuf+eUX/f0//E0b
rn/nlF/39P8A8TQBNRUO65/55Rf9/T/8TRuuf+eUX/f0/wDxNAE1FQ7rn/nl F/39P/xNG65/55Rf
9/T/APE0ATUVDuuf+eUX/f0//E0brn/nlF/39P8A8TQBy1FFFZll/wAG/wDI vQ/h/wCgLXQVznhA
Snw/D5boowvDIT/AvuK3dtz/AM9Yv+/R/wDiq0IJqKh23P8Az1i/79H/AOKo 23P/AD1i/wC/R/8A
iqAOJ1yfXoPHV5caPLJMYNMtYRZSs7Qbp5blRMY17rJHCWbtEJepxWXpGv6x o/h/VIIbz7ZH4eiu
7q4l1LfPPexrd3aKnmBl2MFtsbiHHzj5QFwfRhautw9wv2YTuio8gg+ZlUkq Cd2SAWYgdtx9apze
H7C4ltpZtP0ySS1lae3d7JSYpGbezqSflYt8xI5J560AcT4i8RalEdP8RSi0 fT9P1PURFYrEyys1
tbXqZabcRhvKY4EYxuAyduWsQarrl74k0Cz12yjt54NTEsbARRsyvZ3o5iSe YgAocMWG7JAHyEnr
v+EfsP7Y/tf+z9M/tP8A5/fsS+d93b9/O77vHXpxRY+H7DTIo4rDT9MtI45T OiQWSxhZCpQuADwx
Ulc9cHHSgDlVTVLzxtrH2OPVTJbarbKl0b/FnDAILd5YjAZOWZWlwREfmkU7 gRla/g7xJeQfDyw2
xwH7HLpGnx5U8xzRWe4nn7w898HpwvB5z30dq8LzPF9mR5n3yssGC7bQuW+b k7VUZPYAdqz38MaV
JcWlw+k6Q09kiJayNYKWgVDlAhzlQp5AGMdqAMHS/FOu3EulXUtrBe2uraU+ pQWVlAI54sNb4QyS
TBHws5ycJnZkDnFRwa7r1/4uu9JsDaaeS8sr/b4HuWTZb2JCbVnCqc3LZ2nb 8uQCSWOtpXg210nx
De65FJE99d+YC/2SKLYruHYZjVS+Sq8yF2+Xg8tnYTTkjvGvEis1unzumFth 2yEBy2c8iOMH/cX0
FAHM61fHxB4B0TVVa7sjfXGmSlbW8kiZVnmiV0LoVLDbIw/I4BAxTsGntLRd Yhvb6XUbjxBPZeRN
eSyxyw/bpI2VYmYquyFS4KBSBFknbvB6aTR9K1fS4bKW00i90+2fZFA1oskU TR5jwq5IUrhlwOnI
qS18P2FjqM+o2en6Zb30+7zrmGyVJJNx3NuYHJyQCc9TQBrUVDtuf+esX/fo /wDxVG25/wCesX/f
o/8AxVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/ APFUbbn/AJ6xf9+j
/wDFUATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A 8VRtuf8AnrF/36P/
AMVQBNRUO25/56xf9+j/APFUbbn/AJ6xf9+j/wDFUATUVDtuf+esX/fo/wDx VG25/wCesX/fo/8A
xVAE1FQ7bn/nrF/36P8A8VRtuf8AnrF/36P/AMVQBNRUO25/56xf9+j/APFU bbn/AJ6xf9+j/wDF
UATUVDtuf+esX/fo/wDxVG25/wCesX/fo/8AxVAE1FQ7bn/nrF/36P8A8VRt uf8AnrF/36P/AMVQ
Bx8Qmgt7+adp44jGgjUo6qpErksGyi8h06OCce3Mfha4W68QP5V+pMcZLQPK 0jOp7qBcyBcHbkle
+B1ro7fUkFvGon+6oXi1kbBHGMjg1YhvDPII0mG49N1q6j8yatVvdsZOmua5 jeKdb1mx1HT9M0Ox
+0XV1FNcM/lJLsSIxqRseaEcmUc7+MY2nOVjs/E19d3+lWhGmxPqVvDeLtn8 3yEKbniypxI7bXMb
qQGVZWwfJxJpa5a6VdW9tb+IP7ImgluFSCO/gVleYghQodsFyNwAHPWrFxa2 0KO9z/Z6JNcRO7Sw
AB5tyLGTluX3LGFPXIUDoKg1OJm8c66bhEt7aAWup+VLpV7PaBUML3VvCGKL cMz5S5VvmEJG37vJ
CyTeMteiSKIHTTPd3D2sEn2Z9sTQ38NnI7L5mXDmYyKoK7MbSX+9XVR+GNKh vZr2LSdIS7mffLOt
god23iTLNnJO9VbJ7gHqKj1XwrYazYizuraz8nzRKQtqvzfvkndTnOVd41Lj +LvzzQBxuq+JtUsP
EymSCC81PT4rjTkaCPy0meaXTSrCNn42/aANpkG7Z95N3y9p4X1LU9RsrldY tY7e8trgwsqmMFhs
RwWRJZRGcPjaXJIAbgMAJovD9hBZrZxafpkdqsUkCwpZKEEchBkQLnG1iASO hxzVix05NMs47Owi
s7S1jzshgtvLRckk4UHAyST+NAF6iodtz/z1i/79H/4qjbc/89Yv+/R/+KoA moqHbc/89Yv+/R/+
Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1 i/79H/4qjbc/89Yv
+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqN tz/z1i/79H/4qgCa
iodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0 f/iqAJqKh23P/PWL
/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79H/4qjbc/89Yv+/R/+KoAmoqH bc/89Yv+/R/+Ko23
P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z1i/79H/4qgCaiodtz/z1i/79 H/4qjbc/89Yv+/R/
+KoAmoqHbc/89Yv+/R/+Ko23P/PWL/v0f/iqAJqKh23P/PWL/v0f/iqNtz/z 1i/79H/4qgDlqKKK
zLL/AIN/5F6H8P8A0Ba6Cuc8IRs/h+ErM6DC8KF/uL6g1u+TJ/z8y/kv/wAT WhBNRUPkyf8APzL+
S/8AxNHkyf8APzL+S/8AxNAHC63/AMS74h3/AIkTj+y9Ks/tXvZvLded/wB8 7Ul4BY+TtH3zWP4V
169g0XQLZdU8q6ji0u3tNI2x/wCl2rw2/mz7Svmts8yf5kYKPJ5B2vn0K61f S7HUYNOvNftre+n2
+TbTTxJJJuO1dqkZOSCBjqa0PJk/5+ZfyX/4mgDhfDmreIjZ6C327+17rV9E OoNHftHbpHIpt8hG
hiyFInfhlc/KoBHJPN+JzNpVj8QNbnjjiF4jadqKRuXVGbT4PIYMQCwWV2j4 UZ+0bmwE49amK2yB
579okLqgZyigszBVHI6liAB3JAojKzPMkV+zvC+yVVKEo20NhuODtZTg9iD3 oA4Wy1LQbvwprOkX
fiHTbOeHU76S4Sa4T92v2+QgTIWBMTkorKSNyvtyNwNRlrP/AIVP4xjsLbSk tYrS7VLrSbcQ215/
owJkRQWHBJjJ3NzEeR90eheTJ/z8y/kv/wATUc5W1t5bi4v2hgiQvJJIUVUU DJJJGAAOc0Aec3uk
Re: building a plugin for external binaries (fao Ed Merks) [message #389612 is a reply to message #389611] Tue, 30 November 2004 09:39 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------020304080308040807060102
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

All I'm really doing is tea leaf reading. :-(

How about zipping up your plugin(s) and I'll look at it to see if they
look right? Send them directly to me if they are private...


Ian Ward wrote:

> Ed,
>
> I haven't quite followed that. At one point you seem to say that f has
> to have f in it?!
>
> My runtime/library (quoted in my plug-in) points at something named f
> and I want to access B.class - the folder holding B.class is indeed
> called f...So where did a come from?
>
> I'll summarise..........
>
> My import statement says 'import f.B'.
>
> B is on the path f/B.class relative to the folder where I've put my
> plugin (so the plug-in can see f).
>
> Can you explain what I need to do in these terms?
>
> Thanks
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389614 is a reply to message #389612] Tue, 30 November 2004 11:31 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0019_01C4D702.7830FF80
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_001_001A_01C4D702.7830FF80"


------=_NextPart_001_001A_01C4D702.7830FF80
Content-Type: multipart/alternative;
boundary="----=_NextPart_002_001B_01C4D702.7830FF80"


------=_NextPart_002_001B_01C4D702.7830FF80
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,

Here is the zip with my (renamed) plug-in.xmls. I'm not sure what you'll =
see, there isn't a great deal to go wrong now I've got the appropriate =
requires/import in the plug.xml of tefl (that's the 'client' or =
'wrapper' which needs to call the classes in the directory lginterface). =
As I said, I think that it has got past finding lginterface (my f) and =
it gags at B.class - and that is because the lginterface plugin it =
recognises is not the lginterface plugin which can point at where the =
B.class is to be found.

Of course, I'm not an expert - but it seems to me that I'm missing =
something in the configuration which allows tefl to use lginterface =
'in-situ', as I tried to say in my previous-but-one post.

But I've got my fingers crossed that you hit it, I don't mind if you =
find I've screwed it up - eventually, I need this to be fixed :-((

Ian

BTW, am I going to have a problem as well 'cos the B.classes I'm trying =
to get at are a jni for a set of c files?!

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coi0ne$gc2$1@www.eclipse.org...
Ian,

All I'm really doing is tea leaf reading. :-(=20

How about zipping up your plugin(s) and I'll look at it to see if they =
look right? Send them directly to me if they are private...


Ian Ward wrote:=20
Ed,=20

I haven't quite followed that. At one point you seem to say that f =
has to have f in it?!

My runtime/library (quoted in my plug-in) points at something named =
f and I want to access B.class - the folder holding B.class is indeed =
called f.So where did a come from?

I'll summarise..........

My import statement says 'import f.B'.

B is on the path f/B.class relative to the folder where I've put my =
plugin (so the plug-in can see f).

Can you explain what I need to do in these terms?

Thanks

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cohjq8$m73$1@www.eclipse.org...
Ian,

So it sounds like you have a directory with .class files not a =
jar. If your runtime/library points at a folder f, and you want to =
access class a.B, that folder better have f/a/B.class in it. It sounds =
like maybe in your case the folder is called "a" and only has B.class in =
it, which won't work. =20


Ian Ward wrote:=20
Ed,

I seem, somehow(!), with your suggestion, to have managed to fix =
the warning in my 'wrapper' plugin.xml - it can 'see' the plugin, or at =
least A plugin, with the right name, lginterface - I presume it's the =
plugin I've created in that workspace. (I am in the workspace of the =
'wrapper' - which I have previously been calling the 'host' or =
dependent).

My 'wrapper' code now has an error on the same import statement =
but on the complete reference - I believe it was only objecting to =
'lginterface' before - now it doesn't like lginterface.LGClassFoo, =
LGClassFoo being one of the .class files in the folder lginterface (yes, =
the plugin has this name as well).

I notice that, in the plugin dependencies list (required =
plugins) for the wrapper plugin.xml, the plugin lginterface icon is =
slightly different to the others (eg org.eclipse.core.runtime) - there =
seems to be a tiny red (?) dot in the top left corner - that's not an =
error flag is it? - no other signal/message that I can see.

I have checked the java build path for the project and I find, =
under libraries>plugin dependencies, a folder icon, called lginterface, =
but I'm not able to verify anything about this entry. There are also =
some jar entries with full path names quoted but there is nothing for my =
lginterface entry.

I am concerned that the copy of the plugin (the original is =
still in the workspace), which I have placed so that it can reference =
the folder of binaries (eg LGClassFoo) may not be visible from anywhere =
that matters. It seems to me that this may be why the complete reference =
cannot be resolved.

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cofsv5$t6n$1@www.eclipse.org...
Ian,

I expect your wrapper plugin to be in the same workspace. =
Maybe if you try "File->New->Other...->Plug-in Development->Plug-in =
Project" and don't create a Plug-in class you'll get something that's =
pretty close to right already...


Ian Ward wrote:=20
Ed,

Next time you tell me 'model plugin variable' I shall know =
that you mean exactly that.. 'model plugin variable'.and it was under my =
nose all the time - thanks for pointing it out !

I have regenerated the plugin.xml of the app but the =
requires>import line carries a warning that the plugin dependency cannot =
be resolved.

To recall - having written my plugin, I simply copied the =
plugin.xml from that workspace to the folder where the folder of =
binaries called 'lginterface' lives (yes, it has the same name as the id =
of the plugin). Back in the 'host' or dependent app (in an EMF =
workspace) I found that the plugin view doesn't show the plugin I'd =
created in the other workspace (and had pasted into the correct folder =
to find the binaries folder).=20

It seems I'm missing a plugin 'registration' step? When I =
tapped in the name of the model plugin variable how is this associated =
with the plugin with that id? Why doesn't my plugin show up in the =
plugin view when I'm in the workspace of my dependent app/plugin?

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message =
news: cof5h3$bk5$1@www.eclipse.org...
Ian,

I would expect your plugin.xml to have:

<runtime>
<library name=3D"xyz.jar">
<export name=3D"*"/>
</library>
</runtime>
=20
and then in the same directory as that plugin.xml I expect =
to see an xyz.jar. (The name's location is relative to the plugin.xml, =
and should be either a jar or a directory containing .class files.)

Once such a plugin exists, you can set a variable like =
this:



And if you remove the plugin.xml from that project and =
renenerate it, you'll end up with the extra dependency:

<requires>
<import plugin=3D"org.eclipse.core.runtime" />
<import plugin=3D"org.eclipse.emf.ecore" =
export=3D"true"/>
<import plugin=3D"lginterface" export=3D"true"/>
<import plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/>
</requires>


Ian Ward wrote:=20
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<?eclipse version=3D"3.0"?>
<plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName">

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project>properties>java build path>add library>user =
library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml =
and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=20









------=_NextPart_002_001B_01C4D702.7830FF80
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Here is the zip with my (renamed) plug-in.xmls. I&#8217;m not sure =
what you&#8217;ll see,=20
there isn&#8217;t a great deal to go wrong now I&#8217;ve got the =
appropriate=20
requires/import in the plug.xml of tefl (that&#8217;s the =
&#8216;client&#8217; or &#8216;wrapper&#8217; which=20
needs to call the classes in the directory lginterface). As I said, I =
think that=20
it has got past finding lginterface (my f) and it gags at B.class =
&#8211; and that is=20
because the lginterface plugin it recognises is not the lginterface =
plugin which=20
can point at where the B.class is to be found.</P>
<P>Of course, I&#8217;m not an expert &#8211; but it seems to me that =
I&#8217;m missing something=20
in the configuration which allows tefl to use lginterface =
&#8216;in-situ&#8217;, as I tried=20
to say in my previous-but-one post.</P>
<P>But I&#8217;ve got my fingers crossed that you hit it, I don&#8217;t =
mind if you find=20
I&#8217;ve screwed it up &#8211; eventually, I need this to be fixed =
:-((</P>
<P>Ian</P>
<P>BTW, am I going to have a problem as well &#8216;cos the B.classes =
I&#8217;m trying to=20
get at are a jni for a set of c files?!</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:coi0ne$gc2$1@www.eclipse.org">coi0ne$gc2$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>All=20
I'm really doing is tea leaf reading.&nbsp; :-( <BR><BR>How about =
zipping up=20
your plugin(s) and I'll look at it to see if they look right?&nbsp; =
Send them=20
directly to me if they are private...<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midcohu16$af4$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed, </P>
<P>I haven't quite followed that. At one point you seem to say that =
f has to=20
have f in it?!</P>
<P>My runtime/library (quoted in my plug-in) points at something =
named f and=20
I want to access B.class &#8211; the folder holding B.class is =
indeed called f&#8230;So=20
where did a come from?</P>
<P>I'll summarise..........</P>
<P>My import statement says &#8216;import f.B&#8217;.</P>
<P>B is on the path f/B.class relative to the folder where =
I&#8217;ve put my=20
plugin (so the plug-in can see f).</P>
<P>Can you explain what I need to do in these terms?</P>
<P>Thanks</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:cohjq8$m73$1@www.eclipse.org">cohjq8$m73$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>So=20
it sounds like you have a directory with .class files not a =
jar.&nbsp; If=20
your runtime/library points at a folder f, and you want to access =
class=20
a.B, that folder better have f/a/B.class in it.&nbsp; It sounds =
like maybe=20
in your case the folder is called "a" and only has B.class in it, =
which=20
won't work.&nbsp; <BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcohfdm$dba$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV>
<P>Ed,</P>
<P>I seem, somehow(!), with your suggestion, to have managed to =
fix the=20
warning in my &#8216;wrapper&#8217; plugin.xml &#8211; it can =
&#8216;see&#8217; the plugin, or at=20
least A plugin, with the right name, lginterface - I presume =
it&#8217;s the=20
plugin I&#8217;ve created in that workspace. (I am in the =
workspace of the=20
&#8216;wrapper&#8217; &#8211; which I have previously been =
calling the &#8216;host&#8217; or=20
dependent).</P>
<P>My &#8216;wrapper&#8217; code now has an error on the same =
import statement but=20
on the complete reference &#8211; I believe it was only =
objecting to=20
&#8216;lginterface&#8217; before &#8211; now it doesn&#8217;t =
like lginterface.LGClassFoo,=20
LGClassFoo being one of the .class files in the folder =
lginterface (yes,=20
the plugin has this name as well).</P>
<P>I notice that, in the plugin dependencies list (required =
plugins) for=20
the wrapper plugin.xml, the plugin lginterface icon is slightly=20
different to the others (eg org.eclipse.core.runtime) &#8211; =
there seems to=20
be a tiny red (?) dot in the top left corner &#8211; =
that&#8217;s not an error flag=20
is it? &#8211; no other signal/message that I can see.</P>
<P>I have checked the java build path for the project and I =
find, under=20
libraries&gt;plugin dependencies, a folder icon, called =
lginterface, but=20
I&#8217;m not able to verify anything about this entry. There =
are also some=20
jar entries with full path names quoted but there is nothing for =
my=20
lginterface entry.</P>
<P>I am concerned that the copy of the plugin (the original is =
still in=20
the workspace), which I have placed so that it can reference the =
folder=20
of binaries (eg LGClassFoo) may not be visible from anywhere =
that=20
matters. It seems to me that this may be why the complete =
reference=20
cannot be resolved.</P>
<P>Ian</P></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans=20
le message news: <A=20
=
href=3D"mailto:cofsv5$t6n$1@www.eclipse.org">cofsv5$t6n$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
expect your wrapper plugin to be in the same workspace.&nbsp; =
Maybe if=20
you try "File-&gt;New-&gt;Other...-&gt;Plug-in =
Development-&gt;Plug-in=20
Project" and don't create a Plug-in class you'll get something =
that's=20
pretty close to right already...<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcofkah$caq$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Next time you tell me &#8216;model plugin variable&#8217; =
I shall know that=20
you mean exactly that&#8230;. &#8216;model plugin =
variable&#8217;&#8230;and it was under my=20
nose all the time &#8211; thanks for pointing it =
out&nbsp;!</P>
<P>I have regenerated the plugin.xml of the app but the=20
requires&gt;import line carries a warning that the plugin =
dependency=20
cannot be resolved.</P>
<P>To recall - having written my plugin, I simply copied the =

plugin.xml from that workspace to the folder where the =
folder of=20
binaries called &#8216;lginterface&#8217; lives (yes, it has =
the same name as=20
the id of the plugin). Back in the &#8216;host&#8217; or =
dependent app (in an=20
EMF workspace) I found that the plugin view doesn&#8217;t =
show the plugin=20
I&#8217;d created in the other workspace (and had pasted =
into the correct=20
folder to find the binaries folder). </P>
<P>It seems I&#8217;m missing a plugin =
&#8216;registration&#8217; step? When I tapped=20
in the name of the model plugin variable how is this =
associated with=20
the plugin with that id? Why doesn&#8217;t my plugin show up =
in the plugin=20
view when I&#8217;m in the workspace of my dependent =
app/plugin?</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; =
a =E9crit=20
dans le message news: <A=20
=
href=3D"mailto:cof5h3$bk5$1@www.eclipse.org">cof5h3$bk5$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
would expect your plugin.xml to have:<BR><PRE wrap=3D""> =
&lt;runtime&gt;
&lt;library name=3D"xyz.jar"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</PRE>and then in the same directory as that plugin.xml I=20
expect to see an xyz.jar.&nbsp; (The name's location is =
relative=20
to the plugin.xml, and should be either a jar or a =
directory=20
containing .class files.)<BR><BR>Once such a plugin =
exists, you=20
can set a variable like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:000f01c4d6fa$15dd28c0$4ea50950@l8t7p3"><BR></BLOCKQUOTE>And=20
if you remove the plugin.xml from that project and =
renenerate it,=20
you'll end up with the extra dependency:<BR>
<BLOCKQUOTE>&nbsp; &lt;requires&gt;<BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.core.runtime"=20
/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;import=20
plugin=3D"org.eclipse.emf.ecore"=20
export=3D"true"/&gt;<BR><B>&nbsp;&nbsp;&nbsp; &lt;import =

plugin=3D"lginterface"=20
export=3D"true"/&gt;</B><BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/&gt;<BR>&nbsp;=20
&lt;/requires&gt;<BR></BLOCKQUOTE><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcoc740$7ab$1@www.eclipse.org"><PRE wrap=3D"">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;?eclipse version=3D"3.0"?&gt;
&lt;plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName"&gt;

&lt;runtime&gt;
&lt;library name=3D"lginterface"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the =
id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user =
library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the =
plugin.xml and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BLOCK=
QUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE></BODY ></HTML>

------=_NextPart_002_001B_01C4D702.7830FF80--

------=_NextPart_001_001A_01C4D702.7830FF80
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <000f01c4d6fa$15dd28c0$4ea50950@l8t7p3>

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCALWAlEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1LTrG
3utLk1jU4jNAqNLFb5ymxQTkjOGJ6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOP mVWJHIPGM8GpbY7f
hyT6ac5/8cNcfrF2+l3+sCx1a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCn ClKo3GLs7f1cHJRt
c9DTRdFkjWSPTNPZGAKssCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2 NqJ7j7cbaCIAY3S3
flLwWUHBcHaWUHGNy5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKg Zi6ksRGrS5AXY0xd
0mxvc6j+wtH/AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQ x3tnBcWthqUsdqI1
S4maNchmn3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6Xyk RSZGwY2UsWIO8EAB
MbixHaf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/ AGx/Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtGV+cB
QDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2Oq2em zQzW7ySTecbfc6uJ
FCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4lwXmAW4zu xDgquR8+FAO8/sLR
/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2rHTZX0i3vLq8c WzqLpYIrWUJGPMPl
ErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIsaWz4WHzQVJ+1qMmR v9WTj5sKAdJ/YWj/
APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8V6JaajELSz0+PU9HEtq0 TSyu0j2k+Vl3KFA8
5VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+tCTEjKv221woAmdpRiQZcpFj AyuXAUA7u9svDWmw
ia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHvDcdzAks1vp9zcuRCnmIBK3Awsb5B 6r90Z6etaPiH/UWn
kf8AIS+0f8S/P3fO2P8Ae7bNnmbu+3O35ttY6/2N59t9i/5Bv2iLz8b92/ev 2Xbu5+z7923y/l3Y
x8vmUAVLnR49MkCXthatEzBUuo4FCEnoGHJU/p79qd/Zlh/z5W3/AH6X/Cu2 mhjuIXhmRXjcbWVh
kEVyV5ZyaNMscjM9k5xFM3JQ9kY/yPfoeestDTK39mWH/Plbf9+l/wAKP7Ms P+fK2/79L/hVqipK
Kv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/sy w/58rb/v0v8AhVqi
gCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7 MsP+fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v0v8A
hVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf 8KP7MsP+fK2/79L/
AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36 X/Cj+zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9 +l/wo/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD/nyt
v+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/P lbf9+l/wo/syw/58
rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/ z5W3/fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/wo/sy
w/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8A Zlh/z5W3/fpf8KKt
UUAaei2qXvgu2tJCwjntPLYr1AZcHHvzTbrwtFfRCK71C6uIw24JNFbuAfXB i68mrWkzx23haxuJ
m2xRWUbu2M4AQEninSa7ZRRtJIt4iICzM1jMAAOpJ2VptqiCW30q2h0t9OlH 2q3k8wSi4VW80OSW
DAAAg7iMYxils9J03TkgSx0+0tUgR0hWCFUEauwZwuBwGYAkDqQCaszSeVBJ JjOxS2PXArlv+Equ
f7f/ALM22H+v8nHnHzv9T5u/y/7v8Oc9aqMHLYTklubD+GtBkuLS4fRNNaey REtZGtULQKhygQ4y
oU8gDGO1WE0nTY0RE0+0VESJFUQqAqxNuiA44CMcqP4TyMUyC7madEk2EOSP lUjHBPqfSuc1XxjH
pmrzWDy3jzIBIUtrCWfahZgpJRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESE PIYEDztFgo8hCjc4
Ybs9jyMVci0LR4ft3laVYx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8 dH+FH9qXn/Pb/wAd
H+FTzIdh+q+D9M1nxDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6F o9vLcyw6VYxyXUqz
3DpboDLIrb1diB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBB FOzFF2lZGdRj3zG2
fqKOZBY6GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tiki v9KsbuOSUTuk9ukg
aQKEDkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY 3F9Bt8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/Z291
Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BVmigA pk0MdxC8MyK8bjay
sMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f+7cqY8/Q ng/gTXcUUmkO5w39
p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Gj+07D/n9tv+/q
/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xruaKOULnDf2nYf8A P7bf9/V/xo/tOw/5
/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8a7mijlC5w3 9p2H/P7bf9/V/wAa
P7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf22/7+r/jR/adh/z+23/f1f8AGu5o o5QucN/adh/z+23/
AH9X/Gj+07D/AJ/bb/v6v+NdzRRyhc4b+07D/n9tv+/q/wCNH9p2H/P7bf8A f1f8a7mijlC5w39p
2H/P7bf9/V/xo/tOw/5/bb/v6v8AjXc0UcoXOG/tOw/5/bb/AL+r/jR/adh/ z+23/f1f8a7mijlC
5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFHKFzhv7TsP+f22/7+r/jR /adh/wA/tt/39X/G
u5oo5QucN/adh/z+23/f1f8AGj+07D/n9tv+/q/413NFHKFzhv7TsP8An9tv +/q/40f2nYf8/tt/
39X/ABruaKOULnDf2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tO w/5/bb/v6v8AjR/a
dh/z+23/AH9X/Gu5oo5QucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHK Fzhv7TsP+f22/wC/
q/40f2nYf8/tt/39X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+ NdzRRyhc4b+07D/n
9tv+/q/40f2nYf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb /v6v+NdzRRyhc4b+
07D/AJ/bb/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Giu5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8AIvaZ
/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa41C3t 5NNVC1ta+ar4M24M
SpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07SykhWByp6e /UdRpTmovUicWzC8
CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK1S8h8iFImsb1 YVDpLMzB1Mqbxh06
hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUtYurDT5XkuVSNWkCZ Ku5ZiN3RT9fyoqN1
Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7IDgLIeDtyyg5xmWXbz+m+E Zn1WCKfR5v7GW5im
e3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6TqUyQwYEru6ojwyru2k85zjBA yOc49DxW1fSaRpmk
jUr2OSOAmNcRrJKxaRlVVCoCzEswHA71nKnKO5b0dmjx2XRLixfQI9R0X7dF N9lNzaDyn+0Xgtrv
znYOwVn/ANWS5PzbRySKnn8KatKreZbTfYz5TNawtA7mISXjJAElzEfLE0HB +UbPkJKrXr2mjS9V
t2nt7W7RFcoRdW01u2cA8LIFJHPXGOvoauf2XZ/88f8Ax4/41NmK5zXgOyk0 7TobWUTKUjchJnRn
RS+VU7AEGAQNqjauNoJABPY1BBZW9u5eKPaxGM5J4qLU9Sh0q1S4nWRke4gt wEAJ3SyrEp5I43OC
fbPXpTSEXKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv /QBWhQAVy99FO2oX
qpqes6bm43g2NksqygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeER vNiKIFmUoMZKsOAB
ycAcY5zxtZ3UsVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky 7pW2KIldmZsE9EyT
wDz7VdOfJK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4weno PinT7jU/BsVta209
zIJrKUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZ KqPujp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5EudgOT
s27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2wsYy pUc5fPUWupa7eWcF
1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpGfwsTTW5w GjeB73S7HSzBpEFt
dWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvDVzpXh/8As2Fb TT3vG/cR/wBoMLi0
lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G+aaLzN69OMeTJyeD t4JyM6FWI8/8BeFr
/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIcB+hLuR6BRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAZ+hf8i9pn/X
pF/6AK0Kz9C/5F7TP+vSL/0AVoUAFFFFABWTrquVsmRrmMLO2ZbaLzHizDIo YLtYcFh1BHqK1qKA
OF8OaVd2CwWsup6ndu+o3VxvlsxGsCyG4YOD5KDc3mKWByN3CgDiuqvY2QRl ppJAZOFYLheHPGAP
UDnso75J0KZLEkybZFyM564x+NNbiZyGjWLy6Hp8n9jaXJutozveTDNlRyf3 Z5/E1qeEzu0a0PrZ
wH/x01J/wiHh3/oDWf8A36FaltaQWcQit4hGgAUKOwHQD2HpWNOnyFNtnO2e najF4obWn0+Bftks
lrLGNu6CFA2yfdn5mk8uMMAM7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+h f8i9pn/XpF/6AK0K
z9C/5F7TP+vSL/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAZ
+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFAB
RRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XWtKi0LT45NTs0dLaNWVp1BBCj IIzV7+3dH/6Ctj/4
EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaFFZ/9u6P/ANBW x/8AAhP8aP7d0f8A
6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY/wDgQn+NAGhR Wf8A27o//QVsf/Ah
P8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/AKCtj/4EJ/jQ BoUVn/27o/8A0FbH
/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDAhP8AGj+3dH/6 Ctj/AOBCf40AaFFZ
/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3 R/8AoK2P/gQn+NAG
hRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/ AMCE/wAaP7d0f/oK
2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o// AEFbH/wIT/Gj+3dH
/wCgrY/+BCf40AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFF Z/8Abuj/APQVsf8A
wIT/ABo/t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQ n+NAGhRWf/buj/8A
QVsf/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDo K2P/AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/wIT/G
j+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaF FZ/9u6P/ANBWx/8A
AhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY /wDgQn+NAGhRWf8A
27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/ AKCtj/4EJ/jQBoUV
n/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDA hP8AGj+3dH/6Ctj/
AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBB Wx/8CE/xo/t3R/8A
oK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/ AG7o/wD0FbH/AMCE
/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/j QBoUVn/27o//AEFb
H/wIT/GigDlTPNcOVtBGEU4aaTJGe4UDGfQnI/HBpfLv/wDn5tv/AAHb/wCL rI/tO+tv7J0/TrG2
uJrmzkuHa4uWhVQhjB+7G5JJlz26GpLHxho1/aefHcOpWCKaSIxMXjEioyKQ AfmYSKFUEljkLkqc
ZlGn5d//AM/Nt/4Dt/8AF0eXf/8APzbf+A7f/F1izeLrVNUsoo0uZLaaC4aV UsZ3njkRodoaMLuQ
FZSfmUdVOcEZkg8VWhnvxLJ5sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjI BreXf/8APzbf+A7f
/F0eXf8A/Pzbf+A7f/F1nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk 9ASLUOt6fc3kdrbT
PcM6hhJBC8kQBXcMyqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8A tVL5d/8A8/Nt/wCA
7f8AxdUr7UP7J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0 X2eZp0lUMqkKditv
3Og27ed67dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJL lmZmXyEs5mnUgAnd
EF3qAGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6n gA4ANPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0IJzp
/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5tv/Ad v/i6PLv/APn5tv8A
wHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+U4tafqtp qfmC3MyvHjfHPBJD
IAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqXy7//AJ+bb/wH b/4uoYGuk0C2azhh
muBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fULaGdcxSNEhkAwhl27 A2TgAkEkjjkUAaHl
3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fLBbTRTPItzaNewhIXZpIV CEsFAzn94ny4yc8C
oD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5KgfOv94ZALvl3/wDz823/AIDt /wDF0eXf/wDPzbf+
A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjhk8mOSRFYIZMFUY7hhWbJ3L13DOnp +q2mqeYbQzOiY/eN
BIkcgOcFHZQsinGcqSMEHuKAG2zX9xawz+fbL5iK+3yGOMjP9+pfLv8A/n5t v/Adv/i6zLvV/wCx
vDthPshO9Y4/MuJvJgi+TO6STB2LxtBwcsyjvkPTxJaQWtu+oSQpLLGJmNmZ LmGOMk7ZGlCAKhAJ
3MFHDckKTQBoeXf/APPzbf8AgO3/AMXR5d//AM/Nt/4Dt/8AF1WvPEGm6fNc R3ks0HkRtKzyW0gj
YKm8hH27XYKCdqknCtxwcCeINNlkt0hlmnNxgxmG2kkG0sVV2KqQqMQdrthW AJBIGaALPl3/APz8
23/gO3/xdRW7X88Zfz7ZcO6Y8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje 3kiViVG4x7wN6gsO
VLAZXnkZfd6jLpeiPcwW6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzb f+A7f/F0eXf/APPz
bf8AgO3/AMXWZa+J7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLV MnibSJElcXLhUXer
NBIomXIUGLK/vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8 B2/+LrPg8WaNcXUd
qtxMtzLI0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLk KDFlf3wJZQPL3ZLr
j7y5ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5 LeNReGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/ABdZ
9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM94rtI IlgNhOJiSrMCItm/
aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4uqyeINNkk t44pZpnnxhYraRzH
8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksck8cbPGxAEigO DuUkfMp6EZANby7/
AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7DW9P1KdobWZ2bbvQ vC6LKmQN8bMAJF5X
5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6j/zxtv8Avlv8aP8AhKdR /wCeNt/3y3+Nalp4
Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5AglEhk3ZxjjGPRm9a1cEiFJlb /hKdR/5423/fLf40
f8JTqP8Azxtv++W/xok0r53SBmlZHKMCmMnBPHJz901D/Z8m0ttXAz0YZOOp A7j3HpUWRWpN/wAJ
TqP/ADxtv++W/wAaP+Ep1H/njbf98t/jUTaZMjbSik5wcMDg++Dx36+hoOmy hWbYNqjJYMCO/f8A
A/jxRZBqS/8ACU6j/wA8bb/vlv8AGj/hKdR/5423/fLf402XSnjkkQYcq+0E EYxzyeeOn+NM/s2X
cRtUYGdxcBfzzj1/I+lFkGpL/wAJTqP/ADxtv++W/wAafH4pvCQJIoVGeWVC cD6bhnt3rOltSVXB
kVd6lzFt37Nw3Bd3G7bnGeM4zWlqPh1LTSGv11RntbpANKeFP3k7uhdDKGXC qFBJxy2MjacISyC5
r2N9NqCFoLy3yPvI1swK/wDj9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1F dRpmpi8XypcLcKOR
2Yeo/wAO1S1YaZP5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6n Npsuq2OkQ3OnfZnu
LfF0wuJwELJiIRkDecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb /wAB2/8Ai6xdQ8Wx
Wzym2jtprZVgK30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmu J5IY444bstC3myrG
jCXZkrhw2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxp b3P9pRfZ7m2uRbSQ
2++43uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5 gw+fbgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlRuUk4
INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPzbf8A gO3/AMXR5d//AM/N
t/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTmi/8AENnZ aGmrq6PameKJ3kby
xGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz823/AIDt/wDF 1ip400qbVmtbe9sZ
bVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlrfbbtZcO9lOjKyNEO UKAhT5v3zhRtxn0A
NPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCLrPbxZoiQyTS3vkwJtPnT RPHG6s6oHRmADpl0
y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKIyilSAQT5sfbjPOMHAAqtftdS QefbfIivu8huclh/
f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrcf9cIv/QpKz11yaHUtTtb+y2JaRxT RvaGS5eRJHkVcosY
YN+7yQNwGevFAGh5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVYeIdKa1 urkXX7q1tvtU5MbZ
jjy4ORjIYGKQFfvAqQQDU39q2g1P+zmMyXB+6ZIJFjc7d2EkK7GbGThSTgN6 HAA/y7//AJ+bb/wH
b/4ujy7/AP5+bb/wHb/4usJ/F2zxNPpHkWbeTcx2+xbzN0+9EbesGzlF8z5j u4VHPbFalt4g0278
3yJZn8uMzDFtJ++QdWi+X96vI5TcPmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5 +bb/AMB2/wDi6z28
V6SvlDfePLJvxDHYTvKuzbu3xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJ IIXkiAK7hmVQUUlS
CASCQyn+IZAFia/lknTz7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLq lfah/ZOma7qXleb9
kV5/L3bd+yFWxnBxnHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yA uAMHPXABoeXf/wDP
zbf+A7f/ABdFZ/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snj FvcQLIpZ/KO7noQI
yOn8X5z3GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2l GptChQKqlVPRR/sH
1FW/7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQ VwLdOrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP/jg/
+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7sJReQ hLO2jhP2aBoZLopE
IwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8AxuiwFC+0 /wDtbTNd03zfK+1q
8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIkhDRs7FwzRpuy 3KrgbSSTsppUyM7L
rGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp4Vn03ybjTrjTrW8T zVIi00JbbZPL3ARI
6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP8jzZZJN0Pzr5b/vcFud2 xDgYrrP7Ouf+gz/4
4P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7B9ohfF7Nd7bi382CTzJJH2SR 7hvUeZkcj5kVu2Kz
oPA8ttpN5YQahbRrfWk9rcBLMqiq7zOnlKH+QKZ2BBLZCgDb1rqf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwHO6h4Plv7S5sW1FEsma6mgUW5Mkcs6yqxZt+GUefIQoVT935u Dndi0/y9butS83Pn
20MHl7fu+W0rZznnPm9McY9+Jf7Ouf8AoM/+OD/43R/Z1z/0Gf8Axwf/ABui wFOOO/k0OyGn3Ntb
zeVGS1xbtMpXb0wHTnOOc/hWE3gOJJ7DyLi2aGza1KSXdoJrlFgKYSOUMuxW EfI2nl3P8WB00WlT
QxJFHrGERQqjaOAOn/LOn/2dc/8AQZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLK qhzIY3XPzo0jzFhx
lZSmQAMUtN8H3WkTPd2F5p1vdtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/ AGdc/wDQZ/8AHB/8
bo/s65/6DP8A44P/AI3RYDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/Cqf IjJUqx+983Ixr6Hp
t1pFjHYSXcM9pbxpDahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAb o/s65/6DP/jg/wDj
dFgKccd/JodkNPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLc Pd6es5BaWSVjAGOI
zumf7wkGAmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAb osByeq+Af7Su7iX7
XZp5v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcx zQGTekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8eZnyf
n68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nXP/QZ /wDHB/8AG6ZHpU0S
lU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3rxuSMYA5 jPGOd354r+Ep4rCF
GvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ/wDHB/8AG6P7 Ouf+gz/44P8A43RY
DnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2QwOQcqILLwHb2FnLb QxaKy+QtvF5ukK3m
IGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8bo/s65/6DP8A44P/AI3Q BgReE5o7jTpG1Hc1
rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/+Qrcf9cIv/QpKd/Z1z/0Gf8A xwf/ABumDSphK0o1
j52UKTtHQZx/yz9zRYDKPh26Omy6L9vhGhvbParCLY/aEiZCoUS79vy5ABKE 4Azk5Ykfh26k1m21
a/v4ZbuGRCRBbGKNkSOdFXBdiGzcMSc4IAGByTsf2dc/9Bn/AMcH/wAbo/s6 5/6DP/jg/wDjdFgM
BPCTx6hBcLeQxiO5knaWGBo7lw07zeUZQ+DFlwCjKQcE8EgqyPwfL5dhDLqK NDpqww2YS3KsIkmh
kIkO872It0G4BQMsdpyAOi/s65/6DP8A44P/AI3VXUlfS9NuL6fWHMUCF2VI wWOOw/d9T05osBm+
HPCNv4dnDQrYhY4Ps8TQWKxSumRzNJkmRvlHI2gksSp42ksXmX96f+m3/sq1 uvpl0jsjaxhlOCNg
6/8AfumRaQsZkY30cjSNvZmDZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAP SX27YHt0qK7mvdQm
ie7eMiJWChA/fH9529O2K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2 kkmaRizA7gFLZ27g
RxTVXCAbDuVSgOeMHOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZ bOEnkaJWAZyxO7k9
Rxxx1NRy5lQqQ5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJ DlXd1QhnbcxDd8EH
Hp96jed5YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0a Bqc3cWTyxBUMYIdG
xKm9GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtl tzAMNz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf/wCJ
ougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZlQDCr 5vmYIXgAlM4ABJOW
Og2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2w0G40XS2 tNIuraGRp95kuLdp
V8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QKSN9oE7rsJ4Vj uUAk4BGd2OdX+zrn
/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3FmtlBc/arW0uLQTQ ROwcOCmRuQ+YWC5B
Vu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAEJJwY2VsjJJLHcN/+zrn/ AKDP/jg/+N0f2dc/
9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpxW3IKKkkUi+b858w5gizt2ZG7 pkbbWl+Hbq012XV7
y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2xzsf2dc/9Bn/xwf8Axuj+zrn/AKDP /jg/+N0WA52XwhLP
o9ppdxc2Nzbac0ZsUuLAyKFVGjAmUyYkO1s5XZhgDjHFaC+H0TQbbS0khiEN zDcZgt1jjyk6zFVR
cBVJBA5JAOSWOSdL+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bosBj6r4Y/tL Wf7R+0Q8RonkT2/m
xttjuU+YbhlT9p5HomM/NkR6d4YuNNntbmLUEM8TSKyGFjAsLmPdHChkJiA8 lNvzMq5bC4IC7n9n
XP8A0Gf/ABwf/G6P7Ouf+gz/AOOD/wCN0WA52PwfL5dhDLqKNDpqww2YS3Ks IkmhkIkO872It0G4
BQMsdpyANCTSftHi6PUpINsVvbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ /wDHB/8AG6P7Ouf+
gz/44P8A43RYBsf/ACFbj/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzN qyQmQl+ZWb74G5Yz
j5TncGlTCVpRrHzsoUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uG WWFjZXMsxEEBijZX
lMwjVNx2KsiwsOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjb wqIO2a3/AOzrn/oM
/wDjg/8AjdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYt oEm/G3MKk/JnBIyO
CM6y8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkISzto4
T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH /wAbosBQvtP/ALW0
zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2RWt5m2lf 3sQK7xjBHIwyof4c
VpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSMFjjsP3fU9OaL Bc53/hBf+nPwj/4T
v/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJTxHqdqmoaiJr6+Wz nvzcW01qIreOCEzb
PLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbmf7TDEBlVwMOwJPHpjpz1 xTa21BtMudNPhVja
XXnedH/acHzeazNJzvyMl26HjPGKGtQQl74lvLJLh30tFFlaC+vUe5w8cJMm 0IApDybYmyuVUHAD
MPmEMnjCWzgmvr7TkTTlnu4InguDJKzW4lLZQooUFYHxhjyVHckSX9jfalOs 114WlZtuxwmrRIsq
ZJ2SKsgEi8t8rgj5m4+Y5pWOg31sZ3ufDUt4009xKUn1SJ4lEzuxAiaQop2u VJABILf3iKVh3JoP
GF/K0EH9gTC6nuVgjDGWKI7o5XzumiRjt8o7gFOAwI3H5am03XdRWBptQghe 0bVprNLlJvnVfPlj
TcgQfxiKMYJzu3EjBpltpl5azRTJ4XuJJ4pPNSafWY5pAdjoBueUkqBI+FJw CxIGTmmXumarcWd9
bQ+HpYI79l+0p/acLIyFsyqqeZhC6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9z w/NnfFuPlv0GNybW
weRuweRV2sn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17 /oW2/wDBjb//ABdH
23Xv+hbb/wAGNv8A/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMb f/4uizC5rUVk/bde
/wChbb/wY2//AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi 6Ptuvf8AQtt/4Mbf
/wCLoswua1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+2 69/0Lbf+DG3/APi6
Ptuvf9C23/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/ APF0WYXNaisn7br3
/Qtt/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH 23Xv+hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZP23X
v+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL+oqb7br3 /Qtt/wCDG3/+Lqhr
Sa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9kkFxLgAloUcNK oB43GMOB05I5HUYc
viS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi5IJC1sXGo61NcyyR eHJDG7ll339urYJ4
yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3pKGK/KuQTglQTkgUWAZ4a 8Sf2rrV1GizNb3ub
uAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriyWHRrloZlt/OaNJXMTyxpIMFY /LKqJFyWdTgMdvTc
qaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG27YowRnBKAnJGafBo09s9sYfCUqL brGqRDWIvLPlgBGZ
PM2uyhVwzAsNq8/KMFgOtorJ+269/wBC23/gxt//AIuj7br3/Qtt/wCDG3/+ LpWYXNaisn7br3/Q
tt/4Mbf/AOLo+269/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23 Xv8AoW2/8GNv/wDF
0WYXNaisn7br3/Qtt/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW 2/8ABjb/APxdH23X
v+hbb/wY2/8A8XRZhc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Los wua1FZP23Xv+hbb/
AMGNv/8AF0fbde/6Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+26 9/0Lbf8Agxt//i6L
MLmtRWT9t17/AKFtv/Bjb/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Q tt/4Mbf/AOLo+269
/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF 0WYXNaisn7br3/Qt
t/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23X v+hbb/wY2/8A8XRZ
hc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/ AMGNv/8AF0fbde/6
Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6L MLmtWH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/Vf8A
vq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SGeJyk kcl5aKyMDgggrkEH
jFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvLrEumeGbi 9lDXlzHPJbwRsQhn
lMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlvbW1ljDAgNtM0 o3YwSqkcdb17oCaz
ptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4Ctob9JbbUrxbWK7N zFBNFNOUzPaTuu92
JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A 36b/AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UATUVD9
pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+ FAE1FQ/aY/7sv/fp
v8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/u y/8Afpv8KPtMf92X
/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KP tMf92X/v03+FAE1F
Q/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03 +FAE1FQ/aY/7sv8A
36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY /wC7L/36b/Cj7TH/
AHZf+/Tf4UAFp/x5wf8AXNf5VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+F ICaioftMf92X/v03
+FH2mP8Auy/9+m/wpgTUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj /uy/9+m/wo+0x/3Z
f+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo +0x/3Zf+/Tf4UATU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/ALsv
/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9p j/uy/wDfpv8ACj7T
H/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv 8KPtMf8Adl/79N/h
QBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl /wC/Tf4UATUVD9pj
/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNR UP2mP+7L/wB+m/wo
+0x/3Zf+/Tf4UATUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UActRRRWZZf8A Bv8AyL0P4f8AoC10
Fc54QkZPD8IWF3GF5Ur/AHF9SK3fOk/59pfzX/4qtCCaiofOk/59pfzX/wCK o86T/n2l/Nf/AIqg
DJv7/UrnWZNI0iW0tp7e3jup7i7gaZdsjSKiKiuhJzE5LFhjCgBtxKxnxMlp eCyuoJ5vIlhtLzUI
Y1SCO5kCbU2FzJ8xljxgMB5gy3DETalpb31wt3bTahpt4EEbXNp5JaSMEkIw kDqwBJIJGVy2CAzA
0z4ZR7wTy3GpyRvLDc3MDGAJdXEQQJM5Chgw8qI4Qqh2D5cFgQCG08fWVxYW 97caZqVlBc26XcDX
AiPmW5eNWmOyRgiIJo2cvtIUkgHacXP+Eus21yPSYbO+nmklliSWKINE3leU JW37sBVM20k4+aN0
5barYuj+Er/S/CsNvcM2qapb6OdPgjvxEbSLciho8Iqs0TNHGDv3NtXjGTnc 07QrfTZdNliivHks
LSW1V5HjJm81o3kkkP8AFIzRBi3GSzE5J4AM2w8eQXOnadcrp99dQz/Y4ri8 hjijjhmuBEUVkaUu
OJoydu8ANjcSDjLsPH2oL4M0a4udMuzq11b2MiiYQ4vleWCKZ49kmFP79SA+ zl14wGAc/gq/tLjT
bDSnuYNFgeymuvMuImaaS2MYUmPysklYIlysqAYzsOCH2G8IWLWGlWmzUANL shZ2sgki3LteF0kP
YurW8bDjaeQVIOKALXijU9U0/wAG3ms6cILW6tLR7t4L6HzshI2Yxny5AA2Q BuDMBg8HrWfq3juw
8JSwWHiC8glvvK8+4lgEduiRFmCsI5ZS78K3yx+Y3y9BuUHav9P/ALT8PXOj XgvJI7q0e1mnzEJG
DIVZuPlDHJPC4z2xxVfUNF+3aib2OfU7KSWJYLkWkkS/aIlLFVLHLJjzJPmj KN855yFwAVdf8Xf2
bpOsta2c51LT7S4uDFNF8kaxxsySOQwBjcqAu0ljlhgGOTZ0FjcS3dnHPNZT 2UjZzBOULpgkclGZ
eevBPX14rFufDdpePdPdR6hMb1JYbvdMoE8DqVEJAIARQfl24YHcc5eQvqWK 3NpZxwTPeXsi5zPP
5Id8knkIFXjpwB09eaAL1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8A PtL+a/8AxVHnSf8A
PtL+a/8AxVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8A xVHnSf8APtL+a/8A
xVAE1FQ+dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8A PtL+a/8AxVAE1FQ+
dJ/z7S/mv/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8A xVAE1FQ+dJ/z7S/m
v/xVHnSf8+0v5r/8VQBNRUPnSf8APtL+a/8AxVHnSf8APtL+a/8AxVAE1FQ+ dJ/z7S/mv/xVHnSf
8+0v5r/8VQBycFzdmG8dpJY4IY0McrSsqljLIrLy6rwFTjIxnvkCl8O6leXm slPO+1W6KRIYpI2E
RIO0ti5c4OCANvXuMGtqLT7OS1X/AIluGkQbpYtqO3Q53AhuTS2emW1hcm4g tb3zCpX95dtIuPZW
kIB464zVpwUbW/AzcJc17mtRUPnSf8+0v5r/APFUedJ/z7S/mv8A8VUGhNRU PnSf8+0v5r/8VR50
n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v 5r/8VR50n/PtL+a/
/FUATUVD50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50 n/PtL+a//FUATUVD
50n/AD7S/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a/ /FUATUVD50n/AD7S
/mv/AMVR50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD 50n/AD7S/mv/AMVR
50n/AD7S/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S /mv/AMVR50n/AD7S
/mv/AMVQBNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR 50n/AD7S/mv/AMVQ
BNRUPnSf8+0v5r/8VR50n/PtL+a//FUATUVD50n/AD7S/mv/AMVR50n/AD7S /mv/AMVQBNRUPnSf
8+0v5r/8VR50n/PtL+a//FUActRRRWZZf8G/8i9D+H/oC10Fc54QMo8Pw+Wi MMLyzkfwL7Gt3dc/
88ov+/p/+JrQgmoqHdc/88ov+/p/+Jo3XP8Azyi/7+n/AOJoA43XvEOs6R4y uTbr9s02HT7ZPsGU
j3XM8k6xP5hBIy8UUWOg87ecBDmnpHjDV7DQrtb8R6vPoyXM+qXrsLZnhS5u I1MUaIVZ9ts/ykoP
u/MckjtktPL1Ga/W2iF1NFHDI/nN8yIXKjGMcGR/z9hWXL4S0yY5bT1AZ5Gl VL2ZFn3yNIyyqMCV
C0kh2PuUb2AADEEAwdc8X3lvc6fqptfK0K01C9SV4romef7PbXYdWi2hdu+F iuZDnahIBPyyW3in
UNX1jQoZ9Ou9OI1PbJhLhIp0a0umC5miiZiGjBI2kD5DkngbUvhLTJ7/AO2T aesh3yP5D3sxt90i
Mkh8g/ussJHydvJdieSTUlp4ZsrOeG4S0aW4hl85J7m/mnkDBHQDfJlioWWT Ck7QXYgZOaAOV1zx
TrOk3fjJ2vP9Fjimh0w+Un+i3MVilzjoS+8PI3zcL5OOd4FaGt/EQaLfX0f9 nfarWGK4ME8LTbZJ
YYXleNnMIiGPKkU7ZHYMMFfvbdrU/DGn6xp2pWF/psU1rqcqTXafaZF8x1CB TkYIwIo+mPu+5zXv
fBmlahPLLc2DOsvmloRqM6wgyo6SMIgQisyyPlgASXY5ySaAKNz47m0o3Tax pUcUVm8sE5tLozN5
yWxu8KGRMoYR94kHedu3Hz1qeGPEV1rv2pLzSZ7GSDYQzRTrHIGzwpmiiYsN pyAuAGXkkkCafw/Y
3UsslxpltMZbg3MiyTMyvIYPs5JUjBBi+XbjHfGeak0zR4tI802sDNJLgPNc 30txIwGcLvk3NtGW
IXOAWYgZJyAa1FQ7rn/nlF/39P8A8TRuuf8AnlF/
Re: building a plugin for external binaries (fao Ed Merks) [message #389616 is a reply to message #389614] Tue, 30 November 2004 12:55 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------080003000208020509050302
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

Sorry, what I really need is a zip of the whole plugin structure, not
just of the plugin.xml files (which look fine). You just aren't using
terminology that I can map onto something I understand, so I need to see
the complete structure for myself.


Ian Ward wrote:

> Ed,
>
> Here is the zip with my (renamed) plug-in.xmls. I'm not sure what
> you'll see, there isn't a great deal to go wrong now I've got the
> appropriate requires/import in the plug.xml of tefl (that's the
> 'client' or 'wrapper' which needs to call the classes in the directory
> lginterface). As I said, I think that it has got past finding
> lginterface (my f) and it gags at B.class - and that is because the
> lginterface plugin it recognises is not the lginterface plugin which
> can point at where the B.class is to be found.
>
> Of course, I'm not an expert - but it seems to me that I'm missing
> something in the configuration which allows tefl to use lginterface
> 'in-situ', as I tried to say in my previous-but-one post.
>
> But I've got my fingers crossed that you hit it, I don't mind if you
> find I've screwed it up - eventually, I need this to be fixed :-((
>
> Ian
>
> BTW, am I going to have a problem as well 'cos the B.classes I'm
> trying to get at are a jni for a set of c files?!
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389618 is a reply to message #389616] Tue, 30 November 2004 14:27 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0015_01C4D71B.0BA57C60
Content-Type: multipart/related;
type="multipart/alternative";
boundary="----=_NextPart_001_0016_01C4D71B.0BA57C60"


------=_NextPart_001_0016_01C4D71B.0BA57C60
Content-Type: multipart/alternative;
boundary="----=_NextPart_002_0017_01C4D71B.0BA57C60"


------=_NextPart_002_0017_01C4D71B.0BA57C60
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,
I'm not sure exactly what you need but here is effectively the whole of =
my project, including the 'server' plug-in lginterface. I opened =
'plug-in development' for the workspace and exported everything.
Many thanks
"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coic75$b4s$1@www.eclipse.org...
Ian,

Sorry, what I really need is a zip of the whole plugin structure, not =
just of the plugin.xml files (which look fine). You just aren't using =
terminology that I can map onto something I understand, so I need to see =
the complete structure for myself.


Ian Ward wrote:=20
Ed,

Here is the zip with my (renamed) plug-in.xmls. I'm not sure what =
you'll see, there isn't a great deal to go wrong now I've got the =
appropriate requires/import in the plug.xml of tefl (that's the 'client' =
or 'wrapper' which needs to call the classes in the directory =
lginterface). As I said, I think that it has got past finding =
lginterface (my f) and it gags at B.class - and that is because the =
lginterface plugin it recognises is not the lginterface plugin which can =
point at where the B.class is to be found.

Of course, I'm not an expert - but it seems to me that I'm missing =
something in the configuration which allows tefl to use lginterface =
'in-situ', as I tried to say in my previous-but-one post.

But I've got my fingers crossed that you hit it, I don't mind if you =
find I've screwed it up - eventually, I need this to be fixed :-((

Ian

BTW, am I going to have a problem as well 'cos the B.classes I'm =
trying to get at are a jni for a set of c files?!

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coi0ne$gc2$1@www.eclipse.org...
Ian,

All I'm really doing is tea leaf reading. :-(=20

How about zipping up your plugin(s) and I'll look at it to see if =
they look right? Send them directly to me if they are private...


Ian Ward wrote:=20
Ed,=20

I haven't quite followed that. At one point you seem to say that =
f has to have f in it?!

My runtime/library (quoted in my plug-in) points at something =
named f and I want to access B.class - the folder holding B.class is =
indeed called f.So where did a come from?

I'll summarise..........

My import statement says 'import f.B'.

B is on the path f/B.class relative to the folder where I've put =
my plugin (so the plug-in can see f).

Can you explain what I need to do in these terms?

Thanks

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
cohjq8$m73$1@www.eclipse.org...
Ian,

So it sounds like you have a directory with .class files not a =
jar. If your runtime/library points at a folder f, and you want to =
access class a.B, that folder better have f/a/B.class in it. It sounds =
like maybe in your case the folder is called "a" and only has B.class in =
it, which won't work. =20


Ian Ward wrote:=20
Ed,

I seem, somehow(!), with your suggestion, to have managed to =
fix the warning in my 'wrapper' plugin.xml - it can 'see' the plugin, or =
at least A plugin, with the right name, lginterface - I presume it's the =
plugin I've created in that workspace. (I am in the workspace of the =
'wrapper' - which I have previously been calling the 'host' or =
dependent).

My 'wrapper' code now has an error on the same import =
statement but on the complete reference - I believe it was only =
objecting to 'lginterface' before - now it doesn't like =
lginterface.LGClassFoo, LGClassFoo being one of the .class files in the =
folder lginterface (yes, the plugin has this name as well).

I notice that, in the plugin dependencies list (required =
plugins) for the wrapper plugin.xml, the plugin lginterface icon is =
slightly different to the others (eg org.eclipse.core.runtime) - there =
seems to be a tiny red (?) dot in the top left corner - that's not an =
error flag is it? - no other signal/message that I can see.

I have checked the java build path for the project and I =
find, under libraries>plugin dependencies, a folder icon, called =
lginterface, but I'm not able to verify anything about this entry. There =
are also some jar entries with full path names quoted but there is =
nothing for my lginterface entry.

I am concerned that the copy of the plugin (the original is =
still in the workspace), which I have placed so that it can reference =
the folder of binaries (eg LGClassFoo) may not be visible from anywhere =
that matters. It seems to me that this may be why the complete reference =
cannot be resolved.

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message =
news: cofsv5$t6n$1@www.eclipse.org...
Ian,

I expect your wrapper plugin to be in the same workspace. =
Maybe if you try "File->New->Other...->Plug-in Development->Plug-in =
Project" and don't create a Plug-in class you'll get something that's =
pretty close to right already...


Ian Ward wrote:=20
Ed,

Next time you tell me 'model plugin variable' I shall =
know that you mean exactly that.. 'model plugin variable'.and it was =
under my nose all the time - thanks for pointing it out !

I have regenerated the plugin.xml of the app but the =
requires>import line carries a warning that the plugin dependency cannot =
be resolved.

To recall - having written my plugin, I simply copied =
the plugin.xml from that workspace to the folder where the folder of =
binaries called 'lginterface' lives (yes, it has the same name as the id =
of the plugin). Back in the 'host' or dependent app (in an EMF =
workspace) I found that the plugin view doesn't show the plugin I'd =
created in the other workspace (and had pasted into the correct folder =
to find the binaries folder).=20

It seems I'm missing a plugin 'registration' step? When =
I tapped in the name of the model plugin variable how is this associated =
with the plugin with that id? Why doesn't my plugin show up in the =
plugin view when I'm in the workspace of my dependent app/plugin?

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le =
message news: cof5h3$bk5$1@www.eclipse.org...
Ian,

I would expect your plugin.xml to have:

<runtime>
<library name=3D"xyz.jar">
<export name=3D"*"/>
</library>
</runtime>
=20
and then in the same directory as that plugin.xml I =
expect to see an xyz.jar. (The name's location is relative to the =
plugin.xml, and should be either a jar or a directory containing .class =
files.)

Once such a plugin exists, you can set a variable like =
this:



And if you remove the plugin.xml from that project and =
renenerate it, you'll end up with the extra dependency:

<requires>
<import plugin=3D"org.eclipse.core.runtime" />
<import plugin=3D"org.eclipse.emf.ecore" =
export=3D"true"/>
<import plugin=3D"lginterface" export=3D"true"/>
<import plugin=3D"org.eclipse.emf.ecore.xmi" =
export=3D"true"/>
</requires>


Ian Ward wrote:=20
Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

<?xml version=3D"1.0" encoding=3D"UTF-8"?>
<?eclipse version=3D"3.0"?>
<plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName">

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>
</plugin>

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project>properties>java build path>add variable>configure
variables>new>..at this point I give a name to the variable (the id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project>properties>java build path>add library>user =
library/next>user
libraries>..at this point I enter the id I've entered in the plugin.xml =
and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=20











------=_NextPart_002_0017_01C4D71B.0BA57C60
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I'm not sure exactly what you need but =
here is=20
effectively the whole of my project, including the 'server' plug-in =
lginterface.=20
I opened 'plug-in development' for the workspace and exported=20
everything.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Many thanks</FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:coic75$b4s$1@www.eclipse.org">coic75$b4s$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>Sorry,=20
what I really need is a zip of the whole plugin structure, not just of =
the=20
plugin.xml files (which look fine).&nbsp; You just aren't using =
terminology=20
that I can map onto something I understand, so I need to see the =
complete=20
structure for myself.<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midcoi7m6$1r2$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Here is the zip with my (renamed) plug-in.xmls. I&#8217;m not =
sure what you&#8217;ll=20
see, there isn&#8217;t a great deal to go wrong now I&#8217;ve got =
the appropriate=20
requires/import in the plug.xml of tefl (that&#8217;s the =
&#8216;client&#8217; or &#8216;wrapper&#8217;=20
which needs to call the classes in the directory lginterface). As I =
said, I=20
think that it has got past finding lginterface (my f) and it gags at =
B.class=20
&#8211; and that is because the lginterface plugin it recognises is =
not the=20
lginterface plugin which can point at where the B.class is to be =
found.</P>
<P>Of course, I&#8217;m not an expert &#8211; but it seems to me =
that I&#8217;m missing=20
something in the configuration which allows tefl to use lginterface=20
&#8216;in-situ&#8217;, as I tried to say in my previous-but-one =
post.</P>
<P>But I&#8217;ve got my fingers crossed that you hit it, I =
don&#8217;t mind if you find=20
I&#8217;ve screwed it up &#8211; eventually, I need this to be fixed =
:-((</P>
<P>Ian</P>
<P>BTW, am I going to have a problem as well &#8216;cos the =
B.classes I&#8217;m trying=20
to get at are a jni for a set of c files?!</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:coi0ne$gc2$1@www.eclipse.org">coi0ne$gc2$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>All=20
I'm really doing is tea leaf reading.&nbsp; :-( <BR><BR>How about =
zipping=20
up your plugin(s) and I'll look at it to see if they look =
right?&nbsp;=20
Send them directly to me if they are private...<BR><BR><BR>Ian =
Ward wrote:=20

<BLOCKQUOTE type=3D"cite" =
cite=3D"midcohu16$af4$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV><FONT size=3D2>
<P>Ed, </P>
<P>I haven't quite followed that. At one point you seem to say =
that f=20
has to have f in it?!</P>
<P>My runtime/library (quoted in my plug-in) points at something =
named f=20
and I want to access B.class &#8211; the folder holding B.class =
is indeed=20
called f&#8230;So where did a come from?</P>
<P>I'll summarise..........</P>
<P>My import statement says &#8216;import f.B&#8217;.</P>
<P>B is on the path f/B.class relative to the folder where =
I&#8217;ve put my=20
plugin (so the plug-in can see f).</P>
<P>Can you explain what I need to do in these terms?</P>
<P>Thanks</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans=20
le message news: <A=20
=
href=3D"mailto:cohjq8$m73$1@www.eclipse.org">cohjq8$m73$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>So=20
it sounds like you have a directory with .class files not a =
jar.&nbsp;=20
If your runtime/library points at a folder f, and you want to =
access=20
class a.B, that folder better have f/a/B.class in it.&nbsp; It =
sounds=20
like maybe in your case the folder is called "a" and only has =
B.class=20
in it, which won't work.&nbsp; <BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcohfdm$dba$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<DIV>
<P>Ed,</P>
<P>I seem, somehow(!), with your suggestion, to have managed =
to fix=20
the warning in my &#8216;wrapper&#8217; plugin.xml &#8211; =
it can &#8216;see&#8217; the plugin, or=20
at least A plugin, with the right name, lginterface - I =
presume it&#8217;s=20
the plugin I&#8217;ve created in that workspace. (I am in =
the workspace of=20
the &#8216;wrapper&#8217; &#8211; which I have previously =
been calling the &#8216;host&#8217; or=20
dependent).</P>
<P>My &#8216;wrapper&#8217; code now has an error on the =
same import statement=20
but on the complete reference &#8211; I believe it was only =
objecting to=20
&#8216;lginterface&#8217; before &#8211; now it =
doesn&#8217;t like lginterface.LGClassFoo,=20
LGClassFoo being one of the .class files in the folder =
lginterface=20
(yes, the plugin has this name as well).</P>
<P>I notice that, in the plugin dependencies list (required =
plugins)=20
for the wrapper plugin.xml, the plugin lginterface icon is =
slightly=20
different to the others (eg org.eclipse.core.runtime) =
&#8211; there seems=20
to be a tiny red (?) dot in the top left corner &#8211; =
that&#8217;s not an=20
error flag is it? &#8211; no other signal/message that I can =
see.</P>
<P>I have checked the java build path for the project and I =
find,=20
under libraries&gt;plugin dependencies, a folder icon, =
called=20
lginterface, but I&#8217;m not able to verify anything about =
this entry.=20
There are also some jar entries with full path names quoted =
but=20
there is nothing for my lginterface entry.</P>
<P>I am concerned that the copy of the plugin (the original =
is still=20
in the workspace), which I have placed so that it can =
reference the=20
folder of binaries (eg LGClassFoo) may not be visible from =
anywhere=20
that matters. It seems to me that this may be why the =
complete=20
reference cannot be resolved.</P>
<P>Ian</P></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; =
a =E9crit=20
dans le message news: <A=20
=
href=3D"mailto:cofsv5$t6n$1@www.eclipse.org">cofsv5$t6n$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
expect your wrapper plugin to be in the same =
workspace.&nbsp;=20
Maybe if you try "File-&gt;New-&gt;Other...-&gt;Plug-in=20
Development-&gt;Plug-in Project" and don't create a =
Plug-in class=20
you'll get something that's pretty close to right=20
already...<BR><BR><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite" =
cite=3D"midcofkah$caq$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" =
name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT size=3D2>
<P>Ed,</P>
<P>Next time you tell me &#8216;model plugin =
variable&#8217; I shall know=20
that you mean exactly that&#8230;. &#8216;model plugin =
variable&#8217;&#8230;and it was=20
under my nose all the time &#8211; thanks for pointing =
it=20
out&nbsp;!</P>
<P>I have regenerated the plugin.xml of the app but the=20
requires&gt;import line carries a warning that the =
plugin=20
dependency cannot be resolved.</P>
<P>To recall - having written my plugin, I simply copied =
the=20
plugin.xml from that workspace to the folder where the =
folder of=20
binaries called &#8216;lginterface&#8217; lives (yes, it =
has the same name=20
as the id of the plugin). Back in the &#8216;host&#8217; =
or dependent app=20
(in an EMF workspace) I found that the plugin view =
doesn&#8217;t show=20
the plugin I&#8217;d created in the other workspace (and =
had pasted=20
into the correct folder to find the binaries folder). =
</P>
<P>It seems I&#8217;m missing a plugin =
&#8216;registration&#8217; step? When I=20
tapped in the name of the model plugin variable how is =
this=20
associated with the plugin with that id? Why =
doesn&#8217;t my plugin=20
show up in the plugin view when I&#8217;m in the =
workspace of my=20
dependent app/plugin?</P>
<P>Ian</P></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; =
MARGIN-LEFT: 5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
=
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a=20
=E9crit dans le message news: <A=20
=
href=3D"mailto:cof5h3$bk5$1@www.eclipse.org">cof5h3$bk5$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>I=20
would expect your plugin.xml to have:<BR><PRE =
wrap=3D""> &lt;runtime&gt;
&lt;library name=3D"xyz.jar"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
</PRE>and then in the same directory as that plugin.xml I=20
expect to see an xyz.jar.&nbsp; (The name's location =
is=20
relative to the plugin.xml, and should be either a jar =
or a=20
directory containing .class files.)<BR><BR>Once such a =
plugin=20
exists, you can set a variable like this:<BR>
<BLOCKQUOTE><IMG alt=3D""=20
=
src=3D"cid:000b01c4d712$a8344ec0$dd50f8c1@l8t7p3"><BR></BLOCKQUOTE>And=20
if you remove the plugin.xml from that project and =
renenerate=20
it, you'll end up with the extra dependency:<BR>
<BLOCKQUOTE>&nbsp; =
&lt;requires&gt;<BR>&nbsp;&nbsp;&nbsp;=20
&lt;import plugin=3D"org.eclipse.core.runtime"=20
/&gt;<BR>&nbsp;&nbsp;&nbsp; &lt;import=20
plugin=3D"org.eclipse.emf.ecore"=20
export=3D"true"/&gt;<BR><B>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"lginterface"=20
export=3D"true"/&gt;</B><BR>&nbsp;&nbsp;&nbsp; =
&lt;import=20
plugin=3D"org.eclipse.emf.ecore.xmi"=20
export=3D"true"/&gt;<BR>&nbsp;=20
&lt;/requires&gt;<BR></BLOCKQUOTE><BR>Ian Ward wrote:=20
<BLOCKQUOTE type=3D"cite"=20
cite=3D"midcoc740$7ab$1@www.eclipse.org"><PRE wrap=3D"">Ed,
I decided to take the plunge this weekend and try the procedure you
described - before, as I said, leaving it to cool for a while. Maybe I'm =
on
the brink of success so can I ask you to glance at the following =
(preceded
by your 'recipe') and to nod/shake your head in the appropriate places?

You wrote..." I think you should create a new plugin to hold your =
binaries.
I'm not sure if you include the binaries in the plugin.xml for the =
plugin
that needs to compile against them, if the source code will look at =
those
binaries while being compiled. I think not. Try to follow an existing
example, like org.apache.lucene_1.3.0/plugin.xml or
org.apache.ant_1.6.2/pluin.xml, which package some external binaries =
into a
plugin. Be sure to change the plugin's ID to something unique. Once you =
do
this, use that ID to define a Model Plug-in Variable, remove the =
plugin.xml
from that project, and regenerate the model (by right clicking on the
GenModel not on the GenPackage, which won't generate artifacts global to =
the
model)."

Here goes,

In the plugin development workbench (in a different workspace to that of =
the
intended 'host' app)....

Step 1: create a plugin

Here is my plugin.xml

&lt;?xml version=3D"1.0" encoding=3D"UTF-8"?&gt;
&lt;?eclipse version=3D"3.0"?&gt;
&lt;plugin
id=3D"lginterface"
name=3D"%pluginName"
version=3D"1.0.0"
provider-name=3D"%providerName"&gt;

&lt;runtime&gt;
&lt;library name=3D"lginterface"&gt;
&lt;export name=3D"*"/&gt;
&lt;/library&gt;
&lt;/runtime&gt;
&lt;/plugin&gt;

The plugin examples you suggested (ex ant) have a number of dependencies
displayed in their outlines (which correspond to the runtime libraries
mentioned in their plugin.xml) - I don't have this for my plugin (and =
the
workbench only proposes jars)

I've copied the plugin.xml from the workspace to the parent directory =
where
the directory of binaries called 'lginterface' lives (yes, it has the =
same
name as the id of the plugin)

Back in the 'host' app (EMF workbench)..

(BTW, the plugin view doesn't show the plugin I've created)

Step 2: define a Model Plug-in Variable

I tried two approaches

i) project&gt;properties&gt;java build path&gt;add variable&gt;configure
variables&gt;new&gt;..at this point I give a name to the variable (the =
id I've
entered in the plugin.xml 'lginterface') and identify the parent =
directory
where I've put a copy of the plugin.xml..I make sure it shows up on the =
list
for the build path

ii) project&gt;properties&gt;java build path&gt;add library&gt;user =
library/next&gt;user
libraries&gt;..at this point I enter the id I've entered in the =
plugin.xml and
on the way back I select this 'user library' and make sure it shows on =
the
list for the build path

Step 3: remove the plugin of the 'host' app (which I'd never noticed in =
my
project before!)

I understand from this that the plugin.xml of the 'host' app should, =
after
step 4, carry some sort of reference to the plugin I've created for my
binaries.

Step 4: regenerate the code for the complete model of the 'host'
BTW, I've had to exclude the package of the model which normally =
contains
the representation of my famous binaries - otherwise this would create =
code
for them which is what I don't want. So, for the moment, I just have an
import statement in the package class for the wrapper of the javaclass =
which
is 'standing in' for the external class.

Conclusion: I see no change in the plugin.xml of the app and the import =
is
still unresolved. I'm mostly concerned about step 2.

Should I perhaps create a jar? I didn't think that it was obligatory.
You said that the plugin id should be unique - I assumed that this =
should be
so for plugins and the fact that I've a directory with the same name =
isn't a
problem.
I did have a look at the Eclipse doc for plugins but quickly got lost (I
haven't dreamed about searching 'plugin' in the platform forum!)

Many thanks
Ian




=
</PRE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BLOCK=
QUOTE><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE></BLOCKQUOTE ><BR></B=
LOCKQUOTE></BODY></HTML>

------=_NextPart_002_0017_01C4D71B.0BA57C60--

------=_NextPart_001_0016_01C4D71B.0BA57C60
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <000b01c4d712$a8344ec0$dd50f8c1@l8t7p3>

/9j/4AAQSkZJRgABAQIAJQAlAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCALWAlEDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1LTrG
3utLk1jU4jNAqNLFb5ymxQTkjOGJ6/N0/WnpceHXM4Gh2pFuwW4KR28hhJOP mVWJHIPGM8GpbY7f
hyT6ac5/8cNcfrF2+l3+sCx1a0s5JLsboZkeVynleaSBh8JvkdiAg5J+YcCn ClKo3GLs7f1cHJRt
c9DTRdFkjWSPTNPZGAKssCEEHuDinf2Fo/8A0CrH/wAB0/wrFutWn0TwbNd2 NqJ7j7cbaCIAY3S3
flLwWUHBcHaWUHGNy5yKKeLdZsdJa71a1sYpoLs2ksMkyQsxaNJEkOySYRKg Zi6ksRGrS5AXY0xd
0mxvc6j+wtH/AOgVY/8AgOn+FH9haP8A9Aqx/wDAdP8ACub1LxRq+n6zbQxQ x3tnBcWthqUsdqI1
S4maNchmn3KAJom2iOQc7d+clc/SPGWvTWunXV8dNkSa30y6mSC2eMlb6Xyk RSZGwY2UsWIO8EAB
MbixHaf2Fo//AECrH/wHT/Cj+wtH/wCgVY/+A6f4V5/P4h1jUND8Of2s9jL/ AGx/Z2pR/ZLd4fI2
3tllDukffnzxyNuNh4O7jY8LeMNW1Py7zWrKDT9Mu9PbUYJpXii8qMbCRxM7 SKFkBMhSILtGV+cB
QDqP7C0f/oFWP/gOn+FH9haP/wBAqx/8B0/wrn9T8Q6xFqN29m9jHY2Oq2em zQzW7ySTecbfc6uJ
FCYFwAAVblM55wMO18c+KLrTra7fTrSzTVEtpbF7hEIjWW4gj+4lwXmAW4zu xDgquR8+FAO8/sLR
/wDoFWP/AIDp/hR/YWj/APQKsf8AwHT/AAri9R8Za9p11f2rHTZX0i3vLq8c WzqLpYIrWUJGPMPl
ErcldxMnKZxztGhBr+vXetyeHYptNj1C3eYy3zWjtFIsaWz4WHzQVJ+1qMmR v9WTj5sKAdJ/YWj/
APQKsf8AwHT/AAo/sLR/+gVY/wDgOn+FcHceItS8V6JaajELSz0+PU9HEtq0 TSyu0j2k+Vl3KFA8
5VwUOdhORuwtc+KNc13TNOk1LTI7Wz1C406+tCTEjKv221woAmdpRiQZcpFj AyuXAUA7u9svDWmw
ia/ttJtYmbYHnjjRS3Jxk9+D+VZ+qeHvDcdzAks1vp9zcuRCnmIBK3Awsb5B 6r90Z6etaPiH/UWn
kf8AIS+0f8S/P3fO2P8Ae7bNnmbu+3O35ttY6/2N59t9i/5Bv2iLz8b92/ev 2Xbu5+z7923y/l3Y
x8vmUAVLnR49MkCXthatEzBUuo4FCEnoGHJU/p79qd/Zlh/z5W3/AH6X/Cu2 mhjuIXhmRXjcbWVh
kEVyV5ZyaNMscjM9k5xFM3JQ9kY/yPfoeestDTK39mWH/Plbf9+l/wAKP7Ms P+fK2/79L/hVqipK
Kv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/sy w/58rb/v0v8AhVqi
gCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7 MsP+fK2/79L/AIVa
ooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj +zLD/nytv+/S/wCF
WqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9+l/w o/syw/58rb/v0v8A
hVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf 8KP7MsP+fK2/79L/
AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+Vt/36 X/Cj+zLD/nytv+/S
/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/Plbf9 +l/wo/syw/58rb/v
0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/z5W3 /fpf8KP7MsP+fK2/
79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZYf8+V t/36X/Cj+zLD/nyt
v+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBmWH/P lbf9+l/wo/syw/58
rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8AZlh/ z5W3/fpf8KP7MsP+
fK2/79L/AIVaooAq/wBmWH/Plbf9+l/wo/syw/58rb/v0v8AhVqigCr/AGZY f8+Vt/36X/Cj+zLD
/nytv+/S/wCFWqKAKv8AZlh/z5W3/fpf8KP7MsP+fK2/79L/AIVaooAq/wBm WH/Plbf9+l/wo/sy
w/58rb/v0v8AhVqigCr/AGZYf8+Vt/36X/Cj+zLD/nytv+/S/wCFWqKAKv8A Zlh/z5W3/fpf8KKt
UUAaei2qXvgu2tJCwjntPLYr1AZcHHvzTbrwtFfRCK71C6uIw24JNFbuAfXB i68mrWkzx23haxuJ
m2xRWUbu2M4AQEninSa7ZRRtJIt4iICzM1jMAAOpJ2VptqiCW30q2h0t9OlH 2q3k8wSi4VW80OSW
DAAAg7iMYxils9J03TkgSx0+0tUgR0hWCFUEauwZwuBwGYAkDqQCaszSeVBJ JjOxS2PXArlv+Equ
f7f/ALM22H+v8nHnHzv9T5u/y/7v8Oc9aqMHLYTklubD+GtBkuLS4fRNNaey REtZGtULQKhygQ4y
oU8gDGO1WE0nTY0RE0+0VESJFUQqAqxNuiA44CMcqP4TyMUyC7madEk2EOSP lUjHBPqfSuc1XxjH
pmrzWDy3jzIBIUtrCWfahZgpJRGAyUbr6VL0GtTW0PwhoPh7S4rCw0y0VESE PIYEDztFgo8hCjc4
Ybs9jyMVci0LR4ft3laVYx/2hn7btt0H2nOc+Zx8+dzdc/ePrWZ/al5/z2/8 dH+FH9qXn/Pb/wAd
H+FTzIdh+q+D9M1nxDZazejfNZ+WY08iH7yOXQ+YU80YYg4VwpxgggsDoQ6F o9vLcyw6VYxyXUqz
3DpboDLIrb1diB8zBvmBPIPPWsz+1Lz/AJ7f+Oj/AAqrH4juJNUuNPEj+dBB FOzFF2lZGdRj3zG2
fqKOZBY6GXSdNmed5dPtJHuEdJmeFSZFdVVg3HIKxoCD1CKOwqO+0LR9Tiki v9KsbuOSUTuk9ukg
aQKEDkEcsFAXPXAx0qHS724uLlklk3KEJxgDnIrWpp3EZ91oWj32owajeaVY 3F9Bt8m5mt0eSPad
y7WIyMEkjHQ0Q6Fo9vLcyw6VYxyXUqz3DpboDLIrb1diB8zBvmBPIPPWtCim BWvdOstShEN/Z291
Erbwk8SuobkZwR15P50XOnWV5NBNdWdvPLbtvheWJWaJuDlSRweB09BVmigA pk0MdxC8MyK8bjay
sMgin0UAcvcaHe2LD7FuvLbp5buBIn0JwGH1IPuaz3vYYGCXW+0f+7cqY8/Q ng/gTXcUUmkO5w39
p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFLlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Gj+07D/n9tv+/q
/wCNdzRRyhc4b+07D/n9tv8Av6v+NH9p2H/P7bf9/V/xruaKOULnDf2nYf8A P7bf9/V/xo/tOw/5
/bb/AL+r/jXc0UcoXOG/tOw/5/bb/v6v+NH9p2H/AD+23/f1f8a7mijlC5w3 9p2H/P7bf9/V/wAa
P7TsP+f22/7+r/jXc0UcoXOG/tOw/wCf22/7+r/jR/adh/z+23/f1f8AGu5o o5QucN/adh/z+23/
AH9X/Gj+07D/AJ/bb/v6v+NdzRRyhc4b+07D/n9tv+/q/wCNH9p2H/P7bf8A f1f8a7mijlC5w39p
2H/P7bf9/V/xo/tOw/5/bb/v6v8AjXc0UcoXOG/tOw/5/bb/AL+r/jR/adh/ z+23/f1f8a7mijlC
5w39p2H/AD+23/f1f8aP7TsP+f22/wC/q/413NFHKFzhv7TsP+f22/7+r/jR /adh/wA/tt/39X/G
u5oo5QucN/adh/z+23/f1f8AGj+07D/n9tv+/q/413NFHKFzhv7TsP8An9tv +/q/40f2nYf8/tt/
39X/ABruaKOULnDf2nYf8/tt/wB/V/xo/tOw/wCf22/7+r/jXc0UcoXOG/tO w/5/bb/v6v8AjR/a
dh/z+23/AH9X/Gu5oo5QucN/adh/z+23/f1f8aP7TsP+f22/7+r/AI13NFHK Fzhv7TsP+f22/wC/
q/40f2nYf8/tt/39X/Gu5oo5QucN/adh/wA/tt/39X/Gj+07D/n9tv8Av6v+ NdzRRyhc4b+07D/n
9tv+/q/40f2nYf8AP7bf9/V/xruaKOULnDf2nYf8/tt/39X/ABo/tOw/5/bb /v6v+NdzRRyhc4b+
07D/AJ/bb/v6v+NH9p2H/P7bf9/V/wAa7mijlC5w39p2H/P7bf8Af1f8aP7T sP8An9tv+/q/413N
FHKFzhv7TsP+f22/7+r/AI0f2nYf8/tt/wB/V/xruaKOULnDf2nYf8/tt/39 X/Giu5oo5QuYMcby
+AVjjRnd9LCqqjJJMXAArN1BJ5Yr+RNZ8QXCyxTBLF9NURZZWCrkW4fAJGMv ngZJ5z0Ghf8AIvaZ
/wBekX/oArQqhFO6hkFtOxuZWGxjsIXHRuPu57jv/CPfPDeJRsudUaa41C3t 5NNVC1ta+ar4M24M
SpAwGH8S9evceiEBlKsAQRgg96w786awmszFdSsrKkypDNIu07SykhWByp6e /UdRpTmovUicWzC8
CRxxRSrGCp+2tuXyViCnyV4AV2GMYOc9SaxtdsrmPx5dakNK1S8h8iFImsb1 YVDpLMzB1Mqbxh06
hh19677RrTSIY5P7LtBbqkhDp5LRbX2g/dYDnBHOOlUtYurDT5XkuVSNWkCZ Ku5ZiN3RT9fyoqN1
Z3iVFWOLbTdRj1O5u7SwhUN532KOebMcFwVbM7IDgLIeDtyyg5xmWXbz+m+E Zn1WCKfR5v7GW5im
e3v47MJuEN0rN5cHyHl4BkjccDsox6Dp+u6TqUyQwYEru6ojwyru2k85zjBA yOc49DxW1fSaRpmk
jUr2OSOAmNcRrJKxaRlVVCoCzEswHA71nKnKO5b0dmjx2XRLixfQI9R0X7dF N9lNzaDyn+0Xgtrv
znYOwVn/ANWS5PzbRySKnn8KatKreZbTfYz5TNawtA7mISXjJAElzEfLE0HB +UbPkJKrXr2mjS9V
t2nt7W7RFcoRdW01u2cA8LIFJHPXGOvoauf2XZ/88f8Ax4/41NmK5zXgOyk0 7TobWUTKUjchJnRn
RS+VU7AEGAQNqjauNoJABPY1BBZW9u5eKPaxGM5J4qLU9Sh0q1S4nWRke4gt wEAJ3SyrEp5I43OC
fbPXpTSEXKKKKYBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQBn6F/yL2mf9ekX/oArQrP0L/kXtM/69Iv /QBWhQAVy99FO2oX
qpqes6bm43g2NksqygxRDJLwyDgqw4x3zniuoooAxdGhlb7W5ubzHnriSeER vNiKIFmUoMZKsOAB
ycAcY5zxtZ3UsVuYZL2XyblfM8iIOzfusbyAuc59MD5jx0x3tUb9rK3KS3Ky 7pW2KIldmZsE9EyT
wDz7VdOfJK44txaaPJvCljetrFg4bURHHczGR3gwi43ggkrjJPykdRk4weno PinT7jU/BsVta209
zIJrKUw28wikZI54nfY5ZdrbVbB3DnoQat2k1jJIkEi3iyyyOI/NimQH7zAZ KqPujp7dT1OndSm2
hQRKoJbaMjgcE9Pwq6tT2jHUqOb5mcnPpt9qGl2cFhpGpadc27yBbjUdSzKI jtLx+bHJK5EudgOT
s27xho4g2Xqvh/VLnxDpd7Z6LPa/ZpbJbQ2sdkiWtoroZYpXJ84MAZl2wsYy pUc5fPUWupa7eWcF
1HaacEmjWRQ075AIyM/JV/R9RfUbOOeRFUyRJLhe24Zx+HrXNCpGfwsTTW5w GjeB73S7HSzBpEFt
dWtpo53RGNWjnWY/bmBB+80QVXYf6xQFy2MVn+GPDt1eeGvDVzpXh/8As2Fb TT3vG/cR/wBoMLi0
lE2I2O7akU5zJtb95gAlmA9Qj1vTpfs2y4z9pu5bKL5G+aaLzN69OMeTJyeD t4JyM6FWI8/8BeFr
/Q9RM97FfLcC08m8nme1WO8nypMqiFPMl5VyHnIcB+hLuR6BRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAZ+hf8i9pn/X
pF/6AK0Kz9C/5F7TP+vSL/0AVoUAFFFFABWTrquVsmRrmMLO2ZbaLzHizDIo YLtYcFh1BHqK1qKA
OF8OaVd2CwWsup6ndu+o3VxvlsxGsCyG4YOD5KDc3mKWByN3CgDiuqvY2QRl ppJAZOFYLheHPGAP
UDnso75J0KZLEkybZFyM564x+NNbiZyGjWLy6Hp8n9jaXJutozveTDNlRyf3 Z5/E1qeEzu0a0PrZ
wH/x01J/wiHh3/oDWf8A36FaltaQWcQit4hGgAUKOwHQD2HpWNOnyFNtnO2e najF4obWn0+Bftks
lrLGNu6CFA2yfdn5mk8uMMAM7TCDjyCW6iiitRBRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQA
UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABR
RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAZ+h f8i9pn/XpF/6AK0K
z9C/5F7TP+vSL/0AVoUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRR
RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFAGfoX/IvaZ/1
6Rf+gCtCs/Qv+Re0z/r0i/8AQBWhQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRR
QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFA
BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAZ
+hf8i9pn/XpF/wCgCtCs/Qv+Re0z/r0i/wDQBWhQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUU
UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQ
AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFAB
RRRQAUUUUAZ+hf8AIvaZ/wBekX/oArQrB0XWtKi0LT45NTs0dLaNWVp1BBCj IIzV7+3dH/6Ctj/4
EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaFFZ/9u6P/ANBW x/8AAhP8aP7d0f8A
6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY/wDgQn+NAGhR Wf8A27o//QVsf/Ah
P8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/AKCtj/4EJ/jQ BoUVn/27o/8A0FbH
/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDAhP8AGj+3dH/6 Ctj/AOBCf40AaFFZ
/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBBWx/8CE/xo/t3 R/8AoK2P/gQn+NAG
hRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/AG7o/wD0FbH/ AMCE/wAaP7d0f/oK
2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/jQBoUVn/27o// AEFbH/wIT/Gj+3dH
/wCgrY/+BCf40AaFFZ/9u6P/ANBWx/8AAhP8aP7d0f8A6Ctj/wCBCf40AaFF Z/8Abuj/APQVsf8A
wIT/ABo/t3R/+grY/wDgQn+NAGhRWf8A27o//QVsf/AhP8aP7d0f/oK2P/gQ n+NAGhRWf/buj/8A
QVsf/AhP8aP7d0f/AKCtj/4EJ/jQBoUVn/27o/8A0FbH/wACE/xo/t3R/wDo K2P/AIEJ/jQBoUVn
/wBu6P8A9BWx/wDAhP8AGj+3dH/6Ctj/AOBCf40AaFFZ/wDbuj/9BWx/8CE/ xo/t3R/+grY/+BCf
40AaFFZ/9u6P/wBBWx/8CE/xo/t3R/8AoK2P/gQn+NAGhRWf/buj/wDQVsf/ AAIT/Gj+3dH/AOgr
Y/8AgQn+NAGhRWf/AG7o/wD0FbH/AMCE/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ ANu6P/0FbH/wIT/G
j+3dH/6Ctj/4EJ/jQBoUVn/27o//AEFbH/wIT/Gj+3dH/wCgrY/+BCf40AaF FZ/9u6P/ANBWx/8A
AhP8aP7d0f8A6Ctj/wCBCf40AaFFZ/8Abuj/APQVsf8AwIT/ABo/t3R/+grY /wDgQn+NAGhRWf8A
27o//QVsf/AhP8aP7d0f/oK2P/gQn+NAGhRWf/buj/8AQVsf/AhP8aP7d0f/ AKCtj/4EJ/jQBoUV
n/27o/8A0FbH/wACE/xo/t3R/wDoK2P/AIEJ/jQBoUVn/wBu6P8A9BWx/wDA hP8AGj+3dH/6Ctj/
AOBCf40AaFFZ/wDbuj/9BWx/8CE/xo/t3R/+grY/+BCf40AaFFZ/9u6P/wBB Wx/8CE/xo/t3R/8A
oK2P/gQn+NAGhRWf/buj/wDQVsf/AAIT/Gj+3dH/AOgrY/8AgQn+NAGhRWf/ AG7o/wD0FbH/AMCE
/wAaP7d0f/oK2P8A4EJ/jQBoUVn/ANu6P/0FbH/wIT/Gj+3dH/6Ctj/4EJ/j QBoUVn/27o//AEFb
H/wIT/GigDlTPNcOVtBGEU4aaTJGe4UDGfQnI/HBpfLv/wDn5tv/AAHb/wCL rI/tO+tv7J0/TrG2
uJrmzkuHa4uWhVQhjB+7G5JJlz26GpLHxho1/aefHcOpWCKaSIxMXjEioyKQ AfmYSKFUEljkLkqc
ZlGn5d//AM/Nt/4Dt/8AF0eXf/8APzbf+A7f/F1izeLrVNUsoo0uZLaaC4aV UsZ3njkRodoaMLuQ
FZSfmUdVOcEZkg8VWhnvxLJ5sUdysdr9jhkuHljMEMhfbGGJXMuNwGOVHUjI BreXf/8APzbf+A7f
/F0eXf8A/Pzbf+A7f/F1nt4s0YTSRJcTTFNuDBayyq5ZFcBGVSHbYwfCknbk 9ASLUOt6fc3kdrbT
PcM6hhJBC8kQBXcMyqCikqQQCQSGU/xDIAsTX8sk6efbDynCZ8huflVv7/8A tVL5d/8A8/Nt/wCA
7f8AxdUr7UP7J0zXdS8rzfsivP5e7bv2Qq2M4OM464pi669nI0OtwQ2c5jM0 X2eZp0lUMqkKditv
3Og27ed67dxyAAaHl3//AD823/gO3/xdHl3/APz823/gO3/xdUj4m0sQJIJL lmZmXyEs5mnUgAnd
EF3qAGQ5KgfOv94ZhtfEkKWP2jUQ8QN3dQ+ZFbyNGiRTvGGkYAhBtUEsxA6n gA4ANPy7/wD5+bb/
AMB2/wDi6PLv/wDn5tv/AAHb/wCLqtH4g02aG8lglmuFs5DDOILaSQq4coVw qklgRyBkgEN0IJzp
/GNlHPeJGjtHBYfbVmMcuwYMwZJCqHyiphIO4bskjbkYoA2vLv8A/n5tv/Ad v/i6PLv/APn5tv8A
wHb/AOLqlP4m0i2e5E1y6LbrIzymCTyz5YJdVfbtdlCtlVJYbW4+U4tafqtp qfmC3MyvHjfHPBJD
IAc4Ox1DbTggHGCVI7GgBts1/cWsM/n2y+Yivt8hjjIz/fqXy7//AJ+bb/wH b/4uoYGuk0C2azhh
muBBHsSaUxoeBnLBWI4z2P8AWqun+JbS7sdKnnSa3fULaGdcxSNEhkAwhl27 A2TgAkEkjjkUAaHl
3/8Az823/gO3/wAXR5d//wA/Nt/4Dt/8XUMet6fLBbTRTPItzaNewhIXZpIV CEsFAzn94ny4yc8C
oD4m0sQJIJLlmZmXyEs5mnUgAndEF3qAGQ5KgfOv94ZALvl3/wDz823/AIDt /wDF0eXf/wDPzbf+
A7f/ABdZOjeKrS+03S2upNl3dW0Ekpjhk8mOSRFYIZMFUY7hhWbJ3L13DOnp +q2mqeYbQzOiY/eN
BIkcgOcFHZQsinGcqSMEHuKAG2zX9xawz+fbL5iK+3yGOMjP9+pfLv8A/n5t v/Adv/i6zLvV/wCx
vDthPshO9Y4/MuJvJgi+TO6STB2LxtBwcsyjvkPTxJaQWtu+oSQpLLGJmNmZ LmGOMk7ZGlCAKhAJ
3MFHDckKTQBoeXf/APPzbf8AgO3/AMXR5d//AM/Nt/4Dt/8AF1WvPEGm6fNc R3ks0HkRtKzyW0gj
YKm8hH27XYKCdqknCtxwcCeINNlkt0hlmnNxgxmG2kkG0sVV2KqQqMQdrthW AJBIGaALPl3/APz8
23/gO3/xdRW7X88Zfz7ZcO6Y8hj91iv9/wBqo+GPEkOvaXYySB4r2a0jnkje 3kiViVG4x7wN6gsO
VLAZXnkZfd6jLpeiPcwW6TzNeiBI3kMalpLnyxlgrYAL56HpQBoeXf8A/Pzb f+A7f/F0eXf/APPz
bf8AgO3/AMXWZa+J7Y3n9m6iEttT88wCCJmmWRgsTnY20EgLMhOVGPmP3VLV MnibSJElcXLhUXer
NBIomXIUGLK/vgSygeXuyXXH3lyAXfLv/wDn5tv/AAHb/wCLo8u//wCfm2/8 B2/+LrPg8WaNcXUd
qtxMtzLI0SQS2sschZRGSNrKDwJUY8fdJborEPTxNpEiSuLlwqLvVmgkUTLk KDFlf3wJZQPL3ZLr
j7y5ALvl3/8Az823/gO3/wAXUStftdSQefbfIivu8huclh/f/wBn9ajTX7B5 LeNReGWfG2P7FNvQ
FioMi7MxqSDgvtBwSOAasx/8hW4/64Rf+hSUAHl3/wDz823/AIDt/wDF0eXf /wDPzbf+A7f/ABdZ
9prN1dxpqP2azh0N4zMt5NdlZPK25DmPZtCng8uCFOSAcqBvFekpGrM94rtI IlgNhOJiSrMCItm/
aQj/ADYx8jc8GgDQ8u//AOfm2/8AAdv/AIujy7//AJ+bb/wHb/4uqyeINNkk t44pZpnnxhYraRzH
8xX94FU+V8wYfPtwVYfwnFK78VWhgQ6fJ5krXNtGvmwyIksck8cbPGxAEigO DuUkfMp6EZANby7/
AP5+bb/wHb/4us7U9VuNMKqZreaU8+WsJU49Sdxx+VW7DW9P1KdobWZ2bbvQ vC6LKmQN8bMAJF5X
5kJHzLz8wzz2po02q3RYk7X2jJ6DA4/WmgYv/CU6j/zxtv8Avlv8aP8AhKdR /wCeNt/3y3+Nalp4
Xs5ra2ka5QGSIO3J64HrN7+309Kms6Lb6d5AglEhk3ZxjjGPRm9a1cEiFJlb /hKdR/5423/fLf40
f8JTqP8Azxtv++W/xok0r53SBmlZHKMCmMnBPHJz901D/Z8m0ttXAz0YZOOp A7j3HpUWRWpN/wAJ
TqP/ADxtv++W/wAaP+Ep1H/njbf98t/jUTaZMjbSik5wcMDg++Dx36+hoOmy hWbYNqjJYMCO/f8A
A/jxRZBqS/8ACU6j/wA8bb/vlv8AGj/hKdR/5423/fLf402XSnjkkQYcq+0E EYxzyeeOn+NM/s2X
cRtUYGdxcBfzzj1/I+lFkGpL/wAJTqP/ADxtv++W/wAafH4pvCQJIoVGeWVC cD6bhnt3rOltSVXB
kVd6lzFt37Nw3Bd3G7bnGeM4zWlqPh1LTSGv11RntbpANKeFP3k7uhdDKGXC qFBJxy2MjacISyC5
r2N9NqCFoLy3yPvI1swK/wDj9W/Lv/8An5tv/Adv/i65BIWjkWSMlXU5Vh1F dRpmpi8XypcLcKOR
2Yeo/wAO1S1YaZP5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVqufOu6n Npsuq2OkQ3OnfZnu
LfF0wuJwELJiIRkDecYG7OGBIBytIDW8u/8A+fm2/wDAdv8A4ujy7/8A5+bb /wAB2/8Ai6xdQ8Wx
Wzym2jtprZVgK30l0I7ZWkDtiSQKwQBVQg85M0YwAwNWrnWbq28OwaiLazmu J5IY444bstC3myrG
jCXZkrhw2dv0z1oA0PLv/wDn5tv/AAHb/wCLo8u//wCfm2/8B2/+LrPg8Qxp b3P9pRfZ7m2uRbSQ
2++43uY1kAjCqHf5HBPygjDdhmp08QabJJbxxSzTPPjCxW0jmP5iv7wKp8r5 gw+fbgqw/hOACz5d
/wD8/Nt/4Dt/8XR5d/8A8/Nt/wCA7f8AxdUo/E2kSnC3LgFkWNngkVZt7qit GSuJF3Og3LlRuUk4
INSSeIdKi1NdNe6/0xpDEsIjYlmCxsQMDnCyoxx0BJPCtgAs+Xf/APPzbf8A gO3/AMXR5d//AM/N
t/4Dt/8AF1SHibS2geZZLlowyqjLZzHzyQSPKwv70YUtlNw2jPTmi/8AENnZ aGmrq6PameKJ3kby
xGHlWNi24fKULHIOCCpBx2ALvl3/APz823/gO3/xdHl3/wDz823/AIDt/wDF 1ip400qbVmtbe9sZ
bVFjZ7tLoMgLJO5GVBAKrBk7iBhic8ANOPFNq+qWNmlrfbbtZcO9lOjKyNEO UKAhT5v3zhRtxn0A
NPy7/wD5+bb/AMB2/wDi6PLv/wDn5tv/AAHb/wCLrPbxZoiQyTS3vkwJtPnT RPHG6s6oHRmADpl0
y6kqAykkAg1aTW9PeB5vOdVjnit3DwurLJKIyilSAQT5sfbjPOMHAAqtftdS QefbfIivu8huclh/
f/2f1qXy7/8A5+bb/wAB2/8Ai6I/+Qrcf9cIv/QpKz11yaHUtTtb+y2JaRxT RvaGS5eRJHkVcosY
YN+7yQNwGevFAGh5d/8A8/Nt/wCA7f8AxdHl3/8Az823/gO3/wAXVYeIdKa1 urkXX7q1tvtU5MbZ
jjy4ORjIYGKQFfvAqQQDU39q2g1P+zmMyXB+6ZIJFjc7d2EkK7GbGThSTgN6 HAA/y7//AJ+bb/wH
b/4ujy7/AP5+bb/wHb/4usJ/F2zxNPpHkWbeTcx2+xbzN0+9EbesGzlF8z5j u4VHPbFalt4g0278
3yJZn8uMzDFtJ++QdWi+X96vI5TcPmX+8MgFny7/AP5+bb/wHb/4ujy7/wD5 +bb/AMB2/wDi6z28
V6SvlDfePLJvxDHYTvKuzbu3xhCyf6xD8wGQykcEVah1vT7m8jtbaZ7hnUMJ IIXkiAK7hmVQUUlS
CASCQyn+IZAFia/lknTz7YeU4TPkNz8qt/f/ANqpfLv/APn5tv8AwHb/AOLq lfah/ZOma7qXleb9
kV5/L3bd+yFWxnBxnHXFMg1yaKS8g1Sy8m4tY4pmWyMl2GSRnVcARhy2Y2yA uAMHPXABoeXf/wDP
zbf+A7f/ABdFZ/8AwlOn/wDPvq//AIJ7v/41RQBAfDthrA0e71C3trqG2snj FvcQLIpZ/KO7noQI
yOn8X5z3GgedHqYFzte8vYb2MmPIjeJYdgIz8y7oQTyCQSAR1qfS7K5m0m2l GptChQKqlVPRR/sH
1FW/7Ouf+gz/AOOD/wCN07BcwF8N6nDqY1W31WzXUJPN+0GSxZom3rAo2IJQ VwLdOrNkljxwBSPw
9tY1jEUlnceThIU1KyFzGqeTBFyu5cv/AKOp3AgAMwx3HWf2dc/9Bn/xwf8A xuj+zrn/AKDP/jg/
+N0AY9n4WSyubeSO6ykF6t0qeSq8LZ/Zgvy4UdN3AA7ADrUGj+En0q7sJReQ hLO2jhP2aBoZLopE
IwZ23lZFHJUFcqcYbru3/wCzrn/oM/8Ajg/+N0f2dc/9Bn/xwf8AxuiwFC+0 /wDtbTNd03zfK+1q
8Hmbd2zfCq5xkZxnpmqV94Xl1m3k/ti7trm5ChIdlqUhRRIkhDRs7FwzRpuy 3KrgbSSTsppUyM7L
rGDI25vlHJwB/wA8/QCn/wBnXP8A0Gf/ABwf/G6LAYFp4Vn03ybjTrjTrW8T zVIi00JbbZPL3ARI
6tu/cp8xdurdioWlqvgH+0bS4g+12b+f9oG68sfP8jzZZJN0Pzr5b/vcFud2 xDgYrrP7Ouf+gz/4
4P8A43R/Z1z/ANBn/wAcH/xuiwGPc+GPP0b7B9ohfF7Nd7bi382CTzJJH2SR 7hvUeZkcj5kVu2Kz
oPA8ttpN5YQahbRrfWk9rcBLMqiq7zOnlKH+QKZ2BBLZCgDb1rqf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwHO6h4Plv7S5sW1FEsma6mgUW5Mkcs6yqxZt+GUefIQoVT935u Dndi0/y9butS83Pn
20MHl7fu+W0rZznnPm9McY9+Jf7Ouf8AoM/+OD/43R/Z1z/0Gf8Axwf/ABui wFOOO/k0OyGn3Ntb
zeVGS1xbtMpXb0wHTnOOc/hWE3gOJJ7DyLi2aGza1KSXdoJrlFgKYSOUMuxW EfI2nl3P8WB00WlT
QxJFHrGERQqjaOAOn/LOn/2dc/8AQZ/8cH/xuiwGO/hSDydWSKbYb+RXGVLK qhzIY3XPzo0jzFhx
lZSmQAMUtN8H3WkTPd2F5p1vdtJIQsWnFLZUdIVZREJQQ2YFOd2PmbjkEdL/ AGdc/wDQZ/8AHB/8
bo/s65/6DP8A44P/AI3RYDndP8Hy2FpbWK6ij2StazTqbciSSWBYlUq2/Cqf IjJUqx+983Ixr6Hp
t1pFjHYSXcM9pbxpDahYCkioowN7byHbAXkBRkHjnAt/2dc/9Bn/AMcH/wAb o/s65/6DP/jg/wDj
dFgKccd/JodkNPuba3m8qMlri3aZSu3pgOnOcc5/CsKfwFbzSrNI9jPNIrLc Pd6es5BaWSVjAGOI
zumf7wkGAmQdp3dNFpU0MSRR6xhEUKo2jgDp/wAs6f8A2dc/9Bn/AMcH/wAb osByeq+Af7Su7iX7
XZp5v2g+e1juuj5sUke1pt43Ivm/Ku0YVEXPGa6GbTboa3/aVndwxebHFDcx zQGTekbOw2EOuxv3
j5JDD7vHBzb/ALOuf+gz/wCOD/43R/Z1z/0Gf/HB/wDG6LAZumaB/Z39i/6T 5n9m6c1h/q8eZnyf
n68f6npz97rxyXekxa3oj2M+zyWvRI6vGHV1jud5Ug9QwXH49+laX9nXP/QZ /wDHB/8AG6ZHpU0S
lU1jALFvujqSSf8Aln6k0WArw6Ha2mpWVxZxw2tvaW08CW0MQRP3rxuSMYA5 jPGOd354r+Ep4rCF
GvPP/sy2WLTY4oAr4R4pFEhZ8SMTBEODGPvdMgr0v9nXP/QZ/wDHB/8AG6P7 Ouf+gz/44P8A43RY
DnfDui6mNWm1zVWSO5maYeQsQQ7XS2UEgSOFI+zHgM2QwOQcqILLwHb2FnLb QxaKy+QtvF5ukK3m
IGU5nO4GVvkHIKDcSxU8AdT/AGdc/wDQZ/8AHB/8bo/s65/6DP8A44P/AI3Q BgReE5o7jTpG1Hc1
rgyXOyT7VLiRpPL84yE+TkgeW4f5R1Jww3Y/+Qrcf9cIv/QpKd/Z1z/0Gf8A xwf/ABumDSphK0o1
j52UKTtHQZx/yz9zRYDKPh26Omy6L9vhGhvbParCLY/aEiZCoUS79vy5ABKE 4Azk5Ykfh26k1m21
a/v4ZbuGRCRBbGKNkSOdFXBdiGzcMSc4IAGByTsf2dc/9Bn/AMcH/wAbo/s6 5/6DP/jg/wDjdFgM
BPCTx6hBcLeQxiO5knaWGBo7lw07zeUZQ+DFlwCjKQcE8EgqyPwfL5dhDLqK NDpqww2YS3KsIkmh
kIkO872It0G4BQMsdpyAOi/s65/6DP8A44P/AI3VXUlfS9NuL6fWHMUCF2VI wWOOw/d9T05osBm+
HPCNv4dnDQrYhY4Ps8TQWKxSumRzNJkmRvlHI2gksSp42ksXmX96f+m3/sq1 uvpl0jsjaxhlOCNg
6/8AfumRaQsZkY30cjSNvZmDZzgDsg9KaEzPt9Q1W2hgiSW3KwxiNSVlyQAP SX27YHt0qK7mvdQm
ie7eMiJWChA/fH9529O2K2f7NX/n6g/J/wD4mj+zV/5+oPyf/wCJq+cnlMh2 kkmaRizA7gFLZ27g
RxTVXCAbDuVSgOeMHOePxNbP9mr/AM/UH5P/APE0f2av/P1B+T//ABNToVqZ bOEnkaJWAZyxO7k9
Rxxx1NRy5lQqQ5yQcu248Z/xrY/s1f8An6g/J/8A4mj+zV/5+oPyf/4mjQDJ DlXd1QhnbcxDd8EH
Hp96jed5YiRxgDDvuB/3sjnr7Vrf2av/AD9Qfk//AMTR/Zq/8/UH5P8A/E0a Bqc3cWTyxBUMYIdG
xKm9GAYEqy5GVIGCM8gmrF7Nq97b3scl+HN6m2VZoy8aH+Fok3Dy2U42kHtl tzAMNz+zV/5+oPyf
/wCJo/s1f+fqD8n/APiaLoRgfZ/aj7MchlJVlOVZeoPqK3/7NX/n6g/J/wD4 mj+zV/5+oPyf/wCJ
ougKlrqYO2K7xFIeA5wEc+3ofY/hmodO0y/0x4LWC9tjpEC+XFbvbMZlQDCr 5vmYIXgAlM4ABJOW
Og2lxspVrm3KkYIIfn/x2o10ZYf+Pe/WD2jLbf8AvkqV/Sk0h3M2w0G40XS2 tNIuraGRp95kuLdp
V8sKEjTaJFOVjSJN2edmSMsTRL4aiuPDw0m4lSVXu1u5y8QKSN9oE7rsJ4Vj uUAk4BGd2OdX+zrn
/oM/+OD/AON0f2dc/wDQZ/8AHB/8bpWGYF54MtZbFLG3FmtlBc/arW0uLQTQ ROwcOCmRuQ+YWC5B
Vu5XCgi8I+Tcac8M9nbJa4LtZ2f2eVsSNIY1ZHAEJJwY2VsjJJLHcN/+zrn/ AKDP/jg/+N0f2dc/
9Bn/AMcH/wAbosBzqeD5fs9rBJqKMunQJBpxW3IKKkkUi+b858w5gizt2ZG7 pkbbWl+Hbq012XV7
y/huLiXzd6w2xiT51t1GAXY8C3Hfnd2xzsf2dc/9Bn/xwf8Axuj+zrn/AKDP /jg/+N0WA52XwhLP
o9ppdxc2Nzbac0ZsUuLAyKFVGjAmUyYkO1s5XZhgDjHFaC+H0TQbbS0khiEN zDcZgt1jjyk6zFVR
cBVJBA5JAOSWOSdL+zrn/oM/+OD/AON0f2dc/wDQZ/8AHB/8bosBj6r4Y/tL Wf7R+0Q8RonkT2/m
xttjuU+YbhlT9p5HomM/NkR6d4YuNNntbmLUEM8TSKyGFjAsLmPdHChkJiA8 lNvzMq5bC4IC7n9n
XP8A0Gf/ABwf/G6P7Ouf+gz/AOOD/wCN0WA52PwfL5dhDLqKNDpqww2YS3Ks IkmhkIkO872It0G4
BQMsdpyANCTSftHi6PUpINsVvbLtk3582XMijjPy7EeTthvP9UFaX9nXP/QZ /wDHB/8AG6P7Ouf+
gz/44P8A43RYBsf/ACFbj/rhF/6FJWFd+FrrUfOnv76znu5PKUobI/ZXSPzN qyQmQl+ZWb74G5Yz
j5TncGlTCVpRrHzsoUnaOgzj/ln7mn/2dc/9Bn/xwf8AxuiwGBZeDYLa00uG WWFjZXMsxEEBijZX
lMwjVNx2KsiwsOTxFjoxFCeEdniaDV/Ps28m5kuN7Webp96Ouxp9/KL5nyjb wqIO2a3/AOzrn/oM
/wDjg/8AjdH9nXP/AEGf/HB/8bosBjy+HbqbU7uRr+EafdXsN68Atj5oeJYt oEm/G3MKk/JnBIyO
CM6y8BW9jZy2sL2MS+QsETw6eqPKgZWxcNnMwbYAwGwMGfI5G3qf7Ouf+gz/ AOOD/wCN0f2dc/8A
QZ/8cH/xuiwGBoHhH+xdTa98+zG7zv3FnZ/Z4l8xbcfKu9sY+z5PqXPTHJo/ hJ9Ku7CUXkISzto4
T9mgaGS6KRCMGdt5WRRyVBXKnGG67t/+zrn/AKDP/jg/+N0f2dc/9Bn/AMcH /wAbosBQvtP/ALW0
zXdN83yvtavB5m3ds3wqucZGcZ6ZqG/8LWEulrY6fa2NnCJ/PMH2RWt5m2lf 3sQK7xjBHIwyof4c
VpJpUyM7LrGDI25vlHJwB/zz9AKg1JX0vTbi+n1hzFAhdlSMFjjsP3fU9OaL Bc53/hBf+nPwj/4T
v/26iu4/4RrVf+gn+i//ABFFOzFdFPSf+Resvx/9ASuJTxHqdqmoaiJr6+Wz nvzcW01qIreOCEzb
PLlEY3NlIl+8/wB5jt4yvT2t3qEWjWMVlpL3gCbmf7TDEBlVwMOwJPHpjpz1 xTa21BtMudNPhVja
XXnedH/acHzeazNJzvyMl26HjPGKGtQQl74lvLJLh30tFFlaC+vUe5w8cJMm 0IApDybYmyuVUHAD
MPmEMnjCWzgmvr7TkTTlnu4InguDJKzW4lLZQooUFYHxhjyVHckSX9jfalOs 114WlZtuxwmrRIsq
ZJ2SKsgEi8t8rgj5m4+Y5pWOg31sZ3ufDUt4009xKUn1SJ4lEzuxAiaQop2u VJABILf3iKVh3JoP
GF/K0EH9gTC6nuVgjDGWKI7o5XzumiRjt8o7gFOAwI3H5am03XdRWBptQghe 0bVprNLlJvnVfPlj
TcgQfxiKMYJzu3EjBpltpl5azRTJ4XuJJ4pPNSafWY5pAdjoBueUkqBI+FJw CxIGTmmXumarcWd9
bQ+HpYI79l+0p/acLIyFsyqqeZhC6lwWXBy27kiiwHQaTqH9q6ZDfiLy4p9z w/NnfFuPlv0GNybW
weRuweRV2sn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4ulYLmtRWT9t17 /oW2/wDBjb//ABdH
23Xv+hbb/wAGNv8A/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMb f/4uizC5rUVk/bde
/wChbb/wY2//AMXR9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi 6Ptuvf8AQtt/4Mbf
/wCLoswua1FZP23Xv+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWorJ+2 69/0Lbf+DG3/APi6
Ptuvf9C23/gxt/8A4uizC5rUVk/bde/6Ftv/AAY2/wD8XR9t17/oW2/8GNv/ APF0WYXNaisn7br3
/Qtt/wCDG3/+Lo+269/0Lbf+DG3/APi6LMLmtRWT9t17/oW2/wDBjb//ABdH 23Xv+hbb/wAGNv8A
/F0WYXNaisn7br3/AELbf+DG3/8Ai6Ptuvf9C23/AIMbf/4uizC5rUVk/bde /wChbb/wY2//AMXR
9t17/oW2/wDBjb//ABdFmFzWorJ+269/0Lbf+DG3/wDi6Ptuvf8AQtt/4Mbf /wCLoswua1FZP23X
v+hbb/wY2/8A8XR9t17/AKFtv/Bjb/8AxdFmFzWrD8Y/8ijqX/XL+oqb7br3 /Qtt/wCDG3/+Lqhr
Sa/q2jXVgugGNpk2hzf25AP/AH3TSC5r+LLufT9O1C/gfZ9kkFxLgAloUcNK oB43GMOB05I5HUYc
viS7t4Lu5ijS7Mt/LFa2zCTesUQEUhxDFIxHmqxyRjEi5IJC1sXGo61NcyyR eHJDG7ll339urYJ4
yN/B9qx5NMvHsbO0Hhe4iis4xDbtBrMcUiIABt3pKGK/KuQTglQTkgUWAZ4a 8Sf2rrV1GizNb3ub
uAyvzCgtrMhNvIGTOScHAOeuc1Hp3jqTUriyWHRrloZlt/OaNJXMTyxpIMFY /LKqJFyWdTgMdvTc
qaDLFbpDB4TuIAm3a8GtpFIAI0jA3rKG27YowRnBKAnJGafBo09s9sYfCUqL brGqRDWIvLPlgBGZ
PM2uyhVwzAsNq8/KMFgOtorJ+269/wBC23/gxt//AIuj7br3/Qtt/wCDG3/+ LpWYXNaisn7br3/Q
tt/4Mbf/AOLo+269/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23 Xv8AoW2/8GNv/wDF
0WYXNaisn7br3/Qtt/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW 2/8ABjb/APxdH23X
v+hbb/wY2/8A8XRZhc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Los wua1FZP23Xv+hbb/
AMGNv/8AF0fbde/6Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+26 9/0Lbf8Agxt//i6L
MLmtRWT9t17/AKFtv/Bjb/8AxdH23Xv+hbb/AMGNv/8AF0WYXNaisn7br3/Q tt/4Mbf/AOLo+269
/wBC23/gxt//AIuizC5rUVk/bde/6Ftv/Bjb/wDxdH23Xv8AoW2/8GNv/wDF 0WYXNaisn7br3/Qt
t/4Mbf8A+Lo+269/0Lbf+DG3/wDi6LMLmtRWT9t17/oW2/8ABjb/APxdH23X v+hbb/wY2/8A8XRZ
hc1qKyftuvf9C23/AIMbf/4uj7br3/Qtt/4Mbf8A+Loswua1FZP23Xv+hbb/ AMGNv/8AF0fbde/6
Ftv/AAY2/wD8XRZhc1qKyftuvf8AQtt/4Mbf/wCLo+269/0Lbf8Agxt//i6L MLmtWH4x/wCRR1L/
AK5f1FTfbde/6Ftv/Bjb/wDxdUNaTX9W0a6sF0AxtMm0Ob+3IB/77ppBc9Uo rm/+Etb/AKF/Vf8A
vq2/+PUVV0SV9DnktvAtxcQttlit2dGxnBEQIPNE/iPw/a3EtvceP7SGeJyk kcl5aKyMDgggrkEH
jFJoaG48FzWibhJPA0anYxALRgDJANa/2/VP+gfbf9/5f/jNMCvLrEumeGbi 9lDXlzHPJbwRsQhn
lMxihQkDC7mKLuxgZyeM1i3fje8U6GYLWCNr393dwyEuYJlvbW1ljDAgNtM0 o3YwSqkcdb17oCaz
ptjaahNcxRQ6g97PFatMnm8yMi712MNrvG+fWMcdxlr4Ctob9JbbUrxbWK7N zFBNFNOUzPaTuu92
JO57V2J9Zye3zAHfUVD9pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A 36b/AAo+0x/3Zf8A
v03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/ AHZf+/Tf4UATUVD9
pj/uy/8Afpv8KPtMf92X/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+ FAE1FQ/aY/7sv/fp
v8KPtMf92X/v03+FAE1FQ/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/u y/8Afpv8KPtMf92X
/v03+FAE1FQ/aY/7sv8A36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KP tMf92X/v03+FAE1F
Q/aY/wC7L/36b/Cj7TH/AHZf+/Tf4UATUVD9pj/uy/8Afpv8KPtMf92X/v03 +FAE1FQ/aY/7sv8A
36b/AAo+0x/3Zf8Av03+FAE1FQ/aY/7sv/fpv8KPtMf92X/v03+FAE1FQ/aY /wC7L/36b/Cj7TH/
AHZf+/Tf4UAFp/x5wf8AXNf5VNVS1uEW0hBWXIRRxEx7fSpftMf92X/v03+F ICaioftMf92X/v03
+FH2mP8Auy/9+m/wpgTUVD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj /uy/9+m/wo+0x/3Z
f+/Tf4UATUVD9pj/ALsv/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo +0x/3Zf+/Tf4UATU
VD9pj/uy/wDfpv8ACj7TH/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/T f4UATUVD9pj/ALsv
/fpv8KPtMf8Adl/79N/hQBNRUP2mP+7L/wB+m/wo+0x/3Zf+/Tf4UATUVD9p j/uy/wDfpv8ACj7T
H/dl/wC/Tf4UATUVD9pj/uy/9+m/wo+0x/3Zf+/Tf4UATUVD9pj/ALsv/fpv 8KPtMf8Adl/79N/h
QBNRU
Re: building a plugin for external binaries (fao Ed Merks) [message #389619 is a reply to message #389618] Tue, 30 November 2004 15:09 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------020008030809070808050707
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

The only files in the lginterface plugin are these:

lginterface/:
. .. .classpath .project build.properties plugin.xml

This entry in the plugin.xml:

<runtime>
<library name="lginterface">
<export name="*"/>
</library>
</runtime>

implies that you should have a folder called *lginterface* and if you
had a class called a.B, you'd have a file structure like this:

lginterface/:
. .. .classpath .project build.properties lginterface plugin.xml

lginterface/*lginterface*:
. .. a

lginterface/lginterface/a:
. .. B.class

The root folder with the .class files, or the jar, *must *be in
physically located in this plugin.


Ian Ward wrote:

> Ed,
> I'm not sure exactly what you need but here is effectively the whole
> of my project, including the 'server' plug-in lginterface. I opened
> 'plug-in development' for the workspace and exported everything.
> Many thanks
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389620 is a reply to message #389619] Tue, 30 November 2004 15:32 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: richkulp.us.NO_SPAM.ibm.com

One problem is the build.properties and .classpath file. They don't
match what the plugin.xml says:

source.lginterface.jar = src/
output.lginterface.jar = bin/
bin.includes = plugin.xml,\
lginterface.jar

This (and the .classpath file) say that before exporting, the source is
in the src directory, and the output is in the bin directory, and when
exported, the code will be built into the lginterface.jar.

However, the plugin.xml says that the runtime is NOT a jar, but is a
classfolder e.g.:

<runtime>
<library name="lginterface">
<export name="*"/>
</library>
</runtime>


If you want it to be a jar, then you need to change the library name to
be lginterface.jar in the plugin.xml.

Then your project before you export it through the PDE will need to have
this structure:

src/... (source goes here)
..classpath
..project
build.properties
plugin.xml

Then when you export it through the PDE, via Export->Deployable Plugins
and Fragments, it will export your plugin correctly for the usage within
an Eclipse runtime.
--
Thanks,
Rich Kulp
Re: building a plugin for external binaries (fao Ed Merks) [message #389624 is a reply to message #389619] Tue, 30 November 2004 17:04 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0019_01C4D730.E527A840
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,

What you're saying here seems to me to be more or less what I've been =
saying, only the other way about - my way is the ignorant way!=20

I have wanted to ship the plug-in out, after writing it, to where it can =
reference my .class binaries - and I've been concerned that failing to =
do this properly means the .class files can't be accessed....and you =
seem to be saying that the folder of binaries have to be integrated into =
the plug where it is being constructed.

I must admit to being a bit baffled by your a.B notation that you insist =
on using. Neither have I seen anywhere else the way you have laid out =
the file structures for the plug-in - but then I am completely new to =
the environment which isn't helping. Can we agree I've just got Bs in my =
lginterface folder, and so skip the a? But it's not the main problem =
anyway, is it?

The main problem (and another possible?) is, I think, the following...I =
haven't much idea how to do what your suggesting. Do I just copy/paste =
my famous lginterface folder into my workspace? I bet not! So I do a =
sort of import or something I suppose? I'll have a look while I'm =
waiting for your next instalment - gratefully of course.

The other possible problem is that lginterface is just that, an =
interface to something else - in fact, it's a jni to a set of dlls and a =
bunch of cs and hs.plus some data files. So I think all this has to be =
bundled together. Even if I imported it all into my project and got =
everything talking to everything else, I'm quite concerned about how all =
this would export out as some sort of runnable standalone system. I =
haven't looked at all at how Eclipse manages this but I'm sure that =
starting to jar it could cause problems. Ok, I'm being pessimistic due =
to my ignorance - although I have seen, in passing, a post in the =
platform forum referring to how Eclipse doesn't like jni.

Right, I'm panicking, deep breaths....if you're still there, can I refer =
you back to the previous paragraph but one - how do I get lginterface to =
be where you say it's supposed to be? Which is I suppose right there in =
the workspace somewhere. I will start to look at it but I'd appreciate =
some more guidance, hand-holding etc;

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coik1r$r0u$1@www.eclipse.org...
Ian,

The only files in the lginterface plugin are these:

lginterface/:
. .. .classpath .project build.properties plugin.xml

This entry in the plugin.xml:

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>

implies that you should have a folder called lginterface and if you =
had a class called a.B, you'd have a file structure like this:

lginterface/:
. .. .classpath .project build.properties lginterface =
plugin.xml

lginterface/lginterface:
. .. a

lginterface/lginterface/a:
. .. B.class

The root folder with the .class files, or the jar, must be in =
physically located in this plugin.




------=_NextPart_000_0019_01C4D730.E527A840
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>What you&#8217;re saying here seems to me to be more or less what =
I&#8217;ve been saying,=20
only the other way about &#8211; my way is the ignorant way! </P>
<P>I have wanted to ship the plug-in out, after writing it, to where it =
can=20
reference my .class binaries &#8211; and I&#8217;ve been concerned that =
failing to do this=20
properly means the .class files can&#8217;t be =
accessed&#8230;&#8230;..and you seem to be saying=20
that the folder of binaries have to be integrated into the plug where it =
is=20
being constructed.</P>
<P>I must admit to being a bit baffled by your a.B notation that you =
insist on=20
using. Neither have I seen anywhere else the way you have laid out the =
file=20
structures for the plug-in &#8211; but then I am completely new to the =
environment=20
which isn't helping. Can we agree I&#8217;ve just got Bs in my =
lginterface folder, and=20
so skip the a? But it&#8217;s not the main problem anyway, is it?</P>
<P>The main problem (and another possible?) is, I think, the =
following&#8230;..I=20
haven&#8217;t much idea how to do what your suggesting. Do I just =
copy/paste my famous=20
lginterface folder into my workspace? I bet not! So I do a sort of =
import or=20
something I suppose? I&#8217;ll have a look while I&#8217;m waiting for =
your next instalment=20
&#8211; gratefully of course.</P>
<P>The other possible problem is that lginterface is just that, an =
interface to=20
something else &#8211; in fact, it&#8217;s a jni to a set of dlls and a =
bunch of cs and=20
hs&#8230;plus some data files. So I think all this has to be bundled =
together. Even if=20
I imported it all into my project and got everything talking to =
everything else,=20
I&#8217;m quite concerned about how all this would export out as some =
sort of runnable=20
standalone system. I haven&#8217;t looked at all at how Eclipse manages =
this but I&#8217;m=20
sure that starting to jar it could cause problems. Ok, I&#8217;m being =
pessimistic due=20
to my ignorance &#8211; although I have seen, in passing, a post in the =
platform forum=20
referring to how Eclipse doesn&#8217;t like jni.</P>
<P>Right, I&#8217;m panicking, deep breaths&#8230;&#8230;&#8230;.if =
you&#8217;re still there, can I refer you=20
back to the previous paragraph but one &#8211; how do I get lginterface =
to be where=20
you say it&#8217;s supposed to be? Which is I suppose right there in the =
workspace=20
somewhere. I will start to look at it but I&#8217;d appreciate some more =
guidance,=20
hand-holding etc;</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt;=20
a =E9crit dans le message news: <A=20
=
href=3D"mailto:coik1r$r0u$1@www.eclipse.org">coik1r$r0u$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
only files in the lginterface plugin are these:<BR>
<BLOCKQUOTE>lginterface/:<BR>.&nbsp; ..&nbsp; .classpath&nbsp;=20
.project&nbsp; build.properties&nbsp; =
plugin.xml<BR></BLOCKQUOTE>This entry in=20
the plugin.xml:<BR><BR>&nbsp;&nbsp;=20
&lt;runtime&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;library=20
=
name=3D"lginterface"&gt;<BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nb=
sp;=20
&lt;export name=3D"*"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;/library&gt;<BR>&nbsp;&nbsp; &lt;/runtime&gt;<BR><BR>implies that =
you=20
should have a folder called <B>lginterface</B> and if you had a class =
called=20
a.B, you'd have a file structure like this:<BR>
<BLOCKQUOTE>lginterface/:<BR>.&nbsp; ..&nbsp; .classpath&nbsp;=20
.project&nbsp; build.properties&nbsp; lginterface&nbsp;=20
plugin.xml<BR><BR>lginterface/<B>lginterface</B>:<BR >.&nbsp; =
...&nbsp;=20
a<BR><BR>lginterface/lginterface/a:<BR>.&nbsp; ..&nbsp;=20
B.class<BR></BLOCKQUOTE>The root folder with the .class files, or the =
jar,=20
<B>must </B>be in physically located in this=20
plugin.<BR><BR><BR></BLOCKQUOTE></BODY></HTML>

------=_NextPart_000_0019_01C4D730.E527A840--
Re: building a plugin for external binaries (fao Ed Merks) [message #389625 is a reply to message #389620] Tue, 30 November 2004 17:04 Go to previous messageGo to next message
Eclipse UserFriend
Rich,
Thanks for your help - I'm a bit concerned if things don't match of course -
I suppose I should have been careful when I blithely edited the plugin.xml
without thinking about what damage I could be causing!
However, I don't think I want a jar (see my reply to Ed) which is why the
plugin.xml (all my own work!!) says so. I'll have a look at these other
files but I don't know how to fix 'em! Should "lginterface.jar" just read
"lginterface" or what?
Your final remarks about exporting through the PDE etc. have gone right over
my head which is, I think, where I am, in right over my head - I'm hoping
that, if I get away with not creating a jar then I won't need to do all of
that either - if not, then I'm starting to sweat!

Ian

"Rich Kulp" <richkulp@us.NO_SPAM.ibm.com> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389627 is a reply to message #389624] Tue, 30 November 2004 18:09 Go to previous messageGo to next message
Eclipse UserFriend
This is a multi-part message in MIME format.
--------------080604010005030702070406
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Ian,

I think this uses up all the tabs on your free help coupon. These
aren't really EMF questions at all to begin with...

Getting all this to run may be hard, but to get it to compile I suggest:
build a jar, e.g., lginterface.jar, put it the same directory as your
plugin.xml, and put "lginterface.jar" in your plugin.xml's
runtime/library. Failing that, you need to learn to set the JDT's
classpath manually. If you can't get any of that to work, it's not EMF
help you need, it's platform, PDE, or JDT help that you need, i.e.,
other some of the newsgroups...


Ian Ward wrote:

> Ed,
>
> What you're saying here seems to me to be more or less what I've been
> saying, only the other way about - my way is the ignorant way!
>
> I have wanted to ship the plug-in out, after writing it, to where it
> can reference my .class binaries - and I've been concerned that
> failing to do this properly means the .class files can't be
> accessed........and you seem to be saying that the folder of binaries
> have to be integrated into the plug where it is being constructed.
>
> I must admit to being a bit baffled by your a.B notation that you
> insist on using. Neither have I seen anywhere else the way you have
> laid out the file structures for the plug-in - but then I am
> completely new to the environment which isn't helping. Can we agree
> I've just got Bs in my lginterface folder, and so skip the a? But it's
> not the main problem anyway, is it?
>
> The main problem (and another possible?) is, I think, the
> following.....I haven't much idea how to do what your suggesting. Do I
> just copy/paste my famous lginterface folder into my workspace? I bet
> not! So I do a sort of import or something I suppose? I'll have a look
> while I'm waiting for your next instalment - gratefully of course.
>
> The other possible problem is that lginterface is just that, an
> interface to something else - in fact, it's a jni to a set of dlls and
> a bunch of cs and hs...plus some data files. So I think all this has
> to be bundled together. Even if I imported it all into my project and
> got everything talking to everything else, I'm quite concerned about
> how all this would export out as some sort of runnable standalone
> system. I haven't looked at all at how Eclipse manages this but I'm
> sure that starting to jar it could cause problems. Ok, I'm being
> pessimistic due to my ignorance - although I have seen, in passing, a
> post in the platform forum referring to how Eclipse doesn't like jni.
>
> Right, I'm panicking, deep breaths..........if you're still there, can
> I refer you back to the previous paragraph but one - how do I get
> lginterface to be where you say it's supposed to be? Which is I
> suppose right there in the workspace somewhere. I will start to look
> at it but I'd appreciate some more guidance, hand-holding etc;
>
> Ian
>
> "Ed Merks" <merks@ca.ibm.com <mailto:merks@ca.ibm.com>> a
Re: building a plugin for external binaries (fao Ed Merks) [message #389631 is a reply to message #389627] Wed, 01 December 2004 03:17 Go to previous messageGo to next message
Eclipse UserFriend
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_000B_01C4D786.8EEE7C00
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,
I appreciate that we're getting a bit off-topic.=20
Sometimes my mails have been a bit long and although I could have made =
them a bit drier this is mostly 'cos I was trying to give you as much =
info as possible. However, this doesn't always make it easy for you to =
extract the essentials and we may have sometimes been at cross-purposes =
as a result. I realise you don't have a lot of time to devote to this. I =
hadn't realised there was a limit on a single thread (logical I =
suppose).
Thanks anyway
Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coiuj5$d8o$1@www.eclipse.org...
Ian,

I think this uses up all the tabs on your free help coupon. These =
aren't really EMF questions at all to begin with...

Getting all this to run may be hard, but to get it to compile I =
suggest: build a jar, e.g., lginterface.jar, put it the same directory =
as your plugin.xml, and put "lginterface.jar" in your plugin.xml's =
runtime/library. Failing that, you need to learn to set the JDT's =
classpath manually. If you can't get any of that to work, it's not EMF =
help you need, it's platform, PDE, or JDT help that you need, i.e., =
other some of the newsgroups...


Ian Ward wrote:=20
Ed,

What you're saying here seems to me to be more or less what I've =
been saying, only the other way about - my way is the ignorant way!=20

I have wanted to ship the plug-in out, after writing it, to where it =
can reference my .class binaries - and I've been concerned that failing =
to do this properly means the .class files can't be accessed....and you =
seem to be saying that the folder of binaries have to be integrated into =
the plug where it is being constructed.

I must admit to being a bit baffled by your a.B notation that you =
insist on using. Neither have I seen anywhere else the way you have laid =
out the file structures for the plug-in - but then I am completely new =
to the environment which isn't helping. Can we agree I've just got Bs in =
my lginterface folder, and so skip the a? But it's not the main problem =
anyway, is it?

The main problem (and another possible?) is, I think, the =
following...I haven't much idea how to do what your suggesting. Do I =
just copy/paste my famous lginterface folder into my workspace? I bet =
not! So I do a sort of import or something I suppose? I'll have a look =
while I'm waiting for your next instalment - gratefully of course.

The other possible problem is that lginterface is just that, an =
interface to something else - in fact, it's a jni to a set of dlls and a =
bunch of cs and hs.plus some data files. So I think all this has to be =
bundled together. Even if I imported it all into my project and got =
everything talking to everything else, I'm quite concerned about how all =
this would export out as some sort of runnable standalone system. I =
haven't looked at all at how Eclipse manages this but I'm sure that =
starting to jar it could cause problems. Ok, I'm being pessimistic due =
to my ignorance - although I have seen, in passing, a post in the =
platform forum referring to how Eclipse doesn't like jni.

Right, I'm panicking, deep breaths....if you're still there, can I =
refer you back to the previous paragraph but one - how do I get =
lginterface to be where you say it's supposed to be? Which is I suppose =
right there in the workspace somewhere. I will start to look at it but =
I'd appreciate some more guidance, hand-holding etc;

Ian

"Ed Merks" <merks@ca.ibm.com> a =E9crit dans le message news: =
coik1r$r0u$1@www.eclipse.org...
Ian,

The only files in the lginterface plugin are these:

lginterface/:
. .. .classpath .project build.properties plugin.xml

This entry in the plugin.xml:

<runtime>
<library name=3D"lginterface">
<export name=3D"*"/>
</library>
</runtime>

implies that you should have a folder called lginterface and if =
you had a class called a.B, you'd have a file structure like this:

lginterface/:
. .. .classpath .project build.properties lginterface =
plugin.xml

lginterface/lginterface:
. .. a

lginterface/lginterface/a:
. .. B.class

The root folder with the .class files, or the jar, must be in =
physically located in this plugin.






------=_NextPart_000_000B_01C4D786.8EEE7C00
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type =
content=3Dtext/html;charset=3DISO-8859-1>
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>I appreciate that we're getting a bit =
off-topic.=20
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Sometimes my mails have been a bit long =
and=20
although I could have made them a bit drier this is mostly 'cos I was =
trying to=20
give you as much info as possible. However, this doesn't always make it =
easy for=20
you to extract the essentials and we may have sometimes been at =
cross-purposes=20
as a result. I realise you don't have a lot of time to devote to this. I =
hadn't=20
realised there was a limit on a&nbsp;single thread (logical I=20
suppose).</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Thanks anyway</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>Ian</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>"Ed Merks" &lt;<A =
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a=20
=E9crit dans le message news: <A=20
href=3D"mailto:coiuj5$d8o$1@www.eclipse.org">coiuj5$d8o$1@www.eclipse.org=
</A>...</DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">Ian,<BR><BR>I=20
think this uses up all the tabs on your free help coupon.&nbsp; These =
aren't=20
really EMF questions at all to begin with...<BR><BR>Getting all this =
to run=20
may be hard, but to get it to compile I suggest: build a jar, e.g.,=20
lginterface.jar,&nbsp; put it the same directory as your plugin.xml, =
and put=20
"lginterface.jar" in your plugin.xml's runtime/library.&nbsp; Failing =
that,=20
you need to learn to set the JDT's classpath manually.&nbsp; If you =
can't get=20
any of that to work, it's not EMF help you need, it's platform, PDE, =
or JDT=20
help that you need, i.e., other some of the =
newsgroups...<BR><BR><BR>Ian Ward=20
wrote:=20
<BLOCKQUOTE type=3D"cite" cite=3D"midcoir59$82q$1@www.eclipse.org">
<META content=3D"MSHTML 5.50.4807.2300" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT face=3DArial size=3D2><FONT size=3D2>
<P>Ed,</P>
<P>What you&#8217;re saying here seems to me to be more or less what =
I&#8217;ve been=20
saying, only the other way about &#8211; my way is the ignorant way! =
</P>
<P>I have wanted to ship the plug-in out, after writing it, to where =
it can=20
reference my .class binaries &#8211; and I&#8217;ve been concerned =
that failing to do=20
this properly means the .class files can&#8217;t be =
accessed&#8230;&#8230;..and you seem to be=20
saying that the folder of binaries have to be integrated into the =
plug where=20
it is being constructed.</P>
<P>I must admit to being a bit baffled by your a.B notation that you =
insist=20
on using. Neither have I seen anywhere else the way you have laid =
out the=20
file structures for the plug-in &#8211; but then I am completely new =
to the=20
environment which isn't helping. Can we agree I&#8217;ve just got Bs =
in my=20
lginterface folder, and so skip the a? But it&#8217;s not the main =
problem anyway,=20
is it?</P>
<P>The main problem (and another possible?) is, I think, the =
following&#8230;..I=20
haven&#8217;t much idea how to do what your suggesting. Do I just =
copy/paste my=20
famous lginterface folder into my workspace? I bet not! So I do a =
sort of=20
import or something I suppose? I&#8217;ll have a look while =
I&#8217;m waiting for your=20
next instalment &#8211; gratefully of course.</P>
<P>The other possible problem is that lginterface is just that, an =
interface=20
to something else &#8211; in fact, it&#8217;s a jni to a set of dlls =
and a bunch of cs=20
and hs&#8230;plus some data files. So I think all this has to be =
bundled together.=20
Even if I imported it all into my project and got everything talking =
to=20
everything else, I&#8217;m quite concerned about how all this would =
export out as=20
some sort of runnable standalone system. I haven&#8217;t looked at =
all at how=20
Eclipse manages this but I&#8217;m sure that starting to jar it =
could cause=20
problems. Ok, I&#8217;m being pessimistic due to my ignorance =
&#8211; although I have=20
seen, in passing, a post in the platform forum referring to how =
Eclipse=20
doesn&#8217;t like jni.</P>
<P>Right, I&#8217;m panicking, deep breaths&#8230;&#8230;&#8230;.if =
you&#8217;re still there, can I refer=20
you back to the previous paragraph but one &#8211; how do I get =
lginterface to be=20
where you say it&#8217;s supposed to be? Which is I suppose right =
there in the=20
workspace somewhere. I will start to look at it but I&#8217;d =
appreciate some more=20
guidance, hand-holding etc;</P>
<P>Ian</P></FONT></FONT></DIV>
<BLOCKQUOTE=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:merks@ca.ibm.com">merks@ca.ibm.com</A>&gt; a =
=E9crit dans le=20
message news: <A=20
=
href=3D"mailto:coik1r$r0u$1@www.eclipse.org">coik1r$r0u$1@www.eclipse.org=
</A>...</DIV>Ian,<BR><BR>The=20
only files in the lginterface plugin are these:<BR>
<BLOCKQUOTE>lginterface/:<BR>.&nbsp; ..&nbsp; .classpath&nbsp;=20
.project&nbsp; build.properties&nbsp; =
plugin.xml<BR></BLOCKQUOTE>This=20
entry in the plugin.xml:<BR><BR>&nbsp;&nbsp;=20
&lt;runtime&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;library=20
=
name=3D"lginterface"&gt;<BR> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nb=
sp;=20
&lt;export name=3D"*"/&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=20
&lt;/library&gt;<BR>&nbsp;&nbsp; &lt;/runtime&gt;<BR><BR>implies =
that you=20
should have a folder called <B>lginterface</B> and if you had a =
class=20
called a.B, you'd have a file structure like this:<BR>
<BLOCKQUOTE>lginterface/:<BR>.&nbsp; ..&nbsp; .classpath&nbsp;=20
.project&nbsp; build.properties&nbsp; lginterface&nbsp;=20
plugin.xml<BR><BR>lginterface/<B>lginterface</B>:<BR >.&nbsp; =
...&nbsp;=20
a<BR><BR>lginterface/lginterface/a:<BR>.&nbsp; ..&nbsp;=20
B.class<BR></BLOCKQUOTE>The root folder with the .class files, or =
the jar,=20
<B>must </B>be in physically located in this=20
=
plugin.<BR><BR><BR></BLOCKQUOTE></BLOCKQUOTE><BR></BLOCKQUOTE ></BODY></HT=
ML>

------=_NextPart_000_000B_01C4D786.8EEE7C00--
Re: building a plugin for external binaries (fao Ed Merks) [message #389642 is a reply to message #389631] Wed, 01 December 2004 10:17 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: richkulp.us.NO_SPAM.ibm.com

You seem to be having problems with plugin development itself. These
problems aren't related to EMF.

You can look at:

http://eclipse.org/articles/Article-Plug-in-architecture/plu gin_architecture.html

This discusses plugins themselves in Eclipse. It is slightly out of
date, but it is still mostly valid.


Please also read:

http://eclipse.org/articles/Article-PDE-does-plugins/PDE-int ro.html

This talks about how you do plugin development within Eclipse and the
tools that are available to make it easier.

--
Thanks,
Rich Kulp
Re: building a plugin for external binaries (fao Ed Merks) [message #389644 is a reply to message #389642] Wed, 01 December 2004 13:42 Go to previous message
Eclipse UserFriend
Yes, you're right, I'm completely green but then I was hoping to use EMF to
set me up so I could do some basic java programming with some XML
persistance thrown in - little realising that I can't avoid having some
familiarity with the eclipse plugin philosophy/architecture etc
Thanks very much for the references - I'll have a look.

"Rich Kulp" <richkulp@us.NO_SPAM.ibm.com> a
Previous Topic:New article: Modeling Rule-Based Systems with EMF
Next Topic:Deployed RCP + Cannot create a resource for
Goto Forum:
  


Current Time: Mon Sep 15 15:41:12 EDT 2025

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

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

Back to the top