From patrick_russell at volusion.com Wed Jun 17 18:30:31 2015 Content-Type: multipart/mixed; boundary="===============1134302009694401379==" MIME-Version: 1.0 From: Patrick Russell To: users at ovirt.org Subject: Re: [ovirt-users] Automating oVirt Windows Guest Tools installations Date: Wed, 17 Jun 2015 22:30:27 +0000 Message-ID: In-Reply-To: CAEpfVboZTuqKbhDPn3Y0=2uAMt9AO+4qoaHVmw2YGVD2du8aFQ@mail.gmail.com --===============1134302009694401379== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable --_000_D966748B4F044F819D8B48A958681BB6volusioncom_ Content-Type: text/plain; charset=3D"us-ascii" Content-Transfer-Encoding: quoted-printable Thank you Lev for the clarification. We had been installing manually via th= =3D e ISO, but I had mis-read some other articles about using python to automat= =3D e the process. I will pass on the notes around /S and your article to our internal windows= =3D team. Maybe they have some ideas around the cert store, or at the very lea= =3D st pass off the manual instructions to our NOC. I appreciate the response, Patrick On Jun 17, 2015, at 2:55 PM, Lev Veyde > wrote: Hi Patrick, First of all lets clear some misunderstanding here - you don't need to manu= =3D ally install Python. The installation of oVirt WGT is fully self contained, and while the oVirt = =3D Guest Agent it includes is indeed programmed in Python, the version include= =3D d is converted using py2exe (check py2exe.org for more = =3D details if it interests you) into a standalone executable (well, almost - j= =3D ust like Windows version of Python.exe, it depends on Microsoft Visual Stud= =3D io CRTL, but we install it during the installation of the oVirt WGT). Now about the automated installation. Generally we support silent installat= =3D ion of oVirt WGT. You just need to supply /S command parameter to the installer. However there is a catch - unfortunately Windows will popup warning message= =3D s due to the fact that the drivers supplied are non-WHQL'd. That is because= =3D the drivers are signed by Red Hat, Inc. and not by Microsoft certificate. This is a security feature of Windows OS itself, and there is not much we c= =3D an do about it right now. The side effect of this is that you need to manually approve the drivers in= =3D stallation for each driver, or choose to trust all drivers from Red Hat, In= =3D c., and then no more popups will show up. Unfortunately, you still need to = =3D do this manually at least once, and you can't pre-approve Red Hat, Inc. to = =3D make this process automated. For more information on installing oVirt WGT y= =3D ou can check this article: http://community.redhat.com/blog/2015/05/how-to-= =3D install-and-use-ovirts-windows-guest-tools/ by yours truly. There is a workaround though, and it's to create a program that will automa= =3D tically approve such unsigned drivers dialogs. It's relatively easy to prog= =3D ram with i.e. AutoIt scripting engine (check: https://www.autoitscript.com/= =3D site/autoit/ ), which is free (like in free beer, but unfortunately not as = =3D in freedom because source code for it is not supplied). Note that you must = =3D be quite careful with that, as by doing so you basically disabling the secu= =3D rity mechanism that Microsoft had put in place for a reason, and potentiall= =3D y you may unintentionally install other non-WHQL'd drivers - if the install= =3D ation attempt for these other drivers will be made while your auto-approver= =3D program will run. Thanks in advance, Lev Veyde. --_000_D966748B4F044F819D8B48A958681BB6volusioncom_ Content-Type: text/html; charset=3D"us-ascii" Content-ID: <9A57CAB2415424468673D216BEA8E33D(a)namprd04.prod.outlook.com> Content-Transfer-Encoding: quoted-printable Thank you Lev for the clarification. We had been installing manually via th= =3D e ISO, but I had mis-read some other articles about using python to automat= =3D e the process.

I will pass on the notes around /S and your article to ou= r =3D internal windows team. Maybe they have some ideas around the cert store, or= =3D at the very least pass off the manual instructions to our NOC. 

I appreciate the response, 
Patrick

On Jun 17, 2015, at 2:55 PM, Lev Veyde <lveyde(a)gmail.com> wrote:

Hi Patrick,

First of all lets clear some misunderstanding here - you don't need to manu= =3D ally install Python.
The installation of oVirt WGT is fully self contained, and while the oVirt = =3D Guest Agent it includes is indeed programmed in Python, the version include= =3D d is converted using py2exe (check py2exe.org for more detai= ls i=3D f it interests you) into a standalone executable (well, almost - just like = =3D Windows version of Python.exe, it depends on Microsoft Visual Studio CRTL, = =3D but we install it during the installation of the oVirt WGT).

Now about the automated installation. Generally we suppor= t =3D silent installation of oVirt WGT.
You just need to supply /S command parameter to the insta= ll=3D er.
However there is a catch - unfortunately Windows will pop= up=3D warning messages due to the fact that the drivers supplied are non-WHQL'd.= =3D That is because the drivers are signed by Red Hat, Inc. and not by Microso= =3D ft certificate.

This is a security feature of Windows OS itself, and ther= e =3D is not much we can do about it right now.
The side effect of this is that you need to manually approve the drivers in= =3D stallation for each driver, or choose to trust all drivers from Red Hat, In= =3D c., and then no more popups will show up. Unfortunately, you still need to = =3D do this manually at least once, and you can't pre-approve Red Hat, Inc. to make this process automated. Fo= =3D r more information on installing oVirt WGT you can check this article: http://community.redhat.com/blog/2015/05/how-to-install-and-use-ovirts-wind= =3D ows-guest-tools/ by yours truly.

There is a workaround though, and it's to create a progra= m =3D that will automatically approve such unsigned drivers dialogs. It's relativ= =3D ely easy to program with i.e. AutoIt scripting engine (check: https:= //ww=3D w.autoitscript.com/site/autoit/ ), which is free (like in free beer, bu= =3D t unfortunately not as in freedom because source code for it is not supplie= =3D d). Note that you must be quite careful with that, as by doing so you basically disabling the security mechanism t= =3D hat Microsoft had put in place for a reason, and potentially you may uninte= =3D ntionally install other non-WHQL'd drivers - if the installation attempt fo= =3D r these other drivers will be made while your auto-approver program will run.

Thanks in advance,
Lev Veyde.

--_000_D966748B4F044F819D8B48A958681BB6volusioncom_-- --===============1134302009694401379== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" LS1fMDAwX0Q5NjY3NDhCNEYwNDRGODE5RDhCNDhBOTU4NjgxQkI2dm9sdXNpb25jb21fCkNvbnRl bnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXMtYXNjaWkiCkNvbnRlbnQtVHJhbnNmZXIt RW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKClRoYW5rIHlvdSBMZXYgZm9yIHRoZSBjbGFyaWZp Y2F0aW9uLiBXZSBoYWQgYmVlbiBpbnN0YWxsaW5nIG1hbnVhbGx5IHZpYSB0aD0KZSBJU08sIGJ1 dCBJIGhhZCBtaXMtcmVhZCBzb21lIG90aGVyIGFydGljbGVzIGFib3V0IHVzaW5nIHB5dGhvbiB0 byBhdXRvbWF0PQplIHRoZSBwcm9jZXNzLgoKSSB3aWxsIHBhc3Mgb24gdGhlIG5vdGVzIGFyb3Vu ZCAvUyBhbmQgeW91ciBhcnRpY2xlIHRvIG91ciBpbnRlcm5hbCB3aW5kb3dzPQogdGVhbS4gTWF5 YmUgdGhleSBoYXZlIHNvbWUgaWRlYXMgYXJvdW5kIHRoZSBjZXJ0IHN0b3JlLCBvciBhdCB0aGUg dmVyeSBsZWE9CnN0IHBhc3Mgb2ZmIHRoZSBtYW51YWwgaW5zdHJ1Y3Rpb25zIHRvIG91ciBOT0Mu CgpJIGFwcHJlY2lhdGUgdGhlIHJlc3BvbnNlLApQYXRyaWNrCgpPbiBKdW4gMTcsIDIwMTUsIGF0 IDI6NTUgUE0sIExldiBWZXlkZSA8bHZleWRlQGdtYWlsLmNvbTxtYWlsdG86bHZleWRlQGdtYWk9 CmwuY29tPj4gd3JvdGU6CgpIaSBQYXRyaWNrLAoKRmlyc3Qgb2YgYWxsIGxldHMgY2xlYXIgc29t ZSBtaXN1bmRlcnN0YW5kaW5nIGhlcmUgLSB5b3UgZG9uJ3QgbmVlZCB0byBtYW51PQphbGx5IGlu c3RhbGwgUHl0aG9uLgpUaGUgaW5zdGFsbGF0aW9uIG9mIG9WaXJ0IFdHVCBpcyBmdWxseSBzZWxm IGNvbnRhaW5lZCwgYW5kIHdoaWxlIHRoZSBvVmlydCA9Ckd1ZXN0IEFnZW50IGl0IGluY2x1ZGVz IGlzIGluZGVlZCBwcm9ncmFtbWVkIGluIFB5dGhvbiwgdGhlIHZlcnNpb24gaW5jbHVkZT0KZCBp cyBjb252ZXJ0ZWQgdXNpbmcgcHkyZXhlIChjaGVjayBweTJleGUub3JnPGh0dHA6Ly9weTJleGUu b3JnLz4gZm9yIG1vcmUgPQpkZXRhaWxzIGlmIGl0IGludGVyZXN0cyB5b3UpIGludG8gYSBzdGFu ZGFsb25lIGV4ZWN1dGFibGUgKHdlbGwsIGFsbW9zdCAtIGo9CnVzdCBsaWtlIFdpbmRvd3MgdmVy c2lvbiBvZiBQeXRob24uZXhlLCBpdCBkZXBlbmRzIG9uIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZD0K aW8gQ1JUTCwgYnV0IHdlIGluc3RhbGwgaXQgZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhl IG9WaXJ0IFdHVCkuCgpOb3cgYWJvdXQgdGhlIGF1dG9tYXRlZCBpbnN0YWxsYXRpb24uIEdlbmVy YWxseSB3ZSBzdXBwb3J0IHNpbGVudCBpbnN0YWxsYXQ9CmlvbiBvZiBvVmlydCBXR1QuCllvdSBq dXN0IG5lZWQgdG8gc3VwcGx5IC9TIGNvbW1hbmQgcGFyYW1ldGVyIHRvIHRoZSBpbnN0YWxsZXIu Ckhvd2V2ZXIgdGhlcmUgaXMgYSBjYXRjaCAtIHVuZm9ydHVuYXRlbHkgV2luZG93cyB3aWxsIHBv cHVwIHdhcm5pbmcgbWVzc2FnZT0KcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZHJpdmVycyBz dXBwbGllZCBhcmUgbm9uLVdIUUwnZC4gVGhhdCBpcyBiZWNhdXNlPQogdGhlIGRyaXZlcnMgYXJl IHNpZ25lZCBieSBSZWQgSGF0LCBJbmMuIGFuZCBub3QgYnkgTWljcm9zb2Z0IGNlcnRpZmljYXRl LgoKVGhpcyBpcyBhIHNlY3VyaXR5IGZlYXR1cmUgb2YgV2luZG93cyBPUyBpdHNlbGYsIGFuZCB0 aGVyZSBpcyBub3QgbXVjaCB3ZSBjPQphbiBkbyBhYm91dCBpdCByaWdodCBub3cuClRoZSBzaWRl IGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgeW91IG5lZWQgdG8gbWFudWFsbHkgYXBwcm92ZSB0aGUg ZHJpdmVycyBpbj0Kc3RhbGxhdGlvbiBmb3IgZWFjaCBkcml2ZXIsIG9yIGNob29zZSB0byB0cnVz dCBhbGwgZHJpdmVycyBmcm9tIFJlZCBIYXQsIEluPQpjLiwgYW5kIHRoZW4gbm8gbW9yZSBwb3B1 cHMgd2lsbCBzaG93IHVwLiBVbmZvcnR1bmF0ZWx5LCB5b3Ugc3RpbGwgbmVlZCB0byA9CmRvIHRo aXMgbWFudWFsbHkgYXQgbGVhc3Qgb25jZSwgYW5kIHlvdSBjYW4ndCBwcmUtYXBwcm92ZSBSZWQg SGF0LCBJbmMuIHRvID0KbWFrZSB0aGlzIHByb2Nlc3MgYXV0b21hdGVkLiBGb3IgbW9yZSBpbmZv cm1hdGlvbiBvbiBpbnN0YWxsaW5nIG9WaXJ0IFdHVCB5PQpvdSBjYW4gY2hlY2sgdGhpcyBhcnRp Y2xlOiBodHRwOi8vY29tbXVuaXR5LnJlZGhhdC5jb20vYmxvZy8yMDE1LzA1L2hvdy10by09Cmlu c3RhbGwtYW5kLXVzZS1vdmlydHMtd2luZG93cy1ndWVzdC10b29scy8gYnkgeW91cnMgdHJ1bHku CgpUaGVyZSBpcyBhIHdvcmthcm91bmQgdGhvdWdoLCBhbmQgaXQncyB0byBjcmVhdGUgYSBwcm9n cmFtIHRoYXQgd2lsbCBhdXRvbWE9CnRpY2FsbHkgYXBwcm92ZSBzdWNoIHVuc2lnbmVkIGRyaXZl cnMgZGlhbG9ncy4gSXQncyByZWxhdGl2ZWx5IGVhc3kgdG8gcHJvZz0KcmFtIHdpdGggaS5lLiBB dXRvSXQgc2NyaXB0aW5nIGVuZ2luZSAoY2hlY2s6IGh0dHBzOi8vd3d3LmF1dG9pdHNjcmlwdC5j b20vPQpzaXRlL2F1dG9pdC8gKSwgd2hpY2ggaXMgZnJlZSAobGlrZSBpbiBmcmVlIGJlZXIsIGJ1 dCB1bmZvcnR1bmF0ZWx5IG5vdCBhcyA9CmluIGZyZWVkb20gYmVjYXVzZSBzb3VyY2UgY29kZSBm b3IgaXQgaXMgbm90IHN1cHBsaWVkKS4gTm90ZSB0aGF0IHlvdSBtdXN0ID0KYmUgcXVpdGUgY2Fy ZWZ1bCB3aXRoIHRoYXQsIGFzIGJ5IGRvaW5nIHNvIHlvdSBiYXNpY2FsbHkgZGlzYWJsaW5nIHRo ZSBzZWN1PQpyaXR5IG1lY2hhbmlzbSB0aGF0IE1pY3Jvc29mdCBoYWQgcHV0IGluIHBsYWNlIGZv ciBhIHJlYXNvbiwgYW5kIHBvdGVudGlhbGw9CnkgeW91IG1heSB1bmludGVudGlvbmFsbHkgaW5z dGFsbCBvdGhlciBub24tV0hRTCdkIGRyaXZlcnMgLSBpZiB0aGUgaW5zdGFsbD0KYXRpb24gYXR0 ZW1wdCBmb3IgdGhlc2Ugb3RoZXIgZHJpdmVycyB3aWxsIGJlIG1hZGUgd2hpbGUgeW91ciBhdXRv LWFwcHJvdmVyPQogcHJvZ3JhbSB3aWxsIHJ1bi4KClRoYW5rcyBpbiBhZHZhbmNlLApMZXYgVmV5 ZGUuCgoKLS1fMDAwX0Q5NjY3NDhCNEYwNDRGODE5RDhCNDhBOTU4NjgxQkI2dm9sdXNpb25jb21f CkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1cy1hc2NpaSIKQ29udGVudC1JRDog PDlBNTdDQUIyNDE1NDI0NDY4NjczRDIxNkJFQThFMzNEQG5hbXByZDA0LnByb2Qub3V0bG9vay5j b20+CkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjxodG1sPgo8 aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4dC9o dG1sOyBjaGFyc2V0PTNEdXMtYXNjaWkiPQo+CjwvaGVhZD4KPGJvZHkgc3R5bGU9M0Qid29yZC13 cmFwOiBicmVhay13b3JkOyAtd2Via2l0LW5ic3AtbW9kZTogc3BhY2U7IC13ZWJraXQtbGluPQpl LWJyZWFrOiBhZnRlci13aGl0ZS1zcGFjZTsiIGNsYXNzPTNEIiI+ClRoYW5rIHlvdSBMZXYgZm9y IHRoZSBjbGFyaWZpY2F0aW9uLiBXZSBoYWQgYmVlbiBpbnN0YWxsaW5nIG1hbnVhbGx5IHZpYSB0 aD0KZSBJU08sIGJ1dCBJIGhhZCBtaXMtcmVhZCBzb21lIG90aGVyIGFydGljbGVzIGFib3V0IHVz aW5nIHB5dGhvbiB0byBhdXRvbWF0PQplIHRoZSBwcm9jZXNzLgo8ZGl2IGNsYXNzPTNEIiI+PGJy IGNsYXNzPTNEIiI+CjwvZGl2Pgo8ZGl2IGNsYXNzPTNEIiI+SSB3aWxsIHBhc3Mgb24gdGhlIG5v dGVzIGFyb3VuZCAvUyBhbmQgeW91ciBhcnRpY2xlIHRvIG91ciA9CmludGVybmFsIHdpbmRvd3Mg dGVhbS4gTWF5YmUgdGhleSBoYXZlIHNvbWUgaWRlYXMgYXJvdW5kIHRoZSBjZXJ0IHN0b3JlLCBv cj0KIGF0IHRoZSB2ZXJ5IGxlYXN0IHBhc3Mgb2ZmIHRoZSBtYW51YWwgaW5zdHJ1Y3Rpb25zIHRv IG91ciBOT0MuJm5ic3A7PC9kaXY+CjxkaXYgY2xhc3M9M0QiIj48YnIgY2xhc3M9M0QiIj4KPC9k aXY+CjxkaXYgY2xhc3M9M0QiIj5JIGFwcHJlY2lhdGUgdGhlIHJlc3BvbnNlLCZuYnNwOzwvZGl2 Pgo8ZGl2IGNsYXNzPTNEIiI+UGF0cmljazwvZGl2Pgo8ZGl2IGNsYXNzPTNEIiI+PGJyIGNsYXNz PTNEIiI+CjxkaXY+CjxibG9ja3F1b3RlIHR5cGU9M0QiY2l0ZSIgY2xhc3M9M0QiIj4KPGRpdiBj bGFzcz0zRCIiPk9uIEp1biAxNywgMjAxNSwgYXQgMjo1NSBQTSwgTGV2IFZleWRlICZsdDs8YSBo cmVmPTNEIm1haWx0PQpvOmx2ZXlkZUBnbWFpbC5jb20iIGNsYXNzPTNEIiI+bHZleWRlQGdtYWls LmNvbTwvYT4mZ3Q7IHdyb3RlOjwvZGl2Pgo8YnIgY2xhc3M9M0QiQXBwbGUtaW50ZXJjaGFuZ2Ut bmV3bGluZSI+CjxkaXYgY2xhc3M9M0QiIj4KPGRpdiBkaXI9M0QibHRyIiBjbGFzcz0zRCIiPgo8 ZGl2IGNsYXNzPTNEIiI+CjxkaXYgY2xhc3M9M0QiIj5IaSBQYXRyaWNrLDxiciBjbGFzcz0zRCIi Pgo8YnIgY2xhc3M9M0QiIj4KPC9kaXY+CkZpcnN0IG9mIGFsbCBsZXRzIGNsZWFyIHNvbWUgbWlz dW5kZXJzdGFuZGluZyBoZXJlIC0geW91IGRvbid0IG5lZWQgdG8gbWFudT0KYWxseSBpbnN0YWxs IFB5dGhvbi48YnIgY2xhc3M9M0QiIj4KPC9kaXY+ClRoZSBpbnN0YWxsYXRpb24gb2Ygb1ZpcnQg V0dUIGlzIGZ1bGx5IHNlbGYgY29udGFpbmVkLCBhbmQgd2hpbGUgdGhlIG9WaXJ0ID0KR3Vlc3Qg QWdlbnQgaXQgaW5jbHVkZXMgaXMgaW5kZWVkIHByb2dyYW1tZWQgaW4gUHl0aG9uLCB0aGUgdmVy c2lvbiBpbmNsdWRlPQpkIGlzIGNvbnZlcnRlZCB1c2luZyBweTJleGUgKGNoZWNrCjxhIGhyZWY9 M0QiaHR0cDovL3B5MmV4ZS5vcmcvIiBjbGFzcz0zRCIiPnB5MmV4ZS5vcmc8L2E+IGZvciBtb3Jl IGRldGFpbHMgaT0KZiBpdCBpbnRlcmVzdHMgeW91KSBpbnRvIGEgc3RhbmRhbG9uZSBleGVjdXRh YmxlICh3ZWxsLCBhbG1vc3QgLSBqdXN0IGxpa2UgPQpXaW5kb3dzIHZlcnNpb24gb2YgUHl0aG9u LmV4ZSwgaXQgZGVwZW5kcyBvbiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBDUlRMLCA9CmJ1dCB3 ZSBpbnN0YWxsIGl0IGR1cmluZyB0aGUgaW5zdGFsbGF0aW9uCiBvZiB0aGUgb1ZpcnQgV0dUKS48 YnIgY2xhc3M9M0QiIj4KPGRpdiBjbGFzcz0zRCIiPgo8ZGl2IGNsYXNzPTNEIiI+CjxkaXYgY2xh c3M9M0QiIj48YnIgY2xhc3M9M0QiIj4KPC9kaXY+CjxkaXYgY2xhc3M9M0QiIj5Ob3cgYWJvdXQg dGhlIGF1dG9tYXRlZCBpbnN0YWxsYXRpb24uIEdlbmVyYWxseSB3ZSBzdXBwb3J0ID0Kc2lsZW50 IGluc3RhbGxhdGlvbiBvZiBvVmlydCBXR1QuPGJyIGNsYXNzPTNEIiI+CjwvZGl2Pgo8ZGl2IGNs YXNzPTNEIiI+WW91IGp1c3QgbmVlZCB0byBzdXBwbHkgL1MgY29tbWFuZCBwYXJhbWV0ZXIgdG8g dGhlIGluc3RhbGw9CmVyLjxiciBjbGFzcz0zRCIiPgo8L2Rpdj4KPGRpdiBjbGFzcz0zRCIiPkhv d2V2ZXIgdGhlcmUgaXMgYSBjYXRjaCAtIHVuZm9ydHVuYXRlbHkgV2luZG93cyB3aWxsIHBvcHVw PQogd2FybmluZyBtZXNzYWdlcyBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZHJpdmVycyBzdXBw bGllZCBhcmUgbm9uLVdIUUwnZC49CiBUaGF0IGlzIGJlY2F1c2UgdGhlIGRyaXZlcnMgYXJlIHNp Z25lZCBieSBSZWQgSGF0LCBJbmMuIGFuZCBub3QgYnkgTWljcm9zbz0KZnQgY2VydGlmaWNhdGUu PGJyIGNsYXNzPTNEIiI+CjxiciBjbGFzcz0zRCIiPgo8L2Rpdj4KPGRpdiBjbGFzcz0zRCIiPlRo aXMgaXMgYSBzZWN1cml0eSBmZWF0dXJlIG9mIFdpbmRvd3MgT1MgaXRzZWxmLCBhbmQgdGhlcmUg PQppcyBub3QgbXVjaCB3ZSBjYW4gZG8gYWJvdXQgaXQgcmlnaHQgbm93LjxiciBjbGFzcz0zRCIi PgpUaGUgc2lkZSBlZmZlY3Qgb2YgdGhpcyBpcyB0aGF0IHlvdSBuZWVkIHRvIG1hbnVhbGx5IGFw cHJvdmUgdGhlIGRyaXZlcnMgaW49CnN0YWxsYXRpb24gZm9yIGVhY2ggZHJpdmVyLCBvciBjaG9v c2UgdG8gdHJ1c3QgYWxsIGRyaXZlcnMgZnJvbSBSZWQgSGF0LCBJbj0KYy4sIGFuZCB0aGVuIG5v IG1vcmUgcG9wdXBzIHdpbGwgc2hvdyB1cC4gVW5mb3J0dW5hdGVseSwgeW91IHN0aWxsIG5lZWQg dG8gPQpkbyB0aGlzIG1hbnVhbGx5IGF0IGxlYXN0IG9uY2UsCiBhbmQgeW91IGNhbid0IHByZS1h cHByb3ZlIFJlZCBIYXQsIEluYy4gdG8gbWFrZSB0aGlzIHByb2Nlc3MgYXV0b21hdGVkLiBGbz0K ciBtb3JlIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcgb1ZpcnQgV0dUIHlvdSBjYW4gY2hlY2sg dGhpcyBhcnRpY2xlOgo8YSBocmVmPTNEImh0dHA6Ly9jb21tdW5pdHkucmVkaGF0LmNvbS9ibG9n LzIwMTUvMDUvaG93LXRvLWluc3RhbGwtYW5kLXVzZS09Cm92aXJ0cy13aW5kb3dzLWd1ZXN0LXRv b2xzLyIgY2xhc3M9M0QiIj4KaHR0cDovL2NvbW11bml0eS5yZWRoYXQuY29tL2Jsb2cvMjAxNS8w NS9ob3ctdG8taW5zdGFsbC1hbmQtdXNlLW92aXJ0cy13aW5kPQpvd3MtZ3Vlc3QtdG9vbHMvPC9h PiBieSB5b3VycyB0cnVseS48YnIgY2xhc3M9M0QiIj4KPGJyIGNsYXNzPTNEIiI+CjwvZGl2Pgo8 ZGl2IGNsYXNzPTNEIiI+VGhlcmUgaXMgYSB3b3JrYXJvdW5kIHRob3VnaCwgYW5kIGl0J3MgdG8g Y3JlYXRlIGEgcHJvZ3JhbSA9CnRoYXQgd2lsbCBhdXRvbWF0aWNhbGx5IGFwcHJvdmUgc3VjaCB1 bnNpZ25lZCBkcml2ZXJzIGRpYWxvZ3MuIEl0J3MgcmVsYXRpdj0KZWx5IGVhc3kgdG8gcHJvZ3Jh bSB3aXRoIGkuZS4gQXV0b0l0IHNjcmlwdGluZyBlbmdpbmUgKGNoZWNrOgo8YSBocmVmPTNEImh0 dHBzOi8vd3d3LmF1dG9pdHNjcmlwdC5jb20vc2l0ZS9hdXRvaXQvIiBjbGFzcz0zRCIiPmh0dHBz Oi8vd3c9CncuYXV0b2l0c2NyaXB0LmNvbS9zaXRlL2F1dG9pdC88L2E+ICksIHdoaWNoIGlzIGZy ZWUgKGxpa2UgaW4gZnJlZSBiZWVyLCBidT0KdCB1bmZvcnR1bmF0ZWx5IG5vdCBhcyBpbiBmcmVl ZG9tIGJlY2F1c2Ugc291cmNlIGNvZGUgZm9yIGl0IGlzIG5vdCBzdXBwbGllPQpkKS4gTm90ZSB0 aGF0IHlvdSBtdXN0IGJlIHF1aXRlIGNhcmVmdWwKIHdpdGggdGhhdCwgYXMgYnkgZG9pbmcgc28g eW91IGJhc2ljYWxseSBkaXNhYmxpbmcgdGhlIHNlY3VyaXR5IG1lY2hhbmlzbSB0PQpoYXQgTWlj cm9zb2Z0IGhhZCBwdXQgaW4gcGxhY2UgZm9yIGEgcmVhc29uLCBhbmQgcG90ZW50aWFsbHkgeW91 IG1heSB1bmludGU9Cm50aW9uYWxseSBpbnN0YWxsIG90aGVyIG5vbi1XSFFMJ2QgZHJpdmVycyAt IGlmIHRoZSBpbnN0YWxsYXRpb24gYXR0ZW1wdCBmbz0KciB0aGVzZSBvdGhlciBkcml2ZXJzIHdp bGwgYmUgbWFkZQogd2hpbGUgeW91ciBhdXRvLWFwcHJvdmVyIHByb2dyYW0gd2lsbCBydW4uPGJy IGNsYXNzPTNEIiI+CjwvZGl2Pgo8ZGl2IGNsYXNzPTNEIiI+PGJyIGNsZWFyPTNEImFsbCIgY2xh c3M9M0QiIj4KPGRpdiBjbGFzcz0zRCIiPgo8ZGl2IGNsYXNzPTNEIiI+CjxkaXYgY2xhc3M9M0Qi Z21haWxfc2lnbmF0dXJlIj4KPGRpdiBkaXI9M0QibHRyIiBjbGFzcz0zRCIiPlRoYW5rcyBpbiBh ZHZhbmNlLDxiciBjbGFzcz0zRCIiPgpMZXYgVmV5ZGUuPGJyIGNsYXNzPTNEIiI+CjwvZGl2Pgo8 L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwv YmxvY2txdW90ZT4KPC9kaXY+CjxiciBjbGFzcz0zRCIiPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+ CgotLV8wMDBfRDk2Njc0OEI0RjA0NEY4MTlEOEI0OEE5NTg2ODFCQjZ2b2x1c2lvbmNvbV8tLQo= --===============1134302009694401379==--