From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul Durrant Subject: Re: [PATCH v4 5/5] xen: use libxendevicemodel when available Date: Wed, 8 Mar 2017 09:41:13 +0000 Message-ID: <9f3e75de3dba4b5f8afa871771a7edff@AMSPEX02CL03.citrite.net> References: <1488884134-29190-1-git-send-email-paul.durrant@citrix.com> <1488884134-29190-6-git-send-email-paul.durrant@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1clY5s-0005xM-TW for xen-devel@lists.xenproject.org; Wed, 08 Mar 2017 09:41:17 +0000 In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: 'Stefano Stabellini' Cc: "xen-devel@lists.xenproject.org" , "qemu-devel@nongnu.org" List-Id: xen-devel@lists.xenproject.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogU3RlZmFubyBTdGFiZWxsaW5p IFttYWlsdG86c3N0YWJlbGxpbmlAa2VybmVsLm9yZ10KPiBTZW50OiAwNyBNYXJjaCAyMDE3IDE5 OjE0Cj4gVG86IFBhdWwgRHVycmFudCA8UGF1bC5EdXJyYW50QGNpdHJpeC5jb20+Cj4gQ2M6IHhl bi1kZXZlbEBsaXN0cy54ZW5wcm9qZWN0Lm9yZzsgcWVtdS1kZXZlbEBub25nbnUub3JnOyBTdGVm YW5vCj4gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KPiBTdWJqZWN0OiBSZTog W1BBVENIIHY0IDUvNV0geGVuOiB1c2UgbGlieGVuZGV2aWNlbW9kZWwgd2hlbiBhdmFpbGFibGUK PiAKPiBPbiBUdWUsIDcgTWFyIDIwMTcsIFBhdWwgRHVycmFudCB3cm90ZToKPiA+IFRoaXMgcGF0 Y2ggbW9kaWZpZXMgdGhlIHdyYXBwZXIgZnVuY3Rpb25zIGluIHhlbl9jb21tb24uaCB0byB1c2Ug dGhlCj4gPiBuZXcgeGVuZGV2aWNlbW9kZWwgaW50ZXJmYWNlIGlmIGl0IGlzIGF2YWlsYWJsZSBh bG9uZyB3aXRoIGNvbXBhdGliaWxpdHkKPiA+IGNvZGUgdG8gdXNlIHRoZSBvbGQgbGlieGVuY3Ry bCBpbnRlcmZhY2UgaWYgaXQgaXMgbm90Lgo+ID4KPiA+IFNpZ25lZC1vZmYtYnk6IFBhdWwgRHVy cmFudCA8cGF1bC5kdXJyYW50QGNpdHJpeC5jb20+Cj4gPiBSZXZpZXdlZC1ieTogQW50aG9ueSBQ ZXJhcmQgPGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20+Cj4gCj4gUmV2aWV3ZWQtYnk6IFN0ZWZh bm8gU3RhYmVsbGluaSA8c3N0YWJlbGxpbmlAa2VybmVsLm9yZz4KPiAKCkdyZWF0LiBUaGFua3Ms IGFuZCB0aGFua3MgZm9yIGZpbmRpbmcgdGhlIGNvbXBhdCBpc3N1ZXMuCgo+IEhvd2V2ZXIsIFFF TVUgaXMgaW4gc29mdC1mcmVlemUsIHNvIEknbGwgd2FpdCB1bnRpbCB0aGUgbWVyZ2Ugd2luZG93 Cj4gb3BlbiBhZ2FpbiBiZWZvcmUgc2VuZGluZyB0aGUgcHVsbCByZXF1ZXN0Lgo+IAoKT2suCgpD aGVlcnMsCgogIFBhdWwKCj4gCj4gPiBDYzogU3RlZmFubyBTdGFiZWxsaW5pIDxzc3RhYmVsbGlu aUBrZXJuZWwub3JnPgo+ID4KPiA+IHY0Ogo+ID4gLSBGaXggdHlwbyBjYXVzaW5nIGJ1aWxkIGZh aWx1cmVzIG9uIDwgNDkwCj4gPiAtIEZpeCBidWlsZGluZyBvbiA8IDQ1MAo+ID4gLSBCdWlsZC10 ZXN0ZWQgYWdhaW5zdCA0LjIuNSBhbmQgNC44LjAKPiA+Cj4gPiB2MzoKPiA+IC0gU3dpdGNoIGZy b20gbWFjcm9zIHRvIHN0YXRpYyBpbmxpbmVzLgo+ID4KPiA+IHYyOgo+ID4gLSBBZGQgYSBjb21w YXQgZGVmaW5lIGZvciB4ZW5mb3JlaWdubWVtb3J5X2Nsb3NlKCkgc2luY2UgdGhpcyBpcyBub3cK PiA+ICAgdXNlZC4KPiA+IC0tLQo+ID4gIGluY2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaCB8IDIw Mwo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCj4gPiAgeGVu LWNvbW1vbi5jICAgICAgICAgICAgICAgIHwgICA4ICsrCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAx NzggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvaHcveGVuL3hlbl9jb21tb24uaAo+IGIvaW5jbHVkZS9ody94ZW4veGVuX2NvbW1vbi5o Cj4gPiBpbmRleCAzMWNmMjVmLi4yNzRhY2NjIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9ody94 ZW4veGVuX2NvbW1vbi5oCj4gPiArKysgYi9pbmNsdWRlL2h3L3hlbi94ZW5fY29tbW9uLmgKPiA+ IEBAIC05LDYgKzksNyBAQAo+ID4gICN1bmRlZiBYQ19XQU5UX0NPTVBBVF9FVlRDSE5fQVBJCj4g PiAgI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0dOVFRBQl9BUEkKPiA+ICAjdW5kZWYgWENfV0FOVF9D T01QQVRfTUFQX0ZPUkVJR05fQVBJCj4gPiArI3VuZGVmIFhDX1dBTlRfQ09NUEFUX0RFVklDRU1P REVMX0FQSQo+ID4KPiA+ICAjaW5jbHVkZSA8eGVuY3RybC5oPgo+ID4gICNpbmNsdWRlIDx4ZW5z dG9yZS5oPgo+ID4gQEAgLTI2LDQ4ICsyNywxODMgQEAgZXh0ZXJuIHhjX2ludGVyZmFjZSAqeGVu X3hjOwo+ID4gICAqIFdlIGRvbid0IHN1cHBvcnQgWGVuIHByaW9yIHRvIDQuMi4wLgo+ID4gICAq Lwo+ID4KPiA+ICsjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OIDwgNDkwCj4g PiArCj4gPiArdHlwZWRlZiB4Y19pbnRlcmZhY2UgeGVuZGV2aWNlbW9kZWxfaGFuZGxlOwo+ID4g Kwo+ID4gK3N0YXRpYyBpbmxpbmUgeGVuZGV2aWNlbW9kZWxfaGFuZGxlICp4ZW5kZXZpY2Vtb2Rl bF9vcGVuKAo+ID4gKyAgICBzdHJ1Y3QgeGVudG9vbGxvZ19sb2dnZXIgKmxvZ2dlciwgdW5zaWdu ZWQgaW50IG9wZW5fZmxhZ3MpCj4gPiArewo+ID4gKyAgICByZXR1cm4geGVuX3hjOwo+ID4gK30K PiA+ICsKPiA+ICsjaWYgQ09ORklHX1hFTl9DVFJMX0lOVEVSRkFDRV9WRVJTSU9OID49IDQ1MAo+ ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUgaW50IHhlbmRldmljZW1vZGVsX2NyZWF0ZV9pb3JlcV9z ZXJ2ZXIoCj4gPiArICAgIHhlbmRldmljZW1vZGVsX2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21p ZCwgaW50IGhhbmRsZV9idWZpb3JlcSwKPiA+ICsgICAgaW9zZXJ2aWRfdCAqaWQpCj4gPiArewo+ ID4gKyAgICByZXR1cm4geGNfaHZtX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoZG1vZCwgZG9taWQsIGhh bmRsZV9idWZpb3JlcSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGlkKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBpbnQgeGVuZGV2aWNlbW9kZWxf Z2V0X2lvcmVxX3NlcnZlcl9pbmZvKAo+ID4gKyAgICB4ZW5kZXZpY2Vtb2RlbF9oYW5kbGUgKmRt b2QsIGRvbWlkX3QgZG9taWQsIGlvc2VydmlkX3QgaWQsCj4gPiArICAgIHhlbl9wZm5fdCAqaW9y ZXFfcGZuLCB4ZW5fcGZuX3QgKmJ1ZmlvcmVxX3BmbiwKPiA+ICsgICAgZXZ0Y2huX3BvcnRfdCAq YnVmaW9yZXFfcG9ydCkKPiA+ICt7Cj4gPiArICAgIHJldHVybiB4Y19odm1fZ2V0X2lvcmVxX3Nl cnZlcl9pbmZvKGRtb2QsIGRvbWlkLCBpZCwgaW9yZXFfcGZuLAo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZpb3JlcV9wZm4sIGJ1ZmlvcmVxX3BvcnQpOwo+ ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGludCB4ZW5kZXZpY2Vtb2RlbF9tYXBfaW9f cmFuZ2VfdG9faW9yZXFfc2VydmVyKAo+ID4gKyAgICB4ZW5kZXZpY2Vtb2RlbF9oYW5kbGUgKmRt b2QsIGRvbWlkX3QgZG9taWQsIGlvc2VydmlkX3QgaWQsIGludAo+IGlzX21taW8sCj4gPiArICAg IHVpbnQ2NF90IHN0YXJ0LCB1aW50NjRfdCBlbmQpCj4gPiArewo+ID4gKyAgICByZXR1cm4geGNf aHZtX21hcF9pb19yYW5nZV90b19pb3JlcV9zZXJ2ZXIoZG1vZCwgZG9taWQsIGlkLAo+IGlzX21t aW8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dGFydCwgZW5kKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBpbnQgeGVuZGV2aWNl bW9kZWxfdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoCj4gPiArICAgIHhlbmRldmlj ZW1vZGVsX2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21pZCwgaW9zZXJ2aWRfdCBpZCwgaW50Cj4g aXNfbW1pbywKPiA+ICsgICAgdWludDY0X3Qgc3RhcnQsIHVpbnQ2NF90IGVuZCkKPiA+ICt7Cj4g PiArICAgIHJldHVybiB4Y19odm1fdW5tYXBfaW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoZG1v ZCwgZG9taWQsIGlkLAo+IGlzX21taW8sCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0 YXRpYyBpbmxpbmUgaW50IHhlbmRldmljZW1vZGVsX21hcF9wY2lkZXZfdG9faW9yZXFfc2VydmVy KAo+ID4gKyAgICB4ZW5kZXZpY2Vtb2RlbF9oYW5kbGUgKmRtb2QsIGRvbWlkX3QgZG9taWQsIGlv c2VydmlkX3QgaWQsCj4gPiArICAgIHVpbnQxNl90IHNlZ21lbnQsIHVpbnQ4X3QgYnVzLCB1aW50 OF90IGRldmljZSwgdWludDhfdCBmdW5jdGlvbikKPiA+ICt7Cj4gPiArICAgIHJldHVybiB4Y19o dm1fbWFwX3BjaWRldl90b19pb3JlcV9zZXJ2ZXIoZG1vZCwgZG9taWQsIGlkLAo+IHNlZ21lbnQs Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzLCBk ZXZpY2UsIGZ1bmN0aW9uKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBpbnQgeGVu ZGV2aWNlbW9kZWxfdW5tYXBfcGNpZGV2X2Zyb21faW9yZXFfc2VydmVyKAo+ID4gKyAgICB4ZW5k ZXZpY2Vtb2RlbF9oYW5kbGUgKmRtb2QsIGRvbWlkX3QgZG9taWQsIGlvc2VydmlkX3QgaWQsCj4g PiArICAgIHVpbnQxNl90IHNlZ21lbnQsIHVpbnQ4X3QgYnVzLCB1aW50OF90IGRldmljZSwgdWlu dDhfdCBmdW5jdGlvbikKPiA+ICt7Cj4gPiArICAgIHJldHVybiB4Y19odm1fdW5tYXBfcGNpZGV2 X2Zyb21faW9yZXFfc2VydmVyKGRtb2QsIGRvbWlkLCBpZCwKPiBzZWdtZW50LAo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXMsIGRldmljZSwg ZnVuY3Rpb24pOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGludCB4ZW5kZXZpY2Vt b2RlbF9kZXN0cm95X2lvcmVxX3NlcnZlcigKPiA+ICsgICAgeGVuZGV2aWNlbW9kZWxfaGFuZGxl ICpkbW9kLCBkb21pZF90IGRvbWlkLCBpb3NlcnZpZF90IGlkKQo+ID4gK3sKPiA+ICsgICAgcmV0 dXJuIHhjX2h2bV9kZXN0cm95X2lvcmVxX3NlcnZlcihkbW9kLCBkb21pZCwgaWQpOwo+ID4gK30K PiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGludCB4ZW5kZXZpY2Vtb2RlbF9zZXRfaW9yZXFfc2Vy dmVyX3N0YXRlKAo+ID4gKyAgICB4ZW5kZXZpY2Vtb2RlbF9oYW5kbGUgKmRtb2QsIGRvbWlkX3Qg ZG9taWQsIGlvc2VydmlkX3QgaWQsIGludAo+IGVuYWJsZWQpCj4gPiArewo+ID4gKyAgICByZXR1 cm4geGNfaHZtX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoZG1vZCwgZG9taWQsIGlkLCBlbmFibGVk KTsKPiA+ICt9Cj4gPiArCj4gPiArI2VuZGlmIC8qIENPTkZJR19YRU5fQ1RSTF9JTlRFUkZBQ0Vf VkVSU0lPTiA+PSA0NTAgKi8KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGludCB4ZW5kZXZpY2Vt b2RlbF9zZXRfcGNpX2ludHhfbGV2ZWwoCj4gPiArICAgIHhlbmRldmljZW1vZGVsX2hhbmRsZSAq ZG1vZCwgZG9taWRfdCBkb21pZCwgdWludDE2X3Qgc2VnbWVudCwKPiA+ICsgICAgdWludDhfdCBi dXMsIHVpbnQ4X3QgZGV2aWNlLCB1aW50OF90IGludHgsIHVuc2lnbmVkIGludCBsZXZlbCkKPiA+ ICt7Cj4gPiArICAgIHJldHVybiB4Y19odm1fc2V0X3BjaV9pbnR4X2xldmVsKGRtb2QsIGRvbWlk LCBzZWdtZW50LCBidXMsIGRldmljZSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50eCwgbGV2ZWwpOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMgaW5saW5lIGlu dCB4ZW5kZXZpY2Vtb2RlbF9zZXRfaXNhX2lycV9sZXZlbCgKPiA+ICsgICAgeGVuZGV2aWNlbW9k ZWxfaGFuZGxlICpkbW9kLCBkb21pZF90IGRvbWlkLCB1aW50OF90IGlycSwKPiA+ICsgICAgdW5z aWduZWQgaW50IGxldmVsKQo+ID4gK3sKPiA+ICsgICAgcmV0dXJuIHhjX2h2bV9zZXRfaXNhX2ly cV9sZXZlbChkbW9kLCBkb21pZCwgaXJxLCBsZXZlbCk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBpbmxpbmUgaW50IHhlbmRldmljZW1vZGVsX3NldF9wY2lfbGlua19yb3V0ZSgKPiA+ICsgICAg eGVuZGV2aWNlbW9kZWxfaGFuZGxlICpkbW9kLCBkb21pZF90IGRvbWlkLCB1aW50OF90IGxpbmss IHVpbnQ4X3QKPiBpcnEpCj4gPiArewo+ID4gKyAgICByZXR1cm4geGNfaHZtX3NldF9wY2lfbGlu a19yb3V0ZShkbW9kLCBkb21pZCwgbGluaywgaXJxKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGlj IGlubGluZSBpbnQgeGVuZGV2aWNlbW9kZWxfaW5qZWN0X21zaSgKPiA+ICsgICAgeGVuZGV2aWNl bW9kZWxfaGFuZGxlICpkbW9kLCBkb21pZF90IGRvbWlkLCB1aW50NjRfdCBtc2lfYWRkciwKPiA+ ICsgICAgdWludDMyX3QgbXNpX2RhdGEpCj4gPiArewo+ID4gKyAgICByZXR1cm4geGNfaHZtX2lu amVjdF9tc2koZG1vZCwgZG9taWQsIG1zaV9hZGRyLCBtc2lfZGF0YSk7Cj4gPiArfQo+ID4gKwo+ ID4gK3N0YXRpYyBpbmxpbmUgaW50IHhlbmRldmljZW1vZGVsX3RyYWNrX2RpcnR5X3ZyYW0oCj4g PiArICAgIHhlbmRldmljZW1vZGVsX2hhbmRsZSAqZG1vZCwgZG9taWRfdCBkb21pZCwgdWludDY0 X3QgZmlyc3RfcGZuLAo+ID4gKyAgICB1aW50MzJfdCBuciwgdW5zaWduZWQgbG9uZyAqZGlydHlf Yml0bWFwKQo+ID4gK3sKPiA+ICsgICAgcmV0dXJuIHhjX2h2bV90cmFja19kaXJ0eV92cmFtKGRt b2QsIGRvbWlkLCBmaXJzdF9wZm4sIG5yLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGlydHlfYml0bWFwKTsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljIGlubGluZSBp bnQgeGVuZGV2aWNlbW9kZWxfbW9kaWZpZWRfbWVtb3J5KAo+ID4gKyAgICB4ZW5kZXZpY2Vtb2Rl bF9oYW5kbGUgKmRtb2QsIGRvbWlkX3QgZG9taWQsIHVpbnQ2NF90IGZpcnN0X3BmbiwKPiA+ICsg ICAgdWludDMyX3QgbnIpCj4gPiArewo+ID4gKyAgICByZXR1cm4geGNfaHZtX21vZGlmaWVkX21l bW9yeShkbW9kLCBkb21pZCwgZmlyc3RfcGZuLCBucik7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRp YyBpbmxpbmUgaW50IHhlbmRldmljZW1vZGVsX3NldF9tZW1fdHlwZSgKPiA+ICsgICAgeGVuZGV2 aWNlbW9kZWxfaGFuZGxlICpkbW9kLCBkb21pZF90IGRvbWlkLCBodm1tZW1fdHlwZV90Cj4gbWVt X3R5cGUsCj4gPiArICAgIHVpbnQ2NF90IGZpcnN0X3BmbiwgdWludDMyX3QgbnIpCj4gPiArewo+ ID4gKyAgICByZXR1cm4geGNfaHZtX3NldF9tZW1fdHlwZShkbW9kLCBkb21pZCwgbWVtX3R5cGUs IGZpcnN0X3BmbiwKPiBucik7Cj4gPiArfQo+ID4gKwo+ID4gKyNlbHNlIC8qIENPTkZJR19YRU5f Q1RSTF9JTlRFUkZBQ0VfVkVSU0lPTiA+PSA0OTAgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSA8eGVu ZGV2aWNlbW9kZWwuaD4KPiA+ICsKPiA+ICsjZW5kaWYKPiA+ICsKPiA+ICtleHRlcm4geGVuZGV2 aWNlbW9kZWxfaGFuZGxlICp4ZW5fZG1vZDsKPiA+ICsKPiA+ICBzdGF0aWMgaW5saW5lIGludCB4 ZW5fc2V0X21lbV90eXBlKGRvbWlkX3QgZG9taWQsIGh2bW1lbV90eXBlX3QKPiB0eXBlLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDY0X3QgZmlyc3RfcGZuLCB1 aW50MzJfdCBucikKPiA+ICB7Cj4gPiAtICAgIHJldHVybiB4Y19odm1fc2V0X21lbV90eXBlKHhl bl94YywgZG9taWQsIHR5cGUsIGZpcnN0X3BmbiwgbnIpOwo+ID4gKyAgICByZXR1cm4geGVuZGV2 aWNlbW9kZWxfc2V0X21lbV90eXBlKHhlbl9kbW9kLCBkb21pZCwgdHlwZSwKPiBmaXJzdF9wZm4s Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnIpOwo+ID4gIH0K PiA+Cj4gPiAgc3RhdGljIGlubGluZSBpbnQgeGVuX3NldF9wY2lfaW50eF9sZXZlbChkb21pZF90 IGRvbWlkLCB1aW50MTZfdCBzZWdtZW50LAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdWludDhfdCBidXMsIHVpbnQ4X3QgZGV2aWNlLAo+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBpbnR4LCB1bnNpZ25lZCBp bnQgbGV2ZWwpCj4gPiAgewo+ID4gLSAgICByZXR1cm4geGNfaHZtX3NldF9wY2lfaW50eF9sZXZl bCh4ZW5feGMsIGRvbWlkLCBzZWdtZW50LCBidXMsCj4gZGV2aWNlLAo+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnR4LCBsZXZlbCk7Cj4gPiArICAgIHJldHVybiB4 ZW5kZXZpY2Vtb2RlbF9zZXRfcGNpX2ludHhfbGV2ZWwoeGVuX2Rtb2QsIGRvbWlkLAo+IHNlZ21l bnQsIGJ1cywKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXZpY2UsIGludHgsIGxldmVsKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgaW50 IHhlbl9zZXRfcGNpX2xpbmtfcm91dGUoZG9taWRfdCBkb21pZCwgdWludDhfdCBsaW5rLAo+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBpcnEpCj4g PiAgewo+ID4gLSAgICByZXR1cm4geGNfaHZtX3NldF9wY2lfbGlua19yb3V0ZSh4ZW5feGMsIGRv bWlkLCBsaW5rLCBpcnEpOwo+ID4gKyAgICByZXR1cm4geGVuZGV2aWNlbW9kZWxfc2V0X3BjaV9s aW5rX3JvdXRlKHhlbl9kbW9kLCBkb21pZCwgbGluaywKPiBpcnEpOwo+ID4gIH0KPiA+Cj4gPiAg c3RhdGljIGlubGluZSBpbnQgeGVuX2luamVjdF9tc2koZG9taWRfdCBkb21pZCwgdWludDY0X3Qg bXNpX2FkZHIsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg bXNpX2RhdGEpCj4gPiAgewo+ID4gLSAgICByZXR1cm4geGNfaHZtX2luamVjdF9tc2koeGVuX3hj LCBkb21pZCwgbXNpX2FkZHIsIG1zaV9kYXRhKTsKPiA+ICsgICAgcmV0dXJuIHhlbmRldmljZW1v ZGVsX2luamVjdF9tc2koeGVuX2Rtb2QsIGRvbWlkLCBtc2lfYWRkciwKPiBtc2lfZGF0YSk7Cj4g PiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGludCB4ZW5fc2V0X2lzYV9pcnFfbGV2ZWwoZG9t aWRfdCBkb21pZCwgdWludDhfdCBpcnEsCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVuc2lnbmVkIGludCBsZXZlbCkKPiA+ICB7Cj4gPiAtICAgIHJldHVybiB4 Y19odm1fc2V0X2lzYV9pcnFfbGV2ZWwoeGVuX3hjLCBkb21pZCwgaXJxLCBsZXZlbCk7Cj4gPiAr ICAgIHJldHVybiB4ZW5kZXZpY2Vtb2RlbF9zZXRfaXNhX2lycV9sZXZlbCh4ZW5fZG1vZCwgZG9t aWQsIGlycSwKPiBsZXZlbCk7Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGludCB4ZW5f dHJhY2tfZGlydHlfdnJhbShkb21pZF90IGRvbWlkLCB1aW50NjRfdCBmaXJzdF9wZm4sCj4gPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnIsIHVuc2ln bmVkIGxvbmcgKmJpdG1hcCkKPiA+ICB7Cj4gPiAtICAgIHJldHVybiB4Y19odm1fdHJhY2tfZGly dHlfdnJhbSh4ZW5feGMsIGRvbWlkLCBmaXJzdF9wZm4sIG5yLCBiaXRtYXApOwo+ID4gKyAgICBy ZXR1cm4geGVuZGV2aWNlbW9kZWxfdHJhY2tfZGlydHlfdnJhbSh4ZW5fZG1vZCwgZG9taWQsIGZp cnN0X3BmbiwKPiBuciwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYml0bWFwKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRpYyBpbmxpbmUgaW50IHhlbl9tb2Rp ZmllZF9tZW1vcnkoZG9taWRfdCBkb21pZCwgdWludDY0X3QgZmlyc3RfcGZuLAo+ID4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgbnIpCj4gPiAgewo+ID4g LSAgICByZXR1cm4geGNfaHZtX21vZGlmaWVkX21lbW9yeSh4ZW5feGMsIGRvbWlkLCBmaXJzdF9w Zm4sIG5yKTsKPiA+ICsgICAgcmV0dXJuIHhlbmRldmljZW1vZGVsX21vZGlmaWVkX21lbW9yeSh4 ZW5fZG1vZCwgZG9taWQsCj4gZmlyc3RfcGZuLCBucik7Cj4gPiAgfQo+ID4KPiA+ICAvKiBYZW4g NC4yIHRocm91Z2ggNC42ICovCj4gPiBAQCAtOTcsNiArMjMzLDcgQEAgdHlwZWRlZiB4Y19nbnR0 YWIgeGVuZ250dGFiX2hhbmRsZTsKPiA+ICAgICAgeGNfZ250dGFiX21hcF9kb21haW5fZ3JhbnRf cmVmcyhoLCBjLCBkLCByLCBwKQo+ID4KPiA+ICAjZGVmaW5lIHhlbmZvcmVpZ25tZW1vcnlfb3Bl bihsLCBmKSB4ZW5feGMKPiA+ICsjZGVmaW5lIHhlbmZvcmVpZ25tZW1vcnlfY2xvc2UoaCkKPiA+ Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkICp4ZW5mb3JlaWdubWVtb3J5X21hcCh4Y19pbnRlcmZh Y2UgKmgsIHVpbnQzMl90IGRvbSwKPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCBwcm90LCBzaXplX3QgcGFnZXMsCj4gPiBAQCAtMjg1LDggKzQyMiw4IEBA IHN0YXRpYyBpbmxpbmUgdm9pZAo+IHhlbl9tYXBfbWVtb3J5X3NlY3Rpb24oZG9taWRfdCBkb20s Cj4gPiAgICAgIH0KPiA+Cj4gPiAgICAgIHRyYWNlX3hlbl9tYXBfbW1pb19yYW5nZShpb3NlcnZp ZCwgc3RhcnRfYWRkciwgZW5kX2FkZHIpOwo+ID4gLSAgICB4Y19odm1fbWFwX2lvX3JhbmdlX3Rv X2lvcmVxX3NlcnZlcih4ZW5feGMsIGRvbSwgaW9zZXJ2aWQsIDEsCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICsg ICAgeGVuZGV2aWNlbW9kZWxfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcih4ZW5fZG1vZCwg ZG9tLAo+IGlvc2VydmlkLCAxLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICB9Cj4gPgo+ID4gIHN0 YXRpYyBpbmxpbmUgdm9pZCB4ZW5fdW5tYXBfbWVtb3J5X3NlY3Rpb24oZG9taWRfdCBkb20sCj4g PiBAQCAtMzAyLDggKzQzOSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZAo+IHhlbl91bm1hcF9tZW1v cnlfc2VjdGlvbihkb21pZF90IGRvbSwKPiA+ICAgICAgfQo+ID4KPiA+ICAgICAgdHJhY2VfeGVu X3VubWFwX21taW9fcmFuZ2UoaW9zZXJ2aWQsIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+IC0g ICAgeGNfaHZtX3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKHhlbl94YywgZG9tLCBp b3NlcnZpZCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDEsIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICsgICAgeGVuZGV2aWNlbW9kZWxfdW5tYXBf aW9fcmFuZ2VfZnJvbV9pb3JlcV9zZXJ2ZXIoeGVuX2Rtb2QsCj4gZG9tLCBpb3NlcnZpZCwKPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwg c3RhcnRfYWRkciwgZW5kX2FkZHIpOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lk IHhlbl9tYXBfaW9fc2VjdGlvbihkb21pZF90IGRvbSwKPiA+IEBAIC0zMTksOCArNDU2LDggQEAg c3RhdGljIGlubGluZSB2b2lkIHhlbl9tYXBfaW9fc2VjdGlvbihkb21pZF90Cj4gZG9tLAo+ID4g ICAgICB9Cj4gPgo+ID4gICAgICB0cmFjZV94ZW5fbWFwX3BvcnRpb19yYW5nZShpb3NlcnZpZCwg c3RhcnRfYWRkciwgZW5kX2FkZHIpOwo+ID4gLSAgICB4Y19odm1fbWFwX2lvX3JhbmdlX3RvX2lv cmVxX3NlcnZlcih4ZW5feGMsIGRvbSwgaW9zZXJ2aWQsIDAsCj4gPiAtICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICsgICAg eGVuZGV2aWNlbW9kZWxfbWFwX2lvX3JhbmdlX3RvX2lvcmVxX3NlcnZlcih4ZW5fZG1vZCwgZG9t LAo+IGlvc2VydmlkLCAwLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICB9Cj4gPgo+ID4gIHN0YXRp YyBpbmxpbmUgdm9pZCB4ZW5fdW5tYXBfaW9fc2VjdGlvbihkb21pZF90IGRvbSwKPiA+IEBAIC0z MzYsOCArNDczLDggQEAgc3RhdGljIGlubGluZSB2b2lkIHhlbl91bm1hcF9pb19zZWN0aW9uKGRv bWlkX3QKPiBkb20sCj4gPiAgICAgIH0KPiA+Cj4gPiAgICAgIHRyYWNlX3hlbl91bm1hcF9wb3J0 aW9fcmFuZ2UoaW9zZXJ2aWQsIHN0YXJ0X2FkZHIsIGVuZF9hZGRyKTsKPiA+IC0gICAgeGNfaHZt X3VubWFwX2lvX3JhbmdlX2Zyb21faW9yZXFfc2VydmVyKHhlbl94YywgZG9tLCBpb3NlcnZpZCwK PiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHN0YXJ0 X2FkZHIsIGVuZF9hZGRyKTsKPiA+ICsgICAgeGVuZGV2aWNlbW9kZWxfdW5tYXBfaW9fcmFuZ2Vf ZnJvbV9pb3JlcV9zZXJ2ZXIoeGVuX2Rtb2QsCj4gZG9tLCBpb3NlcnZpZCwKPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgc3RhcnRfYWRk ciwgZW5kX2FkZHIpOwo+ID4gIH0KPiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkIHhlbl9tYXBf cGNpZGV2KGRvbWlkX3QgZG9tLAo+ID4gQEAgLTM1MCwxMCArNDg3LDEwIEBAIHN0YXRpYyBpbmxp bmUgdm9pZCB4ZW5fbWFwX3BjaWRldihkb21pZF90IGRvbSwKPiA+Cj4gPiAgICAgIHRyYWNlX3hl bl9tYXBfcGNpZGV2KGlvc2VydmlkLCBwY2lfYnVzX251bShwY2lfZGV2LT5idXMpLAo+ID4gICAg ICAgICAgICAgICAgICAgICAgICAgICBQQ0lfU0xPVChwY2lfZGV2LT5kZXZmbiksIFBDSV9GVU5D KHBjaV9kZXYtPmRldmZuKSk7Cj4gPiAtICAgIHhjX2h2bV9tYXBfcGNpZGV2X3RvX2lvcmVxX3Nl cnZlcih4ZW5feGMsIGRvbSwgaW9zZXJ2aWQsIDAsCj4gPiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwY2lfYnVzX251bShwY2lfZGV2LT5idXMpLAo+ID4gLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NMT1QocGNpX2Rldi0+ZGV2Zm4pLAo+ ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0ZVTkMocGNpX2Rl di0+ZGV2Zm4pKTsKPiA+ICsgICAgeGVuZGV2aWNlbW9kZWxfbWFwX3BjaWRldl90b19pb3JlcV9z ZXJ2ZXIoeGVuX2Rtb2QsIGRvbSwKPiBpb3NlcnZpZCwgMCwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGNpX2J1c19udW0ocGNpX2Rldi0+YnVzKSwK PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX1NM T1QocGNpX2Rldi0+ZGV2Zm4pLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBQQ0lfRlVOQyhwY2lfZGV2LT5kZXZmbikpOwo+ID4gIH0KPiA+Cj4gPiAg c3RhdGljIGlubGluZSB2b2lkIHhlbl91bm1hcF9wY2lkZXYoZG9taWRfdCBkb20sCj4gPiBAQCAt MzY2LDE4ICs1MDMsMTggQEAgc3RhdGljIGlubGluZSB2b2lkIHhlbl91bm1hcF9wY2lkZXYoZG9t aWRfdAo+IGRvbSwKPiA+Cj4gPiAgICAgIHRyYWNlX3hlbl91bm1hcF9wY2lkZXYoaW9zZXJ2aWQs IHBjaV9idXNfbnVtKHBjaV9kZXYtPmJ1cyksCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUENJX1NMT1QocGNpX2Rldi0+ZGV2Zm4pLCBQQ0lfRlVOQyhwY2lfZGV2LT5kZXZmbikpOwo+ ID4gLSAgICB4Y19odm1fdW5tYXBfcGNpZGV2X2Zyb21faW9yZXFfc2VydmVyKHhlbl94YywgZG9t LCBpb3NlcnZpZCwgMCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwY2lfYnVzX251bShwY2lfZGV2LT5idXMpLAo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBDSV9TTE9UKHBjaV9kZXYtPmRldmZuKSwKPiA+IC0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhwY2lfZGV2LT5k ZXZmbikpOwo+ID4gKyAgICB4ZW5kZXZpY2Vtb2RlbF91bm1hcF9wY2lkZXZfZnJvbV9pb3JlcV9z ZXJ2ZXIoeGVuX2Rtb2QsIGRvbSwKPiBpb3NlcnZpZCwgMCwKPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBjaV9idXNfbnVtKHBjaV9kZXYtPmJ1 cyksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQQ0lfU0xPVChwY2lfZGV2LT5kZXZmbiksCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRlVOQyhwY2lfZGV2LT5kZXZmbikpOwo+ID4g IH0KPiA+Cj4gPiAgc3RhdGljIGlubGluZSB2b2lkIHhlbl9jcmVhdGVfaW9yZXFfc2VydmVyKGRv bWlkX3QgZG9tLAo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpb3NlcnZpZF90ICppb3NlcnZpZCkKPiA+ICB7Cj4gPiAtICAgIGludCByYyA9IHhjX2h2bV9j cmVhdGVfaW9yZXFfc2VydmVyKHhlbl94YywgZG9tLAo+ID4gLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIVk1fSU9SRVFTUlZfQlVGSU9SRVFfQVRPTUlDLAo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpb3NlcnZpZCk7Cj4gPiArICAg IGludCByYyA9IHhlbmRldmljZW1vZGVsX2NyZWF0ZV9pb3JlcV9zZXJ2ZXIoeGVuX2Rtb2QsIGRv bSwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBI Vk1fSU9SRVFTUlZfQlVGSU9SRVFfQVRPTUlDLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlvc2VydmlkKTsKPiA+Cj4gPiAgICAgIGlmIChyYyA9 PSAwKSB7Cj4gPiAgICAgICAgICB0cmFjZV94ZW5faW9yZXFfc2VydmVyX2NyZWF0ZSgqaW9zZXJ2 aWQpOwo+ID4gQEAgLTM5Nyw3ICs1MzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQKPiB4ZW5fZGVz dHJveV9pb3JlcV9zZXJ2ZXIoZG9taWRfdCBkb20sCj4gPiAgICAgIH0KPiA+Cj4gPiAgICAgIHRy YWNlX3hlbl9pb3JlcV9zZXJ2ZXJfZGVzdHJveShpb3NlcnZpZCk7Cj4gPiAtICAgIHhjX2h2bV9k ZXN0cm95X2lvcmVxX3NlcnZlcih4ZW5feGMsIGRvbSwgaW9zZXJ2aWQpOwo+ID4gKyAgICB4ZW5k ZXZpY2Vtb2RlbF9kZXN0cm95X2lvcmVxX3NlcnZlcih4ZW5fZG1vZCwgZG9tLCBpb3NlcnZpZCk7 Cj4gPiAgfQo+ID4KPiA+ICBzdGF0aWMgaW5saW5lIGludCB4ZW5fZ2V0X2lvcmVxX3NlcnZlcl9p bmZvKGRvbWlkX3QgZG9tLAo+ID4gQEAgLTQxMiw5ICs1NDksOSBAQCBzdGF0aWMgaW5saW5lIGlu dCB4ZW5fZ2V0X2lvcmVxX3NlcnZlcl9pbmZvKGRvbWlkX3QKPiBkb20sCj4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmlvcmVxX2V2dGNobik7 Cj4gPiAgICAgIH0KPiA+Cj4gPiAtICAgIHJldHVybiB4Y19odm1fZ2V0X2lvcmVxX3NlcnZlcl9p bmZvKHhlbl94YywgZG9tLCBpb3NlcnZpZCwKPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaW9yZXFfcGZuLCBidWZpb3JlcV9wZm4sCj4gPiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmlvcmVxX2V2dGNobik7Cj4gPiArICAgIHJl dHVybiB4ZW5kZXZpY2Vtb2RlbF9nZXRfaW9yZXFfc2VydmVyX2luZm8oeGVuX2Rtb2QsIGRvbSwK PiBpb3NlcnZpZCwKPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpb3JlcV9wZm4sIGJ1ZmlvcmVxX3BmbiwKPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZpb3JlcV9ldnRjaG4pOwo+ID4gIH0KPiA+ Cj4gPiAgc3RhdGljIGlubGluZSBpbnQgeGVuX3NldF9pb3JlcV9zZXJ2ZXJfc3RhdGUoZG9taWRf dCBkb20sCj4gPiBAQCAtNDI2LDggKzU2Myw4IEBAIHN0YXRpYyBpbmxpbmUgaW50Cj4geGVuX3Nl dF9pb3JlcV9zZXJ2ZXJfc3RhdGUoZG9taWRfdCBkb20sCj4gPiAgICAgIH0KPiA+Cj4gPiAgICAg IHRyYWNlX3hlbl9pb3JlcV9zZXJ2ZXJfc3RhdGUoaW9zZXJ2aWQsIGVuYWJsZSk7Cj4gPiAtICAg IHJldHVybiB4Y19odm1fc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSh4ZW5feGMsIGRvbSwgaW9zZXJ2 aWQsCj4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUp Owo+ID4gKyAgICByZXR1cm4geGVuZGV2aWNlbW9kZWxfc2V0X2lvcmVxX3NlcnZlcl9zdGF0ZSh4 ZW5fZG1vZCwgZG9tLAo+IGlvc2VydmlkLAo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbmFibGUpOwo+ID4gIH0KPiA+Cj4gPiAgI2VuZGlmCj4g PiBkaWZmIC0tZ2l0IGEveGVuLWNvbW1vbi5jIGIveGVuLWNvbW1vbi5jCj4gPiBpbmRleCA3MDNl N2E1Li5hZTc2MTUwIDEwMDY0NAo+ID4gLS0tIGEveGVuLWNvbW1vbi5jCj4gPiArKysgYi94ZW4t Y29tbW9uLmMKPiA+IEBAIC0yNyw2ICsyNyw3IEBACj4gPgo+ID4gIHhjX2ludGVyZmFjZSAqeGVu X3hjOwo+ID4gIHhlbmZvcmVpZ25tZW1vcnlfaGFuZGxlICp4ZW5fZm1lbTsKPiA+ICt4ZW5kZXZp Y2Vtb2RlbF9oYW5kbGUgKnhlbl9kbW9kOwo+ID4KPiA+ICBzdGF0aWMgaW50IHN0b3JlX2Rldl9p bmZvKGludCBkb21pZCwgQ2hhcmRldiAqY3MsIGNvbnN0IGNoYXIgKnN0cmluZykKPiA+ICB7Cj4g PiBAQCAtMTI4LDYgKzEyOSwxMyBAQCBzdGF0aWMgaW50IHhlbl9pbml0KE1hY2hpbmVTdGF0ZSAq bXMpCj4gPiAgICAgICAgICB4Y19pbnRlcmZhY2VfY2xvc2UoeGVuX3hjKTsKPiA+ICAgICAgICAg IHJldHVybiAtMTsKPiA+ICAgICAgfQo+ID4gKyAgICB4ZW5fZG1vZCA9IHhlbmRldmljZW1vZGVs X29wZW4oMCwgMCk7Cj4gPiArICAgIGlmICh4ZW5fZG1vZCA9PSBOVUxMKSB7Cj4gPiArICAgICAg ICB4ZW5fcHZfcHJpbnRmKE5VTEwsIDAsICJjYW4ndCBvcGVuIHhlbiBkZXZpY2Vtb2RlbCBpbnRl cmZhY2VcbiIpOwo+ID4gKyAgICAgICAgeGVuZm9yZWlnbm1lbW9yeV9jbG9zZSh4ZW5fZm1lbSk7 Cj4gPiArICAgICAgICB4Y19pbnRlcmZhY2VfY2xvc2UoeGVuX3hjKTsKPiA+ICsgICAgICAgIHJl dHVybiAtMTsKPiA+ICsgICAgfQo+ID4gICAgICBxZW11X2FkZF92bV9jaGFuZ2Vfc3RhdGVfaGFu ZGxlcih4ZW5fY2hhbmdlX3N0YXRlX2hhbmRsZXIsCj4gTlVMTCk7Cj4gPgo+ID4gICAgICBnbG9i YWxfc3RhdGVfc2V0X29wdGlvbmFsKCk7Cj4gPiAtLQo+ID4gMi4xLjQKPiA+CgpfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBs aXN0Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2 ZWwK