From knarra at redhat.com Mon Apr 24 11:44:26 2017 Content-Type: multipart/mixed; boundary="===============2888257466066210975==" MIME-Version: 1.0 From: knarra To: users at ovirt.org Subject: Re: [ovirt-users] Hyperconverged Setup and Gluster healing Date: Mon, 24 Apr 2017 17:14:23 +0530 Message-ID: <9af80a9b-753d-ef32-b72c-8bfc4b528821@redhat.com> In-Reply-To: BFAB40933B3367488CE6299BAF8592D1014E52CC4354@SOCRATES.asl.local --===============2888257466066210975== 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. --------------941CA42C94052919F4693A27 Content-Type: text/plain; charset=3Dwindows-1252; format=3Dflowed Content-Transfer-Encoding: 8bit On 04/24/2017 05:03 PM, Sven Achtelik wrote: > > Hi All, > > my oVirt-Setup is 3 Hosts with gluster and reaplica 3. I always try to = > stay on the current version and I=C2=92m applying updates/upgrade if ther= e = > are any. For this I put a host in maintenance and also use the =C2=93Stop = > Gluster Service=C2=94 checkbox. After it=C2=92s done updating I=C2=92ll = set it back = > to active and wait until the engine sees all bricks again and then = > I=C2=92ll go for the next host. > > This worked fine for me the last month and now that I have more and = > more VMs running the changes that are written to the gluster volume = > while a host is in maintenance become a lot more and it takes pretty = > long for the healing to complete. What I don=C2=92t understand is that I = > don=C2=92t really see a lot of network usage in the GUI during that time = > and it feels quiet slow. The Network for the gluster is a 10G and I=C2=92= m = > quiet happy with the performance of it, it=C2=92s just the healing that = > takes long. I noticed that because I couldn=C2=92t update the third host = > because of unsynced gluster volumes. > > Is there any limiting variable that slows down traffic during healing = > that needs to be configured ? Or should I maybe change my updating = > process somehow to avoid having so many changes in queue? > > Thank you, > > Sven > > > > _______________________________________________ > Users mailing list > Users(a)ovirt.org > http://lists.ovirt.org/mailman/listinfo/users Hi Sven, Do you have granular entry heal enabled on the volume? If no, there = is a feature called granular entry self-heal which should be enabled = with sharded volumes to get the benefits. So when a brick goes down and = say only 1 in those million entries is created/deleted. Self-heal would = be done for only that file it won't crawl the entire directory. You can run|gluster volume set/VOLNAME/cluster.granular-entry-heal = enable / disable|command only if the volume is in|Created|state. If the = volume is in any other state other than|Created|, for = example,|Started|,|Stopped|, and so on, execute|gluster volume heal = VOLNAME granular-entry-heal|enable / disable||command to enable or = disable granular-entry-heal option. Thanks kasturi --------------941CA42C94052919F4693A27 Content-Type: text/html; charset=3Dwindows-1252 Content-Transfer-Encoding: 8bit
On 04/24/2017 05:03 PM, Sven Achtelik wrote:

Hi All,

=C2=A0

my oVirt-Setup is 3 Hosts with gluster and reaplica 3. I always try to stay on the current version and I=C2=92m applying updates/upgrade if there are any. For this I put a host in maintenance and also use the =C2=93Stop Gluster Service=C2=94 =C2=A0checkbox. After = it=C2=92s done updating I=C2=92ll set it back to active and wait until the engine sees all bricks again and then I=C2=92ll go for the next host.

=C2=A0

This worked fine for me the last month and now that I have more and more VMs running the changes that are written to the gluster volume while a host is in maintenance become a lot more and it takes pretty long for the healing to complete. What I don=C2=92t understand = is that I don=C2=92t really see a lot of network usage in the GUI during that time and it feels quiet slow. The Network for the gluster is a 10G and I=C2=92m quiet happy with the performance of it, it=C2=92s just the healing that takes long. I noticed that because I couldn=C2=92t update the third host because of unsynced gluster volumes.

=C2=A0

Is there any limiting variable that slows down traffic during healing that needs to be configured ? Or should I maybe change my updating process somehow to avoid having so many changes in queue? =

=C2=A0

Thank you, <= /span>

=C2=A0

Sven<= /p>

=C2=A0



_______________________________________________
Users mailing list
Use=
rs(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/users

Hi Sven,

=C2=A0=C2=A0=C2=A0 Do you have granular entry heal enabled on the vo= lume? If no, there is a feature called granular entry self-heal which should be enabled with sharded volumes to get the benefits. So when a brick goes down and say only 1 in those million entries is created/deleted. Self-heal would be done for only that file it won't crawl the entire directory.

=C2=A0=C2=A0=C2=A0 You can run=C2=A0gluster volume set=C2=A0VOLNAME=C2=A0cluster.granular-ent= ry-heal enable / disable=C2=A0= command only if the volume is in=C2=A0Created=C2=A0state. If the volume is in any other state other than=C2=A0Created=C2=A0, for example,=C2=A0Started=C2=A0,=C2=A0Stopped, and so on, execute=C2=A0gluster volume heal VOLNAME granular-entry-heal=C2=A0enable / disable=C2=A0command to enable or disable granular-entry-heal option.

Thanks

kasturi

--------------941CA42C94052919F4693A27-- --===============2888257466066210975== Content-Type: multipart/alternative MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.bin" VGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLS0tLS0tLS0tLS0t LS05NDFDQTQyQzk0MDUyOTE5RjQ2OTNBMjcKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFy c2V0PXdpbmRvd3MtMTI1MjsgZm9ybWF0PWZsb3dlZApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5n OiA4Yml0CgpPbiAwNC8yNC8yMDE3IDA1OjAzIFBNLCBTdmVuIEFjaHRlbGlrIHdyb3RlOgo+Cj4g SGkgQWxsLAo+Cj4gbXkgb1ZpcnQtU2V0dXAgaXMgMyBIb3N0cyB3aXRoIGdsdXN0ZXIgYW5kIHJl YXBsaWNhIDMuIEkgYWx3YXlzIHRyeSB0byAKPiBzdGF5IG9uIHRoZSBjdXJyZW50IHZlcnNpb24g YW5kIEmSbSBhcHBseWluZyB1cGRhdGVzL3VwZ3JhZGUgaWYgdGhlcmUgCj4gYXJlIGFueS4gRm9y IHRoaXMgSSBwdXQgYSBob3N0IGluIG1haW50ZW5hbmNlIGFuZCBhbHNvIHVzZSB0aGUgk1N0b3Ag Cj4gR2x1c3RlciBTZXJ2aWNllCAgY2hlY2tib3guIEFmdGVyIGl0knMgZG9uZSB1cGRhdGluZyBJ kmxsIHNldCBpdCBiYWNrIAo+IHRvIGFjdGl2ZSBhbmQgd2FpdCB1bnRpbCB0aGUgZW5naW5lIHNl ZXMgYWxsIGJyaWNrcyBhZ2FpbiBhbmQgdGhlbiAKPiBJkmxsIGdvIGZvciB0aGUgbmV4dCBob3N0 Lgo+Cj4gVGhpcyB3b3JrZWQgZmluZSBmb3IgbWUgdGhlIGxhc3QgbW9udGggYW5kIG5vdyB0aGF0 IEkgaGF2ZSBtb3JlIGFuZCAKPiBtb3JlIFZNcyBydW5uaW5nIHRoZSBjaGFuZ2VzIHRoYXQgYXJl IHdyaXR0ZW4gdG8gdGhlIGdsdXN0ZXIgdm9sdW1lIAo+IHdoaWxlIGEgaG9zdCBpcyBpbiBtYWlu dGVuYW5jZSBiZWNvbWUgYSBsb3QgbW9yZSBhbmQgaXQgdGFrZXMgcHJldHR5IAo+IGxvbmcgZm9y IHRoZSBoZWFsaW5nIHRvIGNvbXBsZXRlLiBXaGF0IEkgZG9uknQgdW5kZXJzdGFuZCBpcyB0aGF0 IEkgCj4gZG9uknQgcmVhbGx5IHNlZSBhIGxvdCBvZiBuZXR3b3JrIHVzYWdlIGluIHRoZSBHVUkg ZHVyaW5nIHRoYXQgdGltZSAKPiBhbmQgaXQgZmVlbHMgcXVpZXQgc2xvdy4gVGhlIE5ldHdvcmsg Zm9yIHRoZSBnbHVzdGVyIGlzIGEgMTBHIGFuZCBJkm0gCj4gcXVpZXQgaGFwcHkgd2l0aCB0aGUg cGVyZm9ybWFuY2Ugb2YgaXQsIGl0knMganVzdCB0aGUgaGVhbGluZyB0aGF0IAo+IHRha2VzIGxv bmcuIEkgbm90aWNlZCB0aGF0IGJlY2F1c2UgSSBjb3VsZG6SdCB1cGRhdGUgdGhlIHRoaXJkIGhv c3QgCj4gYmVjYXVzZSBvZiB1bnN5bmNlZCBnbHVzdGVyIHZvbHVtZXMuCj4KPiBJcyB0aGVyZSBh bnkgbGltaXRpbmcgdmFyaWFibGUgdGhhdCBzbG93cyBkb3duIHRyYWZmaWMgZHVyaW5nIGhlYWxp bmcgCj4gdGhhdCBuZWVkcyB0byBiZSBjb25maWd1cmVkID8gT3Igc2hvdWxkIEkgbWF5YmUgY2hh bmdlIG15IHVwZGF0aW5nIAo+IHByb2Nlc3Mgc29tZWhvdyB0byBhdm9pZCBoYXZpbmcgc28gbWFu eSBjaGFuZ2VzIGluIHF1ZXVlPwo+Cj4gVGhhbmsgeW91LAo+Cj4gU3Zlbgo+Cj4KPgo+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gVXNlcnMgbWFpbGlu ZyBsaXN0Cj4gVXNlcnNAb3ZpcnQub3JnCj4gaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3VzZXJzCgpIaSBTdmVuLAoKICAgICBEbyB5b3UgaGF2ZSBncmFudWxhciBlbnRy eSBoZWFsIGVuYWJsZWQgb24gdGhlIHZvbHVtZT8gSWYgbm8sIHRoZXJlIAppcyBhIGZlYXR1cmUg Y2FsbGVkIGdyYW51bGFyIGVudHJ5IHNlbGYtaGVhbCB3aGljaCBzaG91bGQgYmUgZW5hYmxlZCAK d2l0aCBzaGFyZGVkIHZvbHVtZXMgdG8gZ2V0IHRoZSBiZW5lZml0cy4gU28gd2hlbiBhIGJyaWNr IGdvZXMgZG93biBhbmQgCnNheSBvbmx5IDEgaW4gdGhvc2UgbWlsbGlvbiBlbnRyaWVzIGlzIGNy ZWF0ZWQvZGVsZXRlZC4gU2VsZi1oZWFsIHdvdWxkIApiZSBkb25lIGZvciBvbmx5IHRoYXQgZmls ZSBpdCB3b24ndCBjcmF3bCB0aGUgZW50aXJlIGRpcmVjdG9yeS4KCllvdSBjYW4gcnVufGdsdXN0 ZXIgdm9sdW1lIHNldC9WT0xOQU1FL2NsdXN0ZXIuZ3JhbnVsYXItZW50cnktaGVhbCAKZW5hYmxl IC8gZGlzYWJsZXxjb21tYW5kIG9ubHkgaWYgdGhlIHZvbHVtZSBpcyBpbnxDcmVhdGVkfHN0YXRl LiBJZiB0aGUgCnZvbHVtZSBpcyBpbiBhbnkgb3RoZXIgc3RhdGUgb3RoZXIgdGhhbnxDcmVhdGVk fCwgZm9yIApleGFtcGxlLHxTdGFydGVkfCx8U3RvcHBlZHwsIGFuZCBzbyBvbiwgZXhlY3V0ZXxn bHVzdGVyIHZvbHVtZSBoZWFsIApWT0xOQU1FIGdyYW51bGFyLWVudHJ5LWhlYWx8ZW5hYmxlIC8g ZGlzYWJsZXx8Y29tbWFuZCB0byBlbmFibGUgb3IgCmRpc2FibGUgZ3JhbnVsYXItZW50cnktaGVh bCBvcHRpb24uCgpUaGFua3MKCmthc3R1cmkKCgotLS0tLS0tLS0tLS0tLTk0MUNBNDJDOTQwNTI5 MTlGNDY5M0EyNwpDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD13aW5kb3dzLTEyNTIK Q29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKPGh0bWw+CiAgPGhlYWQ+CiAgICA8bWV0 YSBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9d2luZG93cy0xMjUyIgogICAgICBodHRwLWVx dWl2PSJDb250ZW50LVR5cGUiPgogIDwvaGVhZD4KICA8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiB0 ZXh0PSIjMDAwMDAwIj4KICAgIDxkaXYgY2xhc3M9Im1vei1jaXRlLXByZWZpeCI+T24gMDQvMjQv MjAxNyAwNTowMyBQTSwgU3ZlbiBBY2h0ZWxpawogICAgICB3cm90ZTo8YnI+CiAgICA8L2Rpdj4K ICAgIDxibG9ja3F1b3RlCmNpdGU9Im1pZDpCRkFCNDA5MzNCMzM2NzQ4OENFNjI5OUJBRjg1OTJE MTAxNEU1MkNDNDM1NEBTT0NSQVRFUy5hc2wubG9jYWwiCiAgICAgIHR5cGU9ImNpdGUiPgogICAg ICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsKICAg ICAgICBjaGFyc2V0PXdpbmRvd3MtMTI1MiI+CiAgICAgIDxtZXRhIG5hbWU9IkdlbmVyYXRvciIg Y29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkCiAgICAgICAgbWVkaXVtKSI+CiAg ICAgIDxzdHlsZT48IS0tCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8KQGZvbnQtZmFjZQoJe2ZvbnQt ZmFtaWx5OiJDYW1icmlhIE1hdGgiOwoJcGFub3NlLTE6MiA0IDUgMyA1IDQgNiAzIDIgNDt9CkBm b250LWZhY2UKCXtmb250LWZhbWlseTpDYWxpYnJpOwoJcGFub3NlLTE6MiAxNSA1IDIgMiAyIDQg MyAyIDQ7fQovKiBTdHlsZSBEZWZpbml0aW9ucyAqLwpwLk1zb05vcm1hbCwgbGkuTXNvTm9ybWFs LCBkaXYuTXNvTm9ybWFsCgl7bWFyZ2luOjBjbTsKCW1hcmdpbi1ib3R0b206LjAwMDFwdDsKCWZv bnQtc2l6ZToxMS4wcHQ7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsKCW1zby1m YXJlYXN0LWxhbmd1YWdlOkVOLVVTO30KYTpsaW5rLCBzcGFuLk1zb0h5cGVybGluawoJe21zby1z dHlsZS1wcmlvcml0eTo5OTsKCWNvbG9yOiMwNTYzQzE7Cgl0ZXh0LWRlY29yYXRpb246dW5kZXJs aW5lO30KYTp2aXNpdGVkLCBzcGFuLk1zb0h5cGVybGlua0ZvbGxvd2VkCgl7bXNvLXN0eWxlLXBy aW9yaXR5Ojk5OwoJY29sb3I6Izk1NEY3MjsKCXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQpz cGFuLkUtTWFpbEZvcm1hdHZvcmxhZ2UxNwoJe21zby1zdHlsZS10eXBlOnBlcnNvbmFsLWNvbXBv c2U7Cglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjsKCWNvbG9yOndpbmRvd3RleHQ7 fQouTXNvQ2hwRGVmYXVsdAoJe21zby1zdHlsZS10eXBlOmV4cG9ydC1vbmx5OwoJZm9udC1mYW1p bHk6IkNhbGlicmkiLHNhbnMtc2VyaWY7Cgltc28tZmFyZWFzdC1sYW5ndWFnZTpFTi1VUzt9CkBw YWdlIFdvcmRTZWN0aW9uMQoJe3NpemU6NjEyLjBwdCA3OTIuMHB0OwoJbWFyZ2luOjcwLjg1cHQg NzAuODVwdCAyLjBjbSA3MC44NXB0O30KZGl2LldvcmRTZWN0aW9uMQoJe3BhZ2U6V29yZFNlY3Rp b24xO30KLS0+PC9zdHlsZT48IS0tW2lmIGd0ZSBtc28gOV0+PHhtbD4KPG86c2hhcGVkZWZhdWx0 cyB2OmV4dD0iZWRpdCIgc3BpZG1heD0iMTAyNiIgLz4KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtp ZiBndGUgbXNvIDldPjx4bWw+CjxvOnNoYXBlbGF5b3V0IHY6ZXh0PSJlZGl0Ij4KPG86aWRtYXAg djpleHQ9ImVkaXQiIGRhdGE9IjEiIC8+CjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRpZl0t LT4KICAgICAgPGRpdiBjbGFzcz0iV29yZFNlY3Rpb24xIj4KICAgICAgICA8cCBjbGFzcz0iTXNv Tm9ybWFsIj5IaSBBbGwsIDxvOnA+PC9vOnA+PC9wPgogICAgICAgIDxwIGNsYXNzPSJNc29Ob3Jt YWwiPjxvOnA+oDwvbzpwPjwvcD4KICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBs YW5nPSJFTi1VUyI+bXkgb1ZpcnQtU2V0dXAgaXMgMwogICAgICAgICAgICBIb3N0cyB3aXRoIGds dXN0ZXIgYW5kIHJlYXBsaWNhIDMuIEkgYWx3YXlzIHRyeSB0byBzdGF5IG9uCiAgICAgICAgICAg IHRoZSBjdXJyZW50IHZlcnNpb24gYW5kIEmSbSBhcHBseWluZyB1cGRhdGVzL3VwZ3JhZGUgaWYK ICAgICAgICAgICAgdGhlcmUgYXJlIGFueS4gRm9yIHRoaXMgSSBwdXQgYSBob3N0IGluIG1haW50 ZW5hbmNlIGFuZCBhbHNvCiAgICAgICAgICAgIHVzZSB0aGUgk1N0b3AgR2x1c3RlciBTZXJ2aWNl lCCgY2hlY2tib3guIEFmdGVyIGl0knMgZG9uZQogICAgICAgICAgICB1cGRhdGluZyBJkmxsIHNl dCBpdCBiYWNrIHRvIGFjdGl2ZSBhbmQgd2FpdCB1bnRpbCB0aGUKICAgICAgICAgICAgZW5naW5l IHNlZXMgYWxsIGJyaWNrcyBhZ2FpbiBhbmQgdGhlbiBJkmxsIGdvIGZvciB0aGUgbmV4dAogICAg ICAgICAgICBob3N0LiA8bzpwPjwvbzpwPjwvc3Bhbj48L3A+CiAgICAgICAgPHAgY2xhc3M9Ik1z b05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+oDwvbzpwPjwvc3Bhbj48L3A+CiAgICAg ICAgPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPlRoaXMgd29ya2VkIGZp bmUgZm9yIG1lCiAgICAgICAgICAgIHRoZSBsYXN0IG1vbnRoIGFuZCBub3cgdGhhdCBJIGhhdmUg bW9yZSBhbmQgbW9yZSBWTXMgcnVubmluZwogICAgICAgICAgICB0aGUgY2hhbmdlcyB0aGF0IGFy ZSB3cml0dGVuIHRvIHRoZSBnbHVzdGVyIHZvbHVtZSB3aGlsZSBhCiAgICAgICAgICAgIGhvc3Qg aXMgaW4gbWFpbnRlbmFuY2UgYmVjb21lIGEgbG90IG1vcmUgYW5kIGl0IHRha2VzIHByZXR0eQog ICAgICAgICAgICBsb25nIGZvciB0aGUgaGVhbGluZyB0byBjb21wbGV0ZS4gV2hhdCBJIGRvbpJ0 IHVuZGVyc3RhbmQgaXMKICAgICAgICAgICAgdGhhdCBJIGRvbpJ0IHJlYWxseSBzZWUgYSBsb3Qg b2YgbmV0d29yayB1c2FnZSBpbiB0aGUgR1VJCiAgICAgICAgICAgIGR1cmluZyB0aGF0IHRpbWUg YW5kIGl0IGZlZWxzIHF1aWV0IHNsb3cuIFRoZSBOZXR3b3JrIGZvcgogICAgICAgICAgICB0aGUg Z2x1c3RlciBpcyBhIDEwRyBhbmQgSZJtIHF1aWV0IGhhcHB5IHdpdGggdGhlCiAgICAgICAgICAg IHBlcmZvcm1hbmNlIG9mIGl0LCBpdJJzIGp1c3QgdGhlIGhlYWxpbmcgdGhhdCB0YWtlcyBsb25n LiBJCiAgICAgICAgICAgIG5vdGljZWQgdGhhdCBiZWNhdXNlIEkgY291bGRuknQgdXBkYXRlIHRo ZSB0aGlyZCBob3N0CiAgICAgICAgICAgIGJlY2F1c2Ugb2YgdW5zeW5jZWQgZ2x1c3RlciB2b2x1 bWVzLjxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBsYW5nPSJFTi1VUyI+PG86cD6gPC9vOnA+PC9zcGFuPjwvcD4KICAgICAgICA8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+SXMgdGhlcmUgYW55IGxpbWl0aW5nCiAg ICAgICAgICAgIHZhcmlhYmxlIHRoYXQgc2xvd3MgZG93biB0cmFmZmljIGR1cmluZyBoZWFsaW5n IHRoYXQgbmVlZHMKICAgICAgICAgICAgdG8gYmUgY29uZmlndXJlZCA/IE9yIHNob3VsZCBJIG1h eWJlIGNoYW5nZSBteSB1cGRhdGluZwogICAgICAgICAgICBwcm9jZXNzIHNvbWVob3cgdG8gYXZv aWQgaGF2aW5nIHNvIG1hbnkgY2hhbmdlcyBpbiBxdWV1ZT8gPG86cD48L286cD48L3NwYW4+PC9w PgogICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9IkVOLVVTIj48bzpwPqA8 L286cD48L3NwYW4+PC9wPgogICAgICAgIDxwIGNsYXNzPSJNc29Ob3JtYWwiPjxzcGFuIGxhbmc9 IkVOLVVTIj5UaGFuayB5b3UsIDxvOnA+PC9vOnA+PC9zcGFuPjwvcD4KICAgICAgICA8cCBjbGFz cz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+PG86cD6gPC9vOnA+PC9zcGFuPjwvcD4K ICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIj48c3BhbiBsYW5nPSJFTi1VUyI+U3ZlbjxvOnA+ PC9vOnA+PC9zcGFuPjwvcD4KICAgICAgICA8cCBjbGFzcz0iTXNvTm9ybWFsIj48bzpwPqA8L286 cD48L3A+CiAgICAgIDwvZGl2PgogICAgICA8YnI+CiAgICAgIDxmaWVsZHNldCBjbGFzcz0ibWlt ZUF0dGFjaG1lbnRIZWFkZXIiPjwvZmllbGRzZXQ+CiAgICAgIDxicj4KICAgICAgPHByZSB3cmFw PSIiPl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClVzZXJz IG1haWxpbmcgbGlzdAo8YSBjbGFzcz0ibW96LXR4dC1saW5rLWFiYnJldmlhdGVkIiBocmVmPSJt YWlsdG86VXNlcnNAb3ZpcnQub3JnIj5Vc2Vyc0BvdmlydC5vcmc8L2E+CjxhIGNsYXNzPSJtb3ot dHh0LWxpbmstZnJlZXRleHQiIGhyZWY9Imh0dHA6Ly9saXN0cy5vdmlydC5vcmcvbWFpbG1hbi9s aXN0aW5mby91c2VycyI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL3Vz ZXJzPC9hPgo8L3ByZT4KICAgIDwvYmxvY2txdW90ZT4KICAgIDxwPkhpIFN2ZW4sPC9wPgogICAg PHA+oKCgIERvIHlvdSBoYXZlIGdyYW51bGFyIGVudHJ5IGhlYWwgZW5hYmxlZCBvbiB0aGUgdm9s dW1lPyBJZiBubywKICAgICAgdGhlcmUgaXMgYSBmZWF0dXJlIGNhbGxlZCBncmFudWxhciBlbnRy eSBzZWxmLWhlYWwgd2hpY2ggc2hvdWxkIGJlCiAgICAgIGVuYWJsZWQgd2l0aCBzaGFyZGVkIHZv bHVtZXMgdG8gZ2V0IHRoZSBiZW5lZml0cy4gU28gd2hlbiBhIGJyaWNrCiAgICAgIGdvZXMgZG93 biBhbmQgc2F5IG9ubHkgMSBpbiB0aG9zZSBtaWxsaW9uIGVudHJpZXMgaXMKICAgICAgY3JlYXRl ZC9kZWxldGVkLiBTZWxmLWhlYWwgd291bGQgYmUgZG9uZSBmb3Igb25seSB0aGF0IGZpbGUgaXQK ICAgICAgd29uJ3QgY3Jhd2wgdGhlIGVudGlyZSBkaXJlY3RvcnkuPC9wPgogICAgPHA+oKCgCiAg ICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4dC9odG1sOwog ICAgICAgIGNoYXJzZXQ9d2luZG93cy0xMjUyIj4KICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiBy Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZToKICAgICAgICBub3Jt YWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6CiAg ICAgICAgbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs OyB0ZXh0LWFsaWduOgogICAgICAgIGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm b3JtOiBub25lOyB3aGl0ZS1zcGFjZToKICAgICAgICBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4 OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7CiAgICAgICAgZGlzcGxheTog aW5saW5lICEgaW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPllvdSBjYW4gcnVuPHNwYW4KICAgICAg ICAgIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+PC9zcGFuPjxjb2RlCiAg ICAgICAgY2xhc3M9ImNvbW1hbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250 LXNpemU6CiAgICAgICAgMTQuNHB4OyBwYWRkaW5nOiAycHggNHB4OyBjb2xvcjogcmdiKDUxLCA1 MSwgNTEpOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgYm9y ZGVyLXJhZGl1czogMHB4OwogICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50 LWxpZ2F0dXJlczogbm9ybWFsOwogICAgICAgIGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZv bnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOgogICAgICAgIG5vcm1hbDsgdGV4dC1h bGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06CiAgICAgICAgbm9u ZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij5nbHVzdGVyIHZvbHVt ZQogICAgICAgIHNldDxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+ PGVtCiAgICAgICAgICBjbGFzcz0icmVwbGFjZWFibGUiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk ZXItYm94OyI+Vk9MTkFNRTwvZW0+PHNwYW4KICAgICAgICAgIGNsYXNzPSJBcHBsZS1jb252ZXJ0 ZWQtc3BhY2UiPqA8L3NwYW4+Y2x1c3Rlci5ncmFudWxhci1lbnRyeS1oZWFsCiAgICAgICAgZW5h YmxlIC8gZGlzYWJsZTxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+ PC9jb2RlPjxzcGFuCiAgICAgICAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt c2l6ZTogMTZweDsgZm9udC1zdHlsZToKICAgICAgICBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdh dHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6CiAgICAgICAgbm9ybWFsOyBmb250LXdl aWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOgogICAgICAg IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFj ZToKICAgICAgICBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBy Z2IoMjU1LCAyNTUsIDI1NSk7CiAgICAgICAgZGlzcGxheTogaW5saW5lICEgaW1wb3J0YW50OyBm bG9hdDogbm9uZTsiPmNvbW1hbmQgb25seSBpZiB0aGUKICAgICAgICB2b2x1bWUgaXMgaW48c3Bh biBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj6gPC9zcGFuPjwvc3Bhbj48Y29kZQogICAg ICAgIGNsYXNzPSJsaXRlcmFsIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgZm9udC1z aXplOgogICAgICAgIDE0LjRweDsgcGFkZGluZzogMnB4IDRweDsgY29sb3I6IHJnYig1MSwgNTEs IDUxKTsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7IGJvcmRl ci1yYWRpdXM6IDBweDsKICAgICAgICBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudC1s aWdhdHVyZXM6IG5vcm1hbDsKICAgICAgICBmb250LXZhcmlhbnQtY2Fwczogbm9ybWFsOyBmb250 LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzoKICAgICAgICBub3JtYWw7IHRleHQtYWxp Z246IGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOgogICAgICAgIG5vbmU7 IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyI+Q3JlYXRlZDxzcGFuCiAg ICAgICAgICBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj6gPC9zcGFuPjwvY29kZT48c3Bh bgogICAgICAgIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7 IGZvbnQtc3R5bGU6CiAgICAgICAgbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3Jt YWw7IGZvbnQtdmFyaWFudC1jYXBzOgogICAgICAgIG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1h bDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgdGV4dC1hbGlnbjoKICAgICAgICBsZWZ0OyB0ZXh0 LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6CiAgICAgICAg bm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1 LCAyNTUpOwogICAgICAgIGRpc3BsYXk6IGlubGluZSAhIGltcG9ydGFudDsgZmxvYXQ6IG5vbmU7 Ij5zdGF0ZS4gSWYgdGhlIHZvbHVtZQogICAgICAgIGlzIGluIGFueSBvdGhlciBzdGF0ZSBvdGhl ciB0aGFuPHNwYW4KICAgICAgICAgIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3Nw YW4+PC9zcGFuPjxjb2RlCiAgICAgICAgY2xhc3M9ImxpdGVyYWwiIHN0eWxlPSJib3gtc2l6aW5n OiBib3JkZXItYm94OyBmb250LXNpemU6CiAgICAgICAgMTQuNHB4OyBwYWRkaW5nOiAycHggNHB4 OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOwogICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigy NTUsIDI1NSwgMjU1KTsgYm9yZGVyLXJhZGl1czogMHB4OwogICAgICAgIGZvbnQtc3R5bGU6IG5v cm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOwogICAgICAgIGZvbnQtdmFyaWFu dC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOgogICAg ICAgIG5vcm1hbDsgdGV4dC1hbGlnbjogbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu c2Zvcm06CiAgICAgICAgbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAw cHg7Ij5DcmVhdGVkPHNwYW4KICAgICAgICAgIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2Ui PqA8L3NwYW4+PC9jb2RlPjxzcGFuCiAgICAgICAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1 MSk7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZToKICAgICAgICBub3JtYWw7IGZvbnQtdmFy aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6CiAgICAgICAgbm9ybWFs OyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWdu OgogICAgICAgIGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3 aGl0ZS1zcGFjZToKICAgICAgICBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBiYWNrZ3JvdW5k LWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7CiAgICAgICAgZGlzcGxheTogaW5saW5lICEgaW1w b3J0YW50OyBmbG9hdDogbm9uZTsiPiwgZm9yIGV4YW1wbGUsPHNwYW4KICAgICAgICAgIGNsYXNz PSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+PC9zcGFuPjxjb2RlCiAgICAgICAgY2xh c3M9ImxpdGVyYWwiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBmb250LXNpemU6CiAg ICAgICAgMTQuNHB4OyBwYWRkaW5nOiAycHggNHB4OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOwog ICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigyNTUsIDI1NSwgMjU1KTsgYm9yZGVyLXJhZGl1 czogMHB4OwogICAgICAgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50LWxpZ2F0dXJl czogbm9ybWFsOwogICAgICAgIGZvbnQtdmFyaWFudC1jYXBzOiBub3JtYWw7IGZvbnQtd2VpZ2h0 OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOgogICAgICAgIG5vcm1hbDsgdGV4dC1hbGlnbjogbGVm dDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06CiAgICAgICAgbm9uZTsgd2hpdGUt c3BhY2U6IG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7Ij5TdGFydGVkPHNwYW4KICAgICAgICAg IGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPqA8L3NwYW4+PC9jb2RlPjxzcGFuCiAgICAg ICAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1z dHlsZToKICAgICAgICBub3JtYWw7IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9u dC12YXJpYW50LWNhcHM6CiAgICAgICAgbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0 ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFsaWduOgogICAgICAgIGxlZnQ7IHRleHQtaW5kZW50 OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZToKICAgICAgICBub3JtYWw7 IHdvcmQtc3BhY2luZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7 CiAgICAgICAgZGlzcGxheTogaW5saW5lICEgaW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPiw8c3Bh bgogICAgICAgICAgY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+oDwvc3Bhbj48L3NwYW4+ PGNvZGUKICAgICAgICBjbGFzcz0ibGl0ZXJhbCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i b3g7IGZvbnQtc2l6ZToKICAgICAgICAxNC40cHg7IHBhZGRpbmc6IDJweCA0cHg7IGNvbG9yOiBy Z2IoNTEsIDUxLCA1MSk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAy NTUpOyBib3JkZXItcmFkaXVzOiAwcHg7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250 LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7CiAgICAgICAgZm9udC12YXJpYW50LWNhcHM6IG5v cm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6CiAgICAgICAgbm9ybWFs OyB0ZXh0LWFsaWduOiBsZWZ0OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybToKICAg ICAgICBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPlN0b3Bw ZWQ8L2NvZGU+PHNwYW4KICAgICAgICBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u dC1zaXplOiAxNnB4OyBmb250LXN0eWxlOgogICAgICAgIG5vcm1hbDsgZm9udC12YXJpYW50LWxp Z2F0dXJlczogbm9ybWFsOyBmb250LXZhcmlhbnQtY2FwczoKICAgICAgICBub3JtYWw7IGZvbnQt d2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IHRleHQtYWxpZ246CiAgICAg ICAgbGVmdDsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNw YWNlOgogICAgICAgIG5vcm1hbDsgd29yZC1zcGFjaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6 IHJnYigyNTUsIDI1NSwgMjU1KTsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUgISBpbXBvcnRhbnQ7 IGZsb2F0OiBub25lOyI+LCBhbmQgc28gb24sIGV4ZWN1dGU8c3BhbgogICAgICAgICAgY2xhc3M9 IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+oDwvc3Bhbj48L3NwYW4+PGNvZGUKICAgICAgICBjbGFz cz0iY29tbWFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZToKICAg ICAgICAxNC40cHg7IHBhZGRpbmc6IDJweCA0cHg7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7CiAg ICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOyBib3JkZXItcmFkaXVz OiAwcHg7CiAgICAgICAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz OiBub3JtYWw7CiAgICAgICAgZm9udC12YXJpYW50LWNhcHM6IG5vcm1hbDsgZm9udC13ZWlnaHQ6 IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6CiAgICAgICAgbm9ybWFsOyB0ZXh0LWFsaWduOiBsZWZ0 OyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybToKICAgICAgICBub25lOyB3aGl0ZS1z cGFjZTogbm9ybWFsOyB3b3JkLXNwYWNpbmc6IDBweDsiPmdsdXN0ZXIgdm9sdW1lCiAgICAgICAg aGVhbCBWT0xOQU1FIGdyYW51bGFyLWVudHJ5LWhlYWw8c3BhbgogICAgICAgICAgY2xhc3M9IkFw cGxlLWNvbnZlcnRlZC1zcGFjZSI+oDwvc3Bhbj48Y29kZSBjbGFzcz0ib3B0aW9uIgogICAgICAg ICAgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGZvbnQtc2l6ZTogMTIuOTZweDsgcGFk ZGluZzoKICAgICAgICAgIDJweCA0cHg7IGNvbG9yOiBpbmhlcml0OyBiYWNrZ3JvdW5kLWNvbG9y OiB0cmFuc3BhcmVudDsKICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDsiPmVuYWJsZSAvIGRp c2FibGU8L2NvZGU+PC9jb2RlPjxzcGFuCiAgICAgICAgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgZm9udC1zdHlsZToKICAgICAgICBub3JtYWw7IGZvbnQt dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgZm9udC12YXJpYW50LWNhcHM6CiAgICAgICAgbm9y bWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyB0ZXh0LWFs aWduOgogICAgICAgIGxlZnQ7IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l OyB3aGl0ZS1zcGFjZToKICAgICAgICBub3JtYWw7IHdvcmQtc3BhY2luZzogMHB4OyBiYWNrZ3Jv dW5kLWNvbG9yOiByZ2IoMjU1LCAyNTUsIDI1NSk7CiAgICAgICAgZGlzcGxheTogaW5saW5lICEg aW1wb3J0YW50OyBmbG9hdDogbm9uZTsiPjxzcGFuCiAgICAgICAgICBjbGFzcz0iQXBwbGUtY29u dmVydGVkLXNwYWNlIj6gPC9zcGFuPmNvbW1hbmQgdG8gZW5hYmxlIG9yCiAgICAgICAgZGlzYWJs ZSBncmFudWxhci1lbnRyeS1oZWFsIG9wdGlvbi48L3NwYW4+PC9wPgogICAgPHA+VGhhbmtzPC9w PgogICAgPHA+a2FzdHVyaTxicj4KICAgIDwvcD4KICA8L2JvZHk+CjwvaHRtbD4KCi0tLS0tLS0t LS0tLS0tOTQxQ0E0MkM5NDA1MjkxOUY0NjkzQTI3LS0K --===============2888257466066210975==--