From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vince Hsu Subject: Re: [RFC PATCH 2/3] dvfs: add support for GK20A Date: Thu, 18 Dec 2014 18:13:58 +0800 Message-ID: <5492A8E6.1040508@nvidia.com> References: <1418884092-14448-1-git-send-email-vinceh@nvidia.com> <1418884092-14448-3-git-send-email-vinceh@nvidia.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: nouveau-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Nouveau" To: Ben Skeggs Cc: Roy Spliet , Ben Skeggs , "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" List-Id: nouveau.vger.kernel.org SGVsbG8gQmVuLAoKT24gMTIvMTgvMjAxNCAwNTozNCBQTSwgQmVuIFNrZWdncyB3cm90ZToKPiBP biBUaHUsIERlYyAxOCwgMjAxNCBhdCA0OjI4IFBNLCBWaW5jZSBIc3UgPHZpbmNlaEBudmlkaWEu Y29tPiB3cm90ZToKPj4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgc3ViZGV2IGZvciBEVkZTIChEeW5h bWljIFZvbHRhZ2UgYW5kIEZyZXF1ZW5jeSBTY2FsaW5nKQo+PiBzdXBwb3J0IGluIE5vdXZlYXUu IFRoaXMgc3ViZGV2IHJlZmVycyB0byB0aGUgc3RhdHVzIGluZm9ybWF0aW9uIHByb3ZpZGVkIGJ5 Cj4+IHRoZSBOVklESUEgaGFyZHdhcmUgYW5kIHRyaWVzIHRvIGFkanVzdCB0aGUgcGVyZm9ybWFu Y2UgbGV2ZWwgYmFzZWQgb24gdGhlCj4+IGNhbGN1bGF0ZWQgdGFyZ2V0LiBPbmx5IHRoZSBHSzIw QSBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93Lgo+IEhleSBWaW5jZSwKPgo+IEknZCBub3QgbWFrZSBh IG5ldyBzdWJkZXYsIGJ1dCBpbXBsZW1lbnQgdGhpcyBpbiB0aGUgUE1VIChQV1IKPiBjdXJyZW50 bHkpIHN1YmRldi4gIFRoZSB1Y29kZSB0aGF0J3Mgc3VwcG9zZWQgdG8gYmUgcnVubmluZyB0aGVy ZSBjYW4KPiBkbyB0aGUgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBpbiBhIG1vcmUgY29tcGxleCBp bXBsZW1lbnRhdGlvbiwgYW5kCj4gaXQncyBQTVUgY291bnRlcnMgeW91J3JlIHRvdWNoaW5nIHRv IGdldCB0aGUgdXNhZ2Ugc3RhdHMgOikgIEJ1dCB0aGUKPiBzaW1wbGVyIG9uLWhvc3QgaW1wbGVt ZW50YXRpb24gaXMgdG90YWxseSBmaW5lLgpZZWFoLCBJIGtub3cgd2UgaGF2ZSB0aGUgY291bnRl cnMgZGVmaW5lZCBpbiBkYWVtb24uYy4gTWFydGluIHJlbWluZGVkIAptZSB0aGF0IFJveSBoYWQg YSBwYXRjaCB0byByZW1vdmUgdGhhdCwgc29ycnkgdGhhdCBJIGNvdWxkIG5vdCBmaW5kIHRoZSAK bGluayBub3cuIEFub3RoZXIgcmVhc29uIEkgZGlkIG5vdCB1c2UgdGhlIG5vdXZlYXVfc3BlY3Np ZyBpcyBiZWNhdXNlIEkgCmhhZCB0byBjcmVhdGUgc29tZSBudmlmIHN0cnVjdHVyZXMgdG8gYWNj ZXNzIHRoZSBjb3VudGVycyBhbmQgdGhhdCdzIG5vdCAKc3RyYWlnaHRmb3J3YXJkLiBJJ20gaGFw cHkgdG8gaGVhciB5b3UncmUgZmluZSB3aXRoIHRoZSBvbi1ob3N0IAppbXBsZW1lbnRhdGlvbi4g OikKCkkgd2lsbCBtb3ZlIGFsbCB0byBQV1Igc3ViZGV2IGluIHRoZSBuZXh0IHZlcnNpb24uCj4K PiBUaGUgY3VycmVudCBiYXNlIFBNVSBpbXBsZW1lbnRhdGlvbiB0cmllcyB0byBkbyBhIGxvdCBv ZiBzdHVmZiB0aGF0Cj4geW91IGRvbid0IG5lZWQsIGp1c3Qgb3ZlcnJpZGUgdGhlIGltcGxlbWVu dGF0aW9uIGVudGlyZWx5IGZvciBHSzIwQQo+IGZvciBub3cgaWYgdGhhdCdzIGVhc2llciB0aGFu IHJld29ya2luZyBpdC4KU28gY3VycmVudGx5IHRoZXJlIGlzIG5vIGRHUFUgdXNpbmcgdGhlIFBN VT8gSSBqdXN0IGRvbid0IHdhbnQgdG8gYnJlYWsgCmFueSBkR1BVIGZ1bmN0aW9ucy4gOykKPgo+ IEFzaWRlIGZyb20gdGhlIHN1YmRldiBtb3ZlLCBpdCBsb29rcyBnb29kIHNvIGZhciB0byBtZS4g IEdsYWQgdG8gc2VlCj4gdGhlIENMSyBzdHVmZiBpc24ndCB0b3RhbGx5IHVzZWxlc3MsIGRlc3Bp dGUgaXQgbmVlZGluZyBhICpsb3QqIG9mCj4gd29yay4KQlRXLCBjYW4gd2UgYWRkIHNvbWUgZXhl Y3V0aW9uIHRpbWUgaW5mb3JtYXRpb24gZm9yIHBzdGF0ZT8gSSBtZWFuIApzb21ldGhpbmcgbGlr ZSAKIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdTAvY3B1ZnJlcS9zdGF0cy90aW1lX2luX3N0 YXRlIi4gSSBrbm93IHdlIApkb24ndCB3YW50IHRvIGNoYW5nZSB0aGUgdXNlciBzcGFjZSBBQkkg dGhvdWdoLgoKVGhhbmtzLApWaW5jZQoKPgo+IFRoYW5rcywKPiBCZW4uCj4KPj4gU2lnbmVkLW9m Zi1ieTogVmluY2UgSHN1IDx2aW5jZWhAbnZpZGlhLmNvbT4KPj4gLS0tCj4+ICAgZHJtL0tidWls ZCAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPj4gICBkcm0vY29yZS9pbmNsdWRlL3N1YmRl di9kdmZzLmggfCAgIDEgKwo+PiAgIGRybS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYyAgICB8ICAg MSArCj4+ICAgZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYyAgIHwgICAxICsKPj4gICBkcm0v Y29yZS9zdWJkZXYvZHZmcy9wcml2LmggICAgfCAgIDEgKwo+PiAgIG52a20vZW5naW5lL2Rldmlj ZS9udmUwLmMgICAgICB8ICAgMiArCj4+ICAgbnZrbS9pbmNsdWRlL2NvcmUvZGV2aWNlLmggICAg IHwgICAxICsKPj4gICBudmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaCAgICAgfCAgMzAgKysrKysr KysKPj4gICBudmttL3N1YmRldi9NYWtlZmlsZS5hbSAgICAgICAgfCAgIDUgKy0KPj4gICBudmtt L3N1YmRldi9kdmZzL01ha2VmaWxlLmFtICAgfCAgIDYgKysKPj4gICBudmttL3N1YmRldi9kdmZz L2Jhc2UuYyAgICAgICAgfCAxMjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ PiAgIG52a20vc3ViZGV2L2R2ZnMvZ2syMGEuYyAgICAgICB8IDE1NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAgIG52a20vc3ViZGV2L2R2ZnMvcHJpdi5oICAg ICAgICB8ICA0MyArKysrKysrKysrKysKPj4gICAxMyBmaWxlcyBjaGFuZ2VkLCAzNzYgaW5zZXJ0 aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKPj4gICBjcmVhdGUgbW9kZSAxMjAwMDAgZHJtL2NvcmUv aW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+ICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9jb3JlL3N1 YmRldi9kdmZzL2Jhc2UuYwo+PiAgIGNyZWF0ZSBtb2RlIDEyMDAwMCBkcm0vY29yZS9zdWJkZXYv ZHZmcy9nazIwYS5jCj4+ICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9jb3JlL3N1YmRldi9kdmZz L3ByaXYuaAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMu aAo+PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBudmttL3N1YmRldi9kdmZzL01ha2VmaWxlLmFtCj4+ ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2L2R2ZnMvYmFzZS5jCj4+ICAgY3JlYXRl IG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2L2R2ZnMvZ2syMGEuYwo+PiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBudmttL3N1YmRldi9kdmZzL3ByaXYuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJtL0tidWls ZCBiL2RybS9LYnVpbGQKPj4gaW5kZXggMDYxZDlmYWVmODM2Li5lN2ViMDVlNjY2YTAgMTAwNjQ0 Cj4+IC0tLSBhL2RybS9LYnVpbGQKPj4gKysrIGIvZHJtL0tidWlsZAo+PiBAQCAtMjI3LDYgKzIy Nyw4IEBAIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L2Jhc2Uubwo+PiAgIG5vdXZlYXUt eSArPSBjb3JlL3N1YmRldi92b2x0L2dwaW8ubwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRl di92b2x0L252NDAubwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL3N1YmRldi92b2x0L2drMjBhLm8K Pj4gK25vdXZlYXUteSArPSBjb3JlL3N1YmRldi9kdmZzL2Jhc2Uubwo+PiArbm91dmVhdS15ICs9 IGNvcmUvc3ViZGV2L2R2ZnMvZ2syMGEubwo+Pgo+PiAgIG5vdXZlYXUteSArPSBjb3JlL2VuZ2lu ZS9mYWxjb24ubwo+PiAgIG5vdXZlYXUteSArPSBjb3JlL2VuZ2luZS94dGVuc2Eubwo+PiBkaWZm IC0tZ2l0IGEvZHJtL2NvcmUvaW5jbHVkZS9zdWJkZXYvZHZmcy5oIGIvZHJtL2NvcmUvaW5jbHVk ZS9zdWJkZXYvZHZmcy5oCj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uNTUzYTY5NjgzNTBiCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJtL2NvcmUvaW5j bHVkZS9zdWJkZXYvZHZmcy5oCj4+IEBAIC0wLDAgKzEgQEAKPj4gKy4uLy4uLy4uLy4uL252a20v aW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+PiBk aWZmIC0tZ2l0IGEvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvYmFzZS5jIGIvZHJtL2NvcmUvc3ViZGV2 L2R2ZnMvYmFzZS5jCj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+IGluZGV4IDAwMDAwMDAwMDAw MC4uMjk2MzM0ZWU1MmQxCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJtL2NvcmUvc3ViZGV2 L2R2ZnMvYmFzZS5jCj4+IEBAIC0wLDAgKzEgQEAKPj4gKy4uLy4uLy4uLy4uL252a20vc3ViZGV2 L2R2ZnMvYmFzZS5jCj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+PiBkaWZmIC0tZ2l0 IGEvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYyBiL2RybS9jb3JlL3N1YmRldi9kdmZzL2dr MjBhLmMKPj4gbmV3IGZpbGUgbW9kZSAxMjAwMDAKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMDVk NDkzZTNmYzkKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcm0vY29yZS9zdWJkZXYvZHZmcy9n azIwYS5jCj4+IEBAIC0wLDAgKzEgQEAKPj4gKy4uLy4uLy4uLy4uL252a20vc3ViZGV2L2R2ZnMv Z2syMGEuYwo+PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4gZGlmZiAtLWdpdCBhL2Ry bS9jb3JlL3N1YmRldi9kdmZzL3ByaXYuaCBiL2RybS9jb3JlL3N1YmRldi9kdmZzL3ByaXYuaAo+ PiBuZXcgZmlsZSBtb2RlIDEyMDAwMAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjliNDcxZGM0NGY0 OAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RybS9jb3JlL3N1YmRldi9kdmZzL3ByaXYuaAo+ PiBAQCAtMCwwICsxIEBACj4+ICsuLi8uLi8uLi8uLi9udmttL3N1YmRldi9kdmZzL3ByaXYuaAo+ PiBcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKPj4gZGlmZiAtLWdpdCBhL252a20vZW5naW5l L2RldmljZS9udmUwLmMgYi9udmttL2VuZ2luZS9kZXZpY2UvbnZlMC5jCj4+IGluZGV4IGJhNzky MmQzMTM1MS4uNWE4MzBhMzdhMTVkIDEwMDY0NAo+PiAtLS0gYS9udmttL2VuZ2luZS9kZXZpY2Uv bnZlMC5jCj4+ICsrKyBiL252a20vZW5naW5lL2RldmljZS9udmUwLmMKPj4gQEAgLTQxLDYgKzQx LDcgQEAKPj4gICAjaW5jbHVkZSA8c3ViZGV2L2Jhci5oPgo+PiAgICNpbmNsdWRlIDxzdWJkZXYv cHdyLmg+Cj4+ICAgI2luY2x1ZGUgPHN1YmRldi92b2x0Lmg+Cj4+ICsjaW5jbHVkZSA8c3ViZGV2 L2R2ZnMuaD4KPj4KPj4gICAjaW5jbHVkZSA8ZW5naW5lL2RldmljZS5oPgo+PiAgICNpbmNsdWRl IDxlbmdpbmUvZG1hb2JqLmg+Cj4+IEBAIC0xODAsNiArMTgxLDcgQEAgbnZlMF9pZGVudGlmeShz dHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRldmljZSkKPj4gICAgICAgICAgICAgICAgICBkZXZpY2Ut Pm9jbGFzc1tOVkRFVl9FTkdJTkVfQ09QWTIgIF0gPSAmbnZlMF9jb3B5Ml9vY2xhc3M7Cj4+ICAg ICAgICAgICAgICAgICAgZGV2aWNlLT5vY2xhc3NbTlZERVZfRU5HSU5FX1BFUkZNT05dID0gJmdr MjBhX3BlcmZtb25fb2NsYXNzOwo+PiAgICAgICAgICAgICAgICAgIGRldmljZS0+b2NsYXNzW05W REVWX1NVQkRFVl9WT0xUICAgXSA9ICZnazIwYV92b2x0X29jbGFzczsKPj4gKyAgICAgICAgICAg ICAgIGRldmljZS0+b2NsYXNzW05WREVWX1NVQkRFVl9EVkZTICAgXSA9IGdrMjBhX2R2ZnNfb2Ns YXNzOwo+PiAgICAgICAgICAgICAgICAgIGJyZWFrOwo+PiAgICAgICAgICBjYXNlIDB4ZjA6Cj4+ ICAgICAgICAgICAgICAgICAgZGV2aWNlLT5jbmFtZSA9ICJHSzExMCI7Cj4+IGRpZmYgLS1naXQg YS9udmttL2luY2x1ZGUvY29yZS9kZXZpY2UuaCBiL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5o Cj4+IGluZGV4IDJlYzJlNTBkMzY3Ni4uMTYyZmE2YTNjZmNjIDEwMDY0NAo+PiAtLS0gYS9udmtt L2luY2x1ZGUvY29yZS9kZXZpY2UuaAo+PiArKysgYi9udmttL2luY2x1ZGUvY29yZS9kZXZpY2Uu aAo+PiBAQCAtMzksNiArMzksNyBAQCBlbnVtIG52X3N1YmRldl90eXBlIHsKPj4gICAgICAgICAg TlZERVZfU1VCREVWX1ZPTFQsCj4+ICAgICAgICAgIE5WREVWX1NVQkRFVl9USEVSTSwKPj4gICAg ICAgICAgTlZERVZfU1VCREVWX0NMT0NLLAo+PiArICAgICAgIE5WREVWX1NVQkRFVl9EVkZTLAo+ Pgo+PiAgICAgICAgICBOVkRFVl9FTkdJTkVfRklSU1QsCj4+ICAgICAgICAgIE5WREVWX0VOR0lO RV9ETUFPQkogPSBOVkRFVl9FTkdJTkVfRklSU1QsCj4+IGRpZmYgLS1naXQgYS9udmttL2luY2x1 ZGUvc3ViZGV2L2R2ZnMuaCBiL252a20vaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uMzg1MTYyOWEwZGU0Cj4+IC0tLSAv ZGV2L251bGwKPj4gKysrIGIvbnZrbS9pbmNsdWRlL3N1YmRldi9kdmZzLmgKPj4gQEAgLTAsMCAr MSwzMCBAQAo+PiArI2lmbmRlZiBfX05PVVZFQVVfRFZGU19IX18KPj4gKyNkZWZpbmUgX19OT1VW RUFVX0RWRlNfSF9fCj4+ICsKPj4gKyNpbmNsdWRlIDxjb3JlL3N1YmRldi5oPgo+PiArI2luY2x1 ZGUgPGNvcmUvZGV2aWNlLmg+Cj4+ICsKPj4gKyNpbmNsdWRlIDxzdWJkZXYvdGltZXIuaD4KPj4g Kwo+PiArc3RydWN0IG5vdXZlYXVfZHZmc19kYXRhIHsKPj4gKyAgICAgICBpbnQgcF9sb2FkX3Rh cmdldDsKPj4gKyAgICAgICBpbnQgcF9sb2FkX21heDsKPj4gKyAgICAgICBpbnQgcF9zbW9vdGg7 Cj4+ICsgICAgICAgdW5zaWduZWQgaW50IGF2Z19sb2FkOwo+PiArfTsKPj4gKwo+PiArc3RydWN0 IG5vdXZlYXVfZHZmcyB7Cj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfc3ViZGV2IGJhc2U7Cj4+ ICsgICAgICAgc3RydWN0IG5vdXZlYXVfYWxhcm0gYWxhcm07Cj4+ICsgICAgICAgc3RydWN0IG5v dXZlYXVfZHZmc19kYXRhICpkYXRhOwo+PiArfTsKPj4gKwo+PiArc3RhdGljIGlubGluZSBzdHJ1 Y3Qgbm91dmVhdV9kdmZzICoKPj4gK25vdXZlYXVfZHZmcyh2b2lkICpvYmopCj4+ICt7Cj4+ICsg ICAgICAgcmV0dXJuICh2b2lkICopbnZfZGV2aWNlKG9iaiktPnN1YmRldltOVkRFVl9TVUJERVZf RFZGU107Cj4+ICt9Cj4+ICsKPj4gK2V4dGVybiBzdHJ1Y3Qgbm91dmVhdV9vY2xhc3MgKmdrMjBh X2R2ZnNfb2NsYXNzOwo+PiArCj4+ICsjZW5kaWYKPj4gZGlmZiAtLWdpdCBhL252a20vc3ViZGV2 L01ha2VmaWxlLmFtIGIvbnZrbS9zdWJkZXYvTWFrZWZpbGUuYW0KPj4gaW5kZXggNWE0OGRkYjg3 OTgxLi4zZDExZTA4MzMwMzIgMTAwNjQ0Cj4+IC0tLSBhL252a20vc3ViZGV2L01ha2VmaWxlLmFt Cj4+ICsrKyBiL252a20vc3ViZGV2L01ha2VmaWxlLmFtCj4+IEBAIC0xLDUgKzEsNSBAQAo+PiAg IFNVQkRJUlMgPSBiYXIgYnVzIGJpb3MgY2xvY2sgZGV2aW5pdCBmYiBmdXNlIGdwaW8gaTJjIGli dXMgaW5zdG1lbSBcCj4+IC0gICAgICAgICBsdGMgbWMgbXhtIHB3ciB0aGVybSB0aW1lciB2bSB2 b2x0Cj4+ICsgICAgICAgICBsdGMgbWMgbXhtIHB3ciB0aGVybSB0aW1lciB2bSB2b2x0IGR2ZnMK Pj4KPj4gICBub2luc3RfTFRMSUJSQVJJRVMgPSBsaWJzdWJkZXYubGEKPj4KPj4gQEAgLTIyLDQg KzIyLDUgQEAgbGlic3ViZGV2X2xhX0xJQkFERCAgID0gYmFyL2xpYmJhci5sYSBcCj4+ICAgICAg ICAgICAgICAgICAgICAgICAgICB0aGVybS9saWJ0aGVybS5sYSBcCj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICB0aW1lci9saWJ0aW1lci5sYSBcCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICB2bS9saWJ2bS5sYSBcCj4+IC0gICAgICAgICAgICAgICAgICAgICAgIHZvbHQvbGlidm9sdC5s YQo+PiArICAgICAgICAgICAgICAgICAgICAgICB2b2x0L2xpYnZvbHQubGEgXAo+PiArICAgICAg ICAgICAgICAgICAgICAgICBkdmZzL2R2ZnMubGEKPj4gZGlmZiAtLWdpdCBhL252a20vc3ViZGV2 L2R2ZnMvTWFrZWZpbGUuYW0gYi9udmttL3N1YmRldi9kdmZzL01ha2VmaWxlLmFtCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzA5ZDRlYzQxMjRkCj4+IC0t LSAvZGV2L251bGwKPj4gKysrIGIvbnZrbS9zdWJkZXYvZHZmcy9NYWtlZmlsZS5hbQo+PiBAQCAt MCwwICsxLDYgQEAKPj4gK25vaW5zdF9MVExJQlJBUklFUyA9IGxpYmR2ZnMubGEKPj4gKwo+PiAr bGliZHZmc19sYV9TT1VSQ0VTID0gYmFzZS5jIFwKPj4gKyAgICAgICAgICAgICAgICAgICAgIGdr MjBhLmMKPj4gKwo+PiAraW5jbHVkZSAkKHNyY2RpcikvLi4vTWFrZWZpbGUuc3ViZGV2Cj4+IGRp ZmYgLS1naXQgYS9udmttL3N1YmRldi9kdmZzL2Jhc2UuYyBiL252a20vc3ViZGV2L2R2ZnMvYmFz ZS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODhhZTIw MTg0MGE4Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbnZrbS9zdWJkZXYvZHZmcy9iYXNlLmMK Pj4gQEAgLTAsMCArMSwxMjkgQEAKPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTQsIE5W SURJQSBDT1JQT1JBVElPTi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPj4gKyAqCj4+ICsgKiBQZXJt aXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBv YnRhaW5pbmcgYQo+PiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRv Y3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPj4gKyAqIHRvIGRlYWwgaW4gdGhl IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRp b24KPj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRo ZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+PiArICoKPj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluCj4+ICsgKiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KPj4gKyAqCj4+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4+ICsgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKPj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+PiAr ICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhF IFVTRSBPUiBPVEhFUgo+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+PiArICovCj4+ ICsKPj4gKyNpbmNsdWRlIDxjb3JlL29wdGlvbi5oPgo+PiArCj4+ICsjaW5jbHVkZSA8c3ViZGV2 L2Nsb2NrLmg+Cj4+ICsjaW5jbHVkZSA8c3ViZGV2L2R2ZnMuaD4KPj4gKyNpbmNsdWRlIDxzdWJk ZXYvdm9sdC5oPgo+PiArCj4+ICsjaW5jbHVkZSAicHJpdi5oIgo+PiArCj4+ICtzdGF0aWMgdm9p ZAo+PiArX25vdXZlYXVfZHZmc193b3JrKHN0cnVjdCBub3V2ZWF1X2FsYXJtICphbGFybSkKPj4g K3sKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzID0gY29udGFpbmVyX29mKGFs YXJtLCBzdHJ1Y3Qgbm91dmVhdV9kdmZzLAo+PiArICAgICAgICAgICAgICAgICAgICAgICBhbGFy bSk7Cj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kYXRhICpkYXRhID0gZHZmcy0+ZGF0 YTsKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKm9iamVjdCA9IG52X29iamVjdChk dmZzKTsKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgKmltcGwgPSAodm9pZCAq KW9iamVjdC0+b2NsYXNzOwo+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGV2X3N0YXR1 cyBzdGF0dXM7Cj4+ICsgICAgICAgdTMyIHV0aWxpemF0aW9uID0gMDsKPj4gKyAgICAgICBpbnQg c3RhdGUsIHJldDsKPj4gKwo+PiArICAgICAgIHJldCA9IGltcGwtPmdldF9kZXZfc3RhdHVzKGR2 ZnMsICZzdGF0dXMpOwo+PiArICAgICAgIGlmIChyZXQpIHsKPj4gKyAgICAgICAgICAgICAgIG52 X3dhcm4oZHZmcywgImZhaWxlZCB0byBnZXQgZGV2aWNlIHN0YXR1c1xuIik7Cj4+ICsgICAgICAg ICAgICAgICBnb3RvIHJlc2NoZWQ7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgaWYgKHN0 YXR1cy50b3RhbCkKPj4gKyAgICAgICAgICAgICAgIHV0aWxpemF0aW9uID0gZGl2X3U2NCgodTY0 KXN0YXR1cy5idXN5ICogMTAwLCBzdGF0dXMudG90YWwpOwo+PiArCj4+ICsgICAgICAgZGF0YS0+ YXZnX2xvYWQgPSAoZGF0YS0+cF9zbW9vdGggKiBkYXRhLT5hdmdfbG9hZCkgKyB1dGlsaXphdGlv bjsKPj4gKyAgICAgICBkYXRhLT5hdmdfbG9hZCAvPSBkYXRhLT5wX3Ntb290aCArIDE7Cj4+ICsg ICAgICAgbnZfdHJhY2UoZHZmcywgInV0aWxpemF0aW9uID0gJWQgJSUsIGF2Z19sb2FkID0gJWQg JSVcbiIsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHV0aWxpemF0aW9uLCBkYXRhLT5hdmdf bG9hZCk7Cj4+ICsKPj4gKyAgICAgICByZXQgPSBpbXBsLT5nZXRfY3VyX3N0YXRlKGR2ZnMsICZz dGF0ZSk7Cj4+ICsgICAgICAgaWYgKHJldCkgewo+PiArICAgICAgICAgICAgICAgbnZfd2Fybihk dmZzLCAiZmFpbGVkIHRvIGdldCBjdXJyZW50IHN0YXRlXG4iKTsKPj4gKyAgICAgICAgICAgICAg IGdvdG8gcmVzY2hlZDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBpZiAoaW1wbC0+Z2V0 X3RhcmdldF9zdGF0ZShkdmZzLCAmc3RhdGUsIGRhdGEtPmF2Z19sb2FkKSkgewo+PiArICAgICAg ICAgICAgICAgbnZfdHJhY2UoZHZmcywgInNldCBuZXcgc3RhdGUgdG8gJWRcbiIsIHN0YXRlKTsK Pj4gKyAgICAgICAgICAgICAgIGltcGwtPnRhcmdldChkdmZzLCAmc3RhdGUpOwo+PiArICAgICAg IH0KPj4gKwo+PiArcmVzY2hlZDoKPj4gKyAgICAgICBpbXBsLT5yZXNldF9kZXZfc3RhdHVzKGR2 ZnMpOwo+PiArICAgICAgIG5vdXZlYXVfdGltZXJfYWxhcm0oZHZmcywgMTAwMDAwMDAwLCBhbGFy bSk7Cj4+ICt9Cj4+ICsKPj4gK2ludAo+PiArX25vdXZlYXVfZHZmc19maW5pKHN0cnVjdCBub3V2 ZWF1X29iamVjdCAqb2JqZWN0LCBib29sIHN1c3BlbmQpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0 IG5vdXZlYXVfZHZmcyAqZHZmcyA9ICh2b2lkICopb2JqZWN0Owo+PiArCj4+ICsgICAgICAgbm91 dmVhdV90aW1lcl9hbGFybV9jYW5jZWwoZHZmcywgJmR2ZnMtPmFsYXJtKTsKPj4gKwo+PiArICAg ICAgIHJldHVybiBub3V2ZWF1X3N1YmRldl9maW5pKCZkdmZzLT5iYXNlLCBzdXNwZW5kKTsKPj4g K30KPj4gKwo+PiAraW50Cj4+ICtfbm91dmVhdV9kdmZzX2luaXQoc3RydWN0IG5vdXZlYXVfb2Jq ZWN0ICpvYmplY3QpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmcyA9 ICh2b2lkICopb2JqZWN0Owo+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBu b3V2ZWF1X2Nsb2NrKG9iamVjdCk7Cj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfdm9sdCAqdm9s dCA9IG5vdXZlYXVfdm9sdChvYmplY3QpOwo+PiArICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAg ICAgICByZXQgPSBub3V2ZWF1X3N1YmRldl9pbml0KCZkdmZzLT5iYXNlKTsKPj4gKyAgICAgICBp ZiAocmV0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgICAgIGlm ICghY2xrIHx8ICF2b2x0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+ICsK Pj4gKyAgICAgICBub3V2ZWF1X3RpbWVyX2FsYXJtKGR2ZnMsIDIwMDAwMDAwMDAsICZkdmZzLT5h bGFybSk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArdm9pZAo+PiAr X25vdXZlYXVfZHZmc19kdG9yKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqb2JqZWN0KQo+PiArewo+ PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMgPSAodm9pZCAqKW9iamVjdDsKPj4g Kwo+PiArICAgICAgIG5vdXZlYXVfc3ViZGV2X2Rlc3Ryb3koJmR2ZnMtPmJhc2UpOwo+PiArfQo+ PiArCj4+ICtpbnQKPj4gK25vdXZlYXVfZHZmc19jcmVhdGVfKHN0cnVjdCBub3V2ZWF1X29iamVj dCAqcGFyZW50LAo+PiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbm91dmVhdV9vYmpl Y3QgKmVuZ2luZSwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfb2Ns YXNzICpvY2xhc3MsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGludCBzaXplLCB2b2lkICoq cG9iamVjdCkKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzOwo+PiAr ICAgICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQgPSBub3V2ZWF1X3N1YmRldl9jcmVh dGVfKHBhcmVudCwgZW5naW5lLCBvY2xhc3MsIDAsICJEVkZTIiwKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJkdmZzIiwgc2l6ZSwgcG9iamVjdCk7Cj4+ICsgICAgICAg ZHZmcyA9ICpwb2JqZWN0Owo+PiArICAgICAgIGlmIChyZXQpCj4+ICsgICAgICAgICAgICAgICBy ZXR1cm4gcmV0Owo+PiArCj4+ICsgICAgICAgbm91dmVhdV9hbGFybV9pbml0KCZkdmZzLT5hbGFy bSwgX25vdXZlYXVfZHZmc193b3JrKTsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArfQo+ PiBkaWZmIC0tZ2l0IGEvbnZrbS9zdWJkZXYvZHZmcy9nazIwYS5jIGIvbnZrbS9zdWJkZXYvZHZm cy9nazIwYS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZWZlYmQyYzEwZjk5Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvbnZrbS9zdWJkZXYvZHZmcy9n azIwYS5jCj4+IEBAIC0wLDAgKzEsMTU2IEBACj4+ICsvKgo+PiArICogQ29weXJpZ2h0IChjKSAy MDE0LCBOVklESUEgQ09SUE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4+ICsgKgo+PiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKPj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4+ICsgKiB0byBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBs aW1pdGF0aW9uCj4+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPj4gKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+PiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKPj4gKyAqCj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBh bmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgo+PiArICogYWxs IGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+ICsgKgo+ PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+PiArICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBM SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+PiArICogTElBQklMSVRZLCBX SEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJ TkcKPj4gKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SIFRIRSBVU0UgT1IgT1RIRVIKPj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4g KyAqLwo+PiArCj4+ICsjaW5jbHVkZSA8c3ViZGV2L2Nsb2NrLmg+Cj4+ICsjaW5jbHVkZSA8c3Vi ZGV2L2R2ZnMuaD4KPj4gKyNpbmNsdWRlIDxzdWJkZXYvdm9sdC5oPgo+PiArCj4+ICsjaW5jbHVk ZSAicHJpdi5oIgo+PiArCj4+ICsjZGVmaW5lIEJVU1lfU0xPVCAgICAgIDAKPj4gKyNkZWZpbmUg Q0xLX1NMT1QgICAgICAgNwo+PiArCj4+ICtzdHJ1Y3QgZ2syMGFfZHZmc19wcml2IHsKPj4gKyAg ICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzIGJhc2U7Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50 Cj4+ICtnazIwYV9kdmZzX3RhcmdldChzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgKnN0 YXRlKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1 X2Nsb2NrKGR2ZnMpOwo+PiArCj4+ICsgICAgICAgcmV0dXJuIG5vdXZlYXVfY2xvY2tfYXN0YXRl KGNsaywgKnN0YXRlLCAwLCBmYWxzZSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQKPj4gK2dr MjBhX2R2ZnNfZ2V0X2N1cl9zdGF0ZShzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgKnN0 YXRlKQo+PiArewo+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1 X2Nsb2NrKGR2ZnMpOwo+PiArCj4+ICsgICAgICAgKnN0YXRlID0gY2xrLT5wc3RhdGU7Cj4+ICsg ICAgICAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQKPj4gK2drMjBhX2R2ZnNf Z2V0X3RhcmdldF9zdGF0ZShzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLCBpbnQgKnN0YXRlLCBp bnQgbG9hZCkKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2RhdGEgKmRhdGEg PSBkdmZzLT5kYXRhOwo+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2 ZWF1X2Nsb2NrKGR2ZnMpOwo+PiArICAgICAgIGludCBjdXJfbGV2ZWwsIGxldmVsOwo+PiArCj4+ ICsgICAgICAgLyogRm9yIEdLMjBBLCB0aGUgcGVyZm9ybWFuY2UgbGV2ZWwgaXMgZGlyZWN0bHkg bWFwcGVkIHRvIHBzdGF0ZSAqLwo+PiArICAgICAgIGxldmVsID0gY3VyX2xldmVsID0gY2xrLT5w c3RhdGU7Cj4+ICsKPj4gKyAgICAgICBpZiAobG9hZCA+IGRhdGEtPnBfbG9hZF9tYXgpIHsKPj4g KyAgICAgICAgICAgICAgIGxldmVsID0gbWluKGNsay0+c3RhdGVfbnIgLSAxLCBsZXZlbCArIChj bGstPnN0YXRlX25yIC8gMykpOwo+PiArICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAg ICBsZXZlbCArPSAoKGxvYWQgLSBkYXRhLT5wX2xvYWRfdGFyZ2V0KSAqIDEwIC8KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLT5wX2xvYWRfdGFyZ2V0KSAvIDI7Cj4+ICsg ICAgICAgICAgICAgICBsZXZlbCA9IG1heCgwLCBsZXZlbCk7Cj4+ICsgICAgICAgICAgICAgICBs ZXZlbCA9IG1pbihjbGstPnN0YXRlX25yIC0gMSwgbGV2ZWwpOwo+PiArICAgICAgIH0KPj4gKwo+ PiArICAgICAgIG52X3RyYWNlKGR2ZnMsICJjdXIgbGV2ZWwgPSAlZCwgbmV3IGxldmVsID0gJWRc biIsIGN1cl9sZXZlbCwgbGV2ZWwpOwo+PiArCj4+ICsgICAgICAgKnN0YXRlID0gbGV2ZWw7Cj4+ ICsKPj4gKyAgICAgICBpZiAobGV2ZWwgPT0gY3VyX2xldmVsKQo+PiArICAgICAgICAgICAgICAg cmV0dXJuIDA7Cj4+ICsgICAgICAgZWxzZQo+PiArICAgICAgICAgICAgICAgcmV0dXJuIDE7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQKPj4gK2drMjBhX2R2ZnNfZ2V0X2Rldl9zdGF0dXMoc3Ry dWN0IG5vdXZlYXVfZHZmcyAqZHZmcywKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2Rl dl9zdGF0dXMgKnN0YXR1cykKPj4gK3sKPj4gKyAgICAgICBzdGF0dXMtPmJ1c3kgPSBudl9yZDMy KGR2ZnMsIDB4MTBhNTA4ICsgKEJVU1lfU0xPVCAqIDB4MTApKTsKPj4gKyAgICAgICBzdGF0dXMt PnRvdGFsPSBudl9yZDMyKGR2ZnMsIDB4MTBhNTA4ICsgKENMS19TTE9UICogMHgxMCkpOwo+PiAr ICAgICAgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZAo+PiArZ2syMGFfZHZm c19yZXNldF9kZXZfc3RhdHVzKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMpCj4+ICt7Cj4+ICsg ICAgICAgbnZfd3IzMihkdmZzLCAweDEwYTUwOCArIChCVVNZX1NMT1QgKiAweDEwKSwgMHg4MDAw MDAwMCk7Cj4+ICsgICAgICAgbnZfd3IzMihkdmZzLCAweDEwYTUwOCArIChDTEtfU0xPVCAqIDB4 MTApLCAweDgwMDAwMDAwKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludAo+PiArZ2syMGFfZHZm c19pbml0KHN0cnVjdCBub3V2ZWF1X29iamVjdCAqb2JqZWN0KQo+PiArewo+PiArICAgICAgIHN0 cnVjdCBnazIwYV9kdmZzX3ByaXYgKnByaXYgPSAodm9pZCAqKW9iamVjdDsKPj4gKyAgICAgICBp bnQgcmV0Owo+PiArCj4+ICsgICAgICAgLyogaW5pdCBwd3IgcGVyZiBjb3VudGVyICovCj4+ICsg ICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwNCArIChCVVNZX1NMT1QgKiAweDEwKSwgMHgwMDIw MDAwMSk7Cj4+ICsgICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwYyArIChCVVNZX1NMT1QgKiAw eDEwKSwgMHgwMDAwMDAwMik7Cj4+ICsgICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwYyArIChD TEtfU0xPVCAqIDB4MTApLCAweDAwMDAwMDAzKTsKPj4gKwo+PiArICAgICAgIHJldCA9IG5vdXZl YXVfZHZmc19pbml0KCZwcml2LT5iYXNlKTsKPj4gKyAgICAgICBpZiAocmV0KQo+PiArICAgICAg ICAgICAgICAgcmV0dXJuIHJldDsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiArfQo+PiAr Cj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2RhdGEgZ2syMGFfZHZmc19kYXRhID0gewo+PiArICAg ICAgIC5wX2xvYWRfdGFyZ2V0ID0gNzAsCj4+ICsgICAgICAgLnBfbG9hZF9tYXggPSA5MCwKPj4g KyAgICAgICAucF9zbW9vdGggPSAxLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGludAo+PiArZ2sy MGFfZHZmc19jdG9yKHN0cnVjdCBub3V2ZWF1X29iamVjdCAqcGFyZW50LCBzdHJ1Y3Qgbm91dmVh dV9vYmplY3QgKmVuZ2luZSwKPj4gKyAgICAgICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFzcyAq b2NsYXNzLCB2b2lkICpkYXRhLCB1MzIgc2l6ZSwKPj4gKyAgICAgICAgICAgIHN0cnVjdCBub3V2 ZWF1X29iamVjdCAqKnBvYmplY3QpCj4+ICt7Cj4+ICsgICAgICAgc3RydWN0IGdrMjBhX2R2ZnNf cHJpdiAqcHJpdjsKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzOwo+PiArICAg ICAgIGludCByZXQ7Cj4+ICsKPj4gKyAgICAgICByZXQgPSBub3V2ZWF1X2R2ZnNfY3JlYXRlKHBh cmVudCwgZW5naW5lLCBvY2xhc3MsICZwcml2KTsKPj4gKyAgICAgICAqcG9iamVjdCA9IG52X29i amVjdChwcml2KTsKPj4gKyAgICAgICBpZiAocmV0KQo+PiArICAgICAgICAgICAgICAgcmV0dXJu IHJldDsKPj4gKwo+PiArICAgICAgIGR2ZnMgPSAmcHJpdi0+YmFzZTsKPj4gKyAgICAgICBkdmZz LT5kYXRhID0gJmdrMjBhX2R2ZnNfZGF0YTsKPj4gKwo+PiArICAgICAgIHJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdHJ1Y3Qgbm91dmVhdV9vY2xhc3MgKgo+PiArZ2syMGFfZHZmc19vY2xhc3Mg PSAmKHN0cnVjdCBub3V2ZWF1X2R2ZnNfaW1wbCkgewo+PiArICAgICAgIC5iYXNlLmhhbmRsZSA9 IE5WX1NVQkRFVihEVkZTLCAweGVhKSwKPj4gKyAgICAgICAuYmFzZS5vZnVuY3MgPSAmKHN0cnVj dCBub3V2ZWF1X29mdW5jcykgewo+PiArICAgICAgICAgICAgICAgLmN0b3IgPSBnazIwYV9kdmZz X2N0b3IsCj4+ICsgICAgICAgICAgICAgICAuZHRvciA9IF9ub3V2ZWF1X2R2ZnNfZHRvciwKPj4g KyAgICAgICAgICAgICAgIC5pbml0ID0gZ2syMGFfZHZmc19pbml0LAo+PiArICAgICAgICAgICAg ICAgLmZpbmkgPSBfbm91dmVhdV9kdmZzX2ZpbmksCj4+ICsgICAgICAgfSwKPj4gKyAgICAgICAu Z2V0X2Rldl9zdGF0dXMgPSBnazIwYV9kdmZzX2dldF9kZXZfc3RhdHVzLAo+PiArICAgICAgIC5y ZXNldF9kZXZfc3RhdHVzID0gZ2syMGFfZHZmc19yZXNldF9kZXZfc3RhdHVzLAo+PiArICAgICAg IC50YXJnZXQgPSBnazIwYV9kdmZzX3RhcmdldCwKPj4gKyAgICAgICAuZ2V0X2N1cl9zdGF0ZSA9 IGdrMjBhX2R2ZnNfZ2V0X2N1cl9zdGF0ZSwKPj4gKyAgICAgICAuZ2V0X3RhcmdldF9zdGF0ZSA9 IGdrMjBhX2R2ZnNfZ2V0X3RhcmdldF9zdGF0ZSwKPj4gK30uYmFzZTsKPj4gZGlmZiAtLWdpdCBh L252a20vc3ViZGV2L2R2ZnMvcHJpdi5oIGIvbnZrbS9zdWJkZXYvZHZmcy9wcml2LmgKPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NWM4YTAwYTAxYzEKPj4g LS0tIC9kZXYvbnVsbAo+PiArKysgYi9udmttL3N1YmRldi9kdmZzL3ByaXYuaAo+PiBAQCAtMCww ICsxLDQzIEBACj4+ICsjaWZuZGVmIF9fTlZLTV9EVkZTX1BSSVZfSF9fCj4+ICsjZGVmaW5lIF9f TlZLTV9EVkZTX1BSSVZfSF9fCj4+ICsKPj4gKyNpbmNsdWRlIDxzdWJkZXYvZHZmcy5oPgo+PiAr Cj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2Rldl9zdGF0dXMgewo+PiArICAgICAgIHVuc2lnbmVk IGxvbmcgdG90YWw7Cj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyBidXN5Owo+PiArICAgICAgIGlu dCBjdXJfc3RhdGU7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgewo+ PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X29jbGFzcyBiYXNlOwo+PiArICAgICAgIGludCAoKmdl dF9kZXZfc3RhdHVzKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICosCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kZXZfc3RhdHVzICopOwo+PiArICAg ICAgIHZvaWQgKCpyZXNldF9kZXZfc3RhdHVzKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICopOwo+PiAr ICAgICAgIGludCAoKnRhcmdldCkoc3RydWN0IG5vdXZlYXVfZHZmcyAqLCBpbnQgKnN0YXRlKTsK Pj4gKyAgICAgICBpbnQgKCpnZXRfY3VyX3N0YXRlKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICosIGlu dCAqc3RhdGUpOwo+PiArICAgICAgIGludCAoKmdldF90YXJnZXRfc3RhdGUpKHN0cnVjdCBub3V2 ZWF1X2R2ZnMgKiwgaW50ICpzdGF0ZSwgaW50IGxvYWQpOwo+PiArfTsKPj4gKwo+PiArI2RlZmlu ZSBub3V2ZWF1X2R2ZnNfY3JlYXRlKHAsZSxvLGQpICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAo+PiArICAgICAgIG5vdXZlYXVfZHZmc19jcmVhdGVfKChwKSwgKGUpLCAobyks IHNpemVvZigqKmQpLCAodm9pZCAqKilkKQo+PiArI2RlZmluZSBub3V2ZWF1X2R2ZnNfZGVzdHJv eShwKSAoeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmQgPSAocCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAo+PiArICAgICAgIF9ub3V2ZWF1X2R2ZnNfZHRvcihudl9vYmplY3QoZCkp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAo+PiArfSkKPj4gKyNkZWZpbmUg bm91dmVhdV9kdmZzX2luaXQocCkgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKPj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkID0gKHApOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKPj4gKyAgICAgICBfbm91dmVhdV9kdmZz X2luaXQobnZfb2JqZWN0KGQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK Pj4gK30pCj4+ICsjZGVmaW5lIG5vdXZlYXVfZHZmc19maW5pKHAscykgKHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZm cyAqZCA9IChwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCj4+ICsg ICAgICAgX25vdXZlYXVfZHZmc19maW5pKG52X29iamVjdChkKSwgKHMpKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCj4+ICt9KQo+PiArCj4+ICtpbnQgbm91dmVhdV9kdmZzX2NyZWF0 ZV8oc3RydWN0IG5vdXZlYXVfb2JqZWN0ICosIHN0cnVjdCBub3V2ZWF1X29iamVjdCAqLAo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfb2NsYXNzICosIGludCwg dm9pZCAqKik7Cj4+ICt2b2lkIF9ub3V2ZWF1X2R2ZnNfZHRvcihzdHJ1Y3Qgbm91dmVhdV9vYmpl Y3QgKik7Cj4+ICtpbnQgX25vdXZlYXVfZHZmc19pbml0KHN0cnVjdCBub3V2ZWF1X29iamVjdCAq KTsKPj4gK2ludCBfbm91dmVhdV9kdmZzX2Zpbmkoc3RydWN0IG5vdXZlYXVfb2JqZWN0ICosIGJv b2wgc3VzcGVuZCk7Cj4+ICsKPj4gKyNlbmRpZgo+PiAtLQo+PiAxLjkuMQo+Pgo+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBOb3V2ZWF1IG1haWxp bmcgbGlzdAo+PiBOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQoKCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRoaXMgZW1haWwgbWVzc2FnZSBpcyBmb3IgdGhlIHNvbGUgdXNlIG9mIHRo ZSBpbnRlbmRlZCByZWNpcGllbnQocykgYW5kIG1heSBjb250YWluCmNvbmZpZGVudGlhbCBpbmZv cm1hdGlvbi4gIEFueSB1bmF1dGhvcml6ZWQgcmV2aWV3LCB1c2UsIGRpc2Nsb3N1cmUgb3IgZGlz dHJpYnV0aW9uCmlzIHByb2hpYml0ZWQuICBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVj aXBpZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGJ5CnJlcGx5IGVtYWlsIGFuZCBkZXN0 cm95IGFsbCBjb3BpZXMgb2YgdGhlIG9yaWdpbmFsIG1lc3NhZ2UuCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Ck5vdXZlYXUgbWFpbGluZyBsaXN0Ck5vdXZlYXVAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9ub3V2ZWF1Cg==