From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 2/7] drm: add syncobj timeline support v8 Date: Wed, 17 Oct 2018 18:37:40 +0800 Message-ID: <804ebdc5-7a7c-2f13-0222-ce1c58b2d0e8@amd.com> References: <20181015085553.30656-1-david1.zhou@amd.com> <20181015085553.30656-2-david1.zhou@amd.com> <20181017080908.GK31561@phenom.ffwll.local> <2066a18d-8002-014b-ef3c-a6f6014bdb55@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Daniel Vetter Cc: Chunming Zhou , amd-gfx list , "Rakos, Daniel" , dri-devel , "jason-fQELhIk9awXprZlt/sZkLg@public.gmane.org >> Jason Ekstrand" , Bas Nieuwenhuizen , Dave Airlie , =?UTF-8?Q?Christian_K=c3=b6nig?= List-Id: dri-devel@lists.freedesktop.org K0phc29uIGFzIHdlbGwuCgoKT24gMjAxOOW5tDEw5pyIMTfml6UgMTg6MjIsIERhbmllbCBWZXR0 ZXIgd3JvdGU6Cj4gT24gV2VkLCBPY3QgMTcsIDIwMTggYXQgMTE6MTcgQU0gemhvdWNtMSA8emhv dWNtMUBhbWQuY29tPiB3cm90ZToKPj4KPj4KPj4gT24gMjAxOOW5tDEw5pyIMTfml6UgMTY6MDks IERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBPbiBNb24sIE9jdCAxNSwgMjAxOCBhdCAwNDo1NTo0 OFBNICswODAwLCBDaHVubWluZyBaaG91IHdyb3RlOgo+Pj4+IFRoaXMgcGF0Y2ggaXMgZm9yIFZL X0tIUl90aW1lbGluZV9zZW1hcGhvcmUgZXh0ZW5zaW9uLCBzZW1hcGhvcmUgaXMgY2FsbGVkIHN5 bmNvYmogaW4ga2VybmVsIHNpZGU6Cj4+Pj4gVGhpcyBleHRlbnNpb24gaW50cm9kdWNlcyBhIG5l dyB0eXBlIG9mIHN5bmNvYmogdGhhdCBoYXMgYW4gaW50ZWdlciBwYXlsb2FkCj4+Pj4gaWRlbnRp ZnlpbmcgYSBwb2ludCBpbiBhIHRpbWVsaW5lLiBTdWNoIHRpbWVsaW5lIHN5bmNvYmpzIHN1cHBv cnQgdGhlCj4+Pj4gZm9sbG93aW5nIG9wZXJhdGlvbnM6Cj4+Pj4gICAgICAqIENQVSBxdWVyeSAt IEEgaG9zdCBvcGVyYXRpb24gdGhhdCBhbGxvd3MgcXVlcnlpbmcgdGhlIHBheWxvYWQgb2YgdGhl Cj4+Pj4gICAgICAgIHRpbWVsaW5lIHN5bmNvYmouCj4+Pj4gICAgICAqIENQVSB3YWl0IC0gQSBo b3N0IG9wZXJhdGlvbiB0aGF0IGFsbG93cyBhIGJsb2NraW5nIHdhaXQgZm9yIGEKPj4+PiAgICAg ICAgdGltZWxpbmUgc3luY29iaiB0byByZWFjaCBhIHNwZWNpZmllZCB2YWx1ZS4KPj4+PiAgICAg ICogRGV2aWNlIHdhaXQgLSBBIGRldmljZSBvcGVyYXRpb24gdGhhdCBhbGxvd3Mgd2FpdGluZyBm b3IgYQo+Pj4+ICAgICAgICB0aW1lbGluZSBzeW5jb2JqIHRvIHJlYWNoIGEgc3BlY2lmaWVkIHZh bHVlLgo+Pj4+ICAgICAgKiBEZXZpY2Ugc2lnbmFsIC0gQSBkZXZpY2Ugb3BlcmF0aW9uIHRoYXQg YWxsb3dzIGFkdmFuY2luZyB0aGUKPj4+PiAgICAgICAgdGltZWxpbmUgc3luY29iaiB0byBhIHNw ZWNpZmllZCB2YWx1ZS4KPj4+Pgo+Pj4+IHYxOgo+Pj4+IFNpbmNlIGl0J3MgYSB0aW1lbGluZSwg dGhhdCBtZWFucyB0aGUgZnJvbnQgdGltZSBwb2ludChQVCkgYWx3YXlzIGlzIHNpZ25hbGVkIGJl Zm9yZSB0aGUgbGF0ZSBQVC4KPj4+PiBhLiBzaWduYWwgUFQgZGVzaWduOgo+Pj4+IFNpZ25hbCBQ VCBmZW5jZSBOIGRlcGVuZHMgb24gUFRbTi0xXSBmZW5jZSBhbmQgc2lnbmFsIG9wZXJ0aW9uIGZl bmNlLCB3aGVuIFBUW05dIGZlbmNlIGlzIHNpZ25hbGVkLAo+Pj4+IHRoZSB0aW1lbGluZSB3aWxs IGluY3JlYXNlIHRvIHZhbHVlIG9mIFBUW05dLgo+Pj4+IGIuIHdhaXQgUFQgZGVzaWduOgo+Pj4+ IFdhaXQgUFQgZmVuY2UgaXMgc2lnbmFsZWQgYnkgcmVhY2hpbmcgdGltZWxpbmUgcG9pbnQgdmFs dWUsIHdoZW4gdGltZWxpbmUgaXMgaW5jcmVhc2luZywgd2lsbCBjb21wYXJlCj4+Pj4gd2FpdCBQ VHMgdmFsdWUgd2l0aCBuZXcgdGltZWxpbmUgdmFsdWUsIGlmIFBUIHZhbHVlIGlzIGxvd2VyIHRo YW4gdGltZWxpbmUgdmFsdWUsIHRoZW4gd2FpdCBQVCB3aWxsIGJlCj4+Pj4gc2lnbmFsZWQsIG90 aGVyd2lzZSBrZWVwIGluIGxpc3QuIHN5bmNvYmogd2FpdCBvcGVyYXRpb24gY2FuIHdhaXQgb24g YW55IHBvaW50IG9mIHRpbWVsaW5lLAo+Pj4+IHNvIG5lZWQgYSBSQiB0cmVlIHRvIG9yZGVyIHRo ZW0uIEFuZCB3YWl0IFBUIGNvdWxkIGFoZWFkIG9mIHNpZ25hbCBQVCwgd2UgbmVlZCBhIHN1bWlz c2lvbiBmZW5jZSB0bwo+Pj4+IHBlcmZvcm0gdGhhdC4KPj4+Pgo+Pj4+IHYyOgo+Pj4+IDEuIHJl bW92ZSB1bnVzZWQgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfTk9STUFMLiAoQ2hyaXN0aWFuKQo+ Pj4+IDIuIG1vdmUgdW5leHBvc2VkIGRlbml0aW9ucyB0byAuYyBmaWxlLiAoRGFuaWVsIFZldHRl cikKPj4+PiAzLiBzcGxpdCB1cCB0aGUgY2hhbmdlIHRvIGRybV9zeW5jb2JqX2ZpbmRfZmVuY2Uo KSBpbiBhIHNlcGFyYXRlIHBhdGNoLiAoQ2hyaXN0aWFuKQo+Pj4+IDQuIHNwbGl0IHVwIHRoZSBj aGFuZ2UgdG8gZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSgpIGluIGEgc2VwYXJhdGUgcGF0Y2gu Cj4+Pj4gNS4gZHJvcCB0aGUgc3VibWlzc2lvbl9mZW5jZSBpbXBsZW1lbnRhdGlvbiBhbmQgaW5z dGVhZCB1c2Ugd2FpdF9ldmVudCgpIGZvciB0aGF0LiAoQ2hyaXN0aWFuKQo+Pj4+IDYuIFdBUk5f T04ocG9pbnQgIT0gMCkgZm9yIE5PUk1BTCB0eXBlIHN5bmNvYmogY2FzZS4gKERhbmllbCBWZXR0 ZXIpCj4+Pj4KPj4+PiB2MzoKPj4+PiAxLiByZXBsYWNlIG5vcm1hbCBzeW5jb2JqIHdpdGggdGlt ZWxpbmUgaW1wbGVtZW5hdGlvbi4gKFZldHRlciBhbmQgQ2hyaXN0aWFuKQo+Pj4+ICAgICAgIGEu IG5vcm1hbCBzeW5jb2JqIHNpZ25hbCBvcCB3aWxsIGNyZWF0ZSBhIHNpZ25hbCBQVCB0byB0YWls IG9mIHNpZ25hbCBwdCBsaXN0Lgo+Pj4+ICAgICAgIGIuIG5vcm1hbCBzeW5jb2JqIHdhaXQgb3Ag d2lsbCBjcmVhdGUgYSB3YWl0IHB0IHdpdGggbGFzdCBzaWduYWwgcG9pbnQsIGFuZCB0aGlzIHdh aXQgUFQgaXMgb25seSBzaWduYWxlZCBieSByZWxhdGVkIHNpZ25hbCBwb2ludCBQVC4KPj4+PiAy LiBtYW55IGJ1ZyBmaXggYW5kIGNsZWFuIHVwCj4+Pj4gMy4gc3R1YiBmZW5jZSBtb3ZpbmcgaXMg bW92ZWQgdG8gb3RoZXIgcGF0Y2guCj4+Pj4KPj4+PiB2NO+8mgo+Pj4+IDEuIGZpeCBSQiB0cmVl IGxvb3Agd2l0aCB3aGlsZShub2RlPXJiX2ZpcnN0KC4uLikpLiAoQ2hyaXN0aWFuKQo+Pj4+IDIu IGZpeCBzeW5jb2JqIGxpZmVjeWNsZS4gKENocmlzdGlhbikKPj4+PiAzLiBvbmx5IGVuYWJsZV9z aWduYWxpbmcgd2hlbiB0aGVyZSBpcyB3YWl0X3B0LiAoQ2hyaXN0aWFuKQo+Pj4+IDQuIGZpeCB0 aW1lbGluZSBwYXRoIGlzc3Vlcy4KPj4+PiA1LiB3cml0ZSBhIHRpbWVsaW5lIHRlc3QgaW4gbGli ZHJtCj4+Pj4KPj4+PiB2NTogKENocmlzdGlhbikKPj4+PiAxLiBzZW1hcGhvcmUgaXMgY2FsbGVk IHN5bmNvYmogaW4ga2VybmVsIHNpZGUuCj4+Pj4gMi4gZG9uJ3QgbmVlZCAndGltZWxpbmUnIGNo YXJhY3RlcnMgaW4gc29tZSBmdW5jdGlvbiBuYW1lLgo+Pj4+IDMuIGtlZXAgc3luY29iaiBjYi4K Pj4+Pgo+Pj4+IHY2OiAoQ2hyaXN0aWFuKQo+Pj4+IDEuIG1lcmdlIHN5bmNvYmpfdGltZWxpbmUg dG8gc3luY29iaiBzdHJ1Y3R1cmUuCj4+Pj4gMi4gc2ltcGxpZnkgc29tZSBjaGVjayBzZW50ZW5j ZXMuCj4+Pj4gMy4gc29tZSBtaXNjIGNoYW5nZS4KPj4+PiA0LiBmaXggQ1RTIGZhaWxlZCBpc3N1 ZS4KPj4+Pgo+Pj4+IHY3OiAoQ2hyaXN0aWFuKQo+Pj4+IDEuIGVycm9yIGhhbmRsaW5nIHdoZW4g Y3JlYXRpbmcgc2lnbmFsIHB0Lgo+Pj4+IDIuIHJlbW92ZSB0aW1lbGluZSBuYW1pbmcgaW4gZnVu Yy4KPj4+PiAzLiBleHBvcnQgZmxhZ3MgaW4gZmluZF9mZW5jZS4KPj4+PiA0LiBhbGxvdyByZXNl dCB0aW1lbGluZS4KPj4+Pgo+Pj4+IHY4Ogo+Pj4+IDEuIHVzZSB3YWl0X2V2ZW50X2ludGVycnVw dGlibGUgd2l0aG91dCB0aW1lb3V0Cj4+Pj4gMi4gcmVuYW1lIF9UWVBFX0lORElWSURVQUwgdG8g X1RZUEVfQklOQVJZCj4+Pj4KPj4+PiBpbmRpdmlkdWFsIHN5bmNvYmogaXMgdGVzdGVkIGJ5IC4v ZGVxcC12ayAtbiBkRVFQLVZLKnNlbWFwaG9yZSoKPj4+PiB0aW1lbGluZSBzeW5jb2JqIGlzIHRl c3RlZCBieSAuL2FtZGdwdV90ZXN0IC1zIDkKPj4+IENhbiB3ZSBwbGVhc2UgaGF2ZSB0aGVzZSBs b3ctbGV2ZWwgc3luY29iaiB0ZXN0cyBhcyBwYXJ0IG9mIGlndCwgdG9nZXRoZXIKPj4+IHdpdGgg YWxsIHRoZSBvdGhlciBzeW5jb2JqIHRlc3RzIHdoaWNoIGFyZSB0aGVyZSBhbHJlYWR5Pwo+PiBH b29kIHN1Z2dlc3Rpb24gZmlyc3QsIEknbSBqdXN0IG5vdCBmYW1pbGlhciB3aXRoIGlndCggYnVp bGQsIHJ1bgo+PiBjbWQuLi4pLCBtYXliZSB3ZSBjYW4gYWRkIGl0IGxhdGVyLgo+Pgo+Pj4gUmVh bGx5IGRvZXNuJ3QKPj4+IG1ha2UgbXVjaCBzZW5zZSBpbW8gdG8gc3BsaXRzIHRoaW5ncyBvbiB0 aGUgdGVzdCBzdWl0ZSBmcm9udC4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHVubWluZyBaaG91IDxk YXZpZDEuemhvdUBhbWQuY29tPgo+Pj4+IENjOiBDaHJpc3RpYW4gS29uaWcgPGNocmlzdGlhbi5r b2VuaWdAYW1kLmNvbT4KPj4+PiBDYzogRGF2ZSBBaXJsaWUgPGFpcmxpZWRAcmVkaGF0LmNvbT4K Pj4+PiBDYzogRGFuaWVsIFJha29zIDxEYW5pZWwuUmFrb3NAYW1kLmNvbT4KPj4+PiBDYzogRGFu aWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+Pj4+IFJldmlld2VkLWJ5OiBDaHJpc3RpYW4g S8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFtZC5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgZHJpdmVy cy9ncHUvZHJtL2RybV9zeW5jb2JqLmMgICAgICAgICAgICAgIHwgMjg3ICsrKysrKysrKysrKysr KysrKy0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIu YyB8ICAgMiArLQo+Pj4+ICAgIGluY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggICAgICAgICAgICAg ICAgICB8ICA2NSArKy0tLQo+Pj4+ICAgIGluY2x1ZGUvdWFwaS9kcm0vZHJtLmggICAgICAgICAg ICAgICAgICAgICB8ICAgMSArCj4+Pj4gICAgNCBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9u cygrKSwgNzQgZGVsZXRpb25zKC0pCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2RybV9zeW5jb2JqLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX3N5bmNvYmouYwo+Pj4+IGlu ZGV4IGY3OTZjOWZjMzg1OC4uNjc0NzJiZDc3YzgzIDEwMDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9kcm1fc3luY29iai5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9zeW5j b2JqLmMKPj4+PiBAQCAtNTYsNiArNTYsOSBAQAo+Pj4+ICAgICNpbmNsdWRlICJkcm1faW50ZXJu YWwuaCIKPj4+PiAgICAjaW5jbHVkZSA8ZHJtL2RybV9zeW5jb2JqLmg+Cj4+Pj4KPj4+PiArLyog bWVyZ2Ugbm9ybWFsIHN5bmNvYmogdG8gdGltZWxpbmUgc3luY29iaiwgdGhlIHBvaW50IGludGVy dmFsIGlzIDEgKi8KPj4+PiArI2RlZmluZSBEUk1fU1lOQ09CSl9CSU5BUllfUE9JTlQgMQo+Pj4+ ICsKPj4+PiAgICBzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSB7Cj4+Pj4gICAgICAgc3Ry dWN0IGRtYV9mZW5jZSBiYXNlOwo+Pj4+ICAgICAgIHNwaW5sb2NrX3QgbG9jazsKPj4+PiBAQCAt ODIsNiArODUsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Vfb3BzIGRybV9zeW5j b2JqX3N0dWJfZmVuY2Vfb3BzID0gewo+Pj4+ICAgICAgIC5yZWxlYXNlID0gZHJtX3N5bmNvYmpf c3R1Yl9mZW5jZV9yZWxlYXNlLAo+Pj4+ICAgIH07Cj4+Pj4KPj4+PiArc3RydWN0IGRybV9zeW5j b2JqX3NpZ25hbF9wdCB7Cj4+Pj4gKyAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2FycmF5ICpiYXNlOwo+ Pj4gT3V0IG9mIGN1cmlvc2l0eSwgd2h5IHRoZSBwb2ludGVyIGFuZCBub3QgZW1iZWRkaW5nPyBi YXNlIGlzIGtpbmRhCj4+PiBtaXNsZWFkaW5nIGZvciBhIHBvaW50ZXIuCj4+IFllYWgsIENocmlz dGlhbiBkb2Vzbid0IGxpa2Ugc2lnbmFsX3B0IGxpZmVjeWNsZSBzYW1lIGFzIGZlbmNlLCBzbyBp dCdzCj4+IGEgcG9pbnRlci4KPj4gSWYgeW91IGRvbid0IGxpa2UgJ2Jhc2UnIG5hbWUsIEkgY2Fu IGNoYW5nZSBpdC4KPj4KPj4+PiArICAgIHU2NCAgICB2YWx1ZTsKPj4+PiArICAgIHN0cnVjdCBs aXN0X2hlYWQgbGlzdDsKPj4+PiArfTsKPj4+Pgo+Pj4+ICAgIC8qKgo+Pj4+ICAgICAqIGRybV9z eW5jb2JqX2ZpbmQgLSBsb29rdXAgYW5kIHJlZmVyZW5jZSBhIHN5bmMgb2JqZWN0Lgo+Pj4+IEBA IC0xMjQsOCArMTMyLDggQEAgc3RhdGljIGludCBkcm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRk X2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPj4+PiAgICB7Cj4+Pj4gICAg ICAgaW50IHJldDsKPj4+Pgo+Pj4+IC0gICAgKmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0 KHN5bmNvYmopOwo+Pj4+IC0gICAgaWYgKCpmZW5jZSkKPj4+PiArICAgIHJldCA9IGRybV9zeW5j b2JqX3NlYXJjaF9mZW5jZShzeW5jb2JqLCAwLCAwLCBmZW5jZSk7Cj4+Pj4gKyAgICBpZiAoIXJl dCkKPj4+PiAgICAgICAgICAgICAgIHJldHVybiAxOwo+Pj4+Cj4+Pj4gICAgICAgc3Bpbl9sb2Nr KCZzeW5jb2JqLT5sb2NrKTsKPj4+PiBAQCAtMTMzLDEwICsxNDEsMTIgQEAgc3RhdGljIGludCBk cm1fc3luY29ial9mZW5jZV9nZXRfb3JfYWRkX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAq c3luY29iaiwKPj4+PiAgICAgICAgKiBoYXZlIHRoZSBsb2NrLCB0cnkgb25lIG1vcmUgdGltZSBq dXN0IHRvIGJlIHN1cmUgd2UgZG9uJ3QgYWRkIGEKPj4+PiAgICAgICAgKiBjYWxsYmFjayB3aGVu IGEgZmVuY2UgaGFzIGFscmVhZHkgYmVlbiBzZXQuCj4+Pj4gICAgICAgICovCj4+Pj4gLSAgICBp ZiAoc3luY29iai0+ZmVuY2UpIHsKPj4+PiAtICAgICAgICAgICAgKmZlbmNlID0gZG1hX2ZlbmNl X2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZlbmNlLAo+Pj4+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwo+Pj4+IC0gICAgICAgICAgICByZXQg PSAxOwo+Pj4+ICsgICAgaWYgKCFsaXN0X2VtcHR5KCZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCkp IHsKPj4+PiArICAgICAgICAgICAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+ICsg ICAgICAgICAgICBkcm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgMCwgMCwgZmVuY2Up Owo+Pj4+ICsgICAgICAgICAgICBpZiAoKmZlbmNlKQo+Pj4+ICsgICAgICAgICAgICAgICAgICAg IHJldHVybiAxOwo+Pj4+ICsgICAgICAgICAgICBzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+ Pj4+ICAgICAgIH0gZWxzZSB7Cj4+Pj4gICAgICAgICAgICAgICAqZmVuY2UgPSBOVUxMOwo+Pj4+ ICAgICAgICAgICAgICAgZHJtX3N5bmNvYmpfYWRkX2NhbGxiYWNrX2xvY2tlZChzeW5jb2JqLCBj YiwgZnVuYyk7Cj4+Pj4gQEAgLTE2NCw2ICsxNzQsMTU5IEBAIHZvaWQgZHJtX3N5bmNvYmpfcmVt b3ZlX2NhbGxiYWNrKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPj4+PiAgICAgICBzcGlu X3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4gK3N0YXRpYyB2b2lk IGRybV9zeW5jb2JqX2luaXQoc3RydWN0IGRybV9zeW5jb2JqICpzeW5jb2JqKQo+Pj4+ICt7Cj4+ Pj4gKyAgICBzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+ICsgICAgc3luY29iai0+dGlt ZWxpbmVfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpOwo+Pj4+ICsgICAgc3lu Y29iai0+dGltZWxpbmUgPSAwOwo+Pj4+ICsgICAgc3luY29iai0+c2lnbmFsX3BvaW50ID0gMDsK Pj4+PiArICAgIGluaXRfd2FpdHF1ZXVlX2hlYWQoJnN5bmNvYmotPndxKTsKPj4+PiArCj4+Pj4g KyAgICBJTklUX0xJU1RfSEVBRCgmc3luY29iai0+c2lnbmFsX3B0X2xpc3QpOwo+Pj4+ICsgICAg c3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMg dm9pZCBkcm1fc3luY29ial9maW5pKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKPj4+PiAr ewo+Pj4+ICsgICAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0ID0gTlVM TCwgKnRtcDsKPj4+PiArCj4+Pj4gKyAgICBzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+ ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHNpZ25hbF9wdCwgdG1wLAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZzeW5jb2JqLT5zaWduYWxfcHRfbGlzdCwgbGlzdCkg ewo+Pj4+ICsgICAgICAgICAgICBsaXN0X2RlbCgmc2lnbmFsX3B0LT5saXN0KTsKPj4+PiArICAg ICAgICAgICAgZG1hX2ZlbmNlX3B1dCgmc2lnbmFsX3B0LT5iYXNlLT5iYXNlKTsKPj4+PiArICAg ICAgICAgICAga2ZyZWUoc2lnbmFsX3B0KTsKPj4+PiArICAgIH0KPj4+PiArICAgIHNwaW5fdW5s b2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIHN0cnVjdCBk bWFfZmVuY2UKPj4+PiArKmRybV9zeW5jb2JqX2ZpbmRfc2lnbmFsX3B0X2Zvcl9wb2ludChzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50NjRfdCBwb2ludCkKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGRybV9zeW5j b2JqX3NpZ25hbF9wdCAqc2lnbmFsX3B0Owo+Pj4+ICsKPj4+PiArICAgIGlmICgoc3luY29iai0+ dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX1RJTUVMSU5FKSAmJgo+Pj4+ICsgICAgICAgIChwb2lu dCA8PSBzeW5jb2JqLT50aW1lbGluZSkpIHsKPj4+PiArICAgICAgICAgICAgc3RydWN0IGRybV9z eW5jb2JqX3N0dWJfZmVuY2UgKmZlbmNlID0KPj4+PiArICAgICAgICAgICAgICAgICAgICBremFs bG9jKHNpemVvZihzdHJ1Y3QgZHJtX3N5bmNvYmpfc3R1Yl9mZW5jZSksCj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICBHRlBfS0VSTkVMKTsKPj4+PiArCj4+Pj4gKyAgICAgICAgICAg IGlmICghZmVuY2UpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4g KyAgICAgICAgICAgIHNwaW5fbG9ja19pbml0KCZmZW5jZS0+bG9jayk7Cj4+Pj4gKyAgICAgICAg ICAgIGRtYV9mZW5jZV9pbml0KCZmZW5jZS0+YmFzZSwKPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmRybV9zeW5jb2JqX3N0dWJfZmVuY2Vfb3BzLAo+Pj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAmZmVuY2UtPmxvY2ssCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN5bmNvYmotPnRpbWVsaW5lX2NvbnRleHQsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBvaW50KTsKPj4+PiArCj4+Pj4gKyAgICAgICAgICAgIGRtYV9mZW5jZV9zaWduYWwo JmZlbmNlLT5iYXNlKTsKPj4+PiArICAgICAgICAgICAgcmV0dXJuICZmZW5jZS0+YmFzZTsKPj4+ PiArICAgIH0KPj4+PiArCj4+Pj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHNpZ25hbF9wdCwg JnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LCBsaXN0KSB7Cj4+Pj4gKyAgICAgICAgICAgIGlmIChw b2ludCA+IHNpZ25hbF9wdC0+dmFsdWUpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgY29udGlu dWU7Cj4+Pj4gKyAgICAgICAgICAgIGlmICgoc3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9U WVBFX0JJTkFSWSkgJiYKPj4+PiArICAgICAgICAgICAgICAgIChwb2ludCAhPSBzaWduYWxfcHQt PnZhbHVlKSkKPj4+PiArICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKPj4+PiArICAgICAg ICAgICAgcmV0dXJuIGRtYV9mZW5jZV9nZXQoJnNpZ25hbF9wdC0+YmFzZS0+YmFzZSk7Cj4+Pj4g KyAgICB9Cj4+Pj4gKyAgICByZXR1cm4gTlVMTDsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGlj IGludCBkcm1fc3luY29ial9jcmVhdGVfc2lnbmFsX3B0KHN0cnVjdCBkcm1fc3luY29iaiAqc3lu Y29iaiwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHU2NCBwb2ludCkKPj4+PiArewo+Pj4+ICsgICAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9w dCAqc2lnbmFsX3B0ID0KPj4+PiArICAgICAgICAgICAga3phbGxvYyhzaXplb2Yoc3RydWN0IGRy bV9zeW5jb2JqX3NpZ25hbF9wdCksIEdGUF9LRVJORUwpOwo+Pj4+ICsgICAgc3RydWN0IGRybV9z eW5jb2JqX3NpZ25hbF9wdCAqdGFpbF9wdDsKPj4+PiArICAgIHN0cnVjdCBkbWFfZmVuY2UgKipm ZW5jZXM7Cj4+Pj4gKyAgICBpbnQgbnVtX2ZlbmNlcyA9IDA7Cj4+Pj4gKyAgICBpbnQgcmV0ID0g MCwgaTsKPj4+PiArCj4+Pj4gKyAgICBpZiAoIXNpZ25hbF9wdCkKPj4+PiArICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07Cj4+Pj4gKyAgICBpZiAoIWZlbmNlKQo+Pj4+ICsgICAgICAgICAgICBn b3RvIG91dDsKPj4+PiArCj4+Pj4gKyAgICBmZW5jZXMgPSBrbWFsbG9jX2FycmF5KHNpemVvZih2 b2lkICopLCAyLCBHRlBfS0VSTkVMKTsKPj4+PiArICAgIGlmICghZmVuY2VzKSB7Cj4+Pj4gKyAg ICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4+Pj4gKyAgICAgICAgICAgIGdvdG8gb3V0Owo+Pj4+ ICsgICAgfQo+Pj4+ICsgICAgZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVuY2VfZ2V0KGZl bmNlKTsKPj4+PiArICAgIC8qIHRpbWVsaW5lIHN5bmNvYmogbXVzdCB0YWtlIHRoaXMgZGVwZW5k ZW5jeSAqLwo+Pj4+ICsgICAgaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJNX1NZTkNPQkpfVFlQRV9U SU1FTElORSkgewo+Pj4+ICsgICAgICAgICAgICBzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+ Pj4+ICsgICAgICAgICAgICBpZiAoIWxpc3RfZW1wdHkoJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0 KSkgewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIHRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnko JnN5bmNvYmotPnNpZ25hbF9wdF9saXN0LAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9zeW5jb2JqX3NpZ25hbF9wdCwgbGlzdCk7 Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgZmVuY2VzW251bV9mZW5jZXMrK10gPSBkbWFfZmVu Y2VfZ2V0KCZ0YWlsX3B0LT5iYXNlLT5iYXNlKTsKPj4+PiArICAgICAgICAgICAgfQo+Pj4+ICsg ICAgICAgICAgICBzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4gKyAgICB9Cj4+Pj4g KyAgICBzaWduYWxfcHQtPmJhc2UgPSBkbWFfZmVuY2VfYXJyYXlfY3JlYXRlKG51bV9mZW5jZXMs IGZlbmNlcywKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3luY29iai0+dGltZWxpbmVfY29udGV4dCwKPj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnQsIGZhbHNlKTsKPj4+PiArICAgIGlmICghc2ln bmFsX3B0LT5iYXNlKSB7Cj4+Pj4gKyAgICAgICAgICAgIHJldCA9IC1FTk9NRU07Cj4+Pj4gKyAg ICAgICAgICAgIGdvdG8gZmFpbDsKPj4+PiArICAgIH0KPj4+PiArCj4+Pj4gKyAgICBzcGluX2xv Y2soJnN5bmNvYmotPmxvY2spOwo+Pj4+ICsgICAgaWYgKHN5bmNvYmotPnNpZ25hbF9wb2ludCA+ PSBwb2ludCkgewo+Pj4+ICsgICAgICAgICAgICBEUk1fV0FSTigiQSBsYXRlciBzaWduYWwgaXMg cmVhZHkhIik7Cj4+Pj4gKyAgICAgICAgICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsK Pj4+PiArICAgICAgICAgICAgZ290byBleGlzdDsKPj4+PiArICAgIH0KPj4+PiArICAgIHNpZ25h bF9wdC0+dmFsdWUgPSBwb2ludDsKPj4+PiArICAgIGxpc3RfYWRkX3RhaWwoJnNpZ25hbF9wdC0+ bGlzdCwgJnN5bmNvYmotPnNpZ25hbF9wdF9saXN0KTsKPj4+PiArICAgIHN5bmNvYmotPnNpZ25h bF9wb2ludCA9IHBvaW50Owo+Pj4+ICsgICAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxvY2spOwo+ Pj4+ICsgICAgd2FrZV91cF9hbGwoJnN5bmNvYmotPndxKTsKPj4+PiArCj4+Pj4gKyAgICByZXR1 cm4gMDsKPj4+PiArZXhpc3Q6Cj4+Pj4gKyAgICBkbWFfZmVuY2VfcHV0KCZzaWduYWxfcHQtPmJh c2UtPmJhc2UpOwo+Pj4+ICtmYWlsOgo+Pj4+ICsgICAgZm9yIChpID0gMDsgaSA8IG51bV9mZW5j ZXM7IGkrKykKPj4+PiArICAgICAgICAgICAgZG1hX2ZlbmNlX3B1dChmZW5jZXNbaV0pOwo+Pj4+ ICsgICAga2ZyZWUoZmVuY2VzKTsKPj4+PiArb3V0Ogo+Pj4+ICsgICAga2ZyZWUoc2lnbmFsX3B0 KTsKPj4+PiArICAgIHJldHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyB2b2lk IGRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNv YmopCj4+Pj4gK3sKPj4+PiArICAgIHN0cnVjdCBkcm1fc3luY29ial9zaWduYWxfcHQgKnNpZ25h bF9wdCwgKnRtcCwgKnRhaWxfcHQ7Cj4+Pj4gKwo+Pj4+ICsgICAgc3Bpbl9sb2NrKCZzeW5jb2Jq LT5sb2NrKTsKPj4+PiArICAgIHRhaWxfcHQgPSBsaXN0X2xhc3RfZW50cnkoJnN5bmNvYmotPnNp Z25hbF9wdF9saXN0LAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3N5bmNvYmpfc2lnbmFsX3B0LAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaXN0KTsKPj4+PiArICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzaWduYWxfcHQsIHRt cCwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3luY29iai0+c2lnbmFsX3B0 X2xpc3QsIGxpc3QpIHsKPj4+PiArICAgICAgICAgICAgaWYgKHN5bmNvYmotPnR5cGUgPT0gRFJN X1NZTkNPQkpfVFlQRV9CSU5BUlkgJiYKPj4+PiArICAgICAgICAgICAgICAgIHNpZ25hbF9wdCA9 PSB0YWlsX3B0KQo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4+ICsgICAg ICAgICAgICBpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKCZzaWduYWxfcHQtPmJhc2UtPmJhc2Up KSB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgc3luY29iai0+dGltZWxpbmUgPSBzaWduYWxf cHQtPnZhbHVlOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGxpc3RfZGVsKCZzaWduYWxfcHQt Pmxpc3QpOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGRtYV9mZW5jZV9wdXQoJnNpZ25hbF9w dC0+YmFzZS0+YmFzZSk7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAga2ZyZWUoc2lnbmFsX3B0 KTsKPj4+PiArICAgICAgICAgICAgfSBlbHNlIHsKPj4+PiArICAgICAgICAgICAgICAgICAgICAv KnNpZ25hbF9wdCBpcyBpbiBvcmRlciBpbiBsaXN0LCBmcm9tIHNtYWxsIHRvIGJpZywgc28KPj4+ PiArICAgICAgICAgICAgICAgICAgICAgKiB0aGUgbGF0ZXIgbXVzdCBub3QgYmUgc2lnbmFsIGVp dGhlciAqLwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgICAgICAg ICB9Cj4+Pj4gKyAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgc3Bpbl91bmxvY2soJnN5bmNvYmotPmxv Y2spOwo+Pj4+ICt9Cj4+Pj4gICAgLyoqCj4+Pj4gICAgICogZHJtX3N5bmNvYmpfcmVwbGFjZV9m ZW5jZSAtIHJlcGxhY2UgZmVuY2UgaW4gYSBzeW5jIG9iamVjdC4KPj4+PiAgICAgKiBAc3luY29i ajogU3luYyBvYmplY3QgdG8gcmVwbGFjZSBmZW5jZSBpbgo+Pj4+IEBAIC0xNzYsMjggKzMzOSwy OSBAQCB2b2lkIGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3RydWN0IGRybV9zeW5jb2JqICpz eW5jb2JqLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0IHBvaW50LAo+Pj4+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCj4+ Pj4gICAgewo+Pj4+IC0gICAgc3RydWN0IGRtYV9mZW5jZSAqb2xkX2ZlbmNlOwo+Pj4+IC0gICAg c3RydWN0IGRybV9zeW5jb2JqX2NiICpjdXIsICp0bXA7Cj4+Pj4gLQo+Pj4+IC0gICAgaWYgKGZl bmNlKQo+Pj4+IC0gICAgICAgICAgICBkbWFfZmVuY2VfZ2V0KGZlbmNlKTsKPj4+PiAtCj4+Pj4g LSAgICBzcGluX2xvY2soJnN5bmNvYmotPmxvY2spOwo+Pj4+IC0KPj4+PiAtICAgIG9sZF9mZW5j ZSA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQoc3luY29iai0+ZmVuY2UsCj4+Pj4gLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tkZXBfaXNfaGVsZCgmc3lu Y29iai0+bG9jaykpOwo+Pj4+IC0gICAgcmN1X2Fzc2lnbl9wb2ludGVyKHN5bmNvYmotPmZlbmNl LCBmZW5jZSk7Cj4+Pj4gKyAgICB1NjQgcHRfdmFsdWUgPSBwb2ludDsKPj4+PiArCj4+Pj4gKyAg ICBkcm1fc3luY29ial9nYXJiYWdlX2NvbGxlY3Rpb24oc3luY29iaik7Cj4+Pj4gKyAgICBpZiAo c3luY29iai0+dHlwZSA9PSBEUk1fU1lOQ09CSl9UWVBFX0JJTkFSWSkgewo+Pj4+ICsgICAgICAg ICAgICBpZiAoIWZlbmNlKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgZHJtX3N5bmNvYmpf ZmluaShzeW5jb2JqKTsKPj4+PiArICAgICAgICAgICAgICAgICAgICBkcm1fc3luY29ial9pbml0 KHN5bmNvYmopOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybjsKPj4+PiArICAgICAg ICAgICAgfQo+Pj4+ICsgICAgICAgICAgICBwdF92YWx1ZSA9IHN5bmNvYmotPnNpZ25hbF9wb2lu dCArCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgRFJNX1NZTkNPQkpfQklOQVJZX1BPSU5UOwo+ Pj4+ICsgICAgfQo+Pj4+ICsgICAgZHJtX3N5bmNvYmpfY3JlYXRlX3NpZ25hbF9wdChzeW5jb2Jq LCBmZW5jZSwgcHRfdmFsdWUpOwo+Pj4+ICsgICAgaWYgKGZlbmNlKSB7Cj4+Pj4gKyAgICAgICAg ICAgIHN0cnVjdCBkcm1fc3luY29ial9jYiAqY3VyLCAqdG1wOwo+Pj4+Cj4+Pj4gLSAgICBpZiAo ZmVuY2UgIT0gb2xkX2ZlbmNlKSB7Cj4+Pj4gKyAgICAgICAgICAgIHNwaW5fbG9jaygmc3luY29i ai0+bG9jayk7Cj4+Pj4gICAgICAgICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3Vy LCB0bXAsICZzeW5jb2JqLT5jYl9saXN0LCBub2RlKSB7Cj4+Pj4gICAgICAgICAgICAgICAgICAg ICAgIGxpc3RfZGVsX2luaXQoJmN1ci0+bm9kZSk7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAg IGN1ci0+ZnVuYyhzeW5jb2JqLCBjdXIpOwo+Pj4+ICAgICAgICAgICAgICAgfQo+Pj4+ICsgICAg ICAgICAgICBzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4gICAgICAgfQo+Pj4+IC0K Pj4+PiAtICAgIHNwaW5fdW5sb2NrKCZzeW5jb2JqLT5sb2NrKTsKPj4+PiAtCj4+Pj4gLSAgICBk bWFfZmVuY2VfcHV0KG9sZF9mZW5jZSk7Cj4+Pj4gICAgfQo+Pj4+ICAgIEVYUE9SVF9TWU1CT0wo ZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZSk7Cj4+Pj4KPj4+PiBAQCAtMjIwLDYgKzM4NCw0NiBA QCBzdGF0aWMgaW50IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzdHJ1Y3QgZHJtX3N5 bmNvYmogKnN5bmNvYmopCj4+Pj4gICAgICAgcmV0dXJuIDA7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4g K3N0YXRpYyBpbnQKPj4+PiArZHJtX3N5bmNvYmpfcG9pbnRfZ2V0KHN0cnVjdCBkcm1fc3luY29i aiAqc3luY29iaiwgdTY0IHBvaW50LCB1NjQgZmxhZ3MsCj4+Pj4gKyAgICAgICAgICAgICAgICAg IHN0cnVjdCBkbWFfZmVuY2UgKipmZW5jZSkKPj4+PiArewo+Pj4+ICsgICAgaW50IHJldCA9IDA7 Cj4+Pj4gKwo+Pj4+ICsgICAgaWYgKGZsYWdzICYgRFJNX1NZTkNPQkpfV0FJVF9GTEFHU19XQUlU X0ZPUl9TVUJNSVQpIHsKPj4+PiArICAgICAgICAgICAgcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1 cHRpYmxlKHN5bmNvYmotPndxLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcG9pbnQgPD0gc3luY29iai0+c2lnbmFsX3BvaW50KTsKPj4+PiArICAgICAg ICAgICAgaWYgKHJldCA8IDApCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsK Pj4+PiArICAgIH0KPj4+PiArICAgIHNwaW5fbG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4gKyAg ICAqZmVuY2UgPSBkcm1fc3luY29ial9maW5kX3NpZ25hbF9wdF9mb3JfcG9pbnQoc3luY29iaiwg cG9pbnQpOwo+Pj4+ICsgICAgaWYgKCEqZmVuY2UpCj4+Pj4gKyAgICAgICAgICAgIHJldCA9IC1F SU5WQUw7Cj4+Pj4gKyAgICBzcGluX3VubG9jaygmc3luY29iai0+bG9jayk7Cj4+Pj4gKyAgICBy ZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtpbnQgZHJtX3N5bmNvYmpfc2VhcmNoX2Zl bmNlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwgdTY0IHBvaW50LAo+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgdTY0IGZsYWdzLCBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2UpCj4+ PiBLZXJuZWxkb2MgaXMgbWlzc2luZyBmb3IgdGhpcyBvbmUgaGVyZS4KPj4gSXQncyBhbG1vc3Qg c2FtZSBhcyBkcm1fc3luY29ial9maW5kX2ZlbmNlLCBpcyBpdCBzdGlsbCBuZWNlc3Nhcnk/Cj4g RXZlbiBtb3JlIHJlYXNvbnMsIGlmIHlvdSBkbyBhIGZldyBsaW5rcyBiZXR3ZWVuIGNsb3NlbHkg cmVsYXRlZCBmdW5jdGlvbnMgOi0pCj4KPj4+IEkgYWxzbyB0aGluayBpbXByb3ZpbmcgdGhlIG92 ZXJ2aWV3IGNvbW1lbnQgdG8gZXhwbGFpbiB0aGUgdGltZWxpbmUgc3R1ZmYsCj4+PiBlLmcuIGxp bmsgdG8gdGhlIHZ1bGthbiBleHRlbnNpb24sIGFuZCBzb21lIHdvcmRzIG9uIGhvdyBpdCdzIHN1 cHBvc2VkIHRvCj4+PiBiZSB1c2VkICh5b3UgbmVlZCBhIHN1Ym1pdCB0aHJlYWQgYW5kIGJsb2Nr IGluIHVzZXJzcGFjZSB1bnRpbCBhbGwgZnV0dXJlCj4+PiB0aW1lbGluZSBwb2ludHMgaGF2ZSBt YXRlcmlhbGl6ZWQsIG9ubHkgdGhlbiB5b3UgY2FuIHN1Ym1pdCB0byB0aGUKPj4+IGtlcm5lbCku Cj4+Pgo+Pj4+ICt7Cj4+Pj4gKyAgICB1NjQgcHRfdmFsdWUgPSBwb2ludDsKPj4+PiArCj4+Pj4g KyAgICBpZiAoIXN5bmNvYmopCj4+Pj4gKyAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwo+Pj4+ ICsKPj4+PiArICAgIGRybV9zeW5jb2JqX2dhcmJhZ2VfY29sbGVjdGlvbihzeW5jb2JqKTsKPj4+ PiArICAgIGlmIChzeW5jb2JqLT50eXBlID09IERSTV9TWU5DT0JKX1RZUEVfQklOQVJZKSB7Cj4+ Pj4gKyAgICAgICAgICAgIC8qQklOQVJZIHN5bmNvYmogYWx3YXlzIHdhaXQgb24gbGFzdCBwdCAq Lwo+Pj4+ICsgICAgICAgICAgICBwdF92YWx1ZSA9IHN5bmNvYmotPnNpZ25hbF9wb2ludDsKPj4+ PiArCj4+Pj4gKyAgICAgICAgICAgIGlmIChwdF92YWx1ZSA9PSAwKQo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgIHB0X3ZhbHVlICs9IERSTV9TWU5DT0JKX0JJTkFSWV9QT0lOVDsKPj4+PiArICAg IH0KPj4+PiArICAgIHJldHVybiBkcm1fc3luY29ial9wb2ludF9nZXQoc3luY29iaiwgcHRfdmFs dWUsIGZsYWdzLCBmZW5jZSk7Cj4+Pj4gK30KPj4+PiArRVhQT1JUX1NZTUJPTChkcm1fc3luY29i al9zZWFyY2hfZmVuY2UpOwo+Pj4+ICsKPj4+PiAgICAvKioKPj4+PiAgICAgKiBkcm1fc3luY29i al9maW5kX2ZlbmNlIC0gbG9va3VwIGFuZCByZWZlcmVuY2UgdGhlIGZlbmNlIGluIGEgc3luYyBv YmplY3QKPj4+PiAgICAgKiBAZmlsZV9wcml2YXRlOiBkcm0gZmlsZSBwcml2YXRlIHBvaW50ZXIK Pj4+PiBAQCAtMjI4LDcgKzQzMiw3IEBAIHN0YXRpYyBpbnQgZHJtX3N5bmNvYmpfYXNzaWduX251 bGxfaGFuZGxlKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaikKPj4+PiAgICAgKiBAZmVuY2U6 IG91dCBwYXJhbWV0ZXIgZm9yIHRoZSBmZW5jZQo+Pj4+ICAgICAqCj4+Pj4gICAgICogVGhpcyBp cyBqdXN0IGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb21iaW5lcyBkcm1fc3luY29ial9m aW5kKCkgYW5kCj4+Pj4gLSAqIGRybV9zeW5jb2JqX2ZlbmNlX2dldCgpLgo+Pj4+ICsgKiBkcm1f c3luY29ial9sb29rdXBfZmVuY2UoKS4KPj4+PiAgICAgKgo+Pj4+ICAgICAqIFJldHVybnMgMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgdmFsdWUgb24gZmFpbHVyZS4gT24gc3VjY2Vz cyBAZmVuY2UKPj4+PiAgICAgKiBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgZmVuY2UsIHdo aWNoIG11c3QgYmUgcmVsZWFzZWQgYnkgY2FsbGluZwo+Pj4+IEBAIC0yMzksMTUgKzQ0Myw5IEBA IGludCBkcm1fc3luY29ial9maW5kX2ZlbmNlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRl LAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZmVuY2Up Cj4+Pj4gICAgewo+Pj4+ICAgICAgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiA9IGRybV9z eW5jb2JqX2ZpbmQoZmlsZV9wcml2YXRlLCBoYW5kbGUpOwo+Pj4+IC0gICAgaW50IHJldCA9IDA7 Cj4+Pj4gLQo+Pj4+IC0gICAgaWYgKCFzeW5jb2JqKQo+Pj4+IC0gICAgICAgICAgICByZXR1cm4g LUVOT0VOVDsKPj4+PiArICAgIGludCByZXQ7Cj4+Pj4KPj4+PiAtICAgICpmZW5jZSA9IGRybV9z eW5jb2JqX2ZlbmNlX2dldChzeW5jb2JqKTsKPj4+PiAtICAgIGlmICghKmZlbmNlKSB7Cj4+Pj4g LSAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4+Pj4gLSAgICB9Cj4+Pj4gKyAgICByZXQgPSBk cm1fc3luY29ial9zZWFyY2hfZmVuY2Uoc3luY29iaiwgcG9pbnQsIGZsYWdzLCBmZW5jZSk7Cj4+ Pj4gICAgICAgZHJtX3N5bmNvYmpfcHV0KHN5bmNvYmopOwo+Pj4+ICAgICAgIHJldHVybiByZXQ7 Cj4+Pj4gICAgfQo+Pj4+IEBAIC0yNjQsNyArNDYyLDcgQEAgdm9pZCBkcm1fc3luY29ial9mcmVl KHN0cnVjdCBrcmVmICprcmVmKQo+Pj4+ICAgICAgIHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29i aiA9IGNvbnRhaW5lcl9vZihrcmVmLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmosCj4+Pj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmNvdW50KTsKPj4+PiAtICAg IGRybV9zeW5jb2JqX3JlcGxhY2VfZmVuY2Uoc3luY29iaiwgMCwgTlVMTCk7Cj4+Pj4gKyAgICBk cm1fc3luY29ial9maW5pKHN5bmNvYmopOwo+Pj4+ICAgICAgIGtmcmVlKHN5bmNvYmopOwo+Pj4+ ICAgIH0KPj4+PiAgICBFWFBPUlRfU1lNQk9MKGRybV9zeW5jb2JqX2ZyZWUpOwo+Pj4+IEBAIC0y OTQsNiArNDkyLDExIEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5jb2Jq ICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAo+Pj4+ICAgICAgIGtyZWZfaW5pdCgmc3lu Y29iai0+cmVmY291bnQpOwo+Pj4+ICAgICAgIElOSVRfTElTVF9IRUFEKCZzeW5jb2JqLT5jYl9s aXN0KTsKPj4+PiAgICAgICBzcGluX2xvY2tfaW5pdCgmc3luY29iai0+bG9jayk7Cj4+Pj4gKyAg ICBpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfVFlQRV9USU1FTElORSkKPj4+PiArICAg ICAgICAgICAgc3luY29iai0+dHlwZSA9IERSTV9TWU5DT0JKX1RZUEVfVElNRUxJTkU7Cj4+Pj4g KyAgICBlbHNlCj4+Pj4gKyAgICAgICAgICAgIHN5bmNvYmotPnR5cGUgPSBEUk1fU1lOQ09CSl9U WVBFX0JJTkFSWTsKPj4+PiArICAgIGRybV9zeW5jb2JqX2luaXQoc3luY29iaik7Cj4+Pj4KPj4+ PiAgICAgICBpZiAoZmxhZ3MgJiBEUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpIHsKPj4+PiAg ICAgICAgICAgICAgIHJldCA9IGRybV9zeW5jb2JqX2Fzc2lnbl9udWxsX2hhbmRsZShzeW5jb2Jq KTsKPj4+PiBAQCAtNTc2LDcgKzc3OSw4IEBAIGRybV9zeW5jb2JqX2NyZWF0ZV9pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+Pj4+ICAgICAgICAgICAgICAgcmV0dXJu IC1FTk9ERVY7Cj4+Pj4KPj4+PiAgICAgICAvKiBubyB2YWxpZCBmbGFncyB5ZXQgKi8KPj4+PiAt ICAgIGlmIChhcmdzLT5mbGFncyAmIH5EUk1fU1lOQ09CSl9DUkVBVEVfU0lHTkFMRUQpCj4+Pj4g KyAgICBpZiAoYXJncy0+ZmxhZ3MgJiB+KERSTV9TWU5DT0JKX0NSRUFURV9TSUdOQUxFRCB8Cj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgIERSTV9TWU5DT0JKX0NSRUFURV9UWVBFX1RJTUVM SU5FKSkKPj4+PiAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+Cj4+Pj4gICAgICAg cmV0dXJuIGRybV9zeW5jb2JqX2NyZWF0ZV9hc19oYW5kbGUoZmlsZV9wcml2YXRlLAo+Pj4+IEBA IC02NjksOSArODczLDggQEAgc3RhdGljIHZvaWQgc3luY29ial93YWl0X3N5bmNvYmpfZnVuYyhz dHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosCj4+Pj4gICAgICAgc3RydWN0IHN5bmNvYmpfd2Fp dF9lbnRyeSAqd2FpdCA9Cj4+Pj4gICAgICAgICAgICAgICBjb250YWluZXJfb2YoY2IsIHN0cnVj dCBzeW5jb2JqX3dhaXRfZW50cnksIHN5bmNvYmpfY2IpOwo+Pj4+Cj4+Pj4gLSAgICAvKiBUaGlz IGhhcHBlbnMgaW5zaWRlIHRoZSBzeW5jb2JqIGxvY2sgKi8KPj4+PiAtICAgIHdhaXQtPmZlbmNl ID0gZG1hX2ZlbmNlX2dldChyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHN5bmNvYmotPmZlbmNl LAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9ja2RlcF9pc19oZWxkKCZzeW5jb2JqLT5sb2NrKSkpOwo+Pj4+ICsgICAgZHJt X3N5bmNvYmpfc2VhcmNoX2ZlbmNlKHN5bmNvYmosIDAsIDAsICZ3YWl0LT5mZW5jZSk7Cj4+Pj4g Kwo+Pj4+ICAgICAgIHdha2VfdXBfcHJvY2Vzcyh3YWl0LT50YXNrKTsKPj4+PiAgICB9Cj4+Pj4K Pj4+PiBAQCAtNjk4LDcgKzkwMSw4IEBAIHN0YXRpYyBzaWduZWQgbG9uZyBkcm1fc3luY29ial9h cnJheV93YWl0X3RpbWVvdXQoc3RydWN0IGRybV9zeW5jb2JqICoqc3luY29ianMsCj4+Pj4gICAg ICAgc2lnbmFsZWRfY291bnQgPSAwOwo+Pj4+ICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsg KytpKSB7Cj4+Pj4gICAgICAgICAgICAgICBlbnRyaWVzW2ldLnRhc2sgPSBjdXJyZW50Owo+Pj4+ IC0gICAgICAgICAgICBlbnRyaWVzW2ldLmZlbmNlID0gZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KHN5 bmNvYmpzW2ldKTsKPj4+PiArICAgICAgICAgICAgcmV0ID0gZHJtX3N5bmNvYmpfc2VhcmNoX2Zl bmNlKHN5bmNvYmpzW2ldLCAwLCAwLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJmVudHJpZXNbaV0uZmVuY2UpOwo+Pj4+ICAgICAgICAgICAgICAgaWYg KCFlbnRyaWVzW2ldLmZlbmNlKSB7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIGlmIChmbGFn cyAmIERSTV9TWU5DT0JKX1dBSVRfRkxBR1NfV0FJVF9GT1JfU1VCTUlUKSB7Cj4+Pj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4gQEAgLTk3MCwxMiArMTE3NCwx MyBAQCBkcm1fc3luY29ial9yZXNldF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAo+Pj4+ICAgICAgIGlmIChyZXQgPCAwKQo+Pj4+ICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPj4+Pgo+Pj4+IC0gICAgZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNvdW50X2hhbmRsZXM7 IGkrKykKPj4+PiAtICAgICAgICAgICAgZHJtX3N5bmNvYmpfcmVwbGFjZV9mZW5jZShzeW5jb2Jq c1tpXSwgMCwgTlVMTCk7Cj4+Pj4gLQo+Pj4+ICsgICAgZm9yIChpID0gMDsgaSA8IGFyZ3MtPmNv dW50X2hhbmRsZXM7IGkrKykgewo+Pj4+ICsgICAgICAgICAgICBkcm1fc3luY29ial9maW5pKHN5 bmNvYmpzW2ldKTsKPj4+PiArICAgICAgICAgICAgZHJtX3N5bmNvYmpfaW5pdChzeW5jb2Jqc1tp XSk7Cj4+Pj4gKyAgICB9Cj4+Pj4gICAgICAgZHJtX3N5bmNvYmpfYXJyYXlfZnJlZShzeW5jb2Jq cywgYXJncy0+Y291bnRfaGFuZGxlcyk7Cj4+Pj4KPj4+PiAtICAgIHJldHVybiAwOwo+Pj4+ICsg ICAgcmV0dXJuIHJldDsKPj4+PiAgICB9Cj4+Pj4KPj4+PiAgICBpbnQKPj4+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+Pj4gaW5kZXggMGE4ZDJkNjRmMzgw Li44YThkMjFiMjQxMTkgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fZXhlY2J1ZmZlci5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4+Pj4gQEAgLTIxMzcsNyArMjEzNyw3IEBAIGF3YWl0X2ZlbmNlX2Fy cmF5KHN0cnVjdCBpOTE1X2V4ZWNidWZmZXIgKmViLAo+Pj4+ICAgICAgICAgICAgICAgaWYgKCEo ZmxhZ3MgJiBJOTE1X0VYRUNfRkVOQ0VfV0FJVCkpCj4+Pj4gICAgICAgICAgICAgICAgICAgICAg IGNvbnRpbnVlOwo+Pj4+Cj4+Pj4gLSAgICAgICAgICAgIGZlbmNlID0gZHJtX3N5bmNvYmpfZmVu Y2VfZ2V0KHN5bmNvYmopOwo+Pj4+ICsgICAgICAgICAgICBkcm1fc3luY29ial9zZWFyY2hfZmVu Y2Uoc3luY29iaiwgMCwgMCwgJmZlbmNlKTsKPj4+PiAgICAgICAgICAgICAgIGlmICghZmVuY2Up Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+Pj4+Cj4+Pj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9zeW5jb2JqLmggYi9pbmNsdWRlL2RybS9kcm1fc3lu Y29iai5oCj4+Pj4gaW5kZXggMmVkYTQ0ZGVmNjM5Li44NWIzNmQ0ZTUzZWUgMTAwNjQ0Cj4+Pj4g LS0tIGEvaW5jbHVkZS9kcm0vZHJtX3N5bmNvYmouaAo+Pj4+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9zeW5jb2JqLmgKPj4+PiBAQCAtMzAsNiArMzAsMTEgQEAKPj4+Pgo+Pj4+ICAgIHN0cnVjdCBk cm1fc3luY29ial9jYjsKPj4+Pgo+Pj4+ICtlbnVtIGRybV9zeW5jb2JqX3R5cGUgewo+Pj4+ICsg ICAgRFJNX1NZTkNPQkpfVFlQRV9CSU5BUlksCj4+Pj4gKyAgICBEUk1fU1lOQ09CSl9UWVBFX1RJ TUVMSU5FCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICAgIC8qKgo+Pj4+ICAgICAqIHN0cnVjdCBkcm1f c3luY29iaiAtIHN5bmMgb2JqZWN0Lgo+Pj4+ICAgICAqCj4+PiBUaGUga2VybmVsZG9jIGZvciB0 aGlzIGFsc28gaXNuJ3QgYWNjdXJhdGUgYW55bW9yZS4KPj4gQ2FuIGtlcm5lbGRvYyBiZSBhIHNl cGFyYXRlIHBhdGNoPwo+IFlvdSBhbHJlYWR5IHVwZGF0ZSB0aGUga2VybmVsZG9jLCBidXQgbm90 IGNvbXBsZXRlbHkgaW4gdGhpcyBwYXRjaC4KPiBUaGF0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBz cGxpdCB1cC4KPgo+Pj4gV2l0aCB0aGUga2VybmVsLWRvYyBwb2xpc2hlZDoKPj4+Cj4+PiBBY2tl ZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPj4gVGhhbmtzIGF0 IGxlYXN0Lgo+Pgo+Pj4gQnV0IEkgdGhpbmsgd2UgZGVmaW5pdGVseSB3YW50IGEgZnVsbCBhY2sg Zm9yIHRoZSB1YXBpIGZyb20gcmFkdi9hbnYgZ3V5cwo+Pj4gKHBsdXMgdGhlIHVzZXJzcGFjZSBm b3IgZWl0aGVyIG9mIHRob3NlKS4KPj4gRGF2ZSBhbmQgQmFzIGFyZSByaWdodCBwZW9wbGUsIHJp Z2h0Pwo+IEZvciByYWR2IHllcywgZm9yIGFudiB3ZSB3YW50IEphc29uIEVrc3RyYW5kIEkgdGhp bmsuCj4gLURhbmllbAo+Cj4+IFRoYW5rcywKPj4gRGF2aWQKPj4+IC1EYW5pZWwKPj4+Cj4+Pj4g QEAgLTQxLDE5ICs0NiwzNiBAQCBzdHJ1Y3QgZHJtX3N5bmNvYmogewo+Pj4+ICAgICAgICAqLwo+ Pj4+ICAgICAgIHN0cnVjdCBrcmVmIHJlZmNvdW50Owo+Pj4+ICAgICAgIC8qKgo+Pj4+IC0gICAg ICogQGZlbmNlOgo+Pj4+IC0gICAgICogTlVMTCBvciBhIHBvaW50ZXIgdG8gdGhlIGZlbmNlIGJv dW5kIHRvIHRoaXMgb2JqZWN0Lgo+Pj4+IC0gICAgICoKPj4+PiAtICAgICAqIFRoaXMgZmllbGQg c2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5LiBVc2UgZHJtX3N5bmNvYmpfZmVuY2VfZ2V0KCkK Pj4+PiAtICAgICAqIGFuZCBkcm1fc3luY29ial9yZXBsYWNlX2ZlbmNlKCkgaW5zdGVhZC4KPj4+ PiArICAgICAqIEB0eXBlOiBpbmRpY2F0ZSBzeW5jb2JqIHR5cGUKPj4+PiArICAgICAqLwo+Pj4+ ICsgICAgZW51bSBkcm1fc3luY29ial90eXBlIHR5cGU7Cj4+Pj4gKyAgICAvKioKPj4+PiArICAg ICAqIEB3cTogd2FpdCBzaWduYWwgb3BlcmF0aW9uIHdvcmsgcXVldWUKPj4+PiArICAgICAqLwo+ Pj4+ICsgICAgd2FpdF9xdWV1ZV9oZWFkX3QgICAgICAgd3E7Cj4+Pj4gKyAgICAvKioKPj4+PiAr ICAgICAqIEB0aW1lbGluZV9jb250ZXh0OiBmZW5jZSBjb250ZXh0IHVzZWQgYnkgdGltZWxpbmUK Pj4+PiAgICAgICAgKi8KPj4+PiAtICAgIHN0cnVjdCBkbWFfZmVuY2UgX19yY3UgKmZlbmNlOwo+ Pj4+ICsgICAgdTY0IHRpbWVsaW5lX2NvbnRleHQ7Cj4+Pj4gICAgICAgLyoqCj4+Pj4gLSAgICAg KiBAY2JfbGlzdDogTGlzdCBvZiBjYWxsYmFja3MgdG8gY2FsbCB3aGVuIHRoZSAmZmVuY2UgZ2V0 cyByZXBsYWNlZC4KPj4+PiArICAgICAqIEB0aW1lbGluZTogc3luY29iaiB0aW1lbGluZSB2YWx1 ZSwgd2hpY2ggaW5kaWNhdGVzIHBvaW50IGlzIHNpZ25hbGVkLgo+Pj4+ICAgICAgICAqLwo+Pj4+ ICsgICAgdTY0IHRpbWVsaW5lOwo+Pj4+ICsgICAgLyoqCj4+Pj4gKyAgICAgKiBAc2lnbmFsX3Bv aW50OiB3aGljaCBpbmRpY2F0ZXMgdGhlIGxhdGVzdCBzaWduYWxlciBwb2ludC4KPj4+PiArICAg ICAqLwo+Pj4+ICsgICAgdTY0IHNpZ25hbF9wb2ludDsKPj4+PiArICAgIC8qKgo+Pj4+ICsgICAg ICogQHNpZ25hbF9wdF9saXN0OiBzaWduYWxlciBwb2ludCBsaXN0Lgo+Pj4+ICsgICAgICovCj4+ Pj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIHNpZ25hbF9wdF9saXN0Owo+Pj4+ICsKPj4+PiArICAg IC8qKgo+Pj4+ICsgICAgICAgICAqIEBjYl9saXN0OiBMaXN0IG9mIGNhbGxiYWNrcyB0byBjYWxs IHdoZW4gdGhlICZmZW5jZSBnZXRzIHJlcGxhY2VkLgo+Pj4+ICsgICAgICAgICAqLwo+Pj4+ICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgY2JfbGlzdDsKPj4+PiAgICAgICAvKioKPj4+PiAtICAgICAq IEBsb2NrOiBQcm90ZWN0cyAmY2JfbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNlLgo+Pj4+ICsg ICAgICogQGxvY2s6IFByb3RlY3RzIHN5bmNvYmogbGlzdCBhbmQgd3JpdGUtbG9ja3MgJmZlbmNl Lgo+Pj4+ICAgICAgICAqLwo+Pj4+ICAgICAgIHNwaW5sb2NrX3QgbG9jazsKPj4+PiAgICAgICAv KioKPj4+PiBAQCAtNjgsNyArOTAsNyBAQCB0eXBlZGVmIHZvaWQgKCpkcm1fc3luY29ial9mdW5j X3QpKHN0cnVjdCBkcm1fc3luY29iaiAqc3luY29iaiwKPj4+PiAgICAvKioKPj4+PiAgICAgKiBz dHJ1Y3QgZHJtX3N5bmNvYmpfY2IgLSBjYWxsYmFjayBmb3IgZHJtX3N5bmNvYmpfYWRkX2NhbGxi YWNrCj4+Pj4gICAgICogQG5vZGU6IHVzZWQgYnkgZHJtX3N5bmNvYl9hZGRfY2FsbGJhY2sgdG8g YXBwZW5kIHRoaXMgc3RydWN0IHRvCj4+Pj4gLSAqICAgICZkcm1fc3luY29iai5jYl9saXN0Cj4+ Pj4gKyAqICAgICAgICZkcm1fc3luY29iai5jYl9saXN0Cj4+Pj4gICAgICogQGZ1bmM6IGRybV9z eW5jb2JqX2Z1bmNfdCB0byBjYWxsCj4+Pj4gICAgICoKPj4+PiAgICAgKiBUaGlzIHN0cnVjdCB3 aWxsIGJlIGluaXRpYWxpemVkIGJ5IGRybV9zeW5jb2JqX2FkZF9jYWxsYmFjaywgYWRkaXRpb25h bAo+Pj4+IEBAIC0xMDYsMjkgKzEyOCw2IEBAIGRybV9zeW5jb2JqX3B1dChzdHJ1Y3QgZHJtX3N5 bmNvYmogKm9iaikKPj4+PiAgICAgICBrcmVmX3B1dCgmb2JqLT5yZWZjb3VudCwgZHJtX3N5bmNv YmpfZnJlZSk7Cj4+Pj4gICAgfQo+Pj4+Cj4+Pj4gLS8qKgo+Pj4+IC0gKiBkcm1fc3luY29ial9m ZW5jZV9nZXQgLSBnZXQgYSByZWZlcmVuY2UgdG8gYSBmZW5jZSBpbiBhIHN5bmMgb2JqZWN0Cj4+ Pj4gLSAqIEBzeW5jb2JqOiBzeW5jIG9iamVjdC4KPj4+PiAtICoKPj4+PiAtICogVGhpcyBhY3F1 aXJlcyBhZGRpdGlvbmFsIHJlZmVyZW5jZSB0byAmZHJtX3N5bmNvYmouZmVuY2UgY29udGFpbmVk IGluIEBvYmosCj4+Pj4gLSAqIGlmIG5vdCBOVUxMLiBJdCBpcyBpbGxlZ2FsIHRvIGNhbGwgdGhp cyB3aXRob3V0IGFscmVhZHkgaG9sZGluZyBhIHJlZmVyZW5jZS4KPj4+PiAtICogTm8gbG9ja3Mg cmVxdWlyZWQuCj4+Pj4gLSAqCj4+Pj4gLSAqIFJldHVybnM6Cj4+Pj4gLSAqIEVpdGhlciB0aGUg ZmVuY2Ugb2YgQG9iaiBvciBOVUxMIGlmIHRoZXJlJ3Mgbm9uZS4KPj4+PiAtICovCj4+Pj4gLXN0 YXRpYyBpbmxpbmUgc3RydWN0IGRtYV9mZW5jZSAqCj4+Pj4gLWRybV9zeW5jb2JqX2ZlbmNlX2dl dChzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmopCj4+Pj4gLXsKPj4+PiAtICAgIHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlOwo+Pj4+IC0KPj4+PiAtICAgIHJjdV9yZWFkX2xvY2soKTsKPj4+PiAt ICAgIGZlbmNlID0gZG1hX2ZlbmNlX2dldF9yY3Vfc2FmZSgmc3luY29iai0+ZmVuY2UpOwo+Pj4+ IC0gICAgcmN1X3JlYWRfdW5sb2NrKCk7Cj4+Pj4gLQo+Pj4+IC0gICAgcmV0dXJuIGZlbmNlOwo+ Pj4+IC19Cj4+Pj4gLQo+Pj4+ICAgIHN0cnVjdCBkcm1fc3luY29iaiAqZHJtX3N5bmNvYmpfZmlu ZChzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdmF0ZSwKPj4+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHUzMiBoYW5kbGUpOwo+Pj4+ICAgIHZvaWQgZHJtX3N5bmNvYmpfcmVw bGFjZV9mZW5jZShzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwKPj4+PiBA QCAtMTQyLDUgKzE0MSw3IEBAIGludCBkcm1fc3luY29ial9jcmVhdGUoc3RydWN0IGRybV9zeW5j b2JqICoqb3V0X3N5bmNvYmosIHVpbnQzMl90IGZsYWdzLAo+Pj4+ICAgIGludCBkcm1fc3luY29i al9nZXRfaGFuZGxlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2YXRlLAo+Pj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHUzMiAqaGFuZGxl KTsKPj4+PiAgICBpbnQgZHJtX3N5bmNvYmpfZ2V0X2ZkKHN0cnVjdCBkcm1fc3luY29iaiAqc3lu Y29iaiwgaW50ICpwX2ZkKTsKPj4+PiAraW50IGRybV9zeW5jb2JqX3NlYXJjaF9mZW5jZShzdHJ1 Y3QgZHJtX3N5bmNvYmogKnN5bmNvYmosIHU2NCBwb2ludCwgdTY0IGZsYWdzLAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKmZlbmNlKTsKPj4+Pgo+Pj4+ ICAgICNlbmRpZgo+Pj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2RybS5oIGIvaW5j bHVkZS91YXBpL2RybS9kcm0uaAo+Pj4+IGluZGV4IDMwMGYzMzY2MzNmMi4uY2ViZGIyNTQxZWI3 IDEwMDY0NAo+Pj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vZHJtLmgKPj4+PiArKysgYi9pbmNs dWRlL3VhcGkvZHJtL2RybS5oCj4+Pj4gQEAgLTcxNyw2ICs3MTcsNyBAQCBzdHJ1Y3QgZHJtX3By aW1lX2hhbmRsZSB7Cj4+Pj4gICAgc3RydWN0IGRybV9zeW5jb2JqX2NyZWF0ZSB7Cj4+Pj4gICAg ICAgX191MzIgaGFuZGxlOwo+Pj4+ICAgICNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1NJR05B TEVEICgxIDw8IDApCj4+Pj4gKyNkZWZpbmUgRFJNX1NZTkNPQkpfQ1JFQVRFX1RZUEVfVElNRUxJ TkUgKDEgPDwgMSkKPj4+PiAgICAgICBfX3UzMiBmbGFnczsKPj4+PiAgICB9Owo+Pj4+Cj4+Pj4g LS0KPj4+PiAyLjE3LjEKPj4+Pgo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ft ZC1nZngK