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:11:49 +0800 Message-ID: <58576C15.1070909@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <361f177c-bf55-1525-4f35-86708e4f8d9f-38hxoXRICFZx67MzidHQgQC/G2K4zDHf@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: "Pierre-Loup A. Griffais" , "Sagalovitch, Serguei" , Andres Rodriguez , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Mao, David" , "Zhang, Hawking" , "Huan, Alvin" CgpPbiAyMDE25bm0MTLmnIgxOeaXpSAxMTozMywgUGllcnJlLUxvdXAgQS4gR3JpZmZhaXMgd3Jv dGU6Cj4gV2UncmUgY3VycmVudGx5IHdvcmtpbmcgd2l0aCB0aGUgb3BlbiBzdGFjazsgSSBhc3N1 bWUgdGhhdCBhIG1lY2hhbmlzbSAKPiBjb3VsZCBiZSBleHBvc2VkIGJ5IGJvdGggb3BlbiBhbmQg UHJvIFZ1bGthbiB1c2Vyc3BhY2UgZHJpdmVycyBhbmQgCj4gdGhhdCB0aGUgYW1kZ3B1IGtlcm5l bCBpbnRlcmZhY2UgaW1wcm92ZW1lbnRzIHdlIHdvdWxkIHB1cnN1ZSAKPiBmb2xsb3dpbmcgdGhp cyBkaXNjdXNzaW9uIHdvdWxkIGxldCBib3RoIGRyaXZlcnMgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhl IAo+IGZlYXR1cmUsIGNvcnJlY3Q/Ck9mIGNvdXJzZS4KRG9lcyBvcGVuIHN0YWNrIGhhdmUgVnVs a2FuIHN1cHBvcnQ/CgpSZWdhcmRzLApEYXZpZCBaaG91Cj4KPiBPbiAxMi8xOC8yMDE2IDA3OjI2 IFBNLCB6aG91Y20xIHdyb3RlOgo+PiBCeSB0aGUgd2F5LCBhcmUgeW91IHVzaW5nIGFsbC1vcGVu IGRyaXZlciBvciBhbWRncHUtcHJvIGRyaXZlcj8KPj4KPj4gK0RhdmlkIE1hbywgd2hvIGlzIHdv cmtpbmcgb24gb3VyIFZ1bGthbiBkcml2ZXIuCj4+Cj4+IFJlZ2FyZHMsCj4+IERhdmlkIFpob3UK Pj4KPj4gT24gMjAxNuW5tDEy5pyIMTjml6UgMDY6MDUsIFBpZXJyZS1Mb3VwIEEuIEdyaWZmYWlz IHdyb3RlOgo+Pj4gSGkgU2VyZ3VlaSwKPj4+Cj4+PiBJJ20gYWxzbyB3b3JraW5nIG9uIHRoZSBi cmluZ2luZyB1cCBvdXIgVlIgcnVudGltZSBvbiB0b3Agb2YgYW1ncHU7Cj4+PiBzZWUgcmVwbGll cyBpbmxpbmUuCj4+Pgo+Pj4gT24gMTIvMTYvMjAxNiAwOTowNSBQTSwgU2FnYWxvdml0Y2gsIFNl cmd1ZWkgd3JvdGU6Cj4+Pj4gQW5kcmVzLAo+Pj4+Cj4+Pj4+ICBGb3IgY3VycmVudCBWUiB3b3Jr bG9hZHMgd2UgaGF2ZSAzIHNlcGFyYXRlIHByb2Nlc3NlcyBydW5uaW5nCj4+Pj4+IGFjdHVhbGx5 Ogo+Pj4+IFNvIHdlIGNvdWxkIGhhdmUgcG90ZW50aWFsIG1lbW9yeSBvdmVyY29tbWl0IGNhc2Ug b3IgZG8geW91IGRvCj4+Pj4gcGFydGl0aW9uaW5nCj4+Pj4gb24geW91ciBvd24/ICBJIHdvdWxk IHRoaW5rIHRoYXQgdGhlcmUgaXMgbmVlZCB0byBhdm9pZCBvdmVyY29taXQgaW4KPj4+PiBWUiBj YXNlIHRvCj4+Pj4gcHJldmVudCBhbnkgQk8gbWlncmF0aW9uLgo+Pj4KPj4+IFlvdSdyZSBlbnRp cmVseSBjb3JyZWN0OyBjdXJyZW50bHkgdGhlIFZSIHJ1bnRpbWUgaXMgc2V0dGluZyB1cAo+Pj4g cHJpb3JpdGl6ZWQgQ1BVIHNjaGVkdWxpbmcgZm9yIGl0cyBWUiBjb21wb3NpdG9yLCB3ZSdyZSB3 b3JraW5nIG9uCj4+PiBwcmlvcml0aXplZCBHUFUgc2NoZWR1bGluZyBhbmQgcHJlLWVtcHRpb24g KGVnLiB0aGlzIHRocmVhZCksIGFuZCBpbgo+Pj4gdGhlIGZ1dHVyZSBpdCB3aWxsIG1ha2Ugc2Vu c2UgdG8gZG8gd29yayBpbiBvcmRlciB0byBtYWtlIHN1cmUgdGhhdAo+Pj4gaXRzIG1lbW9yeSBh bGxvY2F0aW9ucyBkbyBub3QgZ2V0IGV2aWN0ZWQsIHRvIHByZXZlbnQgYW55IHVud2VsY29tZQo+ Pj4gYWRkaXRpb25hbCBsYXRlbmN5IGluIHRoZSBldmVudCBvZiBuZWVkaW5nIHRvIHBlcmZvcm0g anVzdC1pbi10aW1lCj4+PiByZXByb2plY3Rpb24uCj4+Pgo+Pj4+IEJUVzogRG8geW91IG1lYW4g X19yZWFsX18gcHJvY2Vzc2VzIG9yIHRocmVhZHM/Cj4+Pj4gQmFzZWQgb24gbXkgdW5kZXJzdGFu ZGluZyBzaGFyaW5nIEJPcyBiZXR3ZWVuIGRpZmZlcmVudCBwcm9jZXNzZXMKPj4+PiBjb3VsZCBp bnRyb2R1Y2UgYWRkaXRpb25hbCBzeW5jaHJvbml6YXRpb24gY29uc3RyYWlucy4gIGJ0dzogSSBh bSBub3QKPj4+PiBzdXJlCj4+Pj4gaWYgd2UgYXJlIGFibGUgdG8gc2hhcmUgVnVsa2FuIHN5bmMu IG9iamVjdCBjcm9zcy1wcm9jZXNzIGJvdW5kYXJ5Lgo+Pj4KPj4+IFRoZXkgYXJlIGRpZmZlcmVu dCBwcm9jZXNzZXM7IGl0IGlzIGltcG9ydGFudCBmb3IgdGhlIGNvbXBvc2l0b3IgdGhhdAo+Pj4g aXMgcmVzcG9uc2libGUgZm9yIHF1YWxpdHktb2Ytc2VydmljZSBmZWF0dXJlcyBzdWNoIGFzIGNv bnNpc3RlbnRseQo+Pj4gcHJlc2VudGluZyBkaXN0b3J0ZWQgZnJhbWVzIHdpdGggdGhlIHJpZ2h0 IGxhdGVuY3ksIHJlcHJvamVjdGlvbiwgZXRjLAo+Pj4gdG8gYmUgc2VwYXJhdGUgZnJvbSB0aGUg bWFpbiBhcHBsaWNhdGlvbi4KPj4+Cj4+PiBDdXJyZW50bHkgd2UgYXJlIHVzaW5nIHVucmVsZWFz ZWQgY3Jvc3MtcHJvY2VzcyBtZW1vcnkgYW5kIHNlbWFwaG9yZQo+Pj4gZXh0ZW5zaW9ucyB0byBm ZXRjaCB1cGRhdGVkIGV5ZSBpbWFnZXMgZnJvbSB0aGUgY2xpZW50IGFwcGxpY2F0aW9uLAo+Pj4g YnV0IHRoZSBqdXN0LWluLXRpbWUgcmVwcm9qZWN0aW9uIGRpc2N1c3NlZCBoZXJlIGRvZXMgbm90 IGFjdHVhbGx5Cj4+PiBoYXZlIGFueSBkaXJlY3QgaW50ZXJhY3Rpb25zIHdpdGggY3Jvc3MtcHJv Y2VzcyByZXNvdXJjZSBzaGFyaW5nLAo+Pj4gc2luY2UgaXQncyBhY2hpZXZlZCBieSB1c2luZyB3 aGF0ZXZlciBpcyB0aGUgbGF0ZXN0LCBtb3N0IHVwLXRvLWRhdGUKPj4+IGV5ZSBpbWFnZXMgdGhh dCBoYXZlIGFscmVhZHkgYmVlbiBzZW50IGJ5IHRoZSBjbGllbnQgYXBwbGljYXRpb24sCj4+PiB3 aGljaCBhcmUgYWxyZWFkeSBhdmFpbGFibGUgdG8gdXNlIHdpdGhvdXQgYWRkaXRpb25hbCBzeW5j aHJvbml6YXRpb24uCj4+Pgo+Pj4+Cj4+Pj4+ICAgIDMpIFN5c3RlbSBjb21wb3NpdG9yICh3ZSBh cmUgbG9va2luZyBhdCBhcHByb2FjaGVzIHRvIHJlbW92ZSB0aGlzCj4+Pj4+IG92ZXJoZWFkKQo+ Pj4+IFllcywgIElNSE8gdGhlIGJlc3QgaXMgdG8gcnVuIGluICAiZnVsbCBzY3JlZW4gbW9kZSIu Cj4+Pgo+Pj4gWWVzLCB3ZSBhcmUgd29ya2luZyBvbiBtZWNoYW5pc21zIHRvIHByZXNlbnQgZGly ZWN0bHkgdG8gdGhlIGhlYWRzZXQKPj4+IGRpc3BsYXkgd2l0aG91dCBhbnkgaW50ZXJtZWRpYXJp ZXMgYXMgYSBzZXBhcmF0ZSBlZmZvcnQuCj4+Pgo+Pj4+Cj4+Pj4+ICBUaGUgbGF0ZW5jeSBpcyBv dXIgbWFpbiBjb25jZXJuLAo+Pj4+IEkgd291bGQgYXNzdW1lIHRoYXQgdGhpcyBpcyB0aGUga25v d24gcHJvYmxlbSAoYXQgbGVhc3QgZm9yIGNvbXB1dGUKPj4+PiB1c2FnZSkuCj4+Pj4gSXQgbG9v a3MgbGlrZSB0aGF0IGFtZGdwdSAvIGtlcm5lbCBzdWJtaXNzaW9uIGlzIHJhdGhlciBDUFUgaW50 ZW5zaXZlCj4+Pj4gKGF0IGxlYXN0Cj4+Pj4gaW4gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiku Cj4+Pgo+Pj4gQXMgbG9uZyBhcyBpdCdzIGEgY29uc2lzdGVudCBjb3N0LCBpdCBzaG91bGRuJ3Qg YW4gaXNzdWUuIEhvd2V2ZXIsIGlmCj4+PiB0aGVyZSdzIGhpZ2ggZGVncmVlcyBvZiB2YXJpYW5j ZSB0aGVuIHRoYXQgd291bGQgYmUgdHJvdWJsZXNvbWUgYW5kIHdlCj4+PiB3b3VsZCBuZWVkIHRv IGFjY291bnQgZm9yIHRoZSB3b3JzdCBjYXNlLgo+Pj4KPj4+IEhvcGVmdWxseSB0aGUgcmVxdWly ZW1lbnRzIGFuZCBhcHByb2FjaCB3ZSBkZXNjcmliZWQgbWFrZSBzZW5zZSwgd2UncmUKPj4+IGxv b2tpbmcgZm9yd2FyZCB0byB5b3VyIGZlZWRiYWNrIGFuZCBzdWdnZXN0aW9ucy4KPj4+Cj4+PiBU aGFua3MhCj4+PiAgLSBQaWVycmUtTG91cAo+Pj4KPj4+Pgo+Pj4+IFNpbmNlcmVseSB5b3VycywK Pj4+PiBTZXJndWVpIFNhZ2Fsb3ZpdGNoCj4+Pj4KPj4+Pgo+Pj4+IEZyb206IEFuZHJlcyBSb2Ry aWd1ZXogPGFuZHJlc3JAdmFsdmVzb2Z0d2FyZS5jb20+Cj4+Pj4gU2VudDogRGVjZW1iZXIgMTYs IDIwMTYgMTA6MDAgUE0KPj4+PiBUbzogU2FnYWxvdml0Y2gsIFNlcmd1ZWk7IGFtZC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gU3ViamVjdDogUkU6IFtSRkNdIE1lY2hhbmlzbSBmb3Ig aGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Cj4+Pj4gSGV5IFNlcmd1ZWks Cj4+Pj4KPj4+Pj4gW1Nlcmd1ZWldIE5vLiBJIG1lYW4gcGlwZSA6LSkgIGFzIE1FQyBkZWZpbmUg aXQuICBBcyBmYXIgYXMgSQo+Pj4+PiB1bmRlcnN0YW5kIChieSBzaW1wbGlmeWluZykKPj4+Pj4g c29tZSBzY2hlZHVsaW5nIGlzIHBlciBwaXBlLiAgSSBrbm93IGFib3V0IHRoZSBjdXJyZW50IGFs bG9jYXRpb24KPj4+Pj4gc2NoZW1lIGJ1dCBJIGRvIG5vdCB0aGluawo+Pj4+PiB0aGF0IGl0IGlz ICBpZGVhbC4gIEkgd291bGQgYXNzdW1lIHRoYXQgd2UgbmVlZCAgdG8gc3dpdGNoIHRvCj4+Pj4+ IGR5bmFtaWNhbCBwYXJ0aXRpb24KPj4+Pj4gb2YgcmVzb3VyY2VzICBiYXNlZCBvbiB0aGUgd29y a2xvYWQgb3RoZXJ3aXNlIHdlIHdpbGwgaGF2ZSByZXNvdXJjZQo+Pj4+PiBjb25mbGljdAo+Pj4+ PiBiZXR3ZWVuIFZ1bGthbiBjb21wdXRlIGFuZCAgT3BlbkNMLgo+Pj4+Cj4+Pj4gSSBhZ3JlZSB0 aGUgcGFydGl0aW9uaW5nIGlzbid0IGlkZWFsLiBJJ20gaG9waW5nIHdlIGNhbiBzdGFydCB3aXRo IGEKPj4+PiBzb2x1dGlvbiB0aGF0IGFzc3VtZXMgdGhhdAo+Pj4+IG9ubHkgcGlwZTAgaGFzIGFu eSB3b3JrIGFuZCB0aGUgb3RoZXIgcGlwZXMgYXJlIGlkbGUgKG5vIEhTQS9ST0NtCj4+Pj4gcnVu bmluZyBvbiB0aGUgc3lzdGVtKS4KPj4+Pgo+Pj4+IFRoaXMgc2hvdWxkIGJlIG1vcmUgb3IgbGVz cyB0aGUgdXNlIGNhc2Ugd2UgZXhwZWN0IGZyb20gVlIgdXNlcnMuCj4+Pj4KPj4+PiBJIGFncmVl IHRoZSBzcGxpdCBpcyBjdXJyZW50bHkgbm90IGlkZWFsLCBidXQgSSdkIGxpa2UgdG8gY29uc2lk ZXIKPj4+PiB0aGF0IGEgc2VwYXJhdGUgdGFzaywgYmVjYXVzZQo+Pj4+IG1ha2luZyBpdCBkeW5h bWljIGlzIG5vdCBzdHJhaWdodCBmb3J3YXJkIDpQCj4+Pj4KPj4+Pj4gW1Nlcmd1ZWldIFZ1bGth biB3b3JrcyB2aWEgYW1kZ3B1IChrZXJuZWwgc3VibWlzc2lvbnMpIHNvIGFtZGtmZAo+Pj4+PiB3 aWxsIGJlIG5vdAo+Pj4+PiBpbnZvbHZlZC4gIEkgd291bGQgYXNzdW1lIHRoYXQgaW4gdGhlIGNh c2Ugb2YgVlIgd2Ugd2lsbCBoYXZlIG9uZSAKPj4+Pj4gbWFpbgo+Pj4+PiBhcHBsaWNhdGlvbiAo ImNvbnNvbGUiIG1vZGUoPykpIHNvIHdlIGNvdWxkIHRlbXBvcmFsbHkgImlnbm9yZSIKPj4+Pj4g T3BlbkNML1JPQ20gbmVlZHMgd2hlbiBWUiBpcyBydW5uaW5nLgo+Pj4+Cj4+Pj4gQ29ycmVjdCwg dGhpcyBpcyB3aHkgd2Ugd2FudCB0byBlbmFibGUgdGhlIGhpZ2ggcHJpb3JpdHkgY29tcHV0ZQo+ Pj4+IHF1ZXVlIHRocm91Z2gKPj4+PiBsaWJkcm0tYW1kZ3B1LCBzbyB0aGF0IHdlIGNhbiBleHBv c2UgaXQgdGhyb3VnaCBWdWxrYW4gbGF0ZXIuCj4+Pj4KPj4+PiBGb3IgY3VycmVudCBWUiB3b3Jr bG9hZHMgd2UgaGF2ZSAzIHNlcGFyYXRlIHByb2Nlc3NlcyBydW5uaW5nIAo+Pj4+IGFjdHVhbGx5 Ogo+Pj4+ICAgICAxKSBHYW1lIHByb2Nlc3MKPj4+PiAgICAgMikgVlIgQ29tcG9zaXRvciAodGhp cyBpcyB0aGUgcHJvY2VzcyB0aGF0IHdpbGwgcmVxdWlyZSBoaWdoCj4+Pj4gcHJpb3JpdHkgcXVl dWUpCj4+Pj4gICAgIDMpIFN5c3RlbSBjb21wb3NpdG9yICh3ZSBhcmUgbG9va2luZyBhdCBhcHBy b2FjaGVzIHRvIHJlbW92ZSB0aGlzCj4+Pj4gb3ZlcmhlYWQpCj4+Pj4KPj4+PiBGb3Igbm93IEkg dGhpbmsgaXQgaXMgb2theSB0byBhc3N1bWUgbm8gT3BlbkNML1JPQ20gcnVubmluZwo+Pj4+IHNp bXVsdGFuZW91c2x5LCBidXQKPj4+PiBJIHdvdWxkIGFsc28gbGlrZSB0byBiZSBhYmxlIHRvIGFk ZHJlc3MgdGhpcyBjYXNlIGluIHRoZSBmdXR1cmUKPj4+PiAoY3Jvc3MtcGlwZSBwcmlvcml0aWVz KS4KPj4+Pgo+Pj4+PiBbU2VyZ3VlaV0gIFRoZSBwcm9ibGVtIHdpdGggcHJlLWVtcHRpb24gb2Yg Z3JhcGhpY3MgdGFzazogIChhKSBpdAo+Pj4+PiBtYXkgdGFrZSB0aW1lIHNvCj4+Pj4+IGxhdGVu Y3kgbWF5IHN1ZmZlcgo+Pj4+Cj4+Pj4gVGhlIGxhdGVuY3kgaXMgb3VyIG1haW4gY29uY2Vybiwg d2Ugd2FudCBzb21ldGhpbmcgdGhhdCBpcwo+Pj4+IHByZWRpY3RhYmxlLiBBIGdvb2QKPj4+PiBp bGx1c3RyYXRpb24gb2Ygd2hhdCB0aGUgcmVwcm9qZWN0aW9uIHNjaGVkdWxpbmcgbG9va3MgbGlr ZSBjYW4gYmUKPj4+PiBmb3VuZCBoZXJlOgo+Pj4+IGh0dHBzOi8vY29tbXVuaXR5LmFtZC5jb20v c2VydmxldC9KaXZlU2VydmxldC9zaG93SW1hZ2UvMzgtMTMxMC0xMDQ3NTQvcGFzdGVkSW1hZ2Vf My5wbmcgCj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4+IChiKSB0byBwcmVlbXB0IHdlIG5lZWQgdG8gaGF2 ZSBkaWZmZXJlbnQgImNvbnRleHQiIC0gd2Ugd2FudAo+Pj4+PiB0byBndWFyYW50ZWUgdGhhdCBz dWJtaXNzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbnRleHQgd2lsbCBiZSBleGVjdXRlZAo+Pj4+PiBp biBvcmRlci4KPj4+Pgo+Pj4+IFRoaXMgaXMgb2theSwgYXMgdGhlIHJlcHJvamVjdGlvbiB3b3Jr IGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb24KPj4+PiB0aGUgZ2FtZSBjb250ZXh0LCBhbmQg aXQKPj4+PiBldmVuIGhhcHBlbnMgaW4gYSBzZXBhcmF0ZSBwcm9jZXNzLgo+Pj4+Cj4+Pj4+IEJU VzogKGEpIERvIHlvdSB3YW50ICAicHJlZW1wdCIgYW5kIGxhdGVyIHJlc3VtZSBvciBkbyB5b3Ug d2FudAo+Pj4+PiAicHJlZW1wdCIgYW5kCj4+Pj4+ICJjYW5jZWwvYWJvcnQiCj4+Pj4KPj4+PiBQ cmVlbXB0IHRoZSBnYW1lIHdpdGggdGhlIGNvbXBvc2l0b3IgdGFzayBhbmQgdGhlbiByZXN1bWUg aXQuCj4+Pj4KPj4+Pj4gKGIpIFZ1bGthbiBpcyBnZW5lcmljIEFQSSBhbmQgY291bGQgYmUgdXNl ZCBmb3IgZ3JhcGhpY3MgYXMgd2VsbCBhcwo+Pj4+PiBmb3IgcGxhaW4gY29tcHV0ZSB0YXNrcyAo VktfUVVFVUVfQ09NUFVURV9CSVQpLgo+Pj4+Cj4+Pj4gWWVhaCwgdGhlIHBsYW4gaXMgdG8gdXNl IHZ1bGthbiBjb21wdXRlLiBCdXQgaWYgeW91IGZpZ3VyZSBvdXQgYSB3YXkKPj4+PiBmb3IgdXMg dG8gZ2V0Cj4+Pj4gYSBndWFyYW50ZWVkIGV4ZWN1dGlvbiB0aW1lIHVzaW5nIHZ1bGthbiBncmFw aGljcywgdGhlbiBJJ2xsIHRha2UgeW91Cj4+Pj4gb3V0IGZvciBhIGJlZXIgOikKPj4+Pgo+Pj4+ IFJlZ2FyZHMsCj4+Pj4gQW5kcmVzCj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+Pj4+IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVpIFtTZXJndWVpLlNhZ2Fs b3ZpdGNoQGFtZC5jb21dCj4+Pj4gU2VudDogRnJpZGF5LCBEZWNlbWJlciAxNiwgMjAxNiA5OjEz IFBNCj4+Pj4gVG86IEFuZHJlcyBSb2RyaWd1ZXo7IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Au b3JnCj4+Pj4gU3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBz Y2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Cj4+Pj4gSGkgQW5kcmVzLAo+Pj4+Cj4+Pj4gUGxlYXNl IHNlZSBpbmxpbmUgKGFzIFtTZXJndWVpXSkKPj4+Pgo+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+ PiBTZXJndWVpIFNhZ2Fsb3ZpdGNoCj4+Pj4KPj4+Pgo+Pj4+IEZyb206IEFuZHJlcyBSb2RyaWd1 ZXogPGFuZHJlc3JAdmFsdmVzb2Z0d2FyZS5jb20+Cj4+Pj4gU2VudDogRGVjZW1iZXIgMTYsIDIw MTYgODoyOSBQTQo+Pj4+IFRvOiBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4+PiBTdWJqZWN0OiBSRTogW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdo IHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4KPj4+PiBIaSBTZXJndWVpLAo+Pj4+ Cj4+Pj4gVGhhbmtzIGZvciB0aGUgZmVlZGJhY2suIEFuc3dlcnMgaW5saW5lIGFzIFtBUl0uCj4+ Pj4KPj4+PiBSZWdhcmRzLAo+Pj4+IEFuZHJlcwo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVpIFtT ZXJndWVpLlNhZ2Fsb3ZpdGNoQGFtZC5jb21dCj4+Pj4gU2VudDogRnJpZGF5LCBEZWNlbWJlciAx NiwgMjAxNiA4OjE1IFBNCj4+Pj4gVG86IEFuZHJlcyBSb2RyaWd1ZXo7IGFtZC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4+Pj4gU3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGln aCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Cj4+Pj4gQW5kcmVzLAo+Pj4+Cj4+ Pj4KPj4+PiBRdWljayBjb21tZW50czoKPj4+Pgo+Pj4+IDEpIFRvIG1pbmltaXplICJidWJibGVz IiwgZXRjLiB3ZSBuZWVkIHRvICJmb3JjZSIgQ1UgCj4+Pj4gYXNzaWdubWVudHMvYmluZGluZwo+ Pj4+IHRvIGhpZ2gtcHJpb3JpdHkgcXVldWUgIHdoZW4gaXQgd2lsbCBiZSBpbiB1c2UgYW5kICJm cmVlIiB0aGVtIGxhdGVyCj4+Pj4gKHdlICBkbyBub3Qgd2FudCBmb3JldmVyIHRha2UgQ1VzIGZy b20gZS5nLiBncmFwaGljIHRhc2sgdG8gZGVncmFkZQo+Pj4+IGdyYXBoaWNzCj4+Pj4gcGVyZm9y bWFuY2UpLgo+Pj4+Cj4+Pj4gT3RoZXJ3aXNlIHdlIGNvdWxkIGhhdmUgc2NlbmFyaW8gd2hlbiBs b25nIGdyYXBoaWNzIHRhc2sgKG9yCj4+Pj4gbG93LXByaW9yaXR5Cj4+Pj4gY29tcHV0ZSkgd2ls bCB0b29rIGFsbCAoZXh0cmEpIENVcyBhbmQgaGlnaC0tcHJpb3JpdHkgd2lsbCB3YWl0IGZvcgo+ Pj4+IG5lZWRlZCByZXNvdXJjZXMuCj4+Pj4gSXQgd2lsbCBub3QgYmUgdmlzaWJsZSBvbiAiTk9Q ICIgYnV0IG9ubHkgd2hlbiB5b3Ugc3VibWl0ICJyZWFsIgo+Pj4+IGNvbXB1dGUgdGFzawo+Pj4+ IHNvIEkgd291bGQgcmVjb21tZW5kICBub3QgdG8gdXNlICJOT1AiIHBhY2tldHMgYXQgYWxsIGZv ciB0ZXN0aW5nLgo+Pj4+Cj4+Pj4gSXQgKENVIGFzc2lnbm1lbnQpIGNvdWxkIGJlIHJlbGF0aXZl bHkgZWFzeSBkb25lIHdoZW4gZXZlcnl0aGluZyBpcwo+Pj4+IGdvaW5nIHZpYSBrZXJuZWwKPj4+ PiAoZS5nLiBhcyBwYXJ0IG9mIGZyYW1lIHN1Ym1pc3Npb24pIGJ1dCBJIG11c3QgYWRtaXQgdGhh dCBJIGFtIG5vdCBzdXJlCj4+Pj4gYWJvdXQgdGhlIGJlc3Qgd2F5IGZvciB1c2VyIGxldmVsIHN1 Ym1pc3Npb25zIChhbWRrZmQpLgo+Pj4+Cj4+Pj4gW0FSXSBJIHdhc24ndCBhd2FyZSBvZiB0aGlz IHBhcnQgb2YgdGhlIHByb2dyYW1taW5nIHNlcXVlbmNlLiBUaGFua3MKPj4+PiBmb3IgdGhlIGhl YWRzIHVwIQo+Pj4+IElzIHRoaXMgc2ltaWxhciB0byB0aGUgQ1UgbWFza2luZyBwcm9ncmFtbWlu Zz8KPj4+PiBbU2VyZ3VlaV0gWWVzLiBUbyBzaW1wbGlmeTogdGhlIHByb2JsZW0gaXMgdGhhdCAi c2NoZWR1bGVyIiB3aGVuCj4+Pj4gZGVjaWRpbmcgd2hpY2gKPj4+PiBxdWV1ZSB0byAgcnVuIHdp bGwgY2hlY2sgaWYgdGhlcmUgaXMgZW5vdWdoIHJlc291cmNlcyBhbmQgaWYgbm90IHRoZW4KPj4+ PiBpdCB3aWxsIGJlZ2luCj4+Pj4gdG8gY2hlY2sgb3RoZXIgcXVldWVzIHdpdGggbG93ZXIgcHJp b3JpdHkuCj4+Pj4KPj4+PiAyKSBJIHdvdWxkIHJlY29tbWVuZCB0byBkZWRpY2F0ZSB0aGUgd2hv bGUgcGlwZSB0byBoaWdoLXByaW9yaXR5Cj4+Pj4gcXVldWUgYW5kIGhhdmUKPj4+PiBub3RoaW5n IHRoZWlyIGV4Y2VwdCBpdC4KPj4+Pgo+Pj4+IFtBUl0gSSdtIGd1ZXNzaW5nIGluIHRoaXMgY29u dGV4dCB5b3UgbWVhbiBwaXBlID0gcXVldWU/IChhcyBvcHBvc2VkCj4+Pj4gdG8gdGhlIE1FQyBk ZWZpbml0aW9uCj4+Pj4gb2YgcGlwZSwgd2hpY2ggaXMgYSBncm91cGluZyBvZiBxdWV1ZXMpLiBJ IHNheSB0aGlzIGJlY2F1c2UgYW1kZ3B1Cj4+Pj4gb25seSBoYXMgYWNjZXNzIHRvIDEgcGlwZSwK Pj4+PiBhbmQgdGhlIHJlc3QgYXJlIHN0YXRpY2FsbHkgcGFydGl0aW9uZWQgZm9yIGFtZGtmZCB1 c2FnZS4KPj4+Pgo+Pj4+IFtTZXJndWVpXSBOby4gSSBtZWFuIHBpcGUgOi0pICBhcyBNRUMgZGVm aW5lIGl0LiAgQXMgZmFyIGFzIEkKPj4+PiB1bmRlcnN0YW5kIChieSBzaW1wbGlmeWluZykKPj4+ PiBzb21lIHNjaGVkdWxpbmcgaXMgcGVyIHBpcGUuICBJIGtub3cgYWJvdXQgdGhlIGN1cnJlbnQg YWxsb2NhdGlvbgo+Pj4+IHNjaGVtZSBidXQgSSBkbyBub3QgdGhpbmsKPj4+PiB0aGF0IGl0IGlz ICBpZGVhbC4gIEkgd291bGQgYXNzdW1lIHRoYXQgd2UgbmVlZCAgdG8gc3dpdGNoIHRvCj4+Pj4g ZHluYW1pY2FsIHBhcnRpdGlvbgo+Pj4+IG9mIHJlc291cmNlcyAgYmFzZWQgb24gdGhlIHdvcmts b2FkIG90aGVyd2lzZSB3ZSB3aWxsIGhhdmUgcmVzb3VyY2UKPj4+PiBjb25mbGljdAo+Pj4+IGJl dHdlZW4gVnVsa2FuIGNvbXB1dGUgYW5kICBPcGVuQ0wuCj4+Pj4KPj4+Pgo+Pj4+IEJUVzogV2hp Y2ggdXNlciBsZXZlbCBBUEkgZG8geW91IHdhbnQgdG8gdXNlIGZvciBjb21wdXRlOiBWdWxrYW4g b3IKPj4+PiBPcGVuQ0w/Cj4+Pj4KPj4+PiBbQVJdIFZ1bGthbgo+Pj4+Cj4+Pj4gW1Nlcmd1ZWld IFZ1bGthbiB3b3JrcyB2aWEgYW1kZ3B1IChrZXJuZWwgc3VibWlzc2lvbnMpIHNvIGFtZGtmZCB3 aWxsCj4+Pj4gYmUgbm90Cj4+Pj4gaW52b2x2ZWQuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGluIHRo ZSBjYXNlIG9mIFZSIHdlIHdpbGwgaGF2ZSBvbmUgbWFpbgo+Pj4+IGFwcGxpY2F0aW9uICgiY29u c29sZSIgbW9kZSg/KSkgc28gd2UgY291bGQgdGVtcG9yYWxseSAiaWdub3JlIgo+Pj4+IE9wZW5D TC9ST0NtIG5lZWRzIHdoZW4gVlIgaXMgcnVubmluZy4KPj4+Pgo+Pj4+PiAgd2Ugd2lsbCBub3Qg YmUgYWJsZSB0byBwcm92aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3aXRoIEdGWAo+Pj4+PiB3 b3Jsb2Fkcy4KPj4+PiBJIGFzc3VtZSB0aGF0IHlvdSBhcmUgdGFsa2luZyBhYm91dCBncmFwaGlj cz8gQW0gSSByaWdodD8KPj4+Pgo+Pj4+IFtBUl0gWWVhaCwgbXkgdW5kZXJzdGFuZGluZyBpcyB0 aGF0IHByZS1lbXB0aW5nIHRoZSBjdXJyZW50bHkgcnVubmluZwo+Pj4+IGdyYXBoaWNzIGpvYiBh bmQgc2NoZWR1bGluZyBpbgo+Pj4+IHNvbWV0aGluZyBlbHNlIHVzaW5nIG1pZC1idWZmZXIgcHJl LWVtcHRpb24gaGFzIHNvbWUgY2FzZXMgd2hlcmUgaXQKPj4+PiBkb2Vzbid0IHdvcmsgd2VsbC4g QnV0IGlmIHdpdGgKPj4+PiBwb2xhcmlzMTAgaXQgc3RhcnRzIHdvcmtpbmcgd2VsbCwgaXQgbWln aHQgYmUgYSBiZXR0ZXIgc29sdXRpb24gZm9yCj4+Pj4gdXMgKGJlY2F1c2UgdGhlIHdob2xlIHJl cHJvamVjdGlvbgo+Pj4+IHdvcmsgdXNlcyB0aGUgdnVsa2FuIGdyYXBoaWNzIHN0YWNrIGF0IHRo ZSBtb21lbnQsIGFuZCBwb3J0aW5nIGl0IHRvCj4+Pj4gY29tcHV0ZSBpcyBub3QgdHJpdmlhbCku Cj4+Pj4KPj4+PiBbU2VyZ3VlaV0gIFRoZSBwcm9ibGVtIHdpdGggcHJlLWVtcHRpb24gb2YgZ3Jh cGhpY3MgdGFzazogKGEpIGl0IG1heQo+Pj4+IHRha2UgdGltZSBzbwo+Pj4+IGxhdGVuY3kgbWF5 IHN1ZmZlciAoYikgdG8gcHJlZW1wdCB3ZSBuZWVkIHRvIGhhdmUgZGlmZmVyZW50ICJjb250ZXh0 Igo+Pj4+IC0gd2Ugd2FudAo+Pj4+IHRvIGd1YXJhbnRlZSB0aGF0IHN1Ym1pc3Npb25zIGZyb20g dGhlIHNhbWUgY29udGV4dCB3aWxsIGJlIGV4ZWN1dGVkCj4+Pj4gaW4gb3JkZXIuCj4+Pj4gQlRX OiAoYSkgRG8geW91IHdhbnQgICJwcmVlbXB0IiBhbmQgbGF0ZXIgcmVzdW1lIG9yIGRvIHlvdSB3 YW50Cj4+Pj4gInByZWVtcHQiIGFuZAo+Pj4+ICJjYW5jZWwvYWJvcnQiPyAgKGIpIFZ1bGthbiBp cyBnZW5lcmljIEFQSSBhbmQgY291bGQgYmUgdXNlZAo+Pj4+IGZvciBncmFwaGljcyBhcyB3ZWxs IGFzIGZvciBwbGFpbiBjb21wdXRlIHRhc2tzIAo+Pj4+IChWS19RVUVVRV9DT01QVVRFX0JJVCku Cj4+Pj4KPj4+Pgo+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+PiBTZXJndWVpIFNhZ2Fsb3ZpdGNo Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gRnJvbTogYW1kLWdmeCA8YW1kLWdmeC1ib3VuY2VzQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZz4gb24gYmVoYWxmIG9mCj4+Pj4gQW5kcmVzIFJvZHJpZ3VleiA8YW5k cmVzckB2YWx2ZXNvZnR3YXJlLmNvbT4KPj4+PiBTZW50OiBEZWNlbWJlciAxNiwgMjAxNiA2OjE1 IFBNCj4+Pj4gVG86IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gU3ViamVjdDog W1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+ Pj4KPj4+PiBIaSBFdmVyeW9uZSwKPj4+Pgo+Pj4+IFRoaXMgUkZDIGlzIGFsc28gYXZhaWxhYmxl IGFzIGEgZ2lzdCBoZXJlOgo+Pj4+IGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2xvc3Rnb2F0Lzcw MDA0MzJjZDY4NjQyNjVkYmMyYzNhYjkzMjA0MjQ5Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gW1JGQ10g TWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4gZ2lz dC5naXRodWIuY29tCj4+Pj4gW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVk dWxpbmcgaW4gYW1kZ3B1Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gW1JGQ10gTWVjaGFuaXNtIGZvciBo aWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4gZ2lzdC5naXRodWIuY29tCj4+ Pj4gW1JGQ10gTWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1 Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3Jp dHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+PiBnaXN0LmdpdGh1Yi5jb20KPj4+PiBbUkZDXSBN ZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pgo+Pj4+ Cj4+Pj4gV2UgYXJlIGludGVyZXN0ZWQgaW4gZmVlZGJhY2sgZm9yIGEgbWVjaGFuaXNtIHRvIGVm ZmVjdGl2ZWx5IHNjaGVkdWxlCj4+Pj4gaGlnaAo+Pj4+IHByaW9yaXR5IFZSIHJlcHJvamVjdGlv biB0YXNrcyAoYWxzbyByZWZlcnJlZCB0byBhcyB0aW1lLXdhcnBpbmcpIGZvcgo+Pj4+IFBvbGFy aXMxMAo+Pj4+IHJ1bm5pbmcgb24gdGhlIGFtZGdwdSBrZXJuZWwgZHJpdmVyLgo+Pj4+Cj4+Pj4g QnJpZWYgY29udGV4dDoKPj4+PiAtLS0tLS0tLS0tLS0tLQo+Pj4+Cj4+Pj4gVGhlIG1haW4gb2Jq ZWN0aXZlIG9mIHJlcHJvamVjdGlvbiBpcyB0byBhdm9pZCBtb3Rpb24gc2lja25lc3MgZm9yIFZS Cj4+Pj4gdXNlcnMgaW4KPj4+PiBzY2VuYXJpb3Mgd2hlcmUgdGhlIGdhbWUgb3IgYXBwbGljYXRp b24gd291bGQgZmFpbCB0byBmaW5pc2gKPj4+PiByZW5kZXJpbmcgYSBuZXcKPj4+PiBmcmFtZSBp biB0aW1lIGZvciB0aGUgbmV4dCBWQkxBTksuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgdXNlcidz IGhlYWQKPj4+PiBtb3ZlbWVudHMKPj4+PiBhcmUgbm90IHJlZmxlY3RlZCBvbiB0aGUgSGVhZCBN b3VudGVkIERpc3BsYXkgKEhNRCkgZm9yIHRoZSBkdXJhdGlvbgo+Pj4+IG9mIGFuCj4+Pj4gZXh0 cmEgZnJhbWUuIFRoaXMgZXh0ZW5kZWQgbWlzbWF0Y2ggYmV0d2VlbiB0aGUgaW5uZXIgZWFyIGFu ZCB0aGUKPj4+PiBleWVzIG1heQo+Pj4+IGNhdXNlIHRoZSB1c2VyIHRvIGV4cGVyaWVuY2UgbW90 aW9uIHNpY2tuZXNzLgo+Pj4+Cj4+Pj4gVGhlIFZSIGNvbXBvc2l0b3IgZGVhbHMgd2l0aCB0aGlz IHByb2JsZW0gYnkgZmFicmljYXRpbmcgYSBuZXcgZnJhbWUKPj4+PiB1c2luZyB0aGUKPj4+PiB1 c2VyJ3MgdXBkYXRlZCBoZWFkIHBvc2l0aW9uIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHByZXZp b3VzIGZyYW1lcy4KPj4+PiBUaGlzCj4+Pj4gYXZvaWRzIGEgcHJvbG9uZ2VkIG1pc21hdGNoIGJl dHdlZW4gdGhlIEhNRCBvdXRwdXQgYW5kIHRoZSBpbm5lciBlYXIuCj4+Pj4KPj4+PiBCZWNhdXNl IG9mIHRoZSBhZHZlcnNlIGVmZmVjdHMgb24gdGhlIHVzZXIsIHdlIHJlcXVpcmUgaGlnaAo+Pj4+ IGNvbmZpZGVuY2UgdGhhdCB0aGUKPj4+PiByZXByb2plY3Rpb24gdGFzayB3aWxsIGNvbXBsZXRl IGJlZm9yZSB0aGUgVkJMQU5LIGludGVydmFsLiBFdmVuIGlmCj4+Pj4gdGhlIEdGWCBwaXBlCj4+ Pj4gaXMgY3VycmVudGx5IGZ1bGwgb2Ygd29yayBmcm9tIHRoZSBnYW1lL2FwcGxpY2F0aW9uICh3 aGljaCBpcyBtb3N0Cj4+Pj4gbGlrZWx5IHRoZSBjYXNlKS4KPj4+Pgo+Pj4+IEZvciBtb3JlIGRl dGFpbHMgYW5kIGlsbHVzdHJhdGlvbnMsIHBsZWFzZSByZWZlciB0byB0aGUgZm9sbG93aW5nCj4+ Pj4gZG9jdW1lbnQ6Cj4+Pj4gaHR0cHM6Ly9jb21tdW5pdHkuYW1kLmNvbS9jb21tdW5pdHkvZ2Ft aW5nL2Jsb2cvMjAxNi8wMy8yOC9hc3luY2hyb25vdXMtc2hhZGVycy1ldm9sdmVkIAo+Pj4+Cj4+ Pj4KPj4+Pgo+Pj4+Cj4+Pj4gR2FtaW5nOiBBc3luY2hyb25vdXMgU2hhZGVycyBFdm9sdmVkIHwg Q29tbXVuaXR5Cj4+Pj4gY29tbXVuaXR5LmFtZC5jb20KPj4+PiBPbmUgb2YgdGhlIG1vc3QgZXhj aXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBHUFUgdGVjaG5vbG9neSBvdmVyIHRoZQo+Pj4+IHBh c3QgeWVhciBoYXMgYmVlbiB0aGUgYWRvcHRpb24gb2YgYXN5bmNocm9ub3VzIHNoYWRlcnMsIHdo aWNoIGNhbgo+Pj4+IG1ha2UgbW9yZSBlZmZpY2llbnQgdXNlIG9mIC4uLgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+IEdhbWluZzogQXN5bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENvbW11bml0eQo+ Pj4+IGNvbW11bml0eS5hbWQuY29tCj4+Pj4gT25lIG9mIHRoZSBtb3N0IGV4Y2l0aW5nIG5ldyBk ZXZlbG9wbWVudHMgaW4gR1BVIHRlY2hub2xvZ3kgb3ZlciB0aGUKPj4+PiBwYXN0IHllYXIgaGFz IGJlZW4gdGhlIGFkb3B0aW9uIG9mIGFzeW5jaHJvbm91cyBzaGFkZXJzLCB3aGljaCBjYW4KPj4+ PiBtYWtlIG1vcmUgZWZmaWNpZW50IHVzZSBvZiAuLi4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+PiBHYW1p bmc6IEFzeW5jaHJvbm91cyBTaGFkZXJzIEV2b2x2ZWQgfCBDb21tdW5pdHkKPj4+PiBjb21tdW5p dHkuYW1kLmNvbQo+Pj4+IE9uZSBvZiB0aGUgbW9zdCBleGNpdGluZyBuZXcgZGV2ZWxvcG1lbnRz IGluIEdQVSB0ZWNobm9sb2d5IG92ZXIgdGhlCj4+Pj4gcGFzdCB5ZWFyIGhhcyBiZWVuIHRoZSBh ZG9wdGlvbiBvZiBhc3luY2hyb25vdXMgc2hhZGVycywgd2hpY2ggY2FuCj4+Pj4gbWFrZSBtb3Jl IGVmZmljaWVudCB1c2Ugb2YgLi4uCj4+Pj4KPj4+Pgo+Pj4+IFJlcXVpcmVtZW50czoKPj4+PiAt LS0tLS0tLS0tLS0tCj4+Pj4KPj4+PiBUaGUgbWVjaGFuaXNtIG11c3QgZXhwb3NlIHRoZSBmb2xs b3dpbmcgZnVuY3Rpb25haWxpdHk6Cj4+Pj4KPj4+PiAgICAgKiBKb2Igcm91bmQgdHJpcCB0aW1l IG11c3QgYmUgcHJlZGljdGFibGUsIGZyb20gc3VibWlzc2lvbiB0bwo+Pj4+IGZlbmNlIHNpZ25h bAo+Pj4+Cj4+Pj4gICAgICogVGhlIG1lY2hhbmlzbSBtdXN0IHN1cHBvcnQgY29tcHV0ZSB3b3Jr bG9hZHMuCj4+Pj4KPj4+PiBHb2FsczoKPj4+PiAtLS0tLS0KPj4+Pgo+Pj4+ICAgICAqIFRoZSBt ZWNoYW5pc20gc2hvdWxkIHByb3ZpZGUgbG93IHN1Ym1pc3Npb24gbGF0ZW5jaWVzCj4+Pj4KPj4+ PiBUZXN0OiBzdWJtaXR0aW5nIGEgTk9QIHBhY2tldCB0aHJvdWdoIHRoZSBtZWNoYW5pc20gb24g YnVzeSBoYXJkd2FyZQo+Pj4+IHNob3VsZAo+Pj4+IGJlIGVxdWl2YWxlbnQgdG8gc3VibWl0dGlu ZyBhIE5PUCBvbiBpZGxlIGhhcmR3YXJlLgo+Pj4+Cj4+Pj4gTmljZSB0byBoYXZlOgo+Pj4+IC0t LS0tLS0tLS0tLS0KPj4+Pgo+Pj4+ICAgICAqIFRoZSBtZWNoYW5pc20gc2hvdWxkIGFsc28gc3Vw cG9ydCBHRlggd29ya2xvYWRzLgo+Pj4+Cj4+Pj4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHdp dGggdGhlIGN1cnJlbnQgaGFyZHdhcmUgY2FwYWJpbGl0aWVzIGluCj4+Pj4gUG9sYXJpczEwIHdl Cj4+Pj4gd2lsbCBub3QgYmUgYWJsZSB0byBwcm92aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3 aXRoIEdGWCB3b3Jsb2Fkcy4KPj4+Pgo+Pj4+IEJ1dCBJIHdvdWxkIGxvdmUgdG8gaGVhciBvdGhl cndpc2UuIFNvIGlmIGFueW9uZSBoYXMgYW4gaWRlYSwKPj4+PiBhcHByb2FjaCBvcgo+Pj4+IHN1 Z2dlc3Rpb24gdGhhdCB3aWxsIGFsc28gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBHRlggcmluZywg cGxlYXNlIGxldAo+Pj4+IHVzIGtub3cKPj4+PiBhYm91dCBpdC4KPj4+Pgo+Pj4+ICAgICAqIFRo ZSBhYm92ZSBndWFyYW50ZWVzIHNob3VsZCBhbHNvIGJlIHJlc3BlY3RlZCBieSBhbWRrZmQgCj4+ Pj4gd29ya2xvYWRzCj4+Pj4KPj4+PiBXb3VsZCBiZSBnb29kIHRvIGhhdmUgZm9yIGNvbnNpc3Rl bmN5LCBidXQgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSBhcwo+Pj4+IHVzZXJzIHJ1bm5pbmcKPj4+ PiBnYW1lcyBhcmUgbm90IHRyYWRpdGlvbmFsbHkgcnVubmluZyBIUEMgd29ya2xvYWRzIGluIHRo ZSBiYWNrZ3JvdW5kLgo+Pj4+Cj4+Pj4gUHJvcG9zZWQgYXBwcm9hY2g6Cj4+Pj4gLS0tLS0tLS0t LS0tLS0tLS0tCj4+Pj4KPj4+PiBTaW1pbGFyIHRvIHRoZSB3aW5kb3dzIGRyaXZlciwgd2UgY291 bGQgZXhwb3NlIGEgaGlnaCBwcmlvcml0eQo+Pj4+IGNvbXB1dGUgcXVldWUgdG8KPj4+PiB1c2Vy c3BhY2UuCj4+Pj4KPj4+PiBTdWJtaXNzaW9ucyB0byB0aGlzIGNvbXB1dGUgcXVldWUgd2lsbCBi ZSBzY2hlZHVsZWQgd2l0aCBoaWdoCj4+Pj4gcHJpb3JpdHksIGFuZCBtYXkKPj4+PiBhY3F1aXJl IGhhcmR3YXJlIHJlc291cmNlcyBwcmV2aW91c2x5IGluIHVzZSBieSBvdGhlciBxdWV1ZXMuCj4+ Pj4KPj4+PiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSB0YWtpbmcgYWR2YW50YWdlIG9mIHRoZSAn cHJpb3JpdHknIGZpZWxkIGluCj4+Pj4gdGhlIEhRRHMKPj4+PiBhbmQgY291bGQgYmUgcHJvZ3Jh bW1lZCBieSBhbWRncHUgb3IgdGhlIGFtZGdwdSBzY2hlZHVsZXIuIFRoZSAKPj4+PiByZWxldmFu dAo+Pj4+IHJlZ2lzdGVyIGZpZWxkcyBhcmU6Cj4+Pj4gICAgICAgICAqIG1tQ1BfSFFEX1BJUEVf UFJJT1JJVFkKPj4+PiAgICAgICAgICogbW1DUF9IUURfUVVFVUVfUFJJT1JJVFkKPj4+Pgo+Pj4+ IEltcGxlbWVudGF0aW9uIGFwcHJvYWNoIDEgLSBzdGF0aWMgcGFydGl0aW9uaW5nOgo+Pj4+IC0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Cj4+Pj4g VGhlIGFtZGdwdSBkcml2ZXIgY3VycmVudGx5IGNvbnRyb2xzIDggY29tcHV0ZSBxdWV1ZXMgZnJv bSBwaXBlMC4gCj4+Pj4gV2UgY2FuCj4+Pj4gc3RhdGljYWxseSBwYXJ0aXRpb24gdGhlc2UgYXMg Zm9sbG93czoKPj4+PiAgICAgICAgICogN3ggcmVndWxhcgo+Pj4+ICAgICAgICAgKiAxeCBoaWdo IHByaW9yaXR5Cj4+Pj4KPj4+PiBUaGUgcmVsZXZhbnQgcHJpb3JpdGllcyBjYW4gYmUgc2V0IHNv IHRoYXQgc3VibWlzc2lvbnMgdG8gdGhlIGhpZ2gKPj4+PiBwcmlvcml0eQo+Pj4+IHJpbmcgd2ls bCBzdGFydmUgdGhlIG90aGVyIGNvbXB1dGUgcmluZ3MgYW5kIHRoZSBHRlggcmluZy4KPj4+Pgo+ Pj4+IFRoZSBhbWRncHUgc2NoZWR1bGVyIHdpbGwgb25seSBwbGFjZSBqb2JzIGludG8gdGhlIGhp Z2ggcHJpb3JpdHkKPj4+PiByaW5ncyBpZiB0aGUKPj4+PiBjb250ZXh0IGlzIG1hcmtlZCBhcyBo aWdoIHByaW9yaXR5LiBBbmQgYSBjb3JyZXNwb25kaW5nIHByaW9yaXR5Cj4+Pj4gc2hvdWxkIGJl Cj4+Pj4gYWRkZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIGluZm9ybWF0aW9uOgo+Pj4+ICAgICAg KiBBTURfU0NIRURfUFJJT1JJVFlfS0VSTkVMCj4+Pj4gICAgICAqIC0+IEFNRF9TQ0hFRF9QUklP UklUWV9ISUdICj4+Pj4gICAgICAqIEFNRF9TQ0hFRF9QUklPUklUWV9OT1JNQUwKPj4+Pgo+Pj4+ IFRoZSB1c2VyIHdpbGwgcmVxdWVzdCBhIGhpZ2ggcHJpb3JpdHkgY29udGV4dCBieSBzZXR0aW5n IGFuCj4+Pj4gYXBwcm9wcmlhdGUgZmxhZwo+Pj4+IGluIGRybV9hbWRncHVfY3R4X2luIChBTURH UFVfQ1RYX0hJR0hfUFJJT1JJVFkgb3Igc2ltaWxhcik6Cj4+Pj4gaHR0cHM6Ly9naXRodWIuY29t L3RvcnZhbGRzL2xpbnV4L2Jsb2IvbWFzdGVyL2luY2x1ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5o I0wxNjMgCj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gVGhlIHNldHRpbmcgaXMgaW4gYSBwZXIgY29udGV4 dCBsZXZlbCBzbyB0aGF0IHdlIGNhbjoKPj4+PiAgICAgKiBNYWludGFpbiBhIGNvbnNpc3RlbnQg RklGTyBvcmRlcmluZyBvZiBhbGwgc3VibWlzc2lvbnMgdG8gYQo+Pj4+IGNvbnRleHQKPj4+PiAg ICAgKiBDcmVhdGUgaGlnaCBwcmlvcml0eSBhbmQgbm9uLWhpZ2ggcHJpb3JpdHkgY29udGV4dHMg aW4gdGhlIHNhbWUKPj4+PiBwcm9jZXNzCj4+Pj4KPj4+PiBJbXBsZW1lbnRhdGlvbiBhcHByb2Fj aCAyIC0gZHluYW1pYyBwcmlvcml0eSBwcm9ncmFtbWluZzoKPj4+PiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pgo+Pj4+IFNpbWls YXIgdG8gdGhlIGFib3ZlLCBidXQgaW5zdGVhZCBvZiBwcm9ncmFtbWluZyB0aGUgcHJpb3JpdGll cyBhbmQKPj4+PiBhbWRncHVfaW5pdCgpIHRpbWUsIHRoZSBTVyBzY2hlZHVsZXIgd2lsbCByZXBy b2dyYW0gdGhlIHF1ZXVlIAo+Pj4+IHByaW9yaXRpZXMKPj4+PiBkeW5hbWljYWxseSB3aGVuIHNj aGVkdWxpbmcgYSB0YXNrLgo+Pj4+Cj4+Pj4gVGhpcyB3b3VsZCBpbnZvbHZlIGhhdmluZyBhIGhh cmR3YXJlIHNwZWNpZmljIGNhbGxiYWNrIGZyb20gdGhlCj4+Pj4gc2NoZWR1bGVyIHRvCj4+Pj4g c2V0IHRoZSBhcHByb3ByaWF0ZSBxdWV1ZSBwcmlvcml0eTogc2V0X3ByaW9yaXR5KGludCByaW5n LCBpbnQgaW5kZXgsCj4+Pj4gaW50IHByaW9yaXR5KQo+Pj4+Cj4+Pj4gRHVyaW5nIHRoaXMgY2Fs bGJhY2sgd2Ugd291bGQgaGF2ZSB0byBncmFiIHRoZSBTUkJNIG11dGV4IHRvIHBlcmZvcm0KPj4+ PiB0aGUgYXBwcm9wcmlhdGUKPj4+PiBIVyBwcm9ncmFtbWluZywgYW5kIEknbSBub3QgcmVhbGx5 IHN1cmUgaWYgdGhhdCBpcyBzb21ldGhpbmcgd2UKPj4+PiBzaG91bGQgYmUgZG9pbmcgZnJvbQo+ Pj4+IHRoZSBzY2hlZHVsZXIuCj4+Pj4KPj4+PiBPbiB0aGUgcG9zaXRpdmUgc2lkZSwgdGhpcyBh cHByb2FjaCB3b3VsZCBhbGxvdyB1cyB0byBwcm9ncmFtIGEgCj4+Pj4gcmFuZ2Ugb2YKPj4+PiBw cmlvcml0aWVzIGZvciBqb2JzIGluc3RlYWQgb2YgYSBzaW5nbGUgImhpZ2ggcHJpb3JpdHkiIHZh bHVlIiwKPj4+PiBhY2hpZXZpbmcKPj4+PiBzb21ldGhpbmcgc2ltaWxhciB0byB0aGUgbmljZW5l c3MgQVBJIGF2YWlsYWJsZSBmb3IgQ1BVIHNjaGVkdWxpbmcuCj4+Pj4KPj4+PiBJJ20gbm90IHN1 cmUgaWYgdGhpcyBmbGV4aWJpbGl0eSBpcyBzb21ldGhpbmcgdGhhdCB3ZSB3b3VsZCBuZWVkIGZv cgo+Pj4+IG91ciB1c2UKPj4+PiBjYXNlLCBidXQgaXQgbWlnaHQgYmUgdXNlZnVsIGluIG90aGVy IHNjZW5hcmlvcyAobXVsdGlwbGUgdXNlcnMKPj4+PiBzaGFyaW5nIGNvbXB1dGUKPj4+PiB0aW1l IG9uIGEgc2VydmVyKS4KPj4+Pgo+Pj4+IFRoaXMgYXBwcm9hY2ggd291bGQgcmVxdWlyZSBhIG5l dyBpbnQgZmllbGQgaW4gZHJtX2FtZGdwdV9jdHhfaW4sIG9yCj4+Pj4gcmVwdXJwb3NpbmcKPj4+ PiBvZiB0aGUgZmxhZ3MgZmllbGQuCj4+Pj4KPj4+PiBLbm93biBjdXJyZW50IG9ic3RhY2xlczoK Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pgo+Pj4+IFRoZSBTUSBpcyBjdXJyZW50 bHkgcHJvZ3JhbW1lZCB0byBkaXNyZWdhcmQgdGhlIEhRRCBwcmlvcml0aWVzLCBhbmQKPj4+PiBp bnN0ZWFkIGl0IHBpY2tzCj4+Pj4gam9icyBhdCByYW5kb20uIFNldHRpbmdzIGZyb20gdGhlIHNo YWRlciBpdHNlbGYgYXJlIGFsc28gZGlzcmVnYXJkZWQKPj4+PiBhcyB0aGlzIGlzCj4+Pj4gY29u c2lkZXJlZCBhIHByaXZpbGVnZWQgZmllbGQuCj4+Pj4KPj4+PiBFZmZlY3RpdmVseSB3ZSBjYW4g Z2V0IG91ciBjb21wdXRlIHdhdmVmcm9udCBsYXVuY2hlZCBBU0FQLCBidXQgd2UKPj4+PiBtaWdo dCBub3QgZ2V0IHRoZQo+Pj4+IHRpbWUgd2UgbmVlZCBvbiB0aGUgU1EuCj4+Pj4KPj4+PiBUaGUg Y3VycmVudCBwcm9ncmFtbWluZyB3b3VsZCBoYXZlIHRvIGJlIGNoYW5nZWQgdG8gYWxsb3cgcHJp b3JpdHkKPj4+PiBwcm9wYWdhdGlvbgo+Pj4+IGZyb20gdGhlIEhRRCBpbnRvIHRoZSBTUS4KPj4+ Pgo+Pj4+IEdlbmVyaWMgYXBwcm9hY2ggZm9yIGFsbCBIVyBJUHM6Cj4+Pj4gLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pgo+Pj4+IEZvciBjb25zaXN0ZW5jeSBwdXJwb3Nlcywg dGhlIGhpZ2ggcHJpb3JpdHkgY29udGV4dCBjYW4gYmUgZW5hYmxlZAo+Pj4+IGZvciBhbGwgSFcg SVBzCj4+Pj4gd2l0aCBzdXBwb3J0IG9mIHRoZSBTVyBzY2hlZHVsZXIuIFRoaXMgd2lsbCBmdW5j dGlvbiBzaW1pbGFybHkgdG8gdGhlCj4+Pj4gY3VycmVudAo+Pj4+IEFNRF9TQ0hFRF9QUklPUklU WV9LRVJORUwgcHJpb3JpdHksIHdoZXJlIHRoZSBqb2IgY2FuIGp1bXAgYWhlYWQgb2YKPj4+PiBh bnl0aGluZyBub3QKPj4+PiBjb21taXRlZCB0byB0aGUgSFcgcXVldWUuCj4+Pj4KPj4+PiBUaGUg YmVuZWZpdHMgb2YgcmVxdWVzdGluZyBhIGhpZ2ggcHJpb3JpdHkgY29udGV4dCBmb3IgYSBub24t Y29tcHV0ZQo+Pj4+IHF1ZXVlIHdpbGwKPj4+PiBiZSBsZXNzZXIgKGUuZy4gdXAgdG8gMTBzIG9m IHdhaXQgdGltZSBpZiBhIEdGWCBjb21tYW5kIGlzIHN0dWNrIGluCj4+Pj4gZnJvbnQgb2YKPj4+ PiB5b3UpLCBidXQgaGF2aW5nIHRoZSBBUEkgaW4gcGxhY2Ugd2lsbCBhbGxvdyB1cyB0byBlYXNp bHkgaW1wcm92ZSB0aGUKPj4+PiBpbXBsZW1lbnRhdGlvbgo+Pj4+IGluIHRoZSBmdXR1cmUgYXMg bmV3IGZlYXR1cmVzIGJlY29tZSBhdmFpbGFibGUgaW4gbmV3IGhhcmR3YXJlLgo+Pj4+Cj4+Pj4g RnV0dXJlIHN0ZXBzOgo+Pj4+IC0tLS0tLS0tLS0tLS0KPj4+Pgo+Pj4+IE9uY2Ugd2UgaGF2ZSBh biBhcHByb2FjaCBzZXR0bGVkLCBJIGNhbiB0YWtlIGNhcmUgb2YgdGhlIAo+Pj4+IGltcGxlbWVu dGF0aW9uLgo+Pj4+Cj4+Pj4gQWxzbywgb25jZSB0aGUgaW50ZXJmYWNlIGlzIG1vc3RseSBkZWNp ZGVkLCB3ZSBjYW4gc3RhcnQgdGhpbmtpbmcgCj4+Pj4gYWJvdXQKPj4+PiBleHBvc2luZyB0aGUg aGlnaCBwcmlvcml0eSBxdWV1ZSB0aHJvdWdoIHJhZHYuCj4+Pj4KPj4+PiBSZXF1ZXN0IGZvciBm ZWVkYmFjazoKPj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pgo+Pj4+IFdlIGFyZW4ndCBt YXJyaWVkIHRvIGFueSBvZiB0aGUgYXBwcm9hY2hlcyBvdXRsaW5lZCBhYm92ZS4gT3VyIGdvYWwK Pj4+PiBpcyB0bwo+Pj4+IG9idGFpbiBhIG1lY2hhbmlzbSB0aGF0IHdpbGwgYWxsb3cgdXMgdG8g Y29tcGxldGUgdGhlIHJlcHJvamVjdGlvbgo+Pj4+IGpvYiB3aXRoaW4gYQo+Pj4+IHByZWRpY3Rh YmxlIGFtb3VudCBvZiB0aW1lLiBTbyBpZiBhbnlvbmUgYW55b25lIGhhcyBhbnkgc3VnZ2VzdGlv bnMgCj4+Pj4gZm9yCj4+Pj4gaW1wcm92ZW1lbnRzIG9yIGFsdGVybmF0aXZlIHN0cmF0ZWdpZXMg d2UgYXJlIG1vcmUgdGhhbiBoYXBweSB0byBoZWFyCj4+Pj4gdGhlbS4KPj4+Pgo+Pj4+IElmIGFu eSBvZiB0aGUgdGVjaG5pY2FsIGluZm9ybWF0aW9uIGFib3ZlIGlzIGFsc28gaW5jb3JyZWN0LCBm ZWVsCj4+Pj4gZnJlZSB0byBwb2ludAo+Pj4+IG91dCBteSBtaXN1bmRlcnN0YW5kaW5ncy4KPj4+ Pgo+Pj4+IExvb2tpbmcgZm9yd2FyZCB0byBoZWFyaW5nIGZyb20geW91Lgo+Pj4+Cj4+Pj4gUmVn YXJkcywKPj4+PiBBbmRyZXMKPj4+Pgo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+PiBhbWQtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pj4+Cj4+Pj4KPj4+PiBhbWQtZ2Z4IEluZm8gUGFn ZSAtIGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+ IFRvIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBwcmlvciBwb3N0aW5ncyB0byB0aGUgbGlzdCwgdmlz aXQgdGhlCj4+Pj4gYW1kLWdmeCBBcmNoaXZlcy4gVXNpbmcgYW1kLWdmeDogVG8gcG9zdCBhIG1l c3NhZ2UgdG8gYWxsIHRoZSBsaXN0Cj4+Pj4gbWVtYmVycywgc2VuZCBlbWFpbCAuLi4KPj4+Pgo+ Pj4+Cj4+Pj4KPj4+PiBhbWQtZ2Z4IEluZm8gUGFnZSAtIGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ Pj4+IGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IFRvIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBw cmlvciBwb3N0aW5ncyB0byB0aGUgbGlzdCwgdmlzaXQgdGhlCj4+Pj4gYW1kLWdmeCBBcmNoaXZl cy4gVXNpbmcgYW1kLWdmeDogVG8gcG9zdCBhIG1lc3NhZ2UgdG8gYWxsIHRoZSBsaXN0Cj4+Pj4g bWVtYmVycywgc2VuZCBlbWFpbCAuLi4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4KPj4+ Pgo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+Cj4+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+IGFtZC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4KPj4+Cj4+PiBfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QKPj4+ IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4KPgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==