From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [RFC] Mechanism for high priority scheduling in amdgpu Date: Mon, 19 Dec 2016 13:50:20 +0800 Message-ID: <5857751C.5060409@amd.com> References: <544E607D03B20249AA404517E498FC4699EBD3@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC41@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC70@exchange01.valvesoftware.com> <58575362.2030100@amd.com> <361f177c-bf55-1525-4f35-86708e4f8d9f@valvesoftware.com> <58576C15.1070909@amd.com> <2bf5afce-d5b8-4eaf-0fcd-a7ebfe85f92e@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <2bf5afce-d5b8-4eaf-0fcd-a7ebfe85f92e-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Andres Rodriguez , "Pierre-Loup A. Griffais" , "Sagalovitch, Serguei" , Andres Rodriguez , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Mao, David" , "Zhang, Hawking" , "Huan, Alvin" RG8geW91IGVuY291bnRlciB0aGUgcHJpb3JpdHkgaXNzdWUgZm9yIGNvbXB1dGUgcXVldWUgd2l0 aCBjdXJyZW50IGRyaXZlcj8KCklmIGNvbXB1dGUgcXVldWUgaXMgb2NjdXBpZWQgb25seSBieSB5 b3UsIHRoZSBlZmZpY2llbmN5IGlzIGVxdWFsIHdpdGggCnNldHRpbmcgam9iIHF1ZXVlIHRvIGhp Z2ggcHJpb3JpdHkgSSB0aGluay4KClJlZ2FyZHMsCkRhdmlkIFpob3UKCk9uIDIwMTblubQxMuac iDE55pelIDEzOjI5LCBBbmRyZXMgUm9kcmlndWV6IHdyb3RlOgo+IFllcywgdnVsa2FuIGlzIGF2 YWlsYWJsZSBvbiBhbGwtb3BlbiB0aHJvdWdoIHRoZSBtZXNhIHJhZHYgVU1ELgo+Cj4gSSdtIG5v dCBzdXJlIGlmIEknbSBhc2tpbmcgZm9yIHRvbyBtdWNoLCBidXQgaWYgd2UgY2FuIGNvb3JkaW5h dGUgYSAKPiBzaW1pbGFyIGludGVyZmFjZSBpbiByYWR2IGFuZCBhbWRncHUtcHJvIGF0IHRoZSB2 dWxrYW4gbGV2ZWwgdGhhdCAKPiB3b3VsZCBiZSBncmVhdC4KPgo+IEknbSBub3Qgc3VyZSB3aGF0 IHRoYXQncyBnb2luZyB0byBiZSB5ZXQuCj4KPiAtIEFuZHJlcwo+Cj4gT24gMTIvMTkvMjAxNiAx MjoxMSBBTSwgemhvdWNtMSB3cm90ZToKPj4KPj4KPj4gT24gMjAxNuW5tDEy5pyIMTnml6UgMTE6 MzMsIFBpZXJyZS1Mb3VwIEEuIEdyaWZmYWlzIHdyb3RlOgo+Pj4gV2UncmUgY3VycmVudGx5IHdv cmtpbmcgd2l0aCB0aGUgb3BlbiBzdGFjazsgSSBhc3N1bWUgdGhhdCBhIAo+Pj4gbWVjaGFuaXNt IGNvdWxkIGJlIGV4cG9zZWQgYnkgYm90aCBvcGVuIGFuZCBQcm8gVnVsa2FuIHVzZXJzcGFjZSAK Pj4+IGRyaXZlcnMgYW5kIHRoYXQgdGhlIGFtZGdwdSBrZXJuZWwgaW50ZXJmYWNlIGltcHJvdmVt ZW50cyB3ZSB3b3VsZCAKPj4+IHB1cnN1ZSBmb2xsb3dpbmcgdGhpcyBkaXNjdXNzaW9uIHdvdWxk IGxldCBib3RoIGRyaXZlcnMgdGFrZSAKPj4+IGFkdmFudGFnZSBvZiB0aGUgZmVhdHVyZSwgY29y cmVjdD8KPj4gT2YgY291cnNlLgo+PiBEb2VzIG9wZW4gc3RhY2sgaGF2ZSBWdWxrYW4gc3VwcG9y dD8KPj4KPj4gUmVnYXJkcywKPj4gRGF2aWQgWmhvdQo+Pj4KPj4+IE9uIDEyLzE4LzIwMTYgMDc6 MjYgUE0sIHpob3VjbTEgd3JvdGU6Cj4+Pj4gQnkgdGhlIHdheSwgYXJlIHlvdSB1c2luZyBhbGwt b3BlbiBkcml2ZXIgb3IgYW1kZ3B1LXBybyBkcml2ZXI/Cj4+Pj4KPj4+PiArRGF2aWQgTWFvLCB3 aG8gaXMgd29ya2luZyBvbiBvdXIgVnVsa2FuIGRyaXZlci4KPj4+Pgo+Pj4+IFJlZ2FyZHMsCj4+ Pj4gRGF2aWQgWmhvdQo+Pj4+Cj4+Pj4gT24gMjAxNuW5tDEy5pyIMTjml6UgMDY6MDUsIFBpZXJy ZS1Mb3VwIEEuIEdyaWZmYWlzIHdyb3RlOgo+Pj4+PiBIaSBTZXJndWVpLAo+Pj4+Pgo+Pj4+PiBJ J20gYWxzbyB3b3JraW5nIG9uIHRoZSBicmluZ2luZyB1cCBvdXIgVlIgcnVudGltZSBvbiB0b3Ag b2YgYW1ncHU7Cj4+Pj4+IHNlZSByZXBsaWVzIGlubGluZS4KPj4+Pj4KPj4+Pj4gT24gMTIvMTYv MjAxNiAwOTowNSBQTSwgU2FnYWxvdml0Y2gsIFNlcmd1ZWkgd3JvdGU6Cj4+Pj4+PiBBbmRyZXMs Cj4+Pj4+Pgo+Pj4+Pj4+ICBGb3IgY3VycmVudCBWUiB3b3JrbG9hZHMgd2UgaGF2ZSAzIHNlcGFy YXRlIHByb2Nlc3NlcyBydW5uaW5nCj4+Pj4+Pj4gYWN0dWFsbHk6Cj4+Pj4+PiBTbyB3ZSBjb3Vs ZCBoYXZlIHBvdGVudGlhbCBtZW1vcnkgb3ZlcmNvbW1pdCBjYXNlIG9yIGRvIHlvdSBkbwo+Pj4+ Pj4gcGFydGl0aW9uaW5nCj4+Pj4+PiBvbiB5b3VyIG93bj8gIEkgd291bGQgdGhpbmsgdGhhdCB0 aGVyZSBpcyBuZWVkIHRvIGF2b2lkIG92ZXJjb21pdCBpbgo+Pj4+Pj4gVlIgY2FzZSB0bwo+Pj4+ Pj4gcHJldmVudCBhbnkgQk8gbWlncmF0aW9uLgo+Pj4+Pgo+Pj4+PiBZb3UncmUgZW50aXJlbHkg Y29ycmVjdDsgY3VycmVudGx5IHRoZSBWUiBydW50aW1lIGlzIHNldHRpbmcgdXAKPj4+Pj4gcHJp b3JpdGl6ZWQgQ1BVIHNjaGVkdWxpbmcgZm9yIGl0cyBWUiBjb21wb3NpdG9yLCB3ZSdyZSB3b3Jr aW5nIG9uCj4+Pj4+IHByaW9yaXRpemVkIEdQVSBzY2hlZHVsaW5nIGFuZCBwcmUtZW1wdGlvbiAo ZWcuIHRoaXMgdGhyZWFkKSwgYW5kIGluCj4+Pj4+IHRoZSBmdXR1cmUgaXQgd2lsbCBtYWtlIHNl bnNlIHRvIGRvIHdvcmsgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQKPj4+Pj4gaXRzIG1lbW9y eSBhbGxvY2F0aW9ucyBkbyBub3QgZ2V0IGV2aWN0ZWQsIHRvIHByZXZlbnQgYW55IHVud2VsY29t ZQo+Pj4+PiBhZGRpdGlvbmFsIGxhdGVuY3kgaW4gdGhlIGV2ZW50IG9mIG5lZWRpbmcgdG8gcGVy Zm9ybSBqdXN0LWluLXRpbWUKPj4+Pj4gcmVwcm9qZWN0aW9uLgo+Pj4+Pgo+Pj4+Pj4gQlRXOiBE byB5b3UgbWVhbiBfX3JlYWxfXyBwcm9jZXNzZXMgb3IgdGhyZWFkcz8KPj4+Pj4+IEJhc2VkIG9u IG15IHVuZGVyc3RhbmRpbmcgc2hhcmluZyBCT3MgYmV0d2VlbiBkaWZmZXJlbnQgcHJvY2Vzc2Vz Cj4+Pj4+PiBjb3VsZCBpbnRyb2R1Y2UgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24gY29uc3Ry YWlucy4gYnR3OiBJIGFtIG5vdAo+Pj4+Pj4gc3VyZQo+Pj4+Pj4gaWYgd2UgYXJlIGFibGUgdG8g c2hhcmUgVnVsa2FuIHN5bmMuIG9iamVjdCBjcm9zcy1wcm9jZXNzIGJvdW5kYXJ5Lgo+Pj4+Pgo+ Pj4+PiBUaGV5IGFyZSBkaWZmZXJlbnQgcHJvY2Vzc2VzOyBpdCBpcyBpbXBvcnRhbnQgZm9yIHRo ZSBjb21wb3NpdG9yIHRoYXQKPj4+Pj4gaXMgcmVzcG9uc2libGUgZm9yIHF1YWxpdHktb2Ytc2Vy dmljZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnNpc3RlbnRseQo+Pj4+PiBwcmVzZW50aW5nIGRpc3Rv cnRlZCBmcmFtZXMgd2l0aCB0aGUgcmlnaHQgbGF0ZW5jeSwgcmVwcm9qZWN0aW9uLCAKPj4+Pj4g ZXRjLAo+Pj4+PiB0byBiZSBzZXBhcmF0ZSBmcm9tIHRoZSBtYWluIGFwcGxpY2F0aW9uLgo+Pj4+ Pgo+Pj4+PiBDdXJyZW50bHkgd2UgYXJlIHVzaW5nIHVucmVsZWFzZWQgY3Jvc3MtcHJvY2VzcyBt ZW1vcnkgYW5kIHNlbWFwaG9yZQo+Pj4+PiBleHRlbnNpb25zIHRvIGZldGNoIHVwZGF0ZWQgZXll IGltYWdlcyBmcm9tIHRoZSBjbGllbnQgYXBwbGljYXRpb24sCj4+Pj4+IGJ1dCB0aGUganVzdC1p bi10aW1lIHJlcHJvamVjdGlvbiBkaXNjdXNzZWQgaGVyZSBkb2VzIG5vdCBhY3R1YWxseQo+Pj4+ PiBoYXZlIGFueSBkaXJlY3QgaW50ZXJhY3Rpb25zIHdpdGggY3Jvc3MtcHJvY2VzcyByZXNvdXJj ZSBzaGFyaW5nLAo+Pj4+PiBzaW5jZSBpdCdzIGFjaGlldmVkIGJ5IHVzaW5nIHdoYXRldmVyIGlz IHRoZSBsYXRlc3QsIG1vc3QgdXAtdG8tZGF0ZQo+Pj4+PiBleWUgaW1hZ2VzIHRoYXQgaGF2ZSBh bHJlYWR5IGJlZW4gc2VudCBieSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uLAo+Pj4+PiB3aGljaCBh cmUgYWxyZWFkeSBhdmFpbGFibGUgdG8gdXNlIHdpdGhvdXQgYWRkaXRpb25hbCAKPj4+Pj4gc3lu Y2hyb25pemF0aW9uLgo+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+PiAgICAzKSBTeXN0ZW0gY29tcG9zaXRv ciAod2UgYXJlIGxvb2tpbmcgYXQgYXBwcm9hY2hlcyB0byByZW1vdmUgCj4+Pj4+Pj4gdGhpcwo+ Pj4+Pj4+IG92ZXJoZWFkKQo+Pj4+Pj4gWWVzLCAgSU1ITyB0aGUgYmVzdCBpcyB0byBydW4gaW4g ICJmdWxsIHNjcmVlbiBtb2RlIi4KPj4+Pj4KPj4+Pj4gWWVzLCB3ZSBhcmUgd29ya2luZyBvbiBt ZWNoYW5pc21zIHRvIHByZXNlbnQgZGlyZWN0bHkgdG8gdGhlIGhlYWRzZXQKPj4+Pj4gZGlzcGxh eSB3aXRob3V0IGFueSBpbnRlcm1lZGlhcmllcyBhcyBhIHNlcGFyYXRlIGVmZm9ydC4KPj4+Pj4K Pj4+Pj4+Cj4+Pj4+Pj4gIFRoZSBsYXRlbmN5IGlzIG91ciBtYWluIGNvbmNlcm4sCj4+Pj4+PiBJ IHdvdWxkIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGtub3duIHByb2JsZW0gKGF0IGxlYXN0IGZv ciBjb21wdXRlCj4+Pj4+PiB1c2FnZSkuCj4+Pj4+PiBJdCBsb29rcyBsaWtlIHRoYXQgYW1kZ3B1 IC8ga2VybmVsIHN1Ym1pc3Npb24gaXMgcmF0aGVyIENQVSAKPj4+Pj4+IGludGVuc2l2ZQo+Pj4+ Pj4gKGF0IGxlYXN0Cj4+Pj4+PiBpbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uKS4KPj4+Pj4K Pj4+Pj4gQXMgbG9uZyBhcyBpdCdzIGEgY29uc2lzdGVudCBjb3N0LCBpdCBzaG91bGRuJ3QgYW4g aXNzdWUuIEhvd2V2ZXIsIGlmCj4+Pj4+IHRoZXJlJ3MgaGlnaCBkZWdyZWVzIG9mIHZhcmlhbmNl IHRoZW4gdGhhdCB3b3VsZCBiZSB0cm91Ymxlc29tZSAKPj4+Pj4gYW5kIHdlCj4+Pj4+IHdvdWxk IG5lZWQgdG8gYWNjb3VudCBmb3IgdGhlIHdvcnN0IGNhc2UuCj4+Pj4+Cj4+Pj4+IEhvcGVmdWxs eSB0aGUgcmVxdWlyZW1lbnRzIGFuZCBhcHByb2FjaCB3ZSBkZXNjcmliZWQgbWFrZSBzZW5zZSwg Cj4+Pj4+IHdlJ3JlCj4+Pj4+IGxvb2tpbmcgZm9yd2FyZCB0byB5b3VyIGZlZWRiYWNrIGFuZCBz dWdnZXN0aW9ucy4KPj4+Pj4KPj4+Pj4gVGhhbmtzIQo+Pj4+PiAgLSBQaWVycmUtTG91cAo+Pj4+ Pgo+Pj4+Pj4KPj4+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+Pj4+IFNlcmd1ZWkgU2FnYWxvdml0 Y2gKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gRnJvbTogQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzckB2 YWx2ZXNvZnR3YXJlLmNvbT4KPj4+Pj4+IFNlbnQ6IERlY2VtYmVyIDE2LCAyMDE2IDEwOjAwIFBN Cj4+Pj4+PiBUbzogU2FnYWxvdml0Y2gsIFNlcmd1ZWk7IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4+Pj4+PiBTdWJqZWN0OiBSRTogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9y aXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pgo+Pj4+Pj4gSGV5IFNlcmd1ZWksCj4+Pj4+ Pgo+Pj4+Pj4+IFtTZXJndWVpXSBOby4gSSBtZWFuIHBpcGUgOi0pIGFzIE1FQyBkZWZpbmUgaXQu ICBBcyBmYXIgYXMgSQo+Pj4+Pj4+IHVuZGVyc3RhbmQgKGJ5IHNpbXBsaWZ5aW5nKQo+Pj4+Pj4+ IHNvbWUgc2NoZWR1bGluZyBpcyBwZXIgcGlwZS4gIEkga25vdyBhYm91dCB0aGUgY3VycmVudCBh bGxvY2F0aW9uCj4+Pj4+Pj4gc2NoZW1lIGJ1dCBJIGRvIG5vdCB0aGluawo+Pj4+Pj4+IHRoYXQg aXQgaXMgIGlkZWFsLiAgSSB3b3VsZCBhc3N1bWUgdGhhdCB3ZSBuZWVkICB0byBzd2l0Y2ggdG8K Pj4+Pj4+PiBkeW5hbWljYWwgcGFydGl0aW9uCj4+Pj4+Pj4gb2YgcmVzb3VyY2VzICBiYXNlZCBv biB0aGUgd29ya2xvYWQgb3RoZXJ3aXNlIHdlIHdpbGwgaGF2ZSByZXNvdXJjZQo+Pj4+Pj4+IGNv bmZsaWN0Cj4+Pj4+Pj4gYmV0d2VlbiBWdWxrYW4gY29tcHV0ZSBhbmQgIE9wZW5DTC4KPj4+Pj4+ Cj4+Pj4+PiBJIGFncmVlIHRoZSBwYXJ0aXRpb25pbmcgaXNuJ3QgaWRlYWwuIEknbSBob3Bpbmcg d2UgY2FuIHN0YXJ0IHdpdGggYQo+Pj4+Pj4gc29sdXRpb24gdGhhdCBhc3N1bWVzIHRoYXQKPj4+ Pj4+IG9ubHkgcGlwZTAgaGFzIGFueSB3b3JrIGFuZCB0aGUgb3RoZXIgcGlwZXMgYXJlIGlkbGUg KG5vIEhTQS9ST0NtCj4+Pj4+PiBydW5uaW5nIG9uIHRoZSBzeXN0ZW0pLgo+Pj4+Pj4KPj4+Pj4+ IFRoaXMgc2hvdWxkIGJlIG1vcmUgb3IgbGVzcyB0aGUgdXNlIGNhc2Ugd2UgZXhwZWN0IGZyb20g VlIgdXNlcnMuCj4+Pj4+Pgo+Pj4+Pj4gSSBhZ3JlZSB0aGUgc3BsaXQgaXMgY3VycmVudGx5IG5v dCBpZGVhbCwgYnV0IEknZCBsaWtlIHRvIGNvbnNpZGVyCj4+Pj4+PiB0aGF0IGEgc2VwYXJhdGUg dGFzaywgYmVjYXVzZQo+Pj4+Pj4gbWFraW5nIGl0IGR5bmFtaWMgaXMgbm90IHN0cmFpZ2h0IGZv cndhcmQgOlAKPj4+Pj4+Cj4+Pj4+Pj4gW1Nlcmd1ZWldIFZ1bGthbiB3b3JrcyB2aWEgYW1kZ3B1 IChrZXJuZWwgc3VibWlzc2lvbnMpIHNvIGFtZGtmZAo+Pj4+Pj4+IHdpbGwgYmUgbm90Cj4+Pj4+ Pj4gaW52b2x2ZWQuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIG9mIFZSIHdlIHdp bGwgaGF2ZSAKPj4+Pj4+PiBvbmUgbWFpbgo+Pj4+Pj4+IGFwcGxpY2F0aW9uICgiY29uc29sZSIg bW9kZSg/KSkgc28gd2UgY291bGQgdGVtcG9yYWxseSAiaWdub3JlIgo+Pj4+Pj4+IE9wZW5DTC9S T0NtIG5lZWRzIHdoZW4gVlIgaXMgcnVubmluZy4KPj4+Pj4+Cj4+Pj4+PiBDb3JyZWN0LCB0aGlz IGlzIHdoeSB3ZSB3YW50IHRvIGVuYWJsZSB0aGUgaGlnaCBwcmlvcml0eSBjb21wdXRlCj4+Pj4+ PiBxdWV1ZSB0aHJvdWdoCj4+Pj4+PiBsaWJkcm0tYW1kZ3B1LCBzbyB0aGF0IHdlIGNhbiBleHBv c2UgaXQgdGhyb3VnaCBWdWxrYW4gbGF0ZXIuCj4+Pj4+Pgo+Pj4+Pj4gRm9yIGN1cnJlbnQgVlIg d29ya2xvYWRzIHdlIGhhdmUgMyBzZXBhcmF0ZSBwcm9jZXNzZXMgcnVubmluZyAKPj4+Pj4+IGFj dHVhbGx5Ogo+Pj4+Pj4gICAgIDEpIEdhbWUgcHJvY2Vzcwo+Pj4+Pj4gICAgIDIpIFZSIENvbXBv c2l0b3IgKHRoaXMgaXMgdGhlIHByb2Nlc3MgdGhhdCB3aWxsIHJlcXVpcmUgaGlnaAo+Pj4+Pj4g cHJpb3JpdHkgcXVldWUpCj4+Pj4+PiAgICAgMykgU3lzdGVtIGNvbXBvc2l0b3IgKHdlIGFyZSBs b29raW5nIGF0IGFwcHJvYWNoZXMgdG8gcmVtb3ZlIAo+Pj4+Pj4gdGhpcwo+Pj4+Pj4gb3Zlcmhl YWQpCj4+Pj4+Pgo+Pj4+Pj4gRm9yIG5vdyBJIHRoaW5rIGl0IGlzIG9rYXkgdG8gYXNzdW1lIG5v IE9wZW5DTC9ST0NtIHJ1bm5pbmcKPj4+Pj4+IHNpbXVsdGFuZW91c2x5LCBidXQKPj4+Pj4+IEkg d291bGQgYWxzbyBsaWtlIHRvIGJlIGFibGUgdG8gYWRkcmVzcyB0aGlzIGNhc2UgaW4gdGhlIGZ1 dHVyZQo+Pj4+Pj4gKGNyb3NzLXBpcGUgcHJpb3JpdGllcykuCj4+Pj4+Pgo+Pj4+Pj4+IFtTZXJn dWVpXSAgVGhlIHByb2JsZW0gd2l0aCBwcmUtZW1wdGlvbiBvZiBncmFwaGljcyB0YXNrOiAgKGEp IGl0Cj4+Pj4+Pj4gbWF5IHRha2UgdGltZSBzbwo+Pj4+Pj4+IGxhdGVuY3kgbWF5IHN1ZmZlcgo+ Pj4+Pj4KPj4+Pj4+IFRoZSBsYXRlbmN5IGlzIG91ciBtYWluIGNvbmNlcm4sIHdlIHdhbnQgc29t ZXRoaW5nIHRoYXQgaXMKPj4+Pj4+IHByZWRpY3RhYmxlLiBBIGdvb2QKPj4+Pj4+IGlsbHVzdHJh dGlvbiBvZiB3aGF0IHRoZSByZXByb2plY3Rpb24gc2NoZWR1bGluZyBsb29rcyBsaWtlIGNhbiBi ZQo+Pj4+Pj4gZm91bmQgaGVyZToKPj4+Pj4+IGh0dHBzOi8vY29tbXVuaXR5LmFtZC5jb20vc2Vy dmxldC9KaXZlU2VydmxldC9zaG93SW1hZ2UvMzgtMTMxMC0xMDQ3NTQvcGFzdGVkSW1hZ2VfMy5w bmcgCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pj4gKGIpIHRvIHByZWVtcHQgd2UgbmVlZCB0 byBoYXZlIGRpZmZlcmVudCAiY29udGV4dCIgLSB3ZSB3YW50Cj4+Pj4+Pj4gdG8gZ3VhcmFudGVl IHRoYXQgc3VibWlzc2lvbnMgZnJvbSB0aGUgc2FtZSBjb250ZXh0IHdpbGwgYmUgCj4+Pj4+Pj4g ZXhlY3V0ZWQKPj4+Pj4+PiBpbiBvcmRlci4KPj4+Pj4+Cj4+Pj4+PiBUaGlzIGlzIG9rYXksIGFz IHRoZSByZXByb2plY3Rpb24gd29yayBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jaWVzIG9uCj4+Pj4+ PiB0aGUgZ2FtZSBjb250ZXh0LCBhbmQgaXQKPj4+Pj4+IGV2ZW4gaGFwcGVucyBpbiBhIHNlcGFy YXRlIHByb2Nlc3MuCj4+Pj4+Pgo+Pj4+Pj4+IEJUVzogKGEpIERvIHlvdSB3YW50ICAicHJlZW1w dCIgYW5kIGxhdGVyIHJlc3VtZSBvciBkbyB5b3Ugd2FudAo+Pj4+Pj4+ICJwcmVlbXB0IiBhbmQK Pj4+Pj4+PiAiY2FuY2VsL2Fib3J0Igo+Pj4+Pj4KPj4+Pj4+IFByZWVtcHQgdGhlIGdhbWUgd2l0 aCB0aGUgY29tcG9zaXRvciB0YXNrIGFuZCB0aGVuIHJlc3VtZSBpdC4KPj4+Pj4+Cj4+Pj4+Pj4g KGIpIFZ1bGthbiBpcyBnZW5lcmljIEFQSSBhbmQgY291bGQgYmUgdXNlZCBmb3IgZ3JhcGhpY3Mg YXMgd2VsbCBhcwo+Pj4+Pj4+IGZvciBwbGFpbiBjb21wdXRlIHRhc2tzIChWS19RVUVVRV9DT01Q VVRFX0JJVCkuCj4+Pj4+Pgo+Pj4+Pj4gWWVhaCwgdGhlIHBsYW4gaXMgdG8gdXNlIHZ1bGthbiBj b21wdXRlLiBCdXQgaWYgeW91IGZpZ3VyZSBvdXQgYSB3YXkKPj4+Pj4+IGZvciB1cyB0byBnZXQK Pj4+Pj4+IGEgZ3VhcmFudGVlZCBleGVjdXRpb24gdGltZSB1c2luZyB2dWxrYW4gZ3JhcGhpY3Ms IHRoZW4gSSdsbCB0YWtlIAo+Pj4+Pj4geW91Cj4+Pj4+PiBvdXQgZm9yIGEgYmVlciA6KQo+Pj4+ Pj4KPj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+PiBBbmRyZXMKPj4+Pj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVp IFtTZXJndWVpLlNhZ2Fsb3ZpdGNoQGFtZC5jb21dCj4+Pj4+PiBTZW50OiBGcmlkYXksIERlY2Vt YmVyIDE2LCAyMDE2IDk6MTMgUE0KPj4+Pj4+IFRvOiBBbmRyZXMgUm9kcmlndWV6OyBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4gU3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlz bSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pj4KPj4+Pj4+IEhp IEFuZHJlcywKPj4+Pj4+Cj4+Pj4+PiBQbGVhc2Ugc2VlIGlubGluZSAoYXMgW1Nlcmd1ZWldKQo+ Pj4+Pj4KPj4+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+Pj4+IFNlcmd1ZWkgU2FnYWxvdml0Y2gK Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gRnJvbTogQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzckB2YWx2 ZXNvZnR3YXJlLmNvbT4KPj4+Pj4+IFNlbnQ6IERlY2VtYmVyIDE2LCAyMDE2IDg6MjkgUE0KPj4+ Pj4+IFRvOiBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKPj4+Pj4+IFN1YmplY3Q6IFJFOiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkg c2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4+Cj4+Pj4+PiBIaSBTZXJndWVpLAo+Pj4+Pj4KPj4+ Pj4+IFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLiBBbnN3ZXJzIGlubGluZSBhcyBbQVJdLgo+Pj4+ Pj4KPj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+PiBBbmRyZXMKPj4+Pj4+Cj4+Pj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+PiBGcm9tOiBTYWdhbG92aXRjaCwg U2VyZ3VlaSBbU2VyZ3VlaS5TYWdhbG92aXRjaEBhbWQuY29tXQo+Pj4+Pj4gU2VudDogRnJpZGF5 LCBEZWNlbWJlciAxNiwgMjAxNiA4OjE1IFBNCj4+Pj4+PiBUbzogQW5kcmVzIFJvZHJpZ3Vlejsg YW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4+IFN1YmplY3Q6IFJlOiBbUkZDXSBN ZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4+Cj4+ Pj4+PiBBbmRyZXMsCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFF1aWNrIGNvbW1lbnRzOgo+Pj4+Pj4K Pj4+Pj4+IDEpIFRvIG1pbmltaXplICJidWJibGVzIiwgZXRjLiB3ZSBuZWVkIHRvICJmb3JjZSIg Q1UgCj4+Pj4+PiBhc3NpZ25tZW50cy9iaW5kaW5nCj4+Pj4+PiB0byBoaWdoLXByaW9yaXR5IHF1 ZXVlICB3aGVuIGl0IHdpbGwgYmUgaW4gdXNlIGFuZCAiZnJlZSIgdGhlbSBsYXRlcgo+Pj4+Pj4g KHdlICBkbyBub3Qgd2FudCBmb3JldmVyIHRha2UgQ1VzIGZyb20gZS5nLiBncmFwaGljIHRhc2sg dG8gZGVncmFkZQo+Pj4+Pj4gZ3JhcGhpY3MKPj4+Pj4+IHBlcmZvcm1hbmNlKS4KPj4+Pj4+Cj4+ Pj4+PiBPdGhlcndpc2Ugd2UgY291bGQgaGF2ZSBzY2VuYXJpbyB3aGVuIGxvbmcgZ3JhcGhpY3Mg dGFzayAob3IKPj4+Pj4+IGxvdy1wcmlvcml0eQo+Pj4+Pj4gY29tcHV0ZSkgd2lsbCB0b29rIGFs bCAoZXh0cmEpIENVcyBhbmQgaGlnaC0tcHJpb3JpdHkgd2lsbCB3YWl0IGZvcgo+Pj4+Pj4gbmVl ZGVkIHJlc291cmNlcy4KPj4+Pj4+IEl0IHdpbGwgbm90IGJlIHZpc2libGUgb24gIk5PUCAiIGJ1 dCBvbmx5IHdoZW4geW91IHN1Ym1pdCAicmVhbCIKPj4+Pj4+IGNvbXB1dGUgdGFzawo+Pj4+Pj4g c28gSSB3b3VsZCByZWNvbW1lbmQgIG5vdCB0byB1c2UgIk5PUCIgcGFja2V0cyBhdCBhbGwgZm9y IHRlc3RpbmcuCj4+Pj4+Pgo+Pj4+Pj4gSXQgKENVIGFzc2lnbm1lbnQpIGNvdWxkIGJlIHJlbGF0 aXZlbHkgZWFzeSBkb25lIHdoZW4gZXZlcnl0aGluZyBpcwo+Pj4+Pj4gZ29pbmcgdmlhIGtlcm5l bAo+Pj4+Pj4gKGUuZy4gYXMgcGFydCBvZiBmcmFtZSBzdWJtaXNzaW9uKSBidXQgSSBtdXN0IGFk bWl0IHRoYXQgSSBhbSBub3QgCj4+Pj4+PiBzdXJlCj4+Pj4+PiBhYm91dCB0aGUgYmVzdCB3YXkg Zm9yIHVzZXIgbGV2ZWwgc3VibWlzc2lvbnMgKGFtZGtmZCkuCj4+Pj4+Pgo+Pj4+Pj4gW0FSXSBJ IHdhc24ndCBhd2FyZSBvZiB0aGlzIHBhcnQgb2YgdGhlIHByb2dyYW1taW5nIHNlcXVlbmNlLiBU aGFua3MKPj4+Pj4+IGZvciB0aGUgaGVhZHMgdXAhCj4+Pj4+PiBJcyB0aGlzIHNpbWlsYXIgdG8g dGhlIENVIG1hc2tpbmcgcHJvZ3JhbW1pbmc/Cj4+Pj4+PiBbU2VyZ3VlaV0gWWVzLiBUbyBzaW1w bGlmeTogdGhlIHByb2JsZW0gaXMgdGhhdCAic2NoZWR1bGVyIiB3aGVuCj4+Pj4+PiBkZWNpZGlu ZyB3aGljaAo+Pj4+Pj4gcXVldWUgdG8gIHJ1biB3aWxsIGNoZWNrIGlmIHRoZXJlIGlzIGVub3Vn aCByZXNvdXJjZXMgYW5kIGlmIG5vdCAKPj4+Pj4+IHRoZW4KPj4+Pj4+IGl0IHdpbGwgYmVnaW4K Pj4+Pj4+IHRvIGNoZWNrIG90aGVyIHF1ZXVlcyB3aXRoIGxvd2VyIHByaW9yaXR5Lgo+Pj4+Pj4K Pj4+Pj4+IDIpIEkgd291bGQgcmVjb21tZW5kIHRvIGRlZGljYXRlIHRoZSB3aG9sZSBwaXBlIHRv IGhpZ2gtcHJpb3JpdHkKPj4+Pj4+IHF1ZXVlIGFuZCBoYXZlCj4+Pj4+PiBub3RoaW5nIHRoZWly IGV4Y2VwdCBpdC4KPj4+Pj4+Cj4+Pj4+PiBbQVJdIEknbSBndWVzc2luZyBpbiB0aGlzIGNvbnRl eHQgeW91IG1lYW4gcGlwZSA9IHF1ZXVlPyAoYXMgb3Bwb3NlZAo+Pj4+Pj4gdG8gdGhlIE1FQyBk ZWZpbml0aW9uCj4+Pj4+PiBvZiBwaXBlLCB3aGljaCBpcyBhIGdyb3VwaW5nIG9mIHF1ZXVlcyku IEkgc2F5IHRoaXMgYmVjYXVzZSBhbWRncHUKPj4+Pj4+IG9ubHkgaGFzIGFjY2VzcyB0byAxIHBp cGUsCj4+Pj4+PiBhbmQgdGhlIHJlc3QgYXJlIHN0YXRpY2FsbHkgcGFydGl0aW9uZWQgZm9yIGFt ZGtmZCB1c2FnZS4KPj4+Pj4+Cj4+Pj4+PiBbU2VyZ3VlaV0gTm8uIEkgbWVhbiBwaXBlIDotKSAg YXMgTUVDIGRlZmluZSBpdC4gIEFzIGZhciBhcyBJCj4+Pj4+PiB1bmRlcnN0YW5kIChieSBzaW1w bGlmeWluZykKPj4+Pj4+IHNvbWUgc2NoZWR1bGluZyBpcyBwZXIgcGlwZS4gIEkga25vdyBhYm91 dCB0aGUgY3VycmVudCBhbGxvY2F0aW9uCj4+Pj4+PiBzY2hlbWUgYnV0IEkgZG8gbm90IHRoaW5r Cj4+Pj4+PiB0aGF0IGl0IGlzICBpZGVhbC4gIEkgd291bGQgYXNzdW1lIHRoYXQgd2UgbmVlZCAg dG8gc3dpdGNoIHRvCj4+Pj4+PiBkeW5hbWljYWwgcGFydGl0aW9uCj4+Pj4+PiBvZiByZXNvdXJj ZXMgIGJhc2VkIG9uIHRoZSB3b3JrbG9hZCBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHJlc291cmNl Cj4+Pj4+PiBjb25mbGljdAo+Pj4+Pj4gYmV0d2VlbiBWdWxrYW4gY29tcHV0ZSBhbmQgIE9wZW5D TC4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gQlRXOiBXaGljaCB1c2VyIGxldmVsIEFQSSBkbyB5b3Ug d2FudCB0byB1c2UgZm9yIGNvbXB1dGU6IFZ1bGthbiBvcgo+Pj4+Pj4gT3BlbkNMPwo+Pj4+Pj4K Pj4+Pj4+IFtBUl0gVnVsa2FuCj4+Pj4+Pgo+Pj4+Pj4gW1Nlcmd1ZWldIFZ1bGthbiB3b3JrcyB2 aWEgYW1kZ3B1IChrZXJuZWwgc3VibWlzc2lvbnMpIHNvIGFtZGtmZCAKPj4+Pj4+IHdpbGwKPj4+ Pj4+IGJlIG5vdAo+Pj4+Pj4gaW52b2x2ZWQuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGluIHRoZSBj YXNlIG9mIFZSIHdlIHdpbGwgaGF2ZSBvbmUgCj4+Pj4+PiBtYWluCj4+Pj4+PiBhcHBsaWNhdGlv biAoImNvbnNvbGUiIG1vZGUoPykpIHNvIHdlIGNvdWxkIHRlbXBvcmFsbHkgImlnbm9yZSIKPj4+ Pj4+IE9wZW5DTC9ST0NtIG5lZWRzIHdoZW4gVlIgaXMgcnVubmluZy4KPj4+Pj4+Cj4+Pj4+Pj4g IHdlIHdpbGwgbm90IGJlIGFibGUgdG8gcHJvdmlkZSBhIHNvbHV0aW9uIGNvbXBhdGlibGUgd2l0 aCBHRlgKPj4+Pj4+PiB3b3Jsb2Fkcy4KPj4+Pj4+IEkgYXNzdW1lIHRoYXQgeW91IGFyZSB0YWxr aW5nIGFib3V0IGdyYXBoaWNzPyBBbSBJIHJpZ2h0Pwo+Pj4+Pj4KPj4+Pj4+IFtBUl0gWWVhaCwg bXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHByZS1lbXB0aW5nIHRoZSBjdXJyZW50bHkgCj4+Pj4+ PiBydW5uaW5nCj4+Pj4+PiBncmFwaGljcyBqb2IgYW5kIHNjaGVkdWxpbmcgaW4KPj4+Pj4+IHNv bWV0aGluZyBlbHNlIHVzaW5nIG1pZC1idWZmZXIgcHJlLWVtcHRpb24gaGFzIHNvbWUgY2FzZXMg d2hlcmUgaXQKPj4+Pj4+IGRvZXNuJ3Qgd29yayB3ZWxsLiBCdXQgaWYgd2l0aAo+Pj4+Pj4gcG9s YXJpczEwIGl0IHN0YXJ0cyB3b3JraW5nIHdlbGwsIGl0IG1pZ2h0IGJlIGEgYmV0dGVyIHNvbHV0 aW9uIGZvcgo+Pj4+Pj4gdXMgKGJlY2F1c2UgdGhlIHdob2xlIHJlcHJvamVjdGlvbgo+Pj4+Pj4g d29yayB1c2VzIHRoZSB2dWxrYW4gZ3JhcGhpY3Mgc3RhY2sgYXQgdGhlIG1vbWVudCwgYW5kIHBv cnRpbmcgaXQgdG8KPj4+Pj4+IGNvbXB1dGUgaXMgbm90IHRyaXZpYWwpLgo+Pj4+Pj4KPj4+Pj4+ IFtTZXJndWVpXSAgVGhlIHByb2JsZW0gd2l0aCBwcmUtZW1wdGlvbiBvZiBncmFwaGljcyB0YXNr OiAoYSkgaXQgbWF5Cj4+Pj4+PiB0YWtlIHRpbWUgc28KPj4+Pj4+IGxhdGVuY3kgbWF5IHN1ZmZl ciAoYikgdG8gcHJlZW1wdCB3ZSBuZWVkIHRvIGhhdmUgZGlmZmVyZW50IAo+Pj4+Pj4gImNvbnRl eHQiCj4+Pj4+PiAtIHdlIHdhbnQKPj4+Pj4+IHRvIGd1YXJhbnRlZSB0aGF0IHN1Ym1pc3Npb25z IGZyb20gdGhlIHNhbWUgY29udGV4dCB3aWxsIGJlIGV4ZWN1dGVkCj4+Pj4+PiBpbiBvcmRlci4K Pj4+Pj4+IEJUVzogKGEpIERvIHlvdSB3YW50ICAicHJlZW1wdCIgYW5kIGxhdGVyIHJlc3VtZSBv ciBkbyB5b3Ugd2FudAo+Pj4+Pj4gInByZWVtcHQiIGFuZAo+Pj4+Pj4gImNhbmNlbC9hYm9ydCI/ ICAoYikgVnVsa2FuIGlzIGdlbmVyaWMgQVBJIGFuZCBjb3VsZCBiZSB1c2VkCj4+Pj4+PiBmb3Ig Z3JhcGhpY3MgYXMgd2VsbCBhcyBmb3IgcGxhaW4gY29tcHV0ZSB0YXNrcyAKPj4+Pj4+IChWS19R VUVVRV9DT01QVVRFX0JJVCkuCj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFNpbmNlcmVseSB5b3VycywK Pj4+Pj4+IFNlcmd1ZWkgU2FnYWxvdml0Y2gKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IEZy b206IGFtZC1nZnggPGFtZC1nZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IG9uIGJl aGFsZiBvZgo+Pj4+Pj4gQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzckB2YWx2ZXNvZnR3YXJlLmNv bT4KPj4+Pj4+IFNlbnQ6IERlY2VtYmVyIDE2LCAyMDE2IDY6MTUgUE0KPj4+Pj4+IFRvOiBhbWQt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4gU3ViamVjdDogW1JGQ10gTWVjaGFuaXNt IGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Pgo+Pj4+Pj4gSGkg RXZlcnlvbmUsCj4+Pj4+Pgo+Pj4+Pj4gVGhpcyBSRkMgaXMgYWxzbyBhdmFpbGFibGUgYXMgYSBn aXN0IGhlcmU6Cj4+Pj4+PiBodHRwczovL2dpc3QuZ2l0aHViLmNvbS9sb3N0Z29hdC83MDAwNDMy Y2Q2ODY0MjY1ZGJjMmMzYWI5MzIwNDI0OQo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gW1JG Q10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+ PiBnaXN0LmdpdGh1Yi5jb20KPj4+Pj4+IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0 eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gW1JGQ10g TWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+PiBn aXN0LmdpdGh1Yi5jb20KPj4+Pj4+IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBz Y2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+IFtS RkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+ Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3Jp dHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gV2UgYXJlIGludGVy ZXN0ZWQgaW4gZmVlZGJhY2sgZm9yIGEgbWVjaGFuaXNtIHRvIGVmZmVjdGl2ZWx5IAo+Pj4+Pj4g c2NoZWR1bGUKPj4+Pj4+IGhpZ2gKPj4+Pj4+IHByaW9yaXR5IFZSIHJlcHJvamVjdGlvbiB0YXNr cyAoYWxzbyByZWZlcnJlZCB0byBhcyB0aW1lLXdhcnBpbmcpIAo+Pj4+Pj4gZm9yCj4+Pj4+PiBQ b2xhcmlzMTAKPj4+Pj4+IHJ1bm5pbmcgb24gdGhlIGFtZGdwdSBrZXJuZWwgZHJpdmVyLgo+Pj4+ Pj4KPj4+Pj4+IEJyaWVmIGNvbnRleHQ6Cj4+Pj4+PiAtLS0tLS0tLS0tLS0tLQo+Pj4+Pj4KPj4+ Pj4+IFRoZSBtYWluIG9iamVjdGl2ZSBvZiByZXByb2plY3Rpb24gaXMgdG8gYXZvaWQgbW90aW9u IHNpY2tuZXNzIAo+Pj4+Pj4gZm9yIFZSCj4+Pj4+PiB1c2VycyBpbgo+Pj4+Pj4gc2NlbmFyaW9z IHdoZXJlIHRoZSBnYW1lIG9yIGFwcGxpY2F0aW9uIHdvdWxkIGZhaWwgdG8gZmluaXNoCj4+Pj4+ PiByZW5kZXJpbmcgYSBuZXcKPj4+Pj4+IGZyYW1lIGluIHRpbWUgZm9yIHRoZSBuZXh0IFZCTEFO Sy4gV2hlbiB0aGlzIGhhcHBlbnMsIHRoZSB1c2VyJ3MgCj4+Pj4+PiBoZWFkCj4+Pj4+PiBtb3Zl bWVudHMKPj4+Pj4+IGFyZSBub3QgcmVmbGVjdGVkIG9uIHRoZSBIZWFkIE1vdW50ZWQgRGlzcGxh eSAoSE1EKSBmb3IgdGhlIGR1cmF0aW9uCj4+Pj4+PiBvZiBhbgo+Pj4+Pj4gZXh0cmEgZnJhbWUu IFRoaXMgZXh0ZW5kZWQgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgaW5uZXIgZWFyIGFuZCB0aGUKPj4+ Pj4+IGV5ZXMgbWF5Cj4+Pj4+PiBjYXVzZSB0aGUgdXNlciB0byBleHBlcmllbmNlIG1vdGlvbiBz aWNrbmVzcy4KPj4+Pj4+Cj4+Pj4+PiBUaGUgVlIgY29tcG9zaXRvciBkZWFscyB3aXRoIHRoaXMg cHJvYmxlbSBieSBmYWJyaWNhdGluZyBhIG5ldyBmcmFtZQo+Pj4+Pj4gdXNpbmcgdGhlCj4+Pj4+ PiB1c2VyJ3MgdXBkYXRlZCBoZWFkIHBvc2l0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHBy ZXZpb3VzIAo+Pj4+Pj4gZnJhbWVzLgo+Pj4+Pj4gVGhpcwo+Pj4+Pj4gYXZvaWRzIGEgcHJvbG9u Z2VkIG1pc21hdGNoIGJldHdlZW4gdGhlIEhNRCBvdXRwdXQgYW5kIHRoZSBpbm5lciAKPj4+Pj4+ IGVhci4KPj4+Pj4+Cj4+Pj4+PiBCZWNhdXNlIG9mIHRoZSBhZHZlcnNlIGVmZmVjdHMgb24gdGhl IHVzZXIsIHdlIHJlcXVpcmUgaGlnaAo+Pj4+Pj4gY29uZmlkZW5jZSB0aGF0IHRoZQo+Pj4+Pj4g cmVwcm9qZWN0aW9uIHRhc2sgd2lsbCBjb21wbGV0ZSBiZWZvcmUgdGhlIFZCTEFOSyBpbnRlcnZh bC4gRXZlbiBpZgo+Pj4+Pj4gdGhlIEdGWCBwaXBlCj4+Pj4+PiBpcyBjdXJyZW50bHkgZnVsbCBv ZiB3b3JrIGZyb20gdGhlIGdhbWUvYXBwbGljYXRpb24gKHdoaWNoIGlzIG1vc3QKPj4+Pj4+IGxp a2VseSB0aGUgY2FzZSkuCj4+Pj4+Pgo+Pj4+Pj4gRm9yIG1vcmUgZGV0YWlscyBhbmQgaWxsdXN0 cmF0aW9ucywgcGxlYXNlIHJlZmVyIHRvIHRoZSBmb2xsb3dpbmcKPj4+Pj4+IGRvY3VtZW50Ogo+ Pj4+Pj4gaHR0cHM6Ly9jb21tdW5pdHkuYW1kLmNvbS9jb21tdW5pdHkvZ2FtaW5nL2Jsb2cvMjAx Ni8wMy8yOC9hc3luY2hyb25vdXMtc2hhZGVycy1ldm9sdmVkIAo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+ Pgo+Pj4+Pj4KPj4+Pj4+IEdhbWluZzogQXN5bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENv bW11bml0eQo+Pj4+Pj4gY29tbXVuaXR5LmFtZC5jb20KPj4+Pj4+IE9uZSBvZiB0aGUgbW9zdCBl eGNpdGluZyBuZXcgZGV2ZWxvcG1lbnRzIGluIEdQVSB0ZWNobm9sb2d5IG92ZXIgdGhlCj4+Pj4+ PiBwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFkb3B0aW9uIG9mIGFzeW5jaHJvbm91cyBzaGFkZXJz LCB3aGljaCBjYW4KPj4+Pj4+IG1ha2UgbW9yZSBlZmZpY2llbnQgdXNlIG9mIC4uLgo+Pj4+Pj4K Pj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gR2FtaW5nOiBBc3luY2hyb25vdXMgU2hhZGVycyBFdm9sdmVk IHwgQ29tbXVuaXR5Cj4+Pj4+PiBjb21tdW5pdHkuYW1kLmNvbQo+Pj4+Pj4gT25lIG9mIHRoZSBt b3N0IGV4Y2l0aW5nIG5ldyBkZXZlbG9wbWVudHMgaW4gR1BVIHRlY2hub2xvZ3kgb3ZlciB0aGUK Pj4+Pj4+IHBhc3QgeWVhciBoYXMgYmVlbiB0aGUgYWRvcHRpb24gb2YgYXN5bmNocm9ub3VzIHNo YWRlcnMsIHdoaWNoIGNhbgo+Pj4+Pj4gbWFrZSBtb3JlIGVmZmljaWVudCB1c2Ugb2YgLi4uCj4+ Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBHYW1pbmc6IEFzeW5jaHJvbm91cyBTaGFkZXJzIEV2 b2x2ZWQgfCBDb21tdW5pdHkKPj4+Pj4+IGNvbW11bml0eS5hbWQuY29tCj4+Pj4+PiBPbmUgb2Yg dGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBHUFUgdGVjaG5vbG9neSBvdmVy IHRoZQo+Pj4+Pj4gcGFzdCB5ZWFyIGhhcyBiZWVuIHRoZSBhZG9wdGlvbiBvZiBhc3luY2hyb25v dXMgc2hhZGVycywgd2hpY2ggY2FuCj4+Pj4+PiBtYWtlIG1vcmUgZWZmaWNpZW50IHVzZSBvZiAu Li4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4gUmVxdWlyZW1lbnRzOgo+Pj4+Pj4gLS0tLS0tLS0tLS0t LQo+Pj4+Pj4KPj4+Pj4+IFRoZSBtZWNoYW5pc20gbXVzdCBleHBvc2UgdGhlIGZvbGxvd2luZyBm dW5jdGlvbmFpbGl0eToKPj4+Pj4+Cj4+Pj4+PiAgICAgKiBKb2Igcm91bmQgdHJpcCB0aW1lIG11 c3QgYmUgcHJlZGljdGFibGUsIGZyb20gc3VibWlzc2lvbiB0bwo+Pj4+Pj4gZmVuY2Ugc2lnbmFs Cj4+Pj4+Pgo+Pj4+Pj4gICAgICogVGhlIG1lY2hhbmlzbSBtdXN0IHN1cHBvcnQgY29tcHV0ZSB3 b3JrbG9hZHMuCj4+Pj4+Pgo+Pj4+Pj4gR29hbHM6Cj4+Pj4+PiAtLS0tLS0KPj4+Pj4+Cj4+Pj4+ PiAgICAgKiBUaGUgbWVjaGFuaXNtIHNob3VsZCBwcm92aWRlIGxvdyBzdWJtaXNzaW9uIGxhdGVu Y2llcwo+Pj4+Pj4KPj4+Pj4+IFRlc3Q6IHN1Ym1pdHRpbmcgYSBOT1AgcGFja2V0IHRocm91Z2gg dGhlIG1lY2hhbmlzbSBvbiBidXN5IGhhcmR3YXJlCj4+Pj4+PiBzaG91bGQKPj4+Pj4+IGJlIGVx dWl2YWxlbnQgdG8gc3VibWl0dGluZyBhIE5PUCBvbiBpZGxlIGhhcmR3YXJlLgo+Pj4+Pj4KPj4+ Pj4+IE5pY2UgdG8gaGF2ZToKPj4+Pj4+IC0tLS0tLS0tLS0tLS0KPj4+Pj4+Cj4+Pj4+PiAgICAg KiBUaGUgbWVjaGFuaXNtIHNob3VsZCBhbHNvIHN1cHBvcnQgR0ZYIHdvcmtsb2Fkcy4KPj4+Pj4+ Cj4+Pj4+PiBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgd2l0aCB0aGUgY3VycmVudCBoYXJkd2Fy ZSBjYXBhYmlsaXRpZXMgaW4KPj4+Pj4+IFBvbGFyaXMxMCB3ZQo+Pj4+Pj4gd2lsbCBub3QgYmUg YWJsZSB0byBwcm92aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3aXRoIEdGWCB3b3Jsb2Fkcy4K Pj4+Pj4+Cj4+Pj4+PiBCdXQgSSB3b3VsZCBsb3ZlIHRvIGhlYXIgb3RoZXJ3aXNlLiBTbyBpZiBh bnlvbmUgaGFzIGFuIGlkZWEsCj4+Pj4+PiBhcHByb2FjaCBvcgo+Pj4+Pj4gc3VnZ2VzdGlvbiB0 aGF0IHdpbGwgYWxzbyBiZSBjb21wYXRpYmxlIHdpdGggdGhlIEdGWCByaW5nLCBwbGVhc2UgCj4+ Pj4+PiBsZXQKPj4+Pj4+IHVzIGtub3cKPj4+Pj4+IGFib3V0IGl0Lgo+Pj4+Pj4KPj4+Pj4+ICAg ICAqIFRoZSBhYm92ZSBndWFyYW50ZWVzIHNob3VsZCBhbHNvIGJlIHJlc3BlY3RlZCBieSBhbWRr ZmQgCj4+Pj4+PiB3b3JrbG9hZHMKPj4+Pj4+Cj4+Pj4+PiBXb3VsZCBiZSBnb29kIHRvIGhhdmUg Zm9yIGNvbnNpc3RlbmN5LCBidXQgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBhcwo+Pj4+Pj4gdXNl cnMgcnVubmluZwo+Pj4+Pj4gZ2FtZXMgYXJlIG5vdCB0cmFkaXRpb25hbGx5IHJ1bm5pbmcgSFBD IHdvcmtsb2FkcyBpbiB0aGUgYmFja2dyb3VuZC4KPj4+Pj4+Cj4+Pj4+PiBQcm9wb3NlZCBhcHBy b2FjaDoKPj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4KPj4+Pj4+IFNpbWlsYXIgdG8g dGhlIHdpbmRvd3MgZHJpdmVyLCB3ZSBjb3VsZCBleHBvc2UgYSBoaWdoIHByaW9yaXR5Cj4+Pj4+ PiBjb21wdXRlIHF1ZXVlIHRvCj4+Pj4+PiB1c2Vyc3BhY2UuCj4+Pj4+Pgo+Pj4+Pj4gU3VibWlz c2lvbnMgdG8gdGhpcyBjb21wdXRlIHF1ZXVlIHdpbGwgYmUgc2NoZWR1bGVkIHdpdGggaGlnaAo+ Pj4+Pj4gcHJpb3JpdHksIGFuZCBtYXkKPj4+Pj4+IGFjcXVpcmUgaGFyZHdhcmUgcmVzb3VyY2Vz IHByZXZpb3VzbHkgaW4gdXNlIGJ5IG90aGVyIHF1ZXVlcy4KPj4+Pj4+Cj4+Pj4+PiBUaGlzIGNh biBiZSBhY2hpZXZlZCBieSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZSAncHJpb3JpdHknIGZpZWxk IGluCj4+Pj4+PiB0aGUgSFFEcwo+Pj4+Pj4gYW5kIGNvdWxkIGJlIHByb2dyYW1tZWQgYnkgYW1k Z3B1IG9yIHRoZSBhbWRncHUgc2NoZWR1bGVyLiBUaGUgCj4+Pj4+PiByZWxldmFudAo+Pj4+Pj4g cmVnaXN0ZXIgZmllbGRzIGFyZToKPj4+Pj4+ICAgICAgICAgKiBtbUNQX0hRRF9QSVBFX1BSSU9S SVRZCj4+Pj4+PiAgICAgICAgICogbW1DUF9IUURfUVVFVUVfUFJJT1JJVFkKPj4+Pj4+Cj4+Pj4+ PiBJbXBsZW1lbnRhdGlvbiBhcHByb2FjaCAxIC0gc3RhdGljIHBhcnRpdGlvbmluZzoKPj4+Pj4+ IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4K Pj4+Pj4+IFRoZSBhbWRncHUgZHJpdmVyIGN1cnJlbnRseSBjb250cm9scyA4IGNvbXB1dGUgcXVl dWVzIGZyb20gcGlwZTAuIAo+Pj4+Pj4gV2UgY2FuCj4+Pj4+PiBzdGF0aWNhbGx5IHBhcnRpdGlv biB0aGVzZSBhcyBmb2xsb3dzOgo+Pj4+Pj4gICAgICAgICAqIDd4IHJlZ3VsYXIKPj4+Pj4+ICAg ICAgICAgKiAxeCBoaWdoIHByaW9yaXR5Cj4+Pj4+Pgo+Pj4+Pj4gVGhlIHJlbGV2YW50IHByaW9y aXRpZXMgY2FuIGJlIHNldCBzbyB0aGF0IHN1Ym1pc3Npb25zIHRvIHRoZSBoaWdoCj4+Pj4+PiBw cmlvcml0eQo+Pj4+Pj4gcmluZyB3aWxsIHN0YXJ2ZSB0aGUgb3RoZXIgY29tcHV0ZSByaW5ncyBh bmQgdGhlIEdGWCByaW5nLgo+Pj4+Pj4KPj4+Pj4+IFRoZSBhbWRncHUgc2NoZWR1bGVyIHdpbGwg b25seSBwbGFjZSBqb2JzIGludG8gdGhlIGhpZ2ggcHJpb3JpdHkKPj4+Pj4+IHJpbmdzIGlmIHRo ZQo+Pj4+Pj4gY29udGV4dCBpcyBtYXJrZWQgYXMgaGlnaCBwcmlvcml0eS4gQW5kIGEgY29ycmVz cG9uZGluZyBwcmlvcml0eQo+Pj4+Pj4gc2hvdWxkIGJlCj4+Pj4+PiBhZGRlZCB0byBrZWVwIHRy YWNrIG9mIHRoaXMgaW5mb3JtYXRpb246Cj4+Pj4+PiAgICAgICogQU1EX1NDSEVEX1BSSU9SSVRZ X0tFUk5FTAo+Pj4+Pj4gICAgICAqIC0+IEFNRF9TQ0hFRF9QUklPUklUWV9ISUdICj4+Pj4+PiAg ICAgICogQU1EX1NDSEVEX1BSSU9SSVRZX05PUk1BTAo+Pj4+Pj4KPj4+Pj4+IFRoZSB1c2VyIHdp bGwgcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgY29udGV4dCBieSBzZXR0aW5nIGFuCj4+Pj4+PiBh cHByb3ByaWF0ZSBmbGFnCj4+Pj4+PiBpbiBkcm1fYW1kZ3B1X2N0eF9pbiAoQU1ER1BVX0NUWF9I SUdIX1BSSU9SSVRZIG9yIHNpbWlsYXIpOgo+Pj4+Pj4gaHR0cHM6Ly9naXRodWIuY29tL3RvcnZh bGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oI0wxNjMg Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBUaGUgc2V0dGluZyBpcyBpbiBhIHBlciBjb250 ZXh0IGxldmVsIHNvIHRoYXQgd2UgY2FuOgo+Pj4+Pj4gICAgICogTWFpbnRhaW4gYSBjb25zaXN0 ZW50IEZJRk8gb3JkZXJpbmcgb2YgYWxsIHN1Ym1pc3Npb25zIHRvIGEKPj4+Pj4+IGNvbnRleHQK Pj4+Pj4+ICAgICAqIENyZWF0ZSBoaWdoIHByaW9yaXR5IGFuZCBub24taGlnaCBwcmlvcml0eSBj b250ZXh0cyBpbiB0aGUgCj4+Pj4+PiBzYW1lCj4+Pj4+PiBwcm9jZXNzCj4+Pj4+Pgo+Pj4+Pj4g SW1wbGVtZW50YXRpb24gYXBwcm9hY2ggMiAtIGR5bmFtaWMgcHJpb3JpdHkgcHJvZ3JhbW1pbmc6 Cj4+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPj4+Pj4+Cj4+Pj4+PiBTaW1pbGFyIHRvIHRoZSBhYm92ZSwgYnV0IGluc3RlYWQg b2YgcHJvZ3JhbW1pbmcgdGhlIHByaW9yaXRpZXMgYW5kCj4+Pj4+PiBhbWRncHVfaW5pdCgpIHRp bWUsIHRoZSBTVyBzY2hlZHVsZXIgd2lsbCByZXByb2dyYW0gdGhlIHF1ZXVlIAo+Pj4+Pj4gcHJp b3JpdGllcwo+Pj4+Pj4gZHluYW1pY2FsbHkgd2hlbiBzY2hlZHVsaW5nIGEgdGFzay4KPj4+Pj4+ Cj4+Pj4+PiBUaGlzIHdvdWxkIGludm9sdmUgaGF2aW5nIGEgaGFyZHdhcmUgc3BlY2lmaWMgY2Fs bGJhY2sgZnJvbSB0aGUKPj4+Pj4+IHNjaGVkdWxlciB0bwo+Pj4+Pj4gc2V0IHRoZSBhcHByb3By aWF0ZSBxdWV1ZSBwcmlvcml0eTogc2V0X3ByaW9yaXR5KGludCByaW5nLCBpbnQgCj4+Pj4+PiBp bmRleCwKPj4+Pj4+IGludCBwcmlvcml0eSkKPj4+Pj4+Cj4+Pj4+PiBEdXJpbmcgdGhpcyBjYWxs YmFjayB3ZSB3b3VsZCBoYXZlIHRvIGdyYWIgdGhlIFNSQk0gbXV0ZXggdG8gcGVyZm9ybQo+Pj4+ Pj4gdGhlIGFwcHJvcHJpYXRlCj4+Pj4+PiBIVyBwcm9ncmFtbWluZywgYW5kIEknbSBub3QgcmVh bGx5IHN1cmUgaWYgdGhhdCBpcyBzb21ldGhpbmcgd2UKPj4+Pj4+IHNob3VsZCBiZSBkb2luZyBm cm9tCj4+Pj4+PiB0aGUgc2NoZWR1bGVyLgo+Pj4+Pj4KPj4+Pj4+IE9uIHRoZSBwb3NpdGl2ZSBz aWRlLCB0aGlzIGFwcHJvYWNoIHdvdWxkIGFsbG93IHVzIHRvIHByb2dyYW0gYSAKPj4+Pj4+IHJh bmdlIG9mCj4+Pj4+PiBwcmlvcml0aWVzIGZvciBqb2JzIGluc3RlYWQgb2YgYSBzaW5nbGUgImhp Z2ggcHJpb3JpdHkiIHZhbHVlIiwKPj4+Pj4+IGFjaGlldmluZwo+Pj4+Pj4gc29tZXRoaW5nIHNp bWlsYXIgdG8gdGhlIG5pY2VuZXNzIEFQSSBhdmFpbGFibGUgZm9yIENQVSBzY2hlZHVsaW5nLgo+ Pj4+Pj4KPj4+Pj4+IEknbSBub3Qgc3VyZSBpZiB0aGlzIGZsZXhpYmlsaXR5IGlzIHNvbWV0aGlu ZyB0aGF0IHdlIHdvdWxkIG5lZWQgZm9yCj4+Pj4+PiBvdXIgdXNlCj4+Pj4+PiBjYXNlLCBidXQg aXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVyIHNjZW5hcmlvcyAobXVsdGlwbGUgdXNlcnMKPj4+ Pj4+IHNoYXJpbmcgY29tcHV0ZQo+Pj4+Pj4gdGltZSBvbiBhIHNlcnZlcikuCj4+Pj4+Pgo+Pj4+ Pj4gVGhpcyBhcHByb2FjaCB3b3VsZCByZXF1aXJlIGEgbmV3IGludCBmaWVsZCBpbiBkcm1fYW1k Z3B1X2N0eF9pbiwgb3IKPj4+Pj4+IHJlcHVycG9zaW5nCj4+Pj4+PiBvZiB0aGUgZmxhZ3MgZmll bGQuCj4+Pj4+Pgo+Pj4+Pj4gS25vd24gY3VycmVudCBvYnN0YWNsZXM6Cj4+Pj4+PiAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+Cj4+Pj4+PiBUaGUgU1EgaXMgY3VycmVudGx5IHByb2dy YW1tZWQgdG8gZGlzcmVnYXJkIHRoZSBIUUQgcHJpb3JpdGllcywgYW5kCj4+Pj4+PiBpbnN0ZWFk IGl0IHBpY2tzCj4+Pj4+PiBqb2JzIGF0IHJhbmRvbS4gU2V0dGluZ3MgZnJvbSB0aGUgc2hhZGVy IGl0c2VsZiBhcmUgYWxzbyBkaXNyZWdhcmRlZAo+Pj4+Pj4gYXMgdGhpcyBpcwo+Pj4+Pj4gY29u c2lkZXJlZCBhIHByaXZpbGVnZWQgZmllbGQuCj4+Pj4+Pgo+Pj4+Pj4gRWZmZWN0aXZlbHkgd2Ug Y2FuIGdldCBvdXIgY29tcHV0ZSB3YXZlZnJvbnQgbGF1bmNoZWQgQVNBUCwgYnV0IHdlCj4+Pj4+ PiBtaWdodCBub3QgZ2V0IHRoZQo+Pj4+Pj4gdGltZSB3ZSBuZWVkIG9uIHRoZSBTUS4KPj4+Pj4+ Cj4+Pj4+PiBUaGUgY3VycmVudCBwcm9ncmFtbWluZyB3b3VsZCBoYXZlIHRvIGJlIGNoYW5nZWQg dG8gYWxsb3cgcHJpb3JpdHkKPj4+Pj4+IHByb3BhZ2F0aW9uCj4+Pj4+PiBmcm9tIHRoZSBIUUQg aW50byB0aGUgU1EuCj4+Pj4+Pgo+Pj4+Pj4gR2VuZXJpYyBhcHByb2FjaCBmb3IgYWxsIEhXIElQ czoKPj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+Pgo+Pj4+Pj4g Rm9yIGNvbnNpc3RlbmN5IHB1cnBvc2VzLCB0aGUgaGlnaCBwcmlvcml0eSBjb250ZXh0IGNhbiBi ZSBlbmFibGVkCj4+Pj4+PiBmb3IgYWxsIEhXIElQcwo+Pj4+Pj4gd2l0aCBzdXBwb3J0IG9mIHRo ZSBTVyBzY2hlZHVsZXIuIFRoaXMgd2lsbCBmdW5jdGlvbiBzaW1pbGFybHkgdG8gCj4+Pj4+PiB0 aGUKPj4+Pj4+IGN1cnJlbnQKPj4+Pj4+IEFNRF9TQ0hFRF9QUklPUklUWV9LRVJORUwgcHJpb3Jp dHksIHdoZXJlIHRoZSBqb2IgY2FuIGp1bXAgYWhlYWQgb2YKPj4+Pj4+IGFueXRoaW5nIG5vdAo+ Pj4+Pj4gY29tbWl0ZWQgdG8gdGhlIEhXIHF1ZXVlLgo+Pj4+Pj4KPj4+Pj4+IFRoZSBiZW5lZml0 cyBvZiByZXF1ZXN0aW5nIGEgaGlnaCBwcmlvcml0eSBjb250ZXh0IGZvciBhIG5vbi1jb21wdXRl Cj4+Pj4+PiBxdWV1ZSB3aWxsCj4+Pj4+PiBiZSBsZXNzZXIgKGUuZy4gdXAgdG8gMTBzIG9mIHdh aXQgdGltZSBpZiBhIEdGWCBjb21tYW5kIGlzIHN0dWNrIGluCj4+Pj4+PiBmcm9udCBvZgo+Pj4+ Pj4geW91KSwgYnV0IGhhdmluZyB0aGUgQVBJIGluIHBsYWNlIHdpbGwgYWxsb3cgdXMgdG8gZWFz aWx5IGltcHJvdmUgCj4+Pj4+PiB0aGUKPj4+Pj4+IGltcGxlbWVudGF0aW9uCj4+Pj4+PiBpbiB0 aGUgZnV0dXJlIGFzIG5ldyBmZWF0dXJlcyBiZWNvbWUgYXZhaWxhYmxlIGluIG5ldyBoYXJkd2Fy ZS4KPj4+Pj4+Cj4+Pj4+PiBGdXR1cmUgc3RlcHM6Cj4+Pj4+PiAtLS0tLS0tLS0tLS0tCj4+Pj4+ Pgo+Pj4+Pj4gT25jZSB3ZSBoYXZlIGFuIGFwcHJvYWNoIHNldHRsZWQsIEkgY2FuIHRha2UgY2Fy ZSBvZiB0aGUgCj4+Pj4+PiBpbXBsZW1lbnRhdGlvbi4KPj4+Pj4+Cj4+Pj4+PiBBbHNvLCBvbmNl IHRoZSBpbnRlcmZhY2UgaXMgbW9zdGx5IGRlY2lkZWQsIHdlIGNhbiBzdGFydCB0aGlua2luZyAK Pj4+Pj4+IGFib3V0Cj4+Pj4+PiBleHBvc2luZyB0aGUgaGlnaCBwcmlvcml0eSBxdWV1ZSB0aHJv dWdoIHJhZHYuCj4+Pj4+Pgo+Pj4+Pj4gUmVxdWVzdCBmb3IgZmVlZGJhY2s6Cj4+Pj4+PiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4+Cj4+Pj4+PiBXZSBhcmVuJ3QgbWFycmllZCB0byBhbnkg b2YgdGhlIGFwcHJvYWNoZXMgb3V0bGluZWQgYWJvdmUuIE91ciBnb2FsCj4+Pj4+PiBpcyB0bwo+ Pj4+Pj4gb2J0YWluIGEgbWVjaGFuaXNtIHRoYXQgd2lsbCBhbGxvdyB1cyB0byBjb21wbGV0ZSB0 aGUgcmVwcm9qZWN0aW9uCj4+Pj4+PiBqb2Igd2l0aGluIGEKPj4+Pj4+IHByZWRpY3RhYmxlIGFt b3VudCBvZiB0aW1lLiBTbyBpZiBhbnlvbmUgYW55b25lIGhhcyBhbnkgCj4+Pj4+PiBzdWdnZXN0 aW9ucyBmb3IKPj4+Pj4+IGltcHJvdmVtZW50cyBvciBhbHRlcm5hdGl2ZSBzdHJhdGVnaWVzIHdl IGFyZSBtb3JlIHRoYW4gaGFwcHkgdG8gCj4+Pj4+PiBoZWFyCj4+Pj4+PiB0aGVtLgo+Pj4+Pj4K Pj4+Pj4+IElmIGFueSBvZiB0aGUgdGVjaG5pY2FsIGluZm9ybWF0aW9uIGFib3ZlIGlzIGFsc28g aW5jb3JyZWN0LCBmZWVsCj4+Pj4+PiBmcmVlIHRvIHBvaW50Cj4+Pj4+PiBvdXQgbXkgbWlzdW5k ZXJzdGFuZGluZ3MuCj4+Pj4+Pgo+Pj4+Pj4gTG9va2luZyBmb3J3YXJkIHRvIGhlYXJpbmcgZnJv bSB5b3UuCj4+Pj4+Pgo+Pj4+Pj4gUmVnYXJkcywKPj4+Pj4+IEFuZHJlcwo+Pj4+Pj4KPj4+Pj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4+PiBh bWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK Pj4+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1k LWdmeAo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+PiBhbWQtZ2Z4IEluZm8gUGFnZSAtIGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+Pj4+Pj4gbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+PiBUbyBzZWUgdGhl IGNvbGxlY3Rpb24gb2YgcHJpb3IgcG9zdGluZ3MgdG8gdGhlIGxpc3QsIHZpc2l0IHRoZQo+Pj4+ Pj4gYW1kLWdmeCBBcmNoaXZlcy4gVXNpbmcgYW1kLWdmeDogVG8gcG9zdCBhIG1lc3NhZ2UgdG8g YWxsIHRoZSBsaXN0Cj4+Pj4+PiBtZW1iZXJzLCBzZW5kIGVtYWlsIC4uLgo+Pj4+Pj4KPj4+Pj4+ Cj4+Pj4+Pgo+Pj4+Pj4gYW1kLWdmeCBJbmZvIFBhZ2UgLSBsaXN0cy5mcmVlZGVza3RvcC5vcmcK Pj4+Pj4+IGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+Pj4gVG8gc2VlIHRoZSBjb2xsZWN0aW9u IG9mIHByaW9yIHBvc3RpbmdzIHRvIHRoZSBsaXN0LCB2aXNpdCB0aGUKPj4+Pj4+IGFtZC1nZngg QXJjaGl2ZXMuIFVzaW5nIGFtZC1nZng6IFRvIHBvc3QgYSBtZXNzYWdlIHRvIGFsbCB0aGUgbGlz dAo+Pj4+Pj4gbWVtYmVycywgc2VuZCBlbWFpbCAuLi4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+ Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+Pj4KPj4+Pj4+Cj4+Pj4+Pgo+Pj4+ Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4+ IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+Pj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+Pj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9h bWQtZ2Z4Cj4+Pj4+Pgo+Pj4+Pgo+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+Pj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+PiBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+Pgo+Pj4KPj4KPj4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QK Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVz a3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4KCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vYW1kLWdmeAo=