Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » Problems listening notifications from other Resources
Problems listening notifications from other Resources [message #429065] Tue, 07 April 2009 11:08 Go to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

Hi all,

I would like to know if it is possible to listen the change notifications
from an EObject which is linked to an object defined in my metamodel (called
Artifact) but this EObject belongs to a different model, for instance it
could be a class from a UML class model or a use case from a UML use case
model. Please, find attached an excerpt of the metamodel. As the attached
figure shows, A class is related to Artifact class by means of the Trace
class. An Artifact is linked to a generic EObject (as I previously
explained). The problem is that when something in the generic linked EObject
changes (for instance the name of the class in the UML class model) the
related A object has to know it.

I have tryed to resolve this problem by subclassing EContentAdapter but the
changes notifications from the UML EObjects never arrives to my model. I am
able to listen Resource notifications but I am not able to get the specific
object in that Resource which has changed. When the Resource notification
arrives and the event type is SET, the values obtained by calling
notification.getFeature()/getOldValue/getNewValue are not the ones that I
need (the EObject which changes the name by calling setName). Frequently,
the feature value is null and the old and new values are boolean values
instead of objects.

Any help will be wellcome!!!

Thanks in advance for your time.

Best regards,
Bego
Re: Problems listening notifications from other Resources [message #429066 is a reply to message #429065] Tue, 07 April 2009 11:25 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------070700010701070709010000
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429184 is a reply to message #429066] Mon, 13 April 2009 10:05 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_0013_01C9BC30.15EF0D90
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0014_01C9BC30.15EF0D90"


------=_NextPart_001_0014_01C9BC30.15EF0D90
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Dear Ed,

thank you very much for your comments and advice. I have been trying to =
follow your indications but I am not able to solve my problem. What I =
have done is:=20
1) Artifact implements Adapter to listen the linked EObject (element =
reference) notifications
2) Whenever an EObject is set in an Artifact object (Artifact setElement =
method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the notifyChanged =
method just to check whether it is executed or not. isAdapterForType =
method always return true

Unfortunately nothing is printed when the linked element change (for =
instance, the element is a UML class and its name is set). I do not =
understand where the problem is. Perhaps the problem is that the linked =
element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_0014_01C9BC30.15EF0D90
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 6.00.6000.16809" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much for your comments =
and advice. I=20
have been trying to follow your indications but I am not able to solve =
my=20
problem. What I have done is: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact implements Adapter to =
listen the linked=20
EObject (element reference) notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an EObject is set in an =
Artifact object=20
(Artifact setElement method) the adapters are updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some system.out.println calls are =
included in=20
the notifyChanged method just to check whether it is executed or not.=20
isAdapterForType method always return true</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing is printed when =
the linked=20
element change (for instance, the element is a UML class and&nbsp;its =
name is=20
set). I do not understand where the problem is. Perhaps the problem is =
that the=20
linked element is a generic EObject from a different =
Resource.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some new advices. =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your =
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A=20
=
href=3D"news:grfd84$5bv$1@build.eclipse.org">news:grfd84$5bv$1@build.ecli=
pse.org</A>...</DIV>Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification about changes =
to=20
the values of their features...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Please, find attached an excerpt of the =
metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to attach adapters =
to that=20
object...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve this problem by =
subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not visit all the =
links you=20
show because they aren't containment references.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If you =
added an=20
EContentAdapter to the resource set you'd get notifications for all=20
objects.&nbsp; That's very brute force though...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for things affecting =
the=20
resource directly, not for EObjects nested down in the resource.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that it tracks =
the=20
changes to a Trace reference.&nbsp; This could be used to trigger =
adding an=20
adapter to the Trace instance to track changes to the Artifact=20
reference.&nbsp; And so on until you end up with an adapter on the =
EObject=20
that monitor what A needs to know...&nbsp; The logic in =
EContentAdapter will=20
be useful for understanding how to process the notifications so as to =
add and=20
remove adapters as the chain of references changes.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Thanks in advance for your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:66FA768EDE0844098597E6C6169F9F1B@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_0014_01C9BC30.15EF0D90--

------=_NextPart_000_0013_01C9BC30.15EF0D90
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <66FA768EDE0844098597E6C6169F9F1B@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_0013_01C9BC30.15EF0D90--
Re: Problems listening notifications from other Resources [message #429185 is a reply to message #429184] Mon, 13 April 2009 10:39 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_00CC_01C9BC34.D262C760
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_00CD_01C9BC34.D2651150"


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

I forgot to say in my last post that the only notification which arrives =
to the Artifact notifyChanged method is the REMOVING_ADAPTER event when =
the resource which the linked element belongs to is saved. Why is the =
adapter removed?
=20
"Bego=F1a Moros" <bmoros@um.es> escribi=F3 en el mensaje =
news:grv2ok$afr$1@build.eclipse.org...
Dear Ed,

thank you very much for your comments and advice. I have been trying =
to follow your indications but I am not able to solve my problem. What I =
have done is:=20
1) Artifact implements Adapter to listen the linked EObject (element =
reference) notifications
2) Whenever an EObject is set in an Artifact object (Artifact =
setElement method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the notifyChanged =
method just to check whether it is executed or not. isAdapterForType =
method always return true

Unfortunately nothing is printed when the linked element change (for =
instance, the element is a UML class and its name is set). I do not =
understand where the problem is. Perhaps the problem is that the linked =
element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_00CD_01C9BC34.D2651150
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 6.00.6000.16809" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>I forgot to say in my last post that =
the only=20
notification which arrives to the Artifact notifyChanged method&nbsp;is=20
the&nbsp;REMOVING_ADAPTER event&nbsp;when the resource&nbsp;which the =
linked=20
element belongs to&nbsp;is saved. Why&nbsp;is the adapter =
removed?</FONT></DIV>
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Bego=F1a Moros" &lt;<A =
href=3D"mailto:bmoros@um.es">bmoros@um.es</A>&gt;=20
escribi=F3 en el mensaje <A=20
=
href=3D"news:grv2ok$afr$1@build.eclipse.org">news:grv2ok$afr$1@build.ecli=
pse.org</A>...</DIV>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much for your comments =
and advice.=20
I have been trying to follow your indications but I am not able to =
solve my=20
problem. What I have done is: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact implements Adapter to =
listen the=20
linked EObject (element reference) notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an EObject is set in an =
Artifact=20
object (Artifact setElement method) the adapters are =
updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; =

oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some system.out.println calls are =
included in=20
the notifyChanged method just to check whether it is executed or not.=20
isAdapterForType method always return true</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing is printed when =
the linked=20
element change (for instance, the element is a UML class and&nbsp;its =
name is=20
set). I do not understand where the problem is. Perhaps the problem is =
that=20
the linked element is a generic EObject from a different=20
Resource.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some new advices. =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your =
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A=20
=
href=3D"news:grfd84$5bv$1@build.eclipse.org">news:grfd84$5bv$1@build.ecli=
pse.org</A>...</DIV>Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification about changes =
to=20
the values of their features...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Please, find attached an excerpt of the =
metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to attach adapters =
to=20
that object...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve this problem by =
subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not visit all the =
links you=20
show because they aren't containment references.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If you =
added an=20
EContentAdapter to the resource set you'd get notifications for all=20
objects.&nbsp; That's very brute force though...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for things affecting =
the=20
resource directly, not for EObjects nested down in the resource.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that it tracks =
the=20
changes to a Trace reference.&nbsp; This could be used to trigger =
adding an=20
adapter to the Trace instance to track changes to the Artifact=20
reference.&nbsp; And so on until you end up with an adapter on the =
EObject=20
that monitor what A needs to know...&nbsp; The logic in =
EContentAdapter will=20
be useful for understanding how to process the notifications so as =
to add=20
and remove adapters as the chain of references changes.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Thanks in advance for your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:435C4C57519743108037FEF38EAEF3C3@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_00CD_01C9BC34.D2651150--

------=_NextPart_000_00CC_01C9BC34.D262C760
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <435C4C57519743108037FEF38EAEF3C3@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_00CC_01C9BC34.D262C760--
Re: Problems listening notifications from other Resources [message #429190 is a reply to message #429184] Mon, 13 April 2009 12:40 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040908070607060803000406
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429191 is a reply to message #429185] Mon, 13 April 2009 12:41 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060807030007080002040107
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429267 is a reply to message #429191] Thu, 16 April 2009 09:58 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_0021_01C9BE8A.B518DE80
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_0022_01C9BE8A.B518DE80"


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

Dear Ed,

the resource did be unloaded by the GMF XXXDocumentProvider class =
because it is the generated behaviour when a resource changes (when the =
resource is saved). I have changed the generated code to avoid unloading =
the resouce.

On the other hand, by debugging the code I have realized that when some =
property of the linked EObject is set the only adapter in the list is =
the XXXItemProvider. I can not find when the rest of the Adapters are =
removed. Until that moment, the list of the adapters contained the =
adapter I have added to listen the changes.

Could you give me some clue?

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grvbto$o3c$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
I forgot to say in my last post that the only notification which =
arrives to the Artifact notifyChanged method is the REMOVING_ADAPTER =
event when the resource which the linked element belongs to is saved. =
Why is the adapter removed?
What's on the stack at the point when this happens. It sounds like =
the resource itself is being unloaded, which shouldn't normally happen =
as a result of a save if all is set up correctly...


"Bego=F1a Moros" <bmoros@um.es> escribi=F3 en el mensaje =
news:grv2ok$afr$1@build.eclipse.org...
Dear Ed,

thank you very much for your comments and advice. I have been =
trying to follow your indications but I am not able to solve my problem. =
What I have done is:=20
1) Artifact implements Adapter to listen the linked EObject =
(element reference) notifications
2) Whenever an EObject is set in an Artifact object (Artifact =
setElement method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the notifyChanged =
method just to check whether it is executed or not. isAdapterForType =
method always return true

Unfortunately nothing is printed when the linked element change =
(for instance, the element is a UML class and its name is set). I do not =
understand where the problem is. Perhaps the problem is that the linked =
element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_0022_01C9BE8A.B518DE80
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 6.00.6000.16809" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>the resource did be unloaded by the GMF =

XXXDocumentProvider class because it is the generated behaviour when a =
resource=20
changes (when the resource is saved). I have changed the generated code =
to avoid=20
unloading the resouce.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>On the other hand, by debugging the =
code I have=20
realized that when some property of the linked EObject is set the only =
adapter=20
in the list is the XXXItemProvider. I can not find when the rest of the =
Adapters=20
are removed. Until that moment, the list of the adapters contained the =
adapter I=20
have added to listen the changes.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some =
clue?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your =
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A=20
=
href=3D"news:grvbto$o3c$1@build.eclipse.org">news:grvbto$o3c$1@build.ecli=
pse.org</A>...</DIV>Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT face=3DArial size=3D2>I forgot to say in my last post =
that the only=20
notification which arrives to the Artifact notifyChanged =
method&nbsp;is=20
the&nbsp;REMOVING_ADAPTER event&nbsp;when the resource&nbsp;which =
the linked=20
element belongs to&nbsp;is saved. Why&nbsp;is the adapter=20
removed?</FONT></DIV></BLOCKQUOTE>What's on the stack at the point =
when this=20
happens.&nbsp; It sounds like the resource itself is being unloaded, =
which=20
shouldn't normally happen as a result of a save if all is set up=20
correctly...<BR>
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org type=3D"cite">
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Bego=F1a Moros" &lt;<A href=3D"mailto:bmoros@um.es"=20
moz-do-not-send=3D"true">bmoros@um.es</A>&gt; escribi=F3 en el =
mensaje <A=20
href=3D"news:grv2ok$afr$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grv2ok$afr$1@build.eclipse.org</A>...</DIV>=

<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much for your =
comments and=20
advice. I have been trying to follow your indications but I am not =
able to=20
solve my problem. What I have done is: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact implements Adapter to =
listen the=20
linked EObject (element reference) notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an EObject is set in =
an Artifact=20
object (Artifact setElement method) the adapters are =
updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial =
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some system.out.println calls =
are included=20
in the notifyChanged method just to check whether it is executed =
or not.=20
isAdapterForType method always return true</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing is printed =
when the=20
linked element change (for instance, the element is a UML class=20
and&nbsp;its name is set). I do not understand where the problem =
is.=20
Perhaps the problem is that the linked element is a generic =
EObject from a=20
different Resource.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some new =
advices.=20
</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your =
time.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 =
en el mensaje=20
<A href=3D"news:grfd84$5bv$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grfd84$5bv$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification about changes =

to the values of their features...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Please, find attached an excerpt of the =
metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to attach adapters=20
to that object...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve this problem by =
subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not visit all =
the links=20
you show because they aren't containment references.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If you=20
added an EContentAdapter to the resource set you'd get =
notifications for=20
all objects.&nbsp; That's very brute force though...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for things =
affecting the=20
resource directly, not for EObjects nested down in the =
resource.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that it tracks=20
the changes to a Trace reference.&nbsp; This could be used to =
trigger=20
adding an adapter to the Trace instance to track changes to the =
Artifact=20
reference.&nbsp; And so on until you end up with an adapter on =
the=20
EObject that monitor what A needs to know...&nbsp; The logic in=20
EContentAdapter will be useful for understanding how to process =
the=20
notifications so as to add and remove adapters as the chain of=20
references changes.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Thanks in advance for your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:8029C3E831344A00941B73714667F016@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BODY></HTM=
L>

------=_NextPart_001_0022_01C9BE8A.B518DE80--

------=_NextPart_000_0021_01C9BE8A.B518DE80
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <8029C3E831344A00941B73714667F016@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_0021_01C9BE8A.B518DE80--
Re: Problems listening notifications from other Resources [message #429269 is a reply to message #429267] Thu, 16 April 2009 10:43 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------060302030305030009050606
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429274 is a reply to message #429269] Thu, 16 April 2009 14:50 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_006D_01C9BEB3.8523A920
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_006E_01C9BEB3.8523A920"


------=_NextPart_001_006E_01C9BEB3.8523A920
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Ed,=20

my answers below

>"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs725a$fft$1@build.eclipse.org...
>Bego=F1a,
>
>Comments below.
>
>>Bego=F1a Moros wrote:=20

>>Dear Ed,
>> the resource did be unloaded by the GMF XXXDocumentProvider class =
because it is the generated behaviour when a resource changes (when the =
resource is saved). I have >>changed the generated code to avoid =
unloading the resouce.

>That ought to be an expected delta that obviously doesn't indicate the =
in-memory copy and the persistent backing store are out of sync.

>>On the other hand, by debugging the code I have realized that when =
some property of the linked EObject is set the only adapter in the list =
is the XXXItemProvider. I can not find >>when the rest of the Adapters =
are removed.=20

>Your adapter will get a notification that it's removed, right?

Yes, that=B4s right. It received REMOVING_ADAPTER notifications but not =
SET notifications.=20

>>Until that moment, the list of the adapters contained the adapter I =
have added to listen the changes.

>Until which moment? This sounds like you just contradicted the previous =
statement.

I have follow the editors initialization, and all the artifacts objects =
in the depicted model are right. The linked objects from the artifacts =
have been correctly initialized and the linked EObjects includes my new =
adapter in its eAdapters list. When everything has been loaded it is =
when I set some of the linked EObject property in its own editor to =
follow the notification. In this moment, the eAdapters list only =
includes a XXXItemProvider object.

>>Could you give me some clue?

>My guess would be that you're dealing with a proxy resolving reference =
and you have an adapter on the proxy but aren't taking action when that =
proxy is resolved and is >replaced by the actual resolved object.

I try to add the adapter to the EObject since I check if the object =
isProxy (and then call resolveProxy) before adding the Adapter.What you =
guess is that the UML Class Editor (for instance) when resolving the =
objects in the class diagram ignores the adapters added to the EObjects, =
right? If so, I am not sure I can do what I need.


Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grvbto$o3c$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
I forgot to say in my last post that the only notification which =
arrives to the Artifact notifyChanged method is the REMOVING_ADAPTER =
event when the resource which the linked element belongs to is saved. =
Why is the adapter removed?
What's on the stack at the point when this happens. It sounds =
like the resource itself is being unloaded, which shouldn't normally =
happen as a result of a save if all is set up correctly...


"Bego=F1a Moros" <bmoros@um.es> escribi=F3 en el mensaje =
news:grv2ok$afr$1@build.eclipse.org...
Dear Ed,

thank you very much for your comments and advice. I have been =
trying to follow your indications but I am not able to solve my problem. =
What I have done is:=20
1) Artifact implements Adapter to listen the linked EObject =
(element reference) notifications
2) Whenever an EObject is set in an Artifact object (Artifact =
setElement method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the =
notifyChanged method just to check whether it is executed or not. =
isAdapterForType method always return true

Unfortunately nothing is printed when the linked element =
change (for instance, the element is a UML class and its name is set). I =
do not understand where the problem is. Perhaps the problem is that the =
linked element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_006E_01C9BEB3.8523A920
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 6.00.6000.16809" 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></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>my answers below</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;</FONT>"Ed Merks" &lt;<A=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; escribi=F3 =
en el=20
mensaje <A=20
href=3D"news:gs725a$fft$1@build.eclipse.org">news:gs725a$fft$1@build.ecli=
pse.org</A>...</DIV>
<DIV>&gt;Bego=F1a,<BR><FONT face=3DArial =
size=3D2>&gt;</FONT><BR>&gt;Comments=20
below.<BR><FONT face=3DArial size=3D2>&gt;</FONT><BR>&gt;&gt;Bego=F1a =
Moros wrote:=20
</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt; the resource did be unloaded =
by the GMF=20
XXXDocumentProvider class because it is the generated behaviour when a =
resource=20
changes (when the resource is saved). I have &gt;&gt;changed the =
generated code=20
to avoid unloading the resouce.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>&gt;That ought to be an expected delta that obviously doesn't =
indicate the=20
in-memory copy and the persistent backing store are out of =
sync.<BR><FONT=20
face=3DArial size=3D2></FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;On the other hand, by debugging =
the code I=20
have realized that when some property of the linked EObject is set the =
only=20
adapter in the list is the XXXItemProvider. I can not find &gt;&gt;when =
the rest=20
of the Adapters are removed. </FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>&gt;Your adapter will get a notification that it's removed, =
right?</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Yes, that=B4s right. It=20
received&nbsp;REMOVING_ADAPTER notifications but not SET=20
notifications.&nbsp;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Until that moment, the list of =
the adapters=20
contained the adapter I have added to listen the changes.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>&gt;Until which moment? This sounds like you just contradicted the =
previous=20
statement.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I have follow the editors =
initialization, and all=20
the artifacts objects in the depicted model are&nbsp;right. The linked =
objects=20
from the artifacts have been correctly initialized and the linked =
EObjects=20
includes my new adapter in its eAdapters list. When everything =
has&nbsp;been=20
loaded it is when&nbsp;I set some of the linked EObject property =
in&nbsp;its=20
own&nbsp;editor to follow the notification. In this moment, the =
eAdapters list=20
only includes a XXXItemProvider object.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Could you give me some =
clue?</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>&gt;My guess would be that you're dealing with a proxy resolving =
reference=20
and you have an adapter on the proxy but aren't taking action when that =
proxy is=20
resolved and is &gt;replaced by the actual resolved object.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I try to add the adapter to the EObject =
since I=20
check if the object isProxy (and then call resolveProxy) before adding =
the=20
Adapter.What you guess is&nbsp;that the UML Class Editor&nbsp;(for =
instance)=20
when&nbsp;resolving the objects in the class diagram ignores =
the&nbsp;adapters=20
added to the EObjects, right?&nbsp;If so, I am not sure I can do what I=20
need.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: 0px">
<BLOCKQUOTE cite=3Dmid:gs6vgt$kdm$1@build.eclipse.org type=3D"cite">
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your =
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 en =
el mensaje=20
<A href=3D"news:grvbto$o3c$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grvbto$o3c$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT face=3DArial size=3D2>I forgot to say in my last post =
that the=20
only notification which arrives to the Artifact notifyChanged=20
method&nbsp;is the&nbsp;REMOVING_ADAPTER event&nbsp;when the=20
resource&nbsp;which the linked element belongs to&nbsp;is saved. =

Why&nbsp;is the adapter removed?</FONT></DIV></BLOCKQUOTE>What's =
on the=20
stack at the point when this happens.&nbsp; It sounds like the =
resource=20
itself is being unloaded, which shouldn't normally happen as a =
result of a=20
save if all is set up correctly...<BR>
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Bego=F1a Moros" &lt;<A href=3D"mailto:bmoros@um.es"=20
moz-do-not-send=3D"true">bmoros@um.es</A>&gt; escribi=F3 en el =
mensaje <A=20
href=3D"news:grv2ok$afr$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grv2ok$afr$1@build.eclipse.org</A>...</DIV>=

<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much for your =
comments and=20
advice. I have been trying to follow your indications but I am =
not=20
able to solve my problem. What I have done is: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact implements =
Adapter to listen=20
the linked EObject (element reference) =
notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an EObject is set =
in an=20
Artifact object (Artifact setElement method) the adapters are=20
updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some system.out.println =
calls are=20
included in the notifyChanged method just to check whether it =
is=20
executed or not. isAdapterForType method always return=20
true</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing is =
printed when the=20
linked element change (for instance, the element is a UML =
class=20
and&nbsp;its name is set). I do not understand where the =
problem is.=20
Perhaps the problem is that the linked element is a generic =
EObject=20
from a different Resource.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some new =
advices.=20
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your=20
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A href=3D"news:grfd84$5bv$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grfd84$5bv$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification about=20
changes to the values of their features...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Please, find attached an excerpt of the =
metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to attach=20
adapters to that object...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve this problem by =
subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not visit =
all the=20
links you show because they aren't containment =
references.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If you=20
added an EContentAdapter to the resource set you'd get =
notifications=20
for all objects.&nbsp; That's very brute force though...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for things =
affecting=20
the resource directly, not for EObjects nested down in the=20
resource.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that it=20
tracks the changes to a Trace reference.&nbsp; This could be =
used to=20
trigger adding an adapter to the Trace instance to track =
changes to=20
the Artifact reference.&nbsp; And so on until you end up =
with an=20
adapter on the EObject that monitor what A needs to =
know...&nbsp;=20
The logic in EContentAdapter will be useful for =
understanding how to=20
process the notifications so as to add and remove adapters =
as the=20
chain of references changes.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Thanks in advance for your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:8F727EE037D244339A237910A2FD3F4D@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BLOCKQUOTE=
></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_006E_01C9BEB3.8523A920--

------=_NextPart_000_006D_01C9BEB3.8523A920
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <8F727EE037D244339A237910A2FD3F4D@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_006D_01C9BEB3.8523A920--
Re: Problems listening notifications from other Resources [message #429275 is a reply to message #429274] Thu, 16 April 2009 15:03 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------040102030408010607020407
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429295 is a reply to message #429275] Fri, 17 April 2009 11:23 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_0019_01C9BF5F.AEB44D60
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_001A_01C9BF5F.AEB44D60"


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

Dear Ed,

thank you for your help, now I understand where the problem is. I =
thought that if I set an adapter to the target object instead of the =
proxy, this apater would be kept when the corresponding editor would =
start but it wouldn=B4t. As you said, the only notification received is =
REMOVING_ADAPTER and after that any other is received. I don=B4t know if =
it is possible to set an adapter to the linked EObject from my model =
(EReference from Artifact class) since it is the only access point to =
it, so that, when some proxy is resolved then it obtains the same =
adapters list.=20

Thanks in advance.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs7hc4$e4c$1@build.eclipse.org...
Bego=F1a,

Comments below.

Bego=F1a Moros wrote:=20
Ed,=20

my answers below

>"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs725a$fft$1@build.eclipse.org...
>Bego=F1a,
>
>Comments below.
>
>>Bego=F1a Moros wrote:=20

>>Dear Ed,
>> the resource did be unloaded by the GMF XXXDocumentProvider class =
because it is the generated behaviour when a resource changes (when the =
resource is saved). I have >>changed the generated code to avoid =
unloading the resouce.

>That ought to be an expected delta that obviously doesn't indicate =
the in-memory copy and the persistent backing store are out of sync.

>>On the other hand, by debugging the code I have realized that when =
some property of the linked EObject is set the only adapter in the list =
is the XXXItemProvider. I can not find >>when the rest of the Adapters =
are removed.=20

>Your adapter will get a notification that it's removed, right?

Yes, that=B4s right. It received REMOVING_ADAPTER notifications but =
not SET notifications.=20

Once the adapter is removed, you'll never get another notification, =
right?


>>Until that moment, the list of the adapters contained the adapter =
I have added to listen the changes.

>Until which moment? This sounds like you just contradicted the =
previous statement.

I have follow the editors initialization, and all the artifacts =
objects in the depicted model are right. The linked objects from the =
artifacts have been correctly initialized and the linked EObjects =
includes my new adapter in its eAdapters list. When everything has been =
loaded it is when I set some of the linked EObject property in its own =
editor to follow the notification. In this moment, the eAdapters list =
only includes a XXXItemProvider object.
Well, adapters don't just disappear on their own and when they are =
removed, they get a notification...


>>Could you give me some clue?

>My guess would be that you're dealing with a proxy resolving =
reference and you have an adapter on the proxy but aren't taking action =
when that proxy is resolved and is >replaced by the actual resolved =
object.

I try to add the adapter to the EObject since I check if the object =
isProxy (and then call resolveProxy) before adding the Adapter.What you =
guess is that the UML Class Editor (for instance) when resolving the =
objects in the class diagram ignores the adapters added to the EObjects, =
right? If so, I am not sure I can do what I need.
You have to be careful when you resolve proxies because the value will =
get set during deserialization and at that point, the proxy might not be =
able to resolve. It definitely sounds like some proxy stuff is at work. =
Set breakpoints in getter to see when proxies are being resolve. =
You'll clearly need some logic in there as well.



Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grvbto$o3c$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
I forgot to say in my last post that the only notification =
which arrives to the Artifact notifyChanged method is the =
REMOVING_ADAPTER event when the resource which the linked element =
belongs to is saved. Why is the adapter removed?
What's on the stack at the point when this happens. It sounds =
like the resource itself is being unloaded, which shouldn't normally =
happen as a result of a save if all is set up correctly...


"Bego=F1a Moros" <bmoros@um.es> escribi=F3 en el mensaje =
news:grv2ok$afr$1@build.eclipse.org...
Dear Ed,

thank you very much for your comments and advice. I have =
been trying to follow your indications but I am not able to solve my =
problem. What I have done is:=20
1) Artifact implements Adapter to listen the linked =
EObject (element reference) notifications
2) Whenever an EObject is set in an Artifact object =
(Artifact setElement method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the =
notifyChanged method just to check whether it is executed or not. =
isAdapterForType method always return true

Unfortunately nothing is printed when the linked element =
change (for instance, the element is a UML class and its name is set). I =
do not understand where the problem is. Perhaps the problem is that the =
linked element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_001A_01C9BF5F.AEB44D60
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 6.00.6000.16809" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you for your help, now&nbsp;I =
understand=20
where the problem is. I thought that if&nbsp;I set an adapter to=20
the&nbsp;target&nbsp;object&nbsp;instead of the proxy, this apater would =
be kept=20
when the corresponding editor would start but it wouldn=B4t. As&nbsp;you =
said, the=20
only notification received is REMOVING_ADAPTER and after that any other =
is=20
received. I don=B4t&nbsp;know if it is possible to set an adapter to the =
linked=20
EObject&nbsp;from my&nbsp;model (EReference from Artifact class) =
since&nbsp;it=20
is the only access&nbsp;point to it, so that, when&nbsp;some proxy is =
resolved=20
then it obtains the same adapters list.&nbsp;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A=20
=
href=3D"news:gs7hc4$e4c$1@build.eclipse.org">news:gs7hc4$e4c$1@build.ecli=
pse.org</A>...</DIV>Bego=F1a,<BR><BR>Comments=20
below.<BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<DIV><FONT face=3DArial size=3D2>Ed, </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>my answers below</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;</FONT>"Ed Merks" &lt;<A=20
href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 en el =
mensaje <A=20
href=3D"news:gs725a$fft$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:gs725a$fft$1@build.eclipse.org</A>...</DIV>=

<DIV>&gt;Bego=F1a,<BR><FONT face=3DArial =
size=3D2>&gt;</FONT><BR>&gt;Comments=20
below.<BR><FONT face=3DArial =
size=3D2>&gt;</FONT><BR>&gt;&gt;Bego=F1a Moros wrote:=20
</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt; the resource did be =
unloaded by the=20
GMF XXXDocumentProvider class because it is the generated behaviour =
when a=20
resource changes (when the resource is saved). I have =
&gt;&gt;changed the=20
generated code to avoid unloading the resouce.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;That ought to be an expected delta that obviously doesn't =
indicate=20
the in-memory copy and the persistent backing store are out of=20
sync.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;On the other hand, by =
debugging the=20
code I have realized that when some property of the linked EObject =
is set=20
the only adapter in the list is the XXXItemProvider. I can not find=20
&gt;&gt;when the rest of the Adapters are removed. </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;Your adapter will get a notification that it's removed,=20
right?</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Yes, that=B4s right. It=20
received&nbsp;REMOVING_ADAPTER notifications but not SET =
notifications.=20
<BR></FONT></DIV></BLOCKQUOTE>Once the adapter is removed, you'll =
never get=20
another notification, right?<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Until that moment, the list =
of the=20
adapters contained the adapter I have added to listen the=20
changes.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;Until which moment? This sounds like you just contradicted =
the=20
previous statement.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I have follow the editors =
initialization, and=20
all the artifacts objects in the depicted model are&nbsp;right. The =
linked=20
objects from the artifacts have been correctly initialized and the =
linked=20
EObjects includes my new adapter in its eAdapters list. When =
everything=20
has&nbsp;been loaded it is when&nbsp;I set some of the linked =
EObject=20
property in&nbsp;its own&nbsp;editor to follow the notification. In =
this=20
moment, the eAdapters list only includes a XXXItemProvider=20
object.</FONT></DIV></BLOCKQUOTE>Well, adapters don't just disappear =
on their=20
own and when they are removed, they get a notification...<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Could you give me some=20
clue?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;My guess would be that you're dealing with a proxy =
resolving=20
reference and you have an adapter on the proxy but aren't taking =
action when=20
that proxy is resolved and is &gt;replaced by the actual resolved=20
object.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I try to add the adapter to the =
EObject since I=20
check if the object isProxy (and then call resolveProxy) before =
adding the=20
Adapter.What you guess is&nbsp;that the UML Class Editor&nbsp;(for =
instance)=20
when&nbsp;resolving the objects in the class diagram ignores=20
the&nbsp;adapters added to the EObjects, right?&nbsp;If so, I am not =
sure I=20
can do what I need.</FONT></DIV></BLOCKQUOTE>You have to be careful =
when you=20
resolve proxies because the value will get set during deserialization =
and at=20
that point, the proxy might not be able to resolve.&nbsp; It =
definitely sounds=20
like some proxy stuff is at work.&nbsp; Set breakpoints in getter to =
see when=20
proxies are being resolve.&nbsp; You'll clearly need some logic in =
there as=20
well.<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org type=3D"cite">
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<BLOCKQUOTE cite=3Dmid:gs6vgt$kdm$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your=20
time.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 =
en el=20
mensaje <A href=3D"news:grvbto$o3c$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grvbto$o3c$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT face=3DArial size=3D2>I forgot to say in my last =
post that=20
the only notification which arrives to the Artifact =
notifyChanged=20
method&nbsp;is the&nbsp;REMOVING_ADAPTER event&nbsp;when the =

resource&nbsp;which the linked element belongs to&nbsp;is =
saved.=20
Why&nbsp;is the adapter =
removed?</FONT></DIV></BLOCKQUOTE>What's on=20
the stack at the point when this happens.&nbsp; It sounds like =
the=20
resource itself is being unloaded, which shouldn't normally =
happen as=20
a result of a save if all is set up correctly...<BR>
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Bego=F1a Moros" &lt;<A href=3D"mailto:bmoros@um.es"=20
moz-do-not-send=3D"true">bmoros@um.es</A>&gt; escribi=F3 =
en el mensaje=20
<A href=3D"news:grv2ok$afr$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grv2ok$afr$1@build.eclipse.org</A>...</DIV>=

<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much for =
your comments=20
and advice. I have been trying to follow your indications =
but I am=20
not able to solve my problem. What I have done is: =
</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact implements =
Adapter to=20
listen the linked EObject (element reference)=20
notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an EObject is =
set in an=20
Artifact object (Artifact setElement method) the adapters =
are=20
updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some =
system.out.println calls are=20
included in the notifyChanged method just to check whether =
it is=20
executed or not. isAdapterForType method always return=20
true</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing is =
printed when=20
the linked element change (for instance, the element is a =
UML=20
class and&nbsp;its name is set). I do not understand where =
the=20
problem is. Perhaps the problem is that the linked element =
is a=20
generic EObject from a different Resource.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me some =
new advices.=20
</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for =
your=20
time.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best =
regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 =
href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A href=3D"news:grfd84$5bv$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grfd84$5bv$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification about=20
changes to the values of their features...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> Please, find attached an excerpt of the =
metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to attach=20
adapters to that object...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve this problem by =
subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not =
visit all=20
the links you show because they aren't containment=20
references.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If=20
you added an EContentAdapter to the resource set you'd =
get=20
notifications for all objects.&nbsp; That's very brute =
force=20
though...<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D""> When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for =
things=20
affecting the resource directly, not for EObjects nested =
down in=20
the resource.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that it=20
tracks the changes to a Trace reference.&nbsp; This =
could be=20
used to trigger adding an adapter to the Trace instance =
to track=20
changes to the Artifact reference.&nbsp; And so on until =
you end=20
up with an adapter on the EObject that monitor what A =
needs to=20
know...&nbsp; The logic in EContentAdapter will be =
useful for=20
understanding how to process the notifications so as to =
add and=20
remove adapters as the chain of references changes.<BR>
<BLOCKQUOTE cite=3Dmid:grfc7u$v61$1@build.eclipse.org =
type=3D"cite"><PRE wrap=3D"">Thanks in advance for your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:1D24C44BC5904EB18BFE64CFEE38083F@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BLOCKQUOTE=
></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BODY></HTML>

------=_NextPart_001_001A_01C9BF5F.AEB44D60--

------=_NextPart_000_0019_01C9BF5F.AEB44D60
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <1D24C44BC5904EB18BFE64CFEE38083F@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_0019_01C9BF5F.AEB44D60--
Re: Problems listening notifications from other Resources [message #429296 is a reply to message #429295] Fri, 17 April 2009 11:30 Go to previous messageGo to next message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------000901020104070601000606
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Re: Problems listening notifications from other Resources [message #429336 is a reply to message #429296] Mon, 20 April 2009 11:48 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: bmoros.um.es

This is a multi-part message in MIME format.

------=_NextPart_000_005A_01C9C1BE.BB44B900
Content-Type: multipart/alternative;
boundary="----=_NextPart_001_005B_01C9C1BE.BB44B900"


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

Dear Ed,

I am sorry for the amount of emails I have sent it to you ... but I am =
not able to solve my problem. In the ArtifactImpl class I have =
specialized the getter, the setter (for the linked EObject) and I have =
controled the REMOVING_ADAPTER event (the only one which is received) to =
add the adapter to the linked EObject again. But any notification =
arrives from the other resource, for instance, the UML class model. When =
the objects in the UML class diagram are resolved, the adapter list =
doesn=B4t include the adapter I need (although it has been added to the =
target object). The problem is that the SET and RESOLVE_PROXY =
notifications you said in your post, arrives to a generic EObject for me =
and I can not change the code of every EObject I could link to an =
Artifact object. The EObject could come from any DSL defined by using =
the EMF framework. =20

Thank you very much for your time.

Best regards,
Bego=F1a


"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs9p8i$9mn$1@build.eclipse.org...
Bego=F1a,

Comments below.

Bego=F1a Moros wrote:=20
Dear Ed,

thank you for your help, now I understand where the problem is. I =
thought that if I set an adapter to the target object instead of the =
proxy, this apater would be kept when the corresponding editor would =
start but it wouldn=B4t. As you said, the only notification received is =
REMOVING_ADAPTER and after that any other is received. I don=B4t know if =
it is possible to set an adapter to the linked EObject from my model =
(EReference from Artifact class) since it is the only access point to =
it, so that, when some proxy is resolved then it obtains the same =
adapters list.=20

I think you either needs to specialize both the setter (as you've =
done) and the getter to deal with proxy resolves much like you've done =
in the setter. Or listen to notifications on that object and respond to =
SET and RESOLVE_PROXY notifications in the same way, i.e., remove =
adapter from old object and add to new object.


Thanks in advance.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs7hc4$e4c$1@build.eclipse.org...
Bego=F1a,

Comments below.

Bego=F1a Moros wrote:=20
Ed,=20

my answers below

>"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:gs725a$fft$1@build.eclipse.org...
>Bego=F1a,
>
>Comments below.
>
>>Bego=F1a Moros wrote:=20

>>Dear Ed,
>> the resource did be unloaded by the GMF XXXDocumentProvider =
class because it is the generated behaviour when a resource changes =
(when the resource is saved). I have >>changed the generated code to =
avoid unloading the resouce.

>That ought to be an expected delta that obviously doesn't =
indicate the in-memory copy and the persistent backing store are out of =
sync.

>>On the other hand, by debugging the code I have realized that =
when some property of the linked EObject is set the only adapter in the =
list is the XXXItemProvider. I can not find >>when the rest of the =
Adapters are removed.=20

>Your adapter will get a notification that it's removed, right?

Yes, that=B4s right. It received REMOVING_ADAPTER notifications =
but not SET notifications.=20

Once the adapter is removed, you'll never get another =
notification, right?


>>Until that moment, the list of the adapters contained the =
adapter I have added to listen the changes.

>Until which moment? This sounds like you just contradicted the =
previous statement.

I have follow the editors initialization, and all the artifacts =
objects in the depicted model are right. The linked objects from the =
artifacts have been correctly initialized and the linked EObjects =
includes my new adapter in its eAdapters list. When everything has been =
loaded it is when I set some of the linked EObject property in its own =
editor to follow the notification. In this moment, the eAdapters list =
only includes a XXXItemProvider object.
Well, adapters don't just disappear on their own and when they are =
removed, they get a notification...


>>Could you give me some clue?

>My guess would be that you're dealing with a proxy resolving =
reference and you have an adapter on the proxy but aren't taking action =
when that proxy is resolved and is >replaced by the actual resolved =
object.

I try to add the adapter to the EObject since I check if the =
object isProxy (and then call resolveProxy) before adding the =
Adapter.What you guess is that the UML Class Editor (for instance) when =
resolving the objects in the class diagram ignores the adapters added to =
the EObjects, right? If so, I am not sure I can do what I need.
You have to be careful when you resolve proxies because the value =
will get set during deserialization and at that point, the proxy might =
not be able to resolve. It definitely sounds like some proxy stuff is =
at work. Set breakpoints in getter to see when proxies are being =
resolve. You'll clearly need some logic in there as well.



Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el mensaje =
news:grvbto$o3c$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
I forgot to say in my last post that the only =
notification which arrives to the Artifact notifyChanged method is the =
REMOVING_ADAPTER event when the resource which the linked element =
belongs to is saved. Why is the adapter removed?
What's on the stack at the point when this happens. It =
sounds like the resource itself is being unloaded, which shouldn't =
normally happen as a result of a save if all is set up correctly...


"Bego=F1a Moros" <bmoros@um.es> escribi=F3 en el =
mensaje news:grv2ok$afr$1@build.eclipse.org...
Dear Ed,

thank you very much for your comments and advice. I =
have been trying to follow your indications but I am not able to solve =
my problem. What I have done is:=20
1) Artifact implements Adapter to listen the linked =
EObject (element reference) notifications
2) Whenever an EObject is set in an Artifact object =
(Artifact setElement method) the adapters are updated:
oldElement.eAdapters().remove(this);
element.eAdapters().add(this);
3) Some system.out.println calls are included in the =
notifyChanged method just to check whether it is executed or not. =
isAdapterForType method always return true

Unfortunately nothing is printed when the linked =
element change (for instance, the element is a UML class and its name is =
set). I do not understand where the problem is. Perhaps the problem is =
that the linked element is a generic EObject from a different Resource.

Could you give me some new advices.=20

Thanks in advance for your time.

Best regards,
Bego=F1a
"Ed Merks" <Ed.Merks@gmail.com> escribi=F3 en el =
mensaje news:grfd84$5bv$1@build.eclipse.org...
Bego=F1a,

Comments below.


Bego=F1a Moros wrote:=20
Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. All EObject produce notification about changes to the values of =
their features...

Please, find attached an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
So the problem is how and when to attach adapters to that object...

I have tryed to resolve this problem by subclassing EContentAdapter but =
the=20
changes notifications from the UML EObjects never arrives to my model.It =
walks down the containment tree so it might well not visit all the links =
you show because they aren't containment references.

I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.If you added an =
EContentAdapter to the resource set you'd get notifications for all =
objects. That's very brute force though...

When the Resource notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). With a =
plain adapter, you'll only get notifications for things affecting the =
resource directly, not for EObjects nested down in the resource.

Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
You could add an adapter to A such that it tracks the changes to a =
Trace reference. This could be used to trigger adding an adapter to the =
Trace instance to track changes to the Artifact reference. And so on =
until you end up with an adapter on the EObject that monitor what A =
needs to know... The logic in EContentAdapter will be useful for =
understanding how to process the notifications so as to add and remove =
adapters as the chain of references changes.

Thanks in advance for your time.

Best regards,
Bego=F1a=20



------=_NextPart_001_005B_01C9C1BE.BB44B900
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 6.00.6000.16825" name=3DGENERATOR></HEAD>
<BODY text=3D#000000 bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>I am sorry for the amount of emails I =
have sent it=20
to you ... but I am not able to solve my problem. In the ArtifactImpl =
class I=20
have specialized the getter, the setter&nbsp;(for the linked EObject) =
and&nbsp;I=20
have controled the REMOVING_ADAPTER event (the only one which is =
received) to=20
add the adapter to the linked EObject again. But any notification =
arrives from=20
the other resource, for instance, the UML class model. When the objects =
in the=20
UML class diagram are resolved, the adapter list doesn=B4t include the =
adapter I=20
need (although it has been added to the target object). The problem is =
that=20
the&nbsp;SET and RESOLVE_PROXY notifications&nbsp;you said&nbsp;in your =
post,=20
arrives&nbsp;to a generic&nbsp;EObject for&nbsp;me and I can=20
not&nbsp;change&nbsp;the code of every EObject I could link to&nbsp;an =
Artifact=20
object. The EObject could come from any DSL defined&nbsp;by&nbsp;using=20
the&nbsp;EMF framework.&nbsp;&nbsp;</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thank you very much for your =
time.</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2></FONT>&nbsp;</DIV>
<DIV>"Ed Merks" &lt;<A=20
href=3D"mailto:Ed.Merks@gmail.com">Ed.Merks@gmail.com</A>&gt; escribi=F3 =
en el=20
mensaje <A=20
href=3D"news:gs9p8i$9mn$1@build.eclipse.org">news:gs9p8i$9mn$1@build.ecli=
pse.org</A>...</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: 5px; =
BORDER-LEFT: #000000 2px solid; MARGIN-RIGHT: =
0px">Bego=F1a,<BR><BR>Comments=20
below.<BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:gs9oro$4b6$1@build.eclipse.org type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you for your help, now&nbsp;I =
understand=20
where the problem is. I thought that if&nbsp;I set an adapter to=20
the&nbsp;target&nbsp;object&nbsp;instead of the proxy, this apater =
would be=20
kept when the corresponding editor would start but it wouldn=B4t. =
As&nbsp;you=20
said, the only notification received is REMOVING_ADAPTER and after =
that any=20
other is received. I don=B4t&nbsp;know if it is possible to set an =
adapter to=20
the linked EObject&nbsp;from my&nbsp;model (EReference from Artifact =
class)=20
since&nbsp;it is the only access&nbsp;point to it, so that, =
when&nbsp;some=20
proxy is resolved then it obtains the same adapters list.=20
<BR></FONT></DIV></BLOCKQUOTE>I think you either needs to specialize =
both the=20
setter (as you've done) and the getter to deal with proxy resolves =
much like=20
you've done in the setter.&nbsp; Or listen to notifications on that =
object and=20
respond to SET and RESOLVE_PROXY notifications in the same way, i.e., =
remove=20
adapter from old object and add to new object.<BR>
<BLOCKQUOTE cite=3Dmid:gs9oro$4b6$1@build.eclipse.org type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 en =
el mensaje=20
<A href=3D"news:gs7hc4$e4c$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:gs7hc4$e4c$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org =
type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" name=3DGENERATOR>
<DIV><FONT face=3DArial size=3D2>Ed, </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>my answers below</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;</FONT>"Ed Merks" &lt;<A=20
href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; escribi=F3 =
en el mensaje=20
<A href=3D"news:gs725a$fft$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:gs725a$fft$1@build.eclipse.org</A>...</DIV>=

<DIV>&gt;Bego=F1a,<BR><FONT face=3DArial =
size=3D2>&gt;</FONT><BR>&gt;Comments=20
below.<BR><FONT face=3DArial =
size=3D2>&gt;</FONT><BR>&gt;&gt;Bego=F1a Moros=20
wrote: </DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Dear Ed,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt; the resource did be =
unloaded by=20
the GMF XXXDocumentProvider class because it is the generated =
behaviour=20
when a resource changes (when the resource is saved). I have=20
&gt;&gt;changed the generated code to avoid unloading the=20
resouce.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;That ought to be an expected delta that obviously =
doesn't=20
indicate the in-memory copy and the persistent backing store are =
out of=20
sync.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;On the other hand, by =
debugging the=20
code I have realized that when some property of the linked =
EObject is=20
set the only adapter in the list is the XXXItemProvider. I can =
not find=20
&gt;&gt;when the rest of the Adapters are removed. </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;Your adapter will get a notification that it's removed, =

right?</DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Yes, that=B4s right. It=20
received&nbsp;REMOVING_ADAPTER notifications but not SET =
notifications.=20
<BR></FONT></DIV></BLOCKQUOTE>Once the adapter is removed, =
you'll never=20
get another notification, right?<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Until that moment, the =
list of the=20
adapters contained the adapter I have added to listen the=20
changes.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;Until which moment? This sounds like you just =
contradicted the=20
previous statement.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I have follow the editors =
initialization,=20
and all the artifacts objects in the depicted model =
are&nbsp;right. The=20
linked objects from the artifacts have been correctly =
initialized and=20
the linked EObjects includes my new adapter in its eAdapters =
list. When=20
everything has&nbsp;been loaded it is when&nbsp;I set some of =
the linked=20
EObject property in&nbsp;its own&nbsp;editor to follow the =
notification.=20
In this moment, the eAdapters list only includes a =
XXXItemProvider=20
object.</FONT></DIV></BLOCKQUOTE>Well, adapters don't just =
disappear on=20
their own and when they are removed, they get a =
notification...<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>&gt;&gt;Could you give me some=20
clue?</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV>&gt;My guess would be that you're dealing with a proxy =
resolving=20
reference and you have an adapter on the proxy but aren't taking =
action=20
when that proxy is resolved and is &gt;replaced by the actual =
resolved=20
object.<BR></DIV>
<DIV><FONT face=3DArial size=3D2>I try to add the adapter to the =
EObject=20
since I check if the object isProxy (and then call resolveProxy) =
before=20
adding the Adapter.What you guess is&nbsp;that the UML Class=20
Editor&nbsp;(for instance) when&nbsp;resolving the objects in =
the class=20
diagram ignores the&nbsp;adapters added to the EObjects, =
right?&nbsp;If=20
so, I am not sure I can do what I =
need.</FONT></DIV></BLOCKQUOTE>You have=20
to be careful when you resolve proxies because the value will get =
set=20
during deserialization and at that point, the proxy might not be =
able to=20
resolve.&nbsp; It definitely sounds like some proxy stuff is at=20
work.&nbsp; Set breakpoints in getter to see when proxies are =
being=20
resolve.&nbsp; You'll clearly need some logic in there as =
well.<BR>
<BLOCKQUOTE cite=3Dmid:gs7gkp$9ec$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; MARGIN-LEFT: =
5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<BLOCKQUOTE cite=3Dmid:gs6vgt$kdm$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for your=20
time.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best regards,</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp; =
&nbsp;&nbsp;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; =
escribi=F3 en el=20
mensaje <A href=3D"news:grvbto$o3c$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grvbto$o3c$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<META content=3D"MSHTML 6.00.6000.16809" =
name=3DGENERATOR>
<STYLE></STYLE>

<DIV><FONT face=3DArial size=3D2>I forgot to say in my =
last post=20
that the only notification which arrives to the Artifact =

notifyChanged method&nbsp;is the&nbsp;REMOVING_ADAPTER=20
event&nbsp;when the resource&nbsp;which the linked =
element=20
belongs to&nbsp;is saved. Why&nbsp;is the adapter=20
removed?</FONT></DIV></BLOCKQUOTE>What's on the stack at =
the point=20
when this happens.&nbsp; It sounds like the resource =
itself is=20
being unloaded, which shouldn't normally happen as a =
result of a=20
save if all is set up correctly...<BR>
<BLOCKQUOTE cite=3Dmid:grv4o7$n2f$1@build.eclipse.org =
type=3D"cite">
<DIV>&nbsp;</DIV>
<BLOCKQUOTE dir=3Dltr=20
style=3D"PADDING-RIGHT: 0px; PADDING-LEFT: 5px; =
MARGIN-LEFT: 5px; BORDER-LEFT: rgb(0,0,0) 2px solid; MARGIN-RIGHT: 0px">
<DIV>"Bego=F1a Moros" &lt;<A =
href=3D"mailto:bmoros@um.es"=20
moz-do-not-send=3D"true">bmoros@um.es</A>&gt; =
escribi=F3 en el=20
mensaje <A =
href=3D"news:grv2ok$afr$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grv2ok$afr$1@build.eclipse.org</A>...</DIV>=

<DIV><FONT face=3DArial size=3D2>Dear Ed,</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>thank you very much =
for your=20
comments and advice. I have been trying to follow your =

indications but I am not able to solve my problem. =
What I have=20
done is: </FONT></DIV>
<DIV><FONT face=3DArial size=3D2>1) Artifact =
implements Adapter to=20
listen the linked EObject (element reference)=20
notifications</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>2) Whenever an =
EObject is set in=20
an Artifact object (Artifact setElement method) the =
adapters=20
are updated:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>&nbsp;&nbsp;&nbsp;=20
&nbsp;&nbsp;&nbsp;=20
oldElement.eAdapters().remove(this);</FONT></DIV>
<DIV><FONT face=3DArial=20
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;=20
element.eAdapters().add(this);</FONT></DIV>
<DIV><FONT face=3DArial size=3D2>3) Some =
system.out.println calls=20
are included in the notifyChanged method just to check =
whether=20
it is executed or not. isAdapterForType method always =
return=20
true</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Unfortunately nothing =
is printed=20
when the linked element change (for instance, the =
element is a=20
UML class and&nbsp;its name is set). I do not =
understand where=20
the problem is. Perhaps the problem is that the linked =
element=20
is a generic EObject from a different =
Resource.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Could you give me =
some new=20
advices. </FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Thanks in advance for =
your=20
time.</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=3DArial size=3D2>Best =
regards,</FONT></DIV>
<DIV><FONT face=3DArial=20
=
size=3D2> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;=20
Bego=F1a</FONT></DIV>
<BLOCKQUOTE dir=3Dltr=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 =
href=3D"mailto:Ed.Merks@gmail.com"=20
moz-do-not-send=3D"true">Ed.Merks@gmail.com</A>&gt; =
escribi=F3=20
en el mensaje <A =
href=3D"news:grfd84$5bv$1@build.eclipse.org"=20
=
moz-do-not-send=3D"true">news:grfd84$5bv$1@build.eclipse.org</A>...</DIV>=
Bego=F1a,<BR><BR>Comments=20
below.<BR><BR><BR>Bego=F1a Moros wrote:=20
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D""> Hi all,

I would like to know if it is possible to listen the change =
notifications=20
from an EObject which is linked to an object defined in my metamodel =
(called=20
Artifact) but this EObject belongs to a different model, for instance it =

could be a class from a UML class model or a use case from a UML use =
case=20
model. </PRE></BLOCKQUOTE>All EObject produce notification=20
about changes to the values of their features...<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D""> Please, find attached =
an excerpt of the metamodel. As the attached=20
figure shows, A class is related to Artifact class by means of the Trace =

class. An Artifact is linked to a generic EObject (as I previously=20
explained). The problem is that when something in the generic linked =
EObject=20
changes (for instance the name of the class in the UML class model) the=20
related A object has to know it.
</PRE></BLOCKQUOTE>So the problem is how and when to=20
attach adapters to that object...<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D"">I have tryed to resolve =
this problem by subclassing EContentAdapter but the=20
changes notifications from the UML EObjects never arrives to my =
model.</PRE></BLOCKQUOTE>It=20
walks down the containment tree so it might well not =
visit=20
all the links you show because they aren't =
containment=20
references.<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D""> I am=20
able to listen Resource notifications but I am not able to get the =
specific=20
object in that Resource which has changed.</PRE></BLOCKQUOTE>If=20
you added an EContentAdapter to the resource set =
you'd get=20
notifications for all objects.&nbsp; That's very =
brute force=20
though...<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D""> When the Resource =
notification=20
arrives and the event type is SET, the values obtained by calling=20
notification.getFeature()/getOldValue/getNewValue are not the ones that =
I=20
need (the EObject which changes the name by calling setName). =
</PRE></BLOCKQUOTE>With=20
a plain adapter, you'll only get notifications for =
things=20
affecting the resource directly, not for EObjects =
nested=20
down in the resource.<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D"">Frequently,=20
the feature value is null and the old and new values are boolean values=20
instead of objects.

Any help will be wellcome!!!
</PRE></BLOCKQUOTE>You could add an adapter to A such that=20
it tracks the changes to a Trace reference.&nbsp; =
This could=20
be used to trigger adding an adapter to the Trace =
instance=20
to track changes to the Artifact reference.&nbsp; =
And so on=20
until you end up with an adapter on the EObject that =
monitor=20
what A needs to know...&nbsp; The logic in =
EContentAdapter=20
will be useful for understanding how to process the=20
notifications so as to add and remove adapters as =
the chain=20
of references changes.<BR>
<BLOCKQUOTE =
cite=3Dmid:grfc7u$v61$1@build.eclipse.org=20
type=3D"cite"><PRE wrap=3D"">Thanks in advance for =
your time.

Best regards,
Bego=F1a=20


</PRE>
<CENTER><IMG=20
=
src=3D"cid:F81A9B5E34234B7DAFB0AA3A3E72ECF2@bmorosacer5630"></CENTER></BL=
OCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BLOCKQUOTE=
></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE></BLOCKQUOTE ></BODY>=
</HTML>

------=_NextPart_001_005B_01C9C1BE.BB44B900--

------=_NextPart_000_005A_01C9C1BE.BB44B900
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-ID: <F81A9B5E34234B7DAFB0AA3A3E72ECF2@bmorosacer5630>

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsL DBkSEw8UHRofHh0a
HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgN DRgyIRwhMjIyMjIy
MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/ wAARCACHAikDASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAA AgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcY GRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKT lJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP0 9fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA AQJ3AAECAxEEBSEx
BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2 Nzg5OkNERUZHSElK
U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOk paanqKmqsrO0tba3
uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMB AAIRAxEAPwD1/Wb3
WP8AhIdN0nSbmxtvtFpc3Mkt3avP/q3hUKAsiYz5xOST0FH2Pxh/0HdD/wDB NN/8lUXn/JQ9G/7B
V/8A+jbSugoA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+ x+MP+g7of/gmm/8A
kqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A 4Jpv/kqugooA5/7H
4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8A kqj7H4w/6Duh/wDg
mm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H 4w/6Duh/+Cab/wCS
qPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDg mm/+Sq6CigDn/sfj
D/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCS qPsfjD/oO6H/AOCa
b/5KroKKAOf+x+MP+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfj D/oO6H/4Jpv/AJKo
+x+MP+g7of8A4Jpv/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCa b/5KroKKAOf+x+MP
+g7of/gmm/8Akqj7H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo +x+MP+g7of8A4Jpv
/kqugooA5/7H4w/6Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP +g7of/gmm/8Akqj7
H4w/6Duh/wDgmm/+Sq6CigDn/sfjD/oO6H/4Jpv/AJKo+x+MP+g7of8A4Jpv /kqugooA5/7H4w/6
Duh/+Cab/wCSqPsfjD/oO6H/AOCab/5KroKKAOf+x+MP+g7of/gmm/8Akqj7 H4w/6Duh/wDgmm/+
Sq6CigDn/sfjD/oO6H/4Jpv/AJKqu914k0zWtFgv9Q0q7tb+7e2dYNPkgdcQ SyhgxncdYgMY711F
c/4h/wCQ54T/AOwrJ/6RXVAHQVl6xdXsEmnQWLwRy3dyYS88RkVQIpH+6GXn 5AOvetSsnV/+QnoH
/X+3/pNPUz2N8Olz69n+CbD7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/ 8frWoo5F/TYfWJ9l
/wCAx/yMn7P4h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ 9l/4DH/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH /oKaX/4LZP8A4/R9
n8Q/9BTS/wDwWyf/AB+taijkX9Nh9Yn2X/gMf8jJ+z+If+gppf8A4LZP/j9H 2fxD/wBBTS//AAWy
f/H61qKORf02H1ifZf8AgMf8jJ+z+If+gppf/gtk/wDj9H2fxD/0FNL/APBb J/8AH61qKORf02H1
ifZf+Ax/yMn7P4h/6Cml/wDgtk/+P0fZ/EP/AEFNL/8ABbJ/8frWoo5F/TYf WJ9l/wCAx/yMn7P4
h/6Cml/+C2T/AOP0fZ/EP/QU0v8A8Fsn/wAfrWoo5F/TYfWJ9l/4DH/Iyfs/ iH/oKaX/AOC2T/4/
R9n8Q/8AQU0v/wAFsn/x+taijkX9Nh9Yn2X/AIDH/Iyfs/iH/oKaX/4LZP8A 4/VjRbyTUdC0++mV
VlubaOZwgwoLKCcZ7c1erJ8Lf8ihov8A14Qf+i1pJWlZFSlz0XJpXTWyS3T7 ehrUUUVZzBRRRQBz
95/yUPRv+wVf/wDo20roK5+8/wCSh6N/2Cr/AP8ARtpXQUAFcnpOveKtZ0ax 1S30DRlgvbeO4jWT
WJQwV1DAHFsRnB9TXWVz/gT/AJJ54a/7BVr/AOiloAPtnjD/AKAWh/8Ag5m/ +RaPtnjD/oBaH/4O
Zv8A5FroKKAOf+2eMP8AoBaH/wCDmb/5Fo+2eMP+gFof/g5m/wDkWugooA5/ 7Z4w/wCgFof/AIOZ
v/kWj7Z4w/6AWh/+Dmb/AORa6CigDn/tnjD/AKAWh/8Ag5m/+Ra0NC1P+2/D 2mat5Pk/brSK58rd
u2b0Dbc4GcZxnArQrn/An/JPPDX/AGCrX/0UtAHQUUUUAFFFFABWHrGsala6 zY6XpenWl3PdW89w
zXV40CosTRLgbY3JJMw7Doa3K5+8/wCSh6N/2Cr/AP8ARtpQAfbPGH/QC0P/ AMHM3/yLR9s8Yf8A
QC0P/wAHM3/yLXQUUAc/9s8Yf9ALQ/8Awczf/ItH2zxh/wBALQ//AAczf/It dBRQBz/2zxh/0AtD
/wDBzN/8i0fbPGH/AEAtD/8ABzN/8i10FFAHP/bPGH/QC0P/AMHM3/yLRZaz rH/CQwaTq2l2Nt9o
tJrmOW0v3n/1bxKVIaFMZ80HIJ6Gugrn7z/koejf9gq//wDRtpQB0FFFFABR RRQAVXv7630zTrm/
vJPLtbWJ5pn2k7UUEscDk4APSrFc/wCO/wDknniX/sFXX/opqAD/AITLS/8A n11z/wAEV7/8Zo/4
TLS/+fXXP/BFe/8AxmugooA5/wD4TLS/+fXXP/BFe/8Axmj/AITLS/8An11z /wAEV7/8ZroKKAOf
/wCEy0v/AJ9dc/8ABFe//GaP+Ey0v/n11z/wRXv/AMZroKKAOf8A+Ey0v/n1 1z/wRXv/AMZqOfxz
otrby3FxFrMMESF5JJNEvVVFAySSYsAAc5rpK5/x3/yTzxL/ANgq6/8ARTUA dBRRRQAVz/iH/kOe
E/8AsKyf+kV1XQVz/iH/AJDnhP8A7Csn/pFdUAdBWTq//IT0D/r/AG/9Jp61 qydX/wCQnoH/AF/t
/wCk09TPb7vzN8P8b9Jf+ks1qx9Q8T6bpmomwnF9JdLEszJaafcXO1GLBSTE jAZKN19DWxXP2f8A
yUPWf+wVYf8Ao27qjAP+Ey0v/n11z/wRXv8A8Zo/4TLS/wDn11z/AMEV7/8A Ga6CigDn/wDhMtL/
AOfXXP8AwRXv/wAZo/4TLS/+fXXP/BFe/wDxmugooA5//hMtL/59dc/8EV7/ APGaP+Ey0v8A59dc
/wDBFe//ABmugooA5/8A4TLS/wDn11z/AMEV7/8AGauaV4g0/Wbi4t7T7Ws9 uiPLHdWU1swVywUg
SopIJRxkZ6GtSufs/wDkoes/9gqw/wDRt3QB0FFFFABRRRQAUUUUAFFFFABW T4W/5FDRf+vCD/0W
ta1ZPhb/AJFDRf8Arwg/9FrUv4l8/wBDeP8AAl6r8pGtRRRVGAUUUUAc/ef8 lD0b/sFX/wD6NtK6
CufvP+Sh6N/2Cr//ANG2ldBQAVz/AIE/5J54a/7BVr/6KWugrn/An/JPPDX/ AGCrX/0UtAHQUUVF
cJJLbSxwyiKVkKpIV3bGI4OMjOPTNJ7Ajzyy1u+/4TuLWZL+4bRdRvZtHhtm c+SjRrlZAOm5njlX
PfK16RXDyfC/Q18OW1lZ21nbatbCF49XFmhn86NlbzGIwTuK8jd3NdwOnPWq 2Vu39fncOt/6/q1g
ooopAFcH4L8WadbeBfD0D22sl49MtkYx6LeOpIiUcMsRDD3BIPau8rn/AAJ/ yTzw1/2CrX/0UtAB
/wAJlpf/AD665/4Ir3/4zR/wmWl/8+uuf+CK9/8AjNdBRQBz/wDwmWl/8+uu f+CK9/8AjNH/AAmW
l/8APrrn/givf/jNdBRQBz//AAmWl/8APrrn/givf/jNZ9vrNrq/xD0v7NFf R+VpV9u+12E9tnMt
pjHmou7p2zjjPUV2Fc/ef8lD0b/sFX//AKNtKAOgrn/Ft3remaNe6ppV3p8a WdrJO8N1ZvKZCqls
BllTb0x0NdBWV4ns59R8J6xZWsfmXFxZTRRJkDczIQBk8Dk96md+V23KhbmS exn2es3Wl6EuseKN
V05bSVISrQWckIiLkD5iZHyMsBnAA6n2s3HizTLa3inli1Xy5FLgrpN0xUAk EsBGSvQ/exkcjiqm
saTfXXg/TrCGDdcwzWTSJvUYEcsbPyTjgKfrjiqniOx1i718g2uq3mlNaqsE enagtoIp9zbmlYSI
7LgpjBYDDfLnFXPS9u7+6xMPhTZtXfinR7OO0drl5/tkfnW6WdvJcvJHgHeF iVjt5HzYxyOeajn8
X6JbeR5l3IVmjSXfHbSukaP91pWVSIgfVyvQ+hrmPD+k634YGlXb6LNfE6LB Y3EFtND5tvLGWPWR
1Uqd5yQxOVHBzxHfeG7q41PVLnUdB1W/h1ZY5DBY6y0KQt5So8Uy+dGrDK/e UPkE8cDI0r2X9a/1
qH9fkej1yevXs9j460SW30y71Bzpl8pitWiVgPNtPmPmOgxxjrnkcdcdVGgj iSNRhVUADOeB71g3
n/JQ9G/7BV//AOjbSkCD/hIdU/6EzXP+/wBZf/JFH/CQ6p/0Jmuf9/rL/wCS K6CigDn/APhIdU/6
EzXP+/1l/wDJFH/CQ6p/0Jmuf9/rL/5IroKKAOf/AOEh1T/oTNc/7/WX/wAk Vh+NNd1GbwL4hifw
nrMCPplyrSyS2ZVAYm+Y7ZycDrwCfQGu8rn/AB3/AMk88S/9gq6/9FNQB0FZ mqeINK0W50+21G8W
CbUJxb2qspPmSHtwOO3JwORWnXlfi5dQ8R654gi0/SL2+Gn2S2dpPbtAFhuy VmLHzJFPGIPug9DS
vZ6/1/Ww7X/r+vU9UJABJOAO9Vlv7WSK2mhl86G5/wBVLCDIhG0tksuQFwOp IHQdSK4LSrseN9Wa
6kvtRjspdEtbkWlteSQKJWaUMSYyGyNu3AOD3BwMUdAsIrbwj4MW2vNRCaiP LuVGozsCBaTHaoL4
TDDOFxyB6DFSTSd+n/B/yBK/9eVzvtD15Nfhe5trG7isjzBdTeWEuVyRuQBy wHGfmVeCK1q8p0K3
hj8KeFtJsoNTub+/sPtQDa7c2sKKioGy6sWH3lwiqRyTgYzUuiajfaxF4f0j UdTuI7aafUEeS2vH
3zmCTbHF567XIC7ju4ZtnPfLa1sLzPTFuYGuXtlmjNwiB2iDDcqkkAkdQCQe fY1ieO/+SeeJf+wV
df8Aopq57SNB05fiPfhNQ1OfyLG3kjZtVnYkiaYFWw/zqpAXa2e+cknPQ+O/ +SeeJf8AsFXX/opq
XQHo7f1sdBRXP/8ACCeD/wDoVND/APBdD/8AE0f8IJ4P/wChU0P/AMF0P/xN IDoK5/xD/wAhzwn/
ANhWT/0iuqP+EE8H/wDQqaH/AOC6H/4msPXfBfhWHWPDCReGtGRJtTdJVWwi Adfslw2G+XkblU4P
cA9qAO8rJ1f/AJCegf8AX+3/AKTT1V/4QTwf/wBCpof/AILof/iazdT8F+FY dQ0VIvDWjIk14ySq
thEA6+RM2G+XkblU4PcA9qme33fmb4f436S/9JZ1V9NcW9nJLa2v2qZMEQiQ IXGRuCk8bsZwCQCc
AlQdw5vQdUtNW8da3NaPIQmmWKSJLE8UkbebdnDo4DKcEEAgZDA9CDUl94K8 MQWcklp4K0O6uOBH
EbKFASSBlmK8KM5JAJwDgMcA5/hDw7Z+GvGWu21pFBG0+n2NxP8AZ4RDG0hk ulOyNeEUBVAHJwMk
sxLGjA27rxfpFrqVzp7f2hNc2pUTLa6Zc3AQsoYAtHGwyQQetTX/AIl0vTZo oJ5Lh7mWPzVt7e0l
nmCdNzRxqzKM8ZIAzx1rmdO0y7vvHXi57fXdQ05VuLYFLVLdg/8Ao6cnzInP 5EVf8PskHj7xTb3L
AXsxtpod/DSW4iCgj1AcSA46E+9C1SG1Y1h4m0yVNLktpTcxalObeGSIAhXC MxDZIK42MCMZB4I6
1p3FylrGJJFlYF1TEUTSHJOBwoJxzyegHJwK8qkij1HxL5kNzJHpl34n2wzQ S7N5FkySFHHTLgrl
cHIODnmrc8lxFpuopBqmoSQ6Z4it7e0m+2yltjvD5kbtuzKAXdfn3Y6dqcVz W87fjb/MGrf16/5H
p9BIAJJwB3rzS0fxJq+rXeowTW0LWertbM0usTIqRJJt8s2ojMZLIQQSSxLg gjgC/p9rH4gTWL/U
9X1GK5h1KW0WG31CW3jhVX2pHsVgpLqVOSCx8zgj5cS3pfyv+X+f9aXLa287 fn/kdxb3EN3bx3Ft
NHNBIoZJI2DKwPQgjgisOz/5KHrP/YKsP/Rt3VD4a6dbWngbSbiCW6driziL iW7lmVSF6KrsQnJP
CgfpV+z/AOSh6z/2CrD/ANG3dXJWbQjoKKKKkAooooAKKKKACiiigArJ8Lf8 ihov/XhB/wCi1rWr
J8Lf8ihov/XhB/6LWpfxL5/obx/gS9V+UjWoooqjAKKKKAOfvP8Akoejf9gq /wD/AEbaV0Fc/ef8
lD0b/sFX/wD6NtK6CgArn/An/JPPDX/YKtf/AEUtdBXF+GtQ1rRvCukaXceD 9ZaeysobeRo57IqW
RApIzcA4yPQUAdpRXP8A/CQ6p/0Jmuf9/rL/AOSKP+Eh1T/oTNc/7/WX/wAk UAdBRXP/APCQ6p/0
Jmuf9/rL/wCSKP8AhIdU/wChM1z/AL/WX/yRQB0FFc//AMJDqn/Qma5/3+sv /kij/hIdU/6EzXP+
/wBZf/JFAHQVz/gT/knnhr/sFWv/AKKWj/hIdU/6EzXP+/1l/wDJFWPCdjca Z4N0OwvI/LurXT7e
GZNwO11jUMMjg4IPSgDYooooAKKKKACufvP+Sh6N/wBgq/8A/RtpXQVzetjU LXxVpWqWmkXeowRW
V3byrayQqyNI9uyk+bIgIxE/QntQB0lFc/8A8JDqn/Qma5/3+sv/AJIo/wCE h1T/AKEzXP8Av9Zf
/JFAHQUVz/8AwkOqf9CZrn/f6y/+SKP+Eh1T/oTNc/7/AFl/8kUAdBRXP/8A CQ6p/wBCZrn/AH+s
v/kij/hIdU/6EzXP+/1l/wDJFAHQVz95/wAlD0b/ALBV/wD+jbSj/hIdU/6E zXP+/wBZf/JFV7V9
S1PxlY38+hX2nWtrp91Cz3ctudzySW5UARSuekTdcdqAOoooooAKKKKACuf8 d/8AJPPEv/YKuv8A
0U1dBXP+O/8AknniX/sFXX/opqAOgqKC1t7bzPs8EUXmuZJPLQLvc9WOOpPr WJ/wnfg//oa9D/8A
BjD/APFUf8J34P8A+hr0P/wYw/8AxVAGrZ6Xp+nszWVha2zMMMYYVQkbi2Dg f3mY/Vie9QW/h/Rb
S6kubbR9PhuJJPNeWO2RXZ8MNxIGScOwz/tH1NUf+E78H/8AQ16H/wCDGH/4 qj/hO/B//Q16H/4M
Yf8A4qgC9d+HtFv7KCyvNH0+4tLfHkwTWyPHHgYG1SMDjjinTaDo9zp50+fS bGWyLmQ2z26NHuJy
W2kYzkk596z/APhO/B//AENeh/8Agxh/+Ko/4Tvwf/0Neh/+DGH/AOKoAu/8 I3oRFkP7F07Fic2g
+yp/o5zn93x8vIB4xyKpeO/+SeeJf+wVdf8AopqP+E78H/8AQ16H/wCDGH/4 qsPxp408K3XgXxDb
2/iXRpp5dMuUjjjv4mZ2MTAAANkknjFAHeUUUUAFc/4h/wCQ54T/AOwrJ/6R XVdBXP8AiH/kOeE/
+wrJ/wCkV1QB0FZOr/8AIT0D/r/b/wBJp61qydX/AOQnoH/X+3/pNPUz2+78 zfD/ABv0l/6SzWrn
7P8A5KHrP/YKsP8A0bd10Fcfca7o+ifEPVP7W1WxsPO0qx8v7XcJFvxLd5xu IzjI6eoqjA2b7wp4
c1O7e71Dw/pV3cvjdNcWccjtgYGWIJPAxU9/oWj6rbw2+o6VY3kMP+qjuLdJ Fj4x8oYEDj0rP/4T
vwf/ANDXof8A4MYf/iqP+E78H/8AQ16H/wCDGH/4qjyA0rrRdKvrKKyu9Msr i0iAEcEsCvGmBgYU
jA4JH0rN1HwyLuGw060ltbDRraaOZ7SC0wzGNw6hWDBUXcBkbCTzgjNH/Cd+ D/8Aoa9D/wDBjD/8
VR/wnfg//oa9D/8ABjD/APFUdbgaE+haPc6nHqdxpVjLqEWPLupLdGlTHTDk ZGPrSTaBo1xqianP
pNhLqEeCl09sjSrjphyMjH1qh/wnfg//AKGvQ/8AwYw//FUf8J34P/6GvQ// AAYw/wDxVAGnZaPp
mmz3E9hp1pazXLb55IIFRpWyTliB8xyT19TWZZ/8lD1n/sFWH/o27o/4Tvwf /wBDXof/AIMYf/iq
p6Dq2m6z461u40vULS+gXTLFGktZllUN5t2cEqSM4IOPcUAdZRRRQAUUUUAF FFFABRRRQAVk+Fv+
RQ0X/rwg/wDRa1rVk+Fv+RQ0X/rwg/8ARa1L+JfP9DeP8CXqvyka1FFFUYBR RRQBz95/yUPRv+wV
f/8Ao20roK5+8/5KHo3/AGCr/wD9G2ldBQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFF
ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABXP+If+Q54T
/wCwrJ/6RXVdBXP+If8AkOeE/wDsKyf+kV1QB0FZOr/8hPQP+v8Ab/0mnrWr J1f/AJCegf8AX+3/
AKTT1M9vu/M3w/xv0l/6SzWoooqjAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigArJ8L
f8ihov8A14Qf+i1rWrJ8Lf8AIoaL/wBeEH/otal/Evn+hvH+BL1X5SNaiiiq MAooooA5+8/5KHo3
/YKv/wD0baV0Fc/ef8lD0b/sFX//AKNtK6CgAooooAKKKKACiiigAooooAKK KKACiiigAooooAKK
KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACuf8AEP8A
yHPCf/YVk/8ASK6roK5/xD/yHPCf/YVk/wDSK6oA6CsnV/8AkJ6B/wBf7f8A pNPWtWTq/wDyE9A/
6/2/9Jp6me33fmb4f436S/8ASWa1FFFUYGR4j1pNC0o3JkgSWSRIYjO4VAzE DJ5GQBliAegPTrUm
n6tazxwQvq2n3V1KWCm2YKJMAN8q72PCkE8nrnvUXiWGWfTYEhieRhe2zEIp JAEyEnjsACazW0u5
mtvF6wQGK6vXZIZCu0yDyEC4b03Fhnsc1k3JNs9GjSozoLmdnd66d4pfJXb8 7fdvRavpk8M80Oo2
kkVv/rnSdSsX+8QeOh61H/b+jbZ2/taw2wECY/aUxGScDdzxzxzXK6rFNqlp eSWGnXcUceiy2zxy
Wzxs7ttKIqkAtt2tyMj5uDzW49jjxXpUy2uIoLCZA4j+WM7o8DPY43YHpmhS k9v63/yKlhKMVeTd
9dNNLK9n69P1NuKaO4hSaGRJInUMjowKsD0II6iqq6xpb35sE1Kza8BKm3E6 mTI5I25zVPwxbyWu
jtFLE8RF3clVdSDtMzkHnsQQR9a56/fVL+WNLj+0RcRanEwtIbHFusSzjD+Y UJY7fmJD9+gANNza
5fMilhITqzhfRO1/12f6LzOtTWNMku1tE1G0a5bIWFZ1LnBIOFznjB/I1MLy 1Np9rFzCbbGfO3jZ
j69K5RNOnTw2qLZyCf8AtvzyoiO7H2vO/pnGznPp7VKltKfEbaCI82CTDUye CApJIjx2PnAv9BSU
5aX6/wDD/wCf3FSwdLXllte+2y3a9bqy/E6t3SONpJGVEUEszHAAHcmsq78T 6PZ6cmoG/t5bV50g
EsUyMu5iB1zjgcn0AJo8TW011ojpDE0xSWGV4lGTIiyKzKB3yoPHfp3rBv4b i+l1LUrWzuvspmsX
CNA6SSGKXdIwjYBj8pA6ZO3jPFEptOy/rzJwmGpVEpVH1t26r87t/J/LVTxV p39q3EcupaelgIIp
IbgzqBIzNIGAbODjZ2961rzUrDTkR729trZHOEaeVUDH0GTzWNaIL3xDqd8t rMIZtPhjjea3eMnD
S7lw4B/u5H0PpWFZ2N5bRadJeS6rawNo8Fv/AKLaCZldc70dDG7LkFecAcYP QUueSX9ef+Rs8JRn
LTSyWnV3Xpe666fcdvNqNlbzrBNeW8czMqrG8qhiWztABPU7Tj1wfSrNczoW mC012RxBP5cel2sE
M9ynz4BkypbGM/dyB7V01axbauzgxFOFOXLB30X4oKKKKZgFZPhb/kUNF/68 IP8A0Wta1ZPhb/kU
NF/68IP/AEWtS/iXz/Q3j/Al6r8pGtRRRVGAUUUUAc/ef8lD0b/sFX//AKNt K6CufvP+Sh6N/wBg
q/8A/RtpXQUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUA
FFFFABRRRQAVyT+P7ONHuG0fV/sMd41lJeLCjIsokMeAofewLYAKqRyOhyB1 tcgfCt8fDMmm+bb+
c2r/AG4Nubb5f2vzsdM7tvHTGe+OaFvr/Wq/QfT+uz/4BZHjW0jlmhvdN1Cy uIJYEmimETGNJmKp
KSjsuzcCDg5GOQBzVPx34jurDSL+z0eeW21OKO3f7UIVkSESzrGMhuCSN/GO g7cVb1XQ4ZNQ17UN
TlhTSrrSktpCWIZAhlZmPGAAHBBz1FYeneHNW1r4ds15NEdZ1Wa3vJpJQUAV HjKrgA4PloOP7xPr
Rv8A1/XqGz/ryf8AwCprnjXWG0GzXT51tdUtJYv7XPlK2z98sJjAbON7FmB/ ur7iuv1TxXbaXcXC
GyvbmGzAa+uYFQx2gIzl9zBj8p3EIGIGOORmLxL4Xj1PSdQi06K3gvb64tpp 5XyPM8qRDyQD/CmB
WVqngnzfEOo6kmg+HdYF+UctqqYktmVAnyny33qQoO3K4OeTngT7/wBbfgGl i/pXinUL7XtZsX0K
7e2srnyormJodu3ylcbsy7iWJ4wuMMucHOHzeNYbFbv+1NH1PT5LezkvVin8 lzNHHjfsMcjLkZXh
iOo98Vrjw9rcVzr9vps1pBaaum5LtJ3jntJBCIxtQIQwyinO9SMn0GcJ/h7f zC4aHSvD+kyS6Tc2
LfZJXkaaSQJteSQxKTyrZzuPOcnJwf5fjb/P+uo1a6udIPGoN5FZ/wDCPa0L m4hM9pEY4QbhARuI
PmYTAYEiQoecdeKlTxnZXFjZTWdle3d1dvKkdjEqCZWiO2UMWcINp4J3YJIw TkVZfR7hvEuk6kHi
8mzspreRcncWcxEEcYx8h7+lYlt4X1jS57XULI2M97Bc3xME0zxxyQ3EvmD5 wjFWXan8JHUehpu3
9euhK2v/AFsah8Y2Ullp81naXt7c35kWGzhRRKDGcSBt7Kq7CMHLYzgDORWV 4c8Syx6GDPbahfah
c6herDZqyNMESdgQS7hAqDaPvY6AZyMpa+FNZ0h9L1GyksrvUYGuzdQTyvDC /wBofzG2OEYjawUD
K8jOcVTbwDdvbWVxe2eiapd211eyPZ3ik28iTy7+GKMUZcLztbuO+QD6f15m zZ64NX8VaRJayTx2
0theebbSHGyVJYVIdQSNyncM898Eg1b8Q/8AIc8J/wDYVk/9IrqoNJ8OzWOq aZdrY6Xp8NvaXML2
lhkRo0kkbLt+RQeEOTgcnpU/iH/kOeE/+wrJ/wCkV1Q9l/XViOgrJ1f/AJCe gf8AX+3/AKTT1rVk
6v8A8hPQP+v9v/Saeont935m+H+N+kv/AElmtRRRVGAUVheIRJLfaJbLcXEM c94yS+RKYy6+TIcE
jnGQPfuMHmsG6int9L8STx6jqG/SpWNnuu5G2YiSTDZP7wZJ4fdxx61m52b0 2/4H+Z3UcGqii+az
fl/e5fz/AA+47umRzRSvIkcqO0TbZArAlDgHB9Dgg/jXG3sms6lqmrLayQxP YmPyXk1GSBYgY1fe
0aoVkUnd944wpHGDl1rHZ6dceKdTuXvSbW4aSRIbuXoYEJwu4KTycE9MDGMD C9pqWsBaOstbJ2Vn
va3X+9/XXs6K871G41LTRfxB5bVZdHuLhUGqS3TqyldrZcZQjcR8pIP4Ctlt O2eI7Oy+36kbe5s5
ZZ1N7Jl3Ro8EHOU++eEKjoMY4oVRvZf1r/kEsAopSctHdrrsrvZ29NfuOrqC Kzggubi5jQia4KmR
ixOdowOvQY7D3PeuR06e51CTTNNu7y5+zlr1S6TNHJKYpQiKXUhuFyeuTjJz g0WF3carLo9hdXly
LZ1u282OVomufKkCR5dSG+4SxwRnGelHtE+g3gJQuubvf0XN9/wvT087dXp9 /FqVs08KuqrLJEQ4
AOUcoeh6ZU0rX0SanFYFX82SF5gcDbtVlB/H5x+tcLYTXb2+nabZkSW9xcX7 5a+ktzKUmO0CVAzH
gs2B1xnOAQdrSY7yLXtNiv5YpZ0sLtC0cpkG0TRBQWIBZgMAkjJINEKnNZf1 sVWwMacpO+nvWXXT
mt+K/rp1NFFFanlhRRRQAUUUUAFZPhb/AJFDRf8Arwg/9FrWtWT4W/5FDRf+ vCD/ANFrUv4l8/0N
4/wJeq/KRrUUUVRgFFFFAGXqvh/T9ZuLe4u/taz26OkUlrezWzBXKlgTE6kg lEODnoKp/wDCG6X/
AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29 /wDj1dBRQBz/APwh
ul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/ AIPb3/49R/whul/8
/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf /j1dBRQBz/8Awhul
/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29 /wDj1H/CG6X/AM/W
uf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj 1dBRQBz/APwhul/8
/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb 3/49R/whul/8/Wuf
+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1d BRQBz/8Awhul/wDP
1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj 1H/CG6X/AM/Wuf8A
g9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBR QBz/APwhul/8/Wuf
+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49 R/whul/8/Wuf+D29
/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQB z/8Awhul/wDP1rn/
AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/APwhul/8/Wuf+D29/wDj1H/C G6X/AM/Wuf8Ag9vf
/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49R/whul/8/Wuf+D29/wDj1dBRQBz/ APwhul/8/Wuf+D29
/wDj1H/CG6X/AM/Wuf8Ag9vf/j1dBRQBz/8Awhul/wDP1rn/AIPb3/49Ult4 S0q1v7a9VtSmntXL
w/atUuZ1RijISFkkZc7XYZx3NblFABWdqun3F6bKW0uYree0nMytLCZVbMbo QQGU9HJ69q0aKTSa
sy4TlCXNEyfs/iH/AKCml/8Agtk/+P0fZ/EP/QU0v/wWyf8Ax+tailyL+mzT 6xPsv/AY/wCRivYa
5K8byX+kO0Tbo2bTHJQ4IyP3/BwSPxpjaXrDpOjXeislxzMp0pyJOAPm/fc8 ADnsK3aKXIv6bKWK
qLa3/gMf8jnbrQtRvpYpbuXQbiSL/VvLpDOU+hM3FLJompTXgvJZtCe6ClBM 2kMXCkEEbvOzjBPH
vXQ0UvZxGsbWSsmvuX+RzMPhq6t43jgHh2JHVlZU0UqGDY3AgTcg4GfXAq4b DXDMsxv9I81FKK/9
lvuVTjIB8/ocD8hW1RTVOK2CWNrSd5NP5L/I52bQtRubb7NPLoMtvvMnlSaQ zLuJJLYM2M5JOfc0
tzompXtrHbXU2hT28ZBSKXSGZFwMDAM2BxxXQ0UvZRBY2stmvuX+Rz0mh6jN Zm0ll0F7YsXMLaQx
TcTknb52M5JNPg0nV7YRCC60WIRIY4/L0p12KSCVGJuBkDj2Fb1FP2cdweMr NWbX3L/Iyfs/iH/o
KaX/AOC2T/4/R9n8Q/8AQU0v/wAFsn/x+tainyL+myPrE+y/8Bj/AJGT9n8Q /wDQU0v/AMFsn/x+
j7P4h/6Cml/+C2T/AOP1rUUci/psPrE+y/8AAY/5GT9n8Q/9BTS//BbJ/wDH 6Ps/iH/oKaX/AOC2
T/4/WtRRyL+mw+sT7L/wGP8AkZP2fxD/ANBTS/8AwWyf/H6t6VY/2ZpFlYeZ 5n2WCOHftxu2qBnH
bOKt0UKKTuTOtOceV2t5JL8kFFFFUZBRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFF
FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUU
AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFAH/2Q==

------=_NextPart_000_005A_01C9C1BE.BB44B900--
Re: Problems listening notifications from other Resources [message #429337 is a reply to message #429336] Mon, 20 April 2009 13:00 Go to previous message
Ed Merks is currently offline Ed MerksFriend
Messages: 33142
Registered: July 2009
Senior Member
This is a multi-part message in MIME format.
--------------030302060500000901050904
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Bego


Ed Merks
Professional Support: https://www.macromodeling.com/
Previous Topic:German mutated vowel in XML files
Next Topic:rdb schema to xsd/java/ecore
Goto Forum:
  


Current Time: Fri Apr 26 23:50:16 GMT 2024

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

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

Back to the top