From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 2/3] drm/scheduler: add documentation Date: Tue, 29 May 2018 10:05:58 +0200 Message-ID: <20180529080558.GD3438@phenom.ffwll.local> References: <20180525044548.21014-1-nayan26deshmukh@gmail.com> <20180525044548.21014-2-nayan26deshmukh@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4C076E25A for ; Tue, 29 May 2018 08:06:02 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id f6-v6so37852976wmc.4 for ; Tue, 29 May 2018 01:06:02 -0700 (PDT) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Nayan Deshmukh Cc: Alex Deucher , dri-devel , Christian =?iso-8859-1?Q?K=F6nig?= List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCBNYXkgMjgsIDIwMTggYXQgMDI6MDE6NDlQTSArMDUzMCwgTmF5YW4gRGVzaG11a2gg d3JvdGU6Cj4gSSBoYXZlIGRvbmUgdGhhdCBhbHJlYWR5LCBzZW50IGEgcGF0Y2ggd2l0aCB0aGlz IG9uZS4gVGhlIGxhc3QgcGF0Y2gKPiBvZiB0aGlzIHNlcmllcy4gSSBoYXZlIHRyaWVkIHRvIHRh a2UgY2FyZSBvZiBhbGwgdGhlIGh5cGVybGlua3MuCgpPaCBncmVhdCwgd2FzIGp1bXBpbmcgdG8g Y29uY2x1c2lvbnMuIFVzdWFsbHkgSSBkbyB0aGF0IGZpcnN0LCBzbyB0aGF0IEkKY2FuIHNlZSBt aXN0YWtlcyB3aGlsZSBJIHdyaXRlIG91dCB0aGUgZG9jcy4gQnV0IGRvaW5nIGl0IGxhc3QgYWxz byB3b3JrcwouLi4KCkFjayBvbiB0aGUgc2VyaWVzIGZ3aXcuCi1EYW5pZWwKCj4gCj4gT24gTW9u LCBNYXkgMjgsIDIwMTggYXQgMTozOSBQTSwgRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNo PiB3cm90ZToKPiA+IE9uIEZyaSwgTWF5IDI1LCAyMDE4IGF0IDY6NDUgQU0sIE5heWFuIERlc2ht dWtoCj4gPiA8bmF5YW4yNmRlc2htdWtoQGdtYWlsLmNvbT4gd3JvdGU6Cj4gPj4gY29udmVydCBl eGlzdGluZyByYXcgY29tbWVudHMgaW50byBrZXJuZWwtZG9jIGZvcm1hdCBhcyB3ZWxsCj4gPj4g YXMgYWRkIG5ldyBkb2N1bWVudGF0aW9uCj4gPj4KPiA+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERl dWNoZXIgPGFsZXhhbmRlci5kZXVjaGVyQGFtZC5jb20+Cj4gPj4gU2lnbmVkLW9mZi1ieTogTmF5 YW4gRGVzaG11a2ggPG5heWFuMjZkZXNobXVraEBnbWFpbC5jb20+Cj4gPj4gLS0tCj4gPj4gIGRy aXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvZ3B1X3NjaGVkdWxlci5jIHwgMjE0ICsrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLQo+ID4+ICBpbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmggICAg ICAgICAgICAgICB8IDE1MyArKysrKysrKysrKysrKysrKy0tLS0KPiA+PiAgMiBmaWxlcyBjaGFu Z2VkLCAyOTYgaW5zZXJ0aW9ucygrKSwgNzEgZGVsZXRpb25zKC0pCj4gPgo+ID4gUGxlYXNlIGFs c28gaW5jbHVkZSBhbGwgdGhlIG5ldyBzY2hlZHVsZXIgZG9jcyBpbnRvCj4gPiBEb2N1bWVudGF0 aW9uL2dwdS9kcm0tbW0ucnN0IChJIHRoaW5rIHRoYXQncyB0aGUgbW9zdCBzdWl0YWJsZSBwbGFj ZSkKPiA+IGFuZCBtYWtlIHN1cmUgdGhlIHJlc3VsdGluZyBkb2NzIGxvb2sgZ29vZCBhbmQgaHlw ZXJsaW5rcyBhbGwgd29yawo+ID4gY29ycmVjdGx5IHVzaW5nCj4gPgo+ID4gJCBtYWtlIGh0bWxk b2NzCj4gPgo+ID4gVGhhbmtzLCBEYW5pZWwKPiA+Cj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v c2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuYwo+ID4+IGluZGV4IDQ0ZDQ4MDc2OGRmZS4uYzcwYzk4 M2UzZTc0IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9zY2hlZHVsZXIvZ3B1X3Nj aGVkdWxlci5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3NjaGVkdWxlci9ncHVfc2NoZWR1 bGVyLmMKPiA+PiBAQCAtMjEsNiArMjEsMjkgQEAKPiA+PiAgICoKPiA+PiAgICovCj4gPj4KPiA+ PiArLyoqCj4gPj4gKyAqIERPQzogT3ZlcnZpZXcKPiA+PiArICoKPiA+PiArICogVGhlIEdQVSBz Y2hlZHVsZXIgcHJvdmlkZXMgZW50aXRpZXMgd2hpY2ggYWxsb3cgdXNlcnNwYWNlIHRvIHB1c2gg am9icwo+ID4+ICsgKiBpbnRvIHNvZnR3YXJlIHF1ZXVlcyB3aGljaCBhcmUgdGhlbiBzY2hlZHVs ZWQgb24gYSBoYXJkd2FyZSBydW4gcXVldWUuCj4gPj4gKyAqIFRoZSBzb2Z0d2FyZSBxdWV1ZXMg aGF2ZSBhIHByaW9yaXR5IGFtb25nIHRoZW0uIFRoZSBzY2hlZHVsZXIgc2VsZWN0cyB0aGUgZW50 aXRpZXMKPiA+PiArICogZnJvbSB0aGUgcnVuIHF1ZXVlIHVzaW5nIEZJRk8uIFRoZSBzY2hlZHVs ZXIgcHJvdmlkZXMgZGVwZW5kZW5jeSBoYW5kbGluZwo+ID4+ICsgKiBmZWF0dXJlcyBhbW9uZyBq b2JzLiBUaGUgZHJpdmVyIGlzIHN1cHBvc2VkIHRvIHByb3ZpZGUgZnVuY3Rpb25zIGZvciBiYWNr ZW5kCj4gPj4gKyAqIG9wZXJhdGlvbnMgdG8gdGhlIHNjaGVkdWxlciBsaWtlIHN1Ym1pdHRpbmcg YSBqb2IgdG8gaGFyZHdhcmUgcnVuIHF1ZXVlLAo+ID4+ICsgKiByZXR1cm5pbmcgdGhlIGRlcGVu ZGVuY3kgb2YgYSBqb2IgZXRjLgo+ID4+ICsgKgo+ID4+ICsgKiBUaGUgb3JnYW5pc2F0aW9uIG9m IHRoZSBzY2hlZHVsZXIgaXMgdGhlIGZvbGxvd2luZzotCj4gPj4gKyAqCj4gPj4gKyAqIDEuIEVh Y2ggcmluZyBidWZmZXIgaGFzIG9uZSBzY2hlZHVsZXIKPiA+PiArICogMi4gRWFjaCBzY2hlZHVs ZXIgaGFzIG11bHRpcGxlIHJ1biBxdWV1ZXMgd2l0aCBkaWZmZXJlbnQgcHJpb3JpdGllcwo+ID4+ ICsgKiAgICAoaS5lLiBISUdIX0hXLEhJR0hfU1csIEtFUk5FTCwgTk9STUFMKQo+ID4+ICsgKiAz LiBFYWNoIHJ1biBxdWV1ZSBoYXMgYSBxdWV1ZSBvZiBlbnRpdGllcyB0byBzY2hlZHVsZQo+ID4+ ICsgKiA0LiBFbnRpdGllcyB0aGVtc2VsdmVzIG1haW50YWluIGEgcXVldWUgb2Ygam9icyB0aGF0 IHdpbGwgYmUgc2NoZWR1bGVkIG9uCj4gPj4gKyAqICAgIHRoZSBoYXJkd2FyZS4KPiA+PiArICoK PiA+PiArICogVGhlIGpvYnMgaW4gYSBlbnRpdHkgYXJlIGFsd2F5cyBzY2hlZHVsZWQgaW4gdGhl IG9yZGVyIHRoYXQgdGhleSB3ZXJlIHB1c2hlZC4KPiA+PiArICovCj4gPj4gKwo+ID4+ICAjaW5j bHVkZSA8bGludXgva3RocmVhZC5oPgo+ID4+ICAjaW5jbHVkZSA8bGludXgvd2FpdC5oPgo+ID4+ ICAjaW5jbHVkZSA8bGludXgvc2NoZWQuaD4KPiA+PiBAQCAtMzksNyArNjIsMTMgQEAgc3RhdGlj IGJvb2wgZHJtX3NjaGVkX2VudGl0eV9pc19yZWFkeShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAq ZW50aXR5KTsKPiA+PiAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3dha2V1cChzdHJ1Y3QgZHJtX2dw dV9zY2hlZHVsZXIgKnNjaGVkKTsKPiA+PiAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nf am9iKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKTsKPiA+Pgo+ ID4+IC0vKiBJbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVlIHN0cnVjdCAqLwo+ID4+ICsvKioK PiA+PiArICogZHJtX3NjaGVkX3JxX2luaXQgLSBpbml0aWFsaXplIGEgZ2l2ZW4gcnVuIHF1ZXVl IHN0cnVjdAo+ID4+ICsgKgo+ID4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPiA+PiAr ICoKPiA+PiArICogSW5pdGlhbGl6ZXMgYSBzY2hlZHVsZXIgcnVucXVldWUuCj4gPj4gKyAqLwo+ ID4+ICBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfcnFfaW5pdChzdHJ1Y3QgZHJtX3NjaGVkX3JxICpy cSkKPiA+PiAgewo+ID4+ICAgICAgICAgc3Bpbl9sb2NrX2luaXQoJnJxLT5sb2NrKTsKPiA+PiBA QCAtNDcsNiArNzYsMTQgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3JxX2luaXQoc3RydWN0IGRy bV9zY2hlZF9ycSAqcnEpCj4gPj4gICAgICAgICBycS0+Y3VycmVudF9lbnRpdHkgPSBOVUxMOwo+ ID4+ICB9Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2hlZF9ycV9hZGRfZW50aXR5IC0g YWRkIGFuIGVudGl0eQo+ID4+ICsgKgo+ID4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUK PiA+PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQo+ID4+ICsgKgo+ID4+ICsgKiBBZGRz IGEgc2NoZWR1bGVyIGVudGl0eSB0byB0aGUgcnVuIHF1ZXVlLgo+ID4+ICsgKi8KPiA+PiAgc3Rh dGljIHZvaWQgZHJtX3NjaGVkX3JxX2FkZF9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEs Cj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRybV9zY2hl ZF9lbnRpdHkgKmVudGl0eSkKPiA+PiAgewo+ID4+IEBAIC01Nyw2ICs5NCwxNCBAQCBzdGF0aWMg dm9pZCBkcm1fc2NoZWRfcnFfYWRkX2VudGl0eShzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSwKPiA+ PiAgICAgICAgIHNwaW5fdW5sb2NrKCZycS0+bG9jayk7Cj4gPj4gIH0KPiA+Pgo+ID4+ICsvKioK PiA+PiArICogZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkgLSByZW1vdmUgYW4gZW50aXR5Cj4g Pj4gKyAqCj4gPj4gKyAqIEBycTogc2NoZWR1bGVyIHJ1biBxdWV1ZQo+ID4+ICsgKiBAZW50aXR5 OiBzY2hlZHVsZXIgZW50aXR5Cj4gPj4gKyAqCj4gPj4gKyAqIFJlbW92ZXMgYSBzY2hlZHVsZXIg ZW50aXR5IGZyb20gdGhlIHJ1biBxdWV1ZS4KPiA+PiArICovCj4gPj4gIHN0YXRpYyB2b2lkIGRy bV9zY2hlZF9ycV9yZW1vdmVfZW50aXR5KHN0cnVjdCBkcm1fc2NoZWRfcnEgKnJxLAo+ID4+ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50 aXR5ICplbnRpdHkpCj4gPj4gIHsKPiA+PiBAQCAtNzAsOSArMTE1LDkgQEAgc3RhdGljIHZvaWQg ZHJtX3NjaGVkX3JxX3JlbW92ZV9lbnRpdHkoc3RydWN0IGRybV9zY2hlZF9ycSAqcnEsCj4gPj4g IH0KPiA+Pgo+ID4+ICAvKioKPiA+PiAtICogU2VsZWN0IGFuIGVudGl0eSB3aGljaCBjb3VsZCBw cm92aWRlIGEgam9iIHRvIHJ1bgo+ID4+ICsgKiBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0eSAt IFNlbGVjdCBhbiBlbnRpdHkgd2hpY2ggY291bGQgcHJvdmlkZSBhIGpvYiB0byBydW4KPiA+PiAg ICoKPiA+PiAtICogQHJxICAgICAgICAgVGhlIHJ1biBxdWV1ZSB0byBjaGVjay4KPiA+PiArICog QHJxOiBzY2hlZHVsZXIgcnVuIHF1ZXVlIHRvIGNoZWNrLgo+ID4+ICAgKgo+ID4+ICAgKiBUcnkg dG8gZmluZCBhIHJlYWR5IGVudGl0eSwgcmV0dXJucyBOVUxMIGlmIG5vbmUgZm91bmQuCj4gPj4g ICAqLwo+ID4+IEBAIC0xMTIsMTUgKzE1NywxNiBAQCBkcm1fc2NoZWRfcnFfc2VsZWN0X2VudGl0 eShzdHJ1Y3QgZHJtX3NjaGVkX3JxICpycSkKPiA+PiAgfQo+ID4+Cj4gPj4gIC8qKgo+ID4+IC0g KiBJbml0IGEgY29udGV4dCBlbnRpdHkgdXNlZCBieSBzY2hlZHVsZXIgd2hlbiBzdWJtaXQgdG8g SFcgcmluZy4KPiA+PiArICogZHJtX3NjaGVkX2VudGl0eV9pbml0IC0gSW5pdCBhIGNvbnRleHQg ZW50aXR5IHVzZWQgYnkgc2NoZWR1bGVyIHdoZW4KPiA+PiArICogc3VibWl0IHRvIEhXIHJpbmcu Cj4gPj4gICAqCj4gPj4gLSAqIEBzY2hlZCAgICAgIFRoZSBwb2ludGVyIHRvIHRoZSBzY2hlZHVs ZXIKPiA+PiAtICogQGVudGl0eSAgICAgVGhlIHBvaW50ZXIgdG8gYSB2YWxpZCBkcm1fc2NoZWRf ZW50aXR5Cj4gPj4gLSAqIEBycSAgICAgICAgIFRoZSBydW4gcXVldWUgdGhpcyBlbnRpdHkgYmVs b25ncwo+ID4+IC0gKiBAZ3VpbHR5ICAgICAgYXRvbWljX3Qgc2V0IHRvIDEgd2hlbiBhIGpvYiBv biB0aGlzIHF1ZXVlCj4gPj4gLSAqICAgICAgICAgICAgICBpcyBmb3VuZCB0byBiZSBndWlsdHkg Y2F1c2luZyBhIHRpbWVvdXQKPiA+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPiA+ PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eSB0byBpbml0Cj4gPj4gKyAqIEBycTogdGhl IHJ1biBxdWV1ZSB0aGlzIGVudGl0eSBiZWxvbmdzCj4gPj4gKyAqIEBndWlsdHk6IGF0b21pY190 IHNldCB0byAxIHdoZW4gYSBqb2Igb24gdGhpcyBxdWV1ZQo+ID4+ICsgKiAgICAgICAgICBpcyBm b3VuZCB0byBiZSBndWlsdHkgY2F1c2luZyBhIHRpbWVvdXQKPiA+PiAgICoKPiA+PiAtICogcmV0 dXJuIDAgaWYgc3VjY2VlZC4gbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlCj4gPj4gKyAq IFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJl Lgo+ID4+ICAqLwo+ID4+ICBpbnQgZHJtX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBkcm1fZ3B1 X3NjaGVkdWxlciAqc2NoZWQsCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qg ZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5LAo+ID4+IEBAIC0xNDksMTAgKzE5NSwxMCBAQCBpbnQg ZHJtX3NjaGVkX2VudGl0eV9pbml0KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4g Pj4gIEVYUE9SVF9TWU1CT0woZHJtX3NjaGVkX2VudGl0eV9pbml0KTsKPiA+Pgo+ID4+ICAvKioK PiA+PiAtICogUXVlcnkgaWYgZW50aXR5IGlzIGluaXRpYWxpemVkCj4gPj4gKyAqIGRybV9zY2hl ZF9lbnRpdHlfaXNfaW5pdGlhbGl6ZWQgLSBRdWVyeSBpZiBlbnRpdHkgaXMgaW5pdGlhbGl6ZWQK PiA+PiAgICoKPiA+PiAtICogQHNjaGVkICAgICAgIFBvaW50ZXIgdG8gc2NoZWR1bGVyIGluc3Rh bmNlCj4gPj4gLSAqIEBlbnRpdHkgICAgIFRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVy IGVudGl0eQo+ID4+ICsgKiBAc2NoZWQ6IFBvaW50ZXIgdG8gc2NoZWR1bGVyIGluc3RhbmNlCj4g Pj4gKyAqIEBlbnRpdHk6IFRoZSBwb2ludGVyIHRvIGEgdmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+ ID4+ICAgKgo+ID4+ICAgKiByZXR1cm4gdHJ1ZSBpZiBlbnRpdHkgaXMgaW5pdGlhbGl6ZWQsIGZh bHNlIG90aGVyd2lzZQo+ID4+ICAqLwo+ID4+IEBAIC0xNjQsMTEgKzIxMCwxMSBAQCBzdGF0aWMg Ym9vbCBkcm1fc2NoZWRfZW50aXR5X2lzX2luaXRpYWxpemVkKHN0cnVjdCBkcm1fZ3B1X3NjaGVk dWxlciAqc2NoZWQsCj4gPj4gIH0KPiA+Pgo+ID4+ICAvKioKPiA+PiAtICogQ2hlY2sgaWYgZW50 aXR5IGlzIGlkbGUKPiA+PiArICogZHJtX3NjaGVkX2VudGl0eV9pc19pZGxlIC0gQ2hlY2sgaWYg ZW50aXR5IGlzIGlkbGUKPiA+PiAgICoKPiA+PiAtICogQGVudGl0eSAgICAgVGhlIHBvaW50ZXIg dG8gYSB2YWxpZCBzY2hlZHVsZXIgZW50aXR5Cj4gPj4gKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBl bnRpdHkKPiA+PiAgICoKPiA+PiAtICogUmV0dXJuIHRydWUgaWYgZW50aXR5IGRvbid0IGhhcyBh bnkgdW5zY2hlZHVsZWQgam9icy4KPiA+PiArICogUmV0dXJucyB0cnVlIGlmIHRoZSBlbnRpdHkg ZG9lcyBub3QgaGF2ZSBhbnkgdW5zY2hlZHVsZWQgam9icy4KPiA+PiAgICovCj4gPj4gIHN0YXRp YyBib29sIGRybV9zY2hlZF9lbnRpdHlfaXNfaWRsZShzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAq ZW50aXR5KQo+ID4+ICB7Cj4gPj4gQEAgLTE4MCw5ICsyMjYsOSBAQCBzdGF0aWMgYm9vbCBkcm1f c2NoZWRfZW50aXR5X2lzX2lkbGUoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0eSkKPiA+ PiAgfQo+ID4+Cj4gPj4gIC8qKgo+ID4+IC0gKiBDaGVjayBpZiBlbnRpdHkgaXMgcmVhZHkKPiA+ PiArICogZHJtX3NjaGVkX2VudGl0eV9pc19yZWFkeSAtIENoZWNrIGlmIGVudGl0eSBpcyByZWFk eQo+ID4+ICAgKgo+ID4+IC0gKiBAZW50aXR5ICAgICBUaGUgcG9pbnRlciB0byBhIHZhbGlkIHNj aGVkdWxlciBlbnRpdHkKPiA+PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0eQo+ID4+ICAg Kgo+ID4+ICAgKiBSZXR1cm4gdHJ1ZSBpZiBlbnRpdHkgY291bGQgcHJvdmlkZSBhIGpvYi4KPiA+ PiAgICovCj4gPj4gQEAgLTIxMCwxMiArMjU2LDEyIEBAIHN0YXRpYyB2b2lkIGRybV9zY2hlZF9l bnRpdHlfa2lsbF9qb2JzX2NiKHN0cnVjdCBkbWFfZmVuY2UgKmYsCj4gPj4KPiA+Pgo+ID4+ICAv KioKPiA+PiAtICogRGVzdHJveSBhIGNvbnRleHQgZW50aXR5Cj4gPj4gKyAqIGRybV9zY2hlZF9l bnRpdHlfZG9fcmVsZWFzZSAtIERlc3Ryb3kgYSBjb250ZXh0IGVudGl0eQo+ID4+ICAgKgo+ID4+ IC0gKiBAc2NoZWQgICAgICAgUG9pbnRlciB0byBzY2hlZHVsZXIgaW5zdGFuY2UKPiA+PiAtICog QGVudGl0eSAgICAgVGhlIHBvaW50ZXIgdG8gYSB2YWxpZCBzY2hlZHVsZXIgZW50aXR5Cj4gPj4g KyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gKyAqIEBlbnRpdHk6IHNjaGVkdWxl ciBlbnRpdHkKPiA+PiAgICoKPiA+PiAtICogU3BsaXR0aW5nIGRybV9zY2hlZF9lbnRpdHlfZmlu aSgpIGludG8gdHdvIGZ1bmN0aW9ucywgVGhlIGZpcnN0IG9uZSBpcyBkb2VzIHRoZSB3YWl0aW5n LAo+ID4+ICsgKiBTcGxpdHRpbmcgZHJtX3NjaGVkX2VudGl0eV9maW5pKCkgaW50byB0d28gZnVu Y3Rpb25zLCBUaGUgZmlyc3Qgb25lIGRvZXMgdGhlIHdhaXRpbmcsCj4gPj4gICAqIHJlbW92ZXMg dGhlIGVudGl0eSBmcm9tIHRoZSBydW5xdWV1ZSBhbmQgcmV0dXJucyBhbiBlcnJvciB3aGVuIHRo ZSBwcm9jZXNzIHdhcyBraWxsZWQuCj4gPj4gICAqLwo+ID4+ICB2b2lkIGRybV9zY2hlZF9lbnRp dHlfZG9fcmVsZWFzZShzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ID4+IEBAIC0y MzcsMTIgKzI4MywxMyBAQCB2b2lkIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZShzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ID4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9l bnRpdHlfZG9fcmVsZWFzZSk7Cj4gPj4KPiA+PiAgLyoqCj4gPj4gLSAqIERlc3Ryb3kgYSBjb250 ZXh0IGVudGl0eQo+ID4+ICsgKiBkcm1fc2NoZWRfZW50aXR5X2NsZWFudXAgLSBEZXN0cm95IGEg Y29udGV4dCBlbnRpdHkKPiA+PiAgICoKPiA+PiAtICogQHNjaGVkICAgICAgIFBvaW50ZXIgdG8g c2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gLSAqIEBlbnRpdHkgICAgIFRoZSBwb2ludGVyIHRvIGEg dmFsaWQgc2NoZWR1bGVyIGVudGl0eQo+ID4+ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5j ZQo+ID4+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50aXR5Cj4gPj4gICAqCj4gPj4gLSAqIFRo ZSBzZWNvbmQgb25lIHRoZW4gZ29lcyBvdmVyIHRoZSBlbnRpdHkgYW5kIHNpZ25hbHMgYWxsIGpv YnMgd2l0aCBhbiBlcnJvciBjb2RlLgo+ID4+ICsgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgYWZ0 ZXIgQGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZS4gSXQgZ29lcyBvdmVyIHRoZQo+ID4+ICsg KiBlbnRpdHkgYW5kIHNpZ25hbHMgYWxsIGpvYnMgd2l0aCBhbiBlcnJvciBjb2RlIGlmIHRoZSBw cm9jZXNzIHdhcyBraWxsZWQuCj4gPj4gICAqLwo+ID4+ICB2b2lkIGRybV9zY2hlZF9lbnRpdHlf Y2xlYW51cChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4gPj4gQEAg LTI4MSw2ICszMjgsMTQgQEAgdm9pZCBkcm1fc2NoZWRfZW50aXR5X2NsZWFudXAoc3RydWN0IGRy bV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPiA+PiAgfQo+ID4+ICBFWFBPUlRfU1lNQk9MKGRybV9z Y2hlZF9lbnRpdHlfY2xlYW51cCk7Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2hlZF9l bnRpdHlfZmluaSAtIERlc3Ryb3kgYSBjb250ZXh0IGVudGl0eQo+ID4+ICsgKgo+ID4+ICsgKiBA c2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ID4+ICsgKiBAZW50aXR5OiBzY2hlZHVsZXIgZW50 aXR5Cj4gPj4gKyAqCj4gPj4gKyAqIENhbGxzIGRybV9zY2hlZF9lbnRpdHlfZG9fcmVsZWFzZSgp IGFuZCBkcm1fc2NoZWRfZW50aXR5X2NsZWFudXAoKQo+ID4+ICsgKi8KPiA+PiAgdm9pZCBkcm1f c2NoZWRfZW50aXR5X2Zpbmkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPiA+PiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICpl bnRpdHkpCj4gPj4gIHsKPiA+PiBAQCAtMzA2LDYgKzM2MSwxNSBAQCBzdGF0aWMgdm9pZCBkcm1f c2NoZWRfZW50aXR5X2NsZWFyX2RlcChzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBzdHJ1Y3QgZG1hX2Zl bmNlX2NiCj4gPj4gICAgICAgICBkbWFfZmVuY2VfcHV0KGYpOwo+ID4+ICB9Cj4gPj4KPiA+PiAr LyoqCj4gPj4gKyAqIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxIC0gU2V0cyB0aGUgcnVuIHF1ZXVl IGZvciBhbiBlbnRpdHkKPiA+PiArICoKPiA+PiArICogQGVudGl0eTogc2NoZWR1bGVyIGVudGl0 eQo+ID4+ICsgKiBAcnE6IHNjaGVkdWxlciBydW4gcXVldWUKPiA+PiArICoKPiA+PiArICogU2V0 cyB0aGUgcnVuIHF1ZXVlIGZvciBhbiBlbnRpdHkgYW5kIHJlbW92ZXMgdGhlIGVudGl0eSBmcm9t IHRoZSBwcmV2aW91cwo+ID4+ICsgKiBydW4gcXVldWUgaW4gd2hpY2ggd2FzIHByZXNlbnQuCj4g Pj4gKyAqLwo+ID4+ICB2b2lkIGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxKHN0cnVjdCBkcm1fc2No ZWRfZW50aXR5ICplbnRpdHksCj4gPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZHJtX3NjaGVkX3JxICpycSkKPiA+PiAgewo+ID4+IEBAIC0zMjUsNiArMzg5LDE0IEBAIHZv aWQgZHJtX3NjaGVkX2VudGl0eV9zZXRfcnEoc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgKmVudGl0 eSwKPiA+PiAgfQo+ID4+ICBFWFBPUlRfU1lNQk9MKGRybV9zY2hlZF9lbnRpdHlfc2V0X3JxKTsK PiA+Pgo+ID4+ICsvKioKPiA+PiArICogZHJtX3NjaGVkX2RlcGVuZGVuY3lfb3B0aW1pemVkCj4g Pj4gKyAqCj4gPj4gKyAqIEBmZW5jZTogdGhlIGRlcGVuZGVuY3kgZmVuY2UKPiA+PiArICogQGVu dGl0eTogdGhlIGVudGl0eSB3aGljaCBkZXBlbmRzIG9uIHRoZSBhYm92ZSBmZW5jZQo+ID4+ICsg Kgo+ID4+ICsgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRlcGVuZGVuY3kgY2FuIGJlIG9wdGltaXpl ZCBhbmQgZmFsc2Ugb3RoZXJ3aXNlCj4gPj4gKyAqLwo+ID4+ICBib29sIGRybV9zY2hlZF9kZXBl bmRlbmN5X29wdGltaXplZChzdHJ1Y3QgZG1hX2ZlbmNlKiBmZW5jZSwKPiA+PiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqZW50aXR5 KQo+ID4+ICB7Cj4gPj4gQEAgLTQxMyw5ICs0ODUsMTAgQEAgZHJtX3NjaGVkX2VudGl0eV9wb3Bf am9iKHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICplbnRpdHkpCj4gPj4gIH0KPiA+Pgo+ID4+ICAv KioKPiA+PiAtICogU3VibWl0IGEgam9iIHRvIHRoZSBqb2IgcXVldWUKPiA+PiArICogZHJtX3Nj aGVkX2VudGl0eV9wdXNoX2pvYiAtIFN1Ym1pdCBhIGpvYiB0byB0aGUgZW50aXR5J3Mgam9iIHF1 ZXVlCj4gPj4gICAqCj4gPj4gLSAqIEBzY2hlZF9qb2IgICAgICAgICAgVGhlIHBvaW50ZXIgdG8g am9iIHJlcXVpcmVkIHRvIHN1Ym1pdAo+ID4+ICsgKiBAc2NoZWRfam9iOiBqb2IgdG8gc3VibWl0 Cj4gPj4gKyAqIEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkKPiA+PiAgICoKPiA+PiAgICogTm90 ZTogVG8gZ3VhcmFudGVlIHRoYXQgdGhlIG9yZGVyIG9mIGluc2VydGlvbiB0byBxdWV1ZSBtYXRj aGVzCj4gPj4gICAqIHRoZSBqb2IncyBmZW5jZSBzZXF1ZW5jZSBudW1iZXIgdGhpcyBmdW5jdGlv biBzaG91bGQgYmUKPiA+PiBAQCAtNTA2LDYgKzU3OSwxMyBAQCBzdGF0aWMgdm9pZCBkcm1fc2No ZWRfam9iX3RpbWVkb3V0KHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+PiAgICAgICAgIGpv Yi0+c2NoZWQtPm9wcy0+dGltZWRvdXRfam9iKGpvYik7Cj4gPj4gIH0KPiA+Pgo+ID4+ICsvKioK PiA+PiArICogZHJtX3NjaGVkX2h3X2pvYl9yZXNldCAtIHN0b3AgdGhlIHNjaGVkdWxlciBpZiBp dCBjb250YWlucyB0aGUgYmFkIGpvYgo+ID4+ICsgKgo+ID4+ICsgKiBAc2NoZWQ6IHNjaGVkdWxl ciBpbnN0YW5jZQo+ID4+ICsgKiBAYmFkOiBiYWQgc2NoZWR1bGVyIGpvYgo+ID4+ICsgKgo+ID4+ ICsgKi8KPiA+PiAgdm9pZCBkcm1fc2NoZWRfaHdfam9iX3Jlc2V0KHN0cnVjdCBkcm1fZ3B1X3Nj aGVkdWxlciAqc2NoZWQsIHN0cnVjdCBkcm1fc2NoZWRfam9iICpiYWQpCj4gPj4gIHsKPiA+PiAg ICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYjsKPiA+PiBAQCAtNTUwLDYgKzYzMCwx MiBAQCB2b2lkIGRybV9zY2hlZF9od19qb2JfcmVzZXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVy ICpzY2hlZCwgc3RydWN0IGRybV9zY2hlZF9qbwo+ID4+ICB9Cj4gPj4gIEVYUE9SVF9TWU1CT0wo ZHJtX3NjaGVkX2h3X2pvYl9yZXNldCk7Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2hl ZF9qb2JfcmVjb3ZlcnkgLSByZWNvdmVyIGpvYnMgYWZ0ZXIgYSByZXNldAo+ID4+ICsgKgo+ID4+ ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ID4+ICsgKgo+ID4+ICsgKi8KPiA+PiAg dm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2No ZWQpCj4gPj4gIHsKPiA+PiAgICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfam9iICpzX2pvYiwgKnRt cDsKPiA+PiBAQCAtNTk5LDEwICs2ODUsMTcgQEAgdm9pZCBkcm1fc2NoZWRfam9iX3JlY292ZXJ5 KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gPj4gIEVYUE9SVF9TWU1CT0woZHJt X3NjaGVkX2pvYl9yZWNvdmVyeSk7Cj4gPj4KPiA+PiAgLyoqCj4gPj4gLSAqIEluaXQgYSBzY2hl ZF9qb2Igd2l0aCBiYXNpYyBmaWVsZAo+ID4+ICsgKiBkcm1fc2NoZWRfam9iX2luaXQgLSBpbml0 IGEgc2NoZWR1bGVyIGpvYgo+ID4+ICAgKgo+ID4+IC0gKiBOb3RlOiBSZWZlciB0byBkcm1fc2No ZWRfZW50aXR5X3B1c2hfam9iIGRvY3VtZW50YXRpb24KPiA+PiArICogQGpvYjogc2NoZWR1bGVy IGpvYiB0byBpbml0Cj4gPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gKyAq IEBlbnRpdHk6IHNjaGVkdWxlciBlbnRpdHkgdG8gdXNlCj4gPj4gKyAqIEBvd25lcjogam9iIG93 bmVyIGZvciBkZWJ1Z2dpbmcKPiA+PiArICoKPiA+PiArICogUmVmZXIgdG8gZHJtX3NjaGVkX2Vu dGl0eV9wdXNoX2pvYigpIGRvY3VtZW50YXRpb24KPiA+PiAgICogZm9yIGxvY2tpbmcgY29uc2lk ZXJhdGlvbnMuCj4gPj4gKyAqCj4gPj4gKyAqIFJldHVybnMgMCBmb3Igc3VjY2VzcywgbmVnYXRp dmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gPj4gICAqLwo+ID4+ICBpbnQgZHJtX3NjaGVkX2pv Yl9pbml0KHN0cnVjdCBkcm1fc2NoZWRfam9iICpqb2IsCj4gPj4gICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkLAo+ID4+IEBAIC02MjYsNyArNzE5 LDExIEBAIGludCBkcm1fc2NoZWRfam9iX2luaXQoc3RydWN0IGRybV9zY2hlZF9qb2IgKmpvYiwK PiA+PiAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfam9iX2luaXQpOwo+ID4+Cj4gPj4gIC8qKgo+ ID4+IC0gKiBSZXR1cm4gdHVyZSBpZiB3ZSBjYW4gcHVzaCBtb3JlIGpvYnMgdG8gdGhlIGh3Lgo+ ID4+ICsgKiBkcm1fc2NoZWRfcmVhZHkgLSBpcyB0aGUgc2NoZWR1bGVyIHJlYWR5Cj4gPj4gKyAq Cj4gPj4gKyAqIEBzY2hlZDogc2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gKyAqCj4gPj4gKyAqIFJl dHVybiB0cnVlIGlmIHdlIGNhbiBwdXNoIG1vcmUgam9icyB0byB0aGUgaHcsIG90aGVyd2lzZSBm YWxzZS4KPiA+PiAgICovCj4gPj4gIHN0YXRpYyBib29sIGRybV9zY2hlZF9yZWFkeShzdHJ1Y3Qg ZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQo+ID4+ICB7Cj4gPj4gQEAgLTYzNSw3ICs3MzIsMTAg QEAgc3RhdGljIGJvb2wgZHJtX3NjaGVkX3JlYWR5KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAq c2NoZWQpCj4gPj4gIH0KPiA+Pgo+ID4+ICAvKioKPiA+PiAtICogV2FrZSB1cCB0aGUgc2NoZWR1 bGVyIHdoZW4gaXQgaXMgcmVhZHkKPiA+PiArICogZHJtX3NjaGVkX3dha2V1cCAtIFdha2UgdXAg dGhlIHNjaGVkdWxlciB3aGVuIGl0IGlzIHJlYWR5Cj4gPj4gKyAqCj4gPj4gKyAqIEBzY2hlZDog c2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gKyAqCj4gPj4gICAqLwo+ID4+ICBzdGF0aWMgdm9pZCBk cm1fc2NoZWRfd2FrZXVwKHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gPj4gIHsK PiA+PiBAQCAtNjQ0LDggKzc0NCwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fc2NoZWRfd2FrZXVwKHN0 cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gPj4gIH0KPiA+Pgo+ID4+ICAvKioKPiA+ PiAtICogU2VsZWN0IG5leHQgZW50aXR5IHRvIHByb2Nlc3MKPiA+PiAtKi8KPiA+PiArICogZHJt X3NjaGVkX3NlbGVjdF9lbnRpdHkgLSBTZWxlY3QgbmV4dCBlbnRpdHkgdG8gcHJvY2Vzcwo+ID4+ ICsgKgo+ID4+ICsgKiBAc2NoZWQ6IHNjaGVkdWxlciBpbnN0YW5jZQo+ID4+ICsgKgo+ID4+ICsg KiBSZXR1cm5zIHRoZSBlbnRpdHkgdG8gcHJvY2VzcyBvciBOVUxMIGlmIG5vbmUgYXJlIGZvdW5k Lgo+ID4+ICsgKi8KPiA+PiAgc3RhdGljIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5ICoKPiA+PiAg ZHJtX3NjaGVkX3NlbGVjdF9lbnRpdHkoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCkK PiA+PiAgewo+ID4+IEBAIC02NjUsNiArNzY5LDE0IEBAIGRybV9zY2hlZF9zZWxlY3RfZW50aXR5 KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQpCj4gPj4gICAgICAgICByZXR1cm4gZW50 aXR5Owo+ID4+ICB9Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2hlZF9wcm9jZXNzX2pv YiAtIHByb2Nlc3MgYSBqb2IKPiA+PiArICoKPiA+PiArICogQGY6IGZlbmNlCj4gPj4gKyAqIEBj YjogZmVuY2UgY2FsbGJhY2tzCj4gPj4gKyAqCj4gPj4gKyAqIENhbGxlZCBhZnRlciBqb2IgaGFz IGZpbmlzaGVkIGV4ZWN1dGlvbi4KPiA+PiArICovCj4gPj4gIHN0YXRpYyB2b2lkIGRybV9zY2hl ZF9wcm9jZXNzX2pvYihzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpj YikKPiA+PiAgewo+ID4+ICAgICAgICAgc3RydWN0IGRybV9zY2hlZF9mZW5jZSAqc19mZW5jZSA9 Cj4gPj4gQEAgLTY4MCw2ICs3OTIsMTMgQEAgc3RhdGljIHZvaWQgZHJtX3NjaGVkX3Byb2Nlc3Nf am9iKHN0cnVjdCBkbWFfZmVuY2UgKmYsIHN0cnVjdCBkbWFfZmVuY2VfY2IgKmNiKQo+ID4+ICAg ICAgICAgd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZzY2hlZC0+d2FrZV91cF93b3JrZXIpOwo+ID4+ ICB9Cj4gPj4KPiA+PiArLyoqCj4gPj4gKyAqIGRybV9zY2hlZF9ibG9ja2VkIC0gY2hlY2sgaWYg dGhlIHNjaGVkdWxlciBpcyBibG9ja2VkCj4gPj4gKyAqCj4gPj4gKyAqIEBzY2hlZDogc2NoZWR1 bGVyIGluc3RhbmNlCj4gPj4gKyAqCj4gPj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBibG9ja2VkLCBv dGhlcndpc2UgZmFsc2UuCj4gPj4gKyAqLwo+ID4+ICBzdGF0aWMgYm9vbCBkcm1fc2NoZWRfYmxv Y2tlZChzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgKnNjaGVkKQo+ID4+ICB7Cj4gPj4gICAgICAg ICBpZiAoa3RocmVhZF9zaG91bGRfcGFyaygpKSB7Cj4gPj4gQEAgLTY5MCw2ICs4MDksMTMgQEAg c3RhdGljIGJvb2wgZHJtX3NjaGVkX2Jsb2NrZWQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpz Y2hlZCkKPiA+PiAgICAgICAgIHJldHVybiBmYWxzZTsKPiA+PiAgfQo+ID4+Cj4gPj4gKy8qKgo+ ID4+ICsgKiBkcm1fc2NoZWRfbWFpbiAtIG1haW4gc2NoZWR1bGVyIHRocmVhZAo+ID4+ICsgKgo+ ID4+ICsgKiBAcGFyYW06IHNjaGVkdWxlciBpbnN0YW5jZQo+ID4+ICsgKgo+ID4+ICsgKiBSZXR1 cm5zIDAuCj4gPj4gKyAqLwo+ID4+ICBzdGF0aWMgaW50IGRybV9zY2hlZF9tYWluKHZvaWQgKnBh cmFtKQo+ID4+ICB7Cj4gPj4gICAgICAgICBzdHJ1Y3Qgc2NoZWRfcGFyYW0gc3BhcmFtID0gey5z Y2hlZF9wcmlvcml0eSA9IDF9Owo+ID4+IEBAIC03NDQsMTUgKzg3MCwxNyBAQCBzdGF0aWMgaW50 IGRybV9zY2hlZF9tYWluKHZvaWQgKnBhcmFtKQo+ID4+ICB9Cj4gPj4KPiA+PiAgLyoqCj4gPj4g LSAqIEluaXQgYSBncHUgc2NoZWR1bGVyIGluc3RhbmNlCj4gPj4gKyAqIGRybV9zY2hlZF9pbml0 IC0gSW5pdCBhIGdwdSBzY2hlZHVsZXIgaW5zdGFuY2UKPiA+PiAgICoKPiA+PiAtICogQHNjaGVk ICAgICAgICAgICAgICBUaGUgcG9pbnRlciB0byB0aGUgc2NoZWR1bGVyCj4gPj4gLSAqIEBvcHMg ICAgICAgICAgICAgICAgICAgICAgICBUaGUgYmFja2VuZCBvcGVyYXRpb25zIGZvciB0aGlzIHNj aGVkdWxlci4KPiA+PiAtICogQGh3X3N1Ym1pc3Npb25zICAgICBOdW1iZXIgb2YgaHcgc3VibWlz c2lvbnMgdG8gZG8uCj4gPj4gLSAqIEBuYW1lICAgICAgICAgICAgICAgTmFtZSB1c2VkIGZvciBk ZWJ1Z2dpbmcKPiA+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5zdGFuY2UKPiA+PiArICogQG9w czogYmFja2VuZCBvcGVyYXRpb25zIGZvciB0aGlzIHNjaGVkdWxlcgo+ID4+ICsgKiBAaHdfc3Vi bWlzc2lvbjogbnVtYmVyIG9mIGh3IHN1Ym1pc3Npb25zIHRoYXQgY2FuIGJlIGluIGZsaWdodAo+ ID4+ICsgKiBAaGFuZ19saW1pdDogbnVtYmVyIG9mIHRpbWVzIHRvIGFsbG93IGEgam9iIHRvIGhh bmcgYmVmb3JlIGRyb3BwaW5nIGl0Cj4gPj4gKyAqIEB0aW1lb3V0OiB0aW1lb3V0IHZhbHVlIGlu IGppZmZpZXMgZm9yIHRoZSBzY2hlZHVsZXIKPiA+PiArICogQG5hbWU6IG5hbWUgdXNlZCBmb3Ig ZGVidWdnaW5nCj4gPj4gICAqCj4gPj4gICAqIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG90aGVyd2lz ZSBlcnJvciBjb2RlLgo+ID4+IC0qLwo+ID4+ICsgKi8KPiA+PiAgaW50IGRybV9zY2hlZF9pbml0 KHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlciAqc2NoZWQsCj4gPj4gICAgICAgICAgICAgICAgICAg IGNvbnN0IHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMgKm9wcywKPiA+PiAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgaHdfc3VibWlzc2lvbiwKPiA+PiBAQCAtNzg4LDkgKzkxNiwxMSBA QCBpbnQgZHJtX3NjaGVkX2luaXQoc3RydWN0IGRybV9ncHVfc2NoZWR1bGVyICpzY2hlZCwKPiA+ PiAgRVhQT1JUX1NZTUJPTChkcm1fc2NoZWRfaW5pdCk7Cj4gPj4KPiA+PiAgLyoqCj4gPj4gLSAq IERlc3Ryb3kgYSBncHUgc2NoZWR1bGVyCj4gPj4gKyAqIGRybV9zY2hlZF9maW5pIC0gRGVzdHJv eSBhIGdwdSBzY2hlZHVsZXIKPiA+PiArICoKPiA+PiArICogQHNjaGVkOiBzY2hlZHVsZXIgaW5z dGFuY2UKPiA+PiAgICoKPiA+PiAtICogQHNjaGVkICAgICAgVGhlIHBvaW50ZXIgdG8gdGhlIHNj aGVkdWxlcgo+ID4+ICsgKiBUZWFycyBkb3duIGFuZCBjbGVhbnMgdXAgdGhlIHNjaGVkdWxlci4K PiA+PiAgICovCj4gPj4gIHZvaWQgZHJtX3NjaGVkX2Zpbmkoc3RydWN0IGRybV9ncHVfc2NoZWR1 bGVyICpzY2hlZCkKPiA+PiAgewo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9ncHVfc2No ZWR1bGVyLmggYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKPiA+PiBpbmRleCBkZWM2NTU4 OTRkMDguLjQ5NjQ0MmYxMmJmZiAxMDA2NDQKPiA+PiAtLS0gYS9pbmNsdWRlL2RybS9ncHVfc2No ZWR1bGVyLmgKPiA+PiArKysgYi9pbmNsdWRlL2RybS9ncHVfc2NoZWR1bGVyLmgKPiA+PiBAQCAt NDMsMTMgKzQzLDMzIEBAIGVudW0gZHJtX3NjaGVkX3ByaW9yaXR5IHsKPiA+PiAgfTsKPiA+Pgo+ ID4+ICAvKioKPiA+PiAtICogZHJtX3NjaGVkX2VudGl0eSAtIEEgd3JhcHBlciBhcm91bmQgYSBq b2IgcXVldWUgKHR5cGljYWxseSBhdHRhY2hlZAo+ID4+IC0gKiB0byB0aGUgRFJNIGZpbGVfcHJp dikuCj4gPj4gKyAqIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5IC0gQSB3cmFwcGVyIGFyb3VuZCBh IGpvYiBxdWV1ZSAodHlwaWNhbGx5Cj4gPj4gKyAqIGF0dGFjaGVkIHRvIHRoZSBEUk0gZmlsZV9w cml2KS4KPiA+PiArICoKPiA+PiArICogQGxpc3Q6IHVzZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0 IHRvIHRoZSBsaXN0IG9mIGVudGl0aWVzIGluIHRoZQo+ID4+ICsgKiAgICAgICAgcnVucXVldWUu Cj4gPj4gKyAqIEBycTogcnVucXVldWUgdG8gd2hpY2ggdGhpcyBlbnRpdHkgYmVsb25ncy4KPiA+ PiArICogQHJxX2xvY2s6IGxvY2sgdG8gbW9kaWZ5IHRoZSBydW5xdWV1ZSB0byB3aGljaCB0aGlz IGVudGl0eSBiZWxvbmdzLgo+ID4+ICsgKiBAc2NoZWQ6IHRoZSBzY2hlZHVsZXIgaW5zdGFuY2Ug dG8gd2hpY2ggdGhpcyBlbnRpdHkgaXMgZW5xdWV1ZWQuCj4gPj4gKyAqIEBqb2JfcXVldWU6IHRo ZSBsaXN0IG9mIGpvYnMgb2YgdGhpcyBlbnRpdHkuCj4gPj4gKyAqIEBmZW5jZV9zZXE6IGEgbGlu ZWFybHkgaW5jcmVhc2luZyBzZXFubyBpbmNyZW1lbnRlZCB3aXRoIGVhY2gKPiA+PiArICogICAg ICAgICAgICAgbmV3ICZkcm1fc2NoZWRfZmVuY2Ugd2hpY2ggaXMgcGFydCBvZiB0aGUgZW50aXR5 Lgo+ID4+ICsgKiBAZmVuY2VfY29udGV4dDogYSB1bmlxdWUgY29udGV4dCBmb3IgYWxsIHRoZSBm ZW5jZXMgd2hpY2ggYmVsb25nCj4gPj4gKyAqICAgICAgICAgICAgICAgICB0byB0aGlzIGVudGl0 eS4KPiA+PiArICogICAgICAgICAgICAgICAgIFRoZSAmZHJtX3NjaGVkX2ZlbmNlLnNjaGVkdWxl ZCB1c2VzIHRoZQo+ID4+ICsgKiAgICAgICAgICAgICAgICAgZmVuY2VfY29udGV4dCBidXQgJmRy bV9zY2hlZF9mZW5jZS5maW5pc2hlZCB1c2VzCj4gPj4gKyAqICAgICAgICAgICAgICAgICBmZW5j ZV9jb250ZXh0ICsgMS4KPiA+PiArICogQGRlcGVuZGVuY3k6IHRoZSBkZXBlbmRlbmN5IGZlbmNl IG9mIHRoZSBqb2Igd2hpY2ggaXMgb24gdGhlIHRvcAo+ID4+ICsgKiAgICAgICAgICAgICAgb2Yg dGhlIGpvYiBxdWV1ZS4KPiA+PiArICogQGNiOiBjYWxsYmFjayBmb3IgdGhlIGRlcGVuZGVuY3kg ZmVuY2UgYWJvdmUuCj4gPj4gKyAqIEBndWlsdHk6IHBvaW50cyB0byBjdHgncyBndWlsdHkuCj4g Pj4gKyAqIEBmaW5pX3N0YXR1czogY29udGFpbnMgdGhlIGV4aXQgc3RhdHVzIGluIGNhc2UgdGhl IHByb2Nlc3Mgd2FzIHNpZ25hbGxlZC4KPiA+PiArICogQGxhc3Rfc2NoZWR1bGVkOiBwb2ludHMg dG8gdGhlIGZpbmlzaGVkIGZlbmNlIG9mIHRoZSBsYXN0IHNjaGVkdWxlZCBqb2IuCj4gPj4gICAq Cj4gPj4gICAqIEVudGl0aWVzIHdpbGwgZW1pdCBqb2JzIGluIG9yZGVyIHRvIHRoZWlyIGNvcnJl c3BvbmRpbmcgaGFyZHdhcmUKPiA+PiAgICogcmluZywgYW5kIHRoZSBzY2hlZHVsZXIgd2lsbCBh bHRlcm5hdGUgYmV0d2VlbiBlbnRpdGllcyBiYXNlZCBvbgo+ID4+ICAgKiBzY2hlZHVsaW5nIHBv bGljeS4KPiA+PiAtKi8KPiA+PiArICovCj4gPj4gIHN0cnVjdCBkcm1fc2NoZWRfZW50aXR5IHsK PiA+PiAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgICAgICAgICAgICAgICAgbGlzdDsKPiA+PiAg ICAgICAgIHN0cnVjdCBkcm1fc2NoZWRfcnEgICAgICAgICAgICAgKnJxOwo+ID4+IEBAIC02Myw0 NyArODMsOTYgQEAgc3RydWN0IGRybV9zY2hlZF9lbnRpdHkgewo+ID4+Cj4gPj4gICAgICAgICBz dHJ1Y3QgZG1hX2ZlbmNlICAgICAgICAgICAgICAgICpkZXBlbmRlbmN5Owo+ID4+ICAgICAgICAg c3RydWN0IGRtYV9mZW5jZV9jYiAgICAgICAgICAgICBjYjsKPiA+PiAtICAgICAgIGF0b21pY190 ICAgICAgICAgICAgICAgICAgICAgICAgKmd1aWx0eTsgLyogcG9pbnRzIHRvIGN0eCdzIGd1aWx0 eSAqLwo+ID4+IC0gICAgICAgaW50ICAgICAgICAgICAgZmluaV9zdGF0dXM7Cj4gPj4gLSAgICAg ICBzdHJ1Y3QgZG1hX2ZlbmNlICAgICpsYXN0X3NjaGVkdWxlZDsKPiA+PiArICAgICAgIGF0b21p Y190ICAgICAgICAgICAgICAgICAgICAgICAgKmd1aWx0eTsKPiA+PiArICAgICAgIGludCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZmluaV9zdGF0dXM7Cj4gPj4gKyAgICAgICBzdHJ1Y3Qg ZG1hX2ZlbmNlICAgICAgICAgICAgICAgICpsYXN0X3NjaGVkdWxlZDsKPiA+PiAgfTsKPiA+Pgo+ ID4+ICAvKioKPiA+PiArICogc3RydWN0IGRybV9zY2hlZF9ycSAtIHF1ZXVlIG9mIGVudGl0aWVz IHRvIGJlIHNjaGVkdWxlZC4KPiA+PiArICoKPiA+PiArICogQGxvY2s6IHRvIG1vZGlmeSB0aGUg ZW50aXRpZXMgbGlzdC4KPiA+PiArICogQGVudGl0aWVzOiBsaXN0IG9mIHRoZSBlbnRpdGllcyB0 byBiZSBzY2hlZHVsZWQuCj4gPj4gKyAqIEBjdXJyZW50X2VudGl0eTogdGhlIGVudGl0eSB3aGlj aCBpcyB0byBiZSBzY2hlZHVsZWQuCj4gPj4gKyAqCj4gPj4gICAqIFJ1biBxdWV1ZSBpcyBhIHNl dCBvZiBlbnRpdGllcyBzY2hlZHVsaW5nIGNvbW1hbmQgc3VibWlzc2lvbnMgZm9yCj4gPj4gICAq IG9uZSBzcGVjaWZpYyByaW5nLiBJdCBpbXBsZW1lbnRzIHRoZSBzY2hlZHVsaW5nIHBvbGljeSB0 aGF0IHNlbGVjdHMKPiA+PiAgICogdGhlIG5leHQgZW50aXR5IHRvIGVtaXQgY29tbWFuZHMgZnJv bS4KPiA+PiAtKi8KPiA+PiArICovCj4gPj4gIHN0cnVjdCBkcm1fc2NoZWRfcnEgewo+ID4+ICAg ICAgICAgc3BpbmxvY2tfdCAgICAgICAgICAgICAgICAgICAgICBsb2NrOwo+ID4+ICAgICAgICAg c3RydWN0IGxpc3RfaGVhZCAgICAgICAgICAgICAgICBlbnRpdGllczsKPiA+PiAgICAgICAgIHN0 cnVjdCBkcm1fc2NoZWRfZW50aXR5ICAgICAgICAgKmN1cnJlbnRfZW50aXR5Owo+ID4+ICB9Owo+ ID4+Cj4gPj4gKy8qKgo+ID4+ICsgKiBzdHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlIC0gZmVuY2VzIGNv cnJlc3BvbmRpbmcgdG8gdGhlIHNjaGVkdWxpbmcgb2YgYSBqb2IuCj4gPj4gKyAqLwo+ID4+ICBz dHJ1Y3QgZHJtX3NjaGVkX2ZlbmNlIHsKPiA+PiArICAgICAgICAvKioKPiA+PiArICAgICAgICAg KiBAc2NoZWR1bGVkOiB0aGlzIGZlbmNlIGlzIHdoYXQgd2lsbCBiZSBzaWduYWxlZCBieSB0aGUg c2NoZWR1bGVyCj4gPj4gKyAgICAgICAgICogd2hlbiB0aGUgam9iIGlzIHNjaGVkdWxlZC4KPiA+ PiArICAgICAgICAgKi8KPiA+PiAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgICAgICAgICAgICAg ICAgc2NoZWR1bGVkOwo+ID4+Cj4gPj4gLSAgICAgICAvKiBUaGlzIGZlbmNlIGlzIHdoYXQgd2ls bCBiZSBzaWduYWxlZCBieSB0aGUgc2NoZWR1bGVyIHdoZW4KPiA+PiAtICAgICAgICAqIHRoZSBq b2IgaXMgY29tcGxldGVkLgo+ID4+IC0gICAgICAgICoKPiA+PiAtICAgICAgICAqIFdoZW4gc2V0 dGluZyB1cCBhbiBvdXQgZmVuY2UgZm9yIHRoZSBqb2IsIHlvdSBzaG91bGQgdXNlCj4gPj4gLSAg ICAgICAgKiB0aGlzLCBzaW5jZSBpdCdzIGF2YWlsYWJsZSBpbW1lZGlhdGVseSB1cG9uCj4gPj4g LSAgICAgICAgKiBkcm1fc2NoZWRfam9iX2luaXQoKSwgYW5kIHRoZSBmZW5jZSByZXR1cm5lZCBi eSB0aGUgZHJpdmVyCj4gPj4gLSAgICAgICAgKiBmcm9tIHJ1bl9qb2IoKSB3b24ndCBiZSBjcmVh dGVkIHVudGlsIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+ID4+IC0gICAgICAgICogcmVzb2x2ZWQu Cj4gPj4gLSAgICAgICAgKi8KPiA+PiArICAgICAgICAvKioKPiA+PiArICAgICAgICAgKiBAZmlu aXNoZWQ6IHRoaXMgZmVuY2UgaXMgd2hhdCB3aWxsIGJlIHNpZ25hbGVkIGJ5IHRoZSBzY2hlZHVs ZXIKPiA+PiArICAgICAgICAgKiB3aGVuIHRoZSBqb2IgaXMgY29tcGxldGVkLgo+ID4+ICsgICAg ICAgICAqCj4gPj4gKyAgICAgICAgICogV2hlbiBzZXR0aW5nIHVwIGFuIG91dCBmZW5jZSBmb3Ig dGhlIGpvYiwgeW91IHNob3VsZCB1c2UKPiA+PiArICAgICAgICAgKiB0aGlzLCBzaW5jZSBpdCdz IGF2YWlsYWJsZSBpbW1lZGlhdGVseSB1cG9uCj4gPj4gKyAgICAgICAgICogZHJtX3NjaGVkX2pv Yl9pbml0KCksIGFuZCB0aGUgZmVuY2UgcmV0dXJuZWQgYnkgdGhlIGRyaXZlcgo+ID4+ICsgICAg ICAgICAqIGZyb20gcnVuX2pvYigpIHdvbid0IGJlIGNyZWF0ZWQgdW50aWwgdGhlIGRlcGVuZGVu Y2llcyBoYXZlCj4gPj4gKyAgICAgICAgICogcmVzb2x2ZWQuCj4gPj4gKyAgICAgICAgICovCj4g Pj4gICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICAgICAgICAgICAgICAgIGZpbmlzaGVkOwo+ID4+ Cj4gPj4gKyAgICAgICAgLyoqCj4gPj4gKyAgICAgICAgICogQGNiOiB0aGUgY2FsbGJhY2sgZm9y IHRoZSBwYXJlbnQgZmVuY2UgYmVsb3cuCj4gPj4gKyAgICAgICAgICovCj4gPj4gICAgICAgICBz dHJ1Y3QgZG1hX2ZlbmNlX2NiICAgICAgICAgICAgIGNiOwo+ID4+ICsgICAgICAgIC8qKgo+ID4+ ICsgICAgICAgICAqIEBwYXJlbnQ6IHRoZSBmZW5jZSByZXR1cm5lZCBieSAmZHJtX3NjaGVkX2Jh Y2tlbmRfb3BzLnJ1bl9qb2IKPiA+PiArICAgICAgICAgKiB3aGVuIHNjaGVkdWxpbmcgdGhlIGpv YiBvbiBoYXJkd2FyZS4gV2Ugc2lnbmFsIHRoZQo+ID4+ICsgICAgICAgICAqICZkcm1fc2NoZWRf ZmVuY2UuZmluaXNoZWQgZmVuY2Ugb25jZSBwYXJlbnQgaXMgc2lnbmFsbGVkLgo+ID4+ICsgICAg ICAgICAqLwo+ID4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAgICAgICAgICAgICAgICAqcGFy ZW50Owo+ID4+ICsgICAgICAgIC8qKgo+ID4+ICsgICAgICAgICAqIEBzY2hlZDogdGhlIHNjaGVk dWxlciBpbnN0YW5jZSB0byB3aGljaCB0aGUgam9iIGhhdmluZyB0aGlzIHN0cnVjdAo+ID4+ICsg ICAgICAgICAqIGJlbG9uZ3MgdG8uCj4gPj4gKyAgICAgICAgICovCj4gPj4gICAgICAgICBzdHJ1 Y3QgZHJtX2dwdV9zY2hlZHVsZXIgICAgICAgICpzY2hlZDsKPiA+PiArICAgICAgICAvKioKPiA+ PiArICAgICAgICAgKiBAbG9jazogdGhlIGxvY2sgdXNlZCBieSB0aGUgc2NoZWR1bGVkIGFuZCB0 aGUgZmluaXNoZWQgZmVuY2VzLgo+ID4+ICsgICAgICAgICAqLwo+ID4+ICAgICAgICAgc3Bpbmxv Y2tfdCAgICAgICAgICAgICAgICAgICAgICBsb2NrOwo+ID4+ICsgICAgICAgIC8qKgo+ID4+ICsg ICAgICAgICAqIEBvd25lcjogam9iIG93bmVyIGZvciBkZWJ1Z2dpbmcKPiA+PiArICAgICAgICAg Ki8KPiA+PiAgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm93bmVyOwo+ ID4+ICB9Owo+ID4+Cj4gPj4gIHN0cnVjdCBkcm1fc2NoZWRfZmVuY2UgKnRvX2RybV9zY2hlZF9m ZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICpmKTsKPiA+Pgo+ID4+ICAvKioKPiA+PiAtICogZHJtX3Nj aGVkX2pvYiAtIEEgam9iIHRvIGJlIHJ1biBieSBhbiBlbnRpdHkuCj4gPj4gKyAqIHN0cnVjdCBk cm1fc2NoZWRfam9iIC0gQSBqb2IgdG8gYmUgcnVuIGJ5IGFuIGVudGl0eS4KPiA+PiArICoKPiA+ PiArICogQHF1ZXVlX25vZGU6IHVzZWQgdG8gYXBwZW5kIHRoaXMgc3RydWN0IHRvIHRoZSBxdWV1 ZSBvZiBqb2JzIGluIGFuIGVudGl0eS4KPiA+PiArICogQHNjaGVkOiB0aGUgc2NoZWR1bGVyIGlu c3RhbmNlIG9uIHdoaWNoIHRoaXMgam9iIGlzIHNjaGVkdWxlZC4KPiA+PiArICogQHNfZmVuY2U6 IGNvbnRhaW5zIHRoZSBmZW5jZXMgZm9yIHRoZSBzY2hlZHVsaW5nIG9mIGpvYi4KPiA+PiArICog QGZpbmlzaF9jYjogdGhlIGNhbGxiYWNrIGZvciB0aGUgZmluaXNoZWQgZmVuY2UuCj4gPj4gKyAq IEBmaW5pc2hfd29yazogc2NoZWR1bGVzIHRoZSBmdW5jdGlvbiBAZHJtX3NjaGVkX2pvYl9maW5p c2ggb25jZSB0aGUgam9iIGhhcwo+ID4+ICsgKiAgICAgICAgICAgICAgIGZpbmlzaGVkIHRvIHJl bW92ZSB0aGUgam9iIGZyb20gdGhlCj4gPj4gKyAqICAgICAgICAgICAgICAgQGRybV9ncHVfc2No ZWR1bGVyLnJpbmdfbWlycm9yX2xpc3QuCj4gPj4gKyAqIEBub2RlOiB1c2VkIHRvIGFwcGVuZCB0 aGlzIHN0cnVjdCB0byB0aGUgQGRybV9ncHVfc2NoZWR1bGVyLnJpbmdfbWlycm9yX2xpc3QuCj4g Pj4gKyAqIEB3b3JrX3Rkcjogc2NoZWR1bGVzIGEgZGVsYXllZCBjYWxsIHRvIEBkcm1fc2NoZWRf am9iX3RpbWVkb3V0IGFmdGVyIHRoZSB0aW1lb3V0Cj4gPj4gKyAqICAgICAgICAgICAgaW50ZXJ2 YWwgaXMgb3Zlci4KPiA+PiArICogQGlkOiBhIHVuaXF1ZSBpZCBhc3NpZ25lZCB0byBlYWNoIGpv YiBzY2hlZHVsZWQgb24gdGhlIHNjaGVkdWxlci4KPiA+PiArICogQGthcm1hOiBpbmNyZW1lbnQg b24gZXZlcnkgaGFuZyBjYXVzZWQgYnkgdGhpcyBqb2IuIElmIHRoaXMgZXhjZWVkcyB0aGUgaGFu Zwo+ID4+ICsgKiAgICAgICAgIGxpbWl0IG9mIHRoZSBzY2hlZHVsZXIgdGhlbiB0aGUgam9iIGlz IG1hcmtlZCBndWlsdHkgYW5kIHdpbGwgbm90Cj4gPj4gKyAqICAgICAgICAgYmUgc2NoZWR1bGVk IGZ1cnRoZXIuCj4gPj4gKyAqIEBzX3ByaW9yaXR5OiB0aGUgcHJpb3JpdHkgb2YgdGhlIGpvYi4K PiA+PiArICogQGVudGl0eTogdGhlIGVudGl0eSB0byB3aGljaCB0aGlzIGpvYiBiZWxvbmdzLgo+ ID4+ICAgKgo+ID4+ICAgKiBBIGpvYiBpcyBjcmVhdGVkIGJ5IHRoZSBkcml2ZXIgdXNpbmcgZHJt X3NjaGVkX2pvYl9pbml0KCksIGFuZAo+ID4+ICAgKiBzaG91bGQgY2FsbCBkcm1fc2NoZWRfZW50 aXR5X3B1c2hfam9iKCkgb25jZSBpdCB3YW50cyB0aGUgc2NoZWR1bGVyCj4gPj4gQEAgLTEzMCwz OCArMTk5LDY0IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcm1fc2NoZWRfaW52YWxpZGF0ZV9qb2Io c3RydWN0IGRybV9zY2hlZF9qb2IgKnNfam9iLAo+ID4+ICB9Cj4gPj4KPiA+PiAgLyoqCj4gPj4g KyAqIHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMKPiA+PiArICoKPiA+PiAgICogRGVmaW5l IHRoZSBiYWNrZW5kIG9wZXJhdGlvbnMgY2FsbGVkIGJ5IHRoZSBzY2hlZHVsZXIsCj4gPj4gLSAq IHRoZXNlIGZ1bmN0aW9ucyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaW4gZHJpdmVyIHNpZGUKPiA+ PiAtKi8KPiA+PiArICogdGhlc2UgZnVuY3Rpb25zIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBk cml2ZXIgc2lkZS4KPiA+PiArICovCj4gPj4gIHN0cnVjdCBkcm1fc2NoZWRfYmFja2VuZF9vcHMg ewo+ID4+IC0gICAgICAgLyogQ2FsbGVkIHdoZW4gdGhlIHNjaGVkdWxlciBpcyBjb25zaWRlcmlu ZyBzY2hlZHVsaW5nIHRoaXMKPiA+PiAtICAgICAgICAqIGpvYiBuZXh0LCB0byBnZXQgYW5vdGhl ciBzdHJ1Y3QgZG1hX2ZlbmNlIGZvciB0aGlzIGpvYiB0bwo+ID4+ICsgICAgICAgLyoqCj4gPj4g KyAgICAgICAgICogQGRlcGVuZGVuY3k6IENhbGxlZCB3aGVuIHRoZSBzY2hlZHVsZXIgaXMgY29u c2lkZXJpbmcgc2NoZWR1bGluZwo+ID4+ICsgICAgICAgICAqIHRoaXMgam9iIG5leHQsIHRvIGdl dCBhbm90aGVyIHN0cnVjdCBkbWFfZmVuY2UgZm9yIHRoaXMgam9iIHRvCj4gPj4gICAgICAgICAg KiBibG9jayBvbi4gIE9uY2UgaXQgcmV0dXJucyBOVUxMLCBydW5fam9iKCkgbWF5IGJlIGNhbGxl ZC4KPiA+PiAgICAgICAgICAqLwo+ID4+ICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSAqKCpkZXBl bmRlbmN5KShzdHJ1Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iLAo+ID4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZHJtX3NjaGVkX2VudGl0eSAqc19l bnRpdHkpOwo+ID4+Cj4gPj4gLSAgICAgICAvKiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9iIG9u Y2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMgaGF2ZQo+ID4+IC0gICAgICAgICogYmVlbiByZXNv bHZlZC4gIFRoaXMgbWF5IGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcywgaWYKPiA+PiArICAgICAg IC8qKgo+ID4+ICsgICAgICAgICAqIEBydW5fam9iOiBDYWxsZWQgdG8gZXhlY3V0ZSB0aGUgam9i IG9uY2UgYWxsIG9mIHRoZSBkZXBlbmRlbmNpZXMKPiA+PiArICAgICAgICAgKiBoYXZlIGJlZW4g cmVzb2x2ZWQuICBUaGlzIG1heSBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIGlmCj4gPj4gICAg ICAgICAgKiB0aW1lZG91dF9qb2IoKSBoYXMgaGFwcGVuZWQgYW5kIGRybV9zY2hlZF9qb2JfcmVj b3ZlcnkoKQo+ID4+ICAgICAgICAgICogZGVjaWRlcyB0byB0cnkgaXQgYWdhaW4uCj4gPj4gICAg ICAgICAgKi8KPiA+PiAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKigqcnVuX2pvYikoc3RydWN0 IGRybV9zY2hlZF9qb2IgKnNjaGVkX2pvYik7Cj4gPj4KPiA+PiAtICAgICAgIC8qIENhbGxlZCB3 aGVuIGEgam9iIGhhcyB0YWtlbiB0b28gbG9uZyB0byBleGVjdXRlLCB0byB0cmlnZ2VyCj4gPj4g LSAgICAgICAgKiBHUFUgcmVjb3ZlcnkuCj4gPj4gKyAgICAgICAvKioKPiA+PiArICAgICAgICAg KiBAdGltZWRvdXRfam9iOiBDYWxsZWQgd2hlbiBhIGpvYiBoYXMgdGFrZW4gdG9vIGxvbmcgdG8g ZXhlY3V0ZSwKPiA+PiArICAgICAgICAgKiB0byB0cmlnZ2VyIEdQVSByZWNvdmVyeS4KPiA+PiAg ICAgICAgICAqLwo+ID4+ICAgICAgICAgdm9pZCAoKnRpbWVkb3V0X2pvYikoc3RydWN0IGRybV9z Y2hlZF9qb2IgKnNjaGVkX2pvYik7Cj4gPj4KPiA+PiAtICAgICAgIC8qIENhbGxlZCBvbmNlIHRo ZSBqb2IncyBmaW5pc2hlZCBmZW5jZSBoYXMgYmVlbiBzaWduYWxlZCBhbmQKPiA+PiAtICAgICAg ICAqIGl0J3MgdGltZSB0byBjbGVhbiBpdCB1cC4KPiA+PiArICAgICAgIC8qKgo+ID4+ICsgICAg ICAgICAqIEBmcmVlX2pvYjogQ2FsbGVkIG9uY2UgdGhlIGpvYidzIGZpbmlzaGVkIGZlbmNlIGhh cyBiZWVuIHNpZ25hbGVkCj4gPj4gKyAgICAgICAgICogYW5kIGl0J3MgdGltZSB0byBjbGVhbiBp dCB1cC4KPiA+PiAgICAgICAgICAqLwo+ID4+ICAgICAgICAgdm9pZCAoKmZyZWVfam9iKShzdHJ1 Y3QgZHJtX3NjaGVkX2pvYiAqc2NoZWRfam9iKTsKPiA+PiAgfTsKPiA+Pgo+ID4+ICAvKioKPiA+ PiAtICogT25lIHNjaGVkdWxlciBpcyBpbXBsZW1lbnRlZCBmb3IgZWFjaCBoYXJkd2FyZSByaW5n Cj4gPj4gLSovCj4gPj4gKyAqIHN0cnVjdCBkcm1fZ3B1X3NjaGVkdWxlcgo+ID4+ICsgKgo+ID4+ ICsgKiBAb3BzOiBiYWNrZW5kIG9wZXJhdGlvbnMgcHJvdmlkZWQgYnkgdGhlIGRyaXZlci4KPiA+ PiArICogQGh3X3N1Ym1pc3Npb25fbGltaXQ6IHRoZSBtYXggc2l6ZSBvZiB0aGUgaGFyZHdhcmUg cXVldWUuCj4gPj4gKyAqIEB0aW1lb3V0OiB0aGUgdGltZSBhZnRlciB3aGljaCBhIGpvYiBpcyBy ZW1vdmVkIGZyb20gdGhlIHNjaGVkdWxlci4KPiA+PiArICogQG5hbWU6IG5hbWUgb2YgdGhlIHJp bmcgZm9yIHdoaWNoIHRoaXMgc2NoZWR1bGVyIGlzIGJlaW5nIHVzZWQuCj4gPj4gKyAqIEBzY2hl ZF9ycTogcHJpb3JpdHkgd2lzZSBhcnJheSBvZiBydW4gcXVldWVzLgo+ID4+ICsgKiBAd2FrZV91 cF93b3JrZXI6IHRoZSB3YWl0IHF1ZXVlIG9uIHdoaWNoIHRoZSBzY2hlZHVsZXIgc2xlZXBzIHVu dGlsIGEgam9iCj4gPj4gKyAqICAgICAgICAgICAgICAgICAgaXMgcmVhZHkgdG8gYmUgc2NoZWR1 bGVkLgo+ID4+ICsgKiBAam9iX3NjaGVkdWxlZDogb25jZSBAZHJtX3NjaGVkX2VudGl0eV9kb19y ZWxlYXNlIGlzIGNhbGxlZCB0aGUgc2NoZWR1bGVyCj4gPj4gKyAqICAgICAgICAgICAgICAgICB3 YWl0cyBvbiB0aGlzIHdhaXQgcXVldWUgdW50aWwgYWxsIHRoZSBzY2hlZHVsZWQgam9icyBhcmUK PiA+PiArICogICAgICAgICAgICAgICAgIGZpbmlzaGVkLgo+ID4+ICsgKiBAaHdfcnFfY291bnQ6 IHRoZSBudW1iZXIgb2Ygam9icyBjdXJyZW50bHkgaW4gdGhlIGhhcmR3YXJlIHF1ZXVlLgo+ID4+ ICsgKiBAam9iX2lkX2NvdW50OiB1c2VkIHRvIGFzc2lnbiB1bmlxdWUgaWQgdG8gdGhlIGVhY2gg am9iLgo+ID4+ICsgKiBAdGhyZWFkOiB0aGUga3RocmVhZCBvbiB3aGljaCB0aGUgc2NoZWR1bGVy IHdoaWNoIHJ1bi4KPiA+PiArICogQHJpbmdfbWlycm9yX2xpc3Q6IHRoZSBsaXN0IG9mIGpvYnMg d2hpY2ggYXJlIGN1cnJlbnRseSBpbiB0aGUgam9iIHF1ZXVlLgo+ID4+ICsgKiBAam9iX2xpc3Rf bG9jazogbG9jayB0byBwcm90ZWN0IHRoZSByaW5nX21pcnJvcl9saXN0Lgo+ID4+ICsgKiBAaGFu Z19saW1pdDogb25jZSB0aGUgaGFuZ3MgYnkgYSBqb2IgY3Jvc3NlcyB0aGlzIGxpbWl0IHRoZW4g aXQgaXMgbWFya2VkCj4gPj4gKyAqICAgICAgICAgICAgICBndWlsdHkgYW5kIGl0IHdpbGwgYmUg Y29uc2lkZXJlZCBmb3Igc2NoZWR1bGluZyBmdXJ0aGVyLgo+ID4+ICsgKgo+ID4+ICsgKiBPbmUg c2NoZWR1bGVyIGlzIGltcGxlbWVudGVkIGZvciBlYWNoIGhhcmR3YXJlIHJpbmcuCj4gPj4gKyAq Lwo+ID4+ICBzdHJ1Y3QgZHJtX2dwdV9zY2hlZHVsZXIgewo+ID4+ICAgICAgICAgY29uc3Qgc3Ry dWN0IGRybV9zY2hlZF9iYWNrZW5kX29wcyAgICAgICpvcHM7Cj4gPj4gICAgICAgICB1aW50MzJf dCAgICAgICAgICAgICAgICAgICAgICAgIGh3X3N1Ym1pc3Npb25fbGltaXQ7Cj4gPj4gLS0KPiA+ PiAyLjE0LjMKPiA+Pgo+ID4KPiA+Cj4gPgo+ID4gLS0KPiA+IERhbmllbCBWZXR0ZXIKPiA+IFNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgo+ID4gKzQxICgwKSA3OSAzNjUgNTcg NDggLSBodHRwOi8vYmxvZy5mZndsbC5jaAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=