From mboxrd@z Thu Jan 1 00:00:00 1970 From: Samuel Pitoiset Subject: Re: [RFC PATCH 2/3] dvfs: add support for GK20A Date: Thu, 18 Dec 2014 20:33:24 +0100 Message-ID: <54932C04.6030506@gmail.com> References: <1418884092-14448-1-git-send-email-vinceh@nvidia.com> <1418884092-14448-3-git-send-email-vinceh@nvidia.com> <5492A8E6.1040508@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 , Vince Hsu Cc: "nouveau-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , Roy Spliet , Ben Skeggs List-Id: nouveau.vger.kernel.org T24gMTIvMTgvMjAxNCAxMToyNSBBTSwgQmVuIFNrZWdncyB3cm90ZToKPiBPbiBUaHUsIERlYyAx OCwgMjAxNCBhdCA4OjEzIFBNLCBWaW5jZSBIc3UgPHZpbmNlaEBudmlkaWEuY29tPiB3cm90ZToK Pj4gSGVsbG8gQmVuLAo+Pgo+PiBPbiAxMi8xOC8yMDE0IDA1OjM0IFBNLCBCZW4gU2tlZ2dzIHdy b3RlOgo+Pj4gT24gVGh1LCBEZWMgMTgsIDIwMTQgYXQgNDoyOCBQTSwgVmluY2UgSHN1IDx2aW5j ZWhAbnZpZGlhLmNvbT4gd3JvdGU6Cj4+Pj4gVGhpcyBwYXRjaCBjcmVhdGVzIGEgc3ViZGV2IGZv ciBEVkZTIChEeW5hbWljIFZvbHRhZ2UgYW5kIEZyZXF1ZW5jeQo+Pj4+IFNjYWxpbmcpCj4+Pj4g c3VwcG9ydCBpbiBOb3V2ZWF1LiBUaGlzIHN1YmRldiByZWZlcnMgdG8gdGhlIHN0YXR1cyBpbmZv cm1hdGlvbiBwcm92aWRlZAo+Pj4+IGJ5Cj4+Pj4gdGhlIE5WSURJQSBoYXJkd2FyZSBhbmQgdHJp ZXMgdG8gYWRqdXN0IHRoZSBwZXJmb3JtYW5jZSBsZXZlbCBiYXNlZCBvbgo+Pj4+IHRoZQo+Pj4+ IGNhbGN1bGF0ZWQgdGFyZ2V0LiBPbmx5IHRoZSBHSzIwQSBpcyBzdXBwb3J0ZWQgcmlnaHQgbm93 Lgo+Pj4gSGV5IFZpbmNlLAo+Pj4KPj4+IEknZCBub3QgbWFrZSBhIG5ldyBzdWJkZXYsIGJ1dCBp bXBsZW1lbnQgdGhpcyBpbiB0aGUgUE1VIChQV1IKPj4+IGN1cnJlbnRseSkgc3ViZGV2LiAgVGhl IHVjb2RlIHRoYXQncyBzdXBwb3NlZCB0byBiZSBydW5uaW5nIHRoZXJlIGNhbgo+Pj4gZG8gdGhl IHBlcmZvcm1hbmNlIG1vbml0b3JpbmcgaW4gYSBtb3JlIGNvbXBsZXggaW1wbGVtZW50YXRpb24s IGFuZAo+Pj4gaXQncyBQTVUgY291bnRlcnMgeW91J3JlIHRvdWNoaW5nIHRvIGdldCB0aGUgdXNh Z2Ugc3RhdHMgOikgIEJ1dCB0aGUKPj4+IHNpbXBsZXIgb24taG9zdCBpbXBsZW1lbnRhdGlvbiBp cyB0b3RhbGx5IGZpbmUuCj4+IFllYWgsIEkga25vdyB3ZSBoYXZlIHRoZSBjb3VudGVycyBkZWZp bmVkIGluIGRhZW1vbi5jLiBNYXJ0aW4gcmVtaW5kZWQgbWUKPj4gdGhhdCBSb3kgaGFkIGEgcGF0 Y2ggdG8gcmVtb3ZlIHRoYXQsIHNvcnJ5IHRoYXQgSSBjb3VsZCBub3QgZmluZCB0aGUgbGluawo+ PiBub3cuIEFub3RoZXIgcmVhc29uIEkgZGlkIG5vdCB1c2UgdGhlIG5vdXZlYXVfc3BlY3NpZyBp cyBiZWNhdXNlIEkgaGFkIHRvCj4+IGNyZWF0ZSBzb21lIG52aWYgc3RydWN0dXJlcyB0byBhY2Nl c3MgdGhlIGNvdW50ZXJzIGFuZCB0aGF0J3Mgbm90Cj4+IHN0cmFpZ2h0Zm9yd2FyZC4gSSdtIGhh cHB5IHRvIGhlYXIgeW91J3JlIGZpbmUgd2l0aCB0aGUgb24taG9zdAo+PiBpbXBsZW1lbnRhdGlv bi4gOikKCkhleSBWaW5jZSwKCkl0J3Mgbm90IFJveSBidXQgbWUgd2hvIGhhZCBzdWJtaXR0ZWQg YSBwYXRjaCB3aGljaCByZW1vdmVzIFBEQUVNT04gCnNpZ25hbHMuIDotKQoKSG93ZXZlciwgdGhl IHBhdGNoIGlzIG5vdCByZWFkeSB0byBiZSB1cHN0cmVhbSBiZWNhdXNlIHdlIGRvbid0IGhhdmUg YW55IApvdGhlciB3YXlzIHRvIGV4cG9zZSB0aGVzZSBwZXJmb3JtYW5jZSBjb3VudGVycy4KCkN1 cnJlbnRseSwgSSdtIHdvcmtpbmcgb24gcGVyZm1vbiBhbmQgbnZpZiB0byBleHBvc2UgaGFyZHdh cmUgZXZlbnRzIHRvIAp0aGUgdXNlcnNwYWNlIGZvciBOVjUwLiBJIGhvcGUgdG8gc3VibWl0IHRo ZSBidW5jaCBvZiBwYXRjaGVzIGFzIHNvb24gYXMgCnBvc3NpYmxlIGJ1dCB1bmZvcnR1bmF0ZWx5 LApJIGRvbid0IGhhdmUgbXkgZnVsbCB0aW1lIG9uIHRoaXMsIHNvIGl0IHRha2VzIG1vcmUgdGlt ZSB0aGFuIGV4cGVjdGVkLgoKPj4KPj4gSSB3aWxsIG1vdmUgYWxsIHRvIFBXUiBzdWJkZXYgaW4g dGhlIG5leHQgdmVyc2lvbi4KPj4+Cj4+PiBUaGUgY3VycmVudCBiYXNlIFBNVSBpbXBsZW1lbnRh dGlvbiB0cmllcyB0byBkbyBhIGxvdCBvZiBzdHVmZiB0aGF0Cj4+PiB5b3UgZG9uJ3QgbmVlZCwg anVzdCBvdmVycmlkZSB0aGUgaW1wbGVtZW50YXRpb24gZW50aXJlbHkgZm9yIEdLMjBBCj4+PiBm b3Igbm93IGlmIHRoYXQncyBlYXNpZXIgdGhhbiByZXdvcmtpbmcgaXQuCj4+IFNvIGN1cnJlbnRs eSB0aGVyZSBpcyBubyBkR1BVIHVzaW5nIHRoZSBQTVU/IEkganVzdCBkb24ndCB3YW50IHRvIGJy ZWFrIGFueQo+PiBkR1BVIGZ1bmN0aW9ucy4gOykKPiBXZSB1cGxvYWQgYSBjdXN0b20gZmlybXdh cmUgdG8gaXQsIHdoaWNoIHdlIChjdXJyZW50bHkpIG9ubHkgdXNlIGFzIGEKPiBzY3JpcHQgaW50 ZXJwcmV0ZXIgZm9yIG1lbW9yeSBjbG9jayBjaGFuZ2VzLiAgQnV0IGZvciB5b3VyIG5lZWRzIHJp Z2h0Cj4gbm93LCBpdCdkIGJlIGZpbmUgdG8gaWdub3JlIGFsbCB0aGUgY29tbW9uIGNvZGUgdGhl cmUgZm9yIEdLMjBBLgo+Cj4+Pgo+Pj4gQXNpZGUgZnJvbSB0aGUgc3ViZGV2IG1vdmUsIGl0IGxv b2tzIGdvb2Qgc28gZmFyIHRvIG1lLiAgR2xhZCB0byBzZWUKPj4+IHRoZSBDTEsgc3R1ZmYgaXNu J3QgdG90YWxseSB1c2VsZXNzLCBkZXNwaXRlIGl0IG5lZWRpbmcgYSAqbG90KiBvZgo+Pj4gd29y ay4KPj4gQlRXLCBjYW4gd2UgYWRkIHNvbWUgZXhlY3V0aW9uIHRpbWUgaW5mb3JtYXRpb24gZm9y IHBzdGF0ZT8gSSBtZWFuIHNvbWV0aGluZwo+PiBsaWtlICIvc3lzL2RldmljZXMvc3lzdGVtL2Nw dS9jcHUwL2NwdWZyZXEvc3RhdHMvdGltZV9pbl9zdGF0ZSIuIEkga25vdyB3ZQo+PiBkb24ndCB3 YW50IHRvIGNoYW5nZSB0aGUgdXNlciBzcGFjZSBBQkkgdGhvdWdoLgo+Pgo+PiBUaGFua3MsCj4+ IFZpbmNlCj4+Cj4+Cj4+PiBUaGFua3MsCj4+PiBCZW4uCj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6 IFZpbmNlIEhzdSA8dmluY2VoQG52aWRpYS5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgZHJtL0tidWls ZCAgICAgICAgICAgICAgICAgICAgIHwgICAyICsKPj4+PiAgICBkcm0vY29yZS9pbmNsdWRlL3N1 YmRldi9kdmZzLmggfCAgIDEgKwo+Pj4+ICAgIGRybS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYyAg ICB8ICAgMSArCj4+Pj4gICAgZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYyAgIHwgICAxICsK Pj4+PiAgICBkcm0vY29yZS9zdWJkZXYvZHZmcy9wcml2LmggICAgfCAgIDEgKwo+Pj4+ICAgIG52 a20vZW5naW5lL2RldmljZS9udmUwLmMgICAgICB8ICAgMiArCj4+Pj4gICAgbnZrbS9pbmNsdWRl L2NvcmUvZGV2aWNlLmggICAgIHwgICAxICsKPj4+PiAgICBudmttL2luY2x1ZGUvc3ViZGV2L2R2 ZnMuaCAgICAgfCAgMzAgKysrKysrKysKPj4+PiAgICBudmttL3N1YmRldi9NYWtlZmlsZS5hbSAg ICAgICAgfCAgIDUgKy0KPj4+PiAgICBudmttL3N1YmRldi9kdmZzL01ha2VmaWxlLmFtICAgfCAg IDYgKysKPj4+PiAgICBudmttL3N1YmRldi9kdmZzL2Jhc2UuYyAgICAgICAgfCAxMjkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIG52a20vc3ViZGV2L2R2ZnMvZ2sy MGEuYyAgICAgICB8IDE1Ngo+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCj4+Pj4gICAgbnZrbS9zdWJkZXYvZHZmcy9wcml2LmggICAgICAgIHwgIDQzICsrKysr KysrKysrKwo+Pj4+ICAgIDEzIGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQo+Pj4+ICAgIGNyZWF0ZSBtb2RlIDEyMDAwMCBkcm0vY29yZS9pbmNsdWRlL3N1 YmRldi9kdmZzLmgKPj4+PiAgICBjcmVhdGUgbW9kZSAxMjAwMDAgZHJtL2NvcmUvc3ViZGV2L2R2 ZnMvYmFzZS5jCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTIwMDAwIGRybS9jb3JlL3N1YmRldi9kdmZz L2drMjBhLmMKPj4+PiAgICBjcmVhdGUgbW9kZSAxMjAwMDAgZHJtL2NvcmUvc3ViZGV2L2R2ZnMv cHJpdi5oCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vaW5jbHVkZS9zdWJkZXYvZHZm cy5oCj4+Pj4gICAgY3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2L2R2ZnMvTWFrZWZpbGUu YW0KPj4+PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbnZrbS9zdWJkZXYvZHZmcy9iYXNlLmMKPj4+ PiAgICBjcmVhdGUgbW9kZSAxMDA2NDQgbnZrbS9zdWJkZXYvZHZmcy9nazIwYS5jCj4+Pj4gICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IG52a20vc3ViZGV2L2R2ZnMvcHJpdi5oCj4+Pj4KPj4+PiBkaWZm IC0tZ2l0IGEvZHJtL0tidWlsZCBiL2RybS9LYnVpbGQKPj4+PiBpbmRleCAwNjFkOWZhZWY4MzYu LmU3ZWIwNWU2NjZhMCAxMDA2NDQKPj4+PiAtLS0gYS9kcm0vS2J1aWxkCj4+Pj4gKysrIGIvZHJt L0tidWlsZAo+Pj4+IEBAIC0yMjcsNiArMjI3LDggQEAgbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2 L3ZvbHQvYmFzZS5vCj4+Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L3ZvbHQvZ3Bpby5v Cj4+Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L3ZvbHQvbnY0MC5vCj4+Pj4gICAgbm91 dmVhdS15ICs9IGNvcmUvc3ViZGV2L3ZvbHQvZ2syMGEubwo+Pj4+ICtub3V2ZWF1LXkgKz0gY29y ZS9zdWJkZXYvZHZmcy9iYXNlLm8KPj4+PiArbm91dmVhdS15ICs9IGNvcmUvc3ViZGV2L2R2ZnMv Z2syMGEubwo+Pj4+Cj4+Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvZW5naW5lL2ZhbGNvbi5vCj4+ Pj4gICAgbm91dmVhdS15ICs9IGNvcmUvZW5naW5lL3h0ZW5zYS5vCj4+Pj4gZGlmZiAtLWdpdCBh L2RybS9jb3JlL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+IGIvZHJtL2NvcmUvaW5jbHVkZS9z dWJkZXYvZHZmcy5oCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMjAwMDAKPj4+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjU1M2E2OTY4MzUwYgo+Pj4+IC0tLSAvZGV2L251bGwKPj4+PiArKysgYi9kcm0vY29y ZS9pbmNsdWRlL3N1YmRldi9kdmZzLmgKPj4+PiBAQCAtMCwwICsxIEBACj4+Pj4gKy4uLy4uLy4u Ly4uL252a20vaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+Pj4gXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCj4+Pj4gZGlmZiAtLWdpdCBhL2RybS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYyBiL2Ry bS9jb3JlL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTIwMDAwCj4+Pj4g aW5kZXggMDAwMDAwMDAwMDAwLi4yOTYzMzRlZTUyZDEKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4g KysrIGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvYmFzZS5jCj4+Pj4gQEAgLTAsMCArMSBAQAo+Pj4+ ICsuLi8uLi8uLi8uLi9udmttL3N1YmRldi9kdmZzL2Jhc2UuYwo+Pj4+IFwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQo+Pj4+IGRpZmYgLS1naXQgYS9kcm0vY29yZS9zdWJkZXYvZHZmcy9nazIw YS5jIGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYwo+Pj4+IG5ldyBmaWxlIG1vZGUgMTIw MDAwCj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5kMDVkNDkzZTNmYzkKPj4+PiAtLS0gL2Rldi9u dWxsCj4+Pj4gKysrIGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvZ2syMGEuYwo+Pj4+IEBAIC0wLDAg KzEgQEAKPj4+PiArLi4vLi4vLi4vLi4vbnZrbS9zdWJkZXYvZHZmcy9nazIwYS5jCj4+Pj4gXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCj4+Pj4gZGlmZiAtLWdpdCBhL2RybS9jb3JlL3N1YmRl di9kdmZzL3ByaXYuaCBiL2RybS9jb3JlL3N1YmRldi9kdmZzL3ByaXYuaAo+Pj4+IG5ldyBmaWxl IG1vZGUgMTIwMDAwCj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi45YjQ3MWRjNDRmNDgKPj4+PiAt LS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvZHJtL2NvcmUvc3ViZGV2L2R2ZnMvcHJpdi5oCj4+Pj4g QEAgLTAsMCArMSBAQAo+Pj4+ICsuLi8uLi8uLi8uLi9udmttL3N1YmRldi9kdmZzL3ByaXYuaAo+ Pj4+IFwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo+Pj4+IGRpZmYgLS1naXQgYS9udmttL2Vu Z2luZS9kZXZpY2UvbnZlMC5jIGIvbnZrbS9lbmdpbmUvZGV2aWNlL252ZTAuYwo+Pj4+IGluZGV4 IGJhNzkyMmQzMTM1MS4uNWE4MzBhMzdhMTVkIDEwMDY0NAo+Pj4+IC0tLSBhL252a20vZW5naW5l L2RldmljZS9udmUwLmMKPj4+PiArKysgYi9udmttL2VuZ2luZS9kZXZpY2UvbnZlMC5jCj4+Pj4g QEAgLTQxLDYgKzQxLDcgQEAKPj4+PiAgICAjaW5jbHVkZSA8c3ViZGV2L2Jhci5oPgo+Pj4+ICAg ICNpbmNsdWRlIDxzdWJkZXYvcHdyLmg+Cj4+Pj4gICAgI2luY2x1ZGUgPHN1YmRldi92b2x0Lmg+ Cj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYvZHZmcy5oPgo+Pj4+Cj4+Pj4gICAgI2luY2x1ZGUgPGVu Z2luZS9kZXZpY2UuaD4KPj4+PiAgICAjaW5jbHVkZSA8ZW5naW5lL2RtYW9iai5oPgo+Pj4+IEBA IC0xODAsNiArMTgxLDcgQEAgbnZlMF9pZGVudGlmeShzdHJ1Y3Qgbm91dmVhdV9kZXZpY2UgKmRl dmljZSkKPj4+PiAgICAgICAgICAgICAgICAgICBkZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVf Q09QWTIgIF0gPQo+Pj4+ICZudmUwX2NvcHkyX29jbGFzczsKPj4+PiAgICAgICAgICAgICAgICAg ICBkZXZpY2UtPm9jbGFzc1tOVkRFVl9FTkdJTkVfUEVSRk1PTl0gPQo+Pj4+ICZnazIwYV9wZXJm bW9uX29jbGFzczsKPj4+PiAgICAgICAgICAgICAgICAgICBkZXZpY2UtPm9jbGFzc1tOVkRFVl9T VUJERVZfVk9MVCAgIF0gPQo+Pj4+ICZnazIwYV92b2x0X29jbGFzczsKPj4+PiArICAgICAgICAg ICAgICAgZGV2aWNlLT5vY2xhc3NbTlZERVZfU1VCREVWX0RWRlMgICBdID0gZ2syMGFfZHZmc19v Y2xhc3M7Cj4+Pj4gICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gICAgICAgICAgIGNhc2Ug MHhmMDoKPj4+PiAgICAgICAgICAgICAgICAgICBkZXZpY2UtPmNuYW1lID0gIkdLMTEwIjsKPj4+ PiBkaWZmIC0tZ2l0IGEvbnZrbS9pbmNsdWRlL2NvcmUvZGV2aWNlLmggYi9udmttL2luY2x1ZGUv Y29yZS9kZXZpY2UuaAo+Pj4+IGluZGV4IDJlYzJlNTBkMzY3Ni4uMTYyZmE2YTNjZmNjIDEwMDY0 NAo+Pj4+IC0tLSBhL252a20vaW5jbHVkZS9jb3JlL2RldmljZS5oCj4+Pj4gKysrIGIvbnZrbS9p bmNsdWRlL2NvcmUvZGV2aWNlLmgKPj4+PiBAQCAtMzksNiArMzksNyBAQCBlbnVtIG52X3N1YmRl dl90eXBlIHsKPj4+PiAgICAgICAgICAgTlZERVZfU1VCREVWX1ZPTFQsCj4+Pj4gICAgICAgICAg IE5WREVWX1NVQkRFVl9USEVSTSwKPj4+PiAgICAgICAgICAgTlZERVZfU1VCREVWX0NMT0NLLAo+ Pj4+ICsgICAgICAgTlZERVZfU1VCREVWX0RWRlMsCj4+Pj4KPj4+PiAgICAgICAgICAgTlZERVZf RU5HSU5FX0ZJUlNULAo+Pj4+ICAgICAgICAgICBOVkRFVl9FTkdJTkVfRE1BT0JKID0gTlZERVZf RU5HSU5FX0ZJUlNULAo+Pj4+IGRpZmYgLS1naXQgYS9udmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMu aCBiL252a20vaW5jbHVkZS9zdWJkZXYvZHZmcy5oCj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK Pj4+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjM4NTE2MjlhMGRlNAo+Pj4+IC0tLSAvZGV2L251bGwK Pj4+PiArKysgYi9udmttL2luY2x1ZGUvc3ViZGV2L2R2ZnMuaAo+Pj4+IEBAIC0wLDAgKzEsMzAg QEAKPj4+PiArI2lmbmRlZiBfX05PVVZFQVVfRFZGU19IX18KPj4+PiArI2RlZmluZSBfX05PVVZF QVVfRFZGU19IX18KPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxjb3JlL3N1YmRldi5oPgo+Pj4+ICsj aW5jbHVkZSA8Y29yZS9kZXZpY2UuaD4KPj4+PiArCj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYvdGlt ZXIuaD4KPj4+PiArCj4+Pj4gK3N0cnVjdCBub3V2ZWF1X2R2ZnNfZGF0YSB7Cj4+Pj4gKyAgICAg ICBpbnQgcF9sb2FkX3RhcmdldDsKPj4+PiArICAgICAgIGludCBwX2xvYWRfbWF4Owo+Pj4+ICsg ICAgICAgaW50IHBfc21vb3RoOwo+Pj4+ICsgICAgICAgdW5zaWduZWQgaW50IGF2Z19sb2FkOwo+ Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RydWN0IG5vdXZlYXVfZHZmcyB7Cj4+Pj4gKyAgICAgICBz dHJ1Y3Qgbm91dmVhdV9zdWJkZXYgYmFzZTsKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2Fs YXJtIGFsYXJtOwo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmc19kYXRhICpkYXRhOwo+ Pj4+ICt9Owo+Pj4+ICsKPj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3Qgbm91dmVhdV9kdmZzICoK Pj4+PiArbm91dmVhdV9kdmZzKHZvaWQgKm9iaikKPj4+PiArewo+Pj4+ICsgICAgICAgcmV0dXJu ICh2b2lkICopbnZfZGV2aWNlKG9iaiktPnN1YmRldltOVkRFVl9TVUJERVZfRFZGU107Cj4+Pj4g K30KPj4+PiArCj4+Pj4gK2V4dGVybiBzdHJ1Y3Qgbm91dmVhdV9vY2xhc3MgKmdrMjBhX2R2ZnNf b2NsYXNzOwo+Pj4+ICsKPj4+PiArI2VuZGlmCj4+Pj4gZGlmZiAtLWdpdCBhL252a20vc3ViZGV2 L01ha2VmaWxlLmFtIGIvbnZrbS9zdWJkZXYvTWFrZWZpbGUuYW0KPj4+PiBpbmRleCA1YTQ4ZGRi ODc5ODEuLjNkMTFlMDgzMzAzMiAxMDA2NDQKPj4+PiAtLS0gYS9udmttL3N1YmRldi9NYWtlZmls ZS5hbQo+Pj4+ICsrKyBiL252a20vc3ViZGV2L01ha2VmaWxlLmFtCj4+Pj4gQEAgLTEsNSArMSw1 IEBACj4+Pj4gICAgU1VCRElSUyA9IGJhciBidXMgYmlvcyBjbG9jayBkZXZpbml0IGZiIGZ1c2Ug Z3BpbyBpMmMgaWJ1cyBpbnN0bWVtIFwKPj4+PiAtICAgICAgICAgbHRjIG1jIG14bSBwd3IgdGhl cm0gdGltZXIgdm0gdm9sdAo+Pj4+ICsgICAgICAgICBsdGMgbWMgbXhtIHB3ciB0aGVybSB0aW1l ciB2bSB2b2x0IGR2ZnMKPj4+Pgo+Pj4+ICAgIG5vaW5zdF9MVExJQlJBUklFUyA9IGxpYnN1YmRl di5sYQo+Pj4+Cj4+Pj4gQEAgLTIyLDQgKzIyLDUgQEAgbGlic3ViZGV2X2xhX0xJQkFERCAgID0g YmFyL2xpYmJhci5sYSBcCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVybS9saWJ0 aGVybS5sYSBcCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lci9saWJ0aW1lci5s YSBcCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICB2bS9saWJ2bS5sYSBcCj4+Pj4gLSAg ICAgICAgICAgICAgICAgICAgICAgdm9sdC9saWJ2b2x0LmxhCj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgdm9sdC9saWJ2b2x0LmxhIFwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBk dmZzL2R2ZnMubGEKPj4+PiBkaWZmIC0tZ2l0IGEvbnZrbS9zdWJkZXYvZHZmcy9NYWtlZmlsZS5h bSBiL252a20vc3ViZGV2L2R2ZnMvTWFrZWZpbGUuYW0KPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzA5ZDRlYzQxMjRkCj4+Pj4gLS0tIC9kZXYvbnVs bAo+Pj4+ICsrKyBiL252a20vc3ViZGV2L2R2ZnMvTWFrZWZpbGUuYW0KPj4+PiBAQCAtMCwwICsx LDYgQEAKPj4+PiArbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZHZmcy5sYQo+Pj4+ICsKPj4+PiAr bGliZHZmc19sYV9TT1VSQ0VTID0gYmFzZS5jIFwKPj4+PiArICAgICAgICAgICAgICAgICAgICAg Z2syMGEuYwo+Pj4+ICsKPj4+PiAraW5jbHVkZSAkKHNyY2RpcikvLi4vTWFrZWZpbGUuc3ViZGV2 Cj4+Pj4gZGlmZiAtLWdpdCBhL252a20vc3ViZGV2L2R2ZnMvYmFzZS5jIGIvbnZrbS9zdWJkZXYv ZHZmcy9iYXNlLmMKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uODhhZTIwMTg0MGE4Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL252a20vc3Vi ZGV2L2R2ZnMvYmFzZS5jCj4+Pj4gQEAgLTAsMCArMSwxMjkgQEAKPj4+PiArLyoKPj4+PiArICog Q29weXJpZ2h0IChjKSAyMDE0LCBOVklESUEgQ09SUE9SQVRJT04uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuCj4+Pj4gKyAqCj4+Pj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUg b2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwo+Pj4+IGEKPj4+PiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ Pj4+ICJTb2Z0d2FyZSIpLAo+Pj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0 IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dAo+Pj4+IGxpbWl0YXRpb24KPj4+PiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsCj4+Pj4gc3VibGljZW5zZSwKPj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4+Pj4gKyAqIFNvZnR3 YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRp dGlvbnM6Cj4+Pj4gKyAqCj4+Pj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCj4+Pj4gaW5jbHVkZWQgaW4KPj4+PiArICog YWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCj4+Pj4g KyAqCj4+Pj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELAo+Pj4+IEVYUFJFU1MgT1IKPj4+PiArICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4+IE1FUkNIQU5U QUJJTElUWSwKPj4+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UCj4+Pj4gU0hBTEwKPj4+PiArICogVEhFIEFVVEhP UlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMg T1IKPj4+PiBPVEhFUgo+Pj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwKPj4+PiBBUklTSU5HCj4+Pj4gKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1Ig T1RIRVIKPj4+PiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+Pj4+ICsgKi8KPj4+PiAr Cj4+Pj4gKyNpbmNsdWRlIDxjb3JlL29wdGlvbi5oPgo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPHN1 YmRldi9jbG9jay5oPgo+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L2R2ZnMuaD4KPj4+PiArI2luY2x1 ZGUgPHN1YmRldi92b2x0Lmg+Cj4+Pj4gKwo+Pj4+ICsjaW5jbHVkZSAicHJpdi5oIgo+Pj4+ICsK Pj4+PiArc3RhdGljIHZvaWQKPj4+PiArX25vdXZlYXVfZHZmc193b3JrKHN0cnVjdCBub3V2ZWF1 X2FsYXJtICphbGFybSkKPj4+PiArewo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAq ZHZmcyA9IGNvbnRhaW5lcl9vZihhbGFybSwgc3RydWN0Cj4+Pj4gbm91dmVhdV9kdmZzLAo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIGFsYXJtKTsKPj4+PiArICAgICAgIHN0cnVjdCBub3V2 ZWF1X2R2ZnNfZGF0YSAqZGF0YSA9IGR2ZnMtPmRhdGE7Cj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91 dmVhdV9vYmplY3QgKm9iamVjdCA9IG52X29iamVjdChkdmZzKTsKPj4+PiArICAgICAgIHN0cnVj dCBub3V2ZWF1X2R2ZnNfaW1wbCAqaW1wbCA9ICh2b2lkICopb2JqZWN0LT5vY2xhc3M7Cj4+Pj4g KyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9kdmZzX2Rldl9zdGF0dXMgc3RhdHVzOwo+Pj4+ICsgICAg ICAgdTMyIHV0aWxpemF0aW9uID0gMDsKPj4+PiArICAgICAgIGludCBzdGF0ZSwgcmV0Owo+Pj4+ ICsKPj4+PiArICAgICAgIHJldCA9IGltcGwtPmdldF9kZXZfc3RhdHVzKGR2ZnMsICZzdGF0dXMp Owo+Pj4+ICsgICAgICAgaWYgKHJldCkgewo+Pj4+ICsgICAgICAgICAgICAgICBudl93YXJuKGR2 ZnMsICJmYWlsZWQgdG8gZ2V0IGRldmljZSBzdGF0dXNcbiIpOwo+Pj4+ICsgICAgICAgICAgICAg ICBnb3RvIHJlc2NoZWQ7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgaWYgKHN0 YXR1cy50b3RhbCkKPj4+PiArICAgICAgICAgICAgICAgdXRpbGl6YXRpb24gPSBkaXZfdTY0KCh1 NjQpc3RhdHVzLmJ1c3kgKiAxMDAsCj4+Pj4gc3RhdHVzLnRvdGFsKTsKPj4+PiArCj4+Pj4gKyAg ICAgICBkYXRhLT5hdmdfbG9hZCA9IChkYXRhLT5wX3Ntb290aCAqIGRhdGEtPmF2Z19sb2FkKSAr IHV0aWxpemF0aW9uOwo+Pj4+ICsgICAgICAgZGF0YS0+YXZnX2xvYWQgLz0gZGF0YS0+cF9zbW9v dGggKyAxOwo+Pj4+ICsgICAgICAgbnZfdHJhY2UoZHZmcywgInV0aWxpemF0aW9uID0gJWQgJSUs IGF2Z19sb2FkID0gJWQgJSVcbiIsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgdXRpbGl6 YXRpb24sIGRhdGEtPmF2Z19sb2FkKTsKPj4+PiArCj4+Pj4gKyAgICAgICByZXQgPSBpbXBsLT5n ZXRfY3VyX3N0YXRlKGR2ZnMsICZzdGF0ZSk7Cj4+Pj4gKyAgICAgICBpZiAocmV0KSB7Cj4+Pj4g KyAgICAgICAgICAgICAgIG52X3dhcm4oZHZmcywgImZhaWxlZCB0byBnZXQgY3VycmVudCBzdGF0 ZVxuIik7Cj4+Pj4gKyAgICAgICAgICAgICAgIGdvdG8gcmVzY2hlZDsKPj4+PiArICAgICAgIH0K Pj4+PiArCj4+Pj4gKyAgICAgICBpZiAoaW1wbC0+Z2V0X3RhcmdldF9zdGF0ZShkdmZzLCAmc3Rh dGUsIGRhdGEtPmF2Z19sb2FkKSkgewo+Pj4+ICsgICAgICAgICAgICAgICBudl90cmFjZShkdmZz LCAic2V0IG5ldyBzdGF0ZSB0byAlZFxuIiwgc3RhdGUpOwo+Pj4+ICsgICAgICAgICAgICAgICBp bXBsLT50YXJnZXQoZHZmcywgJnN0YXRlKTsKPj4+PiArICAgICAgIH0KPj4+PiArCj4+Pj4gK3Jl c2NoZWQ6Cj4+Pj4gKyAgICAgICBpbXBsLT5yZXNldF9kZXZfc3RhdHVzKGR2ZnMpOwo+Pj4+ICsg ICAgICAgbm91dmVhdV90aW1lcl9hbGFybShkdmZzLCAxMDAwMDAwMDAsIGFsYXJtKTsKPj4+PiAr fQo+Pj4+ICsKPj4+PiAraW50Cj4+Pj4gK19ub3V2ZWF1X2R2ZnNfZmluaShzdHJ1Y3Qgbm91dmVh dV9vYmplY3QgKm9iamVjdCwgYm9vbCBzdXNwZW5kKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBzdHJ1 Y3Qgbm91dmVhdV9kdmZzICpkdmZzID0gKHZvaWQgKilvYmplY3Q7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgbm91dmVhdV90aW1lcl9hbGFybV9jYW5jZWwoZHZmcywgJmR2ZnMtPmFsYXJtKTsKPj4+PiAr Cj4+Pj4gKyAgICAgICByZXR1cm4gbm91dmVhdV9zdWJkZXZfZmluaSgmZHZmcy0+YmFzZSwgc3Vz cGVuZCk7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK2ludAo+Pj4+ICtfbm91dmVhdV9kdmZzX2luaXQo c3RydWN0IG5vdXZlYXVfb2JqZWN0ICpvYmplY3QpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVj dCBub3V2ZWF1X2R2ZnMgKmR2ZnMgPSAodm9pZCAqKW9iamVjdDsKPj4+PiArICAgICAgIHN0cnVj dCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1X2Nsb2NrKG9iamVjdCk7Cj4+Pj4gKyAgICAg ICBzdHJ1Y3Qgbm91dmVhdV92b2x0ICp2b2x0ID0gbm91dmVhdV92b2x0KG9iamVjdCk7Cj4+Pj4g KyAgICAgICBpbnQgcmV0Owo+Pj4+ICsKPj4+PiArICAgICAgIHJldCA9IG5vdXZlYXVfc3ViZGV2 X2luaXQoJmR2ZnMtPmJhc2UpOwo+Pj4+ICsgICAgICAgaWYgKHJldCkKPj4+PiArICAgICAgICAg ICAgICAgcmV0dXJuIHJldDsKPj4+PiArCj4+Pj4gKyAgICAgICBpZiAoIWNsayB8fCAhdm9sdCkK Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKwo+Pj4+ICsgICAgICAg bm91dmVhdV90aW1lcl9hbGFybShkdmZzLCAyMDAwMDAwMDAwLCAmZHZmcy0+YWxhcm0pOwo+Pj4+ ICsKPj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICt2b2lkCj4+Pj4g K19ub3V2ZWF1X2R2ZnNfZHRvcihzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKm9iamVjdCkKPj4+PiAr ewo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmcyA9ICh2b2lkICopb2JqZWN0 Owo+Pj4+ICsKPj4+PiArICAgICAgIG5vdXZlYXVfc3ViZGV2X2Rlc3Ryb3koJmR2ZnMtPmJhc2Up Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtpbnQKPj4+PiArbm91dmVhdV9kdmZzX2NyZWF0ZV8oc3Ry dWN0IG5vdXZlYXVfb2JqZWN0ICpwYXJlbnQsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IG5vdXZlYXVfb2JqZWN0ICplbmdpbmUsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc3RydWN0IG5vdXZlYXVfb2NsYXNzICpvY2xhc3MsCj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgaW50IHNpemUsIHZvaWQgKipwb2JqZWN0KQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBzdHJ1 Y3Qgbm91dmVhdV9kdmZzICpkdmZzOwo+Pj4+ICsgICAgICAgaW50IHJldDsKPj4+PiArCj4+Pj4g KyAgICAgICByZXQgPSBub3V2ZWF1X3N1YmRldl9jcmVhdGVfKHBhcmVudCwgZW5naW5lLCBvY2xh c3MsIDAsICJEVkZTIiwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ImR2ZnMiLCBzaXplLCBwb2JqZWN0KTsKPj4+PiArICAgICAgIGR2ZnMgPSAqcG9iamVjdDsKPj4+ PiArICAgICAgIGlmIChyZXQpCj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4g Kwo+Pj4+ICsgICAgICAgbm91dmVhdV9hbGFybV9pbml0KCZkdmZzLT5hbGFybSwgX25vdXZlYXVf ZHZmc193b3JrKTsKPj4+PiArCj4+Pj4gKyAgICAgICByZXR1cm4gMDsKPj4+PiArfQo+Pj4+IGRp ZmYgLS1naXQgYS9udmttL3N1YmRldi9kdmZzL2drMjBhLmMgYi9udmttL3N1YmRldi9kdmZzL2dr MjBhLmMKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZWZlYmQyYzEwZjk5Cj4+Pj4gLS0tIC9kZXYvbnVsbAo+Pj4+ICsrKyBiL252a20vc3ViZGV2L2R2 ZnMvZ2syMGEuYwo+Pj4+IEBAIC0wLDAgKzEsMTU2IEBACj4+Pj4gKy8qCj4+Pj4gKyAqIENvcHly aWdodCAoYykgMjAxNCwgTlZJRElBIENPUlBPUkFUSU9OLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ Pj4+ICsgKgo+Pj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNo YXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKPj4+PiBhCj4+Pj4gKyAqIGNvcHkgb2YgdGhp cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKPj4+PiAi U29mdHdhcmUiKSwKPj4+PiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPj4+PiBsaW1pdGF0aW9uCj4+Pj4gKyAqIHRoZSBy aWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLAo+ Pj4+IHN1YmxpY2Vuc2UsCj4+Pj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+Pj4+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+Pj4+ICsgKgo+Pj4+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZQo+Pj4+IGluY2x1ZGVkIGluCj4+Pj4gKyAqIGFsbCBj b3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgo+Pj4+ICsgKgo+ Pj4+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5U WSBPRiBBTlkgS0lORCwKPj4+PiBFWFBSRVNTIE9SCj4+Pj4gKyAqIElNUExJRUQsIElOQ0xVRElO RyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPj4+PiBNRVJDSEFOVEFCSUxJ VFksCj4+Pj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVAo+Pj4+IFNIQUxMCj4+Pj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SCj4+ Pj4gT1RIRVIKPj4+PiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4+Pj4gQVJJU0lORwo+Pj4+ICsgKiBGUk9NLCBPVVQg T0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS Cj4+Pj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPj4+PiArICovCj4+Pj4gKwo+Pj4+ ICsjaW5jbHVkZSA8c3ViZGV2L2Nsb2NrLmg+Cj4+Pj4gKyNpbmNsdWRlIDxzdWJkZXYvZHZmcy5o Pgo+Pj4+ICsjaW5jbHVkZSA8c3ViZGV2L3ZvbHQuaD4KPj4+PiArCj4+Pj4gKyNpbmNsdWRlICJw cml2LmgiCj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIEJVU1lfU0xPVCAgICAgIDAKPj4+PiArI2RlZmlu ZSBDTEtfU0xPVCAgICAgICA3Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3QgZ2syMGFfZHZmc19wcml2IHsK Pj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnMgYmFzZTsKPj4+PiArfTsKPj4+PiArCj4+ Pj4gK3N0YXRpYyBpbnQKPj4+PiArZ2syMGFfZHZmc190YXJnZXQoc3RydWN0IG5vdXZlYXVfZHZm cyAqZHZmcywgaW50ICpzdGF0ZSkKPj4+PiArewo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVf Y2xvY2sgKmNsayA9IG5vdXZlYXVfY2xvY2soZHZmcyk7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0 dXJuIG5vdXZlYXVfY2xvY2tfYXN0YXRlKGNsaywgKnN0YXRlLCAwLCBmYWxzZSk7Cj4+Pj4gK30K Pj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQKPj4+PiArZ2syMGFfZHZmc19nZXRfY3VyX3N0YXRlKHN0 cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMsIGludCAqc3RhdGUpCj4+Pj4gK3sKPj4+PiArICAgICAg IHN0cnVjdCBub3V2ZWF1X2Nsb2NrICpjbGsgPSBub3V2ZWF1X2Nsb2NrKGR2ZnMpOwo+Pj4+ICsK Pj4+PiArICAgICAgICpzdGF0ZSA9IGNsay0+cHN0YXRlOwo+Pj4+ICsgICAgICAgcmV0dXJuIDA7 Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQKPj4+PiArZ2syMGFfZHZmc19nZXRfdGFy Z2V0X3N0YXRlKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKmR2ZnMsIGludCAqc3RhdGUsIGludAo+Pj4+ IGxvYWQpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0cnVjdCBub3V2ZWF1X2R2ZnNfZGF0YSAqZGF0 YSA9IGR2ZnMtPmRhdGE7Cj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVhdV9jbG9jayAqY2xrID0g bm91dmVhdV9jbG9jayhkdmZzKTsKPj4+PiArICAgICAgIGludCBjdXJfbGV2ZWwsIGxldmVsOwo+ Pj4+ICsKPj4+PiArICAgICAgIC8qIEZvciBHSzIwQSwgdGhlIHBlcmZvcm1hbmNlIGxldmVsIGlz IGRpcmVjdGx5IG1hcHBlZCB0byBwc3RhdGUKPj4+PiAqLwo+Pj4+ICsgICAgICAgbGV2ZWwgPSBj dXJfbGV2ZWwgPSBjbGstPnBzdGF0ZTsKPj4+PiArCj4+Pj4gKyAgICAgICBpZiAobG9hZCA+IGRh dGEtPnBfbG9hZF9tYXgpIHsKPj4+PiArICAgICAgICAgICAgICAgbGV2ZWwgPSBtaW4oY2xrLT5z dGF0ZV9uciAtIDEsIGxldmVsICsgKGNsay0+c3RhdGVfbnIgLwo+Pj4+IDMpKTsKPj4+PiArICAg ICAgIH0gZWxzZSB7Cj4+Pj4gKyAgICAgICAgICAgICAgIGxldmVsICs9ICgobG9hZCAtIGRhdGEt PnBfbG9hZF90YXJnZXQpICogMTAgLwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGF0YS0+cF9sb2FkX3RhcmdldCkgLyAyOwo+Pj4+ICsgICAgICAgICAgICAgICBsZXZlbCA9 IG1heCgwLCBsZXZlbCk7Cj4+Pj4gKyAgICAgICAgICAgICAgIGxldmVsID0gbWluKGNsay0+c3Rh dGVfbnIgLSAxLCBsZXZlbCk7Cj4+Pj4gKyAgICAgICB9Cj4+Pj4gKwo+Pj4+ICsgICAgICAgbnZf dHJhY2UoZHZmcywgImN1ciBsZXZlbCA9ICVkLCBuZXcgbGV2ZWwgPSAlZFxuIiwgY3VyX2xldmVs LAo+Pj4+IGxldmVsKTsKPj4+PiArCj4+Pj4gKyAgICAgICAqc3RhdGUgPSBsZXZlbDsKPj4+PiAr Cj4+Pj4gKyAgICAgICBpZiAobGV2ZWwgPT0gY3VyX2xldmVsKQo+Pj4+ICsgICAgICAgICAgICAg ICByZXR1cm4gMDsKPj4+PiArICAgICAgIGVsc2UKPj4+PiArICAgICAgICAgICAgICAgcmV0dXJu IDE7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQKPj4+PiArZ2syMGFfZHZmc19nZXRf ZGV2X3N0YXR1cyhzdHJ1Y3Qgbm91dmVhdV9kdmZzICpkdmZzLAo+Pj4+ICsgICAgICAgc3RydWN0 IG5vdXZlYXVfZHZmc19kZXZfc3RhdHVzICpzdGF0dXMpCj4+Pj4gK3sKPj4+PiArICAgICAgIHN0 YXR1cy0+YnVzeSA9IG52X3JkMzIoZHZmcywgMHgxMGE1MDggKyAoQlVTWV9TTE9UICogMHgxMCkp Owo+Pj4+ICsgICAgICAgc3RhdHVzLT50b3RhbD0gbnZfcmQzMihkdmZzLCAweDEwYTUwOCArIChD TEtfU0xPVCAqIDB4MTApKTsKPj4+PiArICAgICAgIHJldHVybiAwOwo+Pj4+ICt9Cj4+Pj4gKwo+ Pj4+ICtzdGF0aWMgdm9pZAo+Pj4+ICtnazIwYV9kdmZzX3Jlc2V0X2Rldl9zdGF0dXMoc3RydWN0 IG5vdXZlYXVfZHZmcyAqZHZmcykKPj4+PiArewo+Pj4+ICsgICAgICAgbnZfd3IzMihkdmZzLCAw eDEwYTUwOCArIChCVVNZX1NMT1QgKiAweDEwKSwgMHg4MDAwMDAwMCk7Cj4+Pj4gKyAgICAgICBu dl93cjMyKGR2ZnMsIDB4MTBhNTA4ICsgKENMS19TTE9UICogMHgxMCksIDB4ODAwMDAwMDApOwo+ Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4gK2drMjBhX2R2ZnNfaW5pdChzdHJ1 Y3Qgbm91dmVhdV9vYmplY3QgKm9iamVjdCkKPj4+PiArewo+Pj4+ICsgICAgICAgc3RydWN0IGdr MjBhX2R2ZnNfcHJpdiAqcHJpdiA9ICh2b2lkICopb2JqZWN0Owo+Pj4+ICsgICAgICAgaW50IHJl dDsKPj4+PiArCj4+Pj4gKyAgICAgICAvKiBpbml0IHB3ciBwZXJmIGNvdW50ZXIgKi8KPj4+PiAr ICAgICAgIG52X3dyMzIocHJpdiwgMHgxMGE1MDQgKyAoQlVTWV9TTE9UICogMHgxMCksIDB4MDAy MDAwMDEpOwo+Pj4+ICsgICAgICAgbnZfd3IzMihwcml2LCAweDEwYTUwYyArIChCVVNZX1NMT1Qg KiAweDEwKSwgMHgwMDAwMDAwMik7Cj4+Pj4gKyAgICAgICBudl93cjMyKHByaXYsIDB4MTBhNTBj ICsgKENMS19TTE9UICogMHgxMCksIDB4MDAwMDAwMDMpOwo+Pj4+ICsKPj4+PiArICAgICAgIHJl dCA9IG5vdXZlYXVfZHZmc19pbml0KCZwcml2LT5iYXNlKTsKPj4+PiArICAgICAgIGlmIChyZXQp Cj4+Pj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0 dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0cnVjdCBub3V2ZWF1X2R2ZnNfZGF0YSBnazIw YV9kdmZzX2RhdGEgPSB7Cj4+Pj4gKyAgICAgICAucF9sb2FkX3RhcmdldCA9IDcwLAo+Pj4+ICsg ICAgICAgLnBfbG9hZF9tYXggPSA5MCwKPj4+PiArICAgICAgIC5wX3Ntb290aCA9IDEsCj4+Pj4g K307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50Cj4+Pj4gK2drMjBhX2R2ZnNfY3RvcihzdHJ1Y3Qg bm91dmVhdV9vYmplY3QgKnBhcmVudCwgc3RydWN0IG5vdXZlYXVfb2JqZWN0Cj4+Pj4gKmVuZ2lu ZSwKPj4+PiArICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfb2NsYXNzICpvY2xhc3MsIHZvaWQg KmRhdGEsIHUzMiBzaXplLAo+Pj4+ICsgICAgICAgICAgICBzdHJ1Y3Qgbm91dmVhdV9vYmplY3Qg Kipwb2JqZWN0KQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgZ2syMGFfZHZmc19wcml2ICpw cml2Owo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZHZmczsKPj4+PiArICAgICAg IGludCByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgcmV0ID0gbm91dmVhdV9kdmZzX2NyZWF0ZShw YXJlbnQsIGVuZ2luZSwgb2NsYXNzLCAmcHJpdik7Cj4+Pj4gKyAgICAgICAqcG9iamVjdCA9IG52 X29iamVjdChwcml2KTsKPj4+PiArICAgICAgIGlmIChyZXQpCj4+Pj4gKyAgICAgICAgICAgICAg IHJldHVybiByZXQ7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgZHZmcyA9ICZwcml2LT5iYXNlOwo+Pj4+ ICsgICAgICAgZHZmcy0+ZGF0YSA9ICZnazIwYV9kdmZzX2RhdGE7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0cnVjdCBub3V2ZWF1X29jbGFzcyAq Cj4+Pj4gK2drMjBhX2R2ZnNfb2NsYXNzID0gJihzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwpIHsK Pj4+PiArICAgICAgIC5iYXNlLmhhbmRsZSA9IE5WX1NVQkRFVihEVkZTLCAweGVhKSwKPj4+PiAr ICAgICAgIC5iYXNlLm9mdW5jcyA9ICYoc3RydWN0IG5vdXZlYXVfb2Z1bmNzKSB7Cj4+Pj4gKyAg ICAgICAgICAgICAgIC5jdG9yID0gZ2syMGFfZHZmc19jdG9yLAo+Pj4+ICsgICAgICAgICAgICAg ICAuZHRvciA9IF9ub3V2ZWF1X2R2ZnNfZHRvciwKPj4+PiArICAgICAgICAgICAgICAgLmluaXQg PSBnazIwYV9kdmZzX2luaXQsCj4+Pj4gKyAgICAgICAgICAgICAgIC5maW5pID0gX25vdXZlYXVf ZHZmc19maW5pLAo+Pj4+ICsgICAgICAgfSwKPj4+PiArICAgICAgIC5nZXRfZGV2X3N0YXR1cyA9 IGdrMjBhX2R2ZnNfZ2V0X2Rldl9zdGF0dXMsCj4+Pj4gKyAgICAgICAucmVzZXRfZGV2X3N0YXR1 cyA9IGdrMjBhX2R2ZnNfcmVzZXRfZGV2X3N0YXR1cywKPj4+PiArICAgICAgIC50YXJnZXQgPSBn azIwYV9kdmZzX3RhcmdldCwKPj4+PiArICAgICAgIC5nZXRfY3VyX3N0YXRlID0gZ2syMGFfZHZm c19nZXRfY3VyX3N0YXRlLAo+Pj4+ICsgICAgICAgLmdldF90YXJnZXRfc3RhdGUgPSBnazIwYV9k dmZzX2dldF90YXJnZXRfc3RhdGUsCj4+Pj4gK30uYmFzZTsKPj4+PiBkaWZmIC0tZ2l0IGEvbnZr bS9zdWJkZXYvZHZmcy9wcml2LmggYi9udmttL3N1YmRldi9kdmZzL3ByaXYuaAo+Pj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi45NWM4YTAwYTAxYzEKPj4+ PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvbnZrbS9zdWJkZXYvZHZmcy9wcml2LmgKPj4+PiBA QCAtMCwwICsxLDQzIEBACj4+Pj4gKyNpZm5kZWYgX19OVktNX0RWRlNfUFJJVl9IX18KPj4+PiAr I2RlZmluZSBfX05WS01fRFZGU19QUklWX0hfXwo+Pj4+ICsKPj4+PiArI2luY2x1ZGUgPHN1YmRl di9kdmZzLmg+Cj4+Pj4gKwo+Pj4+ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2Rldl9zdGF0dXMgewo+ Pj4+ICsgICAgICAgdW5zaWduZWQgbG9uZyB0b3RhbDsKPj4+PiArICAgICAgIHVuc2lnbmVkIGxv bmcgYnVzeTsKPj4+PiArICAgICAgIGludCBjdXJfc3RhdGU7Cj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ ICtzdHJ1Y3Qgbm91dmVhdV9kdmZzX2ltcGwgewo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVf b2NsYXNzIGJhc2U7Cj4+Pj4gKyAgICAgICBpbnQgKCpnZXRfZGV2X3N0YXR1cykoc3RydWN0IG5v dXZlYXVfZHZmcyAqLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0 IG5vdXZlYXVfZHZmc19kZXZfc3RhdHVzICopOwo+Pj4+ICsgICAgICAgdm9pZCAoKnJlc2V0X2Rl dl9zdGF0dXMpKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKik7Cj4+Pj4gKyAgICAgICBpbnQgKCp0YXJn ZXQpKHN0cnVjdCBub3V2ZWF1X2R2ZnMgKiwgaW50ICpzdGF0ZSk7Cj4+Pj4gKyAgICAgICBpbnQg KCpnZXRfY3VyX3N0YXRlKShzdHJ1Y3Qgbm91dmVhdV9kdmZzICosIGludCAqc3RhdGUpOwo+Pj4+ ICsgICAgICAgaW50ICgqZ2V0X3RhcmdldF9zdGF0ZSkoc3RydWN0IG5vdXZlYXVfZHZmcyAqLCBp bnQgKnN0YXRlLCBpbnQKPj4+PiBsb2FkKTsKPj4+PiArfTsKPj4+PiArCj4+Pj4gKyNkZWZpbmUg bm91dmVhdV9kdmZzX2NyZWF0ZShwLGUsbyxkKQo+Pj4+IFwKPj4+PiArICAgICAgIG5vdXZlYXVf ZHZmc19jcmVhdGVfKChwKSwgKGUpLCAobyksIHNpemVvZigqKmQpLCAodm9pZCAqKilkKQo+Pj4+ ICsjZGVmaW5lIG5vdXZlYXVfZHZmc19kZXN0cm95KHApICh7Cj4+Pj4gXAo+Pj4+ICsgICAgICAg c3RydWN0IG5vdXZlYXVfZHZmcyAqZCA9IChwKTsKPj4+PiBcCj4+Pj4gKyAgICAgICBfbm91dmVh dV9kdmZzX2R0b3IobnZfb2JqZWN0KGQpKTsKPj4+PiBcCj4+Pj4gK30pCj4+Pj4gKyNkZWZpbmUg bm91dmVhdV9kdmZzX2luaXQocCkgKHsKPj4+PiBcCj4+Pj4gKyAgICAgICBzdHJ1Y3Qgbm91dmVh dV9kdmZzICpkID0gKHApOwo+Pj4+IFwKPj4+PiArICAgICAgIF9ub3V2ZWF1X2R2ZnNfaW5pdChu dl9vYmplY3QoZCkpOwo+Pj4+IFwKPj4+PiArfSkKPj4+PiArI2RlZmluZSBub3V2ZWF1X2R2ZnNf ZmluaShwLHMpICh7Cj4+Pj4gXAo+Pj4+ICsgICAgICAgc3RydWN0IG5vdXZlYXVfZHZmcyAqZCA9 IChwKTsKPj4+PiBcCj4+Pj4gKyAgICAgICBfbm91dmVhdV9kdmZzX2ZpbmkobnZfb2JqZWN0KGQp LCAocykpOwo+Pj4+IFwKPj4+PiArfSkKPj4+PiArCj4+Pj4gK2ludCBub3V2ZWF1X2R2ZnNfY3Jl YXRlXyhzdHJ1Y3Qgbm91dmVhdV9vYmplY3QgKiwgc3RydWN0IG5vdXZlYXVfb2JqZWN0Cj4+Pj4g KiwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5vdXZlYXVfb2NsYXNz ICosIGludCwgdm9pZCAqKik7Cj4+Pj4gK3ZvaWQgX25vdXZlYXVfZHZmc19kdG9yKHN0cnVjdCBu b3V2ZWF1X29iamVjdCAqKTsKPj4+PiAraW50IF9ub3V2ZWF1X2R2ZnNfaW5pdChzdHJ1Y3Qgbm91 dmVhdV9vYmplY3QgKik7Cj4+Pj4gK2ludCBfbm91dmVhdV9kdmZzX2Zpbmkoc3RydWN0IG5vdXZl YXVfb2JqZWN0ICosIGJvb2wgc3VzcGVuZCk7Cj4+Pj4gKwo+Pj4+ICsjZW5kaWYKPj4+PiAtLQo+ Pj4+IDEuOS4xCj4+Pj4KPj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwo+Pj4+IE5vdXZlYXUgbWFpbGluZyBsaXN0Cj4+Pj4gTm91dmVhdUBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4+PiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vbm91dmVhdQo+Pgo+Pgo+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiBU aGlzIGVtYWlsIG1lc3NhZ2UgaXMgZm9yIHRoZSBzb2xlIHVzZSBvZiB0aGUgaW50ZW5kZWQgcmVj aXBpZW50KHMpIGFuZCBtYXkKPj4gY29udGFpbgo+PiBjb25maWRlbnRpYWwgaW5mb3JtYXRpb24u ICBBbnkgdW5hdXRob3JpemVkIHJldmlldywgdXNlLCBkaXNjbG9zdXJlIG9yCj4+IGRpc3RyaWJ1 dGlvbgo+PiBpcyBwcm9oaWJpdGVkLiAgSWYgeW91IGFyZSBub3QgdGhlIGludGVuZGVkIHJlY2lw aWVudCwgcGxlYXNlIGNvbnRhY3QgdGhlCj4+IHNlbmRlciBieQo+PiByZXBseSBlbWFpbCBhbmQg ZGVzdHJveSBhbGwgY29waWVzIG9mIHRoZSBvcmlnaW5hbCBtZXNzYWdlLgo+PiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gTm91dmVhdSBtYWlsaW5nIGxpc3QKPiBOb3V2ZWF1QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9u b3V2ZWF1CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO b3V2ZWF1IG1haWxpbmcgbGlzdApOb3V2ZWF1QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vbm91dmVhdQo=