From tadas at ring.lt Fri Jul 1 10:52:02 2016 Content-Type: multipart/mixed; boundary="===============3074649527608067744==" MIME-Version: 1.0 From: Tadas To: users at ovirt.org Subject: Re: [ovirt-users] Communicating with ovirt agent Date: Fri, 01 Jul 2016 17:51:58 +0300 Message-ID: In-Reply-To: D0FBBFBB-89C1-48E9-8855-7A497C6B5F67@redhat.com --===============3074649527608067744== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable This is a multi-part message in MIME format. ------=3D_NextPart_000_001B_01D1D3C1.43418010 Content-Type: text/plain; charset=3D"utf-8" Content-Transfer-Encoding: quoted-printable Thank you very much. Seems to work now. From: Vinzenz Feenstra=3D20 Sent: Friday, July 01, 2016 5:37 PM To: Tadas=3D20 Cc: users(a)ovirt.org=3D20 Subject: Re: [ovirt-users] Communicating with ovirt agent On Jul 1, 2016, at 4:24 PM, Tadas wrote: Thank you for reply! Im trying to send JSON-formated shutdown command to windows guest vm =3D now. Here=3DE2=3D80=3D99s small script I=3DE2=3D80=3D99ve written to test t= hat: http://pastebin.com/usAYc7Ww But still I get no reaction from ovirt agent. Surely I=3DE2=3D80=3D99m = =3D missing something. Yes the newline character send a =3DE2=3D80=3D98\n=3DE2=3D80=3D99 at the en= d and the =3D name key must be surrounded by two underscores like in the replies =3D __name__ not name From: Vinzenz Feenstra=3D20 Sent: Friday, July 01, 2016 2:53 PM To: tadas(a)ring.lt=3D20 Cc: users(a)ovirt.org=3D20 Subject: Re: [ovirt-users] Communicating with ovirt agent On Jul 1, 2016, at 12:05 PM, Tadas =3D3Drote: is there any documentation o oVirt guest agent =3D3Dommands? To be more precise: i need to pass commands to =3D3DVirt guest agent = =3D from hypervisor. Reading =3D3Dnfo works fine: socat =3D3Dvar/lib/libvirt/qemu/channel/target/domain-20- win7_32bit/com.redhat.serial.0 - {"applications": ["Python 2.7.12rc1", "SPICE Guest Tools", =3D3DTotal Commander (Remove or Repair)", "Python 2.7 =3D3Dywin32-216", =3D "Microsoft .NET Framework 4.6.1", "Git =3D3Dersion 2.9.0", "WinRAR 5.40 beta 2 =3D (32- bit)", =3D3DNotepad++"], "__name__": "applications"} {"__name__": =3D3Dhost-name", "name": "WIN7_32BIT"} {"__name__": =3D3Dos-version", "version": "Win 7=3DE2=3D80=3D9D} Every =3D3Dommand has to be send as a whole JSON object and sent as line = =3D =3D3Derminated by a \n character The =3D3Dommands available are currently not documented however. {=3DE2=3D80=3D9C__name__=3DE2=3D80=3D9D: =3DE2=3D80=3D9Cname=3DE2=3D80=3D= 9D,=3D3D=3DE2=3D80=3DA6 args} - name: =3D3Dhutdown parameters: - =3D3Dimeout: optional integer (seconds) =3D3D/span>- reboot: optional boolean - =3D3Dessage: string - =3D3Dame: refresh parameters: - =3D3DpiVersion: optiona integer=3D20 =3D3Dnbsp; this defines what information can be =3D3Dxchanged - =3D3Dame: hibernate: parameters: - state: =3D3Disk or mem (default is disk if not specified) if you need more you can look here: =3D https://github.com/oVirt/ovirt-guest-agent/blob/master/ovirt-gu=3D3Dst-agen= =3D t/OVirtAgentLogic.py#L306 at the parseCommand =3D3Dunction or just ask here :-) I'm unable to find how to send command (lets =3D3Day "shutdown") to =3D agent?. echo "shutdown" | socat =3D =3D3Dvar/lib/libvirt/qemu/channel/target/domain-20- win7_32bit/com.redhat.kvm-vdi.0 - Does=3D3Dnot seem to work Thank you for your help. _______________________________________________ Users mailing list Users(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/users =3D3D _______________________________________________ Users mailing list Users(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/users ------=3D_NextPart_000_001B_01D1D3C1.43418010 Content-Type: text/html; charset=3D"utf-8" Content-Transfer-Encoding: quoted-printable
Thank you very much. Seems to work now.
 
Sent: Friday, July 01, 2016 5:37 PM
To: Tadas=3D20
Subject: Re: [ovirt-users] Communicating with ovirt=3D20 agent
 
 
On Jul 1, 2016, at 4:24 PM, Tadas <tadas(a)ring.lt> wrote:
 
Thank you for reply!
Im trying to send JSON-formated shutdown command to windows guest = =3D vm now.=3D20 Here=3DE2=3D80=3D99s small script I=3DE2=3D80=3D99ve written to test that= :
http://pastebin.com/usAYc7Ww
 
But still I get no reaction from ovirt agent. Surely I=3DE2=3D80=3D9= 9m =3D missing=3D20 something.
 
Yes the newline character send a =3DE2=3D80=3D98\n=3DE2=3D80=3D99 at t= he end =3D and the name key must be=3D20 surrounded by two underscores like in the replies __name__ not =3D name

 
 
Sent: Friday, July 01, 2016 2:53 PM
Subject: Re: [ovirt-users] Communicating with ovirt=3D20 agent
 
 
On Jul 1, 2016, at 12:05 PM, Tadas <tadas(a)ring.lt> =3D =3D3Drote:
 

is there any documentation o oVirt guest = =3D agent=3D20 =3D3Dommands?
To be more precise: i need to pass commands to =3D =3D3DVirt guest=3D20 agent from
hypervisor.
Reading =3D3Dnfo works fine:

socat = =3D =3D3Dvar/lib/libvirt/qemu/channel/target/domain-20-win7_32bit/com.redhat.serial.0 -
{"applications": ["Python 2.7.12rc1", "SPICE Guest = =3D Tools",=3D20 =3D3DTotal
Commander (Remove or Repair)", "Python 2.7 =3D =3D3Dywin32-216",=3D20 "Microsoft
.NET Framework 4.6.1", "Git =3D3Dersion 2.9.0", "WinRAR = =3D 5.40 beta=3D20 2 (32-
bit)", =3D3DNotepad++"], "__name__": =3D "applications"}
{"__name__":=3D20 =3D3Dhost-name", "name": "WIN7_32BIT"}
{"__name__": =3D3Dos-version"= , =3D "version":=3D20 "Win 7=3DE2=3D80=3D9D}
 
Every =3D3Dommand has to be send as a whole JSON object and sent as = =3D line=3D20 =3D3Derminated by a \n character
 
The =3D3Dommands available are currently not documented =3D however.
 
{=3DE2=3D80=3D9C__name__=3DE2=3D80=3D9D: =3DE2=3D80=3D9Cname=3DE2=3D= 80=3D9D,=3D3D=3DE2=3D80=3DA6 =3D args}
 
- name: =3D3Dhutdown
  parameters:
-=3D20 =3D3Dimeout: optional integer (seconds)
=3D3D/span>-=3D20 reboot: optional boolean
-=3D20 =3D3Dessage: string
 
- =3D3Dame: refresh
  parameters:
-=3D20 =3D3DpiVersion: optiona integer
        =3D3Dnbsp;   = =3D this=3D20 defines what information can be =3D3Dxchanged
 
- =3D3Dame: hibernate:
  parameters:
- state:=3D20 =3D3Disk or mem (default is disk if not specified)
 
if you need more you can look here:  https://github.com/oVirt/ovirt-guest-agent/blob/master/ovirt-gu=3D3Dst-ag= =3D ent/OVirtAgentLogic.py#L306=3D20 at the parseCommand =3D3Dunction
or just ask here :-)



I'm unable to find how to send command= =3D (lets =3D3Day=3D20 "shutdown") to agent?.
echo "shutdown" | socat=3D20 =3D3Dvar/lib/libvirt/qemu/channel/target/domain-20-win7_32bit/com.redhat.kvm-vdi.0  =3D -
Does=3D3Dnot seem to=3D20 work
Thank you for your help._______________________________________________Users mailing list
Users(a)ovirt.org
http://lists.ovirt= =3D .org/mailman/listinfo/users

=3D3D
_________= =3D ______________________________________
Users=3D20 mailing list
Users(a)ovirt.org
http://lists.o= virt=3D .org/mailman/listinfo/users
 
------=3D_NextPart_000_001B_01D1D3C1.43418010-- --===============3074649527608067744== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KCi0tLS0tLT1fTmV4 dFBhcnRfMDAwXzAwMUJfMDFEMUQzQzEuNDM0MTgwMTAKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OwoJY2hhcnNldD0idXRmLTgiCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmlu dGFibGUKClRoYW5rIHlvdSB2ZXJ5IG11Y2guIFNlZW1zIHRvIHdvcmsgbm93LgoKRnJvbTogVmlu emVueiBGZWVuc3RyYT0yMApTZW50OiBGcmlkYXksIEp1bHkgMDEsIDIwMTYgNTozNyBQTQpUbzog VGFkYXM9MjAKQ2M6IHVzZXJzQG92aXJ0Lm9yZz0yMApTdWJqZWN0OiBSZTogW292aXJ0LXVzZXJz XSBDb21tdW5pY2F0aW5nIHdpdGggb3ZpcnQgYWdlbnQKCgogIE9uIEp1bCAxLCAyMDE2LCBhdCA0 OjI0IFBNLCBUYWRhcyA8dGFkYXNAcmluZy5sdD4gd3JvdGU6CgogIFRoYW5rIHlvdSBmb3IgcmVw bHkhCiAgSW0gdHJ5aW5nIHRvIHNlbmQgSlNPTi1mb3JtYXRlZCBzaHV0ZG93biBjb21tYW5kIHRv IHdpbmRvd3MgZ3Vlc3Qgdm0gPQpub3cuIEhlcmU9RTI9ODA9OTlzIHNtYWxsIHNjcmlwdCBJPUUy PTgwPTk5dmUgd3JpdHRlbiB0byB0ZXN0IHRoYXQ6CiAgaHR0cDovL3Bhc3RlYmluLmNvbS91c0FZ YzdXdwoKICBCdXQgc3RpbGwgSSBnZXQgbm8gcmVhY3Rpb24gZnJvbSBvdmlydCBhZ2VudC4gU3Vy ZWx5IEk9RTI9ODA9OTltID0KbWlzc2luZyBzb21ldGhpbmcuCgpZZXMgdGhlIG5ld2xpbmUgY2hh cmFjdGVyIHNlbmQgYSA9RTI9ODA9OThcbj1FMj04MD05OSBhdCB0aGUgZW5kIGFuZCB0aGUgPQpu YW1lIGtleSBtdXN0IGJlIHN1cnJvdW5kZWQgYnkgdHdvIHVuZGVyc2NvcmVzIGxpa2UgaW4gdGhl IHJlcGxpZXMgPQpfX25hbWVfXyBub3QgbmFtZQoKCgoKICBGcm9tOiBWaW56ZW56IEZlZW5zdHJh PTIwCiAgU2VudDogRnJpZGF5LCBKdWx5IDAxLCAyMDE2IDI6NTMgUE0KICBUbzogdGFkYXNAcmlu Zy5sdD0yMAogIENjOiB1c2Vyc0BvdmlydC5vcmc9MjAKICBTdWJqZWN0OiBSZTogW292aXJ0LXVz ZXJzXSBDb21tdW5pY2F0aW5nIHdpdGggb3ZpcnQgYWdlbnQKCgogICAgT24gSnVsIDEsIDIwMTYs IGF0IDEyOjA1IFBNLCBUYWRhcyA8dGFkYXNAcmluZy5sdD4gPTNEcm90ZToKCgogICAgaXMgdGhl cmUgYW55IGRvY3VtZW50YXRpb24gbyBvVmlydCBndWVzdCBhZ2VudCA9M0RvbW1hbmRzPwogICAg VG8gYmUgbW9yZSBwcmVjaXNlOiBpIG5lZWQgdG8gcGFzcyBjb21tYW5kcyB0byA9M0RWaXJ0IGd1 ZXN0IGFnZW50ID0KZnJvbQogICAgaHlwZXJ2aXNvci4KICAgIFJlYWRpbmcgPTNEbmZvIHdvcmtz IGZpbmU6CgogICAgc29jYXQgPTNEdmFyL2xpYi9saWJ2aXJ0L3FlbXUvY2hhbm5lbC90YXJnZXQv ZG9tYWluLTIwLQogICAgd2luN18zMmJpdC9jb20ucmVkaGF0LnNlcmlhbC4wIC0KCiAgICB7ImFw cGxpY2F0aW9ucyI6IFsiUHl0aG9uIDIuNy4xMnJjMSIsICJTUElDRSBHdWVzdCBUb29scyIsID0z RFRvdGFsCiAgICBDb21tYW5kZXIgKFJlbW92ZSBvciBSZXBhaXIpIiwgIlB5dGhvbiAyLjcgPTNE eXdpbjMyLTIxNiIsID0KIk1pY3Jvc29mdAogICAgLk5FVCBGcmFtZXdvcmsgNC42LjEiLCAiR2l0 ID0zRGVyc2lvbiAyLjkuMCIsICJXaW5SQVIgNS40MCBiZXRhIDIgPQooMzItCiAgICBiaXQpIiwg PTNETm90ZXBhZCsrIl0sICJfX25hbWVfXyI6ICJhcHBsaWNhdGlvbnMifQogICAgeyJfX25hbWVf XyI6ID0zRGhvc3QtbmFtZSIsICJuYW1lIjogIldJTjdfMzJCSVQifQogICAgeyJfX25hbWVfXyI6 ID0zRG9zLXZlcnNpb24iLCAidmVyc2lvbiI6ICJXaW4gNz1FMj04MD05RH0KCgogIEV2ZXJ5ID0z RG9tbWFuZCBoYXMgdG8gYmUgc2VuZCBhcyBhIHdob2xlIEpTT04gb2JqZWN0IGFuZCBzZW50IGFz IGxpbmUgPQo9M0Rlcm1pbmF0ZWQgYnkgYSBcbiBjaGFyYWN0ZXIKCiAgVGhlID0zRG9tbWFuZHMg YXZhaWxhYmxlIGFyZSBjdXJyZW50bHkgbm90IGRvY3VtZW50ZWQgaG93ZXZlci4KCiAgez1FMj04 MD05Q19fbmFtZV9fPUUyPTgwPTlEOiA9RTI9ODA9OUNuYW1lPUUyPTgwPTlELD0zRD1FMj04MD1B NiBhcmdzfQoKICAtIG5hbWU6ID0zRGh1dGRvd24KICAgIHBhcmFtZXRlcnM6CiAgLSA9M0RpbWVv dXQ6IG9wdGlvbmFsIGludGVnZXIgKHNlY29uZHMpCiAgPTNEL3NwYW4+LSByZWJvb3Q6IG9wdGlv bmFsIGJvb2xlYW4KICAtID0zRGVzc2FnZTogc3RyaW5nCgogIC0gPTNEYW1lOiByZWZyZXNoCiAg ICBwYXJhbWV0ZXJzOgogIC0gPTNEcGlWZXJzaW9uOiBvcHRpb25hIGludGVnZXI9MjAKICAgICAg ICAgID0zRG5ic3A7ICAgdGhpcyBkZWZpbmVzIHdoYXQgaW5mb3JtYXRpb24gY2FuIGJlID0zRHhj aGFuZ2VkCgogIC0gPTNEYW1lOiBoaWJlcm5hdGU6CiAgICBwYXJhbWV0ZXJzOgogIC0gc3RhdGU6 ID0zRGlzayBvciBtZW0gKGRlZmF1bHQgaXMgZGlzayBpZiBub3Qgc3BlY2lmaWVkKQoKICBpZiB5 b3UgbmVlZCBtb3JlIHlvdSBjYW4gbG9vayBoZXJlOiAgPQpodHRwczovL2dpdGh1Yi5jb20vb1Zp cnQvb3ZpcnQtZ3Vlc3QtYWdlbnQvYmxvYi9tYXN0ZXIvb3ZpcnQtZ3U9M0RzdC1hZ2VuPQp0L09W aXJ0QWdlbnRMb2dpYy5weSNMMzA2IGF0IHRoZSBwYXJzZUNvbW1hbmQgPTNEdW5jdGlvbgogIG9y IGp1c3QgYXNrIGhlcmUgOi0pCgoKCgogICAgSSdtIHVuYWJsZSB0byBmaW5kIGhvdyB0byBzZW5k IGNvbW1hbmQgKGxldHMgPTNEYXkgInNodXRkb3duIikgdG8gPQphZ2VudD8uCiAgICBlY2hvICJz aHV0ZG93biIgfCBzb2NhdCA9Cj0zRHZhci9saWIvbGlidmlydC9xZW11L2NoYW5uZWwvdGFyZ2V0 L2RvbWFpbi0yMC0KICAgIHdpbjdfMzJiaXQvY29tLnJlZGhhdC5rdm0tdmRpLjAgIC0KICAgIERv ZXM9M0Rub3Qgc2VlbSB0byB3b3JrCiAgICBUaGFuayB5b3UgZm9yIHlvdXIgaGVscC4KICAgIF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgICBVc2VycyBt YWlsaW5nIGxpc3QKICAgIFVzZXJzQG92aXJ0Lm9yZwogICAgaHR0cDovL2xpc3RzLm92aXJ0Lm9y Zy9tYWlsbWFuL2xpc3RpbmZvL3VzZXJzCgoKICA9M0QKICBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwogIFVzZXJzIG1haWxpbmcgbGlzdAogIFVzZXJzQG92 aXJ0Lm9yZwogIGh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9saXN0aW5mby91c2VycwoK Ci0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMUJfMDFEMUQzQzEuNDM0MTgwMTAKQ29udGVudC1UeXBl OiB0ZXh0L2h0bWw7CgljaGFyc2V0PSJ1dGYtOCIKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzog cXVvdGVkLXByaW50YWJsZQoKPEhUTUw+PEhFQUQ+CjxNRVRBIGNvbnRlbnQ9M0QidGV4dC9odG1s IGNoYXJzZXQ9M0R1dGYtOCIgPQpodHRwLWVxdWl2PTNEQ29udGVudC1UeXBlPjwvSEVBRD4KPEJP RFk9MjAKc3R5bGU9M0QiV09SRC1XUkFQOiBicmVhay13b3JkOyAtd2Via2l0LW5ic3AtbW9kZTog c3BhY2U7ID0KLXdlYmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1zcGFjZSI9MjAKZGlyPTNE bHRyPgo8RElWIGRpcj0zRGx0cj4KPERJViBzdHlsZT0zRCJGT05ULVNJWkU6IDEycHQ7IEZPTlQt RkFNSUxZOiAnQ2FsaWJyaSc7IENPTE9SOiAjMDAwMDAwIj4KPERJVj5UaGFuayB5b3UgdmVyeSBt dWNoLiBTZWVtcyB0byB3b3JrIG5vdy48L0RJVj4KPERJVj0yMApzdHlsZT0zRCdGT05ULVNJWkU6 IHNtYWxsOyBURVhULURFQ09SQVRJT046IG5vbmU7IEZPTlQtRkFNSUxZOiA9CiJDYWxpYnJpIjsg Rk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICMwMDAwMDA7IEZPTlQtU1RZTEU6IG5vcm1hbDsg PQpESVNQTEFZOiBpbmxpbmUnPgo8RElWIHN0eWxlPTNEIkZPTlQ6IDEwcHQgdGFob21hIj4KPERJ Vj4mbmJzcDs8L0RJVj4KPERJViBzdHlsZT0zRCJCQUNLR1JPVU5EOiAjZjVmNWY1Ij4KPERJViBz dHlsZT0zRCJmb250LWNvbG9yOiBibGFjayI+PEI+RnJvbTo8L0I+IDxBID0KdGl0bGU9M0R2ZmVl bnN0ckByZWRoYXQuY29tPTIwCmhyZWY9M0QibWFpbHRvOnZmZWVuc3RyQHJlZGhhdC5jb20iPlZp bnplbnogRmVlbnN0cmE8L0E+IDwvRElWPgo8RElWPjxCPlNlbnQ6PC9CPiBGcmlkYXksIEp1bHkg MDEsIDIwMTYgNTozNyBQTTwvRElWPgo8RElWPjxCPlRvOjwvQj4gPEEgdGl0bGU9M0R0YWRhc0By aW5nLmx0ID0KaHJlZj0zRCJtYWlsdG86dGFkYXNAcmluZy5sdCI+VGFkYXM8L0E+PTIwCjwvRElW Pgo8RElWPjxCPkNjOjwvQj4gPEEgdGl0bGU9M0R1c2Vyc0BvdmlydC5vcmc9MjAKaHJlZj0zRCJt YWlsdG86dXNlcnNAb3ZpcnQub3JnIj51c2Vyc0BvdmlydC5vcmc8L0E+IDwvRElWPgo8RElWPjxC PlN1YmplY3Q6PC9CPiBSZTogW292aXJ0LXVzZXJzXSBDb21tdW5pY2F0aW5nIHdpdGggb3ZpcnQ9 MjAKYWdlbnQ8L0RJVj48L0RJVj48L0RJVj4KPERJVj4mbmJzcDs8L0RJVj48L0RJVj4KPERJVj0y MApzdHlsZT0zRCdGT05ULVNJWkU6IHNtYWxsOyBURVhULURFQ09SQVRJT046IG5vbmU7IEZPTlQt RkFNSUxZOiA9CiJDYWxpYnJpIjsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgQ09MT1I6ICMwMDAwMDA7 IEZPTlQtU1RZTEU6IG5vcm1hbDsgPQpESVNQTEFZOiBpbmxpbmUnPgo8RElWPiZuYnNwOzwvRElW Pgo8RElWPgo8QkxPQ0tRVU9URSB0eXBlPTNEImNpdGUiPgogIDxESVY+T24gSnVsIDEsIDIwMTYs IGF0IDQ6MjQgUE0sIFRhZGFzICZsdDs8QT0yMAogIGhyZWY9M0QibWFpbHRvOnRhZGFzQHJpbmcu bHQiPnRhZGFzQHJpbmcubHQ8L0E+Jmd0OyB3cm90ZTo8L0RJVj4KICA8RElWPiZuYnNwOzwvRElW PgogIDxESVY+CiAgPERJVj0yMAogIHN0eWxlPTNEIldPUkQtV1JBUDogYnJlYWstd29yZDsgLXdl YmtpdC1saW5lLWJyZWFrOiBhZnRlci13aGl0ZS1zcGFjZTsgPQp3ZWJraXQtbmJzcC1tb2RlOiBz cGFjZSI9MjAKICBkaXI9M0RsdHIgPTNEJ2xhc3M9M0QiIiAnPgogIDxESVYgZGlyPTNEbHRyPgog IDxESVYgc3R5bGU9M0QiRk9OVC1TSVpFOiAxMnB0OyBGT05ULUZBTUlMWTogY2FsaWJyaSI+CiAg PERJVj5UaGFuayB5b3UgZm9yIHJlcGx5ITwvRElWPgogIDxESVY+SW0gdHJ5aW5nIHRvIHNlbmQg SlNPTi1mb3JtYXRlZCBzaHV0ZG93biBjb21tYW5kIHRvIHdpbmRvd3MgZ3Vlc3QgPQp2bSBub3cu PTIwCiAgSGVyZT1FMj04MD05OXMgc21hbGwgc2NyaXB0IEk9RTI9ODA9OTl2ZSB3cml0dGVuIHRv IHRlc3QgdGhhdDo8L0RJVj4KICA8RElWPjxBIHRpdGxlPTNEaHR0cDovL3Bhc3RlYmluLmNvbS91 c0FZYzdXdz0yMAogID0KaHJlZj0zRCJodHRwOi8vcGFzdGViaW4uY29tL3VzQVljN1d3Ij5odHRw Oi8vcGFzdGViaW4uY29tL3VzQVljN1d3PC9BPjwvRD0KSVY+CiAgPERJVj4mbmJzcDs8L0RJVj4K ICA8RElWPkJ1dCBzdGlsbCBJIGdldCBubyByZWFjdGlvbiBmcm9tIG92aXJ0IGFnZW50LiBTdXJl bHkgST1FMj04MD05OW0gPQptaXNzaW5nPTIwCiAgc29tZXRoaW5nLjwvRElWPjwvRElWPjwvRElW PjwvRElWPjwvRElWPjwvQkxPQ0tRVU9URT4KPERJVj4mbmJzcDs8L0RJVj4KPERJVj5ZZXMgdGhl IG5ld2xpbmUgY2hhcmFjdGVyIHNlbmQgYSA9RTI9ODA9OThcbj1FMj04MD05OSBhdCB0aGUgZW5k ID0KYW5kIHRoZSBuYW1lIGtleSBtdXN0IGJlPTIwCnN1cnJvdW5kZWQgYnkgdHdvIHVuZGVyc2Nv cmVzIGxpa2UgaW4gdGhlIHJlcGxpZXMgX19uYW1lX18gbm90ID0KbmFtZTwvRElWPjxCUj4KPEJM T0NLUVVPVEUgdHlwZT0zRCJjaXRlIj4KICA8RElWPgogIDxESVY9MjAKICBzdHlsZT0zRCJXT1JE LVdSQVA6IGJyZWFrLXdvcmQ7IC13ZWJraXQtbGluZS1icmVhazogYWZ0ZXItd2hpdGUtc3BhY2U7 ID0Kd2Via2l0LW5ic3AtbW9kZTogc3BhY2UiPTIwCiAgZGlyPTNEbHRyID0zRCdsYXNzPTNEIiIg Jz4KICA8RElWIGRpcj0zRGx0cj4KICA8RElWIHN0eWxlPTNEIkZPTlQtU0laRTogMTJwdDsgRk9O VC1GQU1JTFk6IGNhbGlicmkiPgogIDxESVY+Jm5ic3A7PC9ESVY+CiAgPERJVj0yMAogIHN0eWxl PTNEIkZPTlQtU0laRTogc21hbGw7IFRFWFQtREVDT1JBVElPTjogbm9uZTsgRk9OVC1GQU1JTFk6 ID0KY2FsaWJyaTsgRk9OVC1XRUlHSFQ6IG5vcm1hbDsgRk9OVC1TVFlMRTogbm9ybWFsOyBESVNQ TEFZOiBpbmxpbmUiPgogIDxESVYgc3R5bGU9M0QiRk9OVDogMTBwdCB0YWhvbWEiPgogIDxESVY+ Jm5ic3A7PC9ESVY+CiAgPERJViBzdHlsZT0zRCJCQUNLR1JPVU5EOiAjZjVmNWY1Ij4KICA8RElW IHN0eWxlPTNEImZvbnQtY29sb3I6IGJsYWNrIj48Qj5Gcm9tOjwvQj4gPEEgPQp0aXRsZT0zRHZm ZWVuc3RyQHJlZGhhdC5jb209MjAKICBocmVmPTNEIm1haWx0bzp2ZmVlbnN0ckByZWRoYXQuY29t Ij5WaW56ZW56IEZlZW5zdHJhPC9BPiA8L0RJVj4KICA8RElWPjxCPlNlbnQ6PC9CPiBGcmlkYXks IEp1bHkgMDEsIDIwMTYgMjo1MyBQTTwvRElWPgogIDxESVY+PEI+VG86PC9CPiA8QSB0aXRsZT0z RHRhZGFzQHJpbmcubHQ9MjAKICBocmVmPTNEIm1haWx0bzp0YWRhc0ByaW5nLmx0Ij50YWRhc0By aW5nLmx0PC9BPiA8L0RJVj4KICA8RElWPjxCPkNjOjwvQj4gPEEgdGl0bGU9M0R1c2Vyc0Bvdmly dC5vcmc9MjAKICBocmVmPTNEIm1haWx0bzp1c2Vyc0BvdmlydC5vcmciPnVzZXJzQG92aXJ0Lm9y ZzwvQT4gPC9ESVY+CiAgPERJVj48Qj5TdWJqZWN0OjwvQj4gUmU6IFtvdmlydC11c2Vyc10gQ29t bXVuaWNhdGluZyB3aXRoIG92aXJ0PTIwCiAgYWdlbnQ8L0RJVj48L0RJVj48L0RJVj4KICA8RElW PiZuYnNwOzwvRElWPjwvRElWPgogIDxESVY9MjAKICBzdHlsZT0zRCJGT05ULVNJWkU6IHNtYWxs OyBURVhULURFQ09SQVRJT046IG5vbmU7IEZPTlQtRkFNSUxZOiA9CmNhbGlicmk7IEZPTlQtV0VJ R0hUOiBub3JtYWw7IEZPTlQtU1RZTEU6IG5vcm1hbDsgRElTUExBWTogaW5saW5lIj4KICA8RElW PiZuYnNwOzwvRElWPgogIDxESVY+CiAgPEJMT0NLUVVPVEUgdHlwZT0zRCJjaXRlIj4KICAgIDxE SVYgPTNEJ2xhc3M9M0QiIiAnPk9uIEp1bCAxLCAyMDE2LCBhdCAxMjowNSBQTSwgVGFkYXMgJmx0 OzxBPTIwCiAgICA9M0QncmVmPTNEIm1haWx0bzp0YWRhc0ByaW5nLmx0IiAnPnRhZGFzQHJpbmcu bHQ8L0E+Jmd0OyA9Cj0zRHJvdGU6PC9ESVY+CiAgICA8RElWPiZuYnNwOzwvRElWPgogICAgPERJ Vj4KICAgIDxESVYgPTNEJ2xhc3M9M0QiIiAnPjxCUj5pcyB0aGVyZSBhbnkgZG9jdW1lbnRhdGlv biBvIG9WaXJ0IGd1ZXN0ID0KYWdlbnQ9MjAKICAgID0zRG9tbWFuZHM/PEJSPlRvIGJlIG1vcmUg cHJlY2lzZTogaSBuZWVkIHRvIHBhc3MgY29tbWFuZHMgdG8gPQo9M0RWaXJ0IGd1ZXN0PTIwCiAg ICBhZ2VudCBmcm9tPEJSPmh5cGVydmlzb3IuPEJSPlJlYWRpbmcgPTNEbmZvIHdvcmtzIGZpbmU6 PEJSPjxCUj5zb2NhdCA9CgogICAgPTNEdmFyL2xpYi9saWJ2aXJ0L3FlbXUvY2hhbm5lbC90YXJn ZXQvZG9tYWluLTIwLTxCUj0yMAogICAgPTNEJ2xhc3M9M0QiIiAnPndpbjdfMzJiaXQvY29tLnJl ZGhhdC5zZXJpYWwuMCAtPEJSPjxCUj0yMAogICAgPTNEJ2xhc3M9M0QiIiAnPnsiYXBwbGljYXRp b25zIjogWyJQeXRob24gMi43LjEycmMxIiwgIlNQSUNFIEd1ZXN0ID0KVG9vbHMiLD0yMAogICAg PTNEVG90YWw8QlI+Q29tbWFuZGVyIChSZW1vdmUgb3IgUmVwYWlyKSIsICJQeXRob24gMi43ID0K PTNEeXdpbjMyLTIxNiIsPTIwCiAgICAiTWljcm9zb2Z0PEJSPi5ORVQgRnJhbWV3b3JrIDQuNi4x IiwgIkdpdCA9M0RlcnNpb24gMi45LjAiLCAiV2luUkFSID0KNS40MCBiZXRhPTIwCiAgICAyICgz Mi08QlI+Yml0KSIsID0zRE5vdGVwYWQrKyJdLCAiX19uYW1lX18iOiA9CiJhcHBsaWNhdGlvbnMi fTxCUj57Il9fbmFtZV9fIjo9MjAKICAgID0zRGhvc3QtbmFtZSIsICJuYW1lIjogIldJTjdfMzJC SVQifTxCUj57Il9fbmFtZV9fIjogPTNEb3MtdmVyc2lvbiIsID0KInZlcnNpb24iOj0yMAogICAg IldpbiA3PUUyPTgwPTlEfTxCUiA9M0QnbGFzcz0zRCIiICc+PC9ESVY+PC9ESVY+PC9CTE9DS1FV T1RFPgogIDxESVY+Jm5ic3A7PC9ESVY+CiAgPERJVj5FdmVyeSA9M0RvbW1hbmQgaGFzIHRvIGJl IHNlbmQgYXMgYSB3aG9sZSBKU09OIG9iamVjdCBhbmQgc2VudCBhcyA9CmxpbmU9MjAKICA9M0Rl cm1pbmF0ZWQgYnkgYSBcbiBjaGFyYWN0ZXI8L0RJVj4KICA8RElWPiZuYnNwOzwvRElWPgogIDxE SVY+VGhlID0zRG9tbWFuZHMgYXZhaWxhYmxlIGFyZSBjdXJyZW50bHkgbm90IGRvY3VtZW50ZWQg PQpob3dldmVyLjwvRElWPgogIDxESVY+Jm5ic3A7PC9ESVY+CiAgPERJVj57PUUyPTgwPTlDX19u YW1lX189RTI9ODA9OUQ6ID1FMj04MD05Q25hbWU9RTI9ODA9OUQsPTNEPUUyPTgwPUE2ID0KYXJn c308L0RJVj4KICA8RElWPiZuYnNwOzwvRElWPgogIDxESVY+LSBuYW1lOiA9M0RodXRkb3duPC9E SVY+CiAgPERJVj4mbmJzcDsgcGFyYW1ldGVyczo8L0RJVj4KICA8RElWPjxTUEFOIHN0eWxlPTNE IldISVRFLVNQQUNFOiBwcmUiID0zRCdsYXNzPTNEIkFwcGxlLXRhYi1zcGFuIiA9Cic+PC9TUEFO Pi09MjAKICA9M0RpbWVvdXQ6IG9wdGlvbmFsIGludGVnZXIgKHNlY29uZHMpPC9ESVY+CiAgPERJ Vj48U1BBTiBzdHlsZT0zRCJXSElURS1TUEFDRTogcHJlIiA9M0QnbGFzcz0zRCJBcHBsZS10YWIt c3BhbiIgPQonPj0zRC9zcGFuJmd0Oy09MjAKICByZWJvb3Q6IG9wdGlvbmFsIGJvb2xlYW48L1NQ QU4+PC9ESVY+CiAgPERJVj48U1BBTiBzdHlsZT0zRCJXSElURS1TUEFDRTogcHJlIiA9M0QnbGFz cz0zRCJBcHBsZS10YWItc3BhbiIgPQonPjwvU1BBTj4tPTIwCiAgPTNEZXNzYWdlOiBzdHJpbmc8 L0RJVj4KICA8RElWPiZuYnNwOzwvRElWPgogIDxESVY+LSA9M0RhbWU6IHJlZnJlc2g8L0RJVj4K ICA8RElWPiZuYnNwOyBwYXJhbWV0ZXJzOjwvRElWPgogIDxESVY+PFNQQU4gc3R5bGU9M0QiV0hJ VEUtU1BBQ0U6IHByZSIgPTNEJ2xhc3M9M0QiQXBwbGUtdGFiLXNwYW4iID0KJz48L1NQQU4+LT0y MAogID0zRHBpVmVyc2lvbjogb3B0aW9uYSBpbnRlZ2VyIDwvRElWPgogIDxESVY+Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ID0zRG5ic3A7Jm5ic3A7Jm5ic3A7ID0K dGhpcz0yMAogIGRlZmluZXMgd2hhdCBpbmZvcm1hdGlvbiBjYW4gYmUgPTNEeGNoYW5nZWQ8L0RJ Vj4KICA8RElWPiZuYnNwOzwvRElWPgogIDxESVY+LSA9M0RhbWU6IGhpYmVybmF0ZTo8L0RJVj4K ICA8RElWPiZuYnNwOyBwYXJhbWV0ZXJzOjwvRElWPgogIDxESVY+PFNQQU4gc3R5bGU9M0QiV0hJ VEUtU1BBQ0U6IHByZSIgPTNEJ2xhc3M9M0QiQXBwbGUtdGFiLXNwYW4iID0KJz48L1NQQU4+LSBz dGF0ZTo9MjAKICA9M0Rpc2sgb3IgbWVtIChkZWZhdWx0IGlzIGRpc2sgaWYgbm90IHNwZWNpZmll ZCk8L0RJVj4KICA8RElWPiZuYnNwOzwvRElWPgogIDxESVY+aWYgeW91IG5lZWQgbW9yZSB5b3Ug Y2FuIGxvb2sgaGVyZTombmJzcDsgPEE9MjAKICA9Cj0zRCdyZWY9M0QiaHR0cHM6Ly9naXRodWIu Y29tL29WaXJ0L292aXJ0LWd1ZXN0LWFnZW50L2Jsb2IvbWFzdGVyL292aXJ0LWc9CnVlc3Q9M0Rh Z2VudC9PVmlydEFnZW50TG9naWMucHkjTDMwNiIgPQonPmh0dHBzOi8vZ2l0aHViLmNvbS9vVmly dC9vdmlydC1ndWVzdC1hZ2VudC9ibG9iL21hc3Rlci9vdmlydC1ndT0zRHN0LWFnPQplbnQvT1Zp cnRBZ2VudExvZ2ljLnB5I0wzMDY8L0E+PTIwCiAgYXQgdGhlIHBhcnNlQ29tbWFuZCA9M0R1bmN0 aW9uPC9ESVY+CiAgPERJVj5vciBqdXN0IGFzayBoZXJlIDotKTwvRElWPjxCUj4KICA8QkxPQ0tR VU9URSA9M0QneXBlPTNEImNpdGUiICc+CiAgICA8RElWPgogICAgPERJVj48QlIgPTNEJ2xhc3M9 M0QiIiAnPjxCUj5JJ20gdW5hYmxlIHRvIGZpbmQgaG93IHRvIHNlbmQgY29tbWFuZCA9CihsZXRz ID0zRGF5PTIwCiAgICAic2h1dGRvd24iKSB0byBhZ2VudD8uPEJSPmVjaG8gInNodXRkb3duIiB8 IHNvY2F0PTIwCiAgICA9M0R2YXIvbGliL2xpYnZpcnQvcWVtdS9jaGFubmVsL3RhcmdldC9kb21h aW4tMjAtPEJSPTIwCiAgICA9M0QnbGFzcz0zRCIiICc+d2luN18zMmJpdC9jb20ucmVkaGF0Lmt2 bS12ZGkuMCZuYnNwOyA9Ci08QlI+RG9lcz0zRG5vdCBzZWVtIHRvPTIwCiAgICB3b3JrPEJSPlRo YW5rIHlvdSBmb3IgeW91ciBoZWxwLjxCUj0yMAogICAgPTNEJ2xhc3M9M0QiIiAnPl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPEJSPTIwCiAgICA9M0QnbGFz cz0zRCIiICc+VXNlcnMgbWFpbGluZyBsaXN0PEJSPjxBPTIwCiAgICA9M0QncmVmPTNEIm1haWx0 bzpVc2Vyc0BvdmlydC5vcmciICc+VXNlcnNAb3ZpcnQub3JnPC9BPjxCUiA9Cj0zRCdsYXNzPTNE IiIgJz48QT0yMAogICAgPQpocmVmPTNEImh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9s aXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0PQoub3JnL21haWxtYW4vbGlzdGluZm8v dXNlcnM8L0E+PEJSPTIwCiAgICA9M0QnbGFzcz0zRCIiID0KJz48L0RJVj48L0RJVj48L0JMT0NL UVVPVEU+PC9ESVY+PEJSPj0zRDwvRElWPjwvRElWPjwvRElWPjwvRElWPl9fX19fX19fXz0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188QlI+VXNlcnM9MjAKICBtYWlsaW5n IGxpc3Q8QlI+PEE9MjAKICA9CmhyZWY9M0QibWFpbHRvOlVzZXJzQG92aXJ0Lm9yZyI+VXNlcnNA b3ZpcnQub3JnPC9BPjxCUj5odHRwOi8vbGlzdHMub3ZpcnQ9Ci5vcmcvbWFpbG1hbi9saXN0aW5m by91c2VyczxCUj48L0RJVj48L0JMT0NLUVVPVEU+PC9ESVY+CjxESVY+Jm5ic3A7PC9ESVY+PC9E SVY+PC9ESVY+PC9ESVY+PC9CT0RZPjwvSFRNTD4KCi0tLS0tLT1fTmV4dFBhcnRfMDAwXzAwMUJf MDFEMUQzQzEuNDM0MTgwMTAtLQoK --===============3074649527608067744==--