From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH libdrm 5/5] [libdrm] add syncobj timeline tests Date: Tue, 6 Nov 2018 11:25:58 +0100 Message-ID: <20181106102558.GL21967@phenom.ffwll.local> References: <20181102082649.4542-1-david1.zhou@amd.com> <20181102082649.4542-5-david1.zhou@amd.com> <20181105093904.GI21967@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: 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: "Zhou, David(ChunMing)" Cc: "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Daniel Vetter T24gTW9uLCBOb3YgMDUsIDIwMTggYXQgMTA6MDc6MjRBTSArMDAwMCwgWmhvdSwgRGF2aWQoQ2h1 bk1pbmcpIHdyb3RlOgo+IAo+IAo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZy b206IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+IE9uIEJlaGFsZiBPZiBE YW5pZWwgVmV0dGVyCj4gPiBTZW50OiBNb25kYXksIE5vdmVtYmVyIDA1LCAyMDE4IDU6MzkgUE0K PiA+IFRvOiBaaG91LCBEYXZpZChDaHVuTWluZykgPERhdmlkMS5aaG91QGFtZC5jb20+Cj4gPiBD YzogZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgYW1kLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggbGliZHJtIDUvNV0gW2xpYmRybV0gYWRk IHN5bmNvYmogdGltZWxpbmUgdGVzdHMKPiA+IAo+ID4gT24gRnJpLCBOb3YgMDIsIDIwMTggYXQg MDQ6MjY6NDlQTSArMDgwMCwgQ2h1bm1pbmcgWmhvdSB3cm90ZToKPiA+ID4gU2lnbmVkLW9mZi1i eTogQ2h1bm1pbmcgWmhvdSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICB0 ZXN0cy9hbWRncHUvTWFrZWZpbGUuYW0gICAgIHwgICAzICstCj4gPiA+ICB0ZXN0cy9hbWRncHUv YW1kZ3B1X3Rlc3QuYyAgIHwgIDEyICsrCj4gPiA+ICB0ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3Qu aCAgIHwgIDIxICsrKwo+ID4gPiAgdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkICAgICB8ICAgMiAr LQo+ID4gPiAgdGVzdHMvYW1kZ3B1L3N5bmNvYmpfdGVzdHMuYyB8IDI2Mwo+ID4gPiArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gPiAgNSBmaWxlcyBjaGFuZ2VkLCAyOTkg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkgIGNyZWF0ZSBtb2RlCj4gPiA+IDEwMDY0NCB0 ZXN0cy9hbWRncHUvc3luY29ial90ZXN0cy5jCj4gPiAKPiA+IFRoaXMgdGVzdGNhc2Ugc2VlbXMg dmVyeSBtdWNoIGEgaGFwcHkgc3VuZGF5IHNjZW5hcmlvLCBubyB0ZXN0cyBhdCBhbGwgZm9yCj4g PiBjb3JuZXIgY2FzZXMsIGludmFsaWQgaW5wdXQsIGFuZCBnZW5lcmFsbHkgdHJ5aW5nIHRvIHB1 bGwgdGhlIGtlcm5lbCBvdmVyIHRoZQo+ID4gdGFibGUuIEkgdGhpbmsgd2UgbmVlZCBhIGxvdCBt b3JlLCBhbmQgcHJlZmVycmFibHkgaW4gaWd0LCB3aGVyZSB3ZSBhbHJlYWR5Cj4gPiBoYXZlIGEg Z29vZCBiYXNlbGluZSBvZiBkcm1fc3luY29iaiB0ZXN0cy4KPiBIaSBEYW5pZWwsCj4gCj4gT0ss IGlmIHlvdSBpbnNpc3Qgb24gdGhhdCwgSSB3b3VsZCBzd2l0Y2ggdG8gaW1wbGVtZW50IGEgdGlt ZWxpbmUgdGVzdCBvbiBJR1QuCj4gQnR3LCAgdGltZWxpbmUgc3luY29iaiB0ZXN0IG5lZWRzIGJh c2VkIG9uIGNvbW1hbmQgc3VibWlzc2lvbiwgQ2FuIEkgd3JpdGUgaXQgd2l0aCBhbWRncHUgZHJp dmVyIG9uIElHVD8KPiBBbmQgYWZ0ZXIgdGhhdCwgd2hlcmUgc2hvdWxkIEkgc2VuZCBpZ3QgcGF0 Y2ggdG8gcmV2aWV3PyAKCldlIGhhdmUgdXNlZCB2Z2VtIGFuZCBzd19mZW5jZSBpbiB0aGUgcGFz dCB0byBiZSBhYmxlIHRvIGhhdmUgdmVyeQpjb250cm9sbGVkIHRpbWVsaW5lcy4gVGhpcyBhbGxv d3MgdXMgdG8gd3JpdGUgZ2VuZXJpYyB0ZXN0Y2FzZXMuIFRoZQpjdXJyZW50IGlndCB0ZXN0cyBm b3Igc3luY29iaiBhcmUgbmVpdGhlciBpOTE1IG5vciBhbWRncHUgc3BlY2lmaWMuCgpZb3UgbWln aHQgc3RpbGwgd2FudCB0byBoYXZlIGFuIGFtZ3B1IHRlc3Qgb24gdG9wLCB3ZSBkbyBoYXZlIHNv bWUgaTkxNQp0ZXN0cyBmb3IgdGhlIGk5MTUgZXhlY2J1ZiBpbnRlZ3JhdGlvbiBvZiBzeW5jb2Jq IG9mIGNvdXJzZS4gQnV0IHRoYXQncyBhCmZhaXJseSBtaW5vciBwYXJ0IG9mIHRoZSBzeW5jb2Jq IGFwaS4KCkZvciBjb250cmlidXRpbmcgdG8gaWd0LCBzZWUgaHR0cHM6Ly9naXRsYWIuZnJlZWRl c2t0b3Aub3JnL2RybS9pZ3QtZ3B1LXRvb2xzL2Jsb2IvbWFzdGVyL0NPTlRSSUJVVElORy5tZAoK PiBMYXN0LCBpZiB5b3UgYXJlIGZyZWUsIENvdWxkIHlvdSBhbHNvIHRha2UgYSBsb29rIHRoZSB1 L2sgaW50ZXJmYWNlIG9mIHRpbWVsaW5lIHN5bmNvYmo/CgpMb29rZWQgcmVhc29uYWJsZSwgdGhl IGRldGFpbGVkIHF1ZXN0aW9ucyBuZWVkIHVzZXJzcGFjZSAoYW5kIHNvIHByb2JhYmx5CmJldHRl ciBhbnN3ZXJlZCBieSBzb21lb25lIHdobyBoYXMgbWVzYS92ay9nbCBjbHVlKS4gSSBjYW4gaGVs cCByZXZpZXcKY29ybmVyIGNhc2VzIG9mIHRoZSB1YXBpLCBidXQgdGhhdCdzIG11Y2ggZWFzaWVy IHRvIGRvIG9uY2Ugd2UgaGF2ZQp0ZXN0LWNhc2VzIHRvIGV4ZXJjaXNlIHRoZW0gYWxsLiBTZWUg ZXhpc3RpbmcgaWd0cyBmb3IgYW4gaWRlYSBvZiB3aGF0CmV4aGF1c3RpdmUgdGVzdGluZyBvZiB1 YXBpIGNvcm5lciBjYXNlcyBsb29rcyBsaWtlLgotRGFuaWVsCgoKPiAKPiAKPiBUaGFua3MsCj4g RGF2aWQgWmhvdQo+ID4gLURhbmllbAo+ID4gCj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS90ZXN0 cy9hbWRncHUvTWFrZWZpbGUuYW0gYi90ZXN0cy9hbWRncHUvTWFrZWZpbGUuYW0gaW5kZXgKPiA+ ID4gNDQ3ZmYyMTcuLmQzZmJlMmJiIDEwMDY0NAo+ID4gPiAtLS0gYS90ZXN0cy9hbWRncHUvTWFr ZWZpbGUuYW0KPiA+ID4gKysrIGIvdGVzdHMvYW1kZ3B1L01ha2VmaWxlLmFtCj4gPiA+IEBAIC0z Myw0ICszMyw1IEBAIGFtZGdwdV90ZXN0X1NPVVJDRVMgPSBcCj4gPiA+ICAJdmNuX3Rlc3RzLmMg XAo+ID4gPiAgCXV2ZV9pYi5oIFwKPiA+ID4gIAlkZWFkbG9ja190ZXN0cy5jIFwKPiA+ID4gLQl2 bV90ZXN0cy5jCj4gPiA+ICsJdm1fdGVzdHMuYyBcCj4gPiA+ICsJc3luY29ial90ZXN0cy5jCj4g PiA+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRncHUvYW1kZ3B1X3Rlc3QuYyBiL3Rlc3RzL2FtZGdw dS9hbWRncHVfdGVzdC5jCj4gPiA+IGluZGV4IDk2ZmNkNjg3Li5jZGNiOTNhNSAxMDA2NDQKPiA+ ID4gLS0tIGEvdGVzdHMvYW1kZ3B1L2FtZGdwdV90ZXN0LmMKPiA+ID4gKysrIGIvdGVzdHMvYW1k Z3B1L2FtZGdwdV90ZXN0LmMKPiA+ID4gQEAgLTU2LDYgKzU2LDcgQEAKPiA+ID4gICNkZWZpbmUg VVZEX0VOQ19URVNUU19TVFIgIlVWRCBFTkMgVGVzdHMiCj4gPiA+ICAjZGVmaW5lIERFQURMT0NL X1RFU1RTX1NUUiAiRGVhZGxvY2sgVGVzdHMiCj4gPiA+ICAjZGVmaW5lIFZNX1RFU1RTX1NUUiAi Vk0gVGVzdHMiCj4gPiA+ICsjZGVmaW5lIFNZTkNPQkpfVElNRUxJTkVfVEVTVFNfU1RSICJTWU5D T0JKIFRJTUVMSU5FIFRlc3RzIgo+ID4gPgo+ID4gPiAgLyoqCj4gPiA+ICAgKiAgT3BlbiBoYW5k bGVzIGZvciBhbWRncHUgZGV2aWNlcwo+ID4gPiBAQCAtMTE2LDYgKzExNywxMiBAQCBzdGF0aWMg Q1VfU3VpdGVJbmZvIHN1aXRlc1tdID0gewo+ID4gPiAgCQkucENsZWFudXBGdW5jID0gc3VpdGVf dm1fdGVzdHNfY2xlYW4sCj4gPiA+ICAJCS5wVGVzdHMgPSB2bV90ZXN0cywKPiA+ID4gIAl9LAo+ ID4gPiArCXsKPiA+ID4gKwkJLnBOYW1lID0gU1lOQ09CSl9USU1FTElORV9URVNUU19TVFIsCj4g PiA+ICsJCS5wSW5pdEZ1bmMgPSBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2luaXQsCj4g PiA+ICsJCS5wQ2xlYW51cEZ1bmMgPSBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2NsZWFu LAo+ID4gPiArCQkucFRlc3RzID0gc3luY29ial90aW1lbGluZV90ZXN0cywKPiA+ID4gKwl9LAo+ ID4gPgo+ID4gPiAgCUNVX1NVSVRFX0lORk9fTlVMTCwKPiA+ID4gIH07Cj4gPiA+IEBAIC0xNjUs NiArMTcyLDExIEBAIHN0YXRpYyBTdWl0ZXNfQWN0aXZlX1N0YXR1cyBzdWl0ZXNfYWN0aXZlX3N0 YXRbXSA9IHsKPiA+ID4gIAkJCS5wTmFtZSA9IFZNX1RFU1RTX1NUUiwKPiA+ID4gIAkJCS5wQWN0 aXZlID0gc3VpdGVfdm1fdGVzdHNfZW5hYmxlLAo+ID4gPiAgCQl9LAo+ID4gPiArCQl7Cj4gPiA+ ICsJCQkucE5hbWUgPSBTWU5DT0JKX1RJTUVMSU5FX1RFU1RTX1NUUiwKPiA+ID4gKwkJCS5wQWN0 aXZlID0gc3VpdGVfc3luY29ial90aW1lbGluZV90ZXN0c19lbmFibGUsCj4gPiA+ICsJCX0sCj4g PiA+ICsKPiA+ID4gIH07Cj4gPiA+Cj4gPiA+Cj4gPiA+IGRpZmYgLS1naXQgYS90ZXN0cy9hbWRn cHUvYW1kZ3B1X3Rlc3QuaCBiL3Rlc3RzL2FtZGdwdS9hbWRncHVfdGVzdC5oCj4gPiA+IGluZGV4 IDA2MDlhNzRiLi45NDZlOTFjMiAxMDA2NDQKPiA+ID4gLS0tIGEvdGVzdHMvYW1kZ3B1L2FtZGdw dV90ZXN0LmgKPiA+ID4gKysrIGIvdGVzdHMvYW1kZ3B1L2FtZGdwdV90ZXN0LmgKPiA+ID4gQEAg LTE5NCw2ICsxOTQsMjcgQEAgQ1VfQk9PTCBzdWl0ZV92bV90ZXN0c19lbmFibGUodm9pZCk7Cj4g PiA+ICAgKi8KPiA+ID4gIGV4dGVybiBDVV9UZXN0SW5mbyB2bV90ZXN0c1tdOwo+ID4gPgo+ID4g PiArLyoqCj4gPiA+ICsgKiBJbml0aWFsaXplIHN5bmNvYmogdGltZWxpbmUgdGVzdCBzdWl0ZSAg Ki8gaW50Cj4gPiA+ICtzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2luaXQoKTsKPiA+ID4g Kwo+ID4gPiArLyoqCj4gPiA+ICsgKiBEZWluaXRpYWxpemUgc3luY29iaiB0aW1lbGluZSB0ZXN0 IHN1aXRlICAqLyBpbnQKPiA+ID4gK3N1aXRlX3N5bmNvYmpfdGltZWxpbmVfdGVzdHNfY2xlYW4o KTsKPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBEZWNpZGUgaWYgdGhlIHN1aXRlIGlzIGVu YWJsZWQgYnkgZGVmYXVsdCBvciBub3QuCj4gPiA+ICsgKi8KPiA+ID4gK0NVX0JPT0wgc3VpdGVf c3luY29ial90aW1lbGluZV90ZXN0c19lbmFibGUodm9pZCk7Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ ID4gPiArICogVGVzdHMgaW4gc3luY29iaiB0aW1lbGluZSB0ZXN0IHN1aXRlICAqLyBleHRlcm4g Q1VfVGVzdEluZm8KPiA+ID4gK3N5bmNvYmpfdGltZWxpbmVfdGVzdHNbXTsKPiA+ID4gKwo+ID4g PiArCj4gPiA+ICAvKioKPiA+ID4gICAqIEhlbHBlciBmdW5jdGlvbnMKPiA+ID4gICAqLwo+ID4g PiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkIGIvdGVzdHMvYW1kZ3B1L21l c29uLmJ1aWxkIGluZGV4Cj4gPiA+IDRjMTIzN2M2Li4zY2VlYzcxNSAxMDA2NDQKPiA+ID4gLS0t IGEvdGVzdHMvYW1kZ3B1L21lc29uLmJ1aWxkCj4gPiA+ICsrKyBiL3Rlc3RzL2FtZGdwdS9tZXNv bi5idWlsZAo+ID4gPiBAQCAtMjQsNyArMjQsNyBAQCBpZiBkZXBfY3VuaXQuZm91bmQoKQo+ID4g PiAgICAgIGZpbGVzKAo+ID4gPiAgICAgICAgJ2FtZGdwdV90ZXN0LmMnLCAnYmFzaWNfdGVzdHMu YycsICdib190ZXN0cy5jJywgJ2NzX3Rlc3RzLmMnLAo+ID4gPiAgICAgICAgJ3ZjZV90ZXN0cy5j JywgJ3V2ZF9lbmNfdGVzdHMuYycsICd2Y25fdGVzdHMuYycsICdkZWFkbG9ja190ZXN0cy5jJywK PiA+ID4gLSAgICAgICd2bV90ZXN0cy5jJywKPiA+ID4gKyAgICAgICd2bV90ZXN0cy5jJywgJ3N5 bmNvYmpfdGVzdHMuYycsCj4gPiA+ICAgICAgKSwKPiA+ID4gICAgICBkZXBlbmRlbmNpZXMgOiBb ZGVwX2N1bml0LCBkZXBfdGhyZWFkc10sCj4gPiA+ICAgICAgaW5jbHVkZV9kaXJlY3RvcmllcyA6 IFtpbmNfcm9vdCwgaW5jX2RybSwKPiA+ID4gaW5jbHVkZV9kaXJlY3RvcmllcygnLi4vLi4vYW1k Z3B1JyldLAo+ID4gPiBkaWZmIC0tZ2l0IGEvdGVzdHMvYW1kZ3B1L3N5bmNvYmpfdGVzdHMuYwo+ ID4gPiBiL3Rlc3RzL2FtZGdwdS9zeW5jb2JqX3Rlc3RzLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQg aW5kZXgKPiA+ID4gMDAwMDAwMDAuLjJhMzQ1NDkwCj4gPiA+IC0tLSAvZGV2L251bGwKPiA+ID4g KysrIGIvdGVzdHMvYW1kZ3B1L3N5bmNvYmpfdGVzdHMuYwo+ID4gPiBAQCAtMCwwICsxLDI2MyBA QAo+ID4gPiArLyoKPiA+ID4gKyAqIENvcHlyaWdodCAyMDE3IEFkdmFuY2VkIE1pY3JvIERldmlj ZXMsIEluYy4KPiA+ID4gKyAqCj4gPiA+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+ID4gPiArb2J0YWluaW5nIGEKPiA+ID4g KyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZp bGVzICh0aGUKPiA+ID4gKyJTb2Z0d2FyZSIpLAo+ID4gPiArICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiA+ID4gK2xpbWl0 YXRpb24KPiA+ID4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLAo+ID4gPiArc3VibGljZW5zZSwKPiA+ID4gKyAqIGFuZC9vciBz ZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9t Cj4gPiA+ICt0aGUKPiA+ID4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gPiA+ICsgKgo+ID4gPiArICogVGhl IGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwg YmUKPiA+ID4gK2luY2x1ZGVkIGluCj4gPiA+ICsgKiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFs IHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPiA+ID4gKyAqCj4gPiA+ICsgKiBUSEUgU09GVFdB UkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPiA+IEtJTkQs Cj4gPiA+ICtFWFBSRVNTIE9SCj4gPiA+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GCj4gPiA+ICtNRVJDSEFOVEFCSUxJVFksCj4gPiA+ ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5U LiAgSU4KPiA+IE5PIEVWRU5UCj4gPiA+ICtTSEFMTAo+ID4gPiArICogVEhFIENPUFlSSUdIVCBI T0xERVIoUykgT1IgQVVUSE9SKFMpIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+ID4gPiArREFN QUdFUyBPUgo+ID4gPiArICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBP RiBDT05UUkFDVCwgVE9SVCBPUgo+ID4gPiArT1RIRVJXSVNFLAo+ID4gPiArICogQVJJU0lORyBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUgo+ID4gVEhF IFVTRQo+ID4gPiArT1IKPiA+ID4gKyAqIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4K PiA+ID4gKyAqCj4gPiA+ICsqLwo+ID4gPiArCj4gPiA+ICsjaW5jbHVkZSAiQ1VuaXQvQmFzaWMu aCIKPiA+ID4gKwo+ID4gPiArI2luY2x1ZGUgImFtZGdwdV90ZXN0LmgiCj4gPiA+ICsjaW5jbHVk ZSAiYW1kZ3B1X2RybS5oIgo+ID4gPiArI2luY2x1ZGUgImFtZGdwdV9pbnRlcm5hbC5oIgo+ID4g PiArI2luY2x1ZGUgPHB0aHJlYWQuaD4KPiA+ID4gKwo+ID4gPiArc3RhdGljICBhbWRncHVfZGV2 aWNlX2hhbmRsZSBkZXZpY2VfaGFuZGxlOyBzdGF0aWMgIHVpbnQzMl90Cj4gPiA+ICttYWpvcl92 ZXJzaW9uOyBzdGF0aWMgIHVpbnQzMl90ICBtaW5vcl92ZXJzaW9uOwo+ID4gPiArCj4gPiA+ICtz dGF0aWMgdm9pZCBhbWRncHVfc3luY29ial90aW1lbGluZV90ZXN0KHZvaWQpOwo+ID4gPiArCj4g PiA+ICtDVV9CT09MIHN1aXRlX3N5bmNvYmpfdGltZWxpbmVfdGVzdHNfZW5hYmxlKHZvaWQpCj4g PiA+ICt7Cj4gPiA+ICsJcmV0dXJuIENVX1RSVUU7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK2lu dCBzdWl0ZV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3RzX2luaXQodm9pZCkKPiA+ID4gK3sKPiA+ID4g KwlpbnQgcjsKPiA+ID4gKwo+ID4gPiArCXIgPSBhbWRncHVfZGV2aWNlX2luaXRpYWxpemUoZHJt X2FtZGdwdVswXSwgJm1ham9yX3ZlcnNpb24sCj4gPiA+ICsJCQkJICAgJm1pbm9yX3ZlcnNpb24s ICZkZXZpY2VfaGFuZGxlKTsKPiA+ID4gKwo+ID4gPiArCWlmIChyKSB7Cj4gPiA+ICsJCWlmICgo ciA9PSAtRUFDQ0VTKSAmJiAoZXJybm8gPT0gRUFDQ0VTKSkKPiA+ID4gKwkJCXByaW50ZigiXG5c bkVycm9yOiVzLiAiCj4gPiA+ICsJCQkJIkhpbnQ6VHJ5IHRvIHJ1biB0aGlzIHRlc3QgcHJvZ3Jh bSBhcyByb290LiIsCj4gPiA+ICsJCQkJc3RyZXJyb3IoZXJybm8pKTsKPiA+ID4gKwkJcmV0dXJu IENVRV9TSU5JVF9GQUlMRUQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIENVRV9T VUNDRVNTOwo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtpbnQgc3VpdGVfc3luY29ial90aW1lbGlu ZV90ZXN0c19jbGVhbih2b2lkKQo+ID4gPiArewo+ID4gPiArCWludCByID0gYW1kZ3B1X2Rldmlj ZV9kZWluaXRpYWxpemUoZGV2aWNlX2hhbmRsZSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAociA9PSAw KQo+ID4gPiArCQlyZXR1cm4gQ1VFX1NVQ0NFU1M7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQlyZXR1 cm4gQ1VFX1NDTEVBTl9GQUlMRUQ7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gKwo+ID4gPiArQ1Vf VGVzdEluZm8gc3luY29ial90aW1lbGluZV90ZXN0c1tdID0gewo+ID4gPiArCXsgInN5bmNvYmog dGltZWxpbmUgdGVzdCIsICBhbWRncHVfc3luY29ial90aW1lbGluZV90ZXN0IH0sCj4gPiA+ICsJ Q1VfVEVTVF9JTkZPX05VTEwsCj4gPiA+ICt9Owo+ID4gPiArCj4gPiA+ICsjZGVmaW5lIEdGWF9D T01QVVRFX05PUCAgMHhmZmZmMTAwMAo+ID4gPiArI2RlZmluZSBTRE1BX05PUCAgMHgwCj4gPiA+ ICtzdGF0aWMgaW50IHN5bmNvYmpfY29tbWFuZF9zdWJtaXNzaW9uX2hlbHBlcih1aW50MzJfdCBz eW5jb2JqX2hhbmRsZSwKPiA+IGJvb2wKPiA+ID4gKwkJCQkJICAgICB3YWl0X29yX3NpZ25hbCwg dWludDY0X3QgcG9pbnQpIHsKPiA+ID4gKwlhbWRncHVfY29udGV4dF9oYW5kbGUgY29udGV4dF9o YW5kbGU7Cj4gPiA+ICsJYW1kZ3B1X2JvX2hhbmRsZSBpYl9yZXN1bHRfaGFuZGxlOwo+ID4gPiAr CXZvaWQgKmliX3Jlc3VsdF9jcHU7Cj4gPiA+ICsJdWludDY0X3QgaWJfcmVzdWx0X21jX2FkZHJl c3M7Cj4gPiA+ICsJc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmsgY2h1bmtzWzJdOwo+ID4gPiAr CXN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2RhdGEgY2h1bmtfZGF0YTsKPiA+ID4gKwlzdHJ1 Y3QgZHJtX2FtZGdwdV9jc19jaHVua19zeW5jb2JqIHN5bmNvYmpfZGF0YTsKPiA+ID4gKwlzdHJ1 Y3QgYW1kZ3B1X2NzX2ZlbmNlIGZlbmNlX3N0YXR1czsKPiA+ID4gKwlhbWRncHVfYm9fbGlzdF9o YW5kbGUgYm9fbGlzdDsKPiA+ID4gKwlhbWRncHVfdmFfaGFuZGxlIHZhX2hhbmRsZTsKPiA+ID4g Kwl1aW50MzJfdCBleHBpcmVkLCBmbGFnczsKPiA+ID4gKwlpbnQgaSwgcjsKPiA+ID4gKwl1aW50 NjRfdCBzZXFfbm87Cj4gPiA+ICsJc3RhdGljIHVpbnQzMl90ICpwdHI7Cj4gPiA+ICsKPiA+ID4g KwlyID0gYW1kZ3B1X2NzX2N0eF9jcmVhdGUoZGV2aWNlX2hhbmRsZSwgJmNvbnRleHRfaGFuZGxl KTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7Cj4gPiA+ICsKPiA+ID4gKwlyID0gYW1k Z3B1X2JvX2FsbG9jX2FuZF9tYXAoZGV2aWNlX2hhbmRsZSwgNDA5NiwgNDA5NiwKPiA+ID4gKwkJ CQkgICAgQU1ER1BVX0dFTV9ET01BSU5fR1RULCAwLAo+ID4gPiArCQkJCSAgICAmaWJfcmVzdWx0 X2hhbmRsZSwgJmliX3Jlc3VsdF9jcHUsCj4gPiA+ICsJCQkJICAgICZpYl9yZXN1bHRfbWNfYWRk cmVzcywgJnZhX2hhbmRsZSk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiAr Cj4gPiA+ICsJciA9IGFtZGdwdV9nZXRfYm9fbGlzdChkZXZpY2VfaGFuZGxlLCBpYl9yZXN1bHRf aGFuZGxlLCBOVUxMLAo+ID4gPiArCQkJICAgICAgICZib19saXN0KTsKPiA+ID4gKwlDVV9BU1NF UlRfRVFVQUwociwgMCk7Cj4gPiA+ICsKPiA+ID4gKwlwdHIgPSBpYl9yZXN1bHRfY3B1Owo+ID4g PiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IDE2OyArK2kpCj4gPiA+ICsJCXB0cltpXSA9IHdh aXRfb3Jfc2lnbmFsID8gR0ZYX0NPTVBVVEVfTk9QOiBTRE1BX05PUDsKPiA+ID4gKwo+ID4gPiAr CWNodW5rc1swXS5jaHVua19pZCA9IEFNREdQVV9DSFVOS19JRF9JQjsKPiA+ID4gKwljaHVua3Nb MF0ubGVuZ3RoX2R3ID0gc2l6ZW9mKHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX2liKSAvIDQ7 Cj4gPiA+ICsJY2h1bmtzWzBdLmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRwdHJfdCkmY2h1 bmtfZGF0YTsKPiA+ID4gKwljaHVua19kYXRhLmliX2RhdGEuX3BhZCA9IDA7Cj4gPiA+ICsJY2h1 bmtfZGF0YS5pYl9kYXRhLnZhX3N0YXJ0ID0gaWJfcmVzdWx0X21jX2FkZHJlc3M7Cj4gPiA+ICsJ Y2h1bmtfZGF0YS5pYl9kYXRhLmliX2J5dGVzID0gMTYgKiA0Owo+ID4gPiArCWNodW5rX2RhdGEu aWJfZGF0YS5pcF90eXBlID0gd2FpdF9vcl9zaWduYWwgPwo+ID4gQU1ER1BVX0hXX0lQX0dGWCA6 Cj4gPiA+ICsJCUFNREdQVV9IV19JUF9ETUE7Cj4gPiA+ICsJY2h1bmtfZGF0YS5pYl9kYXRhLmlw X2luc3RhbmNlID0gMDsKPiA+ID4gKwljaHVua19kYXRhLmliX2RhdGEucmluZyA9IDA7Cj4gPiA+ ICsJY2h1bmtfZGF0YS5pYl9kYXRhLmZsYWdzID0gMDsKPiA+ID4gKwo+ID4gPiArCWNodW5rc1sx XS5jaHVua19pZCA9IHdhaXRfb3Jfc2lnbmFsID8KPiA+ID4gKwkJQU1ER1BVX0NIVU5LX0lEX1NZ TkNPQkpfVElNRUxJTkVfV0FJVCA6Cj4gPiA+ICsJCUFNREdQVV9DSFVOS19JRF9TWU5DT0JKX1RJ TUVMSU5FX1NJR05BTDsKPiA+ID4gKwljaHVua3NbMV0ubGVuZ3RoX2R3ID0gc2l6ZW9mKHN0cnVj dAo+ID4gZHJtX2FtZGdwdV9jc19jaHVua19zeW5jb2JqKSAvIDQ7Cj4gPiA+ICsJY2h1bmtzWzFd LmNodW5rX2RhdGEgPSAodWludDY0X3QpKHVpbnRwdHJfdCkmc3luY29ial9kYXRhOwo+ID4gPiAr CXN5bmNvYmpfZGF0YS5oYW5kbGUgPSBzeW5jb2JqX2hhbmRsZTsKPiA+ID4gKwlzeW5jb2JqX2Rh dGEucG9pbnQgPSBwb2ludDsKPiA+ID4gKwlzeW5jb2JqX2RhdGEuZmxhZ3MgPQo+ID4gRFJNX1NZ TkNPQkpfV0FJVF9GTEFHU19XQUlUX0ZPUl9TVUJNSVQ7Cj4gPiA+ICsKPiA+ID4gKwlyID0gYW1k Z3B1X2NzX3N1Ym1pdF9yYXcoZGV2aWNlX2hhbmRsZSwKPiA+ID4gKwkJCQkgY29udGV4dF9oYW5k bGUsCj4gPiA+ICsJCQkJIGJvX2xpc3QsCj4gPiA+ICsJCQkJIDIsCj4gPiA+ICsJCQkJIGNodW5r cywKPiA+ID4gKwkJCQkgJnNlcV9ubyk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ ID4gPiArCj4gPiA+ICsKPiA+ID4gKwltZW1zZXQoJmZlbmNlX3N0YXR1cywgMCwgc2l6ZW9mKHN0 cnVjdCBhbWRncHVfY3NfZmVuY2UpKTsKPiA+ID4gKwlmZW5jZV9zdGF0dXMuY29udGV4dCA9IGNv bnRleHRfaGFuZGxlOwo+ID4gPiArCWZlbmNlX3N0YXR1cy5pcF90eXBlID0gd2FpdF9vcl9zaWdu YWwgPyBBTURHUFVfSFdfSVBfR0ZYOgo+ID4gPiArCQlBTURHUFVfSFdfSVBfRE1BOwo+ID4gPiAr CWZlbmNlX3N0YXR1cy5pcF9pbnN0YW5jZSA9IDA7Cj4gPiA+ICsJZmVuY2Vfc3RhdHVzLnJpbmcg PSAwOwo+ID4gPiArCWZlbmNlX3N0YXR1cy5mZW5jZSA9IHNlcV9ubzsKPiA+ID4gKwo+ID4gPiAr CXIgPSBhbWRncHVfY3NfcXVlcnlfZmVuY2Vfc3RhdHVzKCZmZW5jZV9zdGF0dXMsCj4gPiA+ICsJ CQlBTURHUFVfVElNRU9VVF9JTkZJTklURSwwLCAmZXhwaXJlZCk7Cj4gPiA+ICsJQ1VfQVNTRVJU X0VRVUFMKHIsIDApOwo+ID4gPiArCj4gPiA+ICsJciA9IGFtZGdwdV9ib19saXN0X2Rlc3Ryb3ko Ym9fbGlzdCk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiArCj4gPiA+ICsJ ciA9IGFtZGdwdV9ib191bm1hcF9hbmRfZnJlZShpYl9yZXN1bHRfaGFuZGxlLCB2YV9oYW5kbGUs Cj4gPiA+ICsJCQkJICAgICBpYl9yZXN1bHRfbWNfYWRkcmVzcywgNDA5Nik7Cj4gPiA+ICsJQ1Vf QVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiArCj4gPiA+ICsJciA9IGFtZGdwdV9jc19jdHhfZnJl ZShjb250ZXh0X2hhbmRsZSk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiAr Cj4gPiA+ICsJcmV0dXJuIHI7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0cnVjdCBzeW5jb2Jq X3BvaW50IHsKPiA+ID4gKwl1aW50MzJfdCBzeW5jb2JqX2hhbmRsZTsKPiA+ID4gKwl1aW50NjRf dCBwb2ludDsKPiA+ID4gK307Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyB2b2lkICpzeW5jb2JqX3dh aXQodm9pZCAqZGF0YSkgewo+ID4gPiArCXN0cnVjdCBzeW5jb2JqX3BvaW50ICpzcCA9IChzdHJ1 Y3Qgc3luY29ial9wb2ludCAqKWRhdGE7Cj4gPiA+ICsJaW50IHI7Cj4gPiA+ICsKPiA+ID4gKwly ID0gc3luY29ial9jb21tYW5kX3N1Ym1pc3Npb25faGVscGVyKHNwLT5zeW5jb2JqX2hhbmRsZSwg dHJ1ZSwKPiA+ID4gKwkJCQkJICAgICAgc3AtPnBvaW50KTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFV QUwociwgMCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gKHZvaWQgKilyOwo+ID4gPiArfQo+ID4g PiArCj4gPiA+ICtzdGF0aWMgdm9pZCAqc3luY29ial9zaWduYWwodm9pZCAqZGF0YSkgewo+ID4g PiArCXN0cnVjdCBzeW5jb2JqX3BvaW50ICpzcCA9IChzdHJ1Y3Qgc3luY29ial9wb2ludCAqKWRh dGE7Cj4gPiA+ICsJaW50IHI7Cj4gPiA+ICsKPiA+ID4gKwlyID0gc3luY29ial9jb21tYW5kX3N1 Ym1pc3Npb25faGVscGVyKHNwLT5zeW5jb2JqX2hhbmRsZSwKPiA+IGZhbHNlLAo+ID4gPiArCQkJ CQkgICAgICBzcC0+cG9pbnQpOwo+ID4gPiArCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKPiA+ID4g Kwo+ID4gPiArCXJldHVybiAodm9pZCAqKXI7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRp YyB2b2lkIGFtZGdwdV9zeW5jb2JqX3RpbWVsaW5lX3Rlc3Qodm9pZCkKPiA+ID4gK3sKPiA+ID4g KwlzdGF0aWMgcHRocmVhZF90IHdhaXRfdGhyZWFkOwo+ID4gPiArCXN0YXRpYyBwdGhyZWFkX3Qg c2lnbmFsX3RocmVhZDsKPiA+ID4gKwlzdGF0aWMgcHRocmVhZF90IGNfdGhyZWFkOwo+ID4gPiAr CXN0cnVjdCBzeW5jb2JqX3BvaW50IHNwMSwgc3AyLCBzcDM7Cj4gPiA+ICsJdWludDMyX3Qgc3lu Y29ial9oYW5kbGU7Cj4gPiA+ICsJdWludDY0X3QgcGF5bG9hZDsKPiA+ID4gKwl1aW50NjRfdCAq cF9wYXlsb2FkOwo+ID4gPiArCXVpbnQ2NF90IHdhaXRfcG9pbnQ7Cj4gPiA+ICsJaW50IHI7Cj4g PiA+ICsJdm9pZCAqdG1wOwo+ID4gPiArCj4gPiA+ICsJciA9ICBhbWRncHVfY3NfY3JlYXRlX3N5 bmNvYmoyKGRldmljZV9oYW5kbGUsCj4gPiBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElO RSwKPiA+ID4gKwkJCQkgICAgICAgJnN5bmNvYmpfaGFuZGxlKTsKPiA+ID4gKwlDVV9BU1NFUlRf RVFVQUwociwgMCk7Cj4gPiA+ICsKPiA+ID4gKwkvLyB3YWl0IG9uIHBvaW50IDUKPiA+ID4gKwlz cDEuc3luY29ial9oYW5kbGUgPSBzeW5jb2JqX2hhbmRsZTsKPiA+ID4gKwlzcDEucG9pbnQgPSA1 Owo+ID4gPiArCXIgPSBwdGhyZWFkX2NyZWF0ZSgmd2FpdF90aHJlYWQsIE5VTEwsIHN5bmNvYmpf d2FpdCwgJnNwMSk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiArCj4gPiA+ ICsJLy8gc2lnbmFsIG9uIHBvaW50IDEwCj4gPiA+ICsJc3AyLnN5bmNvYmpfaGFuZGxlID0gc3lu Y29ial9oYW5kbGU7Cj4gPiA+ICsJc3AyLnBvaW50ID0gMTA7Cj4gPiA+ICsJciA9IHB0aHJlYWRf Y3JlYXRlKCZzaWduYWxfdGhyZWFkLCBOVUxMLCBzeW5jb2JqX3NpZ25hbCwgJnNwMik7Cj4gPiA+ ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiArCj4gPiA+ICsJciA9IHB0aHJlYWRfam9p bih3YWl0X3RocmVhZCwgJnRtcCk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4g PiArCUNVX0FTU0VSVF9FUVVBTCh0bXAsIDApOwo+ID4gPiArCj4gPiA+ICsJciA9IHB0aHJlYWRf am9pbihzaWduYWxfdGhyZWFkLCAmdG1wKTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFVQUwociwgMCk7 Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHRtcCwgMCk7Cj4gPiA+ICsKPiA+ID4gKwkvL3F1ZXJ5 IHRpbWVsaW5lIHBheWxvYWQKPiA+ID4gKwlwX3BheWxvYWQgPSAmcGF5bG9hZDsKPiA+ID4gKwly ID0gYW1kZ3B1X2NzX3N5bmNvYmpfcXVlcnkoZGV2aWNlX2hhbmRsZSwgJnN5bmNvYmpfaGFuZGxl LAo+ID4gJnBfcGF5bG9hZCwgMSk7Cj4gPiA+ICsJQ1VfQVNTRVJUX0VRVUFMKHIsIDApOwo+ID4g PiArCUNVX0FTU0VSVF9FUVVBTChwYXlsb2FkLCAxMCk7Cj4gPiA+ICsKPiA+ID4gKwkvL3NpZ25h bCBvbiBwb2ludCAxNgo+ID4gPiArCXNwMy5zeW5jb2JqX2hhbmRsZSA9IHN5bmNvYmpfaGFuZGxl Owo+ID4gPiArCXNwMy5wb2ludCA9IDE2Owo+ID4gPiArCXIgPSBwdGhyZWFkX2NyZWF0ZSgmY190 aHJlYWQsIE5VTEwsIHN5bmNvYmpfc2lnbmFsLCAmc3AzKTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFV QUwociwgMCk7Cj4gPiA+ICsJLy9DUFUgd2FpdCBvbiBwb2ludCAxNgo+ID4gPiArCXdhaXRfcG9p bnQgPSAxNjsKPiA+ID4gKwlyID0gYW1kZ3B1X2NzX3N5bmNvYmpfdGltZWxpbmVfd2FpdChkZXZp Y2VfaGFuZGxlLAo+ID4gJnN5bmNvYmpfaGFuZGxlLAo+ID4gPiArCQkJCQkgICAgJndhaXRfcG9p bnQsIDEsCj4gPiA+ICsJCQkJCSAgICAweDEwMDAwMDAwMDAwLCAvLzEwcwo+ID4gPiArCj4gPiBE Uk1fU1lOQ09CSl9XQUlUX0ZMQUdTX1dBSVRfQUxMIHwKPiA+ID4gKwo+ID4gRFJNX1NZTkNPQkpf V0FJVF9GTEFHU19XQUlUX0NPTVBMRVRFRCB8Cj4gPiA+ICsKPiA+IERSTV9TWU5DT0JKX1dBSVRf RkxBR1NfV0FJVF9GT1JfU1VCTUlULAo+ID4gPiArCQkJCQkgICAgTlVMTCk7Cj4gPiA+ICsJQ1Vf QVNTRVJUX0VRVUFMKHIsIDApOwo+ID4gPiArCXIgPSBwdGhyZWFkX2pvaW4oY190aHJlYWQsICZ0 bXApOwo+ID4gPiArCUNVX0FTU0VSVF9FUVVBTChyLCAwKTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFV QUwodG1wLCAwKTsKPiA+ID4gKwo+ID4gPiArCXIgPSBhbWRncHVfY3NfZGVzdHJveV9zeW5jb2Jq KGRldmljZV9oYW5kbGUsIHN5bmNvYmpfaGFuZGxlKTsKPiA+ID4gKwlDVV9BU1NFUlRfRVFVQUwo ciwgMCk7Cj4gPiA+ICsKPiA+ID4gK30KPiA+ID4gLS0KPiA+ID4gMi4xNy4xCj4gPiA+Cj4gPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gPiA+IGRy aS1kZXZlbCBtYWlsaW5nIGxpc3QKPiA+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zwo+ID4gPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo+ID4gCj4gPiAtLQo+ID4gRGFuaWVsIFZldHRlcgo+ID4gU29mdHdhcmUgRW5naW5l ZXIsIEludGVsIENvcnBvcmF0aW9uCj4gPiBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmll bCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9n LmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmFtZC1nZnggbWFpbGluZyBsaXN0CmFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo=