Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » UML2 Tools » Reading UML Profile Elements in Java
Reading UML Profile Elements in Java [message #476286] Fri, 16 January 2009 09:32 Go to next message
Waqas is currently offline WaqasFriend
Messages: 32
Registered: July 2009
Member
Hi,

I have created a UML model in the Component-Connector view. For the
purpose of my project, I plan to list individual UML elements of this
model on a new window. Can you please guide me how to read UML model using
Java code?

Thanks
Waqas
Re: Reading UML Profile Elements in Java [message #476287 is a reply to message #476286] Fri, 16 January 2009 12:52 Go to previous messageGo to next message
Peter Mising name is currently offline Peter Mising nameFriend
Messages: 95
Registered: July 2009
Member
> Can you please guide me how to read UML model
> using Java code?

This is how you get the root Package.

import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;

protected org.eclipse.uml2.uml.Package load(URI uri) {
org.eclipse.uml2.uml.Package package_ = null;

try {
ResourceSetImpl RESOURCE_SET = new ResourceSetImpl();;
Resource resource = RESOURCE_SET.getResource(uri, true);

package_ = (org.eclipse.uml2.uml.Package) EcoreUtil
.getObjectByType(resource.getContents(),
UMLPackage.Literals.PACKAGE);
} catch (WrappedException we) {
we.printStackTrace();
System.exit(1);
}

return package_;
}

Peter
Re: Reading UML Profile Elements in Java [message #476288 is a reply to message #476286] Sat, 17 January 2009 03:25 Go to previous messageGo to next message
Rafael Chaves is currently offline Rafael ChavesFriend
Messages: 362
Registered: July 2009
Senior Member
This is really a question more appropriate for the UML2 newsgroup (which
I CC'd).

See the following UML2 articles for information on how to manipulate
UML2 UML models programmatically:

http://wiki.eclipse.org/MDT-UML2#Articles

HTH,

Rafael Chaves
http://abstratt.com/blog/

Waqas wrote:
> Hi,
>
> I have created a UML model in the Component-Connector view. For the
> purpose of my project, I plan to list individual UML elements of this
> model on a new window. Can you please guide me how to read UML model
> using Java code?
> Thanks
> Waqas
>
Re: Reading UML Profile Elements in Java [message #476292 is a reply to message #476287] Mon, 19 January 2009 17:15 Go to previous messageGo to next message
Waqas is currently offline WaqasFriend
Messages: 32
Registered: July 2009
Member
Thanks Peter. But this code is not compiling and following errors are
generated while compiling the code:

URI (error: URI cannot be resolved to a type)
UMLPackage (error: UMLPackage cannot be resolved)
WrappedException (error: WrappedException cannot be resolved to a type)

Thanks
Waqas
Re: Reading UML Profile Elements in Java [message #476293 is a reply to message #476288] Mon, 19 January 2009 17:24 Go to previous messageGo to next message
Waqas is currently offline WaqasFriend
Messages: 32
Registered: July 2009
Member
Thanks Rafael. The tutorials you have referred are for creating new UML
projects/models. I have created a project using these steps (although not
using Java code). Now i want to read the UML elements from this
model/project to display their names on a Java GUI. I am posting this
problem here because i have created the project in UML2tool's component
diagram.

/Waqas
Re: Reading UML Profile Elements in Java [message #476294 is a reply to message #476292] Mon, 19 January 2009 23:12 Go to previous messageGo to next message
Peter Mising name is currently offline Peter Mising nameFriend
Messages: 95
Registered: July 2009
Member
Hi Waqas,
I think this is not the right newsgroup for this kind of questions but
you must import the corresponding classes.

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.uml2.uml.UMLPackage;

Peter

> Thanks Peter. But this code is not compiling and following errors are
> generated while compiling the code:
> URI (error: URI cannot be resolved to a type)
> UMLPackage (error: UMLPackage cannot be resolved)
> WrappedException (error: WrappedException cannot be resolved to a type)
>
> Thanks
> Waqas
>
>
Re: Reading UML Profile Elements in Java [message #476296 is a reply to message #476293] Tue, 20 January 2009 06:09 Go to previous messageGo to next message
Rafael Chaves is currently offline Rafael ChavesFriend
Messages: 362
Registered: July 2009
Senior Member
Regardless how you create a UML2-based model (using UML2 Tools, Papyrus,
the EMF generated editor), you are going to read it the same way, i.e.
using EMF and UML2 API. So your question is indeed a MDT UML2 question.

The UML2 metamodel implementation works much like any other EMF-based
metamodel implementation. The way you load an EMF-based model into
memory is something like this:

URI modelURI = URI.createURI("uri/to/your/model.uml");

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(modelURI);

Once loaded into memory, you can, for instance, traverse through all
named elements in the model using the following code:

for (
TreeIterator<EObject> i = resource.getAllContents();
i .hasNext();
) {
EObject current = i.next();
if (!(current instanceof NamedElement))
i.prune();
NamedElement asNamed = (NamedElement) current;
System.out.println(asNamed.getQualifiedName()
+ " : " + asNamed.eClass().getName());
}

Other than the assumption that model elements are UML NamedElements, the
code above is pretty much based on pure EMF API. Once you get to UML2
specific model elements, then you can extract whatever UML-specific
information you need. See the following Javadoc:

http://tinyurl.com/8wqerd

HTH,

Rafael Chaves
http://abstratt.com/blog/

Waqas wrote:
> Thanks Rafael. The tutorials you have referred are for creating new UML
> projects/models. I have created a project using these steps (although
> not using Java code). Now i want to read the UML elements from this
> model/project to display their names on a Java GUI. I am posting this
> problem here because i have created the project in UML2tool's component
> diagram.
>
> /Waqas
>
Re: Reading UML Profile Elements in Java [message #476547 is a reply to message #476296] Thu, 18 June 2009 07:53 Go to previous messageGo to next message
Eclipse UserFriend
Rafael Chaves wrote:

> Regardless how you create a UML2-based model (using UML2 Tools, Papyrus,
> the EMF generated editor), you are going to read it the same way, i.e.
> using EMF and UML2 API. So your question is indeed a MDT UML2 question.

> The UML2 metamodel implementation works much like any other EMF-based
> metamodel implementation. The way you load an EMF-based model into
> memory is something like this:

> URI modelURI = URI.createURI("uri/to/your/model.uml");

> ResourceSet resourceSet = new ResourceSetImpl();
> Resource resource = resourceSet.createResource(modelURI);

> Once loaded into memory, you can, for instance, traverse through all
> named elements in the model using the following code:

> for (
> TreeIterator<EObject> i = resource.getAllContents();
> i .hasNext();
> ) {
> EObject current = i.next();
> if (!(current instanceof NamedElement))
> i.prune();
> NamedElement asNamed = (NamedElement) current;
> System.out.println(asNamed.getQualifiedName()
> + " : " + asNamed.eClass().getName());
> }

> Other than the assumption that model elements are UML NamedElements, the
> code above is pretty much based on pure EMF API. Once you get to UML2
> specific model elements, then you can extract whatever UML-specific
> information you need. See the following Javadoc:

> http://tinyurl.com/8wqerd

> HTH,

> Rafael Chaves
> http://abstratt.com/blog/

> Waqas wrote:
>> Thanks Rafael. The tutorials you have referred are for creating new UML
>> projects/models. I have created a project using these steps (although
>> not using Java code). Now i want to read the UML elements from this
>> model/project to display their names on a Java GUI. I am posting this
>> problem here because i have created the project in UML2tool's component
>> diagram.
>>
>> /Waqas
>>
Hi,
I tried to use the code you have proposed to load an uml model but the set
ResourceSet stay empty: I have an error at resource.getAllContents() and
just before, when I display the size of resourceSet I obtain 0. The
organisation of my documents is here under:
Mon dossier:
-src
-defaultPackage
-reader
- essais.uml

I give you my code:


public class reader {
public static void main(String[] args) {
URI fichier = URI.createURI("essais.uml");
load(fichier);
}

protected static void load(org.eclipse.emf.common.util.URI uri) {
//Package package_ = null;
ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(uri);
System.out.println(resourceSet.getResources().size());
for (
TreeIterator<EObject> i = resource.getAllContents();
i .hasNext();
) {
EObject current = i.next();
if (!(current instanceof NamedElement))
i.prune();
NamedElement asNamed = (NamedElement) current;
System.out.println(asNamed.getQualifiedName()
+ " : " + asNamed.eClass().getName());
}

}
}

Thanks for the help you could give me
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #476552 is a reply to message #476547] Fri, 19 June 2009 14:28 Go to previous messageGo to next message
Dawid Loubser is currently offline Dawid LoubserFriend
Messages: 23
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------070104020903080709030200
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi guenin,

I have exactly the same problem that you have. When, in the Eclipse GUI
(running all new RC5 versions of the EMF and UML plugins) I open my .uml
file, it opens fine, btu I have been having a hard time opening it in a
stand-alone application.

My model also loads without complaint or warning via the resource set,
but there is nothing in the model (size = 0). In addition to code
similar to yours, I am also following the instructions on the wiki at
this page:

http://wiki.eclipse.org/MDT/UML2/FAQ#What.27s_required_to_lo ad_a_UML_.28.uml.29_resource_from_a_standalone_application.3 F

My code (running in the form of a JUnit test) looks as follows - can
anybdy here say why my model loads in Eclipse GUI, but not in my
stand-alone app? I have all the required libraries on the path (RC5
versions of EMF and UML2 JARs).


(see attachment for ModelLoadTest.java)

Just to summarise, there are no errors or warning, the instance of
UMLResourceImpl I get back is just empty.


guenin het geskryf:

> Hi,
> I tried to use the code you have proposed to load an uml model but the
> set ResourceSet stay empty: I have an error at resource.getAllContents()
> and just before, when I display the size of resourceSet I obtain 0. The
> organisation of my documents is here under:
> Mon dossier:
> -src
> -defaultPackage
> -reader
> - essais.uml
>
> I give you my code:
>
>
> public class reader {
> public static void main(String[] args) {
> URI fichier = URI.createURI("essais.uml");
> load(fichier);
> }
>
> protected static void load(org.eclipse.emf.common.util.URI uri) {
> //Package package_ = null;
> ResourceSet resourceSet = new ResourceSetImpl();
> Resource resource = resourceSet.createResource(uri);
> System.out.println(resourceSet.getResources().size());
> for (
> TreeIterator<EObject> i = resource.getAllContents();
> i .hasNext();
> ) {
> EObject current = i.next();
> if (!(current instanceof NamedElement))
> i.prune();
> NamedElement asNamed = (NamedElement) current;
> System.out.println(asNamed.getQualifiedName()
> + " : " + asNamed.eClass().getName());
> }
> }
> }
>
> Thanks for the help you could give me
>
>


--------------070104020903080709030200
Content-Type: text/plain;
name="ModelLoadTest.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ModelLoadTest.java"

cGFja2FnZSB6YS5jby5zb2xtcy5tZGRleHBlcmltZW50cy50ZXN0czsKCmlt cG9ydCBqYXZh
Lm5ldC5VUkw7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51 dGlsLmxvZ2dp
bmcuTG9nZ2VyOwppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGls LlRyZWVJdGVy
YXRvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7 CmltcG9ydCBv
cmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKaW1wb3J0IG9yZy5lY2xp cHNlLmVtZi5l
Y29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi5lY29yZS5y
ZXNvdXJjZS5SZXNvdXJjZVNldDsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5l Y29yZS5yZXNv
dXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LnVtbDIudW1s
LlVNTFBhY2thZ2U7CmltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5yZXNv dXJjZS5VTUxS
ZXNvdXJjZTsKaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CmltcG9ydCBvcmcu anVuaXQuVGVz
dDsKCnB1YmxpYyBjbGFzcyBNb2RlbExvYWRUZXN0IAp7CiAgLyoqIEJlZm9y ZSBydW5uaW5n
IGFueSB0ZXN0cyBpbiB0aGlzIHN1aXRlLCBzZXQgdXAgdGhlIG1vZGVsICov CiAgQEJlZm9y
ZQogIHB1YmxpYyB2b2lkIGxvYWRNb2RlbCgpIHRocm93cyBFeGNlcHRpb24g CiAgewogICAg
Ly8gR2V0IG1vZGVsIGZyb20gdGhlIGNsYXNzIGxvYWRlcgogICAgVVJMIHRl c3RNb2RlbFVS
TCA9IGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKS5nZXRSZXNvdXJjZSgK ICAgICAgICAi
bW9kZWxzL3Rlc3RNb2RlbC51bWwiKTsKICAgIC8vIENvbnN0cnVjdCBhIFVS SSB1c2luZyBF
TUYncyBvd24gVVJJIGZyYW1ld29yawogICAgVVJJIHRlc3RNb2RlbFVSSSA9 IFVSSS5jcmVh
dGVVUkkodGVzdE1vZGVsVVJMLnRvRXh0ZXJuYWxGb3JtKCkpOwoKICAgIGxv Z2dlci5pbmZv
KCJMb2FkaW5nIG1vZGVsIGZyb206ICIgKyB0ZXN0TW9kZWxVUkkpOwogICAg UmVzb3VyY2VT
ZXQgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7CgogICAg Ly8gUGx1ZyBp
biBVTUwgbW9kZWwgbG9hZGVyIChwYWNrYWdlIGFuZCBmaWxlIGV4dGVuc2lv biByZWNvZ25p
dGlvbikKICAgIHJlc291cmNlU2V0LmdldFBhY2thZ2VSZWdpc3RyeSgpLnB1 dChVTUxQYWNr
YWdlLmVOU19VUkksCiAgICAgICAgVU1MUGFja2FnZS5lSU5TVEFOQ0UpOwog ICAgcmVzb3Vy
Y2VTZXQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRlbnNp b25Ub0ZhY3Rv
cnlNYXAoKS5wdXQoCiAgICAgICAgVU1MUmVzb3VyY2UuRklMRV9FWFRFTlNJ T04sIFVNTFJl
c291cmNlLkZhY3RvcnkuSU5TVEFOQ0UpOwoKICAgIC8vIFBsdWcgaW4gcGF0 aCBtYXBzIGFz
IHBlciB3aWtpIHN0YW5kLWFsb25lIGluc3RydWN0aW9ucwogICAgTWFwPFVS SSwgVVJJPiB1
cmlNYXAgPSByZXNvdXJjZVNldC5nZXRVUklDb252ZXJ0ZXIoKS5nZXRVUklN YXAoKTsKICAg
IC8vIE5vdGU6IEJhZCBpZGVhIHRvIHJlZmVyIHRvIEpBUiBmaWxlIGxpdGVy YWxseSwgYnV0
IHdlIGh1bW91ciB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBub3cKICAgIFVSSSB1 cmkgPSBVUkku
Y3JlYXRlVVJJKCJqYXI6ZmlsZTovVXNlcnMvZGF3aWRsL0Rlc2t0b3AvZW1m VGVzdFByb2pl
Y3QvcmVzb3VyY2VzL3J1bnRpbWUvdW1sMi0zLjAuMC1yYzUvb3JnLmVjbGlw c2UudW1sMi51
bWwucmVzb3VyY2VzXzMuMC4wLnYyMDA5MDYwMTExMTEuamFyIS8iKTsKICAg IHVyaU1hcC5w
dXQoVVJJLmNyZWF0ZVVSSShVTUxSZXNvdXJjZS5MSUJSQVJJRVNfUEFUSE1B UCksIHVyaS5h
cHBlbmRTZWdtZW50KCJsaWJyYXJpZXMiKS5hcHBlbmRTZWdtZW50KCIiKSk7 CiAgICB1cmlN
YXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuTUVUQU1PREVMU19Q QVRITUFQKSwg
dXJpLmFwcGVuZFNlZ21lbnQoIm1ldGFtb2RlbHMiKS5hcHBlbmRTZWdtZW50 KCIiKSk7CiAg
ICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuUFJPRklM RVNfUEFUSE1B
UCksIHVyaS5hcHBlbmRTZWdtZW50KCJwcm9maWxlcyIpLmFwcGVuZFNlZ21l bnQoIiIpKTsK
CiAgICAvLyBMb2FkIG1vZGVsCiAgICBtb2RlbCA9IHJlc291cmNlU2V0LmNy ZWF0ZVJlc291
cmNlKHRlc3RNb2RlbFVSSSk7CiAgICBsb2dnZXIuaW5mbygiTW9kZWwgbG9h ZGVkOiAiICsg
bW9kZWwpOwoKICAgIC8vIEFueSBwcm9ibGVtcz8KICAgIGlmIChtb2RlbC5n ZXRFcnJvcnMo
KS5zaXplKCkgPiAwKSAKICAgIHsKICAgICAgbG9nZ2VyLnNldmVyZShtb2Rl bC5nZXRFcnJv
cnMoKS50b1N0cmluZygpKTsKICAgIH0KICAgIGlmIChtb2RlbC5nZXRXYXJu aW5ncygpLnNp
emUoKSA+IDApIAogICAgewogICAgICBsb2dnZXIuc2V2ZXJlKG1vZGVsLmdl dFdhcm5pbmdz
KCkudG9TdHJpbmcoKSk7CiAgICB9CiAgfQoKICBAVGVzdAogIHB1YmxpYyB2 b2lkIHRlc3RU
cmF2ZXJzZU1vZGVsV2l0aEphdmEoKSB0aHJvd3MgRXhjZXB0aW9uIAogIHsK ICAgIC8vIFVz
aW5nIHRoZSBKYXZhIEFQSSwgaW5zcGVjdCBhbGwgdGhlIHN0dWZmIGluIHRo ZSBtb2RlbAog
ICAgbG9nZ2VyLmluZm8oIkl0ZXJhdGluZyBvdmVyIGFsbCBtb2RlbCBlbGVt ZW50cyIpOwog
ICAgZm9yIChUcmVlSXRlcmF0b3I8RU9iamVjdD4gc3R1ZmZJbk1vZGVsID0g bW9kZWwuZ2V0
QWxsQ29udGVudHMoKTsgc3R1ZmZJbk1vZGVsCiAgICAgICAgLmhhc05leHQo KTspIHsKICAg
ICAgLy8gVEhJUyBORVZFUiBSVU5TLCBNT0RFTCBJUyBFTVBUWQogICAgICBF T2JqZWN0IGVP
YmplY3QgPSBzdHVmZkluTW9kZWwubmV4dCgpOwoKICAgICAgLy8gRG8gc3R1 ZmYgd2l0aCBl
T2JqZWN0CiAgICAgIC8vIC4uLgogICAgfQoKICB9CgogIHByaXZhdGUgUmVz b3VyY2UgbW9k
ZWw7CiAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlci5n ZXRMb2dnZXIo
ImxvZ2dlciIpOwp9
--------------070104020903080709030200--
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #476558 is a reply to message #476552] Mon, 22 June 2009 20:27 Go to previous messageGo to next message
james bruck is currently offline james bruckFriend
Messages: 1724
Registered: July 2009
Senior Member
Hi Dawid,

Your code does a
model = resourceSet.createResource(testModelURI);

Which I believe doesn't actually load the resource.

Try:

resourceSet.getResource(resourceURI, true);

If that fails, try looking at this
http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html

for a more complete example ( scroll toward the bottom ).

Cheers,

- James.

"Dawid Loubser" <dawidl@solms.co.za> wrote in message
news:h1g7as$b5i$1@build.eclipse.org...
> Hi guenin,
>
> I have exactly the same problem that you have. When, in the Eclipse GUI
> (running all new RC5 versions of the EMF and UML plugins) I open my .uml
> file, it opens fine, btu I have been having a hard time opening it in a
> stand-alone application.
>
> My model also loads without complaint or warning via the resource set,
> but there is nothing in the model (size = 0). In addition to code
> similar to yours, I am also following the instructions on the wiki at
> this page:
>
> http://wiki.eclipse.org/MDT/UML2/FAQ#What.27s_required_to_lo ad_a_UML_.28.uml.29_resource_from_a_standalone_application.3 F
>
> My code (running in the form of a JUnit test) looks as follows - can
> anybdy here say why my model loads in Eclipse GUI, but not in my
> stand-alone app? I have all the required libraries on the path (RC5
> versions of EMF and UML2 JARs).
>
>
> (see attachment for ModelLoadTest.java)
>
> Just to summarise, there are no errors or warning, the instance of
> UMLResourceImpl I get back is just empty.
>
>
> guenin het geskryf:
>
>> Hi,
>> I tried to use the code you have proposed to load an uml model but the
>> set ResourceSet stay empty: I have an error at resource.getAllContents()
>> and just before, when I display the size of resourceSet I obtain 0. The
>> organisation of my documents is here under:
>> Mon dossier:
>> -src
>> -defaultPackage
>> -reader
>> - essais.uml
>>
>> I give you my code:
>>
>>
>> public class reader {
>> public static void main(String[] args) {
>> URI fichier = URI.createURI("essais.uml");
>> load(fichier);
>> }
>>
>> protected static void load(org.eclipse.emf.common.util.URI uri) {
>> //Package package_ = null;
>> ResourceSet resourceSet = new ResourceSetImpl();
>> Resource resource = resourceSet.createResource(uri);
>> System.out.println(resourceSet.getResources().size());
>> for (
>> TreeIterator<EObject> i = resource.getAllContents();
>> i .hasNext();
>> ) {
>> EObject current = i.next();
>> if (!(current instanceof NamedElement))
>> i.prune();
>> NamedElement asNamed = (NamedElement) current;
>> System.out.println(asNamed.getQualifiedName()
>> + " : " + asNamed.eClass().getName());
>> }
>> }
>> }
>>
>> Thanks for the help you could give me
>>
>>
>
>


------------------------------------------------------------ --------------------


> package za.co.solms.mddexperiments.tests;
>
> import java.net.URL;
> import java.util.Map;
> import java.util.logging.Logger;
> import org.eclipse.emf.common.util.TreeIterator;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.EObject;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.uml2.uml.UMLPackage;
> import org.eclipse.uml2.uml.resource.UMLResource;
> import org.junit.Before;
> import org.junit.Test;
>
> public class ModelLoadTest
> {
> /** Before running any tests in this suite, set up the model */
> @Before
> public void loadModel() throws Exception
> {
> // Get model from the class loader
> URL testModelURL = getClass().getClassLoader().getResource(
> "models/testModel.uml");
> // Construct a URI using EMF's own URI framework
> URI testModelURI = URI.createURI(testModelURL.toExternalForm());
>
> logger.info("Loading model from: " + testModelURI);
> ResourceSet resourceSet = new ResourceSetImpl();
>
> // Plug in UML model loader (package and file extension recognition)
> resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI,
> UMLPackage.eINSTANCE);
>
> resourceSet.getResourceFactoryRegistry().getExtensionToFacto ryMap().put(
> UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
>
> // Plug in path maps as per wiki stand-alone instructions
> Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
> // Note: Bad idea to refer to JAR file literally, but we humour the
> instructions for now
> URI uri =
> URI.createURI(" jar:file:/Users/dawidl/Desktop/emfTestProject/resources/runt ime/uml2-3.0.0-rc5/org.eclipse.uml2.uml.resources_3.0.0.v200 906011111.jar!/ ");
> uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP),
> uri.appendSegment("libraries").appendSegment(""));
> uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP),
> uri.appendSegment("metamodels").appendSegment(""));
> uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP),
> uri.appendSegment("profiles").appendSegment(""));
>
> // Load model
> model = resourceSet.createResource(testModelURI);
> logger.info("Model loaded: " + model);
>
> // Any problems?
> if (model.getErrors().size() > 0)
> {
> logger.severe(model.getErrors().toString());
> }
> if (model.getWarnings().size() > 0)
> {
> logger.severe(model.getWarnings().toString());
> }
> }
>
> @Test
> public void testTraverseModelWithJava() throws Exception
> {
> // Using the Java API, inspect all the stuff in the model
> logger.info("Iterating over all model elements");
> for (TreeIterator<EObject> stuffInModel = model.getAllContents();
> stuffInModel
> .hasNext();) {
> // THIS NEVER RUNS, MODEL IS EMPTY
> EObject eObject = stuffInModel.next();
>
> // Do stuff with eObject
> // ...
> }
>
> }
>
> private Resource model;
> private static Logger logger = Logger.getLogger("logger");
> }
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #476559 is a reply to message #476558] Tue, 23 June 2009 14:34 Go to previous messageGo to next message
Dawid Loubser is currently offline Dawid LoubserFriend
Messages: 23
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------010000010607010800000606
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi James,

Thank you for your tip, we are getting closer, but it still not working.
Using the UMLResource.Factory.INSTANCE resource factory, my XMI-based
UML model loads, but everything inside it are instances of
org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl - i.e. the file is
parsed as XML only. I am not getting any UML types.

Would you please take a look at my attached test program (runs as a
JUnit test) and tell me where I am going wrong?? I also tried using
either the XMIResourceFactoryImpl, or literally the
UML212ResourceFactoryImpl, but each fails for their own reasons.

Still, the same .uml test model loads by double-clicking it in Eclipse.

Please people - anybody... Surely somebody must spot what I am doing
wrong in my test program? Why is this so difficult? I simply need to
load the attached UML model as-is using the attached test program.

kind regards,
Dawid



James Bruck het geskryf:
> Hi Dawid,
>
> Your code does a
> model = resourceSet.createResource(testModelURI);
>
> Which I believe doesn't actually load the resource.
>
> Try:
>
> resourceSet.getResource(resourceURI, true);
>
> If that fails, try looking at this
> http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html
>
> for a more complete example ( scroll toward the bottom ).
>
> Cheers,
>
> - James.
>

--------------010000010607010800000606
Content-Type: text/plain;
name="ModelLoadTest.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ModelLoadTest.java"

cGFja2FnZSB6YS5jby5zb2xtcy5tZGRleHBlcmltZW50cy50ZXN0czsKCmlt cG9ydCBqYXZh
Lm5ldC5VUkw7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51 dGlsLmxvZ2dp
bmcuTG9nZ2VyOwppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGls LlRyZWVJdGVy
YXRvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7 CmltcG9ydCBv
cmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKaW1wb3J0IG9yZy5lY2xp cHNlLmVtZi5l
Y29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi5lY29yZS5y
ZXNvdXJjZS5SZXNvdXJjZVNldDsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5l Y29yZS5yZXNv
dXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LmVtZi5lY29y
ZS54bWkuWE1JUmVzb3VyY2U7CmltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNv cmUueG1pLmlt
cGwuWE1JUmVzb3VyY2VGYWN0b3J5SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LnVtbDIudW1s
LlVNTFBhY2thZ2U7CmltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5pbnRl cm5hbC5yZXNv
dXJjZS5VTUwyMTJVTUxSZXNvdXJjZUZhY3RvcnlJbXBsOwppbXBvcnQgb3Jn LmVjbGlwc2Uu
dW1sMi51bWwuaW50ZXJuYWwucmVzb3VyY2UuVU1MMjJVTUxSZXNvdXJjZUZh Y3RvcnlJbXBs
OwppbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucmVzb3VyY2UuVU1MUmVz b3VyY2U7Cmlt
cG9ydCBvcmcuanVuaXQuQmVmb3JlOwppbXBvcnQgb3JnLmp1bml0LlRlc3Q7 CmltcG9ydCBz
dGF0aWMganVuaXQuZnJhbWV3b3JrLkFzc2VydC4qOwoKcHVibGljIGNsYXNz IE1vZGVsTG9h
ZFRlc3QgCnsKICAvKiogQmVmb3JlIHJ1bm5pbmcgYW55IHRlc3RzIGluIHRo aXMgc3VpdGUs
IHNldCB1cCB0aGUgbW9kZWwgKi8KICBAQmVmb3JlCiAgcHVibGljIHZvaWQg bG9hZE1vZGVs
KCkgdGhyb3dzIEV4Y2VwdGlvbiAKICB7CiAgICAvLyBHZXQgbXkgdGVzdCBV TUwgbW9kZWwg
ZnJvbSB0aGUgY2xhc3MgbG9hZGVyCiAgICBVUkwgdGVzdE1vZGVsVVJMID0g Z2V0Q2xhc3Mo
KS5nZXRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlKCJtb2RlbHMvdGVzdE1v ZGVsLnVtbCIp
OwogICAgLy8gQ29uc3RydWN0IGEgVVJJIHVzaW5nIEVNRidzIG93biBVUkkg ZnJhbWV3b3Jr
CiAgICBVUkkgdGVzdE1vZGVsVVJJID0gVVJJLmNyZWF0ZVVSSSh0ZXN0TW9k ZWxVUkwudG9F
eHRlcm5hbEZvcm0oKSk7CgogICAgbG9nZ2VyLmluZm8oIkxvYWRpbmcgbW9k ZWwgZnJvbTog
IiArIHRlc3RNb2RlbFVSSSk7CiAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNl dCA9IG5ldyBS
ZXNvdXJjZVNldEltcGwoKTsKCiAgICAvLyBQbHVnIGluIFVNTCBtb2RlbCBs b2FkZXIgKHBh
Y2thZ2UgYW5kIGZpbGUgZXh0ZW5zaW9uIHJlY29nbml0aW9uKQogICAgcmVz b3VyY2VTZXQu
Z2V0UGFja2FnZVJlZ2lzdHJ5KCkucHV0KFVNTFBhY2thZ2UuZU5TX1VSSSwg VU1MUGFja2Fn
ZS5lSU5TVEFOQ0UpOwogICAgCiAgICAKLy8gICAgVGhpcyBjYXVzZXMgdGhl IFVNTCBtb2Rl
bCB0byBiZSBsb2FkZWQgYXMgWE1MLCBhbGwgZWxlbWVudHMgYXJlIGluc3Rh bmNlb2YgJ29y
Zy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5pbXBsLkFueVR5cGVJbXBs JwogICAgcmVz
b3VyY2VTZXQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRl bnNpb25Ub0Zh
Y3RvcnlNYXAoKS5wdXQoIFVNTFJlc291cmNlLkZJTEVfRVhURU5TSU9OLCBV TUxSZXNvdXJj
ZS5GYWN0b3J5LklOU1RBTkNFKTsKICAgIAovLyAgICBUaGlzIGZhaWxzIHdp dGggJ29yZy5l
Y2xpcHNlLmVtZi5lY29yZS54bWkuUGFja2FnZU5vdEZvdW5kRXhjZXB0aW9u OiBQYWNrYWdl
IHdpdGggdXJpICdodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9YTUkvMi4x JyBub3QgZm91
bmQuJwovLyAgICByZXNvdXJjZVNldC5nZXRSZXNvdXJjZUZhY3RvcnlSZWdp c3RyeSgpLmdl
dEV4dGVuc2lvblRvRmFjdG9yeU1hcCgpLnB1dCggVU1MUmVzb3VyY2UuRklM RV9FWFRFTlNJ
T04sIG5ldyBYTUlSZXNvdXJjZUZhY3RvcnlJbXBsKCkpOwogICAgCi8vICBU aGlzIGZhaWxz
IHdpdGggJ0Nhbm5vdCBjcmVhdGUgYSByZXNvdXJjZSBmb3IgJ3BsYXRmb3Jt Oi9wbHVnaW4v
b3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MMl8yX1VNTC5lY29yZTJ4 bWwnOyBhIHJl
Z2lzdGVyZWQgcmVzb3VyY2UgZmFjdG9yeSBpcyBuZWVkZWQnCi8vICAgIHJl c291cmNlU2V0
LmdldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uVG9G YWN0b3J5TWFw
KCkucHV0KCBVTUxSZXNvdXJjZS5GSUxFX0VYVEVOU0lPTiwgbmV3IFVNTDIy VU1MUmVzb3Vy
Y2VGYWN0b3J5SW1wbCgpKTsKICAgIAogICAgCiAgICAvLyBQbHVnIGluIHBh dGggbWFwcyBh
cyBwZXIgRWNsaXBzZSB3aWtpIHN0YW5kLWFsb25lIGluc3RydWN0aW9ucwog ICAgTWFwPFVS
SSwgVVJJPiB1cmlNYXAgPSByZXNvdXJjZVNldC5nZXRVUklDb252ZXJ0ZXIo KS5nZXRVUklN
YXAoKTsKICAgIC8vIFRPRE86IEJhZCBpZGVhIHRvIHJlZmVyIHRvIEpBUiBm aWxlIGxpdGVy
YWxseSwgYnV0IHdlIGh1bW91ciB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBub3cK ICAgIFVSSSB1
cmkgPSBVUkkuY3JlYXRlVVJJKCJqYXI6ZmlsZTovVXNlcnMvZGF3aWRsL0Rl c2t0b3AvZW1m
VGVzdFByb2plY3QvcmVzb3VyY2VzL3J1bnRpbWUvdW1sMi0zLjAuMC1yYzUv b3JnLmVjbGlw
c2UudW1sMi51bWwucmVzb3VyY2VzXzMuMC4wLnYyMDA5MDYwMTExMTEuamFy IS8iKTsKICAg
IHVyaU1hcC5wdXQoVVJJLmNyZWF0ZVVSSShVTUxSZXNvdXJjZS5MSUJSQVJJ RVNfUEFUSE1B
UCksIHVyaS5hcHBlbmRTZWdtZW50KCJsaWJyYXJpZXMiKS5hcHBlbmRTZWdt ZW50KCIiKSk7
CiAgICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuTUVU QU1PREVMU19Q
QVRITUFQKSwgdXJpLmFwcGVuZFNlZ21lbnQoIm1ldGFtb2RlbHMiKS5hcHBl bmRTZWdtZW50
KCIiKSk7CiAgICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3Vy Y2UuUFJPRklM
RVNfUEFUSE1BUCksIHVyaS5hcHBlbmRTZWdtZW50KCJwcm9maWxlcyIpLmFw cGVuZFNlZ21l
bnQoIiIpKTsKCiAgICAvLyBMb2FkIG1vZGVsCiAgICBtb2RlbCA9IHJlc291 cmNlU2V0Lmdl
dFJlc291cmNlKHRlc3RNb2RlbFVSSSwgdHJ1ZSk7CiAgICBsb2dnZXIuaW5m bygiTW9kZWwg
bG9hZGVkOiAiICsgbW9kZWwpOwoKICAgIC8vIEFueSBwcm9ibGVtcz8KICAg IGlmIChtb2Rl
bC5nZXRFcnJvcnMoKS5zaXplKCkgPiAwKSAKICAgIHsKICAgICAgbG9nZ2Vy LnNldmVyZSht
b2RlbC5nZXRFcnJvcnMoKS50b1N0cmluZygpKTsKICAgIH0KICAgIGlmICht b2RlbC5nZXRX
YXJuaW5ncygpLnNpemUoKSA+IDApIAogICAgewogICAgICBsb2dnZXIuc2V2 ZXJlKG1vZGVs
LmdldFdhcm5pbmdzKCkudG9TdHJpbmcoKSk7CiAgICB9CiAgfQoKICBAVGVz dAogIHB1Ymxp
YyB2b2lkIHRlc3RUcmF2ZXJzZU1vZGVsV2l0aEphdmEoKSB0aHJvd3MgRXhj ZXB0aW9uIAog
IHsKICAgIC8vIFRoZXJlIG11c3QgYmUgc3R1ZmYgaW4gdGhpcyBtb2RlbAog ICAgYXNzZXJ0
Tm90TnVsbCggbW9kZWwgKTsKICAgIGFzc2VydE5vdE51bGwoIG1vZGVsLmdl dENvbnRlbnRz
KCkgICk7CiAgICBhc3NlcnRUcnVlKCBtb2RlbC5nZXRDb250ZW50cygpLnNp emUoKSA+IDAg
KTsKICAgIAogICAgLy8gU2VlIHdoYXQncyBpbiB0aGUgbW9kZWw/CiAgICBU cmVlSXRlcmF0
b3I8RU9iamVjdD4gc3R1ZmZJbk1vZGVsID0gbW9kZWwuZ2V0QWxsQ29udGVu dHMoKTsKICAg
IHdoaWxlIChzdHVmZkluTW9kZWwuaGFzTmV4dCgpKQogICAgewogICAgICBF T2JqZWN0IG8g
PSBzdHVmZkluTW9kZWwubmV4dCgpOwogICAgICBTeXN0ZW0ub3V0LnByaW50 bG4oIk1vZGVs
IGVsZW1lbnQ6ICIgKyBvLmdldENsYXNzKCkuZ2V0TmFtZSgpICk7CiAgICB9 CiAgICAKICB9
CgogIHByaXZhdGUgUmVzb3VyY2UgbW9kZWw7CiAgcHJpdmF0ZSBzdGF0aWMg TG9nZ2VyIGxv
Z2dlciA9IExvZ2dlci5nZXRMb2dnZXIoImxvZ2dlciIpOwp9
--------------010000010607010800000606
Content-Type: text/xml; x-mac-type="0"; x-mac-creator="0";
name="testModel.uml"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="testModel.uml"

PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KCjx4bWk6 WE1JIHhtaTp2
ZXJzaW9uPScyLjEnIHhtbG5zOnVtbD0naHR0cDovL3NjaGVtYS5vbWcub3Jn L3NwZWMvVU1M
LzIuMS4yJyB4bWxuczp4bWk9J2h0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVj L1hNSS8yLjEn
IHhtbG5zOkRTTF9DdXN0b21pemF0aW9uPSdodHRwOi8vd3d3Lm1hZ2ljZHJh dy5jb20vc2No
ZW1hcy9EU0xfQ3VzdG9taXphdGlvbi54bWknIHhtbG5zOlZhbGlkYXRpb25f UHJvZmlsZT0n
aHR0cDovL3d3dy5tYWdpY2RyYXcuY29tL3NjaGVtYXMvVmFsaWRhdGlvbl9Q cm9maWxlLnht
aScgeG1sbnM6TWFnaWNEcmF3X1Byb2ZpbGU9J2h0dHA6Ly93d3cubWFnaWNk cmF3LmNvbS9z
Y2hlbWFzL01hZ2ljRHJhd19Qcm9maWxlLnhtaScgeG1sbnM6VU1MX1N0YW5k YXJkX1Byb2Zp
bGU9J2h0dHA6Ly93d3cubWFnaWNkcmF3LmNvbS9zY2hlbWFzL1VNTF9TdGFu ZGFyZF9Qcm9m
aWxlLnhtaSc+Cgk8eG1pOkRvY3VtZW50YXRpb24gZXhwb3J0ZXI9J01hZ2lj RHJhdyBVTUwn
IGV4cG9ydGVyVmVyc2lvbj0nMTYuMCcvPgoJPHhtaTpFeHRlbnNpb24gZXh0 ZW5kZXI9J01h
Z2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5kZXJJRD0nTWFnaWNEcmF3IFVNTCAx Ni4wJz4KCQk8
c2hhcmVUYWJsZS8+CgkJPG1vdW50VGFibGU+CgkJCTxtb2R1bGUgcmVzb3Vy Y2U9J2ZpbGU6
L0RldmVsb3Blci9BcHBsaWNhdGlvbnMvTWFnaWNEcmF3L3Byb2ZpbGVzL1VN TF9TdGFuZGFy
ZF9Qcm9maWxlLnhtbCcgYXV0b2xvYWRUeXBlPSdBTFdBWVNfTE9BRCcgcmVh ZE9ubHk9J3Ry
dWUnIGxvYWRJbmRleD0nZmFsc2UnIHJlcXVpcmVkVmVyc2lvbj0nLTEnPgoJ CQkJPG1vdW50
IG1vdW50UG9pbnQ9J21hZ2ljZHJhd191bWxfc3RhbmRhcmRfcHJvZmlsZV92 XzAwMDEnIG1v
dW50ZWRPbj0nZWVlXzEwNDU0NjcxMDAzMTNfMTM1NDM2XzEnLz4KCQkJPC9t b2R1bGU+CgkJ
PC9tb3VudFRhYmxlPgoJPC94bWk6RXh0ZW5zaW9uPgoJPHVtbDpNb2RlbCB4 bWk6aWQ9J2Vl
ZV8xMDQ1NDY3MTAwMzEzXzEzNTQzNl8xJyB4bWk6dXVpZD0nNzhmNzUyZDAt NWNkNC0xMWRl
LTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdEYXRhJyB2aXNpYmlsaXR5PSdw dWJsaWMnIHZp
ZXdwb2ludD0nJz4KCQk8eG1pOkV4dGVuc2lvbiBleHRlbmRlcj0nTWFnaWNE cmF3IFVNTCAx
Ni4wJyBleHRlbmRlcklEPSdNYWdpY0RyYXcgVU1MIDE2LjAnPgoJCQk8bW9k dWxlRXh0ZW5z
aW9uIGlnbm9yZWRJbk1vZHVsZT0ndHJ1ZScvPgoJCTwveG1pOkV4dGVuc2lv bj4KCQk8b3du
ZWRDb21tZW50IHhtaTp0eXBlPSd1bWw6Q29tbWVudCcgeG1pOmlkPSdfMTZf MF8xXzg4ZTAy
NzZfMTI0NTQxNzg0OTYzN18yNTEwNDBfMjMwJyB4bWk6dXVpZD0nNzhmN2M4 MDEtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBib2R5PSdBdXRob3I6ZGF3aWRsLiYj MTA7Q3JlYXRl
ZDowOS8wNi8xOSAzOjI0IFBNLiYjMTA7VGl0bGU6LiYjMTA7Q29tbWVudDou JiMxMDsnPgoJ
CQk8YW5ub3RhdGVkRWxlbWVudCB4bWk6aWRyZWY9J2VlZV8xMDQ1NDY3MTAw MzEzXzEzNTQz
Nl8xJy8+CgkJPC9vd25lZENvbW1lbnQ+CgkJPHBhY2thZ2VkRWxlbWVudCB4 bWk6dHlwZT0n
dW1sOlBhY2thZ2UnIGhyZWY9J1VNTF9TdGFuZGFyZF9Qcm9maWxlLnhtbCNt YWdpY2RyYXdf
dW1sX3N0YW5kYXJkX3Byb2ZpbGVfdl8wMDAxJz4KCQkJPHhtaTpFeHRlbnNp b24gZXh0ZW5k
ZXI9J01hZ2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5kZXJJRD0nTWFnaWNEcmF3 IFVNTCAxNi4w
Jz4KCQkJCTxyZWZlcmVuY2VFeHRlbnNpb24gcmVmZXJlbnRQYXRoPSdVTUwg U3RhbmRhcmQg
UHJvZmlsZScgcmVmZXJlbnRUeXBlPSdQYWNrYWdlJy8+CgkJCTwveG1pOkV4 dGVuc2lvbj4K
CQk8L3BhY2thZ2VkRWxlbWVudD4KCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0 eXBlPSd1bWw6
UGFja2FnZScgeG1pOmlkPSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkwMzY5 OV82NDk2M18y
NTInIHhtaTp1dWlkPSdkOTE1MzA3YS01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYy MWZmMDcnIG5h
bWU9J3NvbG1zJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6Q2xhc3MnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEy NDU0MTc5MTU4
MTFfNzcyOTk4XzI2MycgeG1pOnV1aWQ9J2Q5MTU1NzhiLTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nUGVyc29uJyB2aXNpYmlsaXR5PSdwdWJsaWMnIGlz TGVhZj0nZmFs
c2UnIGlzQWJzdHJhY3Q9J2ZhbHNlJyBpc0FjdGl2ZT0nZmFsc2UnPgoJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzE2XzBf MV84OGUwMjc2
XzEyNDU0MTc5MjM3MDJfNTMzNDYwXzI4NScgeG1pOnV1aWQ9J2Q5MTU1Nzhj LTVjZDQtMTFk
ZS05NTY3LTE1YTljNjIxZmYwNycgaXNPcmRlcmVkPSdmYWxzZScgaXNVbmlx dWU9J3RydWUn
IG5hbWU9J25hbWUnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGlzTGVhZj0nZmFs c2UnIGlzU3Rh
dGljPSdmYWxzZScgaXNSZWFkT25seT0nZmFsc2UnIGlzRGVyaXZlZD0nZmFs c2UnIGlzRGVy
aXZlZFVuaW9uPSdmYWxzZScgYWdncmVnYXRpb249J25vbmUnPgoJCQkJCTx0 eXBlIHhtaTp0
eXBlPSd1bWw6UHJpbWl0aXZlVHlwZScgaHJlZj0naHR0cDovL3NjaGVtYS5v bWcub3JnL3Nw
ZWMvVU1MLzIuMi91bWwueG1sI1N0cmluZyc+CgkJCQkJCTx4bWk6RXh0ZW5z aW9uIGV4dGVu
ZGVyPSdNYWdpY0RyYXcgVU1MIDE2LjAnIGV4dGVuZGVySUQ9J01hZ2ljRHJh dyBVTUwgMTYu
MCc+CgkJCQkJCQk8cmVmZXJlbmNlRXh0ZW5zaW9uIHJlZmVyZW50UGF0aD0n VU1MIFN0YW5k
YXJkIFByb2ZpbGU6OlVNTDIgTWV0YW1vZGVsOjpBdXhpbGlhcnlDb25zdHJ1 Y3RzOjpQcmlt
aXRpdmVUeXBlczo6U3RyaW5nJyByZWZlcmVudFR5cGU9J1ByaW1pdGl2ZVR5 cGUnLz4KCQkJ
CQkJPC94bWk6RXh0ZW5zaW9uPgoJCQkJCTwvdHlwZT4KCQkJCTwvb3duZWRB dHRyaWJ1dGU+
CgkJCQk8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9J3VtbDpQcm9wZXJ0eScg eG1pOmlkPSdf
MTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk2NjY5OF82MjUyNTdfMzE2JyB4bWk6 dXVpZD0nZDkx
NTdlOWQtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBpc09yZGVyZWQ9 J2ZhbHNlJyBp
c1VuaXF1ZT0ndHJ1ZScgbmFtZT0ndG95JyB2aXNpYmlsaXR5PSdwcml2YXRl JyBpc0xlYWY9
J2ZhbHNlJyBpc1N0YXRpYz0nZmFsc2UnIGlzUmVhZE9ubHk9J2ZhbHNlJyBp c0Rlcml2ZWQ9
J2ZhbHNlJyBpc0Rlcml2ZWRVbmlvbj0nZmFsc2UnIGFnZ3JlZ2F0aW9uPSdu b25lJyB0eXBl
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkzODY2OV83NTM1NDhfMjg4JyBh c3NvY2lhdGlv
bj0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NjY2OThfOTc2NzE5XzMxNSc+ CgkJCQkJPHVw
cGVyVmFsdWUgeG1pOnR5cGU9J3VtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJh bCcgeG1pOmlk
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk3MzE2OF83MjY5MDZfMzI2JyB4 bWk6dXVpZD0n
ZDkxNTdlOWUtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPScn IHZpc2liaWxp
dHk9J3B1YmxpYycgdmFsdWU9JyonLz4KCQkJCQk8bG93ZXJWYWx1ZSB4bWk6 dHlwZT0ndW1s
OkxpdGVyYWxJbnRlZ2VyJyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1 NDE3OTczMTY4
Xzg3NzYwMV8zMjUnIHhtaTp1dWlkPSdkOTE1YTVhZi01Y2Q0LTExZGUtOTU2 Ny0xNWE5YzYy
MWZmMDcnIG5hbWU9JycgdmlzaWJpbGl0eT0ncHVibGljJyB2YWx1ZT0nMCcv PgoJCQkJPC9v
d25lZEF0dHJpYnV0ZT4KCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCTxwYWNr YWdlZEVsZW1l
bnQgeG1pOnR5cGU9J3VtbDpDbGFzcycgeG1pOmlkPSdfMTZfMF8xXzg4ZTAy NzZfMTI0NTQx
NzkzODY2OV83NTM1NDhfMjg4JyB4bWk6dXVpZD0nZDkxNWE1YjAtNWNkNC0x MWRlLTk1Njct
MTVhOWM2MjFmZjA3JyBuYW1lPSdDYW1lcmEnIHZpc2liaWxpdHk9J3B1Ymxp YycgaXNMZWFm
PSdmYWxzZScgaXNBYnN0cmFjdD0nZmFsc2UnIGlzQWN0aXZlPSdmYWxzZSc+ CgkJCQk8b3du
ZWRBdHRyaWJ1dGUgeG1pOnR5cGU9J3VtbDpQcm9wZXJ0eScgeG1pOmlkPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk0NDA3Nl8yODUxNzFfMzEwJyB4bWk6dXVpZD0nZDkx NWE1YjEtNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBpc09yZGVyZWQ9J2ZhbHNlJyBp c1VuaXF1ZT0n
dHJ1ZScgbmFtZT0nbWF4U2h1dHRlclNwZWVkJyB2aXNpYmlsaXR5PSdwcml2 YXRlJyBpc0xl
YWY9J2ZhbHNlJyBpc1N0YXRpYz0nZmFsc2UnIGlzUmVhZE9ubHk9J2ZhbHNl JyBpc0Rlcml2
ZWQ9J2ZhbHNlJyBpc0Rlcml2ZWRVbmlvbj0nZmFsc2UnIGFnZ3JlZ2F0aW9u PSdub25lJz4K
CQkJCQk8dHlwZSB4bWk6dHlwZT0ndW1sOkRhdGFUeXBlJyBocmVmPSdVTUxf U3RhbmRhcmRf
UHJvZmlsZS54bWwjZWVlXzEwNDU0NjcxMDAzMjNfODQ4MDM0XzY2Jz4KCQkJ CQkJPHhtaTpF
eHRlbnNpb24gZXh0ZW5kZXI9J01hZ2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5k ZXJJRD0nTWFn
aWNEcmF3IFVNTCAxNi4wJz4KCQkJCQkJCTxyZWZlcmVuY2VFeHRlbnNpb24g cmVmZXJlbnRQ
YXRoPSdVTUwgU3RhbmRhcmQgUHJvZmlsZTo6TWFnaWNEcmF3IFByb2ZpbGU6 OmRhdGF0eXBl
czo6ZG91YmxlJyByZWZlcmVudFR5cGU9J0RhdGFUeXBlJy8+CgkJCQkJCTwv eG1pOkV4dGVu
c2lvbj4KCQkJCQk8L3R5cGU+CgkJCQk8L293bmVkQXR0cmlidXRlPgoJCQk8 L3BhY2thZ2Vk
RWxlbWVudD4KCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1sOkFz c29jaWF0aW9u
JyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4Xzk3Njcx OV8zMTUnIHht
aTp1dWlkPSdkOTE1YTViMi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcn IG5hbWU9Jycg
dmlzaWJpbGl0eT0ncHVibGljJyBpc0xlYWY9J2ZhbHNlJyBpc0Fic3RyYWN0 PSdmYWxzZScg
aXNEZXJpdmVkPSdmYWxzZSc+CgkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0n XzE2XzBfMV84
OGUwMjc2XzEyNDU0MTc5NjY2OThfNjI1MjU3XzMxNicvPgoJCQkJPG1lbWJl ckVuZCB4bWk6
aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4XzEyMDA5OV8z MTcnLz4KCQkJ
CTxvd25lZEVuZCB4bWk6dHlwZT0ndW1sOlByb3BlcnR5JyB4bWk6aWQ9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTY2Njk4XzEyMDA5OV8zMTcnIHhtaTp1dWlkPSdkOTE1 Y2JjMy01Y2Q0
LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIGlzT3JkZXJlZD0nZmFsc2UnIGlz VW5pcXVlPSd0
cnVlJyBuYW1lPScnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGlzTGVhZj0nZmFs c2UnIGlzU3Rh
dGljPSdmYWxzZScgaXNSZWFkT25seT0nZmFsc2UnIGlzRGVyaXZlZD0nZmFs c2UnIGlzRGVy
aXZlZFVuaW9uPSdmYWxzZScgYWdncmVnYXRpb249J25vbmUnIHR5cGU9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTE1ODExXzc3Mjk5OF8yNjMnIGFzc29jaWF0aW9uPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk2NjY5OF85NzY3MTlfMzE1Jy8+CgkJCTwvcGFja2Fn ZWRFbGVtZW50
PgoJCTwvcGFja2FnZWRFbGVtZW50PgoJPC91bWw6TW9kZWw+Cgk8eG1pOkV4 dGVuc2lvbiBl
eHRlbmRlcj0nTWFnaWNEcmF3IFVNTCAxNi4wJz4KCQk8bWRPd25lZERpYWdy YW1zPgoJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRGlhZ3JhbScgeG1pOmlkPSdfMTZf MF8xXzg4ZTAy
NzZfMTI0NTQxNzg5MjM5MV80ODQxODBfMjMwJyB4bWk6dXVpZD0nZDkxNWNi YzQtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdleGFtcGxlQ2xhc3NEaWFn cmFtJyB2aXNp
YmlsaXR5PSdwdWJsaWMnIG93bmVyT2ZEaWFncmFtPSdlZWVfMTA0NTQ2NzEw MDMxM18xMzU0
MzZfMSc+CgkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRGlhZ3JhbVBy ZXNlbnRhdGlv
bkVsZW1lbnQnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc4OTIz OTNfMzUwNDYw
XzIzMSc+CgkJCQkJPGVsZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhl MDI3Nl8xMjQ1
NDE3ODkyMzkxXzQ4NDE4MF8yMzAnLz4KCQkJCQk8cHJvcGVydGllcz4KCQkJ CQkJPG1kRWxl
bWVudCBlbGVtZW50Q2xhc3M9J0Jvb2xlYW5Qcm9wZXJ0eSc+CgkJCQkJCQk8 cHJvcGVydHlJ
RD5BVVRPU0laRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eUdyb3Vw PkRJQUdSQU1f
RlJBTUU8L3Byb3BlcnR5R3JvdXA+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlw dGlvbklEPkFV
VE9TSVpFX0RFU0NSSVBUSU9OPC9wcm9wZXJ0eURlc2NyaXB0aW9uSUQ+CgkJ CQkJCQk8dmFs
dWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJCQkJ CTwvcHJvcGVy
dGllcz4KCQkJCQk8dHlwZT5DbGFzcyBEaWFncmFtPC90eXBlPgoJCQkJCTx1 bWxUeXBlPkNs
YXNzIERpYWdyYW08L3VtbFR5cGU+CgkJCQkJPHpvb21GYWN0b3IgeG1pOnZh bHVlPScxLjAn
Lz4KCQkJCQk8ZGlhZ3JhbU9wZW5lZCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJ CQk8ZGlhZ3Jh
bUZyYW1lSW5pdGlhbFNpemVTZXQgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJ PGRpYWdyYW1X
aW5kb3dCb3VuZHM+MiwgMjQsIDE3MDcsIDk4ODwvZGlhZ3JhbVdpbmRvd0Jv dW5kcz4KCQkJ
CQk8ZGlhZ3JhbVNjcm9sbFBvc2l0aW9uWCB4bWk6dmFsdWU9JzAnLz4KCQkJ CQk8ZGlhZ3Jh
bVNjcm9sbFBvc2l0aW9uWSB4bWk6dmFsdWU9JzAnLz4KCQkJCQk8bWF4aW1p emVkIHhtaTp2
YWx1ZT0nZmFsc2UnLz4KCQkJCQk8YWN0aXZlIHhtaTp2YWx1ZT0ndHJ1ZScv PgoJCQkJCTxt
ZE93bmVkVmlld3M+CgkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdE aWFncmFtRnJh
bWUnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc4OTI0MjFfNTAx Mzc2XzI0Myc+
CgkJCQkJCQk8ZWxlbWVudElEIHhtaTppZHJlZj0nXzE2XzBfMV84OGUwMjc2 XzEyNDU0MTc4
OTIzOTFfNDg0MTgwXzIzMCcvPgoJCQkJCQkJPGdlb21ldHJ5PjUsIDUsIDUz MywgMzAyPC9n
ZW9tZXRyeT4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1lbnQg ZWxlbWVudENs
YXNzPSdQYWNrYWdlJyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3 OTAzNzAxXzc4
NzIyN18yNTMnPgoJCQkJCQkJPGVsZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8w XzFfODhlMDI3
Nl8xMjQ1NDE3OTAzNjk5XzY0OTYzXzI1MicvPgoJCQkJCQkJPGdlb21ldHJ5 PjQ5LCA2Mywg
NDY5LCAyMjQ8L2dlb21ldHJ5PgoJCQkJCQkJPG1kT3duZWRWaWV3cz4KCQkJ CQkJCQk8bWRF
bGVtZW50IGVsZW1lbnRDbGFzcz0nQ2xhc3MnIHhtaTppZD0nXzE2XzBfMV84 OGUwMjc2XzEy
NDU0MTc5MTU4MTFfMjk4NDE4XzI2NCc+CgkJCQkJCQkJCTxlbGVtZW50SUQg eG1pOmlkcmVm
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkxNTgxMV83NzI5OThfMjYzJy8+ CgkJCQkJCQkJ
CTxnZW9tZXRyeT45MSwgMTYxLCA3NCwgNTA8L2dlb21ldHJ5PgoJCQkJCQkJ CTwvbWRFbGVt
ZW50PgoJCQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdDbGFzcycg eG1pOmlkPSdf
MTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkzODY3MF81NDU4NjhfMjg5Jz4KCQkJ CQkJCQkJPGVs
ZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTM4 NjY5Xzc1MzU0
OF8yODgnLz4KCQkJCQkJCQkJPGdlb21ldHJ5PjMyOSwgMTYxLCAxMzgsIDUw PC9nZW9tZXRy
eT4KCQkJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJCQk8bWRFbGVtZW50IGVs ZW1lbnRDbGFz
cz0nQXNzb2NpYXRpb24nIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0 MTc5NjY3MTJf
NTQ3MzYyXzMyMCc+CgkJCQkJCQkJCTxlbGVtZW50SUQgeG1pOmlkcmVmPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk2NjY5OF85NzY3MTlfMzE1Jy8+CgkJCQkJCQkJCTxs aW5rRmlyc3RF
bmRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTM4Njcw XzU0NTg2OF8y
ODknLz4KCQkJCQkJCQkJPGxpbmtTZWNvbmRFbmRJRCB4bWk6aWRyZWY9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTE1ODExXzI5ODQxOF8yNjQnLz4KCQkJCQkJCQkJPGdl b21ldHJ5PjMy
OSwgMTg2OyAxNjUsIDE4NjsgPC9nZW9tZXRyeT4KCQkJCQkJCQkJPG5hbWVW aXNpYmxlIHht
aTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQkJCQk8bWRPd25lZFZpZXdzPgoJCQkJ CQkJCQkJPG1k
RWxlbWVudCBlbGVtZW50Q2xhc3M9J1JvbGUnIHhtaTppZD0nXzE2XzBfMV84 OGUwMjc2XzEy
NDU0MTc5NjY2OTlfODU2ODY4XzMxOSc+CgkJCQkJCQkJCQkJPGVsZW1lbnRJ RCB4bWk6aWRy
ZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4XzYyNTI1N18zMTYn Lz4KCQkJCQkJ
CQkJCQk8Z2VvbWV0cnk+MzE5LCAxODEsIDEwLCAxMDwvZ2VvbWV0cnk+CgkJ CQkJCQkJCQkJ
PG1kT3duZWRWaWV3cz4KCQkJCQkJCQkJCQkJPG1kRWxlbWVudCBlbGVtZW50 Q2xhc3M9J1Rl
eHRCb3gnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NzMxODNf MTE0MjczXzMy
Nyc+CgkJCQkJCQkJCQkJCQk8Z2VvbWV0cnk+MzAyLCAxODksIDI0LCAxMzwv Z2VvbWV0cnk+
CgkJCQkJCQkJCQkJCQk8dGV4dD4wLi4qPC90ZXh0PgoJCQkJCQkJCQkJCQk8 L21kRWxlbWVu
dD4KCQkJCQkJCQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1RleHRC b3gnIHhtaTpp
ZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NzYzMDVfNjA3OTcyXzMyOSc+ CgkJCQkJCQkJ
CQkJCQk8Z2VvbWV0cnk+MzAyLCAxNzAsIDI0LCAxMzwvZ2VvbWV0cnk+CgkJ CQkJCQkJCQkJ
CQk8dGV4dD4tdG95PC90ZXh0PgoJCQkJCQkJCQkJCQk8L21kRWxlbWVudD4K CQkJCQkJCQkJ
CQk8L21kT3duZWRWaWV3cz4KCQkJCQkJCQkJCQk8cm9sZU5hbWVJRCB4bWk6 aWRyZWY9J18x
Nl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTc2MzA1XzYwNzk3Ml8zMjknLz4KCQkJ CQkJCQkJCQk8
cm9sZU11bHRpcGxpY2l0eUlEIHhtaTppZHJlZj0nXzE2XzBfMV84OGUwMjc2 XzEyNDU0MTc5
NzMxODNfMTE0MjczXzMyNycvPgoJCQkJCQkJCQkJPC9tZEVsZW1lbnQ+CgkJ CQkJCQkJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nUm9sZScgeG1pOmlkPSdfMTZfMF8x Xzg4ZTAyNzZf
MTI0NTQxNzk2NjY5OV8yNTIxMTNfMzE4Jz4KCQkJCQkJCQkJCQk8ZWxlbWVu dElEIHhtaTpp
ZHJlZj0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NjY2OThfMTIwMDk5XzMx NycvPgoJCQkJ
CQkJCQkJCTxnZW9tZXRyeT4xNjUsIDE4MSwgMTAsIDEwPC9nZW9tZXRyeT4K CQkJCQkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQkJCQk8L21kT3duZWRWaWV3cz4KCQkJCQkJ CQkJPGFzc29j
aWF0aW9uRmlyc3RFbmRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8x MjQ1NDE3OTY2
Njk5Xzg1Njg2OF8zMTknLz4KCQkJCQkJCQkJPGFzc29jaWF0aW9uU2Vjb25k RW5kSUQgeG1p
OmlkcmVmPSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk2NjY5OV8yNTIxMTNf MzE4Jy8+CgkJ
CQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCQk8L21kT3duZWRWaWV3cz4KCQkJ CQkJPC9tZEVs
ZW1lbnQ+CgkJCQkJPC9tZE93bmVkVmlld3M+CgkJCQk8L21kRWxlbWVudD4K CQkJPC9tZEVs
ZW1lbnQ+CgkJPC9tZE93bmVkRGlhZ3JhbXM+CgkJPHByb3hpZXMvPgoJCTxw cml2YXRlUHJv
eGllcz4KCQkJPHByb3h5IHhtaTp0eXBlPSd1bWw6UGFja2FnZScgeG1pOmlk PSdtYWdpY2Ry
YXdfdW1sX3N0YW5kYXJkX3Byb2ZpbGVfdl8wMDAxJyB4bWk6dXVpZD0nNzhm OTc1YjItNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdVTUwgU3RhbmRhcmQg UHJvZmlsZScg
dmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCTx4bWk6RXh0ZW5zaW9uIGV4dGVu ZGVyPSdNYWdp
Y0RyYXcgVU1MIDE2LjAnIGV4dGVuZGVySUQ9J01hZ2ljRHJhdyBVTUwgMTYu MCc+CgkJCQkJ
PG1vZHVsZUV4dGVuc2lvbiBtb2R1bGVSb290PSc6OlVNTCBTdGFuZGFyZCBQ cm9maWxlJyBt
b2R1bGVOYW1lPSdVTUxfU3RhbmRhcmRfUHJvZmlsZS54bWwnIHJlbW90ZVBy b2plY3RJRD0n
JyByZW1vdGVNb2R1bGVWZXJzaW9uPScxMjMyOTg4MzkwMDAwJyBtb2R1bGVV c2VkQnlQcm9q
ZWN0PSd0cnVlJy8+CgkJCQk8L3htaTpFeHRlbnNpb24+CgkJCQk8cGFja2Fn ZWRFbGVtZW50
IHhtaTp0eXBlPSd1bWw6TW9kZWwnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzEx MDgwNTM3NjEx
OTRfNDY3NjM1XzExNDYzJyB4bWk6dXVpZD0nNzhmOTljYzMtNWNkNC0xMWRl LTk1NjctMTVh
OWM2MjFmZjA3JyBuYW1lPSdVTUwyIE1ldGFtb2RlbCcgdmlzaWJpbGl0eT0n cHVibGljJz4K
CQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6UGFja2FnZScg eG1pOmlkPSdf
OV8wXzYyYTAyMGFfMTEwNTcwNTA4MDgwMl83Mjk1MjBfMTE0MDInIHhtaTp1 dWlkPSc3OGY5
OWNjNC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J0F1eGls aWFyeUNvbnN0
cnVjdHMnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJCQkJCTxwYWNrYWdlZEVs ZW1lbnQgeG1p
OnR5cGU9J3VtbDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1 NzA1MDg0MjYz
XzgxODEzNF8xMTUzNicgeG1pOnV1aWQ9Jzc4Zjk5Y2M1LTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nTW9kZWxzJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJ CQkJCQkJPHBh
Y2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1sOkNsYXNzJyB4bWk6aWQ9J185 XzBfNjJhMDIw
YV8xMTA1NzA0OTIwMzQwXzgyNTU5Ml85MzI5JyB4bWk6dXVpZD0nNzhmOWMz ZDYtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdNb2RlbCcgdmlzaWJpbGl0 eT0ncHVibGlj
Jy8+CgkJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6UGFja2FnZScgeG1pOmlkPSdfMTJfMEVBUGJldGFfYmUw MDMwMV8xMTU3
NTI5MzkyMzk0XzIwMjYwMl8xJyB4bWk6dXVpZD0nZDkxODE1YjUtNWNkNC0x MWRlLTk1Njct
MTVhOWM2MjFmZjA3JyBuYW1lPSdQcmltaXRpdmVUeXBlcycgdmlzaWJpbGl0 eT0ncHVibGlj
Jz4KCQkJCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9J3VtbDpQcmlt aXRpdmVUeXBl
JyB4bWk6aWQ9J185XzBfMl85MWEwMjk1XzExMTAyNzQ3MTM5OTVfMjk3MDU0 XzAnIHhtaTp1
dWlkPSdkOTE4MTViNi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5h bWU9J1N0cmlu
ZycgdmlzaWJpbGl0eT0ncHVibGljJy8+CgkJCQkJCTwvcGFja2FnZWRFbGVt ZW50PgoJCQkJ
CTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1p OnR5cGU9J3Vt
bDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1NzA1MDY0MjMz XzY3NjM4M18x
MTA0MicgeG1pOnV1aWQ9Jzc4ZjllYWU3LTVjZDQtMTFkZS05NTY3LTE1YTlj NjIxZmYwNycg
bmFtZT0nQ2xhc3NlcycgdmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCQkJPHBh Y2thZ2VkRWxl
bWVudCB4bWk6dHlwZT0ndW1sOlBhY2thZ2UnIHhtaTppZD0nXzlfMF82MmEw MjBhXzExMDU3
MDUwNjQzMjNfOTU3MTU1XzExMDQ5JyB4bWk6dXVpZD0nNzhmOWVhZTgtNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdLZXJuZWwnIHZpc2liaWxpdHk9J3B1 YmxpYyc+CgkJ
CQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6Q2xhc3MnIHht aTppZD0nXzlf
MF82MmEwMjBhXzExMDYyOTYwNzE5NzdfNjE2MDdfMCcgeG1pOnV1aWQ9J2Q5 MTgxNWI3LTVj
ZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nRGlhZ3JhbScgdmlz aWJpbGl0eT0n
cHVibGljJz4KCQkJCQkJCQk8eG1pOkV4dGVuc2lvbiBleHRlbmRlcj0nTWFn aWNEcmF3IFVN
TCAxNi4wJyBleHRlbmRlcklEPSdNYWdpY0RyYXcgVU1MIDE2LjAnPgoJCQkJ CQkJCQk8bW9k
ZWxFeHRlbnNpb24vPgoJCQkJCQkJCTwveG1pOkV4dGVuc2lvbj4KCQkJCQkJ CTwvcGFja2Fn
ZWRFbGVtZW50PgoJCQkJCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0n dW1sOkNsYXNz
JyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg0ODA3XzM3MTU2MV83 NzQxJyB4bWk6
dXVpZD0nNzhmOWVhZTktNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBu YW1lPSdFbGVt
ZW50JyB2aXNpYmlsaXR5PSdwdWJsaWMnLz4KCQkJCQkJCTxwYWNrYWdlZEVs ZW1lbnQgeG1p
OnR5cGU9J3VtbDpDbGFzcycgeG1pOmlkPSdfOV8wXzYyYTAyMGFfMTEwNTcw NDg4NTI5OF83
MTMyOTJfNzkxMycgeG1pOnV1aWQ9Jzc4ZjllYWVhLTVjZDQtMTFkZS05NTY3 LTE1YTljNjIx
ZmYwNycgbmFtZT0nUGFja2FnZScgdmlzaWJpbGl0eT0ncHVibGljJy8+CgkJ CQkJCTwvcGFj
a2FnZWRFbGVtZW50PgoJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJPC9w YWNrYWdlZEVs
ZW1lbnQ+CgkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6UHJv ZmlsZScgeG1p
OmlkPSdfOV8wX2JlMDAzMDFfMTEwODA1MDU4MjM0M181Mjc0MDBfMTA4NDcn IHhtaTp1dWlk
PSc3OGY5ZWFlYi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9 J1VNTCBTdGFu
ZGFyZCBQcm9maWxlJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJCTxwYWNr YWdlZEVsZW1l
bnQgeG1pOnR5cGU9J3VtbDpFeHRlbnNpb24nIHhtaTppZD0nXzEwXzBFQVBi ZXRhX2JlMDAz
MDFfMTEyMzA4MTc3MTEzNl84MjQ4ODNfOTcnIHhtaTp1dWlkPSc3OGZhMTFm Yy01Y2Q0LTEx
ZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJ CQkJCTxtZW1i
ZXJFbmQgeG1pOmlkcmVmPSdfMTBfMEVBUGJldGFfYmUwMDMwMV8xMTIzMDgx NzcxMTM2XzU4
MDQyM185OScvPgoJCQkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEwXzBF QVBiZXRhX2Jl
MDAzMDFfMTEyMzA4MTc3MTEzNl8yNzE0MDZfOTgnLz4KCQkJCQkJPG93bmVk RW5kIHhtaTp0
eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9i ZTAwMzAxXzEx
MjMwODE3NzExMzZfNTgwNDIzXzk5JyB4bWk6dXVpZD0nNzhmYTM5MGQtNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdleHRlbnNpb25fbWV0YW1vZGVsJyB2 aXNpYmlsaXR5
PSdwcml2YXRlJyBhZ2dyZWdhdGlvbj0nY29tcG9zaXRlJyB0eXBlPSdtYWdp Y2RyYXdfMTA0
Njg2MTQyMTIzNl82MDEyNDBfMzYnLz4KCQkJCQk8L3BhY2thZ2VkRWxlbWVu dD4KCQkJCQk8
cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6U3RlcmVvdHlwZScgeG1p OmlkPSdtYWdp
Y2RyYXdfMTA0Njg2MTQyMTIzNl82MDEyNDBfMzYnIHhtaTp1dWlkPSc3OGZh MzkwZS01Y2Q0
LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J21ldGFtb2RlbCcgdmlz aWJpbGl0eT0n
cHVibGljJz4KCQkJCQkJPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSd1bWw6 UHJvcGVydHkn
IHhtaTppZD0nXzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MTEzNl8y NzE0MDZfOTgn
IHhtaTp1dWlkPSc3OGZhNjAxZi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZm MDcnIG5hbWU9
J2Jhc2VfTW9kZWwnIHZpc2liaWxpdHk9J3ByaXZhdGUnIHR5cGU9J185XzBf NjJhMDIwYV8x
MTA1NzA0OTIwMzQwXzgyNTU5Ml85MzI5Jy8+CgkJCQkJPC9wYWNrYWdlZEVs ZW1lbnQ+CgkJ
CQk8L3BhY2thZ2VkRWxlbWVudD4KCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1p OnR5cGU9J3Vt
bDpQcm9maWxlJyB4bWk6aWQ9J19iZTAwMzAxXzEwNzMzOTQzNTEzMzFfNDQ1 NTgwXzInIHht
aTp1dWlkPSc3OGZiNzE5MC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcn IG5hbWU9J01h
Z2ljRHJhdyBQcm9maWxlJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJCTxw YWNrYWdlZEVs
ZW1lbnQgeG1pOnR5cGU9J3VtbDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfMl9i ZTAwMzAxXzEx
MTE2NzAyMTc1OTZfMzM2MTY4XzYyNycgeG1pOnV1aWQ9J2Q5MTg2M2Q4LTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nZGF0YXR5cGVzJyB2aXNpYmlsaXR5 PSdwdWJsaWMn
PgoJCQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6RGF0YVR5 cGUnIHhtaTpp
ZD0nZWVlXzEwNDU0NjcxMDAzMjNfODQ4MDM0XzY2JyB4bWk6dXVpZD0nZDkx ODYzZDktNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdkb3VibGUnIHZpc2li aWxpdHk9J3B1
YmxpYycvPgoJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCTxwYWNrYWdl ZEVsZW1lbnQg
eG1pOnR5cGU9J3VtbDpFeHRlbnNpb24nIHhtaTppZD0nXzEwXzBFQVBiZXRh X2JlMDAzMDFf
MTEyMzA4MTc3MjQ5OF81MzE4NjNfMzU1JyB4bWk6dXVpZD0nZDkxODYzZGEt NWNkNC0xMWRl
LTk1NjctMTVhOWM2MjFmZjA3JyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJ CQk8bWVtYmVy
RW5kIHhtaTppZHJlZj0nXzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3 MjQ5OF80MzU5
OTNfMzU3Jy8+CgkJCQkJCTxtZW1iZXJFbmQgeG1pOmlkcmVmPSdfMTBfMEVB UGJldGFfYmUw
MDMwMV8xMTIzMDgxNzcyNDk4XzkwMTg2NF8zNTYnLz4KCQkJCQkJPG93bmVk RW5kIHhtaTp0
eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9i ZTAwMzAxXzEx
MjMwODE3NzI0OThfNDM1OTkzXzM1NycgeG1pOnV1aWQ9J2Q5MTg4YWViLTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nZXh0ZW5zaW9uX0RpYWdyYW1JbmZv JyB2aXNpYmls
aXR5PSdwcml2YXRlJyBhZ2dyZWdhdGlvbj0nY29tcG9zaXRlJyB0eXBlPSdf OV8wX2JlMDAz
MDFfMTEwODA0NDM4MDYxNV8xNTA0ODdfMCcvPgoJCQkJCTwvcGFja2FnZWRF bGVtZW50PgoJ
CQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9J3VtbDpFeHRlbnNpb24n IHhtaTppZD0n
XzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MjA5OF8zMjM4OTdfMjc0 JyB4bWk6dXVp
ZD0nNzhmYjk4YTEtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyB2aXNp YmlsaXR5PSdw
dWJsaWMnPgoJCQkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEwXzBFQVBi ZXRhX2JlMDAz
MDFfMTEyMzA4MTc3MjEwOF82MjQ1OTRfMjc2Jy8+CgkJCQkJCTxtZW1iZXJF bmQgeG1pOmlk
cmVmPSdfMTBfMEVBUGJldGFfYmUwMDMwMV8xMTIzMDgxNzcyMDk4XzQxMTg2 Ml8yNzUnLz4K
CQkJCQkJPG93bmVkRW5kIHhtaTp0eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4 bWk6aWQ9J18x
MF8wRUFQYmV0YV9iZTAwMzAxXzExMjMwODE3NzIxMDhfNjI0NTk0XzI3Nicg eG1pOnV1aWQ9
Jzc4ZmI5OGEyLTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0n ZXh0ZW5zaW9u
X0ludmlzaWJsZVN0ZXJlb3R5cGUnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGFn Z3JlZ2F0aW9u
PSdjb21wb3NpdGUnIHR5cGU9J185XzBfYmUwMDMwMV8xMTA4MDQ0NzIxMjQ1 XzIzNjU4OF80
MTEnLz4KCQkJCQk8L3BhY2thZ2VkRWxlbWVudD4KCQkJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6RXh0ZW5zaW9uJyB4bWk6aWQ9J18xMl8xXzhmOTAyOTFf MTE3Mzk2Mzkz
OTkzN18zMjM1NzRfOTgnIHhtaTp1dWlkPSc3OGZiOThhMy01Y2Q0LTExZGUt OTU2Ny0xNWE5
YzYyMWZmMDcnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJCQkJCTxtZW1iZXJF bmQgeG1pOmlk
cmVmPSdfMTJfMV84ZjkwMjkxXzExNzM5NjM5Mzk5MzdfMzk5NjMwXzEwMCcv PgoJCQkJCQk8
bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEyXzFfOGY5MDI5MV8xMTczOTYzOTM5 OTM3XzUyMzE2
Xzk5Jy8+CgkJCQkJCTxvd25lZEVuZCB4bWk6dHlwZT0ndW1sOkV4dGVuc2lv bkVuZCcgeG1p
OmlkPSdfMTJfMV84ZjkwMjkxXzExNzM5NjM5Mzk5MzdfMzk5NjMwXzEwMCcg eG1pOnV1aWQ9
Jzc4ZmI5OGE0LTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0n ZXh0ZW5zaW9u
X2F1eGlsaWFyeVJlc291cmNlJyB2aXNpYmlsaXR5PSdwcml2YXRlJyBhZ2dy ZWdhdGlvbj0n
Y29tcG9zaXRlJyB0eXBlPSdfMTJfMV84ZjkwMjkxXzExNzM5NjMzMjM4NzVf NjYyNjEyXzk4
Jy8+CgkJCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2VkRWxl bWVudCB4bWk6
dHlwZT0ndW1sOlN0ZXJlb3R5cGUnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzEx MDgwNDQzODA2
MTVfMTUwNDg3XzAnIHhtaTp1dWlkPSdkOTE4OGFlYy01Y2Q0LTExZGUtOTU2 Ny0xNWE5YzYy
MWZmMDcnIG5hbWU9J0RpYWdyYW1JbmZvJyB2aXNpYmlsaXR5PSdwdWJsaWMn PgoJCQkJCQk8
Z2VuZXJhbGl6YXRpb24geG1pOnR5cGU9J3VtbDpHZW5lcmFsaXphdGlvbicg eG1pOmlkPSdf
OV8wX2JlMDAzMDFfMTEwODA0NDk4OTA3MF80NjkzMDdfNDM2JyB4bWk6dXVp ZD0nZDkxODhh
ZWQtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBnZW5lcmFsPSdfOV8w X2JlMDAzMDFf
MTEwODA0NDcyMTI0NV8yMzY1ODhfNDExJy8+CgkJCQkJCTxvd25lZEF0dHJp YnV0ZSB4bWk6
dHlwZT0ndW1sOlByb3BlcnR5JyB4bWk6aWQ9J19iZTAwMzAxXzEwNzMzMDYx ODg2MjlfNTM3
NzkxXzInIHhtaTp1dWlkPSdkOTE4YjFmZS01Y2Q0LTExZGUtOTU2Ny0xNWE5 YzYyMWZmMDcn
IG5hbWU9J0NyZWF0aW9uIGRhdGUnIHZpc2liaWxpdHk9J3ByaXZhdGUnLz4K CQkJCQkJPG93
bmVkQXR0cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0n X2JlMDAzMDFf
MTA3NzcyNjc3MDEyOF84NzEzNjZfMScgeG1pOnV1aWQ9J2Q5MThiMWZmLTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nQXV0aG9yJyB2aXNpYmlsaXR5PSdw cml2YXRlJy8+
CgkJCQkJCTxvd25lZEF0dHJpYnV0ZSB4bWk6dHlwZT0ndW1sOlByb3BlcnR5 JyB4bWk6aWQ9
J19iZTAwMzAxXzEwNzMzOTQzNDUzMjJfOTIyNTUyXzEnIHhtaTp1dWlkPSdk OTE4YjIwMC01
Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J01vZGlmaWNhdGlv biBkYXRlJyB2
aXNpYmlsaXR5PSdwcml2YXRlJy8+CgkJCQkJCTxvd25lZEF0dHJpYnV0ZSB4 bWk6dHlwZT0n
dW1sOlByb3BlcnR5JyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9iZTAwMzAxXzEx MjMwODE3NzI0
OThfOTAxODY0XzM1NicgeG1pOnV1aWQ9J2Q5MThiMjAxLTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nYmFzZV9EaWFncmFtJyB2aXNpYmlsaXR5PSdwcml2 YXRlJyB0eXBl
PSdfOV8wXzYyYTAyMGFfMTEwNjI5NjA3MTk3N182MTYwN18wJy8+CgkJCQkJ PC9wYWNrYWdl
ZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1s OlN0ZXJlb3R5
cGUnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzExMDgwNDQ3MjEyNDVfMjM2NTg4 XzQxMScgeG1p
OnV1aWQ9Jzc4ZmJiZmI1LTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycg bmFtZT0nSW52
aXNpYmxlU3RlcmVvdHlwZScgdmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzEwXzBF QVBiZXRhX2Jl
MDAzMDFfMTEyMzA4MTc3MjA5OF80MTE4NjJfMjc1JyB4bWk6dXVpZD0nNzhm YmJmYjYtNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdiYXNlX0VsZW1lbnQn IHZpc2liaWxp
dHk9J3ByaXZhdGUnIHR5cGU9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg0ODA3 XzM3MTU2MV83
NzQxJy8+CgkJCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2Vk RWxlbWVudCB4
bWk6dHlwZT0ndW1sOlN0ZXJlb3R5cGUnIHhtaTppZD0nXzEyXzFfOGY5MDI5 MV8xMTczOTYz
MzIzODc1XzY2MjYxMl85OCcgeG1pOnV1aWQ9Jzc4ZmJiZmI3LTVjZDQtMTFk ZS05NTY3LTE1
YTljNjIxZmYwNycgbmFtZT0nYXV4aWxpYXJ5UmVzb3VyY2UnIHZpc2liaWxp dHk9J3B1Ymxp
Yyc+CgkJCQkJCTxnZW5lcmFsaXphdGlvbiB4bWk6dHlwZT0ndW1sOkdlbmVy YWxpemF0aW9u
JyB4bWk6aWQ9J18xNV8wXzhmOTAyOTFfMTE5Njg2NjYzNDUzN182ODA2MDNf OTgnIHhtaTp1
dWlkPSc3OGZiYmZiOC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIGdl bmVyYWw9J185
XzBfYmUwMDMwMV8xMTA4MDQ0NzIxMjQ1XzIzNjU4OF80MTEnLz4KCQkJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzEyXzFf OGY5MDI5MV8x
MTczOTYzOTM5OTM3XzUyMzE2Xzk5JyB4bWk6dXVpZD0nNzhmYmJmYjktNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdiYXNlX1BhY2thZ2UnIHZpc2liaWxp dHk9J3ByaXZh
dGUnIHR5cGU9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg1Mjk4XzcxMzI5Ml83 OTEzJy8+CgkJ
CQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQk8L3BhY2thZ2VkRWxlbWVudD4K CQkJPC9wcm94
eT4KCQk8L3ByaXZhdGVQcm94aWVzPgoJCTxzdGVyZW90eXBlQXBwbGljYXRp b25Gb3JQcm94
aWVzPgoJCQk8VU1MX1N0YW5kYXJkX1Byb2ZpbGU6bWV0YW1vZGVsIHhtaTpp ZD0nXzEwXzBF
QVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MTEyNl8yMzMzNzNfOTUnIGJhc2Vf TW9kZWw9J185
XzBfYmUwMDMwMV8xMTA4MDUzNzYxMTk0XzQ2NzYzNV8xMTQ2MycvPgoJCQk8 TWFnaWNEcmF3
X1Byb2ZpbGU6YXV4aWxpYXJ5UmVzb3VyY2UgeG1pOmlkPSdfMTJfMV84Zjkw MjkxXzExNzQ0
MTE1OTg2MjVfNTA0NTg3Xzk4JyBiYXNlX1BhY2thZ2U9J21hZ2ljZHJhd191 bWxfc3RhbmRh
cmRfcHJvZmlsZV92XzAwMDEnLz4KCQk8L3N0ZXJlb3R5cGVBcHBsaWNhdGlv bkZvclByb3hp
ZXM+CgkJPHN0ZXJlb3R5cGVzSURTPgoJCQk8c3RlcmVvdHlwZSBuYW1lPSdV TUxfU3RhbmRh
cmRfUHJvZmlsZTptZXRhbW9kZWwnIHN0ZXJlb3R5cGVJRD0nbWFnaWNkcmF3 XzEwNDY4NjE0
MjEyMzZfNjAxMjQwXzM2Jy8+CgkJCTxzdGVyZW90eXBlIG5hbWU9J01hZ2lj RHJhd19Qcm9m
aWxlOkRpYWdyYW1JbmZvJyBzdGVyZW90eXBlSUQ9J185XzBfYmUwMDMwMV8x MTA4MDQ0Mzgw
NjE1XzE1MDQ4N18wJy8+CgkJCTx0YWcgbmFtZT0nTWFnaWNEcmF3X1Byb2Zp bGU6RGlhZ3Jh
bUluZm86Q3JlYXRpb25fZGF0ZScgdGFnSUQ9J19iZTAwMzAxXzEwNzMzMDYx ODg2MjlfNTM3
NzkxXzInLz4KCQkJPHRhZyBuYW1lPSdNYWdpY0RyYXdfUHJvZmlsZTpEaWFn cmFtSW5mbzpB
dXRob3InIHRhZ0lEPSdfYmUwMDMwMV8xMDc3NzI2NzcwMTI4Xzg3MTM2Nl8x Jy8+CgkJCTx0
YWcgbmFtZT0nTWFnaWNEcmF3X1Byb2ZpbGU6RGlhZ3JhbUluZm86TW9kaWZp Y2F0aW9uX2Rh
dGUnIHRhZ0lEPSdfYmUwMDMwMV8xMDczMzk0MzQ1MzIyXzkyMjU1Ml8xJy8+ CgkJCTxzdGVy
ZW90eXBlIG5hbWU9J01hZ2ljRHJhd19Qcm9maWxlOmF1eGlsaWFyeVJlc291 cmNlJyBzdGVy
ZW90eXBlSUQ9J18xMl8xXzhmOTAyOTFfMTE3Mzk2MzMyMzg3NV82NjI2MTJf OTgnLz4KCQk8
L3N0ZXJlb3R5cGVzSURTPgoJCTxpbmRleC8+CgkJPG9wdGlvbnM+CgkJCTxt ZEVsZW1lbnQg
ZWxlbWVudENsYXNzPSdTdHlsZU1hbmFnZXInPgoJCQkJPG1kRWxlbWVudCBl bGVtZW50Q2xh
c3M9J1NpbXBsZVN0eWxlJz4KCQkJCQk8bmFtZT5TVFlMRV9NT0RFTF9FTEVN RU5UX0RFRkFV
TFRTPC9uYW1lPgoJCQkJCTxkZWZhdWx0IHhtaTp2YWx1ZT0nZmFsc2UnLz4K CQkJCTwvbWRF
bGVtZW50PgoJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1NpbXBsZVN0 eWxlJz4KCQkJ
CQk8bmFtZT5TVFlMRV9VU0VSX1BST1BFUlRJRVM8L25hbWU+CgkJCQkJPGRl ZmF1bHQgeG1p
OnZhbHVlPSdmYWxzZScvPgoJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNz PSdQcm9wZXJ0
eU1hbmFnZXInPgoJCQkJCQk8bmFtZT5QUk9KRUNUX0dFTkVSQUxfUFJPUEVS VElFUzwvbmFt
ZT4KCQkJCQkJPHByb3BlcnR5TWFuYWdlcklEPl8xNl8wXzFfODhlMDI3Nl8x MjQ1NDE4MDEy
ODAxXzU0NDM5N181NTU8L3Byb3BlcnR5TWFuYWdlcklEPgoJCQkJCQk8bWRF bGVtZW50IGVs
ZW1lbnRDbGFzcz0nQ2xhc3NQYXRoTGlzdFByb3BlcnR5Jz4KCQkJCQkJCTxw cm9wZXJ0eUlE
Pk1PRFVMRVNfRElSUzwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURl c2NyaXB0aW9u
SUQ+TU9EVUxFU19ESVJTX0RFU0NSSVBUSU9OPC9wcm9wZXJ0eURlc2NyaXB0 aW9uSUQ+CgkJ
CQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRmlsZVByb3BlcnR5Jz4K CQkJCQkJCQk8
dmFsdWU+Jmx0O3Byb2plY3QuZGlyJmd0OzwvdmFsdWU+CgkJCQkJCQkJPHNl bGVjdGlvbk1v
ZGUgeG1pOnZhbHVlPScwJy8+CgkJCQkJCQkJPGRpc3BsYXlGdWxsUGF0aCB4 bWk6dmFsdWU9
J3RydWUnLz4KCQkJCQkJCQk8dXNlRmlsZVByZXZpZXdlciB4bWk6dmFsdWU9 J2ZhbHNlJy8+
CgkJCQkJCQkJPGRpc3BsYXlBbGxGaWxlcyB4bWk6dmFsdWU9J3RydWUnLz4K CQkJCQkJCQk8
ZmlsZVR5cGU+RklMRV9UWVBFX0FOWTwvZmlsZVR5cGU+CgkJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdGaWxlUHJvcGVydHkn PgoJCQkJCQkJ
CTx2YWx1ZT4mbHQ7aW5zdGFsbC5yb290Jmd0Oy9wcm9maWxlczwvdmFsdWU+ CgkJCQkJCQkJ
PHNlbGVjdGlvbk1vZGUgeG1pOnZhbHVlPScwJy8+CgkJCQkJCQkJPGRpc3Bs YXlGdWxsUGF0
aCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCQk8dXNlRmlsZVByZXZpZXdl ciB4bWk6dmFs
dWU9J2ZhbHNlJy8+CgkJCQkJCQkJPGRpc3BsYXlBbGxGaWxlcyB4bWk6dmFs dWU9J3RydWUn
Lz4KCQkJCQkJCQk8ZmlsZVR5cGU+RklMRV9UWVBFX0FOWTwvZmlsZVR5cGU+ CgkJCQkJCQk8
L21kRWxlbWVudD4KCQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdG aWxlUHJvcGVy
dHknPgoJCQkJCQkJCTx2YWx1ZT4mbHQ7aW5zdGFsbC5yb290Jmd0Oy9tb2Rl bExpYnJhcmll
czwvdmFsdWU+CgkJCQkJCQkJPHNlbGVjdGlvbk1vZGUgeG1pOnZhbHVlPScw Jy8+CgkJCQkJ
CQkJPGRpc3BsYXlGdWxsUGF0aCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJ CQk8dXNlRmls
ZVByZXZpZXdlciB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQkJPGRpc3Bs YXlBbGxGaWxl
cyB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCQk8ZmlsZVR5cGU+RklMRV9U WVBFX0FOWTwv
ZmlsZVR5cGU+CgkJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJCTxhbGxvd0Zp bGVzIHhtaTp2
YWx1ZT0nZmFsc2UnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVs ZW1lbnQgZWxl
bWVudENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJCQkJPHByb3BlcnR5 SUQ+U0hPV19E
T1RfTk9UQVRJT05fRk9SX0FTU09DSUFUSU9OUzwvcHJvcGVydHlJRD4KCQkJ CQkJCTxwcm9w
ZXJ0eURlc2NyaXB0aW9uSUQ+U0hPV19ET1RfTk9UQVRJT05fRk9SX0FTU09D SUFUSU9OU19E
RVNDUklQVElPTjwvcHJvcGVydHlEZXNjcmlwdGlvbklEPgoJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J0Jvb2xlYW5Qcm9wZXJ0 eSc+CgkJCQkJ
CQk8cHJvcGVydHlJRD5DSEFOR0VfT1dORVJTSElQX0ZPUl9OQVZJR0FCSUxJ VFk8L3Byb3Bl
cnR5SUQ+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlwdGlvbklEPkNIQU5HRV9P V05FUlNISVBf
Rk9SX05BVklHQUJJTElUWV9ERVNDUklQVElPTjwvcHJvcGVydHlEZXNjcmlw dGlvbklEPgoJ
CQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQk8L21kRWxl bWVudD4KCQkJ
CQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J0Nob2ljZVByb3BlcnR5Jz4K CQkJCQkJCTxw
cm9wZXJ0eUlEPlFOQU1FX0RJU1BMQVlfU1RZTEU8L3Byb3BlcnR5SUQ+CgkJ CQkJCQk8cHJv
cGVydHlEZXNjcmlwdGlvbklEPlFOQU1FX0RJU1BMQVlfU1RZTEVfREVTQ1JJ UFRJT048L3By
b3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2YWx1ZT5RTkFNRV9ESVNQ TEFZX1NUWUxF
X1JFTEFUSVZFPC92YWx1ZT4KCQkJCQkJCTxjaG9pY2UgeG1pOnZhbHVlPSdR TkFNRV9ESVNQ
TEFZX1NUWUxFX1JFTEFUSVZFXlFOQU1FX0RJU1BMQVlfU1RZTEVfQUJTT0xV VEUnLz4KCQkJ
CQkJCTxpbmRleCB4bWk6dmFsdWU9JzAnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+ CgkJCQkJCTxt
ZEVsZW1lbnQgZWxlbWVudENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJ CQkJPHByb3Bl
cnR5SUQ+QVVUT19TWU5DSFJPTklaRV9QQVJBTUVURVJTX0FORF9BUkdVTUVO VFM8L3Byb3Bl
cnR5SUQ+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlwdGlvbklEPkFVVE9fU1lO Q0hST05JWkVf
UEFSQU1FVEVSU19BTkRfQVJHVU1FTlRTX0RFU0NSSVBUSU9OPC9wcm9wZXJ0 eURlc2NyaXB0
aW9uSUQ+CgkJCQkJCQk8dmFsdWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJ CTwvbWRFbGVt
ZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRWxlbWVudExp c3RQcm9wZXJ0
eSc+CgkJCQkJCQk8cHJvcGVydHlJRD5BQ1RJVkVfVkFMSURBVElPTl9TQ09Q RTwvcHJvcGVy
dHlJRD4KCQkJCQkJCTxwcm9wZXJ0eUdyb3VwPkFDVElWRV9WQUxJREFUSU9O PC9wcm9wZXJ0
eUdyb3VwPgoJCQkJCQkJPGRpc3BsYXlhYmxlVHlwZXMgeG1pOnZhbHVlPSdQ cm9wZXJ0eV5J
bnRlcmFjdGlvbkNvbnN0cmFpbnReU2VuZE9iamVjdEFjdGlvbl5DbGFzc15S ZWxhdGlvbnNo
aXBeU2VxdWVuY2VOb2RlXkxpdGVyYWxTcGVjaWZpY2F0aW9uXlJlY2xhc3Np ZnlPYmplY3RB
Y3Rpb25eVGltZUV2ZW50XkNsZWFyVmFyaWFibGVBY3Rpb25eQmVoYXZpb3Jh bEZlYXR1cmVe
RGF0YVN0b3JlTm9kZV5SZWdpb25eRmxvd0ZpbmFsTm9kZV5SZWFsaXphdGlv bl5SZW1vdmVT
dHJ1Y3R1cmFsRmVhdHVyZVZhbHVlQWN0aW9uXkRpYWdyYW1eVW5tYXJzaGFs bEFjdGlvbl5D
bGVhclN0cnVjdHVyYWxGZWF0dXJlQWN0aW9uXkNvbmRpdGlvbmFsTm9kZV5Q cm90b2NvbFRy
YW5zaXRpb25eQ29ubmVjdGlvblBvaW50UmVmZXJlbmNlXkZlYXR1cmVeQXNz b2NpYXRpb25D
bGFzc15BY3Rpb25FeGVjdXRpb25TcGVjaWZpY2F0aW9uXlJlYWRMaW5rQWN0 aW9uXlByb3Rv
Y29sU3RhdGVNYWNoaW5lXkJlaGF2aW9yZWRDbGFzc2lmaWVyXkV4Y2VwdGlv bkhhbmRsZXJe
QWN0aXZpdHlHcm91cF5UaW1lSW50ZXJ2YWxeRGVwbG95bWVudF5WYXJpYWJs ZV5TdGF0ZUlu
dmFyaWFudF5NZXNzYWdlXkxpdGVyYWxOdWxsXkxpbmtFbmREZXN0cnVjdGlv bkRhdGFeT3V0
cHV0UGluXlJlZHVjZUFjdGlvbl5SZWNlcHRpb25eVGVtcGxhdGVQYXJhbWV0 ZXJeQ29sbGFi
b3JhdGlvblVzZV5QYXJhbWV0ZXJTZXReQWRkVmFyaWFibGVWYWx1ZUFjdGlv bl5UZW1wbGF0
ZVBhcmFtZXRlclN1YnN0aXR1dGlvbl5JbnRlcmFjdGlvbk9wZXJhbmReSW5w dXRQaW5eUmVk
ZWZpbmFibGVUZW1wbGF0ZVNpZ25hdHVyZV5TdGFydE9iamVjdEJlaGF2aW9y QWN0aW9uXkxp
dGVyYWxCb29sZWFuXlNlbmRTaWduYWxFdmVudF5PcGFxdWVFeHByZXNzaW9u XlBhcmFtZXRl
cl5TdHJ1Y3R1cmFsRmVhdHVyZV5SZWFkRXh0ZW50QWN0aW9uXkluZm9ybWF0 aW9uRmxvd15E
YXRhVHlwZV5FbnVtZXJhdGlvbkxpdGVyYWxeQ29tcG9uZW50UmVhbGl6YXRp b25eUGFja2Fn
ZUltcG9ydF5MaW5rQWN0aW9uXkFic3RyYWN0aW9uXkNoYW5nZUV2ZW50Xk5v ZGVeTmFtZWRF
bGVtZW50XkJlaGF2aW9yXlN0cnVjdHVyZWRDbGFzc2lmaWVyXkxpdGVyYWxJ bnRlZ2VyXkV4
ZWN1dGlvbk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXkNvbnRyb2xGbG93XkFj Y2VwdEV2ZW50
QWN0aW9uXlNpZ25hbEV2ZW50XkRlY2lzaW9uTm9kZV5EZXBlbmRlbmN5Xkdl bmVyYWxpemF0
aW9uXlBhcnREZWNvbXBvc2l0aW9uXkNvbWJpbmVkRnJhZ21lbnReVGVtcGxh dGVTaWduYXR1
cmVeQ2xhc3NpZmllcl5DZW50cmFsQnVmZmVyTm9kZV5PcGVyYXRpb25eRmlu YWxTdGF0ZV5J
bnRlcmFjdGlvbl5JbnRlcnZhbF5TdGVyZW90eXBlXkR1cmF0aW9uXkxpbmtF bmREYXRhXk9j
Y3VycmVuY2VTcGVjaWZpY2F0aW9uXlN0cnVjdHVyZWRBY3Rpdml0eU5vZGVe SW50ZXJ2YWxD
b25zdHJhaW50XkluY2x1ZGVeRXhlY3V0YWJsZU5vZGVeT3BhcXVlQWN0aW9u XkNvbGxhYm9y
YXRpb25eQ2FsbEV2ZW50Xk9wZXJhdGlvblRlbXBsYXRlUGFyYW1ldGVyXklu aXRpYWxOb2Rl
XkNvbXBvbmVudF5NZXNzYWdlRW5kXkZ1bmN0aW9uQmVoYXZpb3JeT2JqZWN0 Tm9kZV5DcmVh
dGVPYmplY3RBY3Rpb25eVXNlQ2FzZV5NZXJnZU5vZGVeU2VuZE9wZXJhdGlv bkV2ZW50Xklt
YWdlXkVudW1lcmF0aW9uXkNvbnN0cmFpbnReQWRkU3RydWN0dXJhbEZlYXR1 cmVWYWx1ZUFj
dGlvbl5WZXJ0ZXheRWxlbWVudEltcG9ydF5EaXJlY3RlZFJlbGF0aW9uc2hp cF5FeHByZXNz
aW9uXkFjY2VwdENhbGxBY3Rpb25eV3JpdGVWYXJpYWJsZUFjdGlvbl5NZXNz YWdlRXZlbnRe
SW50ZXJmYWNlUmVhbGl6YXRpb25eUmFpc2VFeGNlcHRpb25BY3Rpb25eVGVt cGxhdGVhYmxl
RWxlbWVudF5UcmlnZ2VyXlZhbHVlU3BlY2lmaWNhdGlvbkFjdGlvbl5Db21t ZW50XlJlbW92
ZVZhcmlhYmxlVmFsdWVBY3Rpb25eQ2xhc3NpZmllclRlbXBsYXRlUGFyYW1l dGVyXlNlbmRT
aWduYWxBY3Rpb25eQ29ubmVjdG9yXkFjdG9yXkV4dGVuc2lvblBvaW50XlBh cmFtZXRlcmFi
bGVFbGVtZW50Xkxvb3BOb2RlXkNhbGxCZWhhdmlvckFjdGlvbl5Db25uZWN0 YWJsZUVsZW1l
bnReU3RhdGVNYWNoaW5lXkV2ZW50XlRyYW5zaXRpb25eQmVoYXZpb3JFeGVj dXRpb25TcGVj
aWZpY2F0aW9uXlN0YXRlXlNsb3ReVmFsdWVTcGVjaWZpY2F0aW9uXlVzYWdl XkFjdGl2aXR5
RmluYWxOb2RlXlRlc3RJZGVudGl0eUFjdGlvbl5PcGFxdWVCZWhhdmlvcl5J bnZvY2F0aW9u
QWN0aW9uXlByb2ZpbGVeTW9kZWxeRm9ya05vZGVeQWN0aXZpdHlQYXJ0aXRp b25eQ29uc2lk
ZXJJZ25vcmVGcmFnbWVudF5NZXNzYWdlT2NjdXJyZW5jZVNwZWNpZmljYXRp b25eTGlua0Vu
ZENyZWF0aW9uRGF0YV5UaW1lRXhwcmVzc2lvbl5BY3Rpb25JbnB1dFBpbl5Q cm90b2NvbENv
bmZvcm1hbmNlXkxpdGVyYWxTdHJpbmdeRGVzdHJveUxpbmtBY3Rpb25eUmVh ZElzQ2xhc3Np
ZmllZE9iamVjdEFjdGlvbl5UeXBlXkFjdGlvbl5FeGVjdXRpb25FbnZpcm9u bWVudF5BcnRp
ZmFjdF5EdXJhdGlvbkNvbnN0cmFpbnReT2JzZXJ2YXRpb25eV3JpdGVTdHJ1 Y3R1cmFsRmVh
dHVyZUFjdGlvbl5SZWFkVmFyaWFibGVBY3Rpb25eRXhwYW5zaW9uUmVnaW9u XlNpZ25hbF5B
bnlSZWNlaXZlRXZlbnReRXh0ZW5zaW9uXk11bHRpcGxpY2l0eUVsZW1lbnRe RW5jYXBzdWxh
dGVkQ2xhc3NpZmllcl5MaXRlcmFsVW5saW1pdGVkTmF0dXJhbF5TdHJpbmdF eHByZXNzaW9u
XlBhY2thZ2VhYmxlRWxlbWVudF5TdWJzdGl0dXRpb25eQ2xlYXJBc3NvY2lh dGlvbkFjdGlv
bl5FeHRlbmReR2VuZXJhbGl6YXRpb25TZXReQ3JlYXRlTGlua0FjdGlvbl5E ZXBsb3ltZW50
VGFyZ2V0XkxpZmVsaW5lXkludGVycnVwdGlibGVBY3Rpdml0eVJlZ2lvbl5K b2luTm9kZV5J
bmZvcm1hdGlvbkl0ZW1eVHlwZWRFbGVtZW50XkNyZWF0ZUxpbmtPYmplY3RB Y3Rpb25eT2Jq
ZWN0Rmxvd15UZW1wbGF0ZUJpbmRpbmdeR2VuZXJhbE9yZGVyaW5nXlBhY2th Z2VeQ29ubmVj
dGFibGVFbGVtZW50VGVtcGxhdGVQYXJhbWV0ZXJeUmVhZFN0cnVjdHVyYWxG ZWF0dXJlQWN0
aW9uXlBhY2thZ2VNZXJnZV5SZWNlaXZlU2lnbmFsRXZlbnReSW5zdGFuY2VW YWx1ZV5Db250
aW51YXRpb25eSW50ZXJmYWNlXkV4ZWN1dGlvblNwZWNpZmljYXRpb25eUHJp bWl0aXZlVHlw
ZV5TdHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5Ccm9hZGNhc3RTaWduYWxBY3Rp b25eQ2FsbEFj
dGlvbl5JbnN0YW5jZVNwZWNpZmljYXRpb25eQ2xhdXNlXkZpbmFsTm9kZV5F eHRlbnNpb25F
bmReUXVhbGlmaWVyVmFsdWVeQWN0aXZpdHleUGluXkludGVyYWN0aW9uVXNl XkdhdGVeVmFs
dWVQaW5eQ2FsbE9wZXJhdGlvbkFjdGlvbl5JbnRlcmFjdGlvbkZyYWdtZW50 XlJlYWRTZWxm
QWN0aW9uXlJlY2VpdmVPcGVyYXRpb25FdmVudF5UaW1lT2JzZXJ2YXRpb25e RWxlbWVudFZh
bHVlXkNvbnRyb2xOb2RlXkNvbW11bmljYXRpb25QYXRoXlBvcnReRGVwbG95 bWVudFNwZWNp
ZmljYXRpb25eRGVzdHJ1Y3Rpb25FdmVudF5Qcm9maWxlQXBwbGljYXRpb25e UmVhZExpbmtP
YmplY3RFbmRRdWFsaWZpZXJBY3Rpb25eRGV2aWNlXldyaXRlTGlua0FjdGlv bl5EdXJhdGlv
bk9ic2VydmF0aW9uXkRlcGxveWVkQXJ0aWZhY3ReQWN0aXZpdHlFZGdlXkRl c3Ryb3lPYmpl
Y3RBY3Rpb25eUmVkZWZpbmFibGVFbGVtZW50XkNyZWF0aW9uRXZlbnReQWN0 aXZpdHlOb2Rl
XlJlcGx5QWN0aW9uXk5hbWVzcGFjZV5Bc3NvY2lhdGlvbl5Db25uZWN0b3JF bmReTWFuaWZl
c3RhdGlvbl5WYXJpYWJsZUFjdGlvbl5EdXJhdGlvbkludGVydmFsXlBzZXVk b3N0YXRlXkV4
cGFuc2lvbk5vZGVeU3RhcnRDbGFzc2lmaWVyQmVoYXZpb3JBY3Rpb25eQWN0 aXZpdHlQYXJh
bWV0ZXJOb2RlXlRpbWVDb25zdHJhaW50XkVsZW1lbnReRXhlY3V0aW9uRXZl bnReUmVhZExp
bmtPYmplY3RFbmRBY3Rpb24nLz4KCQkJCQkJCTxzZWxlY3RhYmxlVHlwZXMg eG1pOnZhbHVl
PSdQcm9wZXJ0eV5JbnRlcmFjdGlvbkNvbnN0cmFpbnReU2VuZE9iamVjdEFj dGlvbl5DbGFz
c15SZWxhdGlvbnNoaXBeU2VxdWVuY2VOb2RlXkxpdGVyYWxTcGVjaWZpY2F0 aW9uXlJlY2xh
c3NpZnlPYmplY3RBY3Rpb25eVGltZUV2ZW50XkNsZWFyVmFyaWFibGVBY3Rp b25eQmVoYXZp
b3JhbEZlYXR1cmVeRGF0YVN0b3JlTm9kZV5SZWdpb25eRmxvd0ZpbmFsTm9k ZV5SZWFsaXph
dGlvbl5SZW1vdmVTdHJ1Y3R1cmFsRmVhdHVyZVZhbHVlQWN0aW9uXkRpYWdy YW1eVW5tYXJz
aGFsbEFjdGlvbl5DbGVhclN0cnVjdHVyYWxGZWF0dXJlQWN0aW9uXkNvbmRp dGlvbmFsTm9k
ZV5Qcm90b2NvbFRyYW5zaXRpb25eQ29ubmVjdGlvblBvaW50UmVmZXJlbmNl XkZlYXR1cmVe
QXNzb2NpYXRpb25DbGFzc15BY3Rpb25FeGVjdXRpb25TcGVjaWZpY2F0aW9u XlJlYWRMaW5r
QWN0aW9uXlByb3RvY29sU3RhdGVNYWNoaW5lXkJlaGF2aW9yZWRDbGFzc2lm aWVyXkV4Y2Vw
dGlvbkhhbmRsZXJeQWN0aXZpdHlHcm91cF5UaW1lSW50ZXJ2YWxeRGVwbG95 bWVudF5WYXJp
YWJsZV5TdGF0ZUludmFyaWFudF5NZXNzYWdlXkxpdGVyYWxOdWxsXkxpbmtF bmREZXN0cnVj
dGlvbkRhdGFeT3V0cHV0UGluXlJlZHVjZUFjdGlvbl5SZWNlcHRpb25eVGVt cGxhdGVQYXJh
bWV0ZXJeQ29sbGFib3JhdGlvblVzZV5QYXJhbWV0ZXJTZXReQWRkVmFyaWFi bGVWYWx1ZUFj
dGlvbl5UZW1wbGF0ZVBhcmFtZXRlclN1YnN0aXR1dGlvbl5JbnRlcmFjdGlv bk9wZXJhbmRe
SW5wdXRQaW5eUmVkZWZpbmFibGVUZW1wbGF0ZVNpZ25hdHVyZV5TdGFydE9i amVjdEJlaGF2
aW9yQWN0aW9uXkxpdGVyYWxCb29sZWFuXlNlbmRTaWduYWxFdmVudF5PcGFx dWVFeHByZXNz
aW9uXlBhcmFtZXRlcl5TdHJ1Y3R1cmFsRmVhdHVyZV5SZWFkRXh0ZW50QWN0 aW9uXkluZm9y
bWF0aW9uRmxvd15EYXRhVHlwZV5FbnVtZXJhdGlvbkxpdGVyYWxeQ29tcG9u ZW50UmVhbGl6
YXRpb25eUGFja2FnZUltcG9ydF5MaW5rQWN0aW9uXkFic3RyYWN0aW9uXkNo YW5nZUV2ZW50
Xk5vZGVeTmFtZWRFbGVtZW50XkJlaGF2aW9yXlN0cnVjdHVyZWRDbGFzc2lm aWVyXkxpdGVy
YWxJbnRlZ2VyXkV4ZWN1dGlvbk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXkNv bnRyb2xGbG93
XkFjY2VwdEV2ZW50QWN0aW9uXlNpZ25hbEV2ZW50XkRlY2lzaW9uTm9kZV5E ZXBlbmRlbmN5
XkdlbmVyYWxpemF0aW9uXlBhcnREZWNvbXBvc2l0aW9uXkNvbWJpbmVkRnJh Z21lbnReVGVt
cGxhdGVTaWduYXR1cmVeQ2xhc3NpZmllcl5DZW50cmFsQnVmZmVyTm9kZV5P cGVyYXRpb25e
RmluYWxTdGF0ZV5JbnRlcmFjdGlvbl5JbnRlcnZhbF5TdGVyZW90eXBlXkR1 cmF0aW9uXkxp
bmtFbmREYXRhXk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXlN0cnVjdHVyZWRB Y3Rpdml0eU5v
ZGVeSW50ZXJ2YWxDb25zdHJhaW50XkluY2x1ZGVeRXhlY3V0YWJsZU5vZGVe T3BhcXVlQWN0
aW9uXkNvbGxhYm9yYXRpb25eQ2FsbEV2ZW50Xk9wZXJhdGlvblRlbXBsYXRl UGFyYW1ldGVy
XkluaXRpYWxOb2RlXkNvbXBvbmVudF5NZXNzYWdlRW5kXkZ1bmN0aW9uQmVo YXZpb3JeT2Jq
ZWN0Tm9kZV5DcmVhdGVPYmplY3RBY3Rpb25eVXNlQ2FzZV5NZXJnZU5vZGVe U2VuZE9wZXJh
dGlvbkV2ZW50XkltYWdlXkVudW1lcmF0aW9uXkNvbnN0cmFpbnReQWRkU3Ry dWN0dXJhbEZl
YXR1cmVWYWx1ZUFjdGlvbl5WZXJ0ZXheRWxlbWVudEltcG9ydF5EaXJlY3Rl ZFJlbGF0aW9u
c2hpcF5FeHByZXNzaW9uXkFjY2VwdENhbGxBY3Rpb25eV3JpdGVWYXJpYWJs ZUFjdGlvbl5N
ZXNzYWdlRXZlbnReSW50ZXJmYWNlUmVhbGl6YXRpb25eUmFpc2VFeGNlcHRp b25BY3Rpb25e
VGVtcGxhdGVhYmxlRWxlbWVudF5UcmlnZ2VyXlZhbHVlU3BlY2lmaWNhdGlv bkFjdGlvbl5D
b21tZW50XlJlbW92ZVZhcmlhYmxlVmFsdWVBY3Rpb25eQ2xhc3NpZmllclRl bXBsYXRlUGFy
YW1ldGVyXlNlbmRTaWduYWxBY3Rpb25eQ29ubmVjdG9yXkFjdG9yXkV4dGVu c2lvblBvaW50
XlBhcmFtZXRlcmFibGVFbGVtZW50Xkxvb3BOb2RlXkNhbGxCZWhhdmlvckFj dGlvbl5Db25u
ZWN0YWJsZUVsZW1lbnReU3RhdGVNYWNoaW5lXkV2ZW50XlRyYW5zaXRpb25e QmVoYXZpb3JF
eGVjdXRpb25TcGVjaWZpY2F0aW9uXlN0YXRlXlNsb3ReVmFsdWVTcGVjaWZp Y2F0aW9uXlVz
YWdlXkFjdGl2aXR5RmluYWxOb2RlXlRlc3RJZGVudGl0eUFjdGlvbl5PcGFx dWVCZWhhdmlv
cl5JbnZvY2F0aW9uQWN0aW9uXlByb2ZpbGVeTW9kZWxeRm9ya05vZGVeQWN0 aXZpdHlQYXJ0
aXRpb25eQ29uc2lkZXJJZ25vcmVGcmFnbWVudF5NZXNzYWdlT2NjdXJyZW5j ZVNwZWNpZmlj
YXRpb25eTGlua0VuZENyZWF0aW9uRGF0YV5UaW1lRXhwcmVzc2lvbl5BY3Rp b25JbnB1dFBp
bl5Qcm90b2NvbENvbmZvcm1hbmNlXkxpdGVyYWxTdHJpbmdeRGVzdHJveUxp bmtBY3Rpb25e
UmVhZElzQ2xhc3NpZmllZE9iamVjdEFjdGlvbl5UeXBlXkFjdGlvbl5FeGVj dXRpb25FbnZp
cm9ubWVudF5BcnRpZmFjdF5EdXJhdGlvbkNvbnN0cmFpbnReT2JzZXJ2YXRp b25eV3JpdGVT
dHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5SZWFkVmFyaWFibGVBY3Rpb25eRXhw YW5zaW9uUmVn
aW9uXlNpZ25hbF5BbnlSZWNlaXZlRXZlbnReRXh0ZW5zaW9uXk11bHRpcGxp Y2l0eUVsZW1l
bnReRW5jYXBzdWxhdGVkQ2xhc3NpZmllcl5MaXRlcmFsVW5saW1pdGVkTmF0 dXJhbF5TdHJp
bmdFeHByZXNzaW9uXlBhY2thZ2VhYmxlRWxlbWVudF5TdWJzdGl0dXRpb25e Q2xlYXJBc3Nv
Y2lhdGlvbkFjdGlvbl5FeHRlbmReR2VuZXJhbGl6YXRpb25TZXReQ3JlYXRl TGlua0FjdGlv
bl5EZXBsb3ltZW50VGFyZ2V0XkxpZmVsaW5lXkludGVycnVwdGlibGVBY3Rp dml0eVJlZ2lv
bl5Kb2luTm9kZV5JbmZvcm1hdGlvbkl0ZW1eVHlwZWRFbGVtZW50XkNyZWF0 ZUxpbmtPYmpl
Y3RBY3Rpb25eT2JqZWN0Rmxvd15UZW1wbGF0ZUJpbmRpbmdeR2VuZXJhbE9y ZGVyaW5nXlBh
Y2thZ2VeQ29ubmVjdGFibGVFbGVtZW50VGVtcGxhdGVQYXJhbWV0ZXJeUmVh ZFN0cnVjdHVy
YWxGZWF0dXJlQWN0aW9uXlBhY2thZ2VNZXJnZV5SZWNlaXZlU2lnbmFsRXZl bnReSW5zdGFu
Y2VWYWx1ZV5Db250aW51YXRpb25eSW50ZXJmYWNlXkV4ZWN1dGlvblNwZWNp ZmljYXRpb25e
UHJpbWl0aXZlVHlwZV5TdHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5Ccm9hZGNh c3RTaWduYWxB
Y3Rpb25eQ2FsbEFjdGlvbl5JbnN0YW5jZVNwZWNpZmljYXRpb25eQ2xhdXNl XkZpbmFsTm9k
ZV5FeHRlbnNpb25FbmReUXVhbGlmaWVyVmFsdWVeQWN0aXZpdHleUGluXklu dGVyYWN0aW9u
VXNlXkdhdGVeVmFsdWVQaW5eQ2FsbE9wZXJhdGlvbkFjdGlvbl5JbnRlcmFj dGlvbkZyYWdt
ZW50XlJlYWRTZWxmQWN0aW9uXlJlY2VpdmVPcGVyYXRpb25FdmVudF5UaW1l T2JzZXJ2YXRp
b25eRWxlbWVudFZhbHVlXkNvbnRyb2xOb2RlXkNvbW11bmljYXRpb25QYXRo XlBvcnReRGVw
bG95bWVudFNwZWNpZmljYXRpb25eRGVzdHJ1Y3Rpb25FdmVudF5Qcm9maWxl QXBwbGljYXRp
b25eUmVhZExpbmtPYmplY3RFbmRRdWFsaWZpZXJBY3Rpb25eRGV2aWNlXldy aXRlTGlua0Fj
dGlvbl5EdXJhdGlvbk9ic2VydmF0aW9uXkRlcGxveWVkQXJ0aWZhY3ReQWN0 aXZpdHlFZGdl
XkRlc3Ryb3lPYmplY3RBY3Rpb25eUmVkZWZpbmFibGVFbGVtZW50XkNyZWF0 aW9uRXZlbnRe
QWN0aXZpdHlOb2RlXlJlcGx5QWN0aW9uXk5hbWVzcGFjZV5Bc3NvY2lhdGlv bl5Db25uZWN0
b3JFbmReTWFuaWZlc3RhdGlvbl5WYXJpYWJsZUFjdGlvbl5EdXJhdGlvbklu dGVydmFsXlBz
ZXVkb3N0YXRlXkV4cGFuc2lvbk5vZGVeU3RhcnRDbGFzc2lmaWVyQmVoYXZp b3JBY3Rpb25e
QWN0aXZpdHlQYXJhbWV0ZXJOb2RlXlRpbWVDb25zdHJhaW50XkVsZW1lbnRe RXhlY3V0aW9u
RXZlbnReUmVhZExpbmtPYmplY3RFbmRBY3Rpb24nLz4KCQkJCQkJCTxjb250 YWlubWVudCB4
bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCTxvcmRlcmVkIHhtaTp2YWx1ZT0n ZmFsc2UnLz4K
CQkJCQkJCTx2YWx1ZT5lZWVfMTA0NTQ2NzEwMDMxM18xMzU0MzZfMTwvdmFs dWU+CgkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0n Qm9vbGVhblBy
b3BlcnR5Jz4KCQkJCQkJCTxwcm9wZXJ0eUlEPkFDVElWRV9WQUxJREFUSU9O X0VYQ0xVREVf
RUxFTUVOVFNfRlJPTV9SRUFET05MWV9NT0RVTEVTPC9wcm9wZXJ0eUlEPgoJ CQkJCQkJPHBy
b3BlcnR5R3JvdXA+QUNUSVZFX1ZBTElEQVRJT048L3Byb3BlcnR5R3JvdXA+ CgkJCQkJCQk8
dmFsdWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJ CQkJCQk8bWRF
bGVtZW50IGVsZW1lbnRDbGFzcz0nQm9vbGVhblByb3BlcnR5Jz4KCQkJCQkJ CTxwcm9wZXJ0
eUlEPkFDVElWRV9WQUxJREFUSU9OX01BUktfSU5fTU9ERUw8L3Byb3BlcnR5 SUQ+CgkJCQkJ
CQk8cHJvcGVydHlHcm91cD5BQ1RJVkVfVkFMSURBVElPTjwvcHJvcGVydHlH cm91cD4KCQkJ
CQkJCTx2YWx1ZSB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJPC9tZEVsZW1l bnQ+CgkJCQkJ
CTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdGaWxlUHJvcGVydHknPgoJCQkJ CQkJPHByb3Bl
cnR5SUQ+RU1GX1VNTDJfT1VUUFVUX0xPQ0FUSU9OPC9wcm9wZXJ0eUlEPgoJ CQkJCQkJPHBy
b3BlcnR5R3JvdXA+R2VuZXJhbDwvcHJvcGVydHlHcm91cD4KCQkJCQkJCTxw cm9wZXJ0eURl
c2NyaXB0aW9uSUQ+RU1GX1VNTDJfT1VUUFVUX0xPQ0FUSU9OX0RFU0NSSVBU SU9OPC9wcm9w
ZXJ0eURlc2NyaXB0aW9uSUQ+CgkJCQkJCQk8c2VsZWN0aW9uTW9kZSB4bWk6 dmFsdWU9JzEn
Lz4KCQkJCQkJCTxkaXNwbGF5RnVsbFBhdGggeG1pOnZhbHVlPSd0cnVlJy8+ CgkJCQkJCQk8
dXNlRmlsZVByZXZpZXdlciB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQk8 ZGlzcGxheUFs
bEZpbGVzIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQkJPGZpbGVUeXBlPkZJ TEVfVFlQRV9B
Tlk8L2ZpbGVUeXBlPgoJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJPG1kRWxl bWVudCBlbGVt
ZW50Q2xhc3M9J0VsZW1lbnRMaXN0UHJvcGVydHknPgoJCQkJCQkJPHByb3Bl cnR5SUQ+SUdO
T1JFRF9BQ1RJVkVfVkFMSURBVElPTl9TVUlURVM8L3Byb3BlcnR5SUQ+CgkJ CQkJCQk8cHJv
cGVydHlHcm91cD5BQ1RJVkVfVkFMSURBVElPTjwvcHJvcGVydHlHcm91cD4K CQkJCQkJCTxj
b250YWlubWVudCB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQk8b3JkZXJl ZCB4bWk6dmFs
dWU9J2ZhbHNlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVt ZW50IGVsZW1l
bnRDbGFzcz0nRWxlbWVudFByb3BlcnR5Jz4KCQkJCQkJCTxwcm9wZXJ0eUlE PkFDVElWRV9W
QUxJREFUSU9OX1NFVkVSSVRZPC9wcm9wZXJ0eUlEPgoJCQkJCQkJPHByb3Bl cnR5R3JvdXA+
QUNUSVZFX1ZBTElEQVRJT048L3Byb3BlcnR5R3JvdXA+CgkJCQkJCQk8dXNl VW5zcGVjaWZp
ZWQgeG1pOnZhbHVlPSdmYWxzZScvPgoJCQkJCQkJPGNvbnRhaW5tZW50IHht aTp2YWx1ZT0n
ZmFsc2UnLz4KCQkJCQkJCTx0eXBlRWxlbWVudCB4bWk6dmFsdWU9J2ZhbHNl Jy8+CgkJCQkJ
CQk8cGFyZW50QXBwbGljYW50IHhtaTp2YWx1ZT0nZmFsc2UnLz4KCQkJCQkJ CTx2YWx1ZT5f
MTFfNV9mNzIwMzY4XzExNTk1Mjk3ODk5MzNfNTY3NTY5XzEyMDwvdmFsdWU+ CgkJCQkJCTwv
bWRFbGVtZW50PgoJCQkJCTwvbWRFbGVtZW50PgoJCQkJCTxtZEVsZW1lbnQg ZWxlbWVudENs
YXNzPSdQcm9wZXJ0eU1hbmFnZXInPgoJCQkJCQk8bmFtZT5QUk9KRUNUX0lO VklTSUJMRV9Q
Uk9QRVJUSUVTPC9uYW1lPgoJCQkJCQk8cHJvcGVydHlNYW5hZ2VySUQ+XzE2 XzBfMV84OGUw
Mjc2XzEyNDU0MTgwMTI4MDJfODA1Mzk4XzU1NjwvcHJvcGVydHlNYW5hZ2Vy SUQ+CgkJCQkJ
CTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdOdW1iZXJQcm9wZXJ0eSc+CgkJ CQkJCQk8cHJv
cGVydHlJRD5UT09MX1RJUF9TVFlMRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxw cm9wZXJ0eURl
c2NyaXB0aW9uSUQ+VE9PTF9USVBfU1RZTEVfREVTQ1JJUFRJT048L3Byb3Bl cnR5RGVzY3Jp
cHRpb25JRD4KCQkJCQkJCTx2YWx1ZSB4bWk6dmFsdWU9JzAuMCcvPgoJCQkJ CQkJPGhpZ2hS
YW5nZSB4bWk6dmFsdWU9JzIuMCcvPgoJCQkJCQk8L21kRWxlbWVudD4KCQkJ CQkJPG1kRWxl
bWVudCBlbGVtZW50Q2xhc3M9J051bWJlclByb3BlcnR5Jz4KCQkJCQkJCTxw cm9wZXJ0eUlE
PkxBU1RfSU5URVJGQUNFX1NUWUxFPC9wcm9wZXJ0eUlEPgoJCQkJCQkJPHBy b3BlcnR5RGVz
Y3JpcHRpb25JRD5MQVNUX0lOVEVSRkFDRV9TVFlMRV9ERVNDUklQVElPTjwv cHJvcGVydHlE
ZXNjcmlwdGlvbklEPgoJCQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0nMi4wJy8+ CgkJCQkJCQk8
aGlnaFJhbmdlIHhtaTp2YWx1ZT0nMS4wJy8+CgkJCQkJCTwvbWRFbGVtZW50 PgoJCQkJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nQm9vbGVhblByb3BlcnR5Jz4KCQkJ CQkJCTxwcm9w
ZXJ0eUlEPklTX0JST1dTRVJfVklTSUJMRTwvcHJvcGVydHlJRD4KCQkJCQkJ CTxwcm9wZXJ0
eURlc2NyaXB0aW9uSUQ+SVNfQlJPV1NFUl9WSVNJQkxFX0RFU0NSSVBUSU9O PC9wcm9wZXJ0
eURlc2NyaXB0aW9uSUQ+CgkJCQkJCQk8dmFsdWUgeG1pOnZhbHVlPSd0cnVl Jy8+CgkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0n Q2hvaWNlUHJv
cGVydHknPgoJCQkJCQkJPHByb3BlcnR5SUQ+QlJPV1NFUl9JVEVNX1RZUEVT PC9wcm9wZXJ0
eUlEPgoJCQkJCQkJPHByb3BlcnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0lU RU1fVFlQRVNf
REVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2 YWx1ZT48L3Zh
bHVlPgoJCQkJCQkJPGNob2ljZSB4bWk6dmFsdWU9J0xpdGVyYWxTdHJpbmde TGl0ZXJhbEJv
b2xlYW5eTGl0ZXJhbE51bGxeTGl0ZXJhbEludGVnZXJeTGl0ZXJhbFVubGlt aXRlZE5hdHVy
YWxeRXhwcmVzc2lvbl5PcGFxdWVFeHByZXNzaW9uXkluc3RhbmNlVmFsdWVe U3RyaW5nRXhw
cmVzc2lvbl5FbGVtZW50VmFsdWVeRHVyYXRpb25eRHVyYXRpb25JbnRlcnZh bF5UaW1lSW50
ZXJ2YWxeVGltZUV4cHJlc3Npb25eTWVzc2FnZU9jY3VycmVuY2VTcGVjaWZp Y2F0aW9uXkdh
dGVeSW1hZ2UnLz4KCQkJCQkJCTxpbmRleCB4bWk6dmFsdWU9Jy0xJy8+CgkJ CQkJCTwvbWRF
bGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nTnVtYmVy UHJvcGVydHkn
PgoJCQkJCQkJPHByb3BlcnR5SUQ+QlJPV1NFUl9ESVZJREVSX0xPQ0FUSU9O PC9wcm9wZXJ0
eUlEPgoJCQkJCQkJPHByb3BlcnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0RJ VklERVJfTE9D
QVRJT05fREVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJ CQkJCTx2YWx1
ZSB4bWk6dmFsdWU9Jy0xLjAnLz4KCQkJCQkJCTxsb3dSYW5nZSB4bWk6dmFs dWU9Jy0xLjAn
Lz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1lbnQgZWxlbWVu dENsYXNzPSdD
aG9pY2VQcm9wZXJ0eSc+CgkJCQkJCQk8cHJvcGVydHlJRD5CUk9XU0VSX0JP VU5EUzwvcHJv
cGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURlc2NyaXB0aW9uSUQ+QlJPV1NF Ul9CT1VORFNf
REVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2 YWx1ZT48L3Zh
bHVlPgoJCQkJCQkJPGNob2ljZSB4bWk6dmFsdWU9JycvPgoJCQkJCQkJPGlu ZGV4IHhtaTp2
YWx1ZT0nLTEnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1l bnQgZWxlbWVu
dENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJCQkJPHByb3BlcnR5SUQ+ SVNfRE9DU19U
QUJfVklTSUJMRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURlc2Ny aXB0aW9uSUQ+
SVNfRE9DU19UQUJfVklTSUJMRV9ERVNDUklQVElPTjwvcHJvcGVydHlEZXNj cmlwdGlvbklE
PgoJCQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1N0cmluZ1Byb3BlcnR5 Jz4KCQkJCQkJ
CTxwcm9wZXJ0eUlEPkJST1dTRVJfTEFZT1VUPC9wcm9wZXJ0eUlEPgoJCQkJ CQkJPHByb3Bl
cnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0xBWU9VVF9ERVNDUklQVElPTjwv cHJvcGVydHlE
ZXNjcmlwdGlvbklEPgoJCQkJCQkJPHZhbHVlPjAgMTQgMCAwIDAgMCAwIDAg MCAwIDAgMCA0
IDAgMCAwIDMgMCAwIDAgMCAwIDAgMCAwIDggMCAwIDAgZCAwIDQ0IDAgNGYg MCA0MyAwIDU1
IDAgNGQgMCA0NSAwIDRlIDAgNTQgMCA0MSAwIDU0IDAgNDkgMCA0ZiAwIDRl IDAgMCA1OSBh
MCAwIDAgMCA4IDAgMCAwIDEgMCAwIDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAw IDAgNCAwIDAg
MCA4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZm IGZmIGZmIGZm
IGZmIGZmIGZmIDAgMCAxIDJjIDAgMCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAw IDAgMCA0IDAg
MCA1OSBhMCAwIDAgMCAyIDAgMCAwIDAgMCAwIDAgMCAwIDAgNyA3ZSAwIDAg MyBmYSAwIDAg
MCA4IDAgMCAwIDAgMCAwIGQ2IDk3IDAgMCAwIDMgMCAwIDgxIGFiIDAgMCA1 OSBhMCAwIDAg
NWYgNzIgMCAwIDAgMiAwIDAgMTMgZjYgMCAwIGQ2IDk3IDAgMCAwIDAgMCAw IDAgMiAwIDAg
ZDMgYTUgMCAwIGQ2IDk3IDAgMCBiYSBlNCAwIDAgMTMgZjYgMCAwIDAgMSAw IDAgMCAyIDAg
MCAxMyBmNiAwIDAgMjAgNzkgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgZCAwIDQ0
IDAgNDkgMCA0MSAwIDQ3IDAgNTIgMCA0MSAwIDRkIDAgNTMgMCA1ZiAwIDU0 IDAgNTIgMCA0
NSAwIDQ1IDAgMCAyOSBiNyAwIDAgMCA4IDAgMCAwIDAgMCAwIDAgMSAwIDAg MCBmIDAgMCAw
IDQgMCAwIDAgNCAwIDAgMCA4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4 IDAgMCAwIGM4
IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIDAgMCAxIDJjIDAgMCAwIGM4IDAg MCAwIDAgMCAw
IDAgMSAwIDAgMCA0IDAgMCAyOSBiNyAwIDAgMCAyIDAgMCAwIDAgMCAwIDAg MCAwIDAgNyA3
ZSAwIDAgMyBmYSAwIDAgMCA4IDAgMCAwIDAgMCAwIGQzIGE1IDAgMCAwIDQg MCAwIGMgZTkg
MCAwIGQgNmUgMCAwIDI5IGI3IDAgMCA5ZSBjYSAwIDAgMCAyIDAgMCAxMyBm NiAwIDAgZDMg
YTUgMCAwIDAgMCAwIDAgMCAyIDAgMCBkMyBhNSAwIDAgZDYgOTcgMCAwIGJh IGU0IDAgMCAx
MyBmNiAwIDAgMCAxIDAgMCAwIDIgMCAwIDEzIGY2IDAgMCAyMCA3OSAwIDAg MCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCBjIDAgNWEgMCA0ZiAwIDRmIDAgNGQgMCA1ZiAw IDQzIDAgNGYg
MCA0ZSAwIDU0IDAgNTIgMCA0ZiAwIDRjIDAgMCA4MSBhYiAwIDAgMCA4IDAg MCAwIDEgMCAw
IDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAwIDAgNCAwIDAgMCA4IDAgMCAwIGM4 IDAgMCAwIGM4
IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIDAg MCAxIDJjIDAg
MCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAwIDAgMCA0IDAgMCA4MSBhYiAwIDAg MCAyIDAgMCAw
IDAgMCAwIDAgMCAwIDAgNyA3ZSAwIDAgMyBmYSAwIDAgMCA4IDAgMCAwIDAg MCAwIGQ2IDk3
IDAgMCAwIDMgMCAwIDgxIGFiIDAgMCA1OSBhMCAwIDAgNWYgNzIgMCAwIDAg MiAwIDAgMTMg
ZjYgMCAwIGQ2IDk3IDAgMCAwIDAgMCAwIDAgMiAwIDAgZDMgYTUgMCAwIGQ2 IDk3IDAgMCBi
YSBlNCAwIDAgMTMgZjYgMCAwIDAgMSAwIDAgMCAyIDAgMCAxMyBmNiAwIDAg MjAgNzkgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgZiAwIDQ1IDAgNTggMCA1NCAw IDQ1IDAgNGUg
MCA1MyAwIDQ5IDAgNGYgMCA0ZSAwIDUzIDAgNWYgMCA1NCAwIDUyIDAgNDUg MCA0NSAwIDAg
OWUgY2EgMCAwIDAgOCAwIDAgMCAwIDAgMCAwIDEgMCAwIDAgZiAwIDAgMCA0 IDAgMCAwIDQg
MCAwIDAgOCAwIDAgMCBjOCAwIDAgMCBjOCAwIDAgMCBjOCAwIDAgMCBjOCBm ZiBmZiBmZiBm
ZiBmZiBmZiBmZiBmZiAwIDAgMSAyYyAwIDAgMCBjOCAwIDAgMCAwIDAgMCAw IDEgMCAwIDAg
NCAwIDAgOWUgY2EgMCAwIDAgMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDcgN2Ug MCAwIDMgZmEg
MCAwIDAgOCAwIDAgMCAwIDAgMCBkMyBhNSAwIDAgMCA0IDAgMCBjIGU5IDAg MCBkIDZlIDAg
MCAyOSBiNyAwIDAgOWUgY2EgMCAwIDAgMiAwIDAgMTMgZjYgMCAwIGQzIGE1 IDAgMCAwIDAg
MCAwIDAgMiAwIDAgZDMgYTUgMCAwIGQ2IDk3IDAgMCBiYSBlNCAwIDAgMTMg ZjYgMCAwIDAg
MSAwIDAgMCAyIDAgMCAxMyBmNiAwIDAgMjAgNzkgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAg
MCAwIDAgMTAgMCA0OSAwIDRlIDAgNDggMCA0NSAwIDUyIDAgNDkgMCA1NCAw IDQxIDAgNGUg
MCA0MyAwIDQ1IDAgNWYgMCA1NCAwIDUyIDAgNDUgMCA0NSAwIDAgZCA2ZSAw IDAgMCA4IDAg
MCAwIDAgMCAwIDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAwIDAgNCAwIDAgMCA4 IDAgMCAwIGM4
IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZmIGZmIGZmIGZmIGZm IGZmIGZmIDAg
MCAxIDJjIDAgMCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAwIDAgMCA0IDAgMCBk IDZlIDAgMCAw
IDIgMCAwIDAgMCAwIDAgMCAwIDAgMCA3IDdlIDAgMCAzIGZhIDAgMCAwIDgg MCAwIDAgMCAw
IDAgZDMgYTUgMCAwIDAgNCAwIDAgYyBlOSAwIDAgZCA2ZSAwIDAgMjkgYjcg MCAwIDllIGNh
IDAgMCAwIDIgMCAwIDEzIGY2IDAgMCBkMyBhNSAwIDAgMCAwIDAgMCAwIDIg MCAwIGQzIGE1
IDAgMCBkNiA5NyAwIDAgYmEgZTQgMCAwIDEzIGY2IDAgMCAwIDEgMCAwIDAg MiAwIDAgMTMg
ZjYgMCAwIDIwIDc5IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIGYg MCA0ZCAwIDQ1
IDAgNTMgMCA1MyAwIDQxIDAgNDcgMCA0NSAwIDUzIDAgNW
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #476561 is a reply to message #476559] Wed, 24 June 2009 18:22 Go to previous message
Kenn Hussey is currently offline Kenn HusseyFriend
Messages: 1620
Registered: July 2009
Senior Member
Dawid,

There is no default registration mapping the '2.1.2' version of the
"official" metamodel (there in fact was no such version) to the Eclipse
UML metamodel. You have two choices here - change the URI in the
document to use '2.1.1' or '2.2' as the version instead or register the
UML package against this URI.

The editor is opening the document, but I suspect many of the elements
are still being instantiated as generic AnyType elements...

Kenn

Dawid Loubser wrote:
> Hi James,
>
> Thank you for your tip, we are getting closer, but it still not working.
> Using the UMLResource.Factory.INSTANCE resource factory, my XMI-based
> UML model loads, but everything inside it are instances of
> org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl - i.e. the file is
> parsed as XML only. I am not getting any UML types.
>
> Would you please take a look at my attached test program (runs as a
> JUnit test) and tell me where I am going wrong?? I also tried using
> either the XMIResourceFactoryImpl, or literally the
> UML212ResourceFactoryImpl, but each fails for their own reasons.
>
> Still, the same .uml test model loads by double-clicking it in Eclipse.
>
> Please people - anybody... Surely somebody must spot what I am doing
> wrong in my test program? Why is this so difficult? I simply need to
> load the attached UML model as-is using the attached test program.
>
> kind regards,
> Dawid
>
>
>
> James Bruck het geskryf:
>> Hi Dawid,
>>
>> Your code does a
>> model = resourceSet.createResource(testModelURI);
>>
>> Which I believe doesn't actually load the resource.
>>
>> Try:
>>
>> resourceSet.getResource(resourceURI, true);
>>
>> If that fails, try looking at this
>> http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html
>>
>>
>> for a more complete example ( scroll toward the bottom ).
>>
>> Cheers,
>>
>> - James.
>>
Re: Reading UML Profile Elements in Java [message #623489 is a reply to message #476286] Fri, 16 January 2009 12:52 Go to previous message
Peter Mising name is currently offline Peter Mising nameFriend
Messages: 95
Registered: July 2009
Member
> Can you please guide me how to read UML model
> using Java code?

This is how you get the root Package.

import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.emf.ecore.util.EcoreUtil;

protected org.eclipse.uml2.uml.Package load(URI uri) {
org.eclipse.uml2.uml.Package package_ = null;

try {
ResourceSetImpl RESOURCE_SET = new ResourceSetImpl();;
Resource resource = RESOURCE_SET.getResource(uri, true);

package_ = (org.eclipse.uml2.uml.Package) EcoreUtil
.getObjectByType(resource.getContents(),
UMLPackage.Literals.PACKAGE);
} catch (WrappedException we) {
we.printStackTrace();
System.exit(1);
}

return package_;
}

Peter
Re: Reading UML Profile Elements in Java [message #623490 is a reply to message #476286] Sat, 17 January 2009 03:25 Go to previous message
Rafael Chaves is currently offline Rafael ChavesFriend
Messages: 362
Registered: July 2009
Senior Member
This is really a question more appropriate for the UML2 newsgroup (which
I CC'd).

See the following UML2 articles for information on how to manipulate
UML2 UML models programmatically:

http://wiki.eclipse.org/MDT-UML2#Articles

HTH,

Rafael Chaves
http://abstratt.com/blog/

Waqas wrote:
> Hi,
>
> I have created a UML model in the Component-Connector view. For the
> purpose of my project, I plan to list individual UML elements of this
> model on a new window. Can you please guide me how to read UML model
> using Java code?
> Thanks
> Waqas
>
Re: Reading UML Profile Elements in Java [message #623494 is a reply to message #476287] Mon, 19 January 2009 17:15 Go to previous message
Waqas is currently offline WaqasFriend
Messages: 32
Registered: July 2009
Member
Thanks Peter. But this code is not compiling and following errors are
generated while compiling the code:

URI (error: URI cannot be resolved to a type)
UMLPackage (error: UMLPackage cannot be resolved)
WrappedException (error: WrappedException cannot be resolved to a type)

Thanks
Waqas
Re: Reading UML Profile Elements in Java [message #623495 is a reply to message #476288] Mon, 19 January 2009 17:24 Go to previous message
Waqas is currently offline WaqasFriend
Messages: 32
Registered: July 2009
Member
Thanks Rafael. The tutorials you have referred are for creating new UML
projects/models. I have created a project using these steps (although not
using Java code). Now i want to read the UML elements from this
model/project to display their names on a Java GUI. I am posting this
problem here because i have created the project in UML2tool's component
diagram.

/Waqas
Re: Reading UML Profile Elements in Java [message #623496 is a reply to message #476292] Mon, 19 January 2009 23:12 Go to previous message
Peter Mising name is currently offline Peter Mising nameFriend
Messages: 95
Registered: July 2009
Member
Hi Waqas,
I think this is not the right newsgroup for this kind of questions but
you must import the corresponding classes.

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.common.util.WrappedException;
import org.eclipse.uml2.uml.UMLPackage;

Peter

> Thanks Peter. But this code is not compiling and following errors are
> generated while compiling the code:
> URI (error: URI cannot be resolved to a type)
> UMLPackage (error: UMLPackage cannot be resolved)
> WrappedException (error: WrappedException cannot be resolved to a type)
>
> Thanks
> Waqas
>
>
Re: Reading UML Profile Elements in Java [message #623519 is a reply to message #476293] Tue, 20 January 2009 06:09 Go to previous message
Rafael Chaves is currently offline Rafael ChavesFriend
Messages: 362
Registered: July 2009
Senior Member
Regardless how you create a UML2-based model (using UML2 Tools, Papyrus,
the EMF generated editor), you are going to read it the same way, i.e.
using EMF and UML2 API. So your question is indeed a MDT UML2 question.

The UML2 metamodel implementation works much like any other EMF-based
metamodel implementation. The way you load an EMF-based model into
memory is something like this:

URI modelURI = URI.createURI("uri/to/your/model.uml");

ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(modelURI);

Once loaded into memory, you can, for instance, traverse through all
named elements in the model using the following code:

for (
TreeIterator<EObject> i = resource.getAllContents();
i .hasNext();
) {
EObject current = i.next();
if (!(current instanceof NamedElement))
i.prune();
NamedElement asNamed = (NamedElement) current;
System.out.println(asNamed.getQualifiedName()
+ " : " + asNamed.eClass().getName());
}

Other than the assumption that model elements are UML NamedElements, the
code above is pretty much based on pure EMF API. Once you get to UML2
specific model elements, then you can extract whatever UML-specific
information you need. See the following Javadoc:

http://tinyurl.com/8wqerd

HTH,

Rafael Chaves
http://abstratt.com/blog/

Waqas wrote:
> Thanks Rafael. The tutorials you have referred are for creating new UML
> projects/models. I have created a project using these steps (although
> not using Java code). Now i want to read the UML elements from this
> model/project to display their names on a Java GUI. I am posting this
> problem here because i have created the project in UML2tool's component
> diagram.
>
> /Waqas
>
Re: Reading UML Profile Elements in Java [message #624298 is a reply to message #476296] Thu, 18 June 2009 07:53 Go to previous message
Eclipse UserFriend
Rafael Chaves wrote:

> Regardless how you create a UML2-based model (using UML2 Tools, Papyrus,
> the EMF generated editor), you are going to read it the same way, i.e.
> using EMF and UML2 API. So your question is indeed a MDT UML2 question.

> The UML2 metamodel implementation works much like any other EMF-based
> metamodel implementation. The way you load an EMF-based model into
> memory is something like this:

> URI modelURI = URI.createURI("uri/to/your/model.uml");

> ResourceSet resourceSet = new ResourceSetImpl();
> Resource resource = resourceSet.createResource(modelURI);

> Once loaded into memory, you can, for instance, traverse through all
> named elements in the model using the following code:

> for (
> TreeIterator<EObject> i = resource.getAllContents();
> i .hasNext();
> ) {
> EObject current = i.next();
> if (!(current instanceof NamedElement))
> i.prune();
> NamedElement asNamed = (NamedElement) current;
> System.out.println(asNamed.getQualifiedName()
> + " : " + asNamed.eClass().getName());
> }

> Other than the assumption that model elements are UML NamedElements, the
> code above is pretty much based on pure EMF API. Once you get to UML2
> specific model elements, then you can extract whatever UML-specific
> information you need. See the following Javadoc:

> http://tinyurl.com/8wqerd

> HTH,

> Rafael Chaves
> http://abstratt.com/blog/

> Waqas wrote:
>> Thanks Rafael. The tutorials you have referred are for creating new UML
>> projects/models. I have created a project using these steps (although
>> not using Java code). Now i want to read the UML elements from this
>> model/project to display their names on a Java GUI. I am posting this
>> problem here because i have created the project in UML2tool's component
>> diagram.
>>
>> /Waqas
>>
Hi,
I tried to use the code you have proposed to load an uml model but the set
ResourceSet stay empty: I have an error at resource.getAllContents() and
just before, when I display the size of resourceSet I obtain 0. The
organisation of my documents is here under:
Mon dossier:
-src
-defaultPackage
-reader
- essais.uml

I give you my code:


public class reader {
public static void main(String[] args) {
URI fichier = URI.createURI("essais.uml");
load(fichier);
}

protected static void load(org.eclipse.emf.common.util.URI uri) {
//Package package_ = null;
ResourceSet resourceSet = new ResourceSetImpl();
Resource resource = resourceSet.createResource(uri);
System.out.println(resourceSet.getResources().size());
for (
TreeIterator<EObject> i = resource.getAllContents();
i .hasNext();
) {
EObject current = i.next();
if (!(current instanceof NamedElement))
i.prune();
NamedElement asNamed = (NamedElement) current;
System.out.println(asNamed.getQualifiedName()
+ " : " + asNamed.eClass().getName());
}

}
}

Thanks for the help you could give me
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #624303 is a reply to message #476547] Fri, 19 June 2009 14:28 Go to previous message
Dawid Loubser is currently offline Dawid LoubserFriend
Messages: 23
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------070104020903080709030200
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi guenin,

I have exactly the same problem that you have. When, in the Eclipse GUI
(running all new RC5 versions of the EMF and UML plugins) I open my .uml
file, it opens fine, btu I have been having a hard time opening it in a
stand-alone application.

My model also loads without complaint or warning via the resource set,
but there is nothing in the model (size = 0). In addition to code
similar to yours, I am also following the instructions on the wiki at
this page:

http://wiki.eclipse.org/MDT/UML2/FAQ#What.27s_required_to_lo ad_a_UML_.28.uml.29_resource_from_a_standalone_application.3 F

My code (running in the form of a JUnit test) looks as follows - can
anybdy here say why my model loads in Eclipse GUI, but not in my
stand-alone app? I have all the required libraries on the path (RC5
versions of EMF and UML2 JARs).


(see attachment for ModelLoadTest.java)

Just to summarise, there are no errors or warning, the instance of
UMLResourceImpl I get back is just empty.


guenin het geskryf:

> Hi,
> I tried to use the code you have proposed to load an uml model but the
> set ResourceSet stay empty: I have an error at resource.getAllContents()
> and just before, when I display the size of resourceSet I obtain 0. The
> organisation of my documents is here under:
> Mon dossier:
> -src
> -defaultPackage
> -reader
> - essais.uml
>
> I give you my code:
>
>
> public class reader {
> public static void main(String[] args) {
> URI fichier = URI.createURI("essais.uml");
> load(fichier);
> }
>
> protected static void load(org.eclipse.emf.common.util.URI uri) {
> //Package package_ = null;
> ResourceSet resourceSet = new ResourceSetImpl();
> Resource resource = resourceSet.createResource(uri);
> System.out.println(resourceSet.getResources().size());
> for (
> TreeIterator<EObject> i = resource.getAllContents();
> i .hasNext();
> ) {
> EObject current = i.next();
> if (!(current instanceof NamedElement))
> i.prune();
> NamedElement asNamed = (NamedElement) current;
> System.out.println(asNamed.getQualifiedName()
> + " : " + asNamed.eClass().getName());
> }
> }
> }
>
> Thanks for the help you could give me
>
>


--------------070104020903080709030200
Content-Type: text/plain;
name="ModelLoadTest.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ModelLoadTest.java"

cGFja2FnZSB6YS5jby5zb2xtcy5tZGRleHBlcmltZW50cy50ZXN0czsKCmlt cG9ydCBqYXZh
Lm5ldC5VUkw7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51 dGlsLmxvZ2dp
bmcuTG9nZ2VyOwppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGls LlRyZWVJdGVy
YXRvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7 CmltcG9ydCBv
cmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKaW1wb3J0IG9yZy5lY2xp cHNlLmVtZi5l
Y29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi5lY29yZS5y
ZXNvdXJjZS5SZXNvdXJjZVNldDsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5l Y29yZS5yZXNv
dXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LnVtbDIudW1s
LlVNTFBhY2thZ2U7CmltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5yZXNv dXJjZS5VTUxS
ZXNvdXJjZTsKaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CmltcG9ydCBvcmcu anVuaXQuVGVz
dDsKCnB1YmxpYyBjbGFzcyBNb2RlbExvYWRUZXN0IAp7CiAgLyoqIEJlZm9y ZSBydW5uaW5n
IGFueSB0ZXN0cyBpbiB0aGlzIHN1aXRlLCBzZXQgdXAgdGhlIG1vZGVsICov CiAgQEJlZm9y
ZQogIHB1YmxpYyB2b2lkIGxvYWRNb2RlbCgpIHRocm93cyBFeGNlcHRpb24g CiAgewogICAg
Ly8gR2V0IG1vZGVsIGZyb20gdGhlIGNsYXNzIGxvYWRlcgogICAgVVJMIHRl c3RNb2RlbFVS
TCA9IGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKS5nZXRSZXNvdXJjZSgK ICAgICAgICAi
bW9kZWxzL3Rlc3RNb2RlbC51bWwiKTsKICAgIC8vIENvbnN0cnVjdCBhIFVS SSB1c2luZyBF
TUYncyBvd24gVVJJIGZyYW1ld29yawogICAgVVJJIHRlc3RNb2RlbFVSSSA9 IFVSSS5jcmVh
dGVVUkkodGVzdE1vZGVsVVJMLnRvRXh0ZXJuYWxGb3JtKCkpOwoKICAgIGxv Z2dlci5pbmZv
KCJMb2FkaW5nIG1vZGVsIGZyb206ICIgKyB0ZXN0TW9kZWxVUkkpOwogICAg UmVzb3VyY2VT
ZXQgcmVzb3VyY2VTZXQgPSBuZXcgUmVzb3VyY2VTZXRJbXBsKCk7CgogICAg Ly8gUGx1ZyBp
biBVTUwgbW9kZWwgbG9hZGVyIChwYWNrYWdlIGFuZCBmaWxlIGV4dGVuc2lv biByZWNvZ25p
dGlvbikKICAgIHJlc291cmNlU2V0LmdldFBhY2thZ2VSZWdpc3RyeSgpLnB1 dChVTUxQYWNr
YWdlLmVOU19VUkksCiAgICAgICAgVU1MUGFja2FnZS5lSU5TVEFOQ0UpOwog ICAgcmVzb3Vy
Y2VTZXQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRlbnNp b25Ub0ZhY3Rv
cnlNYXAoKS5wdXQoCiAgICAgICAgVU1MUmVzb3VyY2UuRklMRV9FWFRFTlNJ T04sIFVNTFJl
c291cmNlLkZhY3RvcnkuSU5TVEFOQ0UpOwoKICAgIC8vIFBsdWcgaW4gcGF0 aCBtYXBzIGFz
IHBlciB3aWtpIHN0YW5kLWFsb25lIGluc3RydWN0aW9ucwogICAgTWFwPFVS SSwgVVJJPiB1
cmlNYXAgPSByZXNvdXJjZVNldC5nZXRVUklDb252ZXJ0ZXIoKS5nZXRVUklN YXAoKTsKICAg
IC8vIE5vdGU6IEJhZCBpZGVhIHRvIHJlZmVyIHRvIEpBUiBmaWxlIGxpdGVy YWxseSwgYnV0
IHdlIGh1bW91ciB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBub3cKICAgIFVSSSB1 cmkgPSBVUkku
Y3JlYXRlVVJJKCJqYXI6ZmlsZTovVXNlcnMvZGF3aWRsL0Rlc2t0b3AvZW1m VGVzdFByb2pl
Y3QvcmVzb3VyY2VzL3J1bnRpbWUvdW1sMi0zLjAuMC1yYzUvb3JnLmVjbGlw c2UudW1sMi51
bWwucmVzb3VyY2VzXzMuMC4wLnYyMDA5MDYwMTExMTEuamFyIS8iKTsKICAg IHVyaU1hcC5w
dXQoVVJJLmNyZWF0ZVVSSShVTUxSZXNvdXJjZS5MSUJSQVJJRVNfUEFUSE1B UCksIHVyaS5h
cHBlbmRTZWdtZW50KCJsaWJyYXJpZXMiKS5hcHBlbmRTZWdtZW50KCIiKSk7 CiAgICB1cmlN
YXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuTUVUQU1PREVMU19Q QVRITUFQKSwg
dXJpLmFwcGVuZFNlZ21lbnQoIm1ldGFtb2RlbHMiKS5hcHBlbmRTZWdtZW50 KCIiKSk7CiAg
ICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuUFJPRklM RVNfUEFUSE1B
UCksIHVyaS5hcHBlbmRTZWdtZW50KCJwcm9maWxlcyIpLmFwcGVuZFNlZ21l bnQoIiIpKTsK
CiAgICAvLyBMb2FkIG1vZGVsCiAgICBtb2RlbCA9IHJlc291cmNlU2V0LmNy ZWF0ZVJlc291
cmNlKHRlc3RNb2RlbFVSSSk7CiAgICBsb2dnZXIuaW5mbygiTW9kZWwgbG9h ZGVkOiAiICsg
bW9kZWwpOwoKICAgIC8vIEFueSBwcm9ibGVtcz8KICAgIGlmIChtb2RlbC5n ZXRFcnJvcnMo
KS5zaXplKCkgPiAwKSAKICAgIHsKICAgICAgbG9nZ2VyLnNldmVyZShtb2Rl bC5nZXRFcnJv
cnMoKS50b1N0cmluZygpKTsKICAgIH0KICAgIGlmIChtb2RlbC5nZXRXYXJu aW5ncygpLnNp
emUoKSA+IDApIAogICAgewogICAgICBsb2dnZXIuc2V2ZXJlKG1vZGVsLmdl dFdhcm5pbmdz
KCkudG9TdHJpbmcoKSk7CiAgICB9CiAgfQoKICBAVGVzdAogIHB1YmxpYyB2 b2lkIHRlc3RU
cmF2ZXJzZU1vZGVsV2l0aEphdmEoKSB0aHJvd3MgRXhjZXB0aW9uIAogIHsK ICAgIC8vIFVz
aW5nIHRoZSBKYXZhIEFQSSwgaW5zcGVjdCBhbGwgdGhlIHN0dWZmIGluIHRo ZSBtb2RlbAog
ICAgbG9nZ2VyLmluZm8oIkl0ZXJhdGluZyBvdmVyIGFsbCBtb2RlbCBlbGVt ZW50cyIpOwog
ICAgZm9yIChUcmVlSXRlcmF0b3I8RU9iamVjdD4gc3R1ZmZJbk1vZGVsID0g bW9kZWwuZ2V0
QWxsQ29udGVudHMoKTsgc3R1ZmZJbk1vZGVsCiAgICAgICAgLmhhc05leHQo KTspIHsKICAg
ICAgLy8gVEhJUyBORVZFUiBSVU5TLCBNT0RFTCBJUyBFTVBUWQogICAgICBF T2JqZWN0IGVP
YmplY3QgPSBzdHVmZkluTW9kZWwubmV4dCgpOwoKICAgICAgLy8gRG8gc3R1 ZmYgd2l0aCBl
T2JqZWN0CiAgICAgIC8vIC4uLgogICAgfQoKICB9CgogIHByaXZhdGUgUmVz b3VyY2UgbW9k
ZWw7CiAgcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlci5n ZXRMb2dnZXIo
ImxvZ2dlciIpOwp9
--------------070104020903080709030200--
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #624496 is a reply to message #476552] Mon, 22 June 2009 20:27 Go to previous message
james bruck is currently offline james bruckFriend
Messages: 1724
Registered: July 2009
Senior Member
Hi Dawid,

Your code does a
model = resourceSet.createResource(testModelURI);

Which I believe doesn't actually load the resource.

Try:

resourceSet.getResource(resourceURI, true);

If that fails, try looking at this
http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html

for a more complete example ( scroll toward the bottom ).

Cheers,

- James.

"Dawid Loubser" <dawidl@solms.co.za> wrote in message
news:h1g7as$b5i$1@build.eclipse.org...
> Hi guenin,
>
> I have exactly the same problem that you have. When, in the Eclipse GUI
> (running all new RC5 versions of the EMF and UML plugins) I open my .uml
> file, it opens fine, btu I have been having a hard time opening it in a
> stand-alone application.
>
> My model also loads without complaint or warning via the resource set,
> but there is nothing in the model (size = 0). In addition to code
> similar to yours, I am also following the instructions on the wiki at
> this page:
>
> http://wiki.eclipse.org/MDT/UML2/FAQ#What.27s_required_to_lo ad_a_UML_.28.uml.29_resource_from_a_standalone_application.3 F
>
> My code (running in the form of a JUnit test) looks as follows - can
> anybdy here say why my model loads in Eclipse GUI, but not in my
> stand-alone app? I have all the required libraries on the path (RC5
> versions of EMF and UML2 JARs).
>
>
> (see attachment for ModelLoadTest.java)
>
> Just to summarise, there are no errors or warning, the instance of
> UMLResourceImpl I get back is just empty.
>
>
> guenin het geskryf:
>
>> Hi,
>> I tried to use the code you have proposed to load an uml model but the
>> set ResourceSet stay empty: I have an error at resource.getAllContents()
>> and just before, when I display the size of resourceSet I obtain 0. The
>> organisation of my documents is here under:
>> Mon dossier:
>> -src
>> -defaultPackage
>> -reader
>> - essais.uml
>>
>> I give you my code:
>>
>>
>> public class reader {
>> public static void main(String[] args) {
>> URI fichier = URI.createURI("essais.uml");
>> load(fichier);
>> }
>>
>> protected static void load(org.eclipse.emf.common.util.URI uri) {
>> //Package package_ = null;
>> ResourceSet resourceSet = new ResourceSetImpl();
>> Resource resource = resourceSet.createResource(uri);
>> System.out.println(resourceSet.getResources().size());
>> for (
>> TreeIterator<EObject> i = resource.getAllContents();
>> i .hasNext();
>> ) {
>> EObject current = i.next();
>> if (!(current instanceof NamedElement))
>> i.prune();
>> NamedElement asNamed = (NamedElement) current;
>> System.out.println(asNamed.getQualifiedName()
>> + " : " + asNamed.eClass().getName());
>> }
>> }
>> }
>>
>> Thanks for the help you could give me
>>
>>
>
>


------------------------------------------------------------ --------------------


> package za.co.solms.mddexperiments.tests;
>
> import java.net.URL;
> import java.util.Map;
> import java.util.logging.Logger;
> import org.eclipse.emf.common.util.TreeIterator;
> import org.eclipse.emf.common.util.URI;
> import org.eclipse.emf.ecore.EObject;
> import org.eclipse.emf.ecore.resource.Resource;
> import org.eclipse.emf.ecore.resource.ResourceSet;
> import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
> import org.eclipse.uml2.uml.UMLPackage;
> import org.eclipse.uml2.uml.resource.UMLResource;
> import org.junit.Before;
> import org.junit.Test;
>
> public class ModelLoadTest
> {
> /** Before running any tests in this suite, set up the model */
> @Before
> public void loadModel() throws Exception
> {
> // Get model from the class loader
> URL testModelURL = getClass().getClassLoader().getResource(
> "models/testModel.uml");
> // Construct a URI using EMF's own URI framework
> URI testModelURI = URI.createURI(testModelURL.toExternalForm());
>
> logger.info("Loading model from: " + testModelURI);
> ResourceSet resourceSet = new ResourceSetImpl();
>
> // Plug in UML model loader (package and file extension recognition)
> resourceSet.getPackageRegistry().put(UMLPackage.eNS_URI,
> UMLPackage.eINSTANCE);
>
> resourceSet.getResourceFactoryRegistry().getExtensionToFacto ryMap().put(
> UMLResource.FILE_EXTENSION, UMLResource.Factory.INSTANCE);
>
> // Plug in path maps as per wiki stand-alone instructions
> Map<URI, URI> uriMap = resourceSet.getURIConverter().getURIMap();
> // Note: Bad idea to refer to JAR file literally, but we humour the
> instructions for now
> URI uri =
> URI.createURI(" jar:file:/Users/dawidl/Desktop/emfTestProject/resources/runt ime/uml2-3.0.0-rc5/org.eclipse.uml2.uml.resources_3.0.0.v200 906011111.jar!/ ");
> uriMap.put(URI.createURI(UMLResource.LIBRARIES_PATHMAP),
> uri.appendSegment("libraries").appendSegment(""));
> uriMap.put(URI.createURI(UMLResource.METAMODELS_PATHMAP),
> uri.appendSegment("metamodels").appendSegment(""));
> uriMap.put(URI.createURI(UMLResource.PROFILES_PATHMAP),
> uri.appendSegment("profiles").appendSegment(""));
>
> // Load model
> model = resourceSet.createResource(testModelURI);
> logger.info("Model loaded: " + model);
>
> // Any problems?
> if (model.getErrors().size() > 0)
> {
> logger.severe(model.getErrors().toString());
> }
> if (model.getWarnings().size() > 0)
> {
> logger.severe(model.getWarnings().toString());
> }
> }
>
> @Test
> public void testTraverseModelWithJava() throws Exception
> {
> // Using the Java API, inspect all the stuff in the model
> logger.info("Iterating over all model elements");
> for (TreeIterator<EObject> stuffInModel = model.getAllContents();
> stuffInModel
> .hasNext();) {
> // THIS NEVER RUNS, MODEL IS EMPTY
> EObject eObject = stuffInModel.next();
>
> // Do stuff with eObject
> // ...
> }
>
> }
>
> private Resource model;
> private static Logger logger = Logger.getLogger("logger");
> }
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #624497 is a reply to message #476558] Tue, 23 June 2009 14:34 Go to previous message
Dawid Loubser is currently offline Dawid LoubserFriend
Messages: 23
Registered: July 2009
Junior Member
This is a multi-part message in MIME format.
--------------010000010607010800000606
Content-Type: text/plain; charset=ISO-8859-15; format=flowed
Content-Transfer-Encoding: 7bit

Hi James,

Thank you for your tip, we are getting closer, but it still not working.
Using the UMLResource.Factory.INSTANCE resource factory, my XMI-based
UML model loads, but everything inside it are instances of
org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl - i.e. the file is
parsed as XML only. I am not getting any UML types.

Would you please take a look at my attached test program (runs as a
JUnit test) and tell me where I am going wrong?? I also tried using
either the XMIResourceFactoryImpl, or literally the
UML212ResourceFactoryImpl, but each fails for their own reasons.

Still, the same .uml test model loads by double-clicking it in Eclipse.

Please people - anybody... Surely somebody must spot what I am doing
wrong in my test program? Why is this so difficult? I simply need to
load the attached UML model as-is using the attached test program.

kind regards,
Dawid



James Bruck het geskryf:
> Hi Dawid,
>
> Your code does a
> model = resourceSet.createResource(testModelURI);
>
> Which I believe doesn't actually load the resource.
>
> Try:
>
> resourceSet.getResource(resourceURI, true);
>
> If that fails, try looking at this
> http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html
>
> for a more complete example ( scroll toward the bottom ).
>
> Cheers,
>
> - James.
>

--------------010000010607010800000606
Content-Type: text/plain;
name="ModelLoadTest.java"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="ModelLoadTest.java"

cGFja2FnZSB6YS5jby5zb2xtcy5tZGRleHBlcmltZW50cy50ZXN0czsKCmlt cG9ydCBqYXZh
Lm5ldC5VUkw7CmltcG9ydCBqYXZhLnV0aWwuTWFwOwppbXBvcnQgamF2YS51 dGlsLmxvZ2dp
bmcuTG9nZ2VyOwppbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGls LlRyZWVJdGVy
YXRvcjsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5VUkk7 CmltcG9ydCBv
cmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsKaW1wb3J0IG9yZy5lY2xp cHNlLmVtZi5l
Y29yZS5yZXNvdXJjZS5SZXNvdXJjZTsKaW1wb3J0IG9yZy5lY2xpcHNlLmVt Zi5lY29yZS5y
ZXNvdXJjZS5SZXNvdXJjZVNldDsKaW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5l Y29yZS5yZXNv
dXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LmVtZi5lY29y
ZS54bWkuWE1JUmVzb3VyY2U7CmltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNv cmUueG1pLmlt
cGwuWE1JUmVzb3VyY2VGYWN0b3J5SW1wbDsKaW1wb3J0IG9yZy5lY2xpcHNl LnVtbDIudW1s
LlVNTFBhY2thZ2U7CmltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5pbnRl cm5hbC5yZXNv
dXJjZS5VTUwyMTJVTUxSZXNvdXJjZUZhY3RvcnlJbXBsOwppbXBvcnQgb3Jn LmVjbGlwc2Uu
dW1sMi51bWwuaW50ZXJuYWwucmVzb3VyY2UuVU1MMjJVTUxSZXNvdXJjZUZh Y3RvcnlJbXBs
OwppbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucmVzb3VyY2UuVU1MUmVz b3VyY2U7Cmlt
cG9ydCBvcmcuanVuaXQuQmVmb3JlOwppbXBvcnQgb3JnLmp1bml0LlRlc3Q7 CmltcG9ydCBz
dGF0aWMganVuaXQuZnJhbWV3b3JrLkFzc2VydC4qOwoKcHVibGljIGNsYXNz IE1vZGVsTG9h
ZFRlc3QgCnsKICAvKiogQmVmb3JlIHJ1bm5pbmcgYW55IHRlc3RzIGluIHRo aXMgc3VpdGUs
IHNldCB1cCB0aGUgbW9kZWwgKi8KICBAQmVmb3JlCiAgcHVibGljIHZvaWQg bG9hZE1vZGVs
KCkgdGhyb3dzIEV4Y2VwdGlvbiAKICB7CiAgICAvLyBHZXQgbXkgdGVzdCBV TUwgbW9kZWwg
ZnJvbSB0aGUgY2xhc3MgbG9hZGVyCiAgICBVUkwgdGVzdE1vZGVsVVJMID0g Z2V0Q2xhc3Mo
KS5nZXRDbGFzc0xvYWRlcigpLmdldFJlc291cmNlKCJtb2RlbHMvdGVzdE1v ZGVsLnVtbCIp
OwogICAgLy8gQ29uc3RydWN0IGEgVVJJIHVzaW5nIEVNRidzIG93biBVUkkg ZnJhbWV3b3Jr
CiAgICBVUkkgdGVzdE1vZGVsVVJJID0gVVJJLmNyZWF0ZVVSSSh0ZXN0TW9k ZWxVUkwudG9F
eHRlcm5hbEZvcm0oKSk7CgogICAgbG9nZ2VyLmluZm8oIkxvYWRpbmcgbW9k ZWwgZnJvbTog
IiArIHRlc3RNb2RlbFVSSSk7CiAgICBSZXNvdXJjZVNldCByZXNvdXJjZVNl dCA9IG5ldyBS
ZXNvdXJjZVNldEltcGwoKTsKCiAgICAvLyBQbHVnIGluIFVNTCBtb2RlbCBs b2FkZXIgKHBh
Y2thZ2UgYW5kIGZpbGUgZXh0ZW5zaW9uIHJlY29nbml0aW9uKQogICAgcmVz b3VyY2VTZXQu
Z2V0UGFja2FnZVJlZ2lzdHJ5KCkucHV0KFVNTFBhY2thZ2UuZU5TX1VSSSwg VU1MUGFja2Fn
ZS5lSU5TVEFOQ0UpOwogICAgCiAgICAKLy8gICAgVGhpcyBjYXVzZXMgdGhl IFVNTCBtb2Rl
bCB0byBiZSBsb2FkZWQgYXMgWE1MLCBhbGwgZWxlbWVudHMgYXJlIGluc3Rh bmNlb2YgJ29y
Zy5lY2xpcHNlLmVtZi5lY29yZS54bWwudHlwZS5pbXBsLkFueVR5cGVJbXBs JwogICAgcmVz
b3VyY2VTZXQuZ2V0UmVzb3VyY2VGYWN0b3J5UmVnaXN0cnkoKS5nZXRFeHRl bnNpb25Ub0Zh
Y3RvcnlNYXAoKS5wdXQoIFVNTFJlc291cmNlLkZJTEVfRVhURU5TSU9OLCBV TUxSZXNvdXJj
ZS5GYWN0b3J5LklOU1RBTkNFKTsKICAgIAovLyAgICBUaGlzIGZhaWxzIHdp dGggJ29yZy5l
Y2xpcHNlLmVtZi5lY29yZS54bWkuUGFja2FnZU5vdEZvdW5kRXhjZXB0aW9u OiBQYWNrYWdl
IHdpdGggdXJpICdodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9YTUkvMi4x JyBub3QgZm91
bmQuJwovLyAgICByZXNvdXJjZVNldC5nZXRSZXNvdXJjZUZhY3RvcnlSZWdp c3RyeSgpLmdl
dEV4dGVuc2lvblRvRmFjdG9yeU1hcCgpLnB1dCggVU1MUmVzb3VyY2UuRklM RV9FWFRFTlNJ
T04sIG5ldyBYTUlSZXNvdXJjZUZhY3RvcnlJbXBsKCkpOwogICAgCi8vICBU aGlzIGZhaWxz
IHdpdGggJ0Nhbm5vdCBjcmVhdGUgYSByZXNvdXJjZSBmb3IgJ3BsYXRmb3Jt Oi9wbHVnaW4v
b3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MMl8yX1VNTC5lY29yZTJ4 bWwnOyBhIHJl
Z2lzdGVyZWQgcmVzb3VyY2UgZmFjdG9yeSBpcyBuZWVkZWQnCi8vICAgIHJl c291cmNlU2V0
LmdldFJlc291cmNlRmFjdG9yeVJlZ2lzdHJ5KCkuZ2V0RXh0ZW5zaW9uVG9G YWN0b3J5TWFw
KCkucHV0KCBVTUxSZXNvdXJjZS5GSUxFX0VYVEVOU0lPTiwgbmV3IFVNTDIy VU1MUmVzb3Vy
Y2VGYWN0b3J5SW1wbCgpKTsKICAgIAogICAgCiAgICAvLyBQbHVnIGluIHBh dGggbWFwcyBh
cyBwZXIgRWNsaXBzZSB3aWtpIHN0YW5kLWFsb25lIGluc3RydWN0aW9ucwog ICAgTWFwPFVS
SSwgVVJJPiB1cmlNYXAgPSByZXNvdXJjZVNldC5nZXRVUklDb252ZXJ0ZXIo KS5nZXRVUklN
YXAoKTsKICAgIC8vIFRPRE86IEJhZCBpZGVhIHRvIHJlZmVyIHRvIEpBUiBm aWxlIGxpdGVy
YWxseSwgYnV0IHdlIGh1bW91ciB0aGUgaW5zdHJ1Y3Rpb25zIGZvciBub3cK ICAgIFVSSSB1
cmkgPSBVUkkuY3JlYXRlVVJJKCJqYXI6ZmlsZTovVXNlcnMvZGF3aWRsL0Rl c2t0b3AvZW1m
VGVzdFByb2plY3QvcmVzb3VyY2VzL3J1bnRpbWUvdW1sMi0zLjAuMC1yYzUv b3JnLmVjbGlw
c2UudW1sMi51bWwucmVzb3VyY2VzXzMuMC4wLnYyMDA5MDYwMTExMTEuamFy IS8iKTsKICAg
IHVyaU1hcC5wdXQoVVJJLmNyZWF0ZVVSSShVTUxSZXNvdXJjZS5MSUJSQVJJ RVNfUEFUSE1B
UCksIHVyaS5hcHBlbmRTZWdtZW50KCJsaWJyYXJpZXMiKS5hcHBlbmRTZWdt ZW50KCIiKSk7
CiAgICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3VyY2UuTUVU QU1PREVMU19Q
QVRITUFQKSwgdXJpLmFwcGVuZFNlZ21lbnQoIm1ldGFtb2RlbHMiKS5hcHBl bmRTZWdtZW50
KCIiKSk7CiAgICB1cmlNYXAucHV0KFVSSS5jcmVhdGVVUkkoVU1MUmVzb3Vy Y2UuUFJPRklM
RVNfUEFUSE1BUCksIHVyaS5hcHBlbmRTZWdtZW50KCJwcm9maWxlcyIpLmFw cGVuZFNlZ21l
bnQoIiIpKTsKCiAgICAvLyBMb2FkIG1vZGVsCiAgICBtb2RlbCA9IHJlc291 cmNlU2V0Lmdl
dFJlc291cmNlKHRlc3RNb2RlbFVSSSwgdHJ1ZSk7CiAgICBsb2dnZXIuaW5m bygiTW9kZWwg
bG9hZGVkOiAiICsgbW9kZWwpOwoKICAgIC8vIEFueSBwcm9ibGVtcz8KICAg IGlmIChtb2Rl
bC5nZXRFcnJvcnMoKS5zaXplKCkgPiAwKSAKICAgIHsKICAgICAgbG9nZ2Vy LnNldmVyZSht
b2RlbC5nZXRFcnJvcnMoKS50b1N0cmluZygpKTsKICAgIH0KICAgIGlmICht b2RlbC5nZXRX
YXJuaW5ncygpLnNpemUoKSA+IDApIAogICAgewogICAgICBsb2dnZXIuc2V2 ZXJlKG1vZGVs
LmdldFdhcm5pbmdzKCkudG9TdHJpbmcoKSk7CiAgICB9CiAgfQoKICBAVGVz dAogIHB1Ymxp
YyB2b2lkIHRlc3RUcmF2ZXJzZU1vZGVsV2l0aEphdmEoKSB0aHJvd3MgRXhj ZXB0aW9uIAog
IHsKICAgIC8vIFRoZXJlIG11c3QgYmUgc3R1ZmYgaW4gdGhpcyBtb2RlbAog ICAgYXNzZXJ0
Tm90TnVsbCggbW9kZWwgKTsKICAgIGFzc2VydE5vdE51bGwoIG1vZGVsLmdl dENvbnRlbnRz
KCkgICk7CiAgICBhc3NlcnRUcnVlKCBtb2RlbC5nZXRDb250ZW50cygpLnNp emUoKSA+IDAg
KTsKICAgIAogICAgLy8gU2VlIHdoYXQncyBpbiB0aGUgbW9kZWw/CiAgICBU cmVlSXRlcmF0
b3I8RU9iamVjdD4gc3R1ZmZJbk1vZGVsID0gbW9kZWwuZ2V0QWxsQ29udGVu dHMoKTsKICAg
IHdoaWxlIChzdHVmZkluTW9kZWwuaGFzTmV4dCgpKQogICAgewogICAgICBF T2JqZWN0IG8g
PSBzdHVmZkluTW9kZWwubmV4dCgpOwogICAgICBTeXN0ZW0ub3V0LnByaW50 bG4oIk1vZGVs
IGVsZW1lbnQ6ICIgKyBvLmdldENsYXNzKCkuZ2V0TmFtZSgpICk7CiAgICB9 CiAgICAKICB9
CgogIHByaXZhdGUgUmVzb3VyY2UgbW9kZWw7CiAgcHJpdmF0ZSBzdGF0aWMg TG9nZ2VyIGxv
Z2dlciA9IExvZ2dlci5nZXRMb2dnZXIoImxvZ2dlciIpOwp9
--------------010000010607010800000606
Content-Type: text/xml; x-mac-type="0"; x-mac-creator="0";
name="testModel.uml"
Content-Transfer-Encoding: base64
Content-Disposition: inline;
filename="testModel.uml"

PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4KCjx4bWk6 WE1JIHhtaTp2
ZXJzaW9uPScyLjEnIHhtbG5zOnVtbD0naHR0cDovL3NjaGVtYS5vbWcub3Jn L3NwZWMvVU1M
LzIuMS4yJyB4bWxuczp4bWk9J2h0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVj L1hNSS8yLjEn
IHhtbG5zOkRTTF9DdXN0b21pemF0aW9uPSdodHRwOi8vd3d3Lm1hZ2ljZHJh dy5jb20vc2No
ZW1hcy9EU0xfQ3VzdG9taXphdGlvbi54bWknIHhtbG5zOlZhbGlkYXRpb25f UHJvZmlsZT0n
aHR0cDovL3d3dy5tYWdpY2RyYXcuY29tL3NjaGVtYXMvVmFsaWRhdGlvbl9Q cm9maWxlLnht
aScgeG1sbnM6TWFnaWNEcmF3X1Byb2ZpbGU9J2h0dHA6Ly93d3cubWFnaWNk cmF3LmNvbS9z
Y2hlbWFzL01hZ2ljRHJhd19Qcm9maWxlLnhtaScgeG1sbnM6VU1MX1N0YW5k YXJkX1Byb2Zp
bGU9J2h0dHA6Ly93d3cubWFnaWNkcmF3LmNvbS9zY2hlbWFzL1VNTF9TdGFu ZGFyZF9Qcm9m
aWxlLnhtaSc+Cgk8eG1pOkRvY3VtZW50YXRpb24gZXhwb3J0ZXI9J01hZ2lj RHJhdyBVTUwn
IGV4cG9ydGVyVmVyc2lvbj0nMTYuMCcvPgoJPHhtaTpFeHRlbnNpb24gZXh0 ZW5kZXI9J01h
Z2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5kZXJJRD0nTWFnaWNEcmF3IFVNTCAx Ni4wJz4KCQk8
c2hhcmVUYWJsZS8+CgkJPG1vdW50VGFibGU+CgkJCTxtb2R1bGUgcmVzb3Vy Y2U9J2ZpbGU6
L0RldmVsb3Blci9BcHBsaWNhdGlvbnMvTWFnaWNEcmF3L3Byb2ZpbGVzL1VN TF9TdGFuZGFy
ZF9Qcm9maWxlLnhtbCcgYXV0b2xvYWRUeXBlPSdBTFdBWVNfTE9BRCcgcmVh ZE9ubHk9J3Ry
dWUnIGxvYWRJbmRleD0nZmFsc2UnIHJlcXVpcmVkVmVyc2lvbj0nLTEnPgoJ CQkJPG1vdW50
IG1vdW50UG9pbnQ9J21hZ2ljZHJhd191bWxfc3RhbmRhcmRfcHJvZmlsZV92 XzAwMDEnIG1v
dW50ZWRPbj0nZWVlXzEwNDU0NjcxMDAzMTNfMTM1NDM2XzEnLz4KCQkJPC9t b2R1bGU+CgkJ
PC9tb3VudFRhYmxlPgoJPC94bWk6RXh0ZW5zaW9uPgoJPHVtbDpNb2RlbCB4 bWk6aWQ9J2Vl
ZV8xMDQ1NDY3MTAwMzEzXzEzNTQzNl8xJyB4bWk6dXVpZD0nNzhmNzUyZDAt NWNkNC0xMWRl
LTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdEYXRhJyB2aXNpYmlsaXR5PSdw dWJsaWMnIHZp
ZXdwb2ludD0nJz4KCQk8eG1pOkV4dGVuc2lvbiBleHRlbmRlcj0nTWFnaWNE cmF3IFVNTCAx
Ni4wJyBleHRlbmRlcklEPSdNYWdpY0RyYXcgVU1MIDE2LjAnPgoJCQk8bW9k dWxlRXh0ZW5z
aW9uIGlnbm9yZWRJbk1vZHVsZT0ndHJ1ZScvPgoJCTwveG1pOkV4dGVuc2lv bj4KCQk8b3du
ZWRDb21tZW50IHhtaTp0eXBlPSd1bWw6Q29tbWVudCcgeG1pOmlkPSdfMTZf MF8xXzg4ZTAy
NzZfMTI0NTQxNzg0OTYzN18yNTEwNDBfMjMwJyB4bWk6dXVpZD0nNzhmN2M4 MDEtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBib2R5PSdBdXRob3I6ZGF3aWRsLiYj MTA7Q3JlYXRl
ZDowOS8wNi8xOSAzOjI0IFBNLiYjMTA7VGl0bGU6LiYjMTA7Q29tbWVudDou JiMxMDsnPgoJ
CQk8YW5ub3RhdGVkRWxlbWVudCB4bWk6aWRyZWY9J2VlZV8xMDQ1NDY3MTAw MzEzXzEzNTQz
Nl8xJy8+CgkJPC9vd25lZENvbW1lbnQ+CgkJPHBhY2thZ2VkRWxlbWVudCB4 bWk6dHlwZT0n
dW1sOlBhY2thZ2UnIGhyZWY9J1VNTF9TdGFuZGFyZF9Qcm9maWxlLnhtbCNt YWdpY2RyYXdf
dW1sX3N0YW5kYXJkX3Byb2ZpbGVfdl8wMDAxJz4KCQkJPHhtaTpFeHRlbnNp b24gZXh0ZW5k
ZXI9J01hZ2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5kZXJJRD0nTWFnaWNEcmF3 IFVNTCAxNi4w
Jz4KCQkJCTxyZWZlcmVuY2VFeHRlbnNpb24gcmVmZXJlbnRQYXRoPSdVTUwg U3RhbmRhcmQg
UHJvZmlsZScgcmVmZXJlbnRUeXBlPSdQYWNrYWdlJy8+CgkJCTwveG1pOkV4 dGVuc2lvbj4K
CQk8L3BhY2thZ2VkRWxlbWVudD4KCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0 eXBlPSd1bWw6
UGFja2FnZScgeG1pOmlkPSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkwMzY5 OV82NDk2M18y
NTInIHhtaTp1dWlkPSdkOTE1MzA3YS01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYy MWZmMDcnIG5h
bWU9J3NvbG1zJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6Q2xhc3MnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEy NDU0MTc5MTU4
MTFfNzcyOTk4XzI2MycgeG1pOnV1aWQ9J2Q5MTU1NzhiLTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nUGVyc29uJyB2aXNpYmlsaXR5PSdwdWJsaWMnIGlz TGVhZj0nZmFs
c2UnIGlzQWJzdHJhY3Q9J2ZhbHNlJyBpc0FjdGl2ZT0nZmFsc2UnPgoJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzE2XzBf MV84OGUwMjc2
XzEyNDU0MTc5MjM3MDJfNTMzNDYwXzI4NScgeG1pOnV1aWQ9J2Q5MTU1Nzhj LTVjZDQtMTFk
ZS05NTY3LTE1YTljNjIxZmYwNycgaXNPcmRlcmVkPSdmYWxzZScgaXNVbmlx dWU9J3RydWUn
IG5hbWU9J25hbWUnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGlzTGVhZj0nZmFs c2UnIGlzU3Rh
dGljPSdmYWxzZScgaXNSZWFkT25seT0nZmFsc2UnIGlzRGVyaXZlZD0nZmFs c2UnIGlzRGVy
aXZlZFVuaW9uPSdmYWxzZScgYWdncmVnYXRpb249J25vbmUnPgoJCQkJCTx0 eXBlIHhtaTp0
eXBlPSd1bWw6UHJpbWl0aXZlVHlwZScgaHJlZj0naHR0cDovL3NjaGVtYS5v bWcub3JnL3Nw
ZWMvVU1MLzIuMi91bWwueG1sI1N0cmluZyc+CgkJCQkJCTx4bWk6RXh0ZW5z aW9uIGV4dGVu
ZGVyPSdNYWdpY0RyYXcgVU1MIDE2LjAnIGV4dGVuZGVySUQ9J01hZ2ljRHJh dyBVTUwgMTYu
MCc+CgkJCQkJCQk8cmVmZXJlbmNlRXh0ZW5zaW9uIHJlZmVyZW50UGF0aD0n VU1MIFN0YW5k
YXJkIFByb2ZpbGU6OlVNTDIgTWV0YW1vZGVsOjpBdXhpbGlhcnlDb25zdHJ1 Y3RzOjpQcmlt
aXRpdmVUeXBlczo6U3RyaW5nJyByZWZlcmVudFR5cGU9J1ByaW1pdGl2ZVR5 cGUnLz4KCQkJ
CQkJPC94bWk6RXh0ZW5zaW9uPgoJCQkJCTwvdHlwZT4KCQkJCTwvb3duZWRB dHRyaWJ1dGU+
CgkJCQk8b3duZWRBdHRyaWJ1dGUgeG1pOnR5cGU9J3VtbDpQcm9wZXJ0eScg eG1pOmlkPSdf
MTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk2NjY5OF82MjUyNTdfMzE2JyB4bWk6 dXVpZD0nZDkx
NTdlOWQtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBpc09yZGVyZWQ9 J2ZhbHNlJyBp
c1VuaXF1ZT0ndHJ1ZScgbmFtZT0ndG95JyB2aXNpYmlsaXR5PSdwcml2YXRl JyBpc0xlYWY9
J2ZhbHNlJyBpc1N0YXRpYz0nZmFsc2UnIGlzUmVhZE9ubHk9J2ZhbHNlJyBp c0Rlcml2ZWQ9
J2ZhbHNlJyBpc0Rlcml2ZWRVbmlvbj0nZmFsc2UnIGFnZ3JlZ2F0aW9uPSdu b25lJyB0eXBl
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkzODY2OV83NTM1NDhfMjg4JyBh c3NvY2lhdGlv
bj0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NjY2OThfOTc2NzE5XzMxNSc+ CgkJCQkJPHVw
cGVyVmFsdWUgeG1pOnR5cGU9J3VtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJh bCcgeG1pOmlk
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk3MzE2OF83MjY5MDZfMzI2JyB4 bWk6dXVpZD0n
ZDkxNTdlOWUtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPScn IHZpc2liaWxp
dHk9J3B1YmxpYycgdmFsdWU9JyonLz4KCQkJCQk8bG93ZXJWYWx1ZSB4bWk6 dHlwZT0ndW1s
OkxpdGVyYWxJbnRlZ2VyJyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1 NDE3OTczMTY4
Xzg3NzYwMV8zMjUnIHhtaTp1dWlkPSdkOTE1YTVhZi01Y2Q0LTExZGUtOTU2 Ny0xNWE5YzYy
MWZmMDcnIG5hbWU9JycgdmlzaWJpbGl0eT0ncHVibGljJyB2YWx1ZT0nMCcv PgoJCQkJPC9v
d25lZEF0dHJpYnV0ZT4KCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCTxwYWNr YWdlZEVsZW1l
bnQgeG1pOnR5cGU9J3VtbDpDbGFzcycgeG1pOmlkPSdfMTZfMF8xXzg4ZTAy NzZfMTI0NTQx
NzkzODY2OV83NTM1NDhfMjg4JyB4bWk6dXVpZD0nZDkxNWE1YjAtNWNkNC0x MWRlLTk1Njct
MTVhOWM2MjFmZjA3JyBuYW1lPSdDYW1lcmEnIHZpc2liaWxpdHk9J3B1Ymxp YycgaXNMZWFm
PSdmYWxzZScgaXNBYnN0cmFjdD0nZmFsc2UnIGlzQWN0aXZlPSdmYWxzZSc+ CgkJCQk8b3du
ZWRBdHRyaWJ1dGUgeG1pOnR5cGU9J3VtbDpQcm9wZXJ0eScgeG1pOmlkPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk0NDA3Nl8yODUxNzFfMzEwJyB4bWk6dXVpZD0nZDkx NWE1YjEtNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBpc09yZGVyZWQ9J2ZhbHNlJyBp c1VuaXF1ZT0n
dHJ1ZScgbmFtZT0nbWF4U2h1dHRlclNwZWVkJyB2aXNpYmlsaXR5PSdwcml2 YXRlJyBpc0xl
YWY9J2ZhbHNlJyBpc1N0YXRpYz0nZmFsc2UnIGlzUmVhZE9ubHk9J2ZhbHNl JyBpc0Rlcml2
ZWQ9J2ZhbHNlJyBpc0Rlcml2ZWRVbmlvbj0nZmFsc2UnIGFnZ3JlZ2F0aW9u PSdub25lJz4K
CQkJCQk8dHlwZSB4bWk6dHlwZT0ndW1sOkRhdGFUeXBlJyBocmVmPSdVTUxf U3RhbmRhcmRf
UHJvZmlsZS54bWwjZWVlXzEwNDU0NjcxMDAzMjNfODQ4MDM0XzY2Jz4KCQkJ CQkJPHhtaTpF
eHRlbnNpb24gZXh0ZW5kZXI9J01hZ2ljRHJhdyBVTUwgMTYuMCcgZXh0ZW5k ZXJJRD0nTWFn
aWNEcmF3IFVNTCAxNi4wJz4KCQkJCQkJCTxyZWZlcmVuY2VFeHRlbnNpb24g cmVmZXJlbnRQ
YXRoPSdVTUwgU3RhbmRhcmQgUHJvZmlsZTo6TWFnaWNEcmF3IFByb2ZpbGU6 OmRhdGF0eXBl
czo6ZG91YmxlJyByZWZlcmVudFR5cGU9J0RhdGFUeXBlJy8+CgkJCQkJCTwv eG1pOkV4dGVu
c2lvbj4KCQkJCQk8L3R5cGU+CgkJCQk8L293bmVkQXR0cmlidXRlPgoJCQk8 L3BhY2thZ2Vk
RWxlbWVudD4KCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1sOkFz c29jaWF0aW9u
JyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4Xzk3Njcx OV8zMTUnIHht
aTp1dWlkPSdkOTE1YTViMi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcn IG5hbWU9Jycg
dmlzaWJpbGl0eT0ncHVibGljJyBpc0xlYWY9J2ZhbHNlJyBpc0Fic3RyYWN0 PSdmYWxzZScg
aXNEZXJpdmVkPSdmYWxzZSc+CgkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0n XzE2XzBfMV84
OGUwMjc2XzEyNDU0MTc5NjY2OThfNjI1MjU3XzMxNicvPgoJCQkJPG1lbWJl ckVuZCB4bWk6
aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4XzEyMDA5OV8z MTcnLz4KCQkJ
CTxvd25lZEVuZCB4bWk6dHlwZT0ndW1sOlByb3BlcnR5JyB4bWk6aWQ9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTY2Njk4XzEyMDA5OV8zMTcnIHhtaTp1dWlkPSdkOTE1 Y2JjMy01Y2Q0
LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIGlzT3JkZXJlZD0nZmFsc2UnIGlz VW5pcXVlPSd0
cnVlJyBuYW1lPScnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGlzTGVhZj0nZmFs c2UnIGlzU3Rh
dGljPSdmYWxzZScgaXNSZWFkT25seT0nZmFsc2UnIGlzRGVyaXZlZD0nZmFs c2UnIGlzRGVy
aXZlZFVuaW9uPSdmYWxzZScgYWdncmVnYXRpb249J25vbmUnIHR5cGU9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTE1ODExXzc3Mjk5OF8yNjMnIGFzc29jaWF0aW9uPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk2NjY5OF85NzY3MTlfMzE1Jy8+CgkJCTwvcGFja2Fn ZWRFbGVtZW50
PgoJCTwvcGFja2FnZWRFbGVtZW50PgoJPC91bWw6TW9kZWw+Cgk8eG1pOkV4 dGVuc2lvbiBl
eHRlbmRlcj0nTWFnaWNEcmF3IFVNTCAxNi4wJz4KCQk8bWRPd25lZERpYWdy YW1zPgoJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRGlhZ3JhbScgeG1pOmlkPSdfMTZf MF8xXzg4ZTAy
NzZfMTI0NTQxNzg5MjM5MV80ODQxODBfMjMwJyB4bWk6dXVpZD0nZDkxNWNi YzQtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdleGFtcGxlQ2xhc3NEaWFn cmFtJyB2aXNp
YmlsaXR5PSdwdWJsaWMnIG93bmVyT2ZEaWFncmFtPSdlZWVfMTA0NTQ2NzEw MDMxM18xMzU0
MzZfMSc+CgkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRGlhZ3JhbVBy ZXNlbnRhdGlv
bkVsZW1lbnQnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc4OTIz OTNfMzUwNDYw
XzIzMSc+CgkJCQkJPGVsZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhl MDI3Nl8xMjQ1
NDE3ODkyMzkxXzQ4NDE4MF8yMzAnLz4KCQkJCQk8cHJvcGVydGllcz4KCQkJ CQkJPG1kRWxl
bWVudCBlbGVtZW50Q2xhc3M9J0Jvb2xlYW5Qcm9wZXJ0eSc+CgkJCQkJCQk8 cHJvcGVydHlJ
RD5BVVRPU0laRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eUdyb3Vw PkRJQUdSQU1f
RlJBTUU8L3Byb3BlcnR5R3JvdXA+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlw dGlvbklEPkFV
VE9TSVpFX0RFU0NSSVBUSU9OPC9wcm9wZXJ0eURlc2NyaXB0aW9uSUQ+CgkJ CQkJCQk8dmFs
dWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJCQkJ CTwvcHJvcGVy
dGllcz4KCQkJCQk8dHlwZT5DbGFzcyBEaWFncmFtPC90eXBlPgoJCQkJCTx1 bWxUeXBlPkNs
YXNzIERpYWdyYW08L3VtbFR5cGU+CgkJCQkJPHpvb21GYWN0b3IgeG1pOnZh bHVlPScxLjAn
Lz4KCQkJCQk8ZGlhZ3JhbU9wZW5lZCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJ CQk8ZGlhZ3Jh
bUZyYW1lSW5pdGlhbFNpemVTZXQgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJ PGRpYWdyYW1X
aW5kb3dCb3VuZHM+MiwgMjQsIDE3MDcsIDk4ODwvZGlhZ3JhbVdpbmRvd0Jv dW5kcz4KCQkJ
CQk8ZGlhZ3JhbVNjcm9sbFBvc2l0aW9uWCB4bWk6dmFsdWU9JzAnLz4KCQkJ CQk8ZGlhZ3Jh
bVNjcm9sbFBvc2l0aW9uWSB4bWk6dmFsdWU9JzAnLz4KCQkJCQk8bWF4aW1p emVkIHhtaTp2
YWx1ZT0nZmFsc2UnLz4KCQkJCQk8YWN0aXZlIHhtaTp2YWx1ZT0ndHJ1ZScv PgoJCQkJCTxt
ZE93bmVkVmlld3M+CgkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdE aWFncmFtRnJh
bWUnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc4OTI0MjFfNTAx Mzc2XzI0Myc+
CgkJCQkJCQk8ZWxlbWVudElEIHhtaTppZHJlZj0nXzE2XzBfMV84OGUwMjc2 XzEyNDU0MTc4
OTIzOTFfNDg0MTgwXzIzMCcvPgoJCQkJCQkJPGdlb21ldHJ5PjUsIDUsIDUz MywgMzAyPC9n
ZW9tZXRyeT4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1lbnQg ZWxlbWVudENs
YXNzPSdQYWNrYWdlJyB4bWk6aWQ9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3 OTAzNzAxXzc4
NzIyN18yNTMnPgoJCQkJCQkJPGVsZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8w XzFfODhlMDI3
Nl8xMjQ1NDE3OTAzNjk5XzY0OTYzXzI1MicvPgoJCQkJCQkJPGdlb21ldHJ5 PjQ5LCA2Mywg
NDY5LCAyMjQ8L2dlb21ldHJ5PgoJCQkJCQkJPG1kT3duZWRWaWV3cz4KCQkJ CQkJCQk8bWRF
bGVtZW50IGVsZW1lbnRDbGFzcz0nQ2xhc3MnIHhtaTppZD0nXzE2XzBfMV84 OGUwMjc2XzEy
NDU0MTc5MTU4MTFfMjk4NDE4XzI2NCc+CgkJCQkJCQkJCTxlbGVtZW50SUQg eG1pOmlkcmVm
PSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkxNTgxMV83NzI5OThfMjYzJy8+ CgkJCQkJCQkJ
CTxnZW9tZXRyeT45MSwgMTYxLCA3NCwgNTA8L2dlb21ldHJ5PgoJCQkJCQkJ CTwvbWRFbGVt
ZW50PgoJCQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdDbGFzcycg eG1pOmlkPSdf
MTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzkzODY3MF81NDU4NjhfMjg5Jz4KCQkJ CQkJCQkJPGVs
ZW1lbnRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTM4 NjY5Xzc1MzU0
OF8yODgnLz4KCQkJCQkJCQkJPGdlb21ldHJ5PjMyOSwgMTYxLCAxMzgsIDUw PC9nZW9tZXRy
eT4KCQkJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJCQk8bWRFbGVtZW50IGVs ZW1lbnRDbGFz
cz0nQXNzb2NpYXRpb24nIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0 MTc5NjY3MTJf
NTQ3MzYyXzMyMCc+CgkJCQkJCQkJCTxlbGVtZW50SUQgeG1pOmlkcmVmPSdf MTZfMF8xXzg4
ZTAyNzZfMTI0NTQxNzk2NjY5OF85NzY3MTlfMzE1Jy8+CgkJCQkJCQkJCTxs aW5rRmlyc3RF
bmRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTM4Njcw XzU0NTg2OF8y
ODknLz4KCQkJCQkJCQkJPGxpbmtTZWNvbmRFbmRJRCB4bWk6aWRyZWY9J18x Nl8wXzFfODhl
MDI3Nl8xMjQ1NDE3OTE1ODExXzI5ODQxOF8yNjQnLz4KCQkJCQkJCQkJPGdl b21ldHJ5PjMy
OSwgMTg2OyAxNjUsIDE4NjsgPC9nZW9tZXRyeT4KCQkJCQkJCQkJPG5hbWVW aXNpYmxlIHht
aTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQkJCQk8bWRPd25lZFZpZXdzPgoJCQkJ CQkJCQkJPG1k
RWxlbWVudCBlbGVtZW50Q2xhc3M9J1JvbGUnIHhtaTppZD0nXzE2XzBfMV84 OGUwMjc2XzEy
NDU0MTc5NjY2OTlfODU2ODY4XzMxOSc+CgkJCQkJCQkJCQkJPGVsZW1lbnRJ RCB4bWk6aWRy
ZWY9J18xNl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTY2Njk4XzYyNTI1N18zMTYn Lz4KCQkJCQkJ
CQkJCQk8Z2VvbWV0cnk+MzE5LCAxODEsIDEwLCAxMDwvZ2VvbWV0cnk+CgkJ CQkJCQkJCQkJ
PG1kT3duZWRWaWV3cz4KCQkJCQkJCQkJCQkJPG1kRWxlbWVudCBlbGVtZW50 Q2xhc3M9J1Rl
eHRCb3gnIHhtaTppZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NzMxODNf MTE0MjczXzMy
Nyc+CgkJCQkJCQkJCQkJCQk8Z2VvbWV0cnk+MzAyLCAxODksIDI0LCAxMzwv Z2VvbWV0cnk+
CgkJCQkJCQkJCQkJCQk8dGV4dD4wLi4qPC90ZXh0PgoJCQkJCQkJCQkJCQk8 L21kRWxlbWVu
dD4KCQkJCQkJCQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1RleHRC b3gnIHhtaTpp
ZD0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NzYzMDVfNjA3OTcyXzMyOSc+ CgkJCQkJCQkJ
CQkJCQk8Z2VvbWV0cnk+MzAyLCAxNzAsIDI0LCAxMzwvZ2VvbWV0cnk+CgkJ CQkJCQkJCQkJ
CQk8dGV4dD4tdG95PC90ZXh0PgoJCQkJCQkJCQkJCQk8L21kRWxlbWVudD4K CQkJCQkJCQkJ
CQk8L21kT3duZWRWaWV3cz4KCQkJCQkJCQkJCQk8cm9sZU5hbWVJRCB4bWk6 aWRyZWY9J18x
Nl8wXzFfODhlMDI3Nl8xMjQ1NDE3OTc2MzA1XzYwNzk3Ml8zMjknLz4KCQkJ CQkJCQkJCQk8
cm9sZU11bHRpcGxpY2l0eUlEIHhtaTppZHJlZj0nXzE2XzBfMV84OGUwMjc2 XzEyNDU0MTc5
NzMxODNfMTE0MjczXzMyNycvPgoJCQkJCQkJCQkJPC9tZEVsZW1lbnQ+CgkJ CQkJCQkJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nUm9sZScgeG1pOmlkPSdfMTZfMF8x Xzg4ZTAyNzZf
MTI0NTQxNzk2NjY5OV8yNTIxMTNfMzE4Jz4KCQkJCQkJCQkJCQk8ZWxlbWVu dElEIHhtaTpp
ZHJlZj0nXzE2XzBfMV84OGUwMjc2XzEyNDU0MTc5NjY2OThfMTIwMDk5XzMx NycvPgoJCQkJ
CQkJCQkJCTxnZW9tZXRyeT4xNjUsIDE4MSwgMTAsIDEwPC9nZW9tZXRyeT4K CQkJCQkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQkJCQk8L21kT3duZWRWaWV3cz4KCQkJCQkJ CQkJPGFzc29j
aWF0aW9uRmlyc3RFbmRJRCB4bWk6aWRyZWY9J18xNl8wXzFfODhlMDI3Nl8x MjQ1NDE3OTY2
Njk5Xzg1Njg2OF8zMTknLz4KCQkJCQkJCQkJPGFzc29jaWF0aW9uU2Vjb25k RW5kSUQgeG1p
OmlkcmVmPSdfMTZfMF8xXzg4ZTAyNzZfMTI0NTQxNzk2NjY5OV8yNTIxMTNf MzE4Jy8+CgkJ
CQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCQk8L21kT3duZWRWaWV3cz4KCQkJ CQkJPC9tZEVs
ZW1lbnQ+CgkJCQkJPC9tZE93bmVkVmlld3M+CgkJCQk8L21kRWxlbWVudD4K CQkJPC9tZEVs
ZW1lbnQ+CgkJPC9tZE93bmVkRGlhZ3JhbXM+CgkJPHByb3hpZXMvPgoJCTxw cml2YXRlUHJv
eGllcz4KCQkJPHByb3h5IHhtaTp0eXBlPSd1bWw6UGFja2FnZScgeG1pOmlk PSdtYWdpY2Ry
YXdfdW1sX3N0YW5kYXJkX3Byb2ZpbGVfdl8wMDAxJyB4bWk6dXVpZD0nNzhm OTc1YjItNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdVTUwgU3RhbmRhcmQg UHJvZmlsZScg
dmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCTx4bWk6RXh0ZW5zaW9uIGV4dGVu ZGVyPSdNYWdp
Y0RyYXcgVU1MIDE2LjAnIGV4dGVuZGVySUQ9J01hZ2ljRHJhdyBVTUwgMTYu MCc+CgkJCQkJ
PG1vZHVsZUV4dGVuc2lvbiBtb2R1bGVSb290PSc6OlVNTCBTdGFuZGFyZCBQ cm9maWxlJyBt
b2R1bGVOYW1lPSdVTUxfU3RhbmRhcmRfUHJvZmlsZS54bWwnIHJlbW90ZVBy b2plY3RJRD0n
JyByZW1vdGVNb2R1bGVWZXJzaW9uPScxMjMyOTg4MzkwMDAwJyBtb2R1bGVV c2VkQnlQcm9q
ZWN0PSd0cnVlJy8+CgkJCQk8L3htaTpFeHRlbnNpb24+CgkJCQk8cGFja2Fn ZWRFbGVtZW50
IHhtaTp0eXBlPSd1bWw6TW9kZWwnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzEx MDgwNTM3NjEx
OTRfNDY3NjM1XzExNDYzJyB4bWk6dXVpZD0nNzhmOTljYzMtNWNkNC0xMWRl LTk1NjctMTVh
OWM2MjFmZjA3JyBuYW1lPSdVTUwyIE1ldGFtb2RlbCcgdmlzaWJpbGl0eT0n cHVibGljJz4K
CQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6UGFja2FnZScg eG1pOmlkPSdf
OV8wXzYyYTAyMGFfMTEwNTcwNTA4MDgwMl83Mjk1MjBfMTE0MDInIHhtaTp1 dWlkPSc3OGY5
OWNjNC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J0F1eGls aWFyeUNvbnN0
cnVjdHMnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJCQkJCTxwYWNrYWdlZEVs ZW1lbnQgeG1p
OnR5cGU9J3VtbDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1 NzA1MDg0MjYz
XzgxODEzNF8xMTUzNicgeG1pOnV1aWQ9Jzc4Zjk5Y2M1LTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nTW9kZWxzJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJ CQkJCQkJPHBh
Y2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1sOkNsYXNzJyB4bWk6aWQ9J185 XzBfNjJhMDIw
YV8xMTA1NzA0OTIwMzQwXzgyNTU5Ml85MzI5JyB4bWk6dXVpZD0nNzhmOWMz ZDYtNWNkNC0x
MWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdNb2RlbCcgdmlzaWJpbGl0 eT0ncHVibGlj
Jy8+CgkJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6UGFja2FnZScgeG1pOmlkPSdfMTJfMEVBUGJldGFfYmUw MDMwMV8xMTU3
NTI5MzkyMzk0XzIwMjYwMl8xJyB4bWk6dXVpZD0nZDkxODE1YjUtNWNkNC0x MWRlLTk1Njct
MTVhOWM2MjFmZjA3JyBuYW1lPSdQcmltaXRpdmVUeXBlcycgdmlzaWJpbGl0 eT0ncHVibGlj
Jz4KCQkJCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9J3VtbDpQcmlt aXRpdmVUeXBl
JyB4bWk6aWQ9J185XzBfMl85MWEwMjk1XzExMTAyNzQ3MTM5OTVfMjk3MDU0 XzAnIHhtaTp1
dWlkPSdkOTE4MTViNi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5h bWU9J1N0cmlu
ZycgdmlzaWJpbGl0eT0ncHVibGljJy8+CgkJCQkJCTwvcGFja2FnZWRFbGVt ZW50PgoJCQkJ
CTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1p OnR5cGU9J3Vt
bDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1NzA1MDY0MjMz XzY3NjM4M18x
MTA0MicgeG1pOnV1aWQ9Jzc4ZjllYWU3LTVjZDQtMTFkZS05NTY3LTE1YTlj NjIxZmYwNycg
bmFtZT0nQ2xhc3NlcycgdmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCQkJPHBh Y2thZ2VkRWxl
bWVudCB4bWk6dHlwZT0ndW1sOlBhY2thZ2UnIHhtaTppZD0nXzlfMF82MmEw MjBhXzExMDU3
MDUwNjQzMjNfOTU3MTU1XzExMDQ5JyB4bWk6dXVpZD0nNzhmOWVhZTgtNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdLZXJuZWwnIHZpc2liaWxpdHk9J3B1 YmxpYyc+CgkJ
CQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6Q2xhc3MnIHht aTppZD0nXzlf
MF82MmEwMjBhXzExMDYyOTYwNzE5NzdfNjE2MDdfMCcgeG1pOnV1aWQ9J2Q5 MTgxNWI3LTVj
ZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nRGlhZ3JhbScgdmlz aWJpbGl0eT0n
cHVibGljJz4KCQkJCQkJCQk8eG1pOkV4dGVuc2lvbiBleHRlbmRlcj0nTWFn aWNEcmF3IFVN
TCAxNi4wJyBleHRlbmRlcklEPSdNYWdpY0RyYXcgVU1MIDE2LjAnPgoJCQkJ CQkJCQk8bW9k
ZWxFeHRlbnNpb24vPgoJCQkJCQkJCTwveG1pOkV4dGVuc2lvbj4KCQkJCQkJ CTwvcGFja2Fn
ZWRFbGVtZW50PgoJCQkJCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0n dW1sOkNsYXNz
JyB4bWk6aWQ9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg0ODA3XzM3MTU2MV83 NzQxJyB4bWk6
dXVpZD0nNzhmOWVhZTktNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBu YW1lPSdFbGVt
ZW50JyB2aXNpYmlsaXR5PSdwdWJsaWMnLz4KCQkJCQkJCTxwYWNrYWdlZEVs ZW1lbnQgeG1p
OnR5cGU9J3VtbDpDbGFzcycgeG1pOmlkPSdfOV8wXzYyYTAyMGFfMTEwNTcw NDg4NTI5OF83
MTMyOTJfNzkxMycgeG1pOnV1aWQ9Jzc4ZjllYWVhLTVjZDQtMTFkZS05NTY3 LTE1YTljNjIx
ZmYwNycgbmFtZT0nUGFja2FnZScgdmlzaWJpbGl0eT0ncHVibGljJy8+CgkJ CQkJCTwvcGFj
a2FnZWRFbGVtZW50PgoJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJPC9w YWNrYWdlZEVs
ZW1lbnQ+CgkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6UHJv ZmlsZScgeG1p
OmlkPSdfOV8wX2JlMDAzMDFfMTEwODA1MDU4MjM0M181Mjc0MDBfMTA4NDcn IHhtaTp1dWlk
PSc3OGY5ZWFlYi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9 J1VNTCBTdGFu
ZGFyZCBQcm9maWxlJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJCTxwYWNr YWdlZEVsZW1l
bnQgeG1pOnR5cGU9J3VtbDpFeHRlbnNpb24nIHhtaTppZD0nXzEwXzBFQVBi ZXRhX2JlMDAz
MDFfMTEyMzA4MTc3MTEzNl84MjQ4ODNfOTcnIHhtaTp1dWlkPSc3OGZhMTFm Yy01Y2Q0LTEx
ZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJ CQkJCTxtZW1i
ZXJFbmQgeG1pOmlkcmVmPSdfMTBfMEVBUGJldGFfYmUwMDMwMV8xMTIzMDgx NzcxMTM2XzU4
MDQyM185OScvPgoJCQkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEwXzBF QVBiZXRhX2Jl
MDAzMDFfMTEyMzA4MTc3MTEzNl8yNzE0MDZfOTgnLz4KCQkJCQkJPG93bmVk RW5kIHhtaTp0
eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9i ZTAwMzAxXzEx
MjMwODE3NzExMzZfNTgwNDIzXzk5JyB4bWk6dXVpZD0nNzhmYTM5MGQtNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdleHRlbnNpb25fbWV0YW1vZGVsJyB2 aXNpYmlsaXR5
PSdwcml2YXRlJyBhZ2dyZWdhdGlvbj0nY29tcG9zaXRlJyB0eXBlPSdtYWdp Y2RyYXdfMTA0
Njg2MTQyMTIzNl82MDEyNDBfMzYnLz4KCQkJCQk8L3BhY2thZ2VkRWxlbWVu dD4KCQkJCQk8
cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6U3RlcmVvdHlwZScgeG1p OmlkPSdtYWdp
Y2RyYXdfMTA0Njg2MTQyMTIzNl82MDEyNDBfMzYnIHhtaTp1dWlkPSc3OGZh MzkwZS01Y2Q0
LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J21ldGFtb2RlbCcgdmlz aWJpbGl0eT0n
cHVibGljJz4KCQkJCQkJPG93bmVkQXR0cmlidXRlIHhtaTp0eXBlPSd1bWw6 UHJvcGVydHkn
IHhtaTppZD0nXzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MTEzNl8y NzE0MDZfOTgn
IHhtaTp1dWlkPSc3OGZhNjAxZi01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZm MDcnIG5hbWU9
J2Jhc2VfTW9kZWwnIHZpc2liaWxpdHk9J3ByaXZhdGUnIHR5cGU9J185XzBf NjJhMDIwYV8x
MTA1NzA0OTIwMzQwXzgyNTU5Ml85MzI5Jy8+CgkJCQkJPC9wYWNrYWdlZEVs ZW1lbnQ+CgkJ
CQk8L3BhY2thZ2VkRWxlbWVudD4KCQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1p OnR5cGU9J3Vt
bDpQcm9maWxlJyB4bWk6aWQ9J19iZTAwMzAxXzEwNzMzOTQzNTEzMzFfNDQ1 NTgwXzInIHht
aTp1dWlkPSc3OGZiNzE5MC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcn IG5hbWU9J01h
Z2ljRHJhdyBQcm9maWxlJyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJCTxw YWNrYWdlZEVs
ZW1lbnQgeG1pOnR5cGU9J3VtbDpQYWNrYWdlJyB4bWk6aWQ9J185XzBfMl9i ZTAwMzAxXzEx
MTE2NzAyMTc1OTZfMzM2MTY4XzYyNycgeG1pOnV1aWQ9J2Q5MTg2M2Q4LTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nZGF0YXR5cGVzJyB2aXNpYmlsaXR5 PSdwdWJsaWMn
PgoJCQkJCQk8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSd1bWw6RGF0YVR5 cGUnIHhtaTpp
ZD0nZWVlXzEwNDU0NjcxMDAzMjNfODQ4MDM0XzY2JyB4bWk6dXVpZD0nZDkx ODYzZDktNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdkb3VibGUnIHZpc2li aWxpdHk9J3B1
YmxpYycvPgoJCQkJCTwvcGFja2FnZWRFbGVtZW50PgoJCQkJCTxwYWNrYWdl ZEVsZW1lbnQg
eG1pOnR5cGU9J3VtbDpFeHRlbnNpb24nIHhtaTppZD0nXzEwXzBFQVBiZXRh X2JlMDAzMDFf
MTEyMzA4MTc3MjQ5OF81MzE4NjNfMzU1JyB4bWk6dXVpZD0nZDkxODYzZGEt NWNkNC0xMWRl
LTk1NjctMTVhOWM2MjFmZjA3JyB2aXNpYmlsaXR5PSdwdWJsaWMnPgoJCQkJ CQk8bWVtYmVy
RW5kIHhtaTppZHJlZj0nXzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3 MjQ5OF80MzU5
OTNfMzU3Jy8+CgkJCQkJCTxtZW1iZXJFbmQgeG1pOmlkcmVmPSdfMTBfMEVB UGJldGFfYmUw
MDMwMV8xMTIzMDgxNzcyNDk4XzkwMTg2NF8zNTYnLz4KCQkJCQkJPG93bmVk RW5kIHhtaTp0
eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9i ZTAwMzAxXzEx
MjMwODE3NzI0OThfNDM1OTkzXzM1NycgeG1pOnV1aWQ9J2Q5MTg4YWViLTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nZXh0ZW5zaW9uX0RpYWdyYW1JbmZv JyB2aXNpYmls
aXR5PSdwcml2YXRlJyBhZ2dyZWdhdGlvbj0nY29tcG9zaXRlJyB0eXBlPSdf OV8wX2JlMDAz
MDFfMTEwODA0NDM4MDYxNV8xNTA0ODdfMCcvPgoJCQkJCTwvcGFja2FnZWRF bGVtZW50PgoJ
CQkJCTxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9J3VtbDpFeHRlbnNpb24n IHhtaTppZD0n
XzEwXzBFQVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MjA5OF8zMjM4OTdfMjc0 JyB4bWk6dXVp
ZD0nNzhmYjk4YTEtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyB2aXNp YmlsaXR5PSdw
dWJsaWMnPgoJCQkJCQk8bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEwXzBFQVBi ZXRhX2JlMDAz
MDFfMTEyMzA4MTc3MjEwOF82MjQ1OTRfMjc2Jy8+CgkJCQkJCTxtZW1iZXJF bmQgeG1pOmlk
cmVmPSdfMTBfMEVBUGJldGFfYmUwMDMwMV8xMTIzMDgxNzcyMDk4XzQxMTg2 Ml8yNzUnLz4K
CQkJCQkJPG93bmVkRW5kIHhtaTp0eXBlPSd1bWw6RXh0ZW5zaW9uRW5kJyB4 bWk6aWQ9J18x
MF8wRUFQYmV0YV9iZTAwMzAxXzExMjMwODE3NzIxMDhfNjI0NTk0XzI3Nicg eG1pOnV1aWQ9
Jzc4ZmI5OGEyLTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0n ZXh0ZW5zaW9u
X0ludmlzaWJsZVN0ZXJlb3R5cGUnIHZpc2liaWxpdHk9J3ByaXZhdGUnIGFn Z3JlZ2F0aW9u
PSdjb21wb3NpdGUnIHR5cGU9J185XzBfYmUwMDMwMV8xMTA4MDQ0NzIxMjQ1 XzIzNjU4OF80
MTEnLz4KCQkJCQk8L3BhY2thZ2VkRWxlbWVudD4KCQkJCQk8cGFja2FnZWRF bGVtZW50IHht
aTp0eXBlPSd1bWw6RXh0ZW5zaW9uJyB4bWk6aWQ9J18xMl8xXzhmOTAyOTFf MTE3Mzk2Mzkz
OTkzN18zMjM1NzRfOTgnIHhtaTp1dWlkPSc3OGZiOThhMy01Y2Q0LTExZGUt OTU2Ny0xNWE5
YzYyMWZmMDcnIHZpc2liaWxpdHk9J3B1YmxpYyc+CgkJCQkJCTxtZW1iZXJF bmQgeG1pOmlk
cmVmPSdfMTJfMV84ZjkwMjkxXzExNzM5NjM5Mzk5MzdfMzk5NjMwXzEwMCcv PgoJCQkJCQk8
bWVtYmVyRW5kIHhtaTppZHJlZj0nXzEyXzFfOGY5MDI5MV8xMTczOTYzOTM5 OTM3XzUyMzE2
Xzk5Jy8+CgkJCQkJCTxvd25lZEVuZCB4bWk6dHlwZT0ndW1sOkV4dGVuc2lv bkVuZCcgeG1p
OmlkPSdfMTJfMV84ZjkwMjkxXzExNzM5NjM5Mzk5MzdfMzk5NjMwXzEwMCcg eG1pOnV1aWQ9
Jzc4ZmI5OGE0LTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycgbmFtZT0n ZXh0ZW5zaW9u
X2F1eGlsaWFyeVJlc291cmNlJyB2aXNpYmlsaXR5PSdwcml2YXRlJyBhZ2dy ZWdhdGlvbj0n
Y29tcG9zaXRlJyB0eXBlPSdfMTJfMV84ZjkwMjkxXzExNzM5NjMzMjM4NzVf NjYyNjEyXzk4
Jy8+CgkJCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2VkRWxl bWVudCB4bWk6
dHlwZT0ndW1sOlN0ZXJlb3R5cGUnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzEx MDgwNDQzODA2
MTVfMTUwNDg3XzAnIHhtaTp1dWlkPSdkOTE4OGFlYy01Y2Q0LTExZGUtOTU2 Ny0xNWE5YzYy
MWZmMDcnIG5hbWU9J0RpYWdyYW1JbmZvJyB2aXNpYmlsaXR5PSdwdWJsaWMn PgoJCQkJCQk8
Z2VuZXJhbGl6YXRpb24geG1pOnR5cGU9J3VtbDpHZW5lcmFsaXphdGlvbicg eG1pOmlkPSdf
OV8wX2JlMDAzMDFfMTEwODA0NDk4OTA3MF80NjkzMDdfNDM2JyB4bWk6dXVp ZD0nZDkxODhh
ZWQtNWNkNC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBnZW5lcmFsPSdfOV8w X2JlMDAzMDFf
MTEwODA0NDcyMTI0NV8yMzY1ODhfNDExJy8+CgkJCQkJCTxvd25lZEF0dHJp YnV0ZSB4bWk6
dHlwZT0ndW1sOlByb3BlcnR5JyB4bWk6aWQ9J19iZTAwMzAxXzEwNzMzMDYx ODg2MjlfNTM3
NzkxXzInIHhtaTp1dWlkPSdkOTE4YjFmZS01Y2Q0LTExZGUtOTU2Ny0xNWE5 YzYyMWZmMDcn
IG5hbWU9J0NyZWF0aW9uIGRhdGUnIHZpc2liaWxpdHk9J3ByaXZhdGUnLz4K CQkJCQkJPG93
bmVkQXR0cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0n X2JlMDAzMDFf
MTA3NzcyNjc3MDEyOF84NzEzNjZfMScgeG1pOnV1aWQ9J2Q5MThiMWZmLTVj ZDQtMTFkZS05
NTY3LTE1YTljNjIxZmYwNycgbmFtZT0nQXV0aG9yJyB2aXNpYmlsaXR5PSdw cml2YXRlJy8+
CgkJCQkJCTxvd25lZEF0dHJpYnV0ZSB4bWk6dHlwZT0ndW1sOlByb3BlcnR5 JyB4bWk6aWQ9
J19iZTAwMzAxXzEwNzMzOTQzNDUzMjJfOTIyNTUyXzEnIHhtaTp1dWlkPSdk OTE4YjIwMC01
Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIG5hbWU9J01vZGlmaWNhdGlv biBkYXRlJyB2
aXNpYmlsaXR5PSdwcml2YXRlJy8+CgkJCQkJCTxvd25lZEF0dHJpYnV0ZSB4 bWk6dHlwZT0n
dW1sOlByb3BlcnR5JyB4bWk6aWQ9J18xMF8wRUFQYmV0YV9iZTAwMzAxXzEx MjMwODE3NzI0
OThfOTAxODY0XzM1NicgeG1pOnV1aWQ9J2Q5MThiMjAxLTVjZDQtMTFkZS05 NTY3LTE1YTlj
NjIxZmYwNycgbmFtZT0nYmFzZV9EaWFncmFtJyB2aXNpYmlsaXR5PSdwcml2 YXRlJyB0eXBl
PSdfOV8wXzYyYTAyMGFfMTEwNjI5NjA3MTk3N182MTYwN18wJy8+CgkJCQkJ PC9wYWNrYWdl
ZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0ndW1s OlN0ZXJlb3R5
cGUnIHhtaTppZD0nXzlfMF9iZTAwMzAxXzExMDgwNDQ3MjEyNDVfMjM2NTg4 XzQxMScgeG1p
OnV1aWQ9Jzc4ZmJiZmI1LTVjZDQtMTFkZS05NTY3LTE1YTljNjIxZmYwNycg bmFtZT0nSW52
aXNpYmxlU3RlcmVvdHlwZScgdmlzaWJpbGl0eT0ncHVibGljJz4KCQkJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzEwXzBF QVBiZXRhX2Jl
MDAzMDFfMTEyMzA4MTc3MjA5OF80MTE4NjJfMjc1JyB4bWk6dXVpZD0nNzhm YmJmYjYtNWNk
NC0xMWRlLTk1NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdiYXNlX0VsZW1lbnQn IHZpc2liaWxp
dHk9J3ByaXZhdGUnIHR5cGU9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg0ODA3 XzM3MTU2MV83
NzQxJy8+CgkJCQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQkJPHBhY2thZ2Vk RWxlbWVudCB4
bWk6dHlwZT0ndW1sOlN0ZXJlb3R5cGUnIHhtaTppZD0nXzEyXzFfOGY5MDI5 MV8xMTczOTYz
MzIzODc1XzY2MjYxMl85OCcgeG1pOnV1aWQ9Jzc4ZmJiZmI3LTVjZDQtMTFk ZS05NTY3LTE1
YTljNjIxZmYwNycgbmFtZT0nYXV4aWxpYXJ5UmVzb3VyY2UnIHZpc2liaWxp dHk9J3B1Ymxp
Yyc+CgkJCQkJCTxnZW5lcmFsaXphdGlvbiB4bWk6dHlwZT0ndW1sOkdlbmVy YWxpemF0aW9u
JyB4bWk6aWQ9J18xNV8wXzhmOTAyOTFfMTE5Njg2NjYzNDUzN182ODA2MDNf OTgnIHhtaTp1
dWlkPSc3OGZiYmZiOC01Y2Q0LTExZGUtOTU2Ny0xNWE5YzYyMWZmMDcnIGdl bmVyYWw9J185
XzBfYmUwMDMwMV8xMTA4MDQ0NzIxMjQ1XzIzNjU4OF80MTEnLz4KCQkJCQkJ PG93bmVkQXR0
cmlidXRlIHhtaTp0eXBlPSd1bWw6UHJvcGVydHknIHhtaTppZD0nXzEyXzFf OGY5MDI5MV8x
MTczOTYzOTM5OTM3XzUyMzE2Xzk5JyB4bWk6dXVpZD0nNzhmYmJmYjktNWNk NC0xMWRlLTk1
NjctMTVhOWM2MjFmZjA3JyBuYW1lPSdiYXNlX1BhY2thZ2UnIHZpc2liaWxp dHk9J3ByaXZh
dGUnIHR5cGU9J185XzBfNjJhMDIwYV8xMTA1NzA0ODg1Mjk4XzcxMzI5Ml83 OTEzJy8+CgkJ
CQkJPC9wYWNrYWdlZEVsZW1lbnQ+CgkJCQk8L3BhY2thZ2VkRWxlbWVudD4K CQkJPC9wcm94
eT4KCQk8L3ByaXZhdGVQcm94aWVzPgoJCTxzdGVyZW90eXBlQXBwbGljYXRp b25Gb3JQcm94
aWVzPgoJCQk8VU1MX1N0YW5kYXJkX1Byb2ZpbGU6bWV0YW1vZGVsIHhtaTpp ZD0nXzEwXzBF
QVBiZXRhX2JlMDAzMDFfMTEyMzA4MTc3MTEyNl8yMzMzNzNfOTUnIGJhc2Vf TW9kZWw9J185
XzBfYmUwMDMwMV8xMTA4MDUzNzYxMTk0XzQ2NzYzNV8xMTQ2MycvPgoJCQk8 TWFnaWNEcmF3
X1Byb2ZpbGU6YXV4aWxpYXJ5UmVzb3VyY2UgeG1pOmlkPSdfMTJfMV84Zjkw MjkxXzExNzQ0
MTE1OTg2MjVfNTA0NTg3Xzk4JyBiYXNlX1BhY2thZ2U9J21hZ2ljZHJhd191 bWxfc3RhbmRh
cmRfcHJvZmlsZV92XzAwMDEnLz4KCQk8L3N0ZXJlb3R5cGVBcHBsaWNhdGlv bkZvclByb3hp
ZXM+CgkJPHN0ZXJlb3R5cGVzSURTPgoJCQk8c3RlcmVvdHlwZSBuYW1lPSdV TUxfU3RhbmRh
cmRfUHJvZmlsZTptZXRhbW9kZWwnIHN0ZXJlb3R5cGVJRD0nbWFnaWNkcmF3 XzEwNDY4NjE0
MjEyMzZfNjAxMjQwXzM2Jy8+CgkJCTxzdGVyZW90eXBlIG5hbWU9J01hZ2lj RHJhd19Qcm9m
aWxlOkRpYWdyYW1JbmZvJyBzdGVyZW90eXBlSUQ9J185XzBfYmUwMDMwMV8x MTA4MDQ0Mzgw
NjE1XzE1MDQ4N18wJy8+CgkJCTx0YWcgbmFtZT0nTWFnaWNEcmF3X1Byb2Zp bGU6RGlhZ3Jh
bUluZm86Q3JlYXRpb25fZGF0ZScgdGFnSUQ9J19iZTAwMzAxXzEwNzMzMDYx ODg2MjlfNTM3
NzkxXzInLz4KCQkJPHRhZyBuYW1lPSdNYWdpY0RyYXdfUHJvZmlsZTpEaWFn cmFtSW5mbzpB
dXRob3InIHRhZ0lEPSdfYmUwMDMwMV8xMDc3NzI2NzcwMTI4Xzg3MTM2Nl8x Jy8+CgkJCTx0
YWcgbmFtZT0nTWFnaWNEcmF3X1Byb2ZpbGU6RGlhZ3JhbUluZm86TW9kaWZp Y2F0aW9uX2Rh
dGUnIHRhZ0lEPSdfYmUwMDMwMV8xMDczMzk0MzQ1MzIyXzkyMjU1Ml8xJy8+ CgkJCTxzdGVy
ZW90eXBlIG5hbWU9J01hZ2ljRHJhd19Qcm9maWxlOmF1eGlsaWFyeVJlc291 cmNlJyBzdGVy
ZW90eXBlSUQ9J18xMl8xXzhmOTAyOTFfMTE3Mzk2MzMyMzg3NV82NjI2MTJf OTgnLz4KCQk8
L3N0ZXJlb3R5cGVzSURTPgoJCTxpbmRleC8+CgkJPG9wdGlvbnM+CgkJCTxt ZEVsZW1lbnQg
ZWxlbWVudENsYXNzPSdTdHlsZU1hbmFnZXInPgoJCQkJPG1kRWxlbWVudCBl bGVtZW50Q2xh
c3M9J1NpbXBsZVN0eWxlJz4KCQkJCQk8bmFtZT5TVFlMRV9NT0RFTF9FTEVN RU5UX0RFRkFV
TFRTPC9uYW1lPgoJCQkJCTxkZWZhdWx0IHhtaTp2YWx1ZT0nZmFsc2UnLz4K CQkJCTwvbWRF
bGVtZW50PgoJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1NpbXBsZVN0 eWxlJz4KCQkJ
CQk8bmFtZT5TVFlMRV9VU0VSX1BST1BFUlRJRVM8L25hbWU+CgkJCQkJPGRl ZmF1bHQgeG1p
OnZhbHVlPSdmYWxzZScvPgoJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNz PSdQcm9wZXJ0
eU1hbmFnZXInPgoJCQkJCQk8bmFtZT5QUk9KRUNUX0dFTkVSQUxfUFJPUEVS VElFUzwvbmFt
ZT4KCQkJCQkJPHByb3BlcnR5TWFuYWdlcklEPl8xNl8wXzFfODhlMDI3Nl8x MjQ1NDE4MDEy
ODAxXzU0NDM5N181NTU8L3Byb3BlcnR5TWFuYWdlcklEPgoJCQkJCQk8bWRF bGVtZW50IGVs
ZW1lbnRDbGFzcz0nQ2xhc3NQYXRoTGlzdFByb3BlcnR5Jz4KCQkJCQkJCTxw cm9wZXJ0eUlE
Pk1PRFVMRVNfRElSUzwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURl c2NyaXB0aW9u
SUQ+TU9EVUxFU19ESVJTX0RFU0NSSVBUSU9OPC9wcm9wZXJ0eURlc2NyaXB0 aW9uSUQ+CgkJ
CQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRmlsZVByb3BlcnR5Jz4K CQkJCQkJCQk8
dmFsdWU+Jmx0O3Byb2plY3QuZGlyJmd0OzwvdmFsdWU+CgkJCQkJCQkJPHNl bGVjdGlvbk1v
ZGUgeG1pOnZhbHVlPScwJy8+CgkJCQkJCQkJPGRpc3BsYXlGdWxsUGF0aCB4 bWk6dmFsdWU9
J3RydWUnLz4KCQkJCQkJCQk8dXNlRmlsZVByZXZpZXdlciB4bWk6dmFsdWU9 J2ZhbHNlJy8+
CgkJCQkJCQkJPGRpc3BsYXlBbGxGaWxlcyB4bWk6dmFsdWU9J3RydWUnLz4K CQkJCQkJCQk8
ZmlsZVR5cGU+RklMRV9UWVBFX0FOWTwvZmlsZVR5cGU+CgkJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdGaWxlUHJvcGVydHkn PgoJCQkJCQkJ
CTx2YWx1ZT4mbHQ7aW5zdGFsbC5yb290Jmd0Oy9wcm9maWxlczwvdmFsdWU+ CgkJCQkJCQkJ
PHNlbGVjdGlvbk1vZGUgeG1pOnZhbHVlPScwJy8+CgkJCQkJCQkJPGRpc3Bs YXlGdWxsUGF0
aCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCQk8dXNlRmlsZVByZXZpZXdl ciB4bWk6dmFs
dWU9J2ZhbHNlJy8+CgkJCQkJCQkJPGRpc3BsYXlBbGxGaWxlcyB4bWk6dmFs dWU9J3RydWUn
Lz4KCQkJCQkJCQk8ZmlsZVR5cGU+RklMRV9UWVBFX0FOWTwvZmlsZVR5cGU+ CgkJCQkJCQk8
L21kRWxlbWVudD4KCQkJCQkJCTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdG aWxlUHJvcGVy
dHknPgoJCQkJCQkJCTx2YWx1ZT4mbHQ7aW5zdGFsbC5yb290Jmd0Oy9tb2Rl bExpYnJhcmll
czwvdmFsdWU+CgkJCQkJCQkJPHNlbGVjdGlvbk1vZGUgeG1pOnZhbHVlPScw Jy8+CgkJCQkJ
CQkJPGRpc3BsYXlGdWxsUGF0aCB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJ CQk8dXNlRmls
ZVByZXZpZXdlciB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQkJPGRpc3Bs YXlBbGxGaWxl
cyB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCQk8ZmlsZVR5cGU+RklMRV9U WVBFX0FOWTwv
ZmlsZVR5cGU+CgkJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJCTxhbGxvd0Zp bGVzIHhtaTp2
YWx1ZT0nZmFsc2UnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVs ZW1lbnQgZWxl
bWVudENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJCQkJPHByb3BlcnR5 SUQ+U0hPV19E
T1RfTk9UQVRJT05fRk9SX0FTU09DSUFUSU9OUzwvcHJvcGVydHlJRD4KCQkJ CQkJCTxwcm9w
ZXJ0eURlc2NyaXB0aW9uSUQ+U0hPV19ET1RfTk9UQVRJT05fRk9SX0FTU09D SUFUSU9OU19E
RVNDUklQVElPTjwvcHJvcGVydHlEZXNjcmlwdGlvbklEPgoJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J0Jvb2xlYW5Qcm9wZXJ0 eSc+CgkJCQkJ
CQk8cHJvcGVydHlJRD5DSEFOR0VfT1dORVJTSElQX0ZPUl9OQVZJR0FCSUxJ VFk8L3Byb3Bl
cnR5SUQ+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlwdGlvbklEPkNIQU5HRV9P V05FUlNISVBf
Rk9SX05BVklHQUJJTElUWV9ERVNDUklQVElPTjwvcHJvcGVydHlEZXNjcmlw dGlvbklEPgoJ
CQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQk8L21kRWxl bWVudD4KCQkJ
CQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J0Nob2ljZVByb3BlcnR5Jz4K CQkJCQkJCTxw
cm9wZXJ0eUlEPlFOQU1FX0RJU1BMQVlfU1RZTEU8L3Byb3BlcnR5SUQ+CgkJ CQkJCQk8cHJv
cGVydHlEZXNjcmlwdGlvbklEPlFOQU1FX0RJU1BMQVlfU1RZTEVfREVTQ1JJ UFRJT048L3By
b3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2YWx1ZT5RTkFNRV9ESVNQ TEFZX1NUWUxF
X1JFTEFUSVZFPC92YWx1ZT4KCQkJCQkJCTxjaG9pY2UgeG1pOnZhbHVlPSdR TkFNRV9ESVNQ
TEFZX1NUWUxFX1JFTEFUSVZFXlFOQU1FX0RJU1BMQVlfU1RZTEVfQUJTT0xV VEUnLz4KCQkJ
CQkJCTxpbmRleCB4bWk6dmFsdWU9JzAnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+ CgkJCQkJCTxt
ZEVsZW1lbnQgZWxlbWVudENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJ CQkJPHByb3Bl
cnR5SUQ+QVVUT19TWU5DSFJPTklaRV9QQVJBTUVURVJTX0FORF9BUkdVTUVO VFM8L3Byb3Bl
cnR5SUQ+CgkJCQkJCQk8cHJvcGVydHlEZXNjcmlwdGlvbklEPkFVVE9fU1lO Q0hST05JWkVf
UEFSQU1FVEVSU19BTkRfQVJHVU1FTlRTX0RFU0NSSVBUSU9OPC9wcm9wZXJ0 eURlc2NyaXB0
aW9uSUQ+CgkJCQkJCQk8dmFsdWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJ CTwvbWRFbGVt
ZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nRWxlbWVudExp c3RQcm9wZXJ0
eSc+CgkJCQkJCQk8cHJvcGVydHlJRD5BQ1RJVkVfVkFMSURBVElPTl9TQ09Q RTwvcHJvcGVy
dHlJRD4KCQkJCQkJCTxwcm9wZXJ0eUdyb3VwPkFDVElWRV9WQUxJREFUSU9O PC9wcm9wZXJ0
eUdyb3VwPgoJCQkJCQkJPGRpc3BsYXlhYmxlVHlwZXMgeG1pOnZhbHVlPSdQ cm9wZXJ0eV5J
bnRlcmFjdGlvbkNvbnN0cmFpbnReU2VuZE9iamVjdEFjdGlvbl5DbGFzc15S ZWxhdGlvbnNo
aXBeU2VxdWVuY2VOb2RlXkxpdGVyYWxTcGVjaWZpY2F0aW9uXlJlY2xhc3Np ZnlPYmplY3RB
Y3Rpb25eVGltZUV2ZW50XkNsZWFyVmFyaWFibGVBY3Rpb25eQmVoYXZpb3Jh bEZlYXR1cmVe
RGF0YVN0b3JlTm9kZV5SZWdpb25eRmxvd0ZpbmFsTm9kZV5SZWFsaXphdGlv bl5SZW1vdmVT
dHJ1Y3R1cmFsRmVhdHVyZVZhbHVlQWN0aW9uXkRpYWdyYW1eVW5tYXJzaGFs bEFjdGlvbl5D
bGVhclN0cnVjdHVyYWxGZWF0dXJlQWN0aW9uXkNvbmRpdGlvbmFsTm9kZV5Q cm90b2NvbFRy
YW5zaXRpb25eQ29ubmVjdGlvblBvaW50UmVmZXJlbmNlXkZlYXR1cmVeQXNz b2NpYXRpb25D
bGFzc15BY3Rpb25FeGVjdXRpb25TcGVjaWZpY2F0aW9uXlJlYWRMaW5rQWN0 aW9uXlByb3Rv
Y29sU3RhdGVNYWNoaW5lXkJlaGF2aW9yZWRDbGFzc2lmaWVyXkV4Y2VwdGlv bkhhbmRsZXJe
QWN0aXZpdHlHcm91cF5UaW1lSW50ZXJ2YWxeRGVwbG95bWVudF5WYXJpYWJs ZV5TdGF0ZUlu
dmFyaWFudF5NZXNzYWdlXkxpdGVyYWxOdWxsXkxpbmtFbmREZXN0cnVjdGlv bkRhdGFeT3V0
cHV0UGluXlJlZHVjZUFjdGlvbl5SZWNlcHRpb25eVGVtcGxhdGVQYXJhbWV0 ZXJeQ29sbGFi
b3JhdGlvblVzZV5QYXJhbWV0ZXJTZXReQWRkVmFyaWFibGVWYWx1ZUFjdGlv bl5UZW1wbGF0
ZVBhcmFtZXRlclN1YnN0aXR1dGlvbl5JbnRlcmFjdGlvbk9wZXJhbmReSW5w dXRQaW5eUmVk
ZWZpbmFibGVUZW1wbGF0ZVNpZ25hdHVyZV5TdGFydE9iamVjdEJlaGF2aW9y QWN0aW9uXkxp
dGVyYWxCb29sZWFuXlNlbmRTaWduYWxFdmVudF5PcGFxdWVFeHByZXNzaW9u XlBhcmFtZXRl
cl5TdHJ1Y3R1cmFsRmVhdHVyZV5SZWFkRXh0ZW50QWN0aW9uXkluZm9ybWF0 aW9uRmxvd15E
YXRhVHlwZV5FbnVtZXJhdGlvbkxpdGVyYWxeQ29tcG9uZW50UmVhbGl6YXRp b25eUGFja2Fn
ZUltcG9ydF5MaW5rQWN0aW9uXkFic3RyYWN0aW9uXkNoYW5nZUV2ZW50Xk5v ZGVeTmFtZWRF
bGVtZW50XkJlaGF2aW9yXlN0cnVjdHVyZWRDbGFzc2lmaWVyXkxpdGVyYWxJ bnRlZ2VyXkV4
ZWN1dGlvbk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXkNvbnRyb2xGbG93XkFj Y2VwdEV2ZW50
QWN0aW9uXlNpZ25hbEV2ZW50XkRlY2lzaW9uTm9kZV5EZXBlbmRlbmN5Xkdl bmVyYWxpemF0
aW9uXlBhcnREZWNvbXBvc2l0aW9uXkNvbWJpbmVkRnJhZ21lbnReVGVtcGxh dGVTaWduYXR1
cmVeQ2xhc3NpZmllcl5DZW50cmFsQnVmZmVyTm9kZV5PcGVyYXRpb25eRmlu YWxTdGF0ZV5J
bnRlcmFjdGlvbl5JbnRlcnZhbF5TdGVyZW90eXBlXkR1cmF0aW9uXkxpbmtF bmREYXRhXk9j
Y3VycmVuY2VTcGVjaWZpY2F0aW9uXlN0cnVjdHVyZWRBY3Rpdml0eU5vZGVe SW50ZXJ2YWxD
b25zdHJhaW50XkluY2x1ZGVeRXhlY3V0YWJsZU5vZGVeT3BhcXVlQWN0aW9u XkNvbGxhYm9y
YXRpb25eQ2FsbEV2ZW50Xk9wZXJhdGlvblRlbXBsYXRlUGFyYW1ldGVyXklu aXRpYWxOb2Rl
XkNvbXBvbmVudF5NZXNzYWdlRW5kXkZ1bmN0aW9uQmVoYXZpb3JeT2JqZWN0 Tm9kZV5DcmVh
dGVPYmplY3RBY3Rpb25eVXNlQ2FzZV5NZXJnZU5vZGVeU2VuZE9wZXJhdGlv bkV2ZW50Xklt
YWdlXkVudW1lcmF0aW9uXkNvbnN0cmFpbnReQWRkU3RydWN0dXJhbEZlYXR1 cmVWYWx1ZUFj
dGlvbl5WZXJ0ZXheRWxlbWVudEltcG9ydF5EaXJlY3RlZFJlbGF0aW9uc2hp cF5FeHByZXNz
aW9uXkFjY2VwdENhbGxBY3Rpb25eV3JpdGVWYXJpYWJsZUFjdGlvbl5NZXNz YWdlRXZlbnRe
SW50ZXJmYWNlUmVhbGl6YXRpb25eUmFpc2VFeGNlcHRpb25BY3Rpb25eVGVt cGxhdGVhYmxl
RWxlbWVudF5UcmlnZ2VyXlZhbHVlU3BlY2lmaWNhdGlvbkFjdGlvbl5Db21t ZW50XlJlbW92
ZVZhcmlhYmxlVmFsdWVBY3Rpb25eQ2xhc3NpZmllclRlbXBsYXRlUGFyYW1l dGVyXlNlbmRT
aWduYWxBY3Rpb25eQ29ubmVjdG9yXkFjdG9yXkV4dGVuc2lvblBvaW50XlBh cmFtZXRlcmFi
bGVFbGVtZW50Xkxvb3BOb2RlXkNhbGxCZWhhdmlvckFjdGlvbl5Db25uZWN0 YWJsZUVsZW1l
bnReU3RhdGVNYWNoaW5lXkV2ZW50XlRyYW5zaXRpb25eQmVoYXZpb3JFeGVj dXRpb25TcGVj
aWZpY2F0aW9uXlN0YXRlXlNsb3ReVmFsdWVTcGVjaWZpY2F0aW9uXlVzYWdl XkFjdGl2aXR5
RmluYWxOb2RlXlRlc3RJZGVudGl0eUFjdGlvbl5PcGFxdWVCZWhhdmlvcl5J bnZvY2F0aW9u
QWN0aW9uXlByb2ZpbGVeTW9kZWxeRm9ya05vZGVeQWN0aXZpdHlQYXJ0aXRp b25eQ29uc2lk
ZXJJZ25vcmVGcmFnbWVudF5NZXNzYWdlT2NjdXJyZW5jZVNwZWNpZmljYXRp b25eTGlua0Vu
ZENyZWF0aW9uRGF0YV5UaW1lRXhwcmVzc2lvbl5BY3Rpb25JbnB1dFBpbl5Q cm90b2NvbENv
bmZvcm1hbmNlXkxpdGVyYWxTdHJpbmdeRGVzdHJveUxpbmtBY3Rpb25eUmVh ZElzQ2xhc3Np
ZmllZE9iamVjdEFjdGlvbl5UeXBlXkFjdGlvbl5FeGVjdXRpb25FbnZpcm9u bWVudF5BcnRp
ZmFjdF5EdXJhdGlvbkNvbnN0cmFpbnReT2JzZXJ2YXRpb25eV3JpdGVTdHJ1 Y3R1cmFsRmVh
dHVyZUFjdGlvbl5SZWFkVmFyaWFibGVBY3Rpb25eRXhwYW5zaW9uUmVnaW9u XlNpZ25hbF5B
bnlSZWNlaXZlRXZlbnReRXh0ZW5zaW9uXk11bHRpcGxpY2l0eUVsZW1lbnRe RW5jYXBzdWxh
dGVkQ2xhc3NpZmllcl5MaXRlcmFsVW5saW1pdGVkTmF0dXJhbF5TdHJpbmdF eHByZXNzaW9u
XlBhY2thZ2VhYmxlRWxlbWVudF5TdWJzdGl0dXRpb25eQ2xlYXJBc3NvY2lh dGlvbkFjdGlv
bl5FeHRlbmReR2VuZXJhbGl6YXRpb25TZXReQ3JlYXRlTGlua0FjdGlvbl5E ZXBsb3ltZW50
VGFyZ2V0XkxpZmVsaW5lXkludGVycnVwdGlibGVBY3Rpdml0eVJlZ2lvbl5K b2luTm9kZV5J
bmZvcm1hdGlvbkl0ZW1eVHlwZWRFbGVtZW50XkNyZWF0ZUxpbmtPYmplY3RB Y3Rpb25eT2Jq
ZWN0Rmxvd15UZW1wbGF0ZUJpbmRpbmdeR2VuZXJhbE9yZGVyaW5nXlBhY2th Z2VeQ29ubmVj
dGFibGVFbGVtZW50VGVtcGxhdGVQYXJhbWV0ZXJeUmVhZFN0cnVjdHVyYWxG ZWF0dXJlQWN0
aW9uXlBhY2thZ2VNZXJnZV5SZWNlaXZlU2lnbmFsRXZlbnReSW5zdGFuY2VW YWx1ZV5Db250
aW51YXRpb25eSW50ZXJmYWNlXkV4ZWN1dGlvblNwZWNpZmljYXRpb25eUHJp bWl0aXZlVHlw
ZV5TdHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5Ccm9hZGNhc3RTaWduYWxBY3Rp b25eQ2FsbEFj
dGlvbl5JbnN0YW5jZVNwZWNpZmljYXRpb25eQ2xhdXNlXkZpbmFsTm9kZV5F eHRlbnNpb25F
bmReUXVhbGlmaWVyVmFsdWVeQWN0aXZpdHleUGluXkludGVyYWN0aW9uVXNl XkdhdGVeVmFs
dWVQaW5eQ2FsbE9wZXJhdGlvbkFjdGlvbl5JbnRlcmFjdGlvbkZyYWdtZW50 XlJlYWRTZWxm
QWN0aW9uXlJlY2VpdmVPcGVyYXRpb25FdmVudF5UaW1lT2JzZXJ2YXRpb25e RWxlbWVudFZh
bHVlXkNvbnRyb2xOb2RlXkNvbW11bmljYXRpb25QYXRoXlBvcnReRGVwbG95 bWVudFNwZWNp
ZmljYXRpb25eRGVzdHJ1Y3Rpb25FdmVudF5Qcm9maWxlQXBwbGljYXRpb25e UmVhZExpbmtP
YmplY3RFbmRRdWFsaWZpZXJBY3Rpb25eRGV2aWNlXldyaXRlTGlua0FjdGlv bl5EdXJhdGlv
bk9ic2VydmF0aW9uXkRlcGxveWVkQXJ0aWZhY3ReQWN0aXZpdHlFZGdlXkRl c3Ryb3lPYmpl
Y3RBY3Rpb25eUmVkZWZpbmFibGVFbGVtZW50XkNyZWF0aW9uRXZlbnReQWN0 aXZpdHlOb2Rl
XlJlcGx5QWN0aW9uXk5hbWVzcGFjZV5Bc3NvY2lhdGlvbl5Db25uZWN0b3JF bmReTWFuaWZl
c3RhdGlvbl5WYXJpYWJsZUFjdGlvbl5EdXJhdGlvbkludGVydmFsXlBzZXVk b3N0YXRlXkV4
cGFuc2lvbk5vZGVeU3RhcnRDbGFzc2lmaWVyQmVoYXZpb3JBY3Rpb25eQWN0 aXZpdHlQYXJh
bWV0ZXJOb2RlXlRpbWVDb25zdHJhaW50XkVsZW1lbnReRXhlY3V0aW9uRXZl bnReUmVhZExp
bmtPYmplY3RFbmRBY3Rpb24nLz4KCQkJCQkJCTxzZWxlY3RhYmxlVHlwZXMg eG1pOnZhbHVl
PSdQcm9wZXJ0eV5JbnRlcmFjdGlvbkNvbnN0cmFpbnReU2VuZE9iamVjdEFj dGlvbl5DbGFz
c15SZWxhdGlvbnNoaXBeU2VxdWVuY2VOb2RlXkxpdGVyYWxTcGVjaWZpY2F0 aW9uXlJlY2xh
c3NpZnlPYmplY3RBY3Rpb25eVGltZUV2ZW50XkNsZWFyVmFyaWFibGVBY3Rp b25eQmVoYXZp
b3JhbEZlYXR1cmVeRGF0YVN0b3JlTm9kZV5SZWdpb25eRmxvd0ZpbmFsTm9k ZV5SZWFsaXph
dGlvbl5SZW1vdmVTdHJ1Y3R1cmFsRmVhdHVyZVZhbHVlQWN0aW9uXkRpYWdy YW1eVW5tYXJz
aGFsbEFjdGlvbl5DbGVhclN0cnVjdHVyYWxGZWF0dXJlQWN0aW9uXkNvbmRp dGlvbmFsTm9k
ZV5Qcm90b2NvbFRyYW5zaXRpb25eQ29ubmVjdGlvblBvaW50UmVmZXJlbmNl XkZlYXR1cmVe
QXNzb2NpYXRpb25DbGFzc15BY3Rpb25FeGVjdXRpb25TcGVjaWZpY2F0aW9u XlJlYWRMaW5r
QWN0aW9uXlByb3RvY29sU3RhdGVNYWNoaW5lXkJlaGF2aW9yZWRDbGFzc2lm aWVyXkV4Y2Vw
dGlvbkhhbmRsZXJeQWN0aXZpdHlHcm91cF5UaW1lSW50ZXJ2YWxeRGVwbG95 bWVudF5WYXJp
YWJsZV5TdGF0ZUludmFyaWFudF5NZXNzYWdlXkxpdGVyYWxOdWxsXkxpbmtF bmREZXN0cnVj
dGlvbkRhdGFeT3V0cHV0UGluXlJlZHVjZUFjdGlvbl5SZWNlcHRpb25eVGVt cGxhdGVQYXJh
bWV0ZXJeQ29sbGFib3JhdGlvblVzZV5QYXJhbWV0ZXJTZXReQWRkVmFyaWFi bGVWYWx1ZUFj
dGlvbl5UZW1wbGF0ZVBhcmFtZXRlclN1YnN0aXR1dGlvbl5JbnRlcmFjdGlv bk9wZXJhbmRe
SW5wdXRQaW5eUmVkZWZpbmFibGVUZW1wbGF0ZVNpZ25hdHVyZV5TdGFydE9i amVjdEJlaGF2
aW9yQWN0aW9uXkxpdGVyYWxCb29sZWFuXlNlbmRTaWduYWxFdmVudF5PcGFx dWVFeHByZXNz
aW9uXlBhcmFtZXRlcl5TdHJ1Y3R1cmFsRmVhdHVyZV5SZWFkRXh0ZW50QWN0 aW9uXkluZm9y
bWF0aW9uRmxvd15EYXRhVHlwZV5FbnVtZXJhdGlvbkxpdGVyYWxeQ29tcG9u ZW50UmVhbGl6
YXRpb25eUGFja2FnZUltcG9ydF5MaW5rQWN0aW9uXkFic3RyYWN0aW9uXkNo YW5nZUV2ZW50
Xk5vZGVeTmFtZWRFbGVtZW50XkJlaGF2aW9yXlN0cnVjdHVyZWRDbGFzc2lm aWVyXkxpdGVy
YWxJbnRlZ2VyXkV4ZWN1dGlvbk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXkNv bnRyb2xGbG93
XkFjY2VwdEV2ZW50QWN0aW9uXlNpZ25hbEV2ZW50XkRlY2lzaW9uTm9kZV5E ZXBlbmRlbmN5
XkdlbmVyYWxpemF0aW9uXlBhcnREZWNvbXBvc2l0aW9uXkNvbWJpbmVkRnJh Z21lbnReVGVt
cGxhdGVTaWduYXR1cmVeQ2xhc3NpZmllcl5DZW50cmFsQnVmZmVyTm9kZV5P cGVyYXRpb25e
RmluYWxTdGF0ZV5JbnRlcmFjdGlvbl5JbnRlcnZhbF5TdGVyZW90eXBlXkR1 cmF0aW9uXkxp
bmtFbmREYXRhXk9jY3VycmVuY2VTcGVjaWZpY2F0aW9uXlN0cnVjdHVyZWRB Y3Rpdml0eU5v
ZGVeSW50ZXJ2YWxDb25zdHJhaW50XkluY2x1ZGVeRXhlY3V0YWJsZU5vZGVe T3BhcXVlQWN0
aW9uXkNvbGxhYm9yYXRpb25eQ2FsbEV2ZW50Xk9wZXJhdGlvblRlbXBsYXRl UGFyYW1ldGVy
XkluaXRpYWxOb2RlXkNvbXBvbmVudF5NZXNzYWdlRW5kXkZ1bmN0aW9uQmVo YXZpb3JeT2Jq
ZWN0Tm9kZV5DcmVhdGVPYmplY3RBY3Rpb25eVXNlQ2FzZV5NZXJnZU5vZGVe U2VuZE9wZXJh
dGlvbkV2ZW50XkltYWdlXkVudW1lcmF0aW9uXkNvbnN0cmFpbnReQWRkU3Ry dWN0dXJhbEZl
YXR1cmVWYWx1ZUFjdGlvbl5WZXJ0ZXheRWxlbWVudEltcG9ydF5EaXJlY3Rl ZFJlbGF0aW9u
c2hpcF5FeHByZXNzaW9uXkFjY2VwdENhbGxBY3Rpb25eV3JpdGVWYXJpYWJs ZUFjdGlvbl5N
ZXNzYWdlRXZlbnReSW50ZXJmYWNlUmVhbGl6YXRpb25eUmFpc2VFeGNlcHRp b25BY3Rpb25e
VGVtcGxhdGVhYmxlRWxlbWVudF5UcmlnZ2VyXlZhbHVlU3BlY2lmaWNhdGlv bkFjdGlvbl5D
b21tZW50XlJlbW92ZVZhcmlhYmxlVmFsdWVBY3Rpb25eQ2xhc3NpZmllclRl bXBsYXRlUGFy
YW1ldGVyXlNlbmRTaWduYWxBY3Rpb25eQ29ubmVjdG9yXkFjdG9yXkV4dGVu c2lvblBvaW50
XlBhcmFtZXRlcmFibGVFbGVtZW50Xkxvb3BOb2RlXkNhbGxCZWhhdmlvckFj dGlvbl5Db25u
ZWN0YWJsZUVsZW1lbnReU3RhdGVNYWNoaW5lXkV2ZW50XlRyYW5zaXRpb25e QmVoYXZpb3JF
eGVjdXRpb25TcGVjaWZpY2F0aW9uXlN0YXRlXlNsb3ReVmFsdWVTcGVjaWZp Y2F0aW9uXlVz
YWdlXkFjdGl2aXR5RmluYWxOb2RlXlRlc3RJZGVudGl0eUFjdGlvbl5PcGFx dWVCZWhhdmlv
cl5JbnZvY2F0aW9uQWN0aW9uXlByb2ZpbGVeTW9kZWxeRm9ya05vZGVeQWN0 aXZpdHlQYXJ0
aXRpb25eQ29uc2lkZXJJZ25vcmVGcmFnbWVudF5NZXNzYWdlT2NjdXJyZW5j ZVNwZWNpZmlj
YXRpb25eTGlua0VuZENyZWF0aW9uRGF0YV5UaW1lRXhwcmVzc2lvbl5BY3Rp b25JbnB1dFBp
bl5Qcm90b2NvbENvbmZvcm1hbmNlXkxpdGVyYWxTdHJpbmdeRGVzdHJveUxp bmtBY3Rpb25e
UmVhZElzQ2xhc3NpZmllZE9iamVjdEFjdGlvbl5UeXBlXkFjdGlvbl5FeGVj dXRpb25FbnZp
cm9ubWVudF5BcnRpZmFjdF5EdXJhdGlvbkNvbnN0cmFpbnReT2JzZXJ2YXRp b25eV3JpdGVT
dHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5SZWFkVmFyaWFibGVBY3Rpb25eRXhw YW5zaW9uUmVn
aW9uXlNpZ25hbF5BbnlSZWNlaXZlRXZlbnReRXh0ZW5zaW9uXk11bHRpcGxp Y2l0eUVsZW1l
bnReRW5jYXBzdWxhdGVkQ2xhc3NpZmllcl5MaXRlcmFsVW5saW1pdGVkTmF0 dXJhbF5TdHJp
bmdFeHByZXNzaW9uXlBhY2thZ2VhYmxlRWxlbWVudF5TdWJzdGl0dXRpb25e Q2xlYXJBc3Nv
Y2lhdGlvbkFjdGlvbl5FeHRlbmReR2VuZXJhbGl6YXRpb25TZXReQ3JlYXRl TGlua0FjdGlv
bl5EZXBsb3ltZW50VGFyZ2V0XkxpZmVsaW5lXkludGVycnVwdGlibGVBY3Rp dml0eVJlZ2lv
bl5Kb2luTm9kZV5JbmZvcm1hdGlvbkl0ZW1eVHlwZWRFbGVtZW50XkNyZWF0 ZUxpbmtPYmpl
Y3RBY3Rpb25eT2JqZWN0Rmxvd15UZW1wbGF0ZUJpbmRpbmdeR2VuZXJhbE9y ZGVyaW5nXlBh
Y2thZ2VeQ29ubmVjdGFibGVFbGVtZW50VGVtcGxhdGVQYXJhbWV0ZXJeUmVh ZFN0cnVjdHVy
YWxGZWF0dXJlQWN0aW9uXlBhY2thZ2VNZXJnZV5SZWNlaXZlU2lnbmFsRXZl bnReSW5zdGFu
Y2VWYWx1ZV5Db250aW51YXRpb25eSW50ZXJmYWNlXkV4ZWN1dGlvblNwZWNp ZmljYXRpb25e
UHJpbWl0aXZlVHlwZV5TdHJ1Y3R1cmFsRmVhdHVyZUFjdGlvbl5Ccm9hZGNh c3RTaWduYWxB
Y3Rpb25eQ2FsbEFjdGlvbl5JbnN0YW5jZVNwZWNpZmljYXRpb25eQ2xhdXNl XkZpbmFsTm9k
ZV5FeHRlbnNpb25FbmReUXVhbGlmaWVyVmFsdWVeQWN0aXZpdHleUGluXklu dGVyYWN0aW9u
VXNlXkdhdGVeVmFsdWVQaW5eQ2FsbE9wZXJhdGlvbkFjdGlvbl5JbnRlcmFj dGlvbkZyYWdt
ZW50XlJlYWRTZWxmQWN0aW9uXlJlY2VpdmVPcGVyYXRpb25FdmVudF5UaW1l T2JzZXJ2YXRp
b25eRWxlbWVudFZhbHVlXkNvbnRyb2xOb2RlXkNvbW11bmljYXRpb25QYXRo XlBvcnReRGVw
bG95bWVudFNwZWNpZmljYXRpb25eRGVzdHJ1Y3Rpb25FdmVudF5Qcm9maWxl QXBwbGljYXRp
b25eUmVhZExpbmtPYmplY3RFbmRRdWFsaWZpZXJBY3Rpb25eRGV2aWNlXldy aXRlTGlua0Fj
dGlvbl5EdXJhdGlvbk9ic2VydmF0aW9uXkRlcGxveWVkQXJ0aWZhY3ReQWN0 aXZpdHlFZGdl
XkRlc3Ryb3lPYmplY3RBY3Rpb25eUmVkZWZpbmFibGVFbGVtZW50XkNyZWF0 aW9uRXZlbnRe
QWN0aXZpdHlOb2RlXlJlcGx5QWN0aW9uXk5hbWVzcGFjZV5Bc3NvY2lhdGlv bl5Db25uZWN0
b3JFbmReTWFuaWZlc3RhdGlvbl5WYXJpYWJsZUFjdGlvbl5EdXJhdGlvbklu dGVydmFsXlBz
ZXVkb3N0YXRlXkV4cGFuc2lvbk5vZGVeU3RhcnRDbGFzc2lmaWVyQmVoYXZp b3JBY3Rpb25e
QWN0aXZpdHlQYXJhbWV0ZXJOb2RlXlRpbWVDb25zdHJhaW50XkVsZW1lbnRe RXhlY3V0aW9u
RXZlbnReUmVhZExpbmtPYmplY3RFbmRBY3Rpb24nLz4KCQkJCQkJCTxjb250 YWlubWVudCB4
bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJCTxvcmRlcmVkIHhtaTp2YWx1ZT0n ZmFsc2UnLz4K
CQkJCQkJCTx2YWx1ZT5lZWVfMTA0NTQ2NzEwMDMxM18xMzU0MzZfMTwvdmFs dWU+CgkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0n Qm9vbGVhblBy
b3BlcnR5Jz4KCQkJCQkJCTxwcm9wZXJ0eUlEPkFDVElWRV9WQUxJREFUSU9O X0VYQ0xVREVf
RUxFTUVOVFNfRlJPTV9SRUFET05MWV9NT0RVTEVTPC9wcm9wZXJ0eUlEPgoJ CQkJCQkJPHBy
b3BlcnR5R3JvdXA+QUNUSVZFX1ZBTElEQVRJT048L3Byb3BlcnR5R3JvdXA+ CgkJCQkJCQk8
dmFsdWUgeG1pOnZhbHVlPSd0cnVlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJ CQkJCQk8bWRF
bGVtZW50IGVsZW1lbnRDbGFzcz0nQm9vbGVhblByb3BlcnR5Jz4KCQkJCQkJ CTxwcm9wZXJ0
eUlEPkFDVElWRV9WQUxJREFUSU9OX01BUktfSU5fTU9ERUw8L3Byb3BlcnR5 SUQ+CgkJCQkJ
CQk8cHJvcGVydHlHcm91cD5BQ1RJVkVfVkFMSURBVElPTjwvcHJvcGVydHlH cm91cD4KCQkJ
CQkJCTx2YWx1ZSB4bWk6dmFsdWU9J3RydWUnLz4KCQkJCQkJPC9tZEVsZW1l bnQ+CgkJCQkJ
CTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdGaWxlUHJvcGVydHknPgoJCQkJ CQkJPHByb3Bl
cnR5SUQ+RU1GX1VNTDJfT1VUUFVUX0xPQ0FUSU9OPC9wcm9wZXJ0eUlEPgoJ CQkJCQkJPHBy
b3BlcnR5R3JvdXA+R2VuZXJhbDwvcHJvcGVydHlHcm91cD4KCQkJCQkJCTxw cm9wZXJ0eURl
c2NyaXB0aW9uSUQ+RU1GX1VNTDJfT1VUUFVUX0xPQ0FUSU9OX0RFU0NSSVBU SU9OPC9wcm9w
ZXJ0eURlc2NyaXB0aW9uSUQ+CgkJCQkJCQk8c2VsZWN0aW9uTW9kZSB4bWk6 dmFsdWU9JzEn
Lz4KCQkJCQkJCTxkaXNwbGF5RnVsbFBhdGggeG1pOnZhbHVlPSd0cnVlJy8+ CgkJCQkJCQk8
dXNlRmlsZVByZXZpZXdlciB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQk8 ZGlzcGxheUFs
bEZpbGVzIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQkJPGZpbGVUeXBlPkZJ TEVfVFlQRV9B
Tlk8L2ZpbGVUeXBlPgoJCQkJCQk8L21kRWxlbWVudD4KCQkJCQkJPG1kRWxl bWVudCBlbGVt
ZW50Q2xhc3M9J0VsZW1lbnRMaXN0UHJvcGVydHknPgoJCQkJCQkJPHByb3Bl cnR5SUQ+SUdO
T1JFRF9BQ1RJVkVfVkFMSURBVElPTl9TVUlURVM8L3Byb3BlcnR5SUQ+CgkJ CQkJCQk8cHJv
cGVydHlHcm91cD5BQ1RJVkVfVkFMSURBVElPTjwvcHJvcGVydHlHcm91cD4K CQkJCQkJCTxj
b250YWlubWVudCB4bWk6dmFsdWU9J2ZhbHNlJy8+CgkJCQkJCQk8b3JkZXJl ZCB4bWk6dmFs
dWU9J2ZhbHNlJy8+CgkJCQkJCTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVt ZW50IGVsZW1l
bnRDbGFzcz0nRWxlbWVudFByb3BlcnR5Jz4KCQkJCQkJCTxwcm9wZXJ0eUlE PkFDVElWRV9W
QUxJREFUSU9OX1NFVkVSSVRZPC9wcm9wZXJ0eUlEPgoJCQkJCQkJPHByb3Bl cnR5R3JvdXA+
QUNUSVZFX1ZBTElEQVRJT048L3Byb3BlcnR5R3JvdXA+CgkJCQkJCQk8dXNl VW5zcGVjaWZp
ZWQgeG1pOnZhbHVlPSdmYWxzZScvPgoJCQkJCQkJPGNvbnRhaW5tZW50IHht aTp2YWx1ZT0n
ZmFsc2UnLz4KCQkJCQkJCTx0eXBlRWxlbWVudCB4bWk6dmFsdWU9J2ZhbHNl Jy8+CgkJCQkJ
CQk8cGFyZW50QXBwbGljYW50IHhtaTp2YWx1ZT0nZmFsc2UnLz4KCQkJCQkJ CTx2YWx1ZT5f
MTFfNV9mNzIwMzY4XzExNTk1Mjk3ODk5MzNfNTY3NTY5XzEyMDwvdmFsdWU+ CgkJCQkJCTwv
bWRFbGVtZW50PgoJCQkJCTwvbWRFbGVtZW50PgoJCQkJCTxtZEVsZW1lbnQg ZWxlbWVudENs
YXNzPSdQcm9wZXJ0eU1hbmFnZXInPgoJCQkJCQk8bmFtZT5QUk9KRUNUX0lO VklTSUJMRV9Q
Uk9QRVJUSUVTPC9uYW1lPgoJCQkJCQk8cHJvcGVydHlNYW5hZ2VySUQ+XzE2 XzBfMV84OGUw
Mjc2XzEyNDU0MTgwMTI4MDJfODA1Mzk4XzU1NjwvcHJvcGVydHlNYW5hZ2Vy SUQ+CgkJCQkJ
CTxtZEVsZW1lbnQgZWxlbWVudENsYXNzPSdOdW1iZXJQcm9wZXJ0eSc+CgkJ CQkJCQk8cHJv
cGVydHlJRD5UT09MX1RJUF9TVFlMRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxw cm9wZXJ0eURl
c2NyaXB0aW9uSUQ+VE9PTF9USVBfU1RZTEVfREVTQ1JJUFRJT048L3Byb3Bl cnR5RGVzY3Jp
cHRpb25JRD4KCQkJCQkJCTx2YWx1ZSB4bWk6dmFsdWU9JzAuMCcvPgoJCQkJ CQkJPGhpZ2hS
YW5nZSB4bWk6dmFsdWU9JzIuMCcvPgoJCQkJCQk8L21kRWxlbWVudD4KCQkJ CQkJPG1kRWxl
bWVudCBlbGVtZW50Q2xhc3M9J051bWJlclByb3BlcnR5Jz4KCQkJCQkJCTxw cm9wZXJ0eUlE
PkxBU1RfSU5URVJGQUNFX1NUWUxFPC9wcm9wZXJ0eUlEPgoJCQkJCQkJPHBy b3BlcnR5RGVz
Y3JpcHRpb25JRD5MQVNUX0lOVEVSRkFDRV9TVFlMRV9ERVNDUklQVElPTjwv cHJvcGVydHlE
ZXNjcmlwdGlvbklEPgoJCQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0nMi4wJy8+ CgkJCQkJCQk8
aGlnaFJhbmdlIHhtaTp2YWx1ZT0nMS4wJy8+CgkJCQkJCTwvbWRFbGVtZW50 PgoJCQkJCQk8
bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nQm9vbGVhblByb3BlcnR5Jz4KCQkJ CQkJCTxwcm9w
ZXJ0eUlEPklTX0JST1dTRVJfVklTSUJMRTwvcHJvcGVydHlJRD4KCQkJCQkJ CTxwcm9wZXJ0
eURlc2NyaXB0aW9uSUQ+SVNfQlJPV1NFUl9WSVNJQkxFX0RFU0NSSVBUSU9O PC9wcm9wZXJ0
eURlc2NyaXB0aW9uSUQ+CgkJCQkJCQk8dmFsdWUgeG1pOnZhbHVlPSd0cnVl Jy8+CgkJCQkJ
CTwvbWRFbGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0n Q2hvaWNlUHJv
cGVydHknPgoJCQkJCQkJPHByb3BlcnR5SUQ+QlJPV1NFUl9JVEVNX1RZUEVT PC9wcm9wZXJ0
eUlEPgoJCQkJCQkJPHByb3BlcnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0lU RU1fVFlQRVNf
REVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2 YWx1ZT48L3Zh
bHVlPgoJCQkJCQkJPGNob2ljZSB4bWk6dmFsdWU9J0xpdGVyYWxTdHJpbmde TGl0ZXJhbEJv
b2xlYW5eTGl0ZXJhbE51bGxeTGl0ZXJhbEludGVnZXJeTGl0ZXJhbFVubGlt aXRlZE5hdHVy
YWxeRXhwcmVzc2lvbl5PcGFxdWVFeHByZXNzaW9uXkluc3RhbmNlVmFsdWVe U3RyaW5nRXhw
cmVzc2lvbl5FbGVtZW50VmFsdWVeRHVyYXRpb25eRHVyYXRpb25JbnRlcnZh bF5UaW1lSW50
ZXJ2YWxeVGltZUV4cHJlc3Npb25eTWVzc2FnZU9jY3VycmVuY2VTcGVjaWZp Y2F0aW9uXkdh
dGVeSW1hZ2UnLz4KCQkJCQkJCTxpbmRleCB4bWk6dmFsdWU9Jy0xJy8+CgkJ CQkJCTwvbWRF
bGVtZW50PgoJCQkJCQk8bWRFbGVtZW50IGVsZW1lbnRDbGFzcz0nTnVtYmVy UHJvcGVydHkn
PgoJCQkJCQkJPHByb3BlcnR5SUQ+QlJPV1NFUl9ESVZJREVSX0xPQ0FUSU9O PC9wcm9wZXJ0
eUlEPgoJCQkJCQkJPHByb3BlcnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0RJ VklERVJfTE9D
QVRJT05fREVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJ CQkJCTx2YWx1
ZSB4bWk6dmFsdWU9Jy0xLjAnLz4KCQkJCQkJCTxsb3dSYW5nZSB4bWk6dmFs dWU9Jy0xLjAn
Lz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1lbnQgZWxlbWVu dENsYXNzPSdD
aG9pY2VQcm9wZXJ0eSc+CgkJCQkJCQk8cHJvcGVydHlJRD5CUk9XU0VSX0JP VU5EUzwvcHJv
cGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURlc2NyaXB0aW9uSUQ+QlJPV1NF Ul9CT1VORFNf
REVTQ1JJUFRJT048L3Byb3BlcnR5RGVzY3JpcHRpb25JRD4KCQkJCQkJCTx2 YWx1ZT48L3Zh
bHVlPgoJCQkJCQkJPGNob2ljZSB4bWk6dmFsdWU9JycvPgoJCQkJCQkJPGlu ZGV4IHhtaTp2
YWx1ZT0nLTEnLz4KCQkJCQkJPC9tZEVsZW1lbnQ+CgkJCQkJCTxtZEVsZW1l bnQgZWxlbWVu
dENsYXNzPSdCb29sZWFuUHJvcGVydHknPgoJCQkJCQkJPHByb3BlcnR5SUQ+ SVNfRE9DU19U
QUJfVklTSUJMRTwvcHJvcGVydHlJRD4KCQkJCQkJCTxwcm9wZXJ0eURlc2Ny aXB0aW9uSUQ+
SVNfRE9DU19UQUJfVklTSUJMRV9ERVNDUklQVElPTjwvcHJvcGVydHlEZXNj cmlwdGlvbklE
PgoJCQkJCQkJPHZhbHVlIHhtaTp2YWx1ZT0ndHJ1ZScvPgoJCQkJCQk8L21k RWxlbWVudD4K
CQkJCQkJPG1kRWxlbWVudCBlbGVtZW50Q2xhc3M9J1N0cmluZ1Byb3BlcnR5 Jz4KCQkJCQkJ
CTxwcm9wZXJ0eUlEPkJST1dTRVJfTEFZT1VUPC9wcm9wZXJ0eUlEPgoJCQkJ CQkJPHByb3Bl
cnR5RGVzY3JpcHRpb25JRD5CUk9XU0VSX0xBWU9VVF9ERVNDUklQVElPTjwv cHJvcGVydHlE
ZXNjcmlwdGlvbklEPgoJCQkJCQkJPHZhbHVlPjAgMTQgMCAwIDAgMCAwIDAg MCAwIDAgMCA0
IDAgMCAwIDMgMCAwIDAgMCAwIDAgMCAwIDggMCAwIDAgZCAwIDQ0IDAgNGYg MCA0MyAwIDU1
IDAgNGQgMCA0NSAwIDRlIDAgNTQgMCA0MSAwIDU0IDAgNDkgMCA0ZiAwIDRl IDAgMCA1OSBh
MCAwIDAgMCA4IDAgMCAwIDEgMCAwIDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAw IDAgNCAwIDAg
MCA4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZm IGZmIGZmIGZm
IGZmIGZmIGZmIDAgMCAxIDJjIDAgMCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAw IDAgMCA0IDAg
MCA1OSBhMCAwIDAgMCAyIDAgMCAwIDAgMCAwIDAgMCAwIDAgNyA3ZSAwIDAg MyBmYSAwIDAg
MCA4IDAgMCAwIDAgMCAwIGQ2IDk3IDAgMCAwIDMgMCAwIDgxIGFiIDAgMCA1 OSBhMCAwIDAg
NWYgNzIgMCAwIDAgMiAwIDAgMTMgZjYgMCAwIGQ2IDk3IDAgMCAwIDAgMCAw IDAgMiAwIDAg
ZDMgYTUgMCAwIGQ2IDk3IDAgMCBiYSBlNCAwIDAgMTMgZjYgMCAwIDAgMSAw IDAgMCAyIDAg
MCAxMyBmNiAwIDAgMjAgNzkgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgZCAwIDQ0
IDAgNDkgMCA0MSAwIDQ3IDAgNTIgMCA0MSAwIDRkIDAgNTMgMCA1ZiAwIDU0 IDAgNTIgMCA0
NSAwIDQ1IDAgMCAyOSBiNyAwIDAgMCA4IDAgMCAwIDAgMCAwIDAgMSAwIDAg MCBmIDAgMCAw
IDQgMCAwIDAgNCAwIDAgMCA4IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4 IDAgMCAwIGM4
IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIDAgMCAxIDJjIDAgMCAwIGM4IDAg MCAwIDAgMCAw
IDAgMSAwIDAgMCA0IDAgMCAyOSBiNyAwIDAgMCAyIDAgMCAwIDAgMCAwIDAg MCAwIDAgNyA3
ZSAwIDAgMyBmYSAwIDAgMCA4IDAgMCAwIDAgMCAwIGQzIGE1IDAgMCAwIDQg MCAwIGMgZTkg
MCAwIGQgNmUgMCAwIDI5IGI3IDAgMCA5ZSBjYSAwIDAgMCAyIDAgMCAxMyBm NiAwIDAgZDMg
YTUgMCAwIDAgMCAwIDAgMCAyIDAgMCBkMyBhNSAwIDAgZDYgOTcgMCAwIGJh IGU0IDAgMCAx
MyBmNiAwIDAgMCAxIDAgMCAwIDIgMCAwIDEzIGY2IDAgMCAyMCA3OSAwIDAg MCAwIDAgMCAw
IDAgMCAwIDAgMCAwIDAgMCBjIDAgNWEgMCA0ZiAwIDRmIDAgNGQgMCA1ZiAw IDQzIDAgNGYg
MCA0ZSAwIDU0IDAgNTIgMCA0ZiAwIDRjIDAgMCA4MSBhYiAwIDAgMCA4IDAg MCAwIDEgMCAw
IDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAwIDAgNCAwIDAgMCA4IDAgMCAwIGM4 IDAgMCAwIGM4
IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIDAg MCAxIDJjIDAg
MCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAwIDAgMCA0IDAgMCA4MSBhYiAwIDAg MCAyIDAgMCAw
IDAgMCAwIDAgMCAwIDAgNyA3ZSAwIDAgMyBmYSAwIDAgMCA4IDAgMCAwIDAg MCAwIGQ2IDk3
IDAgMCAwIDMgMCAwIDgxIGFiIDAgMCA1OSBhMCAwIDAgNWYgNzIgMCAwIDAg MiAwIDAgMTMg
ZjYgMCAwIGQ2IDk3IDAgMCAwIDAgMCAwIDAgMiAwIDAgZDMgYTUgMCAwIGQ2 IDk3IDAgMCBi
YSBlNCAwIDAgMTMgZjYgMCAwIDAgMSAwIDAgMCAyIDAgMCAxMyBmNiAwIDAg MjAgNzkgMCAw
IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgZiAwIDQ1IDAgNTggMCA1NCAw IDQ1IDAgNGUg
MCA1MyAwIDQ5IDAgNGYgMCA0ZSAwIDUzIDAgNWYgMCA1NCAwIDUyIDAgNDUg MCA0NSAwIDAg
OWUgY2EgMCAwIDAgOCAwIDAgMCAwIDAgMCAwIDEgMCAwIDAgZiAwIDAgMCA0 IDAgMCAwIDQg
MCAwIDAgOCAwIDAgMCBjOCAwIDAgMCBjOCAwIDAgMCBjOCAwIDAgMCBjOCBm ZiBmZiBmZiBm
ZiBmZiBmZiBmZiBmZiAwIDAgMSAyYyAwIDAgMCBjOCAwIDAgMCAwIDAgMCAw IDEgMCAwIDAg
NCAwIDAgOWUgY2EgMCAwIDAgMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDcgN2Ug MCAwIDMgZmEg
MCAwIDAgOCAwIDAgMCAwIDAgMCBkMyBhNSAwIDAgMCA0IDAgMCBjIGU5IDAg MCBkIDZlIDAg
MCAyOSBiNyAwIDAgOWUgY2EgMCAwIDAgMiAwIDAgMTMgZjYgMCAwIGQzIGE1 IDAgMCAwIDAg
MCAwIDAgMiAwIDAgZDMgYTUgMCAwIGQ2IDk3IDAgMCBiYSBlNCAwIDAgMTMg ZjYgMCAwIDAg
MSAwIDAgMCAyIDAgMCAxMyBmNiAwIDAgMjAgNzkgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAg
MCAwIDAgMTAgMCA0OSAwIDRlIDAgNDggMCA0NSAwIDUyIDAgNDkgMCA1NCAw IDQxIDAgNGUg
MCA0MyAwIDQ1IDAgNWYgMCA1NCAwIDUyIDAgNDUgMCA0NSAwIDAgZCA2ZSAw IDAgMCA4IDAg
MCAwIDAgMCAwIDAgMSAwIDAgMCBmIDAgMCAwIDQgMCAwIDAgNCAwIDAgMCA4 IDAgMCAwIGM4
IDAgMCAwIGM4IDAgMCAwIGM4IDAgMCAwIGM4IGZmIGZmIGZmIGZmIGZmIGZm IGZmIGZmIDAg
MCAxIDJjIDAgMCAwIGM4IDAgMCAwIDAgMCAwIDAgMSAwIDAgMCA0IDAgMCBk IDZlIDAgMCAw
IDIgMCAwIDAgMCAwIDAgMCAwIDAgMCA3IDdlIDAgMCAzIGZhIDAgMCAwIDgg MCAwIDAgMCAw
IDAgZDMgYTUgMCAwIDAgNCAwIDAgYyBlOSAwIDAgZCA2ZSAwIDAgMjkgYjcg MCAwIDllIGNh
IDAgMCAwIDIgMCAwIDEzIGY2IDAgMCBkMyBhNSAwIDAgMCAwIDAgMCAwIDIg MCAwIGQzIGE1
IDAgMCBkNiA5NyAwIDAgYmEgZTQgMCAwIDEzIGY2IDAgMCAwIDEgMCAwIDAg MiAwIDAgMTMg
ZjYgMCAwIDIwIDc5IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIGYg MCA0ZCAwIDQ1
IDAgNTMgMCA1MyAwIDQxIDAgNDcgMCA0NSAwIDUzIDAgNW
Re: Reading UML Profile Elements in Java (Me too, help please!) [message #624499 is a reply to message #476559] Wed, 24 June 2009 18:22 Go to previous message
Kenn Hussey is currently offline Kenn HusseyFriend
Messages: 1620
Registered: July 2009
Senior Member
Dawid,

There is no default registration mapping the '2.1.2' version of the
"official" metamodel (there in fact was no such version) to the Eclipse
UML metamodel. You have two choices here - change the URI in the
document to use '2.1.1' or '2.2' as the version instead or register the
UML package against this URI.

The editor is opening the document, but I suspect many of the elements
are still being instantiated as generic AnyType elements...

Kenn

Dawid Loubser wrote:
> Hi James,
>
> Thank you for your tip, we are getting closer, but it still not working.
> Using the UMLResource.Factory.INSTANCE resource factory, my XMI-based
> UML model loads, but everything inside it are instances of
> org.eclipse.emf.ecore.xml.type.impl.AnyTypeImpl - i.e. the file is
> parsed as XML only. I am not getting any UML types.
>
> Would you please take a look at my attached test program (runs as a
> JUnit test) and tell me where I am going wrong?? I also tried using
> either the XMIResourceFactoryImpl, or literally the
> UML212ResourceFactoryImpl, but each fails for their own reasons.
>
> Still, the same .uml test model loads by double-clicking it in Eclipse.
>
> Please people - anybody... Surely somebody must spot what I am doing
> wrong in my test program? Why is this so difficult? I simply need to
> load the attached UML model as-is using the attached test program.
>
> kind regards,
> Dawid
>
>
>
> James Bruck het geskryf:
>> Hi Dawid,
>>
>> Your code does a
>> model = resourceSet.createResource(testModelURI);
>>
>> Which I believe doesn't actually load the resource.
>>
>> Try:
>>
>> resourceSet.getResource(resourceURI, true);
>>
>> If that fails, try looking at this
>> http://www.eclipse.org/modeling/mdt/uml2/docs/guides/UML2_2. 0_Migration_Guide/guide.html
>>
>>
>> for a more complete example ( scroll toward the bottom ).
>>
>> Cheers,
>>
>> - James.
>>
Previous Topic:Re: UML Diagram Generation
Next Topic:Sequence Diagrams and Message Labels
Goto Forum:
  


Current Time: Fri Apr 19 08:36:28 GMT 2024

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

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

Back to the top