From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 03/15] drm/i915: gvt: Introduce the basic architecture of GVT-g Date: Mon, 16 May 2016 13:03:01 +0100 Message-ID: <5739B6F5.7070808@linux.intel.com> References: <1463333573-25112-1-git-send-email-zhi.a.wang@intel.com> <1463333573-25112-4-git-send-email-zhi.a.wang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 5B2A76E271 for ; Mon, 16 May 2016 12:03:04 +0000 (UTC) In-Reply-To: <1463333573-25112-4-git-send-email-zhi.a.wang@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Zhi Wang , intel-gfx@lists.freedesktop.org, david.s.gordon@intel.com, joonas.lahtinen@linux.intel.com, kevin.tian@intel.com, zhiyuan.lv@intel.com List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKSnVzdCBhIGZldyBjb21tZW50cyBmcm9tIGEgbm9uLWFzc2lnbmVkIHJldmlld2VyLgoK T24gMTUvMDUvMTYgMTg6MzIsIFpoaSBXYW5nIHdyb3RlOgo+IFRoaXMgcGF0Y2ggaW50cm9kdWNl cyB0aGUgdmVyeSBiYXNpYyBmcmFtZXdvcmsgb2YgR1ZULWcgZGV2aWNlIG1vZGVsLAo+IGluY2x1 ZGVzIGJhc2ljIHByb3RvdHlwZXMsIGRlZmluaXRpb25zLCBpbml0aWFsaXphdGlvbi4KPgo+IHYz Ogo+IFRha2UgSm9vbmFzJyBjb21tZW50czoKPiAtIENoYW5nZSBmaWxlIG5hbWUgaTkxNV9ndnQu KiB0byBpbnRlbF9ndnQuKgo+IC0gTW92ZSBHVlQga2VybmVsIHBhcmFtZXRlciBpbnRvIGludGVs X2d2dC5jCj4gLSBSZW1vdmUgcmVkdW5kYW50IGRlYnVnIG1hY3Jvcwo+IC0gQ2hhbmdlIGVycm9y IGhhbmRsaW5nIHN0eWxlCj4gLSBBZGQgaW50cm9kdWN0aW9ucyBmb3Igc29tZSBzdHViIGZ1bmN0 aW9ucwo+IC0gSW50cm9kdWNlIGRybS9pOTE1X2d2dC5oLgo+Cj4gVGFrZSBLZXZpbidzIGNvbW1l bnRzOgo+IC0gTW92ZSBHVlQtZyBob3N0L2d1ZXN0IGNoZWNrIGludG8gaW50ZWxfdmd0X2JhbGxv b24gaW4gaTkxNV9nZW1fZ3R0LmMKPgo+IHYyOgo+IC0gSW50cm9kdWNlIGk5MTVfZ3Z0LmMuCj4g SXQncyBuZWNlc3NhcnkgdG8gaW50cm9kdWNlIHRoZSBzdHVicyBiZXR3ZWVuIGk5MTUgZHJpdmVy IGFuZCBHVlQtZyBob3N0LAo+IGFzIEdWVC1nIGNvbXBvbmVudHMgaXMgY29uZmlndXJhYmxlIGlu IGtlcm5lbCBjb25maWcuIFdoZW4gZGlzYWJsZWQsIHRoZQo+IHN0dWJzIGhlcmUgZG8gbm90aGlu Zy4KPgo+IFRha2UgSm9vbmFzJyBjb21tZW50czoKPiAtIFJlcGxhY2UgYm9vbGVhbiByZXR1cm4g dmFsdWUgd2l0aCBpbnQuCj4gLSBSZXBsYWNlIGN1c3RvbWl6ZWQgaW5mby93YXJuL2RlYnVnIG1h Y3JvcyB3aXRoIERSTSBtYWNyb3MuCj4gLSBEb2N1bWVudCBhbGwgbm9uLXN0YXRpYyBmdW5jdGlv bnMgbGlrZSBpOTE1Lgo+IC0gUmVtb3ZlIGVtcHR5IGFuZCB1bnVzZWQgZnVuY3Rpb25zLgo+IC0g UmVwbGFjZSBtYWdpYyBudW1iZXIgd2l0aCBtYXJjb3MuCj4gLSBTZXQgR1ZULWcgaW4ga2VybmVs IGNvbmZpZyB0byAibiIgYnkgZGVmYXVsdC4KPgo+IFNpZ25lZC1vZmYtYnk6IFpoaSBXYW5nIDx6 aGkuYS53YW5nQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25m aWcgICAgICAgICB8ICAxNSArKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICAgICB8ICAgNSArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvTWFrZWZpbGUgICAgfCAg IDUgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmggICAgIHwgIDM2ICsrKysr Kwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jICAgICAgIHwgMjA5ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQv Z3Z0LmggICAgICAgfCAgODUgKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2d2dC9oeXBlcmNhbGwuaCB8ICAzOCArKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dnQvbXB0LmggICAgICAgfCAgNTEgKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RtYS5jICAgICAgfCAgMTcgKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oICAgICAgfCAgMTIgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d2dC5jICAg ICB8IDEwNiArKysrKysrKysrKysrKysrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2d2dC5oICAgICB8ICA0OSArKysrKysrKwo+ICAgaW5jbHVkZS9kcm0vaTkxNV9ndnQuaCAgICAg ICAgICAgICAgIHwgIDMxICsrKysrKwo+ICAgMTMgZmlsZXMgY2hhbmdlZCwgNjU1IGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L01ha2VmaWxlCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9k cm0vaTkxNS9ndnQvZ3Z0LmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvZ3Z0LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndnQvaHlwZXJjYWxsLmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndnQvbXB0LmgKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndnQuYwo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d2dC5oCj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9kcm0vaTkxNV9ndnQu aAo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L0tjb25maWcgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gaW5kZXggMjlhMzJiMS4uNzgyYzk3YyAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvS2NvbmZpZwo+IEBAIC01Nyw2ICs1NywyMSBAQCBjb25maWcgRFJNX0k5MTVfVVNFUlBU Ugo+Cj4gICAJICBJZiBpbiBkb3VidCwgc2F5ICJZIi4KPgo+ICtjb25maWcgRFJNX0k5MTVfR1ZU Cj4gKyAgICAgICAgYm9vbCAiSW50ZWwgR1ZULWcgaG9zdCBkcml2ZXIiCj4gKyAgICAgICAgZGVw ZW5kcyBvbiBEUk1fSTkxNQo+ICsgICAgICAgIGRlZmF1bHQgbgo+ICsgICAgICAgIGhlbHAKPiAr ICAgICAgICAgIEVuYWJsaW5nIEdWVC1nIG1lZGlhdGVkIGdyYXBoaWNzIHBhc3N0aHJvdWdoIHRl Y2huaXF1ZSBmb3IgSW50ZWwgaTkxNQoKcGFzcy10aHJvdWdoCgo+ICsgICAgICAgICAgYmFzZWQg aW50ZWdyYXRlZCBncmFwaGljcyBjYXJkLiBXaXRoIEdWVC1nLCBpdCdzIHBvc3NpYmxlIHRvIGhh dmUgb25lCj4gKyAgICAgICAgICBpbnRlZ3JhdGVkIGk5MTUgZGV2aWNlIHNoYXJlZCBieSBtdWx0 aXBsZSBWTXMuIFBlcmZvcm1hbmNlIGNyaXRpY2FsCj4gKyAgICAgICAgICBvcHRlcmF0aW9ucyBz dWNoIGFzIGFwcGVydHVyZSBhY2Nlc3NlcyBhbmQgcmluZyBidWZmZXIgb3BlcmF0aW9ucwoKb3Bl cmF0aW9ucywgYXBlcnR1cmUKCj4gKyAgICAgICAgICBhcmUgcGFzcy10aHJvdWdoZWQgdG8gVk0s IHdpdGggYSBtaW5pbWFsIHNldCBvZiBjb25mbGljdGluZyByZXNvdXJjZXMKCnBhc3NlZC10aHJv dWdoIHRvIHRoZSBob3N0IG9yIGh5cGVydmlzb3IgPwoKPiArICAgICAgICAgIChlLmcuIGRpc3Bs YXkgc2V0dGluZ3MpIG1lZGlhdGVkIGJ5IHZHVCBkcml2ZXIuIFRoZSBiZW5lZml0IG9mIHZHVAo+ ICsgICAgICAgICAgaXMgb24gYm90aCB0aGUgcGVyZm9ybWFuY2UsIGdpdmVuIHRoYXQgZWFjaCBW TSBjb3VsZCBkaXJlY3RseSBvcGVyYXRlCj4gKyAgICAgICAgICBpdHMgYXBlcnR1cmUgc3BhY2Ug YW5kIHN1Ym1pdCBjb21tYW5kcyBsaWtlIHJ1bm5pbmcgb24gbmF0aXZlLCBhbmQKPiArICAgICAg ICAgIHRoZSBmZWF0dXJlIGNvbXBsZXRlbmVzcywgZ2l2ZW4gdGhhdCBhIHRydWUgR0VOIGhhcmR3 YXJlIGlzIGV4cG9zZWQuCj4gKwo+ICAgbWVudSAiZHJtL2k5MTUgRGVidWdnaW5nIgo+ICAgZGVw ZW5kcyBvbiBEUk1fSTkxNQo+ICAgZGVwZW5kcyBvbiBFWFBFUlQKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZQo+IGluZGV4IDYzYzRkMmIuLmU0ODE0NWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBA IC0xMDMsNiArMTAzLDExIEBAIGk5MTUteSArPSBpOTE1X3ZncHUubwo+ICAgIyBsZWdhY3kgaG9y cm9ycwo+ICAgaTkxNS15ICs9IGk5MTVfZG1hLm8KPgo+ICtpZmVxICgkKENPTkZJR19EUk1fSTkx NV9HVlQpLHkpCj4gK2k5MTUteSArPSBpbnRlbF9ndnQubwo+ICtpbmNsdWRlICQoc3JjKS9ndnQv TWFrZWZpbGUKPiArZW5kaWYKPiArCj4gICBvYmotJChDT05GSUdfRFJNX0k5MTUpICArPSBpOTE1 Lm8KPgo+ICAgQ0ZMQUdTX2k5MTVfdHJhY2VfcG9pbnRzLm8gOj0gLUkkKHNyYykKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L01ha2VmaWxlCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li5kMGYyMWE2Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2 dC9NYWtlZmlsZQo+IEBAIC0wLDAgKzEsNSBAQAo+ICtHVlRfRElSIDo9IGd2dAo+ICtHVlRfU09V UkNFIDo9IGd2dC5vCj4gKwo+ICtjY2ZsYWdzLXkgICAgICAgICAgICAgICAgICAgICAgKz0gLUkk KHNyYykgLUkkKHNyYykvJChHVlRfRElSKSAtV2FsbAo+ICtpOTE1LXkJCQkgICAgICAgKz0gJChh ZGRwcmVmaXggJChHVlRfRElSKS8sICQoR1ZUX1NPVVJDRSkpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9kZWJ1Zy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2Rl YnVnLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjViMDY3ZDIKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2RlYnVnLmgKPiBA QCAtMCwwICsxLDM2IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodChjKSAyMDExLTIwMTYgSW50ZWwg Q29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24g aXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmlu ZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJl IHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJu aXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsg Kgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5v dGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29m dHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xV RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ LAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhP TERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElB QklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJ U0UsIEFSSVNJTkcgRlJPTSwKPiArICogT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUg U09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKPiArICogU09GVFdB UkUuCj4gKyAqLwo+ICsKPiArI2lmbmRlZiBfX0dWVF9ERUJVR19IX18KPiArI2RlZmluZSBfX0dW VF9ERUJVR19IX18KPiArCj4gKyNkZWZpbmUgZ3Z0X2luZm8oZm10LCBhcmdzLi4uKSBcCj4gKwlE Uk1fSU5GTygiZ3Z0OiAiZm10LCAjI2FyZ3MpCj4gKwo+ICsjZGVmaW5lIGd2dF9lcnIoZm10LCBh cmdzLi4uKSBcCj4gKwlEUk1fRVJST1IoImd2dDogImZtdCwgIyNhcmdzKQo+ICsKPiArI2RlZmlu ZSBndnRfZGJnX2NvcmUoZm10LCBhcmdzLi4uKSBcCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJndnQ6 IGNvcmU6ICJmbXQsICMjYXJncykKPiArCj4gKyNlbmRpZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvZ3Z0LmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjcyY2EzMDEKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5jCj4gQEAgLTAsMCAr MSwyMDkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJl YnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiAr ICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmls ZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRv IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0 byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAq IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChp bmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBh bGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4K PiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJV VCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBC RSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFks IFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJ U0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiAr ICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KPiArI2luY2x1ZGUgPHhlbi94ZW4u aD4KPiArI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQuaD4KPiArCj4gKyNpbmNsdWRlICJndnQuaCIK PiArCj4gK3N0cnVjdCBpbnRlbF9ndnRfaG9zdCBpbnRlbF9ndnRfaG9zdDsKPiArCj4gK3N0YXRp YyBjb25zdCBjaGFyICogY29uc3Qgc3VwcG9ydGVkX2h5cGVydmlzb3JzW10gPSB7Cj4gKwlbSU5U RUxfR1ZUX0hZUEVSVklTT1JfWEVOXSA9ICJYRU4iLAo+ICsJW0lOVEVMX0dWVF9IWVBFUlZJU09S X0tWTV0gPSAiS1ZNIiwKPiArfTsKPiArCj4gKyNkZWZpbmUgTUIoeCkgKHggKiAxMDI0VUxMICog MTAyNFVMTCkKPiArI2RlZmluZSBHQih4KSAoeCAqIE1CKDEwMjQpKQo+ICsKPiArLyoKPiArICog VGhlIGxheW91dCBvZiBCQVIwIGluIEJEVzoKPiArICogfDwgLSBNTUlPIDJNQiAtPnw8LSBSZXNl cnZlZCA2TUIgLT58PC0gTUFYIEdUVCA4TUItPnwKPiArICoKPiArICogR1RUIG9mZnNldCBpbiBC QVIwIHN0YXJ0cyBmcm9tIDhNQiB0byAxNk1CLCBhbmQKPiArICogV2hhdGV2ZXIgR1RUIHNpemUg aXMgY29uZmlndXJlZCBpbiBCSU9TLAo+ICsgKiB0aGUgc2l6ZSBvZiBCQVIwIGlzIGFsd2F5cyAx Nk1CLiBUaGUgYWN0dWFsIGNvbmZpZ3VyZWQKPiArICogR1RUIHNpemUgY2FuIGJlIGZvdW5kIGlu IEdNQ0hfQ1RSTC4KPiArICovCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZ3Z0X2RldmljZV9pbmZv IGJyb2Fkd2VsbF9kZXZpY2VfaW5mbyA9IHsKPiArCS5tYXhfZ3R0X2dtX3N6ID0gR0IoNCksIC8q IDRHQiAqLwo+ICsJLmd0dF9zdGFydF9vZmZzZXQgPSBNQig4KSwgLyogOE1CICovCj4gKwkubWF4 X2d0dF9zaXplID0gTUIoOCksIC8qIDhNQiAqLwo+ICsJLmd0dF9lbnRyeV9zaXplID0gOCwKPiAr CS5ndHRfZW50cnlfc2l6ZV9zaGlmdCA9IDMsCj4gKwkuZ21hZHJfYnl0ZXNfaW5fY21kID0gOCwK PiArCS5tbWlvX3NpemUgPSBNQigyKSwgLyogMk1CICovCj4gKwkubW1pb19iYXIgPSAwLCAvKiBC QVIgMCAqLwo+ICsJLm1heF9zdXBwb3J0X3ZncHUgPSA4LAo+ICsJLm1heF9zdXJmYWNlX3NpemUg PSBNQigzNiksCj4gK307Cj4gKwo+ICtzdGF0aWMgaW50IGluaXRfZ3Z0X2hvc3Qodm9pZCkKPiAr ewo+ICsJaWYgKFdBUk4oaW50ZWxfZ3Z0X2hvc3QuaW5pdGlhbGl6ZWQsCj4gKwkJCQkiSW50ZWwg R1ZUIGhvc3QgaGFzIGJlZW4gaW5pdGlhbGl6ZWRcbiIpKQoKTWF5YmUgYWRkICJhbHJlYWR5IiBm b3IgZXh0cmEgY2xhcml0eT8KCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogWGVuIERP TSBVICovCj4gKwlpZiAoeGVuX2RvbWFpbigpICYmICF4ZW5faW5pdGlhbF9kb21haW4oKSkKPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlpZiAoeGVuX2luaXRpYWxfZG9tYWluKCkpIHsKPiAr CQkvKiBYZW4gRG9tMCAqLwo+ICsJCWludGVsX2d2dF9ob3N0Lm1wdCA9IHRyeV90aGVuX3JlcXVl c3RfbW9kdWxlKAo+ICsJCQkJc3ltYm9sX2dldCh4ZW5ndF9tcHQpLCAieGVuZ3QiKTsKPiArCQlp bnRlbF9ndnRfaG9zdC5oeXBlcnZpc29yX3R5cGUgPSBJTlRFTF9HVlRfSFlQRVJWSVNPUl9YRU47 Cj4gKwl9IGVsc2Ugewo+ICsJCS8qIG5vdCBpbiBYZW4uIFRyeSBLVk1HVCAqLwo+ICsJCWludGVs X2d2dF9ob3N0Lm1wdCA9IHRyeV90aGVuX3JlcXVlc3RfbW9kdWxlKAo+ICsJCQkJc3ltYm9sX2dl dChrdm1ndF9tcHQpLCAia3ZtIik7Cj4gKwkJaW50ZWxfZ3Z0X2hvc3QuaHlwZXJ2aXNvcl90eXBl ID0gSU5URUxfR1ZUX0hZUEVSVklTT1JfS1ZNOwo+ICsJfQo+ICsKPiArCWlmICghaW50ZWxfZ3Z0 X2hvc3QubXB0KSB7Cj4gKwkJZ3Z0X2VycigiRmFpbCB0byBsb2FkIGFueSBNUFQgbW9kdWxlcy5c biIpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCWlmICghaW50ZWxfZ3Z0X2h5 cGVydmlzb3JfZGV0ZWN0X2hvc3QoKSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlndnRf aW5mbygiUnVubmluZyB3aXRoIGh5cGVydmlzb3IgJXMgaW4gaG9zdCBtb2RlXG4iLAo+ICsJCQlz dXBwb3J0ZWRfaHlwZXJ2aXNvcnNbaW50ZWxfZ3Z0X2hvc3QuaHlwZXJ2aXNvcl90eXBlXSk7Cj4g Kwo+ICsJaWRyX2luaXQoJmludGVsX2d2dF9ob3N0Lmd2dF9pZHIpOwo+ICsJbXV0ZXhfaW5pdCgm aW50ZWxfZ3Z0X2hvc3QuZ3Z0X2lkcl9sb2NrKTsKPiArCj4gKwlpbnRlbF9ndnRfaG9zdC5pbml0 aWFsaXplZCA9IHRydWU7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbml0 X2RldmljZV9pbmZvKHN0cnVjdCBpbnRlbF9ndnQgKmd2dCkKPiArewo+ICsJaWYgKElTX0JST0FE V0VMTChndnQtPmRldl9wcml2KSkKPiArCQlndnQtPmRldmljZV9pbmZvID0gJmJyb2Fkd2VsbF9k ZXZpY2VfaW5mbzsKPiArCWVsc2UKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgZnJlZV9ndnRfZGV2aWNlKHN0cnVjdCBpbnRlbF9n dnQgKmd2dCkKPiArewo+ICsJbXV0ZXhfbG9jaygmaW50ZWxfZ3Z0X2hvc3QuZ3Z0X2lkcl9sb2Nr KTsKPiArCWlkcl9yZW1vdmUoJmludGVsX2d2dF9ob3N0Lmd2dF9pZHIsIGd2dC0+aWQpOwo+ICsJ bXV0ZXhfdW5sb2NrKCZpbnRlbF9ndnRfaG9zdC5ndnRfaWRyX2xvY2spOwo+ICsKPiArCXZmcmVl KGd2dCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaW50ZWxfZ3Z0ICphbGxvY19ndnRfZGV2 aWNlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc3RydWN0IGlu dGVsX2d2dCAqZ3Z0ID0gTlVMTDsKCkRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSBzaW5jZSBpdCBp cyBhc3NpZ25lZCB0byB1bmNvbmRpdGlvbmFsbHkgYmVsb3cuCgo+ICsJaW50IHJldDsKPiArCj4g KwlndnQgPSB2emFsbG9jKHNpemVvZigqZ3Z0KSk7CgpzdHJ1Y3QgaW50ZWxfZ3Z0IGRvZXMgbm90 IHNlZW0gdGhhdCBsYXJnZSAtIHdoeSBub3QgY2hlYXBlciBremFsbG9jID8KCj4gKwlpZiAoIWd2 dCkKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwltdXRleF9sb2NrKCZpbnRl bF9ndnRfaG9zdC5ndnRfaWRyX2xvY2spOwo+ICsJcmV0ID0gaWRyX2FsbG9jKCZpbnRlbF9ndnRf aG9zdC5ndnRfaWRyLCBndnQsIDAsIDAsIEdGUF9LRVJORUwpOwo+ICsJbXV0ZXhfdW5sb2NrKCZp bnRlbF9ndnRfaG9zdC5ndnRfaWRyX2xvY2spOwo+ICsKPiArCWlmIChyZXQgPCAwKQo+ICsJCWdv dG8gZXJyOwo+ICsKPiArCWd2dC0+aWQgPSByZXQ7Cj4gKwltdXRleF9pbml0KCZndnQtPmxvY2sp Owo+ICsJZ3Z0LT5kZXZfcHJpdiA9IGRldl9wcml2Owo+ICsJaWRyX2luaXQoJmd2dC0+dmdwdV9p ZHIpOwo+ICsKPiArCXJldHVybiBndnQ7Cj4gK2VycjoKPiArCWZyZWVfZ3Z0X2RldmljZShndnQp Owo+ICsJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2d2 dF9kZXN0cm95X2RldmljZSAtIGRlc3Ryb3kgYSBHVlQgZGV2aWNlCj4gKyAqIEBndnRfZGV2aWNl OiBndnQgZGV2aWNlCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBk cml2ZXIgdW5sb2FkaW5nIHN0YWdlLCB0byBkZXN0cm95IGEKPiArICogR1ZUIGRldmljZSBhbmQg ZnJlZSB0aGUgcmVsYXRlZCByZXNvdXJjZXMuCj4gKyAqCj4gKyAqIFJldHVybnM6Cj4gKyAqIE5v bmUKPiArICovCj4gK3ZvaWQgaW50ZWxfZ3Z0X2Rlc3Ryb3lfZGV2aWNlKHZvaWQgKmd2dF9kZXZp Y2UpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9ndnQgKmd2dCA9IChzdHJ1Y3QgaW50ZWxfZ3Z0ICop Z3Z0X2RldmljZTsKCkhtLCB3aHkgZG9lcyB0aGlzIGZ1bmN0aW9uIG5lZWQgdG8gdGFrZSBhIHZv aWQgKiBpbnN0ZWFkIG9mIHRoZSBjb3JyZWN0IAp0eXBlPwoKPiArCj4gKwlmcmVlX2d2dF9kZXZp Y2UoZ3Z0KTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2d2dF9jcmVhdGVfZGV2aWNlIC0g Y3JlYXRlIGEgR1ZUIGRldmljZQo+ICsgKiBAZGV2OiBkcm0gZGV2aWNlCj4gKyAqCj4gKyAqIFRo aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHRoZSBpbml0aWFsaXphdGlvbiBzdGFnZSwgdG8gY3Jl YXRlIGEKPiArICogR1ZUIGRldmljZSBhbmQgaW5pdGlhbGl6ZSBuZWNlc3NhcnkgR1ZUIGNvbXBv bmVudHMgZm9yIGl0Lgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBwb2ludGVyIHRvIHRoZSBp bnRlbCBndnQgZGV2aWNlIHN0cnVjdHVyZSwgZXJyb3IgcG9pbnRlciBpZiBmYWlsZWQuCj4gKyAq Lwo+ICt2b2lkICppbnRlbF9ndnRfY3JlYXRlX2RldmljZSh2b2lkICpkZXYpCj4gK3sKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVj dCBpbnRlbF9ndnQgKmd2dCA9IE5VTEw7CgpObyBuZWVkIHRvIGluaXRpYWxpemUuCgo+ICsJaW50 IHJldDsKPiArCj4gKwlpZiAoIWludGVsX2d2dF9ob3N0LmluaXRpYWxpemVkKSB7Cj4gKwkJcmV0 ID0gaW5pdF9ndnRfaG9zdCgpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiBFUlJfUFRSKHJl dCk7Cj4gKwl9Cj4gKwo+ICsJZ3Z0X2RiZ19jb3JlKCJjcmVhdGUgbmV3IGd2dCBkZXZpY2UsIGk5 MTUgZGV2X3ByaXY6ICVwXG4iLCBkZXZfcHJpdik7CgpQcm9iYWJseSBub3QgdGhhdCBpbnRlcmVz dGluZyB0byBsb2cgZGV2X3ByaXYgYWRkcmVzcyA/IENhbid0IHJlbWVtYmVyIApldmVyeSBzZWVp bmcgYW55IHBhcnQgb2YgdGhlIGRyaXZlciBkb2luZyBpdC4KCj4gKwo+ICsJZ3Z0ID0gYWxsb2Nf Z3Z0X2RldmljZShkZXZfcHJpdik7Cj4gKwlpZiAoSVNfRVJSKGd2dCkpIHsKPiArCQlyZXQgPSBQ VFJfRVJSKGd2dCk7Cj4gKwkJZ290byBvdXRfZXJyOwo+ICsJfQo+ICsKPiArCWd2dF9kYmdfY29y ZSgiaW5pdCBndnQgZGV2aWNlLCBpZCAlZFxuIiwgZ3Z0LT5pZCk7Cj4gKwo+ICsJcmV0ID0gaW5p dF9kZXZpY2VfaW5mbyhndnQpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dF9mcmVlX2d2dF9k ZXZpY2U7CgpUaGVyZSBpcyBzb21lIHJlZHVuZGFjeSBpbiBzdXBwb3J0ZWQgcGxhdGZvcm0gY2hl Y2tpbmcgYmV0d2VlbiAKaW5pdF9kZXZpY2VfaW5mbyBhbmQgaXNfc3VwcG9ydGVkX2RldmljZS4g SWYgeW91IGRvbid0IG5lZWQgYm90aCBwZXJoYXBzIAp0cnkgdG8gc2ltcGxpZnkgdGhlIGNvZGUg YSBiaXQgYnkgZWxpbWluYXRpbmcgb25lIG9mIHRoZW0/Cgo+ICsKPiArCWd2dF9kYmdfY29yZSgi Z3Z0IGRldmljZSBjcmVhdGlvbiBkb25lLCBpZCAlZFxuIiwgZ3Z0LT5pZCk7Cj4gKwo+ICsJcmV0 dXJuIGd2dDsKPiArCj4gK291dF9mcmVlX2d2dF9kZXZpY2U6Cj4gKwlmcmVlX2d2dF9kZXZpY2Uo Z3Z0KTsKPiArb3V0X2VycjoKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gK30KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2d2dC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Z0L2d2dC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwLi41ZWY5 ZTFiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d2dC9ndnQu aAo+IEBAIC0wLDAgKzEsODUgQEAKPiArLyoKPiArICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNiBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiArICogUGVybWlz c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0 YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3Vt ZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29m dHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlz dHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Np b24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBp bmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsg KiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwg SU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC SUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsg KiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9U SEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRI IFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQo+ICsgKiBT T0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9HVlRfSF8KPiArI2RlZmluZSBfR1ZUX0hf Cj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ ICsKPiArI2luY2x1ZGUgImRlYnVnLmgiCj4gKyNpbmNsdWRlICJoeXBlcmNhbGwuaCIKPiArCj4g KyNkZWZpbmUgR1ZUX01BWF9WR1BVIDgKPiArI2RlZmluZSBHVlRfQUxJR04oYWRkciwgc2l6ZSkg KChhZGRyKSAmICh+KCh0eXBlb2YoYWRkcikpKHNpemUpIC0gMSkpKQoKU2FtZSBhcyBleGlzdGlu ZyBrZXJuZWwncyBBTElHTiA/Cgo+ICsKPiArZW51bSB7Cj4gKwlJTlRFTF9HVlRfSFlQRVJWSVNP Ul9YRU4gPSAwLAo+ICsJSU5URUxfR1ZUX0hZUEVSVklTT1JfS1ZNLAo+ICt9Owo+ICsKPiArc3Ry dWN0IGludGVsX2d2dF9ob3N0IHsKPiArCWJvb2wgaW5pdGlhbGl6ZWQ7Cj4gKwlpbnQgaHlwZXJ2 aXNvcl90eXBlOwo+ICsJc3RydWN0IG11dGV4IGd2dF9pZHJfbG9jazsKPiArCXN0cnVjdCBpZHIg Z3Z0X2lkcjsKPiArCXN0cnVjdCBpbnRlbF9ndnRfbXB0ICptcHQ7Cj4gK307Cj4gKwo+ICtleHRl cm4gc3RydWN0IGludGVsX2d2dF9ob3N0IGludGVsX2d2dF9ob3N0Owo+ICsKPiArLyogRGVzY3Jp YmUgdGhlIGxpbWl0YXRpb24gb2YgSFcuKi8KPiArc3RydWN0IGludGVsX2d2dF9kZXZpY2VfaW5m byB7Cj4gKwl1NjQgbWF4X2d0dF9nbV9zejsKPiArCXUzMiBndHRfc3RhcnRfb2Zmc2V0Owo+ICsJ dTMyIGd0dF9lbmRfb2Zmc2V0Owo+ICsJdTMyIG1heF9ndHRfc2l6ZTsKPiArCXUzMiBndHRfZW50 cnlfc2l6ZTsKPiArCXUzMiBndHRfZW50cnlfc2l6ZV9zaGlmdDsKPiArCXUzMiBnbWFkcl9ieXRl c19pbl9jbWQ7Cj4gKwl1MzIgbW1pb19zaXplOwo+ICsJdTMyIG1taW9fYmFyOwo+ICsJdTMyIG1h eF9zdXBwb3J0X3ZncHU7Cj4gKwl1MzIgbWF4X3N1cmZhY2Vfc2l6ZTsKCldoYXQgc3VyZmFjZSBp cyB0aGlzPwoKTWF5YmUgYWRkIHNvbWUgY29tbWVudHMgZm9yIHRoZSBmaWVsZHM/Cgo+ICt9Owo+ ICsKPiArc3RydWN0IGludGVsX3ZncHUgewo+ICsJc3RydWN0IGludGVsX2d2dCAqZ3Z0Owo+ICsJ aW50IGlkOwo+ICsJaW50IHZtX2lkOwo+ICsJYm9vbCB3YXJuX3VudHJhY2s7Cj4gK307Cj4gKwo+ ICtzdHJ1Y3QgaW50ZWxfZ3Z0IHsKPiArCXN0cnVjdCBtdXRleCBsb2NrOwo+ICsJaW50IGlkOwo+ ICsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPiArCXN0cnVjdCBpZHIg dmdwdV9pZHI7Cj4gKwo+ICsJc3RydWN0IGludGVsX2d2dF9kZXZpY2VfaW5mbyAqZGV2aWNlX2lu Zm87Cj4gK307Cj4gKwo+ICsjaW5jbHVkZSAibXB0LmgiCj4gKwo+ICsjZW5kaWYKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2h5cGVyY2FsbC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi4yNTRkZjhiCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9oeXBlcmNhbGwuaAo+IEBAIC0wLDAgKzEsMzggQEAKPiArLyoKPiArICogQ29weXJp Z2h0KGMpIDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K PiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2Us IHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBt ZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwg Y29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhl Cj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9s bG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNl IGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElT IFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Mg T1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUg QVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFN QUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENP TlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1Ig SU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJ TkdTIElOIFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9HVlRfSFlQ RVJDQUxMX0hfCj4gKyNkZWZpbmUgX0dWVF9IWVBFUkNBTExfSF8KPiArCj4gKy8qCj4gKyAqIFNw ZWNpZmljIEdWVC1nIE1QVCBtb2R1bGVzIGZ1bmN0aW9uIGNvbGxlY3Rpb25zLiBDdXJyZW50bHkg R1ZULWcgc3VwcG9ydHMKPiArICogYm90aCBYZW4gYW5kIEtWTSBieSBwcm92aWRpbmcgZGVkaWNh dGVkIGh5cGVydmlzb3ItcmVsYXRlZCBNUFQgbW9kdWxlcy4KPiArICovCj4gK3N0cnVjdCBpbnRl bF9ndnRfbXB0IHsKPiArCWludCAoKmRldGVjdF9ob3N0KSh2b2lkKTsKPiArfTsKPiArCj4gK2V4 dGVybiBzdHJ1Y3QgaW50ZWxfZ3Z0X21wdCB4ZW5ndF9tcHQ7Cj4gK2V4dGVybiBzdHJ1Y3QgaW50 ZWxfZ3Z0X21wdCBrdm1ndF9tcHQ7Cj4gKwo+ICsjZW5kaWYgLyogX0dWVF9IWVBFUkNBTExfSF8g Ki8KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3Z0L21wdC5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAw MDAwMDAwLi5kM2YyM2NjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2d2dC9tcHQuaAo+IEBAIC0wLDAgKzEsNTEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0KGMp IDIwMTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoK PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAr ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9S UyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBP UiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU LCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElO IFRIRQo+ICsgKiBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9HVlRfTVBUX0hfCj4g KyNkZWZpbmUgX0dWVF9NUFRfSF8KPiArCj4gKy8qKgo+ICsgKiBET0M6IEh5cGVydmlzb3IgU2Vy dmljZSBBUElzIGZvciBHVlQtZyBDb3JlIExvZ2ljCj4gKyAqCj4gKyAqIFRoaXMgaXMgdGhlIGds dWUgbGF5ZXIgYmV0d2VlbiBzcGVjaWZpYyBoeXBlcnZpc29yIE1QVCBtb2R1bGVzIGFuZCBHVlQt ZyBjb3JlCj4gKyAqIGxvZ2ljLiBFYWNoIGtpbmQgb2YgaHlwZXJ2aXNvciBNUFQgbW9kdWxlIHBy b3ZpZGVzIGEgY29sbGVjdGlvbiBvZiBmdW5jdGlvbgo+ICsgKiBjYWxsYmFja3MgdmlhIGd2dF9r ZXJuZWxfZG0gYW5kIHdpbGwgYmUgYXR0YWNoZWQgdG8gR1ZUIGhvc3Qgd2hlbiBkcml2ZXIKPiAr ICogbG9hZGluZy4gR1ZULWcgY29yZSBsb2dpYyB3aWxsIGNhbGwgdGhlc2UgQVBJcyB0byByZXF1 ZXN0IHNwZWNpZmljIHNlcnZpY2VzCj4gKyAqIGZyb20gaHlwZXJ2aXNvci4KPiArICovCj4gKwo+ ICsvKioKPiArICogaW50ZWxfZ3Z0X2h5cGVydmlzb3JfZGV0ZWN0X2hvc3QgLSBjaGVjayBpZiBH VlQtZyBpcyBydW5uaW5nIHdpdGhpbgo+ICsgKiBoeXBlcnZpc29yIGhvc3QvcHJpdmlsZ2VkIGRv bWFpbgo+ICsgKgo+ICsgKiBSZXR1cm5zOgo+ICsgKiBaZXJvIG9uIHN1Y2Nlc3MsIC1FTk9ERVYg aWYgY3VycmVudCBrZXJuZWwgaXMgcnVubmluZyBpbnNpZGUgYSBWTQo+ICsgKi8KPiArc3RhdGlj IGlubGluZSBpbnQgaW50ZWxfZ3Z0X2h5cGVydmlzb3JfZGV0ZWN0X2hvc3Qodm9pZCkKPiArewo+ ICsJaWYgKFdBUk5fT04oIWludGVsX2d2dF9ob3N0Lm1wdCkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7 CgpJcyB0aGlzIGNvbmRpdGlvbiBpbXBvc3NpYmxlIGR1ZSB0aGUgY2hlY2sgaW4gaW5pdF9ndnRf aG9zdCA/Cgo+ICsJcmV0dXJuIGludGVsX2d2dF9ob3N0Lm1wdC0+ZGV0ZWN0X2hvc3QoKTsKPiAr fQo+ICsKPiArI2VuZGlmIC8qIF9HVlRfTVBUX0hfICovCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5j Cj4gaW5kZXggNTQ3MTAwZi4uNzk1YTVjZiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwo+ IEBAIC0zNSw2ICszNSw3IEBACj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICAjaW5jbHVk ZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUg ImludGVsX2d2dC5oIgo+ICAgI2luY2x1ZGUgImk5MTVfdmdwdS5oIgo+ICAgI2luY2x1ZGUgImk5 MTVfdHJhY2UuaCIKPiAgICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KPiBAQCAtMTI0NSwxOCArMTI0 NiwyMiBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQo+ICAgCQlnb3RvIG91dF9nZ3R0Owo+ICAgCX0KPgo+ICsJcmV0ID0g aW50ZWxfZ3Z0X2luaXQoZGV2KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBvdXRfZ2d0dDsKPiAr Cj4gICAJLyogV0FSTklORzogQXBwYXJlbnRseSB3ZSBtdXN0IGtpY2sgZmJkZXYgZHJpdmVycyBi ZWZvcmUgdmdhY29uLAo+ICAgCSAqIG90aGVyd2lzZSB0aGUgdmdhIGZiZGV2IGRyaXZlciBmYWxs cyBvdmVyLiAqLwo+ICAgCXJldCA9IGk5MTVfa2lja19vdXRfZmlybXdhcmVfZmIoZGV2X3ByaXYp Owo+ICAgCWlmIChyZXQpIHsKPiAgIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gcmVtb3ZlIGNvbmZs aWN0aW5nIGZyYW1lYnVmZmVyIGRyaXZlcnNcbiIpOwo+IC0JCWdvdG8gb3V0X2dndHQ7Cj4gKwkJ Z290byBvdXRfZ3Z0Owo+ICAgCX0KPgo+ICAgCXJldCA9IGk5MTVfa2lja19vdXRfdmdhY29uKGRl dl9wcml2KTsKPiAgIAlpZiAocmV0KSB7Cj4gICAJCURSTV9FUlJPUigiZmFpbGVkIHRvIHJlbW92 ZSBjb25mbGljdGluZyBWR0EgY29uc29sZVxuIik7Cj4gLQkJZ290byBvdXRfZ2d0dDsKPiArCQln b3RvIG91dF9ndnQ7Cj4gICAJfQo+Cj4gICAJcGNpX3NldF9tYXN0ZXIoZGV2LT5wZGV2KTsKPiBA QCAtMTI2Nyw3ICsxMjcyLDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgIAkJaWYgKHJldCkgewo+ICAgCQkJRFJN X0VSUk9SKCJmYWlsZWQgdG8gc2V0IERNQSBtYXNrXG4iKTsKPgo+IC0JCQlnb3RvIG91dF9nZ3R0 Owo+ICsJCQlnb3RvIG91dF9ndnQ7Cj4gICAJCX0KPiAgIAl9Cj4KPiBAQCAtMTI5Nyw3ICsxMzAy LDcgQEAgc3RhdGljIGludCBpOTE1X2RyaXZlcl9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgIAkJCQkgICAgIGFwZXJ0dXJlX3NpemUpOwo+ICAgCWlmICghZ2d0 dC0+bWFwcGFibGUpIHsKPiAgIAkJcmV0ID0gLUVJTzsKPiAtCQlnb3RvIG91dF9nZ3R0Owo+ICsJ CWdvdG8gb3V0X2d2dDsKPiAgIAl9Cj4KPiAgIAlnZ3R0LT5tdHJyID0gYXJjaF9waHlzX3djX2Fk ZChnZ3R0LT5tYXBwYWJsZV9iYXNlLAo+IEBAIC0xMzMwLDYgKzEzMzUsOCBAQCBzdGF0aWMgaW50 IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ Cj4gICAJcmV0dXJuIDA7Cj4KPiArb3V0X2d2dDoKPiArCWludGVsX2d2dF9jbGVhbnVwKGRldik7 Cj4gICBvdXRfZ2d0dDoKPiAgIAlpOTE1X2dndHRfY2xlYW51cF9odyhkZXYpOwo+Cj4gQEAgLTE0 ODgsNiArMTQ5NSw4IEBAIGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPgo+ICAgCWludGVsX2ZiZGV2X2ZpbmkoZGV2KTsKPgo+ICsJaW50ZWxfZ3Z0X2NsZWFu dXAoZGV2KTsKPiArCj4gICAJcmV0ID0gaTkxNV9nZW1fc3VzcGVuZChkZXYpOwo+ICAgCWlmIChy ZXQpIHsKPiAgIAkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gaWRsZSBoYXJkd2FyZTogJWRcbiIsIHJl dCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggNzJmMGIwMi4uYjI1NmJhNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNzAzLDYgKzE3MDMsMTAgQEAgc3RydWN0 IGk5MTVfd29ya2Fyb3VuZHMgewo+ICAgCXUzMiBod193aGl0ZWxpc3RfY291bnRbSTkxNV9OVU1f RU5HSU5FU107Cj4gICB9Owo+Cj4gK3N0cnVjdCBpOTE1X2d2dCB7Cj4gKwl2b2lkICpndnRfZGV2 aWNlOwoKSG0sIGFnYWluLCB3aHkgdm9pZCAqID8gV2lsbCBpdCBiZSBwb3NzaWJsZSBmb3IgdGhp cyB0byBob2xkIHNvbWUgbm9uIAppOTE1IHBvaW50ZXIgaW4gdGhlIGZ1dHVyZT8KCj4gK307Cj4g Kwo+ICAgc3RydWN0IGk5MTVfdmlydHVhbF9ncHUgewo+ICAgCWJvb2wgYWN0aXZlOwo+ICAgfTsK PiBAQCAtMTc0Miw2ICsxNzQ2LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewo+Cj4gICAJ c3RydWN0IGk5MTVfdmlydHVhbF9ncHUgdmdwdTsKPgo+ICsJc3RydWN0IGk5MTVfZ3Z0IGd2dDsK PiArCj4gICAJc3RydWN0IGludGVsX2d1YyBndWM7Cj4KPiAgIAlzdHJ1Y3QgaW50ZWxfY3NyIGNz cjsKPiBAQCAtMjg2OCw2ICsyODc0LDEyIEBAIHZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXRfX2xvY2tlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICB1NjQgaW50 ZWxfdW5jb3JlX2VkcmFtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK Pgo+ICAgdm9pZCBhc3NlcnRfZm9yY2V3YWtlc19pbmFjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiArc3RhdGljIGlubGluZSBib29sIGludGVsX2d2dF9hY3Rp dmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlyZXR1cm4gZGV2 X3ByaXYtPmd2dC5ndnRfZGV2aWNlID8gdHJ1ZSA6IGZhbHNlOwo+ICt9Cj4gKwo+ICAgc3RhdGlj IGlubGluZSBib29sIGludGVsX3ZncHVfYWN0aXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKPiAgIHsKPiAgIAlyZXR1cm4gZGV2X3ByaXYtPnZncHUuYWN0aXZlOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndnQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d2dC5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAw Li41N2I0OTEwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2d2dC5jCj4gQEAgLTAsMCArMSwxMDYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0KGMpIDIw MTEtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KPiArICoKPiAr ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBw ZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBp biB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGlt aXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVi bGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlz IHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBz aGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9m IHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVE ICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICog SU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBN RVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFO RCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBP UiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBP VEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAo+ICsgKiBPVVQgT0YgT1IgSU4gQ09OTkVD VElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRI RQo+ICsgKiBTT0ZUV0FSRS4KPiArICovCj4gKwo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiAr I2luY2x1ZGUgImludGVsX2d2dC5oIgo+ICsKPiArLyoqCj4gKyAqIERPQzogSW50ZWwgR1ZULWcg aG9zdCBzdXBwb3J0Cj4gKyAqCj4gKyAqIEludGVsIEdWVC1nIGlzIGEgZ3JhcGhpY3MgdmlydHVh bGl6YXRpb24gdGVjaG5vbG9neSB3aGljaCBzaGFyZXMgdGhlCj4gKyAqIEdQVSBhbW9uZyBtdWx0 aXBsZSB2aXJ0dWFsIG1hY2hpbmVzIG9uIGEgdGltZS1zaGFyaW5nIGJhc2lzLiBFYWNoCj4gKyAq IHZpcnR1YWwgbWFjaGluZSBpcyBwcmVzZW50ZWQgYSB2aXJ0dWFsIEdQVSAodkdQVSksIHdoaWNo IGhhcyBlcXVpdmFsZW50Cj4gKyAqIGZlYXR1cmVzIGFzIHRoZSB1bmRlcmx5aW5nIHBoeXNpY2Fs IEdQVSAocEdQVSksIHNvIGk5MTUgZHJpdmVyIGNhbiBydW4KPiArICogc2VhbWxlc3NseSBpbiBh IHZpcnR1YWwgbWFjaGluZS4gVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBlbmdsaWdodG1lbnRzCj4g KyAqIG9mIEdWVCBhbmQgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzIHVzZWQgYnkgR1ZUIGluIGk5 MTUgZHJpdmVyLgo+ICsgKi8KPiArCj4gK3N0cnVjdCBndnRfa2VybmVsX3BhcmFtcyBndnRfa3Bh cmFtcyA9IHsKPiArCS5lbmFibGUgPSBmYWxzZSwKPiArfTsKPiArCj4gKy8qIGk5MTUuZ3Z0X2Vu YWJsZSAqLwo+ICttb2R1bGVfcGFyYW1fbmFtZWQoZ3Z0X2VuYWJsZSwgZ3Z0X2twYXJhbXMuZW5h YmxlLCBib29sLCAwNjAwKTsKPiArTU9EVUxFX1BBUk1fREVTQyhndnRfZW5hYmxlLCAiRW5hYmxl IEludGVsIEdWVC1nIGhvc3Qgc3VwcG9ydCIpOwo+ICsKPiArc3RhdGljIGJvb2wgaXNfc3VwcG9y dGVkX2RldmljZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gKwo+ICsJaWYgKElTX0JST0FE V0VMTChkZXZfcHJpdikpCj4gKwkJcmV0dXJuIHRydWU7Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ ICt9Cj4gKwo+ICsvKioKPiArICogaW50ZWxfZ3Z0X2luaXQgLSBpbml0aWFsaXplIEdWVCBjb21w b25lbnRzCj4gKyAqIEBkZXY6IGRybSBkZXZpY2UgKgo+ICsgKgo+ICsgKiBUaGlzIGZ1bmN0aW9u IGlzIGNhbGxlZCBhdCB0aGUgaW5pdGlhbGl6YXRpb24gc3RhZ2UgdG8gaW5pdGlhbGl6ZSB0aGUK PiArICogR1ZUIGNvbXBvbmVudHMuCj4gKyAqLwo+ICtpbnQgaW50ZWxfZ3Z0X2luaXQoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ICsJdm9pZCAqZGV2aWNlOwo+ICsKPiArCWlmICghZ3Z0X2tw YXJhbXMuZW5hYmxlKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiR1ZULWcgaXMgZGlzYWJsZWQg Ynkga2VybmVsIHBhcmFtc1xuIik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwo+ICsJaWYgKCFp c19zdXBwb3J0ZWRfZGV2aWNlKGRldikpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJVbnN1cHBv cnRlZCBkZXZpY2UuIEdWVC1nIGlzIGRpc2FibGVkXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0K PiArCj4gKwlkZXZpY2UgPSBpbnRlbF9ndnRfY3JlYXRlX2RldmljZShkZXYpOwo+ICsJaWYgKElT X0VSUihkZXZpY2UpKSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiR1ZULWcgaXMgZGlzYWJsZWRc biIpOwo+ICsJCXJldHVybiAwOwo+ICsJfQo+ICsKPiArCWRldl9wcml2LT5ndnQuZ3Z0X2Rldmlj ZSA9IGRldmljZTsKPiArCURSTV9ERUJVR19EUklWRVIoIkdWVC1nIGlzIHJ1bm5pbmcgaW4gaG9z dCBtb2RlXG4iKTsKClNsaWdodGx5IHJlZHVuZGFudCBzaW5jZSBpbml0X2d2dF9ob3N0IGFscmVh ZHkgd291bGQgaGF2ZSBsb2dnZWQgYSAKZ3Z0X2luZm8gbWVzc2FnZSB0byB0aGUgc2FtZSBlZmZl Y3QuCgpPbiB0aGUgdG9waWMgb2Ygd2hpY2gsIHBlcmhhcHMgY29kZSB3b3VsZCBiZSBjbGVhcmVy IGlmIGluaXRfZ3Z0X2hvc3QgCndhcyBjYWxsZWQgZXhwbGljaXRseSBoZXJlIGZyb20gaW50ZWxf Z3Z0X2luaXQsIGFuZCBub3QgYmVoaW5kIHRoZSAKc2NlbmVzIGZyb20gaW50ZWxfZ3Z0X2NyZWF0 ZV9kZXZpY2UgPyBPciBpcyB0aGVyZSBhIHJlYXNvbiBpdCBoYXMgdG8gYmUgCmxpa2UgaXQgaXMg d2hpY2ggSSBtaXNzZWQ/Cgo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKioKPiArICog aW50ZWxfZ3Z0X2NsZWFudXAgLSBjbGVhbnVwIEdWVCBjb21wb25lbnRzIHdoZW4gaTkxNSBkcml2 ZXIgaXMgdW5sb2FkaW5nCj4gKyAqIEBkZXY6IGRybSBkZXZpY2UgKgo+ICsgKgo+ICsgKiBUaGlz IGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCB0aGUgaTkxNSBkcml2ZXIgdW5sb2FkaW5nIHN0YWdlLCB0 byBzaHV0ZG93bgo+ICsgKiBHVlQgY29tcG9uZW50cyBhbmQgcmVsZWFzZSB0aGUgcmVsYXRlZCBy ZXNvdXJjZXMuCj4gKyAqLwo+ICt2b2lkIGludGVsX2d2dF9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZGV2KTsKPiArCj4gKwlpZiAoIWludGVsX2d2dF9hY3RpdmUoZGV2X3ByaXYpKQo+ICsJ CXJldHVybjsKPiArCj4gKwlpbnRlbF9ndnRfZGVzdHJveV9kZXZpY2UoZGV2X3ByaXYtPmd2dC5n dnRfZGV2aWNlKTsKPiArCWRldl9wcml2LT5ndnQuZ3Z0X2RldmljZSA9IE5VTEw7Cj4gK30KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Z0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ndnQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMC4uZDliNTVhYzUwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d2dC5oCj4gQEAgLTAsMCArMSw0OSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQo YykgMjAxMS0yMDE2IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsg Kgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8g YW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFz c29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBk ZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiAr ICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dp bmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3Jh cGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv bnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJP VklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVT IE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VT IE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJB Q1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCj4gKyAqIE9VVCBPRiBPUiBJTiBD T05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg SU4gVEhFCj4gKyAqIFNPRlRXQVJFLgo+ICsgKi8KPiArCj4gKyNpZm5kZWYgX0lOVEVMX0dWVF9I Xwo+ICsjZGVmaW5lIF9JTlRFTF9HVlRfSF8KPiArCj4gKyNpZmRlZiBDT05GSUdfRFJNX0k5MTVf R1ZUCj4gKwo+ICsjaW5jbHVkZSA8ZHJtL2k5MTVfZ3Z0Lmg+Cj4gKwo+ICtzdHJ1Y3QgZ3Z0X2tl cm5lbF9wYXJhbXMgewo+ICsJYm9vbCBlbmFibGU7Cj4gK307Cj4gKwo+ICtleHRlcm4gc3RydWN0 IGd2dF9rZXJuZWxfcGFyYW1zIGd2dF9rcGFyYW1zOwo+ICsKPiArZXh0ZXJuIGludCBpbnRlbF9n dnRfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiArZXh0ZXJuIHZvaWQgaW50ZWxfZ3Z0 X2NsZWFudXAoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxp bmUgaW50IGludGVsX2d2dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gK3sKPiArCXJl dHVybiAwOwo+ICt9Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBpbnRlbF9ndnRfY2xlYW51cChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2KQo+ICt7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICsjZW5kaWYgLyog X0lOVEVMX0dWVF9IXyAqLwo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9pOTE1X2d2dC5oIGIv aW5jbHVkZS9kcm0vaTkxNV9ndnQuaAo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAw MDAwMC4uZTEyNjUzNgo+IC0tLSAvZGV2L251bGwKPiArKysgYi9pbmNsdWRlL2RybS9pOTE1X2d2 dC5oCj4gQEAgLTAsMCArMSwzMSBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQoYykgMjAxMS0yMDE2 IEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgo+ICsgKiBBbGwgUmlnaHRz IFJlc2VydmVkLgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRoaXMg c29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCj4gKyAqICJT b2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcKPiArICogd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5 LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLAo+ICsgKiBkaXN0cmlidXRlLCBzdWIgbGljZW5zZSwg YW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCj4gKyAqIHBlcm1pdCBw ZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVj dCB0bwo+ICsgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92 ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcg dGhlCj4gKyAqIG5leHQgcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVz IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zCj4gKyAqIG9mIHRoZSBTb2Z0d2FyZS4KPiArICoKPiAr ICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0Yg QU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVO VCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg Rk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIg SU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsg KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICovCj4gKyNp Zm5kZWYgX0k5MTVfR1ZUX0gKPiArI2RlZmluZSBfSTkxNV9HVlRfSAo+ICsKPiArZXh0ZXJuIHZv aWQgKmludGVsX2d2dF9jcmVhdGVfZGV2aWNlKHZvaWQgKmRldik7Cj4gK2V4dGVybiB2b2lkIGlu dGVsX2d2dF9kZXN0cm95X2RldmljZSh2b2lkICpndnRfZGV2aWNlKTsKPiArCj4gKyNlbmRpZiAv KiBfSTkxNV9HVlRfSCAqLwo+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=