From mishka8520 at yahoo.com Tue Oct 20 09:32:54 2015 Content-Type: multipart/mixed; boundary="===============8735539619714912831==" MIME-Version: 1.0 From: Michael Pasternak To: devel at ovirt.org Subject: Re: [ovirt-devel] Question about the ovirt-engine-sdk-java Date: Tue, 20 Oct 2015 13:32:12 +0000 Message-ID: <863569340.291057.1445347932563.JavaMail.yahoo@mail.yahoo.com> In-Reply-To: 1268847654.258574.1445347258543.JavaMail.yahoo@mail.yahoo.com --===============8735539619714912831== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable ------=3D_Part_291056_1850182726.1445347932554 Content-Type: text/plain; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable Hi Salifou, OK, i see now, then you have two options: a) To extend the sdk: 1. extend java-sdk by allowing to inject custom headers in every request=3D= C2=3D =3DA0(not trivial as all ovirt SDKs are auto-generated,but if its common ca= se=3D , you may find yourself getting help from community/maintainers) 2. fork java-sdk customizing it for your needs I'd recommend the former as fork will leave you with no support/maintenance= =3D from community plus you'll haveto implement new=3DC2=3DA0features by your = own =3D (what will become a moving target very quickly)=3D20 b) Proxying the sdk You can implement dynamic proxy wrapping SDK's HttpProxy.java#execute and i= =3D ntercept the context from there,but you've to stay tuned as backward compat= =3D ibility is for interface and not for SDK internals,so "potentially" you can= =3D find your code broken in one of the following upgrades hope it helps.=3DC2=3DA0 On Monday, October 19, 2015 6:05 PM, Salifou Sidi M. Malick wrote: =3D20 Hi Micheal, Thanks for replying. Unfortunately the headers are dynamic ... Here is the story: We implemented a custom RHEV-M AAA module for a client in order to allow their custom portal to make RHEV-M API=3D20 calls.=3D20 The custom AAA module requires extra dynamic data in the HTTP=3D20 request (as request headers for now but request parameters=3D20 should be fine too).=3D20 Their is no problem if they go with the REST API, I am just=3D20 trying to anticipate/identify potential integration problem ... It seems like they will have to use the REST API or modify the=3D20 java sdk ...=3DC2=3DA0=3D20 Thanks a lot, Salifou ----- Original Message ----- From: "Michael Pasternak" To: "Salifou Sidi M. Malick" Cc: "Users" Sent: Sunday, October 18, 2015 5:45:05 AM Subject: Re: Question about the ovirt-engine-sdk-java Hi=3DC2=3DA0Salifou, Actually java sdk is=3DC2=3DA0intentionally=3DC2=3DA0hiding transport level= interna=3D ls so developers could stay in java domain,if your headers are static, easi= =3D est way would be using reverse proxy in a middle to intercept requests,=3DC= 2=3D =3DA0 can you tell me why do you need this? =3D20 =3DC2=3DA0 =3DC2=3DA0 On Friday, October 16, 2015 1:14 AM, Salifou Sidi M. = Malick <=3D ssidimah(a)redhat.com> wrote: =3DC2=3DA0=3D20 Hi Micheal, I have a question about the ovirt-engine-sdk-java. Is there a way to add custom request headers to each RHEVM API call? Here is an example of a request that I would like to do: $ curl -v -k \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "ID: user1(a)ad.x= yz.com" \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "PASSWORD: Pwssd"= \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 -H "TARGET: kobe" \ =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 =3DC2=3DA0 https://vm0.smalick.= com/api/hosts I would like to add ID, PASSWORD and TARGET as HTTP request header.=3D20 Thanks, Salifou =3D20 = ------=3D_Part_291056_1850182726.1445347932554 Content-Type: text/html; charset=3DUTF-8 Content-Transfer-Encoding: quoted-printable
=3D

Hi Salifou,= =3D


= =3D
OK, i see now, then you have two options:
= =3D

<=3D /div>
<=3D span class=3D3D"yiv4870970104" id=3D3D"yiv4870970104yui_3_16_0_1_1445338067= 930_=3D 7286" style=3D3D"font-family:'Helvetica Neue', 'Segoe UI', Helvetica, Arial= , =3D 'Lucida Grande', sans-serif;">a) To extend the sdk:

1. extend java-sdk by allowing to inject custom headers= =3D in every request (not trivial as all ovirt SD= =3D Ks are auto-generated,
but if its common case, you may find yourself getting= =3D help from community/maintainers)

2. fork java-sdk customizing it for your needs

I'd recommend the former as fork will leave you with no = =3D support/maintenance from community plus you'll have
to implement new features by your own (wha= =3D t will become a moving target very quickly)

b) Proxying the sdk

Y= ou c=3D an implement dynamic proxy wrapping SDK's HttpProxy.java#execute and interc= =3D ept the context from there,
but you= 've =3D to stay tuned as backward compatibility is for interface and not for SDK in= =3D ternals,
so "potentially" you can find = =3D your code broken in one of the following upgrades

hope= it =3D helps. 

On Monday, Octob= er 1=3D 9, 2015 6:05 PM, Salifou Sidi M. Malick <ssidimah(a)redhat.com> wrote= :<=3D br clear=3D3D"none">


<=3D div class=3D3D"yiv4870970104y_msg_container" id=3D3D"yiv4870970104yui_3_16_= 0_1_=3D 1445338067930_8712">Hi Micheal,

Th= anks=3D for replying. Unfortunately the headers are dynamic ...
=3D
Here is the story:

=3D We implemented a custom RHEV-M AAA module for a client
= in=3D order to allow their custom portal to make RHEV-M API
c=3D alls.

The custom AAA module requi= res =3D extra dynamic data in the HTTP
request (as request hea= de=3D rs for now but request parameters
should be fine too).= <=3D br clear=3D3D"none">
Their is no problem if they go wit= h th=3D e REST API, I am just
trying to anticipate/identify po= te=3D ntial integration problem ...

It s= eems=3D like they will have to use the REST API or modify the
j=3D ava sdk ... 

Thanks a lot,Salifou


=3D ----- Original Message -----
From: "Michael Pasternak" = &l=3D t;mishka8520(a= )yahoo.c=3D om>
To: "Salifou Sidi M. Malick" <ssidimah(a)redhat.com>
Cc: "= Users"=3D <users(a)ovirt.org>Sent: Sunday, October 18, 2015 5:45:05 AM
Subject: Re: Question about the ovirt-engine-sdk-java
<=3D br clear=3D3D"none">Hi Salifou,
Actually java sdk = is&n=3D bsp;intentionally hiding transport level internals so developers could= =3D stay in java domain,if your headers are static, easiest way would be using= =3D reverse proxy in a middle to intercept requests, 
<=3D br clear=3D3D"none">can you tell me why do you need this?
=3D


   = ; On =3D Friday, October 16, 2015 1:14 AM, Salifou Sidi M. Malick <
ssidimah(a)redhat.com> wr= ote: 

Hi Mi= cheal,=3D

I have a question about the ovirt= -eng=3D ine-sdk-java.

Is there a way to ad= d cu=3D stom request headers to each RHEVM API call?

Here is an example of a request that I would like to do:

$ curl -v -k \
   = ; &n=3D bsp;     -H "ID: u=3D ser1(a)ad.xyz.com" \
        &n= bsp;=3D -H "PASSWORD: Pwssd" \
        &nb= sp=3D ; -H "TARGET: kobe" \
         = ; =3D https://vm0.smalick.com/api/hosts


I would like to add ID, PASSWOR= D an=3D d TARGET as HTTP request header.

= Than=3D ks,
Salifou



=


=
------=3D_Part_291056_1850182726.1445347932554-- --===============8735539619714912831== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS0tLS0tPV9QYXJ0XzI5MTA1Nl8xODUwMTgyNzI2LjE0NDUzNDc5MzI1NTQKQ29udGVudC1UeXBl OiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1 b3RlZC1wcmludGFibGUKCgoKSGkgU2FsaWZvdSwKCgogT0ssIGkgc2VlIG5vdywgdGhlbiB5b3Ug aGF2ZSB0d28gb3B0aW9uczoKCmEpIFRvIGV4dGVuZCB0aGUgc2RrOgoxLiBleHRlbmQgamF2YS1z ZGsgYnkgYWxsb3dpbmcgdG8gaW5qZWN0IGN1c3RvbSBoZWFkZXJzIGluIGV2ZXJ5IHJlcXVlc3Q9 QzI9Cj1BMChub3QgdHJpdmlhbCBhcyBhbGwgb3ZpcnQgU0RLcyBhcmUgYXV0by1nZW5lcmF0ZWQs YnV0IGlmIGl0cyBjb21tb24gY2FzZT0KLCB5b3UgbWF5IGZpbmQgeW91cnNlbGYgZ2V0dGluZyBo ZWxwIGZyb20gY29tbXVuaXR5L21haW50YWluZXJzKQoyLiBmb3JrIGphdmEtc2RrIGN1c3RvbWl6 aW5nIGl0IGZvciB5b3VyIG5lZWRzCkknZCByZWNvbW1lbmQgdGhlIGZvcm1lciBhcyBmb3JrIHdp bGwgbGVhdmUgeW91IHdpdGggbm8gc3VwcG9ydC9tYWludGVuYW5jZT0KIGZyb20gY29tbXVuaXR5 IHBsdXMgeW91J2xsIGhhdmV0byBpbXBsZW1lbnQgbmV3PUMyPUEwZmVhdHVyZXMgYnkgeW91ciBv d24gPQood2hhdCB3aWxsIGJlY29tZSBhIG1vdmluZyB0YXJnZXQgdmVyeSBxdWlja2x5KT0yMApi KSBQcm94eWluZyB0aGUgc2RrCllvdSBjYW4gaW1wbGVtZW50IGR5bmFtaWMgcHJveHkgd3JhcHBp bmcgU0RLJ3MgSHR0cFByb3h5LmphdmEjZXhlY3V0ZSBhbmQgaT0KbnRlcmNlcHQgdGhlIGNvbnRl eHQgZnJvbSB0aGVyZSxidXQgeW91J3ZlIHRvIHN0YXkgdHVuZWQgYXMgYmFja3dhcmQgY29tcGF0 PQppYmlsaXR5IGlzIGZvciBpbnRlcmZhY2UgYW5kIG5vdCBmb3IgU0RLIGludGVybmFscyxzbyAi cG90ZW50aWFsbHkiIHlvdSBjYW49CiBmaW5kIHlvdXIgY29kZSBicm9rZW4gaW4gb25lIG9mIHRo ZSBmb2xsb3dpbmcgdXBncmFkZXMKaG9wZSBpdCBoZWxwcy49QzI9QTAKCiAgICAgT24gTW9uZGF5 LCBPY3RvYmVyIDE5LCAyMDE1IDY6MDUgUE0sIFNhbGlmb3UgU2lkaSBNLiBNYWxpY2sgPHNzaWRp bWFoQD0KcmVkaGF0LmNvbT4gd3JvdGU6CiAgPTIwCgogSGkgTWljaGVhbCwKClRoYW5rcyBmb3Ig cmVwbHlpbmcuIFVuZm9ydHVuYXRlbHkgdGhlIGhlYWRlcnMgYXJlIGR5bmFtaWMgLi4uCgpIZXJl IGlzIHRoZSBzdG9yeToKCldlIGltcGxlbWVudGVkIGEgY3VzdG9tIFJIRVYtTSBBQUEgbW9kdWxl IGZvciBhIGNsaWVudAppbiBvcmRlciB0byBhbGxvdyB0aGVpciBjdXN0b20gcG9ydGFsIHRvIG1h a2UgUkhFVi1NIEFQST0yMApjYWxscy49MjAKClRoZSBjdXN0b20gQUFBIG1vZHVsZSByZXF1aXJl cyBleHRyYSBkeW5hbWljIGRhdGEgaW4gdGhlIEhUVFA9MjAKcmVxdWVzdCAoYXMgcmVxdWVzdCBo ZWFkZXJzIGZvciBub3cgYnV0IHJlcXVlc3QgcGFyYW1ldGVycz0yMApzaG91bGQgYmUgZmluZSB0 b28pLj0yMAoKVGhlaXIgaXMgbm8gcHJvYmxlbSBpZiB0aGV5IGdvIHdpdGggdGhlIFJFU1QgQVBJ LCBJIGFtIGp1c3Q9MjAKdHJ5aW5nIHRvIGFudGljaXBhdGUvaWRlbnRpZnkgcG90ZW50aWFsIGlu dGVncmF0aW9uIHByb2JsZW0gLi4uCgpJdCBzZWVtcyBsaWtlIHRoZXkgd2lsbCBoYXZlIHRvIHVz ZSB0aGUgUkVTVCBBUEkgb3IgbW9kaWZ5IHRoZT0yMApqYXZhIHNkayAuLi49QzI9QTA9MjAKClRo YW5rcyBhIGxvdCwKU2FsaWZvdQoKCi0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KRnJvbTog Ik1pY2hhZWwgUGFzdGVybmFrIiA8bWlzaGthODUyMEB5YWhvby5jb20+ClRvOiAiU2FsaWZvdSBT aWRpIE0uIE1hbGljayIgPHNzaWRpbWFoQHJlZGhhdC5jb20+CkNjOiAiVXNlcnMiIDx1c2Vyc0Bv dmlydC5vcmc+ClNlbnQ6IFN1bmRheSwgT2N0b2JlciAxOCwgMjAxNSA1OjQ1OjA1IEFNClN1Ympl Y3Q6IFJlOiBRdWVzdGlvbiBhYm91dCB0aGUgb3ZpcnQtZW5naW5lLXNkay1qYXZhCgpIaT1DMj1B MFNhbGlmb3UsCkFjdHVhbGx5IGphdmEgc2RrIGlzPUMyPUEwaW50ZW50aW9uYWxseT1DMj1BMGhp ZGluZyB0cmFuc3BvcnQgbGV2ZWwgaW50ZXJuYT0KbHMgc28gZGV2ZWxvcGVycyBjb3VsZCBzdGF5 IGluIGphdmEgZG9tYWluLGlmIHlvdXIgaGVhZGVycyBhcmUgc3RhdGljLCBlYXNpPQplc3Qgd2F5 IHdvdWxkIGJlIHVzaW5nIHJldmVyc2UgcHJveHkgaW4gYSBtaWRkbGUgdG8gaW50ZXJjZXB0IHJl cXVlc3RzLD1DMj0KPUEwCgpjYW4geW91IHRlbGwgbWUgd2h5IGRvIHlvdSBuZWVkIHRoaXM/Cj0y MAoKCj1DMj1BMCA9QzI9QTAgT24gRnJpZGF5LCBPY3RvYmVyIDE2LCAyMDE1IDE6MTQgQU0sIFNh bGlmb3UgU2lkaSBNLiBNYWxpY2sgPD0Kc3NpZGltYWhAcmVkaGF0LmNvbT4gd3JvdGU6Cj1DMj1B MD0yMAoKIEhpIE1pY2hlYWwsCgpJIGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgb3ZpcnQtZW5n aW5lLXNkay1qYXZhLgoKSXMgdGhlcmUgYSB3YXkgdG8gYWRkIGN1c3RvbSByZXF1ZXN0IGhlYWRl cnMgdG8gZWFjaCBSSEVWTSBBUEkgY2FsbD8KCkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIHJlcXVl c3QgdGhhdCBJIHdvdWxkIGxpa2UgdG8gZG86CgokIGN1cmwgLXYgLWsgXAo9QzI9QTAgPUMyPUEw ID1DMj1BMCA9QzI9QTAgPUMyPUEwIC1IICJJRDogdXNlcjFAYWQueHl6LmNvbSIgXAo9QzI9QTAg PUMyPUEwID1DMj1BMCA9QzI9QTAgPUMyPUEwIC1IICJQQVNTV09SRDogUHdzc2QiIFwKPUMyPUEw ID1DMj1BMCA9QzI9QTAgPUMyPUEwID1DMj1BMCAtSCAiVEFSR0VUOiBrb2JlIiBcCj1DMj1BMCA9 QzI9QTAgPUMyPUEwID1DMj1BMCA9QzI9QTAgaHR0cHM6Ly92bTAuc21hbGljay5jb20vYXBpL2hv c3RzCgoKSSB3b3VsZCBsaWtlIHRvIGFkZCBJRCwgUEFTU1dPUkQgYW5kIFRBUkdFVCBhcyBIVFRQ IHJlcXVlc3QgaGVhZGVyLj0yMAoKVGhhbmtzLApTYWxpZm91CgoKCgogID0yMAoKICAKLS0tLS0t PV9QYXJ0XzI5MTA1Nl8xODUwMTgyNzI2LjE0NDUzNDc5MzI1NTQKQ29udGVudC1UeXBlOiB0ZXh0 L2h0bWw7IGNoYXJzZXQ9VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXBy aW50YWJsZQoKPGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PjxkaXYgc3R5bGU9M0QiY29sb3I6IzAw MDsgYmFja2dyb3VuZC1jb2xvcjojZmZmOyBmPQpvbnQtZmFtaWx5OkhlbHZldGljYU5ldWUtTGln aHQsIEhlbHZldGljYSBOZXVlIExpZ2h0LCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmU9CnRpY2EsIEFy aWFsLCBMdWNpZGEgR3JhbmRlLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxM3B4Ij48ZGl2IGlkPTNE InlpdjQ4NzA5Nz0KMDEwNCI+PGRpdiBjbGFzcz0zRCJxdGRTZXBhcmF0ZUJSIiBpZD0zRCJ5dWlf M18xNl8wXzFfMTQ0NTMzODA2NzkzMF8yNTQxMyI+PQo8YnI+PGJyPjwvZGl2PjxkaXYgY2xhc3M9 M0QieWl2NDg3MDk3MDEwNHlxdDAwNDkwMDUyMzgiIGlkPTNEInlpdjQ4NzA5NzAxMDQ9CnlxdGZk MzM0NzIiPjxkaXYgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfMjUzODIiPjxkaXYg c3R5bGU9M0QiY29sbz0KcjojMDAwO2JhY2tncm91bmQtY29sb3I6I2ZmZjtmb250LWZhbWlseTpI ZWx2ZXRpY2FOZXVlLUxpZ2h0LCBIZWx2ZXRpY2EgTmV1PQplIExpZ2h0LCBIZWx2ZXRpY2EgTmV1 ZSwgSGVsdmV0aWNhLCBBcmlhbCwgTHVjaWRhIEdyYW5kZSwgc2Fucy1zZXJpZjtmb250LXM9Cml6 ZToxM3B4OyIgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfMjUzODEiPjxkaXYgaWQ9 M0QieWl2NDg3MDk3MDEwND0KeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfMjM0NzgiPjxzcGFu IHN0eWxlPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1PQplJywgJ1NlZ29lIFVJJywgSGVs dmV0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlmOyI+SGkgU2FsaWZvdSw9 Cjwvc3Bhbj48YnIgY2xlYXI9M0Qibm9uZSI+PC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY0ODcwOTcw MTA0cXRkU2VwYXJhdGVCUiIgaT0KZD0zRCJ5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF8yNTM4 MyI+PGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lPQoiPjwvZGl2PiA8L2Rpdj48 L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPTNEIi55aXY0ODcwOTcwMTA0eWFob29fcXVvdGVk IiA9CmlkPTNEInl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzI1Mzk4Ij48ZGl2IGlkPTNEInlp djQ4NzA5NzAxMDR5dWlfM18xNl8wXz0KMV8xNDQ1MzM4MDY3OTMwXzIzMzg4IiBzdHlsZT0zRCJm b250LWZhbWlseTpIZWx2ZXRpY2FOZXVlLUxpZ2h0LCBIZWx2ZXRpY2EgPQpOZXVlIExpZ2h0LCBI ZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBcmlhbCwgTHVjaWRhIEdyYW5kZSwgc2Fucy1zZXJp Zjtmb249CnQtc2l6ZToxM3B4OyI+PGRpdiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8x XzE0NDUzMzgwNjc5MzBfMjMzODciIHN0eT0KbGU9M0QiZm9udC1mYW1pbHk6SGVsdmV0aWNhTmV1 ZSwgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIEx1Y2lkYSBHPQpyYW5kZSwgc2Fu cy1zZXJpZjtmb250LXNpemU6MTZweDsiPjxkaXYgY2xhc3M9M0QieWl2NDg3MDk3MDEwNHlfbXNn X2NvbnRhaW49CmVyIiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5 MzBfMjM0ODQiPjxkaXYgaWQ9M0QieWl2NDg3MD0KOTcwMTA0Ij48ZGl2IGlkPTNEInlpdjQ4NzA5 NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF8yMzQ4MyI+PGRpdiBpZD0KPTNEInlpdjQ4 NzA5NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF8yMzQ4MiIgc3R5bGU9M0QiY29sb3I6 IzAwMDtiYWNrPQpncm91bmQtY29sb3I6I2ZmZjtmb250LWZhbWlseTpIZWx2ZXRpY2FOZXVlLUxp Z2h0LCBIZWx2ZXRpY2EgTmV1ZSBMaWdodCwgSGU9Cmx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBB cmlhbCwgTHVjaWRhIEdyYW5kZSwgc2Fucy1zZXJpZjtmb250LXNpemU6MTNweDsiPj0KPGRpdiBp ZD0zRCJ5aXY0ODcwOTcwMTA0Ij48ZGl2IGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8wXzFf MTQ0NTMzODA2NzkzPQowXzcyNzYiPjxkaXYgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBf MV8xNDQ1MzM4MDY3OTMwXzcyNzUiIHN0eWxlPTNEImM9Cm9sb3I6IzAwMDtiYWNrZ3JvdW5kLWNv bG9yOiNmZmY7Zm9udC1mYW1pbHk6SGVsdmV0aWNhTmV1ZS1MaWdodCwgSGVsdmV0aWNhID0KTmV1 ZSBMaWdodCwgSGVsdmV0aWNhIE5ldWUsIEhlbHZldGljYSwgQXJpYWwsIEx1Y2lkYSBHcmFuZGUs IHNhbnMtc2VyaWY7Zm9uPQp0LXNpemU6MTNweDsiPjxkaXYgZGlyPTNEImx0ciIgaWQ9M0QieWl2 NDg3MDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTM9CjBfNDI4MyI+PHNwYW4+PC9zcGFu PjwvZGl2PjxkaXYgZGlyPTNEImx0ciIgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBfMT0K XzE0NDUzMzgwNjc5MzBfNDI4MyI+PHNwYW4gc3R5bGU9M0QiZm9udC1mYW1pbHk6ICdIZWx2ZXRp Y2EgTmV1ZScsICdTZWdvZSBVPQpJJywgSGVsdmV0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmFuZGUn LCBzYW5zLXNlcmlmOyIgaWQ9M0QieXVpXzNfMTZfMF8xXzE0NDU9CjMzODA2NzkzMF8yNTQxMiI+ T0ssIGkgc2VlIG5vdywgdGhlbiB5b3UgaGF2ZSB0d28gb3B0aW9uczo8L3NwYW4+PGJyPjwvZGl2 Pj0KPGRpdiBkaXI9M0QibHRyIiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUz MzgwNjc5MzBfNDI4MyI+PHNwYW4gPQpjbGFzcz0zRCJ5aXY0ODcwOTcwMTA0IiBzdHlsZT0zRCJm b250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCA9CkhlbHZldGljYSwgQXJp YWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1zZXJpZjsiPjxiciBjbGVhcj0zRCJub25lIj48L3Nw YW4+PD0KL2Rpdj48ZGl2IGRpcj0zRCJsdHIiIGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8w XzFfMTQ0NTMzODA2NzkzMF80MjgzIj48PQpzcGFuIGNsYXNzPTNEInlpdjQ4NzA5NzAxMDQiIGlk PTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF89CjcyODYiIHN0eWxl PTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScsIEhlbHZldGljYSwg QXJpYWwsID0KJ0x1Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlmOyI+YSkgVG8gZXh0ZW5kIHRoZSBz ZGs6PC9zcGFuPjwvZGl2PjxkaXYgZGlyPTNEPQoibHRyIiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVp XzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNDI4MyI+PHNwYW4gY2xhc3M9M0QieWk9CnY0ODcwOTcw MTA0IiBzdHlsZT0zRCJmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCBI ZWx2ZXRpY2EsID0KQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1zZXJpZjsiPjxiciBjbGVh cj0zRCJub25lIj48L3NwYW4+PC9kaXY+PGRpdiBkPQppcj0zRCJsdHIiIGlkPTNEInlpdjQ4NzA5 NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF80MjgzIj48c3BhbiBjbGFzcz0KPTNEInlp djQ4NzA5NzAxMDQiIGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2Nzkz MF80ODAwIiBzdHlsPQplPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBV SScsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3I9CmFuZGUnLCBzYW5zLXNlcmlmOyI+MS4g ZXh0ZW5kIGphdmEtc2RrIGJ5IGFsbG93aW5nIHRvIGluamVjdCBjdXN0b20gaGVhZGVycz0KIGlu IGV2ZXJ5IHJlcXVlc3Q8L3NwYW4+PHNwYW4gY2xhc3M9M0QieWl2NDg3MDk3MDEwNCIgc3R5bGU9 M0QiZm9udC1mYW1pbHk6PQonSGVsdmV0aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2Es IEFyaWFsLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY9CjsiPiZuYnNwOzwvc3Bhbj48c3Bh biBjbGFzcz0zRCJ5aXY0ODcwOTcwMTA0IiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMD0K XzFfMTQ0NTMzODA2NzkzMF84MDgyIiBzdHlsZT0zRCJmb250LWZhbWlseTonSGVsdmV0aWNhIE5l dWUnLCAnU2Vnb2UgVUknLCBIPQplbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fu cy1zZXJpZjsiPihub3QgdHJpdmlhbCBhcyBhbGwgb3ZpcnQgU0Q9CktzIGFyZSBhdXRvLWdlbmVy YXRlZDwvc3Bhbj48c3BhbiBzdHlsZT0zRCJmb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLCAn Uz0KZWdvZSBVSScsIEhlbHZldGljYSwgQXJpYWwsICdMdWNpZGEgR3JhbmRlJywgc2Fucy1zZXJp ZjsiPiw8L3NwYW4+PC9kaXY+PGRpPQp2IGRpcj0zRCJsdHIiIGlkPTNEInlpdjQ4NzA5NzAxMDR5 dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF80MjgzIj48c3BhbiBjbGE9CnNzPTNEInlpdjQ4NzA5 NzAxMDQiIGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF85MDkw IiBzdD0KeWxlPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScsIEhl bHZldGljYSwgQXJpYWwsICdMdWNpZGEgPQpHcmFuZGUnLCBzYW5zLXNlcmlmOyI+YnV0IGlmIGl0 cyBjb21tb24gY2FzZSwgeW91IG1heSBmaW5kIHlvdXJzZWxmIGdldHRpbmc9CiBoZWxwIGZyb20g Y29tbXVuaXR5L21haW50YWluZXJzKTwvc3Bhbj48L2Rpdj48ZGl2IGRpcj0zRCJsdHIiIGlkPTNE InlpdjQ4Nz0KMDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzQyODMiPjxzcGFuIGNs YXNzPTNEInlpdjQ4NzA5NzAxMDQiIHN0eWxlPQo9M0QiZm9udC1mYW1pbHk6J0hlbHZldGljYSBO ZXVlJywgJ1NlZ29lIFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmE9Cm5kZScsIHNh bnMtc2VyaWY7Ij48YnIgY2xlYXI9M0Qibm9uZSI+PC9zcGFuPjwvZGl2PjxkaXYgZGlyPTNEImx0 ciIgaWQ9M0QieT0KaXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNDI4MyI+ PHNwYW4gY2xhc3M9M0QieWl2NDg3MDk3MDEwNCIgPQppZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNf MTZfMF8xXzE0NDUzMzgwNjc5MzBfNDgwMSIgc3R5bGU9M0QiZm9udC1mYW1pbHk6J0g9CmVsdmV0 aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFyaWFsLCAnTHVjaWRhIEdyYW5kZScs IHNhbnMtc2VyaWY7Ij0KPjIuIGZvcmsgamF2YS1zZGsgY3VzdG9taXppbmcgaXQgZm9yIHlvdXIg bmVlZHM8L3NwYW4+PC9kaXY+PGRpdiBkaXI9M0QibHRyPQoiIGlkPTNEInlpdjQ4NzA5NzAxMDR5 dWlfM18xNl8wXzFfMTQ0NTMzODA2NzkzMF80MjgzIj48c3BhbiBjbGFzcz0zRCJ5aXY0ODc9CjA5 NzAxMDQiIHN0eWxlPTNEImZvbnQtZmFtaWx5OidIZWx2ZXRpY2EgTmV1ZScsICdTZWdvZSBVSScs IEhlbHZldGljYSwgQXJpYT0KbCwgJ0x1Y2lkYSBHcmFuZGUnLCBzYW5zLXNlcmlmOyI+PGJyIGNs ZWFyPTNEIm5vbmUiPjwvc3Bhbj48L2Rpdj48ZGl2IGRpcj0KPTNEImx0ciIgaWQ9M0QieWl2NDg3 MDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzQyODMiPjxzcGFuIGNsYXNzPTNEPQoi eWl2NDg3MDk3MDEwNCIgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3 OTMwXzQ5NzQiIHN0eWxlPQo9M0QiZm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJywgJ1NlZ29l IFVJJywgSGVsdmV0aWNhLCBBcmlhbCwgJ0x1Y2lkYSBHcmE9Cm5kZScsIHNhbnMtc2VyaWY7Ij5J J2QgcmVjb21tZW5kIHRoZSBmb3JtZXIgYXMgZm9yayB3aWxsIGxlYXZlIHlvdSB3aXRoIG5vID0K c3VwcG9ydC9tYWludGVuYW5jZSBmcm9tIGNvbW11bml0eSBwbHVzIHlvdSdsbCBoYXZlPC9zcGFu PjwvZGl2PjxkaXYgZGlyPTNEPQoibHRyIiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8x XzE0NDUzMzgwNjc5MzBfNDI4MyI+PHNwYW4gY2xhc3M9M0QieWk9CnY0ODcwOTcwMTA0IiBpZD0z RCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNzI4NSIgc3R5bGU9M0Qi Zj0Kb250LWZhbWlseTonSGVsdmV0aWNhIE5ldWUnLCAnU2Vnb2UgVUknLCBIZWx2ZXRpY2EsIEFy aWFsLCAnTHVjaWRhIEdyYW5kZScsPQogc2Fucy1zZXJpZjsiPnRvIGltcGxlbWVudCBuZXcmbmJz cDs8L3NwYW4+PHNwYW4gaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE9CjZfMF8xXzE0NDUzMzgw Njc5MzBfNTE2MiIgc3R5bGU9M0QiZm9udC1mYW1pbHk6J0hlbHZldGljYSBOZXVlJywgJ1NlZ29l IFVJJz0KLCBIZWx2ZXRpY2EsIEFyaWFsLCAnTHVjaWRhIEdyYW5kZScsIHNhbnMtc2VyaWY7Ij5m ZWF0dXJlcyBieSB5b3VyIG93biAod2hhPQp0IHdpbGwgYmVjb21lIGEgbW92aW5nIHRhcmdldCB2 ZXJ5IHF1aWNrbHkpPC9zcGFuPjwvZGl2PiAgPGJyIGNsZWFyPTNEIm5vbmU9CiI+PGRpdiBjbGFz cz0zRCJ5aXY0ODcwOTcwMTA0cXRkU2VwYXJhdGVCUiIgZGlyPTNEImx0ciIgaWQ9M0QieWl2NDg3 MDk3MDEwND0KeXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNzI3NCI+YikgUHJveHlpbmcgdGhl IHNkazwvZGl2PjxkaXYgY2xhc3M9M0QieWl2PQo0ODcwOTcwMTA0cXRkU2VwYXJhdGVCUiIgZGly PTNEImx0ciIgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM9CjgwNjc5MzBf NzI3NCI+PGJyIGNsZWFyPTNEIm5vbmUiPjwvZGl2PjxkaXYgY2xhc3M9M0QieWl2NDg3MDk3MDEw NHF0ZFNlcGFyYT0KdGVCUiIgZGlyPTNEImx0ciIgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2 XzBfMV8xNDQ1MzM4MDY3OTMwXzcyNzQiPllvdSBjPQphbiBpbXBsZW1lbnQgZHluYW1pYyBwcm94 eSB3cmFwcGluZyBTREsncyBIdHRwUHJveHkuamF2YSNleGVjdXRlIGFuZCBpbnRlcmM9CmVwdCB0 aGUgY29udGV4dCBmcm9tIHRoZXJlLDwvZGl2PjxkaXYgY2xhc3M9M0QieWl2NDg3MDk3MDEwNHF0 ZFNlcGFyYXRlQlIiID0KZGlyPTNEImx0ciIgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBf MV8xNDQ1MzM4MDY3OTMwXzcyNzQiPmJ1dCB5b3UndmUgPQp0byBzdGF5IHR1bmVkIGFzIGJhY2t3 YXJkIGNvbXBhdGliaWxpdHkgaXMgZm9yIGludGVyZmFjZSBhbmQgbm90IGZvciBTREsgaW49CnRl cm5hbHMsPC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY0ODcwOTcwMTA0cXRkU2VwYXJhdGVCUiIgZGly PTNEImx0ciIgaWQ9M0QieT0KaXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBf NzI3NCI+c28gInBvdGVudGlhbGx5IiB5b3UgY2FuIGZpbmQgPQp5b3VyIGNvZGUgYnJva2VuIGlu IG9uZSBvZiB0aGUgZm9sbG93aW5nIHVwZ3JhZGVzPC9kaXY+PGRpdiBjbGFzcz0zRCJ5aXY0ODc9 CjA5NzAxMDRxdGRTZXBhcmF0ZUJSIiBkaXI9M0QibHRyIiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVp XzNfMTZfMF8xXzE0NDUzMzgwNj0KNzkzMF83Mjc0Ij48YnIgY2xlYXI9M0Qibm9uZSI+PC9kaXY+ PGRpdiBjbGFzcz0zRCJ5aXY0ODcwOTcwMTA0cXRkU2VwYXJhdGVCPQpSIiBkaXI9M0QibHRyIiBp ZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfNzI3NCI+aG9wZSBp dCA9CmhlbHBzLiZuYnNwOzxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+PC9k aXY+PGRpdiBjbGFzcz0zRCJ5aXY0OD0KNzA5NzAxMDR5cXQwNTYyNzc3MjgyIiBpZD0zRCJ5aXY0 ODcwOTcwMTA0eXF0ODE1OTEiPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PQo+PGRpdiBjbGFzcz0z RCJ5aXY0ODcwOTcwMTA0eXF0NzgyOTYzODU2NyIgaWQ9M0QieWl2NDg3MDk3MDEwNHlxdDgxODQ1 Ij48ZGk9CnYgaWQ9M0QieWl2NDg3MDk3MDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzg1 MzMiPiA8ZGl2IGlkPTNEInlpdjQ4NzA5Nz0KMDEwNHl1aV8zXzE2XzBfMV8xNDQ1MzM4MDY3OTMw Xzg1MzIiIHN0eWxlPTNEImZvbnQtZmFtaWx5OkhlbHZldGljYU5ldWUtTGlnPQpodCwgSGVsdmV0 aWNhIE5ldWUgTGlnaHQsIEhlbHZldGljYSBOZXVlLCBIZWx2ZXRpY2EsIEFyaWFsLCBMdWNpZGEg R3JhbmRlLCA9CnNhbnMtc2VyaWY7Zm9udC1zaXplOjEzcHg7Ij4gPGRpdiBpZD0zRCJ5aXY0ODcw OTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNj0KNzkzMF84NTMxIiBzdHlsZT0zRCJmb250LWZh bWlseTpIZWx2ZXRpY2FOZXVlLCBIZWx2ZXRpY2EgTmV1ZSwgSGVsdmV0aWNhLCBBPQpyaWFsLCBM dWNpZGEgR3JhbmRlLCBzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4OyI+IDxkaXYgZGlyPTNEImx0 ciIgaWQ9M0QieWk9CnY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfODU1NCI+ IDxmb250IGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfMz0KXzE2XzBfMV8xNDQ1MzM4MDY3OTMwXzg1 NTkiIHNpemU9M0QiMiIgZmFjZT0zRCJBcmlhbCI+IE9uIE1vbmRheSwgT2N0b2JlciAxPQo5LCAy MDE1IDY6MDUgUE0sIFNhbGlmb3UgU2lkaSBNLiBNYWxpY2sgJmx0O3NzaWRpbWFoQHJlZGhhdC5j b20mZ3Q7IHdyb3RlOjw9CmJyIGNsZWFyPTNEIm5vbmUiPiA8L2ZvbnQ+IDwvZGl2PiAgPGJyIGNs ZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj4gPD0KZGl2IGNsYXNzPTNEInlpdjQ4NzA5 NzAxMDR5X21zZ19jb250YWluZXIiIGlkPTNEInlpdjQ4NzA5NzAxMDR5dWlfM18xNl8wXzFfPQox NDQ1MzM4MDY3OTMwXzg3MTIiPkhpIE1pY2hlYWwsPGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVh cj0zRCJub25lIj5UaGFua3M9CiBmb3IgcmVwbHlpbmcuIFVuZm9ydHVuYXRlbHkgdGhlIGhlYWRl cnMgYXJlIGR5bmFtaWMgLi4uPGJyIGNsZWFyPTNEIm5vbmUiPj0KPGJyIGNsZWFyPTNEIm5vbmUi PkhlcmUgaXMgdGhlIHN0b3J5OjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+ PQpXZSBpbXBsZW1lbnRlZCBhIGN1c3RvbSBSSEVWLU0gQUFBIG1vZHVsZSBmb3IgYSBjbGllbnQ8 YnIgY2xlYXI9M0Qibm9uZSI+aW49CiBvcmRlciB0byBhbGxvdyB0aGVpciBjdXN0b20gcG9ydGFs IHRvIG1ha2UgUkhFVi1NIEFQSSA8YnIgY2xlYXI9M0Qibm9uZSI+Yz0KYWxscy4gPGJyIGNsZWFy PTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj5UaGUgY3VzdG9tIEFBQSBtb2R1bGUgcmVxdWly ZXMgPQpleHRyYSBkeW5hbWljIGRhdGEgaW4gdGhlIEhUVFAgPGJyIGNsZWFyPTNEIm5vbmUiPnJl cXVlc3QgKGFzIHJlcXVlc3QgaGVhZGU9CnJzIGZvciBub3cgYnV0IHJlcXVlc3QgcGFyYW1ldGVy cyA8YnIgY2xlYXI9M0Qibm9uZSI+c2hvdWxkIGJlIGZpbmUgdG9vKS4gPD0KYnIgY2xlYXI9M0Qi bm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPlRoZWlyIGlzIG5vIHByb2JsZW0gaWYgdGhleSBnbyB3 aXRoIHRoPQplIFJFU1QgQVBJLCBJIGFtIGp1c3QgPGJyIGNsZWFyPTNEIm5vbmUiPnRyeWluZyB0 byBhbnRpY2lwYXRlL2lkZW50aWZ5IHBvdGU9Cm50aWFsIGludGVncmF0aW9uIHByb2JsZW0gLi4u PGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj5JdCBzZWVtcz0KIGxpa2UgdGhl eSB3aWxsIGhhdmUgdG8gdXNlIHRoZSBSRVNUIEFQSSBvciBtb2RpZnkgdGhlIDxiciBjbGVhcj0z RCJub25lIj5qPQphdmEgc2RrIC4uLiZuYnNwOyA8YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFy PTNEIm5vbmUiPlRoYW5rcyBhIGxvdCw8YnIgY2w9CmVhcj0zRCJub25lIj5TYWxpZm91PGJyIGNs ZWFyPTNEIm5vbmUiPjxiciBjbGVhcj0zRCJub25lIj48ZGl2IGNsYXNzPTNEInlpdj0KNDg3MDk3 MDEwNHlxdDgwMjMxMDM1NDIiIGlkPTNEInlpdjQ4NzA5NzAxMDR5cXRmZDgzODA4Ij48YnIgY2xl YXI9M0Qibm9uZSI+PQotLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tPGJyIGNsZWFyPTNEIm5v bmUiPkZyb206ICJNaWNoYWVsIFBhc3Rlcm5hayIgJmw9CnQ7PGEgcmVsPTNEIm5vZm9sbG93IiBz aGFwZT0zRCJyZWN0IiB5bWFpbHRvPTNEIm1haWx0bzptaXNoa2E4NTIwQHlhaG9vLmNvbT0KIiB0 YXJnZXQ9M0QiX2JsYW5rIiBocmVmPTNEIm1haWx0bzptaXNoa2E4NTIwQHlhaG9vLmNvbSI+bWlz aGthODUyMEB5YWhvby5jPQpvbTwvYT4mZ3Q7PGJyIGNsZWFyPTNEIm5vbmUiPlRvOiAiU2FsaWZv dSBTaWRpIE0uIE1hbGljayIgJmx0OzxhIHJlbD0zRCJub2Y9Cm9sbG93IiBzaGFwZT0zRCJyZWN0 IiBpZD0zRCJ5aXY0ODcwOTcwMTA0eXVpXzNfMTZfMF8xXzE0NDUzMzgwNjc5MzBfMjM2MDYiID0K eW1haWx0bz0zRCJtYWlsdG86c3NpZGltYWhAcmVkaGF0LmNvbSIgdGFyZ2V0PTNEIl9ibGFuayIg aHJlZj0zRCJtYWlsdG86c3NpPQpkaW1haEByZWRoYXQuY29tIj5zc2lkaW1haEByZWRoYXQuY29t PC9hPiZndDs8YnIgY2xlYXI9M0Qibm9uZSI+Q2M6ICJVc2VycyI9CiAmbHQ7PGEgcmVsPTNEIm5v Zm9sbG93IiBzaGFwZT0zRCJyZWN0IiB5bWFpbHRvPTNEIm1haWx0bzp1c2Vyc0BvdmlydC5vcmci ID0KdGFyZ2V0PTNEIl9ibGFuayIgaHJlZj0zRCJtYWlsdG86dXNlcnNAb3ZpcnQub3JnIj51c2Vy c0BvdmlydC5vcmc8L2E+Jmd0OzxiPQpyIGNsZWFyPTNEIm5vbmUiPlNlbnQ6IFN1bmRheSwgT2N0 b2JlciAxOCwgMjAxNSA1OjQ1OjA1IEFNPGJyIGNsZWFyPTNEIm5vbmU9CiI+U3ViamVjdDogUmU6 IFF1ZXN0aW9uIGFib3V0IHRoZSBvdmlydC1lbmdpbmUtc2RrLWphdmE8YnIgY2xlYXI9M0Qibm9u ZSI+PD0KYnIgY2xlYXI9M0Qibm9uZSI+SGkmbmJzcDtTYWxpZm91LDxiciBjbGVhcj0zRCJub25l Ij5BY3R1YWxseSBqYXZhIHNkayBpcyZuPQpic3A7aW50ZW50aW9uYWxseSZuYnNwO2hpZGluZyB0 cmFuc3BvcnQgbGV2ZWwgaW50ZXJuYWxzIHNvIGRldmVsb3BlcnMgY291bGQ9CiBzdGF5IGluIGph dmEgZG9tYWluLGlmIHlvdXIgaGVhZGVycyBhcmUgc3RhdGljLCBlYXNpZXN0IHdheSB3b3VsZCBi ZSB1c2luZz0KIHJldmVyc2UgcHJveHkgaW4gYSBtaWRkbGUgdG8gaW50ZXJjZXB0IHJlcXVlc3Rz LCZuYnNwOzxiciBjbGVhcj0zRCJub25lIj48PQpiciBjbGVhcj0zRCJub25lIj5jYW4geW91IHRl bGwgbWUgd2h5IGRvIHlvdSBuZWVkIHRoaXM/PGJyIGNsZWFyPTNEIm5vbmUiPiA9CjxiciBjbGVh cj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPiZuYnNwOyAm bmJzcDsgIE9uID0KRnJpZGF5LCBPY3RvYmVyIDE2LCAyMDE1IDE6MTQgQU0sIFNhbGlmb3UgU2lk aSBNLiBNYWxpY2sgJmx0OzxhIHJlbD0zRCJub2ZvPQpsbG93IiBzaGFwZT0zRCJyZWN0IiB5bWFp bHRvPTNEIm1haWx0bzpzc2lkaW1haEByZWRoYXQuY29tIiB0YXJnZXQ9M0QiX2JsYW49CmsiIGhy ZWY9M0QibWFpbHRvOnNzaWRpbWFoQHJlZGhhdC5jb20iPnNzaWRpbWFoQHJlZGhhdC5jb208L2E+ Jmd0OyB3cm90ZTo8Yj0KciBjbGVhcj0zRCJub25lIj4mbmJzcDsgIDxiciBjbGVhcj0zRCJub25l Ij48YnIgY2xlYXI9M0Qibm9uZSI+IEhpIE1pY2hlYWwsPQo8YnIgY2xlYXI9M0Qibm9uZSI+PGJy IGNsZWFyPTNEIm5vbmUiPkkgaGF2ZSBhIHF1ZXN0aW9uIGFib3V0IHRoZSBvdmlydC1lbmc9Cmlu ZS1zZGstamF2YS48YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPklzIHRoZXJl IGEgd2F5IHRvIGFkZCBjdT0Kc3RvbSByZXF1ZXN0IGhlYWRlcnMgdG8gZWFjaCBSSEVWTSBBUEkg Y2FsbD88YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEPQoibm9uZSI+SGVyZSBpcyBhbiBl eGFtcGxlIG9mIGEgcmVxdWVzdCB0aGF0IEkgd291bGQgbGlrZSB0byBkbzo8YnIgY2xlYXI9M0Q9 CiJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+JCBjdXJsIC12IC1rIFw8YnIgY2xlYXI9M0Qibm9u ZSI+Jm5ic3A7ICZuYnNwOyAmbj0KYnNwOyAmbmJzcDsgJm5ic3A7IC1IICJJRDogPGEgcmVsPTNE Im5vZm9sbG93IiBzaGFwZT0zRCJyZWN0IiB5bWFpbHRvPTNEIm1hPQppbHRvOnVzZXIxQGFkLnh5 ei5jb20iIHRhcmdldD0zRCJfYmxhbmsiIGhyZWY9M0QibWFpbHRvOnVzZXIxQGFkLnh5ei5jb20i PnU9CnNlcjFAYWQueHl6LmNvbTwvYT4iIFw8YnIgY2xlYXI9M0Qibm9uZSI+Jm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7ICZuYnNwOz0KIC1IICJQQVNTV09SRDogUHdzc2QiIFw8YnIgY2xlYXI9 M0Qibm9uZSI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwPQo7IC1IICJUQVJHRVQ6 IGtvYmUiIFw8YnIgY2xlYXI9M0Qibm9uZSI+Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZu YnNwOyA9CjxhIHJlbD0zRCJub2ZvbGxvdyIgc2hhcGU9M0QicmVjdCIgdGFyZ2V0PTNEIl9ibGFu ayIgaHJlZj0zRCJodHRwczovL3ZtMC5zbT0KYWxpY2suY29tL2FwaS9ob3N0cyI+aHR0cHM6Ly92 bTAuc21hbGljay5jb20vYXBpL2hvc3RzPC9hPjxiciBjbGVhcj0zRCJub25lPQoiPjxiciBjbGVh cj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+SSB3b3VsZCBsaWtlIHRvIGFkZCBJRCwgUEFT U1dPUkQgYW49CmQgVEFSR0VUIGFzIEhUVFAgcmVxdWVzdCBoZWFkZXIuIDxiciBjbGVhcj0zRCJu b25lIj48YnIgY2xlYXI9M0Qibm9uZSI+VGhhbj0Ka3MsPGJyIGNsZWFyPTNEIm5vbmUiPlNhbGlm b3U8YnIgY2xlYXI9M0Qibm9uZSI+PGJyIGNsZWFyPTNEIm5vbmUiPjxiciBjbGVhPQpyPTNEIm5v bmUiPjwvZGl2PjxiciBjbGVhcj0zRCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+PC9kaXY+ICA8 L2Rpdj4gPC9kaXY9Cj4gIDwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjxiciBjbGVhcj0z RCJub25lIj48YnIgY2xlYXI9M0Qibm9uZSI+PC9kaT0Kdj4gIDwvZGl2PiA8L2Rpdj4gIDwvZGl2 PjwvZGl2PjwvYm9keT48L2h0bWw+Ci0tLS0tLT1fUGFydF8yOTEwNTZfMTg1MDE4MjcyNi4xNDQ1 MzQ3OTMyNTU0LS0K --===============8735539619714912831==--