Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Archived » M2M (model-to-model transformation) » [ATL] How to define the xsi:schemaLocation with the transformation rules?
[ATL] How to define the xsi:schemaLocation with the transformation rules? [message #86675] Thu, 17 July 2008 14:59 Go to next message
Patry Olivier is currently offline Patry OlivierFriend
Messages: 54
Registered: July 2009
Member
Hi,

I need to specify some metamodel locations, that's the
xsi:schemaLocation I have to use, how write this one with ATL?

Thanks,
Re: [ATL] How to define the xsi:schemaLocation with the transformation rules? [message #86689 is a reply to message #86675] Thu, 17 July 2008 20:30 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: brunocarreiro.gmail.com

Hi Olivier,

I also have this problem.
In my case, I'm trying to execute copy rules with UML2 model handler. I'm
using the UML2Copy module available at:
http://ssel.vub.ac.be/viewvc/UML2CaseStudies/uml2cs-transfor mations/UML2Copy.atl?revision=7380&view=markup
For example, as the input model I have this:

<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:My="http:///schemas/My/_OjpXsFQoEd2ZPtml6ktJrw/0"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML"
xsi:schemaLocation="http:///schemas/My/_OjpXsFQoEd2ZPtml6ktJrw/0
My.profile.uml#_OjpXsVQoEd2ZPtml6ktJrw">
<uml:Package xmi:id="_riPN8FQoEd2ZPtml6ktJrw">
<packagedElement xmi:type="uml:Class" xmi:id="_3JO3gFQuEd2ZPtml6ktJrw"
name="class1"/>
<profileApplication xmi:id="_wqYkwFQuEd2ZPtml6ktJrw">
<eAnnotations xmi:id="_wqYkwVQuEd2ZPtml6ktJrw"
source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage"
href="My.profile.uml#_OjpXsVQoEd2ZPtml6ktJrw"/>
</eAnnotations>
<appliedProfile href="My.profile.uml#_vJCTkFN6Ed2ZPtml6ktJrw"/>
</profileApplication>
</uml:Package>
<My:TestStereotype xmi:id="_6ene8FQuEd2ZPtml6ktJrw"
base_Class="_3JO3gFQuEd2ZPtml6ktJrw"/>
</xmi:XMI>

Note that I have a profile application in this input model.
As a result of the UML2Copy transformaitom the output model is generated:

<?xml version="1.0" encoding="ISO-8859-1"?>
<uml:Package xmi:version="2.1"
xmlns:xmi="http://schema.omg.org/spec/XMI/2.1"
xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"
xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="a1">
<packagedElement xmi:type="uml:Class" xmi:id="a2" name="class1"/>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="a3">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="a4"
source="http://www.eclipse.org/uml2/2.0.0/UML"/>
</profileApplication>
</uml:Package>

Note that it doesn't have the xmi tag as the input model. Thus, it doesn't
have the xsi:schemaLocation. As a consequence, the profile schema can't be
referenced as it is in the input model.

Besides, regarding the UML2Copy transformation, someone can tell me why
the "references" child of "eAnnotations" wasn't copied? And why the
"appliedProfile" element wasn't copied too?

Cheers,
Bruno.
Re: [ATL] How to define the xsi:schemaLocation with the transformation rules? [message #86700 is a reply to message #86689] Thu, 17 July 2008 21:56 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: me.urszeidler.de

You can't just copy a profile applied on a model, because it's an api
call in UML2. Same with stereotypes. The UML2 modelhandler will apply
them afterwards the transformation is done.
You will need to apply the profile and the stereotypes in the imperative
part of your transformation.

> Note that it doesn't have the xmi tag as the input model. Thus, it
> doesn't have the xsi:schemaLocation. As a consequence, the profile
> schema can't be referenced as it is in the input model.

Notice that the serialisation of a simple uml model(without a profile
applied) is XML and the serialisation of a model with a profile applied
has to be XMI because the stereotypes are in fact dynamic EObjects just
added to the resourceSet.


>
> Besides, regarding the UML2Copy transformation, someone can tell me why
> the "references" child of "eAnnotations" wasn't copied? And why the
> "appliedProfile" element wasn' copied too?
Same as the stereotypes.

here some examples :

"Copy" the applied profiles via applying them


rule ModelRule {
from s : UML2!"uml::Model" (thisModule.inElements->includes(s))
to t : UML2!"uml::Model" mapsTo s (
name <- s.name->debug('Model'),
visibility <- s.visibility,
......
packageMerge <- s.packageMerge,
packagedElement <- s.packagedElement,
profileApplication <- s.profileApplication)
do {

t.debug('ModelRule');

for (p in s.getAllAppliedProfiles()){
t.applyProfile(p);
}
}
}


A called rule to "copy" the stereotypes of an element and copy the values :


rule copyStereoType(invar : UML2!"uml::Element",outvar :
UML2!"uml::Element"){
do{
for(st in invar.getAppliedStereotypes()){
outvar.applyStereotype(st);
for (a in st.getAllAttributes()){
if(not invar.getValue(st,a.name).oclIsUndefined()){
if ( not a.name.startsWith('base_') ){
outvar.setValue(st,a.name, invar.getValue(st,a.name) );
}
}
}
}

}--do
}


In the imperative part of your transformation you can now "copy"
steretype by using the called rule :

thisModule.copyStereoType(invar,Classvar);


to avoid doubling of profile applications,one from the transformation
and one from the applying, you need to exclude the
UML2!ProfileApplication from the copy process.

greetings urs.
Re: [ATL] How to define the xsi:schemaLocation with the transformation rules? [message #86746 is a reply to message #86700] Fri, 18 July 2008 20:01 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: brunocarreiro.gmail.com

Hi Urs,

First, I made the modifications in the ModelRule.
Second, before the matched rules I added the called rule "copyStereoType"
as you suggested.

After that, I modified the copy class rule to call the "copyStereotype"
rule.

rule Class {
from s : UML2!"uml::Class" (
if thisModule.inElements->includes(s) then
s.oclIsTypeOf(UML2!"uml::Class")
else false endif)
to t : UML2!"uml::Class" mapsTo s (
name <- s.name,
visibility <- s.visibility,
...
ownedOperation <- s.ownedOperation,
ownedReception <- s.ownedReception)
do
{
thisModule.copyStereoType(s,t);
}
}

Last, I removed the ProfileApplication rule as you mentioned to avoid
doubling profile applications.

When I execute the transformations an error occurs:

SEVERE: ****** BEGIN Stack Trace
SEVERE: message: ERROR: exception during invocation of operation
applyStereotype on UML2!Class (java method: public
org.eclipse.emf.ecore.EObject
org.eclipse.uml2.uml.internal.impl.ElementImpl.applyStereoty pe(org.eclipse.uml2.uml.Stereotype))
SEVERE: exception:
SEVERE: org.eclipse.uml2.uml.internal.impl.StereotypeImpl@13afcfb (name:
TestStereotype, visibility: <unset>) (isLeaf: false, visibility: public,
isAbstract: false) (isActive: false, isAbstract: false)
java.lang.IllegalArgumentException:
org.eclipse.uml2.uml.internal.impl.StereotypeImpl@13afcfb (name:
TestStereotype, visibility: <unset>) (isLeaf: false, visibility: public,
isAbstract: false) (isActive: false, isAbstract: false)
at
org.eclipse.uml2.uml.internal.operations.ElementOperations.a pplyStereotype(ElementOperations.java:1410)
at
org.eclipse.uml2.uml.internal.impl.ElementImpl.applyStereoty pe(ElementImpl.java:501)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.eclipse.m2m.atl.drivers.uml24atl.ASMUMLModelElement.real Invoke(ASMUMLModelElement.java:614)
at
org.eclipse.m2m.atl.drivers.uml24atl.ASMUMLModel.applyDelaye dInvocations(ASMUMLModel.java:552)
at
org.eclipse.m2m.atl.drivers.uml24atl.AtlUML2ModelHandler.sav eModel(AtlUML2ModelHandler.java:49)
at
org.eclipse.m2m.atl.drivers.uml24atl.AtlUML2ModelHandler.sav eModel(AtlUML2ModelHandler.java:37)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:362)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.runAtlLaunche r(AtlRegularVM.java:453)
at
org.eclipse.m2m.atl.adt.launching.AtlRegularVM.launch(AtlReg ularVM.java:425)
at
org.eclipse.m2m.atl.adt.launching.AtlLaunchConfigurationDele gate.launch(AtlLaunchConfigurationDelegate.java:35)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:766)
at
org.eclipse.debug.internal.core.LaunchConfiguration.launch(L aunchConfiguration.java:608)
at
org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(D ebugUIPlugin.java:899)
at
org.eclipse.debug.internal.ui.DebugUIPlugin$7.run(DebugUIPlu gin.java:1102)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
SEVERE: ****** END Stack Trace
INFO: Execution terminated due to error (see launch configuration to allow
continuation after errors).

Am I missing something?

Cheers,
Bruno.
Re: [ATL] How to define the xsi:schemaLocation with the transformation rules? [message #86755 is a reply to message #86746] Sat, 19 July 2008 11:19 Go to previous messageGo to next message
Eclipse UserFriend
Originally posted by: me.urszeidler.de

This is a multi-part message in MIME format.
--------------020705000106090309060306
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Bruno wrote:
>
> Am I missing something?
>
No it's my fault, I have looked in the wrong file.

The problem is the profile to apply,
My solution is the following, there might be a lot other solutions, more
elegant.
Who knows, might tell us :)

In the imperative part of the model rule just select the profile by a
helper,

invar.debug('ModelRule');
for (p in invar.getAllAppliedProfiles()){
Modelvar.applyProfile(thisModule.findProfile(p.getQualifiedN ame()));
}

and the helper should select the profile from the profile model (PRO)

which should be included in the transformation file

helper def : findProfile(qname : String) : UML2!Profile =
UML2!Profile.allInstancesFrom('PRO')-> select(st| st.getQualifiedName()
= qname)->first()
;

same for the stereotypes :

outvar.applyStereotype( thisModule.findStereotyp(st.getQualifiedName()));

with

helper def : findStereotyp(qname : String) : UML2!Stereotype =
UML2!Stereotype.allInstancesFrom('PRO')-> select(st|
st.getQualifiedName() = qname)->first()
;


I have played around a bit. You could also change the helpers to select
from allInstance() instead of From(''), but your profile need to be
included in your transformation, for example by state them in the from
model list
create OUT : UML2 from IN : UML2,PRO:UML2;

But it's only importance is that the profile model is loaded by the
handler(allowInterModelReferences is not enough). If you use AM3 or
ATLflow you do not need to state the profile in the transformation.

create OUT : UML2 from IN : UML2;

hope this will help.

greetings, urs.

--------------020705000106090309060306
Content-Type: image/png;
name="exampleTransformation.png"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="exampleTransformation.png"

iVBORw0KGgoAAAANSUhEUgAAA0AAAAGACAYAAACEFALfAAAAAXNSR0IArs4c 6QAAAAZiS0dE
AP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9gHEwoP H8UyhG8AACAA
SURBVHja7N15XFT1/sfx9ygCgopEiLmFaHrdUn+5lRtoLuk1s82l0puWpl1z X7MQU2+JW6Vi
tmFpoi3esnI3KNerpWVaaoK5pIAILoO4cX5/kCMDw8wgiDC8no9Hj5yzfc98 zpnD9833zMFk
GIYhAMiDMJMUypUEANcrAEVACUoAAAAAgAAEAAAAAAQgAAAAACAAAQAAAAAB CAAAAAAIQAAA
AABAAAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQgAAAAAAQgAAAAACAAAQAA AAABCAAAAAAI
QAAAAABAAAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQgAAAAACAAAQAAACAA AQAAAAABCAAA
AAAIQAAAAABQpJgMwzAoAwAAAIDiwI0SAHljCguhCJAkGaHfUQRw7QC4RoIA BHBRB51ZgGsH
uEYChQPfAQIAAABAAAIAAAAAV8MtcIAL2/TR4zr+a7TldZX6wWrX9zMKA4Dr FQACEADXc/zX
aD0zaY3l9cdTOzu1niksRHX979avQz6USSbLdEOG6s1/Vr+d/tPquwu/JsRp 7Pp39MPRXyRJ
ravdqzc6DFSDCkFW25Qkk0wq61FaQb6V1KlGU4164En5e5XPtlxW19szhYXw vQmA6xXXKwAE
IADZnUm8qiuH50npGT/KzyRedXpdr1Ke+vrgNnWr9YBl2pe/b5G3u6fVcn+c OaH2H43UlJD+
inr8VUnSsl836sGPRmlL/3mqeUflbJ0C85U0HUw6psg9a9Ro4XPa0n+eAstX zLYcAK5XXK8A
EIAAOO3ekAc1+42VlteBrVs4ve7Ylr30xuZlVh2KN7Ys07iWvfXEp5Mt0yZH R2rU/T016L5u
lmmD7uums2lmhcUs1sc9JmbbtncpTzWueI8ad75HPh5l9Mp3H9hcDgDXK65X APIbD0EAXFi7
vp9pfNRZbav4rsZHnVWvF9c6ve5jddoqwZyircf2SZKij+xRUuo5PVqnjdVy G2J/1FP3Ppht
/afufVAbYn902M5z/9fVqeUAcL3iegUgPzACBLiojoMipXRl3BFfQuo06CNJ kiFp3Tt9Ha5f
wmTS6Ad66o0tn+jLXtP0+uZPNKZlT5UwmayWO516VgHevtnWD/D21enUsw7b uavsHUpKPWc1
zdZ99dxmAnC94noFgAAEIEepF1K1eemQbNNb9V7g9Db6NeqkydGRWvbrRv0S H6sve0/Ltoyf
VznFm5NVueydVtPjzcm608vHYRsnz5/JthydB4DrFdcrALcKt8ABLubjlTHq PnyF/PzvVPfh
K/TxyhhJ0qvfzlW3hf3k23aHui3sp1e/netwWx4lS+ml5o+q78r/aFiLx+RR slS2ZdpXv09L
f9mQbfrSXzaoffX/c9jGez99oweD7uPAAVyvuF4BKBCMAAEu5rOYeL0x+sY9 7uNmbtAzPaTd
R3crvFNJy/Qxa3c7tb3xrfpofKs+Oc4PDe6n1h+8JB9Pb/Wu316SFPXrJs3c ulyb+79tc53U
K5d0IOmoFu9Zq0/3R2tL/3kcOIDrFdcrAAQgALmXkpSkTb8dyhjfTZdSkpIl SV/HbFfLgAaW
5b6O2Su9kPf2avtV1Ya+szRuwzsatTbjdpVW1Rpofd+ZquVXxWpZU1iITDLJ 291TNXwrqVPN
pto96D1V8C6fbbmsMt9mwj33ANcrrlcACEAAJEmPd2qsjxdtt7xuWK+qJOml Dr00YUWUZfpT
D3XMcRuOfjhnnX9vQJBWP/VGrtbJr7YBcL3iegUgN0yGYRiUAcjDh4i/9A3O A3DOAJzvKDJ4
CAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQgAJnYeiSqq+xrUXpvANcQ9pVz ASAAAQAAgBAC
EIAAOG9f4hHVeKuPy7WV3+3RaQC4hrhC2Ckqj3bmmgsQgIBbZv3hXepYo6nL tXU72gO4hnAN
AQACEFDYOy+xu9QhqIkk6dK1K3r2yzfkPb2zKs58VOFbo6yWTbt6Wc+vmimf 17vK5/WuGrhq
ltKuXrbMv5J+VSPXLpB/+CPyfaObZm1bkWNbtn67l3maKSxEEbu+VNCbfeQx tYPqL3hWm4/u
VeSeNar19jNyf62DGr/zvPYmxObLe4tNPqmHl72ssv/pIs+pHfXQ0nFKMKdY 7ZcpLMRqH+2t
k5ObeV+O6g5wDbn115CLVy+p33//Y3lvM7ZEWbV3zUjXhI3vqkJ4D3lN66xe n03R+cupVvuz
cNdXCpzby9L2nlN/5Gr9Ods/VdU5T6pEWLubvm5l/rej4+Fon+0pLNdcgAAE wMrla1e1+ehe
taveWJL0yqYPlGhOUdywKP08+H1tittttfykTe/rr/OndWjoUh0cukRHz8br le8+sMyfHB2p
fYlx2j3oXcUNW6bj5xJzbMsZG2J/VMyzc5U87mv1afCguiwdr28P7dDGfrOU Mv5rPVE3WANX
zcqX99Zt2QQNb/G4EsasVPyYlartV1Uj186XdOOWESP0O6vbR+ytk5/vy1Hd Aa4hBXMNOZtm
1pHhUdo75ANtPrrXavnpPyzRj38d1E+DFil+zBcqXcpD49Yvslom+sgebRkw T8njV6nHP1pb
te3M+juO/6afBi1Seuimm75u5eZ4ONpnewrTNRco8gwAeaLJwZZ/Rx/ZYzR/ d7DldeVZjxuH
ko5bXh84fcxq+UqzHjMOJh2zml951uOW11VmP2EcOH3MZrtZ28q8XVvTNDnY OJ161vLafDnN
5jS3Ke3z5b1lZb6cZvjPeMTu/jpaJ6f65/Z9Oap7Xs8D4GbPmeJ2DTl85i/L 60NJx62Wv3tO
T+P300ctr09dOGMEhPew2nZS6rkc23Zm/RPnTufqGuSoRo6Oh6N9tqewXHO5 RsIVuBEBgfyz
/vAudajRxPL61IUzqu57l+V1UKZ/S1L8hWQF+Vaymh9vTra8Pnk+Kds6ObXl DL/S5Sz/9irl
YXPa1fRr+fLeth7bp3Eb3tHuk4dkvpImSTLJZHf/HK2T+daNzL/FzO37clR3 gGtIwVxD7i4f
YHkdWL6i1fInzp/WP+b1tZqW9RpyR+myObbtzPqVyvrl+bqVm+PhaJ/tKUzX XKCoIwAB+dl5
id2l8A6DLa8rlrlDccknVfOOypKkuJSTVssHlPG1mh+bfFIVvMtb5t9V1k+x ySdVy6+Kw7bc
SpRU6pVLlk5J0sVzt/W9PfnpZM3qNESdazZTOQ8vnb90UT6vd7XbhqN18usH sKO6A1xDbv01
JKCMr/5Mibd05I+knLJa/q4yftr23HxVLnvnTbV3M+vfzHWroK4tRfmaCxQ2 fAcIyCfJaed1
4PQx3V+1rmVa7wbtNXLtAiWmpijBnKLha+ZZrdOzXjsNXzNPCeaM+cPWvK1e 9dtZ5vdr2ElD
V7+p4+cSlZJ2QSP+vjfbVlsNA2po5tblSr1ySSfOn9YLX8++re/t4tVL8nRz l6ebu+KST2ng
qplW88t7ltGBpGO5Wie/OKq7lP0L4Y5eA1xDcvfeetVvp1HrFuh06lmdTj2r kWsXWK3zQpOH
NXDVTB1O/ktX069pb0Ksen02xek2b2b9m7lu5fbacrMK0zWX6yMIQAAkSZvi dqtVtQYqVeLG
wOprIf3lW7qM7p7TSw0inlVwYCOrdaa1H6CAMr6q+dZTqvnWU6pU1k9T2w2w zA8N7qc6d96t
hgsHKOjNPqrmUyHHtt59eLT++/tm+bzeVS3f/3euvth8K97b+w+P1ci18+U9 rbNCFg9Xy2r1
reaPfqCnmiwaZPWD0tE6+cVR3QGuIQVxDRmgMu6lVW1OT9Vb8C+1qFLXav74 Vn3UqloDtV88
Ul7TOqvP51PVo05rp9u8mfVv5rpVUNeWonzNBQobk2EYBmUA8vAhCguREfqd Xvh6tur4361h
zR+75W0WZFu3o72ifB4AN3vOFPdryO+nj6rL0vGKHfYJJwfXSOCWYgQIyCeZ /76FK7V1O9oD
uIYUj2vIiLXzlZx2XqcunNGodQv0yD9acSIAuOV4CAKQTw6/9IlLtnU72gO4 hhSPa0hg+Yqq
9fYzSrt6WQ/XfkBTQp4ttsff3vdmGDkBCEAAAMAFDGv+GLfWEnKAAsctcAAA AAAIQAAAAABA
AAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQgAAAAACAAAQAAAAABCAAAAAAc cqMEAHLy8S/r
NPX7jxWXfErVfSvqlTZ99fS9HSzzTWEh2f56+fVpprCQHLfLXzwHwPUKAAEI QKHyxW8/6NXv
PtQnj03SfXfV1o8nD6jP51Pl7e6pHv9o7XD9zJ0GWx0PAOB6BeB24BY4ADbN 2LJMC7oO1/1V
6sm9pJvur1JP87sM14wtURQHANcrAAQgAK7l5/jDCg5sZDUtOLCRfj51mOIA 4HoFgAAEAAAA
AAQgAEVSw4Aaijnys9W0mD/3qGHFGpbXPh7eSkxNsbxOMKeovGcZigeA6xUA AhCAomX0Az01
5Ju52n58v66kX9WOE7/pxW/e1OgHelqW6VijqcKiF+vcpVSdu5SqsJhIda7Z jOIB4HoFoNDi
KXAAbHq8bltduHxRfVf+R0dSTimwfEWFBvfTY3XaWJaZ12WYBn09S5VmPWbp YCzqNoriAeB6
BaDQMhmGYVAGIA8fIh6ZCs4DcM4AnO8oMrgFDgAAAAABCAAAAAAIQAAAAABA AAIAAAAAAhAA
AAAAEIAAAAAAgAAEAAAAAAQgAAAAACAAAQAAAAABCAAAAACuc6MEQN6ZwkIo AgCuHQBQFK69
hmEYlAFAURFmkkK5agFF4LNqkiSF0s0AUMgwAgSgSAk1CEFAYQ48AFDYMQIE oIh2tghBQGEK
PNdHejJPZ/QHQGHECBAAQhCAXAcfW+Em8zxGhAAUVowAASjSASijs0UtgMIU jMJMJkZ/ABRa
jAABKLKufx8IwO0PPwQeAEUFfwcIACEIAOEHAAEIAAhBAHIbfghEAAo7boED 4FIhiO8DAQUT
fDI+d3zgABQ9jAABcLGOGTUAblf4YfQHAAEIAArQ9dEfQhBQ8OEHAAhAAHAb QxCAgg8/BCMA
RQF/BwiAi3bWCENAfoYfwg0AV8EIEACXxJPhAMIPABCAABCCABB+ABRrPAYb QDHoxHE7HJDb
4CPxnR4ArokRIAAujSfDAYQfACAAASiWIQgA4QcAeAocgGLUuSMMAfbCD8EH QHHACBCAYoOH
IgCEHwAgAAEgBAGEHwoBoNjgFjgAxbTTx+1wIPhk/FKADwKA4oURIADFOgQB hB8AIAABgMvj
8dgg/BB+ABCAAKBYhiCA8AMAxQffAQJAp5DvA6GYhB+CDwAwAgQAPBkOhB8A IAABACEIIPwA
gOtxowQAkLmzyO1wcJ3gkxHuOaEBIDNGgADgbzwZDoQfACAAAUCxDEEA4QcA XBNPgQMAm51I
whCKZvgh+ACAfYwAAYANPBQBhB8AIAABACEIIPwAQJHGLXAA4LBzye1wKLzB JyOsc4ICgLMY
AQIAJ0MQQPgBAAIQALg8Ho8Nwg8AuA7+ECoAOBmCCEAoLOGH4AMAN48RIAAg BIHwAwAEIABA
1s7njRAUZpJWPJZ9PkD4AQACEAC4lOvfCfprl3RiB/XArQ8+hB8AIAABwG13 9qi0fhx1wK0N
Pxmhm/ADAAQgACgE/oyRDn1DHUD4AQACEAC4uOu3wm2YIBnp1AOEHwAoCngM NgDkMQSFmaSf
P6IWyL/wQ/ABAAIQABRaA7ZJ799PHUD4AYCigFvgACCPqrSQ6jxKHUD4AYCi wGQYXG0BIH86
sBn/D+WqilwGn4zzhhMHAAoCI0AAkE+uBx/+ICoIPwBAAAKAYhWCAMIPABRO 3AIHALekc0sY
gv3wQ/ABgNuDESAAuAWuPx4bIPwAAAEIAAhBIPwAAG4LboEDgFve6eV2OM4B vu8DAIUFI0AA
UEAhCIQfAAABCABcHo/HJvwQfgCg8HCjBABQMCGIAFT8wg/BBwAKH0aAAIAQ BMIPABCAAACE
IBB+AMDV8BQ4ALgtnWSeDOeKwScj5HJgAaAwYwQIAG5jCALhBwBAAAIAl8eT 4Qg/AAACEAAU
yxAEwg8AoODwHSAAuO2daMJQUQ0/BB8AKHoYAQKA24wnwxF+AAAEIAAgBIHw AwDId9wCBwCF
qnPN7XCFOfhkhFUOEAAUZYwAAUAhDEEg/AAACEAA4PJ4PDbhBwBwa7lRAgAo fCGIAFR4wg/B
BwBcCyNAAEAIAuEHAAhAAABCEOEHAEAAAgAUihBEOLo1wYfwAwAEIADAbe+Y U4OCCD8ZoZPw
AwAEIADAbZPTk+G4RY7wAwAgAAGAS4cgEH4AAHnDY7ABoAiFoDATYSi/ww/B BwCKF0aAAKAI
hiAQfgAABCAAKHYhiEBE+AEA5A63wAFAoe6o3wg6tuZxO1zug09GPSkcABRX JsPgpwAAFMUg
lHnkhyBE+AEAOIcRIAAoAmw9Cpvb3wg/AIDcYwQIAIpsp952SEL28EPwAQBc x0MQAKCICjUI
PYQfAEBuMQIEoPh1irlvDIUx0JJmAaBA8B0gAMUu9NDRBOcoABRfjAABKBad SjqU4LwFANxU
ADKFhVA1FCtG6HcUoQh3IulAgnMYLtFhM3HrLpBjXy2X4zk3dQscHUIUmx84 BH46jsBtFBpq
cC7jpjt5yFmrWtOlVCnBnCpvb8lbXvLyl9btnkhxisEvB3gKHADCD1AEQhCA vOvYeLpquY9Q
wpFEJSQkSmazzAlmJSQk6si+RNXynaSnO75JoVwcAQgA4QcgBAEur1Wt6Tqy L9H+Qmaz/hd9
hBDk4ngKXB5t+uhxHf812vK6Sv1gtev7GYUBCD/ALQlBnONA7nVsPF0JRxKd Wtbb26wj+/dR
NAIQcnL812g9M2mN5fXHUzs7tZ4pLER1/e/Wr0M+lEk3fqtnyFC9+c/qt9N/ Wn3X6teEOI1d
/45+OPqLJKl1tXv1RoeBalAhyGqbkmSSSWU9SivIt5I61WiqUQ88KX+v8tmW y+p6e6awEL7n
BQAAXIajkZ/AwET9q+s+dW16RN7eZknS1Q2fyu3B5BzXCQ8P14QJE/Sf//xH Y8aMyehD2fk+
imEYMplMfJeLAFT0nUm8qiuH50npGdHjTOJVp9f1KuWprw9uU7daD1imffn7 Fnm7e1ot98eZ
E2r/0UhNCemvqMdflSQt+3WjHvxolLb0n6ead1TOFmLMV9J0MOmYIvesUaOF z2lL/3kKLF8x
23KAq+A34ygOGAUCcq9Vrel25//ryZ0a+8T/ss8wm3NcJz09XREREZozZ47m zp2rUaNGqUSJ
ElbhhrBTePEdoDy6N+RBzX5jpWaHr9Ts8C9UsUlzp9cd27KX3ti8zGraG1uW aVzL3lbTJkdH
atT9PTXovm4q5+Glch5eGnRfN426v6fCYhbb3LZ3KU81rniP3uw8VAMad9Ur 333AwQIAAMVP
as6zXrwefry9pcCukn8zq/lXN/jaXG/16tXy9fXV0KFD5efnpzVr1lBnAlDx 0a7vZxofdVbb
Kr6r8VFn1evFtU6v+1idtkowp2jrsYz7TKOP7FFS6jk9WqeN1XIbYn/UU/c+ mG39p+59UBti
f3TYznP/19Wp5QAAAFxNgtl2AmpWL1EvPvG/jOATnCjV+1RqFi0Ff5sRiCRJ tkeBFixYoH//
+9+SpCFDhmj+/PkUugjhFrg86DgoUkpXxjd4SkidBn0kSTIkrXunr+P0aTJp 9AM99caWT/Rl
r2l6ffMnGtOyp0pkuX/0dOpZBXhn/w1EgLevTqeeddjOXWXvUFLqOatptr4H xG1xKKq4JQjF
CbfBAfljyBPRGUGn3qfWM7yDpcDJ0r4xNteLjY3Vzp079fnnn0uSevXqpbFj xyouLk7Vq1en
sAQg15Z6IVWblw7JNr1V7wVOb6Nfo06aHB2pZb9u1C/xsfqy97Rsy/h5lVO8 OVmVy95pNT3e
nKw7vXwctnHy/JlsyxF2AABAcVDB20sJWb7PU6GCWc3qJUj+XW2vFNj17wDk nW1WRESEEhMT
Vbp06WzTZ8yYQcGLAG6Buwkfr4xR9+Er5Od/p7oPX6GPV8ZIkl79dq66Lewn 37Y71G1hP736
7VyH2/IoWUovNX9UfVf+R8NaPCaPkqWyLdO++n1a+suGbNOX/rJB7av/n8M2 3vvpGz0YdB8H
DgAAFD9e2SfVDfz7qXA5PejAnCBJ2Z4Cl5aWpsWLFysuLk6GYVj+i42NVWRk pNLS0qh3EcAI
0E34LCZeb4y+8Z2ccTM36Jke0u6juxXeqaRl+pi1u53a3vhWfTS+VZ8c54cG 91PrD16Sj6e3
etdvL0mK+nWTZm5drs3937a5TuqVSzqQdFSL96zVp/ujtaX/PA4cAAAodjYf nKha7iOspnlf
D0Wp0ZL5f5K39cMPdCQ80/eAboiKilLz5s0VGBhoNb169epq0qSJli9frn79 +lF0ApDrSUlK
0qbfDmWMn6VLKUkZvx34Oma7WgY0sCz3dcxe6YW8t1fbr6o29J2lcRve0ai1 GbfXtarWQOv7
zlQtvypWy5rCQmSSSd7unqrhW0mdajbV7kHvqYJ3+WzLZZX5tji+IwQAAFxF YD1/q78FlHj9
uQhmSTu7SnXDpQrBGSM/R8KlI9/IrfvlbNuZP3++pkyZYrONwYMH67XXXnMY gGz9rSAel00A
KvQe79RYHy/abnndsF5VSdJLHXppwoooy/SnHuqY4zYchYms8+8NCNLqp97I 1Tr51TYAAEBR
tm73RLWqNV0JRzJC0L59/jdmms3Szizf6c7yOOzrdu7cmWMb3bp1U7du3eyG GoIOAajIGvp0
Cw19ukW26W/2D9Ob/cMoEAAAQCGz+eBEdWw8XUf2Jcps9lb0zkAFNz1ivZC3 JK9mcntgMwVz
YTwEAQAAAMXCut0TdfDyHFUI9NeK6L+fAOftbfnP7cHLhJ9igBEgAAAAFCub D078+19zKEYx
xAgQAAAAAAIQAAAAABCAboKtRyoXVkVpXwEAAAqDmJgYVatWzeYjnuGg71nA NeMYMQKEon7R
ILACAHDbjRkzRvPmzSsSj3kmACBfAtC+xCOq8VafAtnhgmwrN+0Vlo747diP gj4mmfE3iwAA
xdG+fftUo0aNQtOh37t3rx566KEiEXbyO6RlPhb5Eb5ys728WrNmjdq3b6/S pUvLz89PTz/9
tBISEghAzlh/eJc61mhaIDtckG3djvaKImoEAEAB/+xdv14dO3YsNPuTlpam UqVKcSyK2LGd
PXu2Ro8ercTERP3222/y8fFR7969CUBOHajYXeoQ1ESSdOnaFT375Rvynt5Z FWc+qvCtUdYf
kKuX9fyqmfJ5vat8Xu+qgatmKe3qZcv8K+lXNXLtAvmHPyLfN7pp1rYVObZl a7Qj8zRTWIgi
dn2poDf7yGNqB9Vf8Kw2H92ryD1rVOvtZ+T+Wgc1fud57U2Ideq9rf5jh+ov eFbur3VQ4Nxe
eu+nb6zaNIWFWLV/zUjXhI3vqkJ4D3lN66xen03R+cupVvs3Z/unqjrnSZUI a+fUOvbqZ2s/
2nw4TFG/brJ6T0fPJqjSrMd19pJZprAQzdgSpYCZPeQ9vbP6fzlDl65dcfo9 2DomedmerZrk
VPesx9vecgAAuFqnu0OHDpYRBZPJZDW6YDKZNGfOHFWtWlUlSmR092JjY/Xw ww+rbNmy8vT0
1EMPPWT1236TyaSFCxcqMDBQ7u7uaty4sfbs2XPj5+zq1apfv77c3d0VGBio 9957z7Je1n1I
S0vT888/Lx8fH/n4+GjgwIFKS0uzu38mk0kREREKCgqSh4eH6tevr82bNysy MlK1atWy7NPe
vXst27H3nuzVJnNwc7Sf9mqS+Vjc7P7kdGyz7qut/b+ZmmW2bt06PfTQQypT powqVKig8PBw
bdmy5Ua//MoVjRw5Uv7+/vL19dWsWbNyVbsZM2YoICBA3t7e6t+/vy5dupTR P23TRlFR1hnh
6NGjqlSpks6ePVv4A9Dla1e1+ehetaveWJL0yqYPlGhOUdywKP08+H1tittt tfykTe/rr/On
dWjoUh0cukRHz8brle8+sMyfHB2pfYlx2j3oXcUNW6bj5xJzbMsZG2J/VMyz c5U87mv1afCg
uiwdr28P7dDGfrOUMv5rPVE3WANXzXLqvfVd+R+FhTyr8xO/1ffPvqXtx/dL unEblhH6ndUt
WdN/WKIf/zqonwYtUvyYL1S6lIfGrV9k1caO47/pp0GLlB66yal17NXP1n68 3OZpTYn5SOmZ
hnunxCzWsBaPycfDW5L0/Z8/a+/gDxU3LErx5jN6NdPxcLQ/to5JXrZnqyY5 1T0rZ5cDAKAo
u3z5sjZv3qx27dpZbucyDCPbrV07duzQTz/9pPT0dElSt27dNHz4cCUkJCg+ Pl61a9fWyJEj
rdaJjo7Wli1blJycrB49emjgwIE3fs727auwsDCdP39e33//vbZv325pO+s+ TJo0SX/99ZcO
HTqkgwcP6ujRo3rllVfs7p8kbdiwQTExMUpOTlafPn3UpUsXffvtt9q4caNS UlL0xBNPWO2T
vfdkrzaWfpUT+2mvJpmPRX7sT9btOdXXzWXNHAXr+++//0a/fPJk7du3T7t3 71ZcXJyOHz+e
q9p9//332rt3r+Li4hQfH69XX301o3/68suaMmWK1bGfMmWKhg0bJh8fn1v/ ITJySZODrV5H
H9ljNH93sOV15VmPG4eSjlteHzh9zGqdSrMeMw4mHbOaX3nW45bXVWY/YRw4 fcxm21nbyrov
WadpcrBxOvWs5bX5cprNaW5T2ttcP2t7VWc/aby94wvj2NkEh3UxDMO4e05P 4/fTRy2vT104
YwSE97Ba58S507lax1H9bO1H00UvGEt/2WAYhmEcTDpmVJn9hGG+nGZZPvPx uj7f2f2xdUzy
sj1bNXG27vaWu1m26omCMVkZ/zm17GRRMBSvz4eT5/xN/JhHIZX5WEZHaLAt yAAAIABJREFU
RxvNmze3e5wlGSdOnLC7TbPZbPj7+1utk5SUZDXfzc3txs/ZqlWNt99+2zh2 7JjDc61SpUrG
wYMHb/RXDhwwKleubHf/JBmnT5+2at/WtMz75Mx7srevzuynvZpkPRZ53R9n j21eapbTdWH3
7t1G9erVjQMHDtzol1epYvU6t8f40KFDN/qEBw8aVapUudE/bdrUWLp0qdU8 s9mcp8+Gs/I8
ArT+8C51qNHE8vrUhTOq7nuX5XVQpn9LUvyFZAX5VrKaH29Otrw+eT4p2zo5 teUMv9LlLP/2
KuVhc9rV9GtOtfd5zzCtO7xLjRY+pxpv9dGqg1vttn3i/Gn9Y15fyy1pFWc+ qgRzitUylcr6
5WodR/WzJWMUaLGuGekK/S5SY1v2stRCktXxql7+Lp26cMbp/bF1TPKyPVs1 cbbuuT0+KNxC
//7lWJgp4z8AznN0iw2Ktsy3SNlTqVIlq9dbt25V69atVaZMGZlMJnl7e+v0 6dNWy9xxxx03
+kheXrp69eqNn7Off65169apUaNGqlGjhlatWpVj2/Hx8QoKCrrRXwkKUnx8 vN39kyQ/Pz+r
9m1Ny7xPzrwne5zZT3s1yXos8ro/zh7bvNTMlujoaHXv3l1RUVGqVavWjX75 yZNW9clt7apX
r27171OnTt3on/49CnTt2jWFhoZq7Nixlv2/1dzy/CGM3aXwDoMtryuWuUNx ySdV847KkqS4
lJNWyweU8bWaH5t8UhW8y1vm31XWT7HJJ1XLr4rDttxKlFTqlUuWznzSxXP5 e4HJ0l7TSv/Q
V72nyZCh1Yf+pwFfzdDJUQ/kuP5dZfy07bn5qlz2TqfbdLSOo/rZ8nDtB/TK pg80YcO72nZ8
nyIfGW81P/P2jqScUoC3r9P7k7VGed2eLc7WPbfHB0UzBIUa1AVFU9jfJ3Fo Lk7irOuEOfht
QObQUxQeR4ybD0Dh4eG5Xu/JJ5/UrFmz1LlzZ5UrV07nz5/P1e1GTZs21Vdf fSXDMLR69WoN
GDBAJ0+etN1fCQhQXFycatasmdFfiY1VhQoV8r0WeX1Ped3PrMcir/uTdXtu bm5KTU21BIOk
pKR8r+Hy5cs1cuRIffnll2rSxPqX2nfddZdiY2OtQlFuapd5/pEjRxQQEHCj f/rww3rllVc0
YcIEbdu2TZGRkQX2GcrTCFBy2nkdOH1M91eta5nWu0F7jVy7QImpKUowp2j4 mnlW6/Ss107D
18xTgjlj/rA1b6tX/Rv3OfZr2ElDV7+p4+cSlZJ2QSPWzs+xrYYBNTRz63Kl XrmkE+dP64Wv
Z+dbYWy+t89f0/7EP3Xl2jUZMqxGjsp7ltGBpGNW23ihycMauGqmDif/pavp 17Q3IVa9Ppti
t11H6ziqn639MMmkl9s8rfCtUZrU5hm5l7TOvdePV2Jqikasna8+DR50an9s 1Sgv28uJvbrn
ZrmsD81w9BqFKwgVtxGhsDCTw86uPWlpyVq/fozefruWpk710NSpHpozp5qW LOlcLOthb5tT
p3ro/PkTVvPOnTuuqVM9bkm7t0LmER973y9A0ZecnKwDBw5YfU+jfPnyOnDg gMN1L168KE9P
T3l6eiouLs7p74VYfs727q39+/frypUrMgzD7qhCz549Ld+FSUhI0LBhw9Sr V698r4ej9+So
NnnZT1vHIi/7Y2t7DRs21MyZM5WamqoTJ07ohRdeyNf6zZ49W2PHjtWGDRuy hR9J6tevn4YO
Harjx48rJSVFI0aMyFXtRo4cqcTERCUmJmrEiBHq06eP1XXr5ZdfVnh4uCZN miR3d/dsv8hx
5nWBB6BNcbvVqloDlSpxo0P9Wkh/+ZYuo7vn9FKDiGcVHNjIap1p7QcooIyv ar71lGq+9ZQq
lfXT1HYDbnR0gvupzp13q+HCAQp6s4+q+VTIsa13Hx6t//6+WT6vd1XL9/+d q4cj3Mx76167
pR5d/oq8p3fWuPXvaMmjL1vmjX6gp5osGmTViR7fqo9aVWug9otHymtaZ/X5 fKp61Gltt11H
6ziqn639kKSSphK6544q6tewU7Y2W1VroPoLnlXg3F7yK11OU0KedWp/bNUo L9vLib2638xy
IAi5utTURC1a1FS7di1UcHCoxo5N0tixp9Wt2yKKY4NhGNqyZYbVtC1bZhSZ P+hI8CleNm3a
pFatWlk9cnr06NFq0qSJw47h+++/r5EjR8rb21shISFq2bJlrtru3r27Hn30 UXl7e2vcuHFa
smRJjstOmzZNAQEBqlmzpmrWrKlKlSpp6tSp+V4PR+/JUW3ysp+2jkVe9sfW 9t59913997//
lY+Pj1q2bJmrhyM4Y9SoUTp69Kjq1q1ruZ6YTCZduHAh4+duaKjq1Kmjhg0b KigoSNWqVctV
7Vq1aqX69esrMDBQfn5+mjLF+pfeJUuW1D333KN+/foV7LXTyOXV0hQWYnnC 2Atfz1Yd/7s1
rPljt3xHC7Kt29HerdY96mX1qt9Oveu3z/F45keN8rK9Qtm5CAvR5Mn8sdVC b7JJoaGGdux4
S9u2zdb583/Jz+8etWw5Tv/9b7+/L+LXL3WGtm2bo507F+js2aMqU6aimjV7 US1bjpWU8QPp
+m/8u3f/UD/8MF0pKXHy86ulLl3mKzAwONfbeeiht7VlywydO3dcoaEZT7zZ vn2u1q4dIZOp
hLy9K6hWrW7q2HGmPDzK2RxxyM3+f/PNYO3atVBdusxX06ZDHHX/i3Q9DCNd W7a8oV273tH5
8ydUtmwl3XffILVqNV4mUwm77V6f3rhxf+3du0zDhx+Rt3cFmc3xmju3uho1 6qdduxbmur2M
9zNH27e/mW/noq1b4CZP5qNfnEK6yWSSYRh64YUXVKdOHQ0bNozC3Gb5fSxc 7dheP2cdhepe
vXrl6W8POdNOVnn6DtD62F16qYACQkG2dTvau1XSDUPv7/5Gf5w5oZ712lGj m8B3TgqfzP3h
UEMKC5P+9795WrNmmGrX7q6BA3dKkr78ckC2dbdunan168eqYcN+6tp1gbZs maENG8arRAk3
3X//KKtljx79QYMG/aTDh9dpxYrH9NVXz+mll/7I9XYSEn7Viy/ul7t7Gcu0 K1dSNWTIPvn6
Bmnv3k/01VcDlJ5+Rd27f6jQUCPH74s40+6BA19JkurUedRhLYt6PTZvfl2b Nr2sBx4Yo5CQ
MG3aNEmbNr0sk8mkVq0mOGw34zeUE7Rnz2Jt2zZLDz74hrZunSXDSFfr1i9b AlBu2tux4y2t
XTtSdeo8qn/+c5ckadWqgXmqvb1OcebXcH3r16/XSy+9RCFc8FgUp2Obnp6u 999/X3/88Yd6
9uxZ4O3n6Ra4wy99orr+dxfIjhZkW7ejvVul5JR2mv7DUn3YfbxK5PMTgVyl RihawSfzwxAy
94W3b58rSerUaba8vPzl5eWvTp2yfy9w584FkqQ2bSapVCkvtWgxXJL0v//N z7ZsSMgUubuX
Ue3a3SRJycmxN7Wddu2mZut0t249Uf7+deXm5qlGjTJGBg4e/NphDZxp12zO +Ptp3t7+1vX7
+/ssmUcRino9fvzxHUnS/fePlJtbaUtw2LXrHafalaQ77qip+vV7aefOCJ05 84d27YrQffcN
VLlyVW6qvR073pQkdew4U15ed8rL60517DgzT+eivRB0Pfjw5Lfi4fDhw6pb ty6FcMFjUZyO
bcmSJTV9+nR9+OGHlj+EW5DcOH1dm6Pb0fL7djVXuv0NhSv4XJfTiNzZs39K ksqXvxHKy5cP
zLbcuXMZf8Tt7bfvsbl+ZmXLZjzNsESJ6/djGze1HS8v66ceHj36gzZufFmn Tu3R5csXLNtN
TXX8dB9n2i1TpqLOnTum8+dPWnXiM4+kuEo9zp//6++wV+Hv9x7w9/QTDtvN rE2bl/Xrr8u0
eHE7padfU+vWE266vbNnj0qSfHxu3Cuf+d83UzNnglDWEMSIEIDb2ge1cw26 3dcnAhCAIh18
bnQw71Zy8mGdO3dcPj4ZISgl5Ui25cqVq6qUlDiNHn1K3t4BN71vednOp5/2 1IULJ9W79yrV
rNlJ6elXNW2al1WgyEu7deo8qh073tSePZFq02bSLXsfhaEeGWHvuMzmBJUp U1Fmc4JVWHPW
nXfWUZ06j2n//k91//0jVabMXTfdno9PNSUnx+rs2aMqX766VSi6FbUnCAFA 7pSgBAAKc/jJ
eqtbTq7fPrR+/ThdvHhGqamntXbtSBvLDbMsl5aWosuXz+uPP1ZryZJOudq/ vGzHMDIe0e7p
6aOrV9O0cePEbMt4eGT83YjMt5k5225w8GQFBNyrmJgw/fDDNJ0/f0KGcU0p KXEuV4+GDftK
krZtm62rV9O0dessSdJ99z2f63PuiSdWKDTUUMeOs3Jcxpn2mjUbKklat260 Ll5M0sWLSVq/
fswtq31OQYjgAwC2MQIEoFDK7cMnmjX7twzjmrZtm62ZMyvK1zdILVuO1cGD q2QylbQs17z5
MLm5ldbOnfM1c2aA3Nw8VbVqS6e+dJ5ZXrbz6KNLtXr1S4qMDFG5cpXVqtX4 bMu0bfuqvv/+
Nb31Vo2MevxdEGfa9fQsrwEDtmnbttnat2+Fvv9+mq5duywPj3IKCGiou+76 P5epR3DwZKWn
X9MvvyzRtm2zVbZsJYWETMn2AIT84kx7LVoMU3r6Ve3Y8ZZmzrxLvr5Bat16 gn777Yt8q1lu
ghAAwFqeHoMNuPwHhPO9SAgLM2V7OpgkJSUd1Lx5teXnV1v//vfvFAouf87D hX8e3cSjfgE+
G7ZxCxwAl7FixWM6efJHpadfUUpKnFavznicaOvWEykOAACQxC1wAFzIk09+ bvl3+fLV9fTT
aygKAACwwggQAAAAAAIQAAAAABCAAAAAgCyu/+0p3i8IQLD/4QkLkSksRG5T 2qvhwgHafny/
zXkNIvpry7Ffrdb9+Jd1qj3vGbm/1kG15z2jJb+sp6AAAOC2+/TTT1WvXj15 eHioRYsW2r17
t9X8Tz75RPXr15eHh4dq1qypyMjIQh9ychN4fv/9d/3zn/9U+fLl5enpqTZt 2ujrr7++reHp
+h9ItvUfAQgFzgj9TuaX12hA464a8NWMbPNSX16rIU2767mvwi3Tv/jtB736 3YeKfGS8Lkxc
rchHxuuV7z7Qyt9/oKAAAOC2B6Dly5crOTlZjz/+uHr27HmjD/PFF5o0aZIi IiJ0/vx5rV27
VjExMYWzj3aTjx7v0aOHWrZsqUOHDuns2bN67bXXFBERcdvfS+Y/kpz1NQEI Bc6jZCkN+L8u
Oph0PNs895Ju6tews2KT/7JMm7FlmRZ0Ha77q9STe0k33V+lnuZ3Ga4ZW6Io JgAAcFrWEYCs
ox5Tp06Vr6+vKlasqC+++EJTpkzRHXfcoQoVKujLL7+0uc0VK1aofv368vLy 0qBBg3T8+I3+
zYwZMxQREaHWrVvL3d1dNWrU0IcffmiZf/jwYTVv3lzu7u5q0aKF4uLirPZn /Pjx8vb21r33
3qtDhw4pOjpa//jHP5Senm5Z7tKlS6patar++OMPm/u3YcMGtW3bVpKUmJgo b29vJSYmSpKC
goJ08OBBq1pk/n/m+rz22msqX768AgICtHLlSsv0o0eP6umnn5a/v788PDzU tm1bffPNNzlu
69SpU+rYsaM8PDxUu3Ztbdmyxeo9z5kzR1WrVlWJEiUcLm+vfpk5qputWl9n r/2oqCjVrl1b
pUqVUmBgoN577z0CEGy7fO2q3v/pW9Xyq2Jz3uKf16ief3XLtJ/jDys4sJHV csGBjfTzqcMU
EwAA5F8f5fJlHT9+XPPmzVOfPn109epVHT16VAsWLNCIESMcrj937lw98sgj N/owP/+sNm3a
5Lj8kCFD1LFjR507d07t27fXkCFDrOZ7enoqKSlJ3bt319ChQxUcHKyKFStq +fLllmWWLFmi
Nm3aqGbNmjbbaNasmX7++Welp6dryZIlunTpkpYuXaoLFy7ozJkzuueee6yW zzpqct2VK1cs
tRk5cqRlemhoqBo1aqRu3bpp5MiRWrNmjd1tDRkyRE899ZTOnTunuXPnasCA AVbtHzx4UD/9
9JMlrNhb3lH9LP1GJ+qWtdaZ28ip/UGDBundd99Vamqqvv/+e23fvr3wndRG LmlysIH8o8nB
hiYHGyXD2hn1FzxrbDn6a7Z5mhxsNFjQ34hLPmmZ5zm1o5F6Jc1qW+bLaUbp qZ0oaj4fHxR+
kyeLIoBzHq7980gqsG1nfi3JuHjxomEYhnH16tVsr00mk919fO+994x69eoZ CQkJN/ownp5G
ampqjvtTunRpIzk52TAMwzhz5ozh5eVl1cb1ecnJyZZ50dHRRt26dY1r164Z 6enpRr169Yx9
+/bZfd/16tUz9u/fbzRo0MB4/fXXjXvvvdfYvn270aZNmxxrkbVOOdXCMAwj Pj7eWLlypTF9
+nSjbt26xogRI3Lclre3tyHJ8l/Wup4/f97p5e3VL2v79uqWU60dtT98+HDj vvvuM4YMGWKs
W7euUH42GAEqDCE09DtdfXWj9g7+QA9UrZdt3slRn8vPq5x+PHnQMr1hQA3F HPnZatmYP/eo
YcUaFBQAADjNZDLp2rVrkqSLFy9mm+/p6SlJKlmyZLbX9r4/8uabb2rmzJla v369/P39LdPv
vfde/fBD/n5nuW3btqpQoYI+++wzffPNN6pdu7bq1q1rd50WLVronXfe0bVr 1zRu3DhduXJF
H330ke677z6n27VXiwoVKuiRRx7RhAkTFBMTo3feecfegIROnDhhGRXKfFua JJUpUyZXy9/K
ujlqf86cOVq+fLlq1aqlyZMn66mnnip05zwBqAioWOYOLXvsFY1b/44SU1Mk SaMf6Kkh38zV
9uP7dSX9qnac+E0vfvOmRj/Qk4IBAACnVa1aVV988YXMZrNmzJiRL9ucNm2a Fi5cqE2bNumu
u+6ymjdmzBgNHjxYW7Zs0ZUrV3T48GH179/fMr9169aaO3euLl26pNmzZ2e7 XS7zvNatW1um
T548WVOnTlV4eLgmTZrkcB9btGih+fPn6/nnn5ckPf/881q0aFGOAcjLyyvH 79Nk9c9//lMx
MTFKS0tTSkqKFi9erEqVKuW4rc6dO2vChAlKTk7WsWPH9PTTT9vdvr3lHdUv K3t1y6nW9tof
NGiQ3Nzc9OKLLyo8PNzq6XeFBrcEFd5brLLOe3P758bjK0Itrz/cvdq4562n jVJTHjTueetp
I3LPGgrKLXDcDgRwzoNb4HLl008/Nfz9/Q0fHx9j6tSpDm/7sne7XOZ/Z/0v 821cH3/8sVGn
Th2jVKlSRs2aNY3IyEjLvEOHDhnNmjUz3NzcjObNmxuHDx+22u64ceMMLy8v o379+saBAwes
9qdNmzZGly5dnHrfe/fuNTw8PIykpCTDMAwjKSnJ8PDwMPbv32/zPY0fP97w 8vKyTLNXi6+/
/tpo3bq14eHhYZQpU8Zo166d8dNPP+W4rcTERKNHjx5G6dKljerVqxvLli2z e+ztLW+vfjlt
01bd7NXaXvuLFi0yqlWrZpQsWdKoVauWsXz58kL32TAZRu6efWcKC5ER+h2/ LkGxwPleNISF
mRQaalAIcM7DdX8emUzF8nHFuanDlStX9Nxzz2n06NFq0KABJ42TcqpbUTnn bmY/uQUOAAAA
RT4YlS5dWiEhIYQf6uaQG4ceQFEXGmrwG3EUG5zrKM5y+k1/TtOz/o0jR8tT z+JRIwIQAAAA
il0HH8UXt8ABAAAAIAABQFFy/TY4wJVx+xsAEIAAAAAAgAAEoPhhFAiujNEf ACAAAQAhCIQf
AAABCAAhiBAEwg8AgAAEgBAEEH4AoFgzGbl8QLopLISqoVgxQr+jCEW8A3k9 EAGctyiyHTYT
v9ABcuyr5fLvPeU6AAFAUe5Q0qkE5yiAvIqJiVHbtm0pRBHlRgkAFAeZO5Tc GofCfo4CAAhA
AEBHEwAA5BkPQQAAAABAAAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQgAAAA ACAAAQAAAAAB
CAAAAAAIQAAAAABAAAIAAAAAAhAAAAAAAhAAAAAAEIAAAAAAgAAEAAAAAAQg AAAAACAAAQAA
AAABCAAAAAAIQAAAAABAAAIAAAAAAhAAAAAAEIAAAAAAEIAAAAAAgAAEAAAA AAQgAAAAACAA
AQAAAAABCAAAAAAIQAAAAABAAAIAAAAAAhAAAAAAEIAAAAAAgAAEAAAAgABE CQAAAAAQgAAA
AACAAAQAAAAABCAAAAAAIAABAAAAAAEIAAAAAAhAAAAAAEAAAgAAAAACEAAA AAAQgAAAAACA
AAQAAACAAAQAAAAABCAAAAAAIAABAAAAAAEIAAAAAAhAAAAAAEAAAgAAAAAC EAAAAFDgYmJi
KAIBCAAAACAEZZ5PUCIAAQAAAEVe27Zt83U5EIAAAACAQi+nER5GfghAAAAA gEtxNLrD6A8B
CAAAAHA5WUd7GP0hAAEAAAAuKadRHkZ/CEAAAACAy7o+6sPoDwEIAAAAcGlZ R3sY/SEAAQAA
AAABCAAAAHAF10d9GP0putwoAQAAQOFmMpkoApADwzAIQAAAAMW9k4ectao1 XUqVEsyp8vaW
vOUlL39p3e6JFKcY/HLAZPBpAgAAKPSdPLpsedex8XQd2ZeY8wLe3mrW1F9L 1g2jWC782SAA
AQAAEIBcXqta05VwJNGpZZsFBxKCXPizwUMQAAAA4NI6NnY+/Hh7m3Vk/z6K 5sIIQAAAAHBp
dm97kxQYmKjJL0ZrZ2SkdkZGKnp+pK5u8LW7Tnh4uNzc3BQeHm6ZZjKZcvzv +nzcftwCBwAA
UNg7bNwCd9Mc3fr2ryd3auwT/7M5z637ZZvT09PTVbNmTY0YMUJz587VoUOH VKJECYfHjONY
OD4bjAABAADAdaXmPOvF6+HH21sK7Cr5N7Oan9Mo0OrVq+Xr66uhQ4fKz89P a9asoc5FCAEI
AAAALivBbDsBNauXqBef+F9G8AlOlOp9KjWLloK/zQhEkiSzzXUXLFigf//7 35KkIUOGaP78
+RSaAAQAAAAUXkOeiM4IOvU+tZ7hHSwFTs5xvdjYWO3cuVO9e/eWJPXq1Us7 d+5UXFwcRSUA
AQAAALdXBW+v7NMqmNWsXoLkH2x7pcCu19NQtlkRERFKTExU6dKlZTKZVLp0 aSUmJioiIoJi
E4AAAACA2yx7/lHdwL8fimC2fYubzAmSJLcHk60mp6WlafHixYqLi5NhGJb/ YmNjFRkZqbS0
NOpNAAIAAABun80HJ2abZhkUSo2WzDaeAHckPNP3gG6IiopS8+bNFRgYaDW9 evXqatKkiZYv
X07BCUAAAADA7RVYz9/qdeL15yKYJe3sKiVESjqSEYb2PSEd+Sbb6I8kzZ8/ X0OGDLHZxuDB
g516GEJOfyMIBYe/AwQAAFDYO2z8/Zg8y/z3gLy9zdoZGZnzwv7N5PbAZorm op8NRoAAAADg
8jYfnGgZCTKbvRW9MzD7Qt6En2IRmhgBAgAAKOQdNkaA8lWrWtNVt0KiFoyZ b/VdH1u3vcH1
PhsEIAAAAAIQUGw+G9wCBwAAAKDYIAABAAAAIAABAAAAzoqJiVG1atV4rPNN sFezTZs2KSAg
gLoSgAAAAFCYjBkzRvPmzSsS31UqSmFi4sSJWrp0qaWuBCECEAAAQLG0b98+ 1ahRo9B0ivfu
3auHHnqoSISd/A5pmY9FfoSvzNv75ZdfFBwcfMv2PSfh4eFyc3NTeHg4AQgA AAC33/r169Wx
Y8dCsz9paWkqVaoUxyKft3fx4kW5ubkV6PtJT09XRESE5syZo4ULFyo9PZ0A BAAAgNvf6e7Q
oYNlRMFkMlmNLphMJs2ZM0dVq1ZViRIZXb7Y2Fg9/PDDKlu2rDw9PfXQQw8p ISHBap2FCxcq
MDBQ7u7uaty4sfbs2WOZv3r1atWvX1/u7u4KDAzUe++9Z1kv6z6kpaXp+eef l4+Pj3x8fDRw
4EClpaXZ3T+TyaSIiAgFBQXJw8ND9evX1+bNmxUZGalatWpZ9mnv3r2W7dh7 T/Zqkzm4OdpP
ezXJfCxudn+cPbaZ1xs8eLA+/PBDq/U++OADDR482O48Z6xevVq+vr4aOnSo /Pz8tGbNmmzz
bZ0HjuY5qnWBMQAAAFCoZe2yXbp0yShXrpyRnJxsc/71aT179jQSEhIs0+rW rWts3LjRSE1N
NVJSUoxhw4YZTz31VLZ1jh8/bly4cMEICwszmjZtapl/5513Gp999pmRlpZm /Pnnn8aAAQNy
3MdRo0YZXbp0MeLj441Tp04ZnTp1MkaPHm13/yQZjz76qHH06FHDbDYb06ZN M8qWLWs88cQT
VtNatGiRq/dkr57O7mdONcl6LPK6P46O7fXXly5dMtq0aWMsX77cMAzDiIqK Mtq0aWNcvnzZ
7jxndOnSxfjggw8MwzCMDz/80OjSpYvVfHvngb15jmqdH58Np9bhkgIAAFC0 AlB0dLTRvHlz
h53qEydO2N2u2Ww2/P39rdZJSkqymu/m5mZ5XbVqVePtt982jh075nAfK1Wq ZBw8eNDy+sCB
A0blypXt7p8k4/Tp01bt25qWeZ+ceU/29tWZ/bRXk6zHIq/74+jYZn596tQp o3r16sb48eON
6tWrG6dOnXJqnj2HDx82/P39jYsXLxqGYRgXL140/P39jdjYWKfOA3vzHNW6 oAIQt8ABAAAU
0dvfHKlUqZLV661bt6p169YqU6aMTCaTvL29dfr0aatl7rjjDsu/vby8dPXq Vcvrzz//XOvW
rVOjRo1Uo0YNrVq1Kse24+PjFRQUZHkdFBSk+Ph4u/snSX5+flbt25qWeZ+c eU/2OLOf9mqS
9VjkdX+cPbaSFBAQoGeeeUavv/66XnzxRQUEBDg1z56IiAglJiaqdOnSMplM Kl26tBITExUR
EeHUeWBvnjO15hY4AAAAZPstd7NmzYyYmBinRxWuq1y5shEVFWULuGL7AAAG 6klEQVSkpKQY
6enpxtmzZ62Wc3Y76enpxjfffGNUrFjR7gjQoUOHrH7bX6lSpVy35WhaXt9T Xvcz67HI6/44
OraZX+/Zs8eoUqWK8cUXXxiVK1e2eh/25uXk+mhPXFyc1fTY2FirUSF754G9 eY5qzQgQAAAA
sklOTtaBAwd0//33W6aVL19eBw4ccLjuxYsX5enpKU9PT8XFxWngwIG5art3 797av3+/rly5
IsMwrEZCsurZs6eGDx+uhIQEJSQkaNiwYerVq1e+18PRe3JUm7zsp61jkZf9 sbW9nJjNZj3z
zDNaunSpevTooYiICD355JO6ePGi3Xn2REVFqXnz5goMDLSaXr16dTVp0kTL ly93eB7Ym+dM
rbM+HMLRa0aAAAAAXHwE6LPPPjO6du1qNX/q1KlGmTJlHI40rFy50ggKCjJK lixpVKtWzXjr
rbdyNTqxbNkyo3bt2oabm5tRr149Y82aNTmum5qaavTv398oW7asUbZsWaN/ //5Gampqvo8A
OXpPjmqTl/20dSzysj+2tpfTCFDfvn2NRYsWWc2bPXu28eyzz9qdZ0+TJk2M b7/91ua8r776
yvLwB3vngb15jmrtaMTLmdfOMP29IgAAAAopk8lk+QOYL7zwgurUqaNhw4ZR mNssv48FxzZv
nw1ncQscAABAEZKbL8mjaB0Ljm0BhSZGgAAAAAp5h+0mfssN5HQu5aQonmM3 89lw4zQAAAAA
igeCNLfAAQAAACAAAQAAAAABCAAAAAAIQAAAAABAAAIAAAAAAhAAAAAAEIAA AAAAgAAEAAAA
AAQgAAAAFBkff/yxfH19ZTKZKAYIQAAAAHBtEydO1MaNG2UYhiTdsiC0ceNG mUwmrVu37ra+
X2ffX9blCIi36HgY1888AAAAFM4Om8kkV+qylShRQunp6be8nX/961/68ccf 1ahRI3388ccc
Zz4bGecfZQMAAEBBd1hNJpPVf5I0ZMgQLV261LLssmXLNHjw4Byn25Oamqqv vvpKUVFRWrVq
lcxms2VeVFSUateurVKlSikwMFDvvfeeU/MOHz6s5s2by93dXS1atFBcXJxT 69ka2TGZTKpS
pYpWrVpltUzmemRez17bJpNJr732msqXL6+AgACtXLnSqf0qtgwAAAAUaq7W Zcv6fq6/vnz5
stG+fXtj/fr1xnfffWe0a9fOuHz5co7T7VmyZInxz3/+0zAMw+jatavx0Ucf WeaVK1fOiImJ
MS5fvmz8+eefxoABA5ya17FjR2PSpEnGxYsXjYkTJxqdO3d2aj1bx+/atWtG dHS0Ub16dYd1
cdS2JOOVV14xzp8/b6xYscIIDAx0ar+K62eDW+AAAACKyKiJq76fzK8TEhLU tm1blSxZUhs3
blRAQIDd6Tnp1KmTBgwYoCeffFLLly/X+++/b/ku0IgRI/TDDz+oefPmeuSR R9ShQwfLevbm
eXl56a+//lL58uX1/+3dPUsjURQG4BNREBFbQRQELe20NZ3YWlmoYGGhGBSE tJY2CiIBK9FC
0cJ6/oJ/wNouiKWVHwMO2WLZIdk1o4jL6uZ5IM29ufMFF+Zlzsy9v7+P4eHh /MlS0bjm80uS
JKrVatzc3ESWZVEqlfJywKLrUrTvUqkUT09P0dvbG1mWRU9PT77NouPq1Lkh AAEACEBfJgBd
X1/nN+lXV1cxPj5e2P6au7u7GBkZiSzL8raurq6o1+sxNDQUET9LypIkicvL yxgdHW0psWvX
VxRCisY1n9/g4GCcnJzEzMxMpGkaAwMDLR+D+GgAajfurXPtxLnhHSAAAL6E h4eHWFhYiNPT
06jVajE/Px/Pz89t29s5Pz+P5eXlaDQa+W9lZSUuLi4iImJ1dTW6u7ujUqnE 3t5eJEmSjy3q
m56ejoODg0jTNPb396NcLr9rXLM0TaO/vz/SNI3t7e2Wvr6+vpZ3e5oV7bvI e4+rk3SbagAA
fAXr6+uxtrYWs7OzERFRr9ejUqnEy8vLq+3Hx8evbufs7CxqtVpL29LSUmxs bES1Wo2pqako
l8txe3sbY2NjcXR0lP+vqO/w8DAWFxdjZ2cnJicn80D11rhmu7u7MTc3F41G I7a2tlr6Njc3
Y2JiIh4fH/94qlG07yLvPa5OogQOAOCr37D5PDJ82txQAgcAAHQMJXAAAHxL v6+v84unZQhA
AAD8dwQdPkIJHAAAIAABAAAIQAAAAAIQAACAAAQAACAAAQAACEAAAAB/gXWA AAC+gXaLfgIC
EADAf8WCn/B5lMABAAACEAAAgAAEAAAgAAEAAAhAAAAAAhAAAIAABAAAIAAB AAAIQAAAAAIQ
AACAAAQAAAhAAAAAAhAAAIAABAAAIAABAAAIQAAAAP/CD9Mh/k2CJ8spAAAA AElFTkSuQmCC

--------------020705000106090309060306--
Re: [ATL] Copying UML2 Elements with profile application and stereotypes [message #86824 is a reply to message #86755] Mon, 21 July 2008 21:03 Go to previous message
Eclipse UserFriend
Originally posted by: brunocarreiro.gmail.com

Hi Urs!

Now it works.
However, there's a comment to do. Initially, my input uml file applied the
profile into the uml package element. So, the rule which applies the
profile was not working because the imperative code below was in the model
rule (of course :-) ).
s.debug('ModelRule');
for (p in s.getAllAppliedProfiles()){
t.applyProfile(thisModule.findProfile(p.getQualifiedName())) ;
}

When I replicated it in the package rule, it worked fine:

rule Package {
from s : UML2!"uml::Package" (
if thisModule.inElements->includes(s) then
s.oclIsTypeOf(UML2!"uml::Package")
else false endif)
to t : UML2!"uml::Package" mapsTo s (
name <- s.name,
visibility <- s.visibility,
...
packagedElement <- s.packagedElement,
profileApplication <- s.profileApplication)
do {
s.debug('PackageRule');
for (p in s.getAllAppliedProfiles()){
t.applyProfile(thisModule.findProfile(p.getQualifiedName())) ;
}
}
}

Regards,
Bruno.

ps.: I changed the subject just to make it updated with the current
discussion.
Previous Topic:[ATL] Create New ATL File wizard
Next Topic:Ask again about three problems about ATL transfromer
Goto Forum:
  


Current Time: Wed Sep 25 17:08:21 GMT 2024

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

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

Back to the top