From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Srivatsa, Anusha" Subject: Re: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Tue, 3 Jan 2017 18:59:11 +0000 Message-ID: <83F5C7385F545743AD4FB2A62F75B073019601EA@ORSMSX108.amr.corp.intel.com> References: <1482448344-6505-1-git-send-email-anusha.srivatsa@intel.com> <1482448344-6505-4-git-send-email-anusha.srivatsa@intel.com> <20161227175056.GB61164@mwajdecz-MOBL1.ger.corp.intel.com> <83F5C7385F545743AD4FB2A62F75B0730195EAAF@ORSMSX108.amr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 10AA56E117 for ; Tue, 3 Jan 2017 18:59:13 +0000 (UTC) In-Reply-To: <83F5C7385F545743AD4FB2A62F75B0730195EAAF@ORSMSX108.amr.corp.intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Srivatsa, Anusha" , "Wajdeczko, Michal" Cc: "intel-gfx@lists.freedesktop.org" , Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEludGVsLWdmeCBbbWFpbHRv OmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVoYWxmIE9mDQo+ U3JpdmF0c2EsIEFudXNoYQ0KPlNlbnQ6IE1vbmRheSwgSmFudWFyeSAyLCAyMDE3IDQ6MDkgUE0N Cj5UbzogV2FqZGVjemtvLCBNaWNoYWwgPE1pY2hhbC5XYWpkZWN6a29AaW50ZWwuY29tPg0KPkNj OiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBBbGV4IERhaSA8eXUuZGFpQGludGVs LmNvbT47IFBldGVyIEFudG9pbmUNCj48cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+DQo+U3ViamVj dDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSCAzLzhdIGRybS9pOTE1L2h1YzogQWRkIEh1QyBmdyBs b2FkaW5nIHN1cHBvcnQNCj4NCj4NCj4NCj4+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+ RnJvbTogV2FqZGVjemtvLCBNaWNoYWwNCj4+U2VudDogVHVlc2RheSwgRGVjZW1iZXIgMjcsIDIw MTYgOTo1MSBBTQ0KPj5UbzogU3JpdmF0c2EsIEFudXNoYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4NCj4+Q2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IEFsZXggRGFpIDx5 dS5kYWlAaW50ZWwuY29tPjsgUGV0ZXINCj4+QW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5j b20+DQo+PlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggMy84XSBkcm0vaTkxNS9odWM6 IEFkZCBIdUMgZncgbG9hZGluZw0KPj5zdXBwb3J0DQo+Pg0KPj5PbiBUaHUsIERlYyAyMiwgMjAx NiBhdCAwMzoxMjoxOVBNIC0wODAwLCBBbnVzaGEgU3JpdmF0c2Egd3JvdGU6DQo+Pj4gVGhlIEh1 QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19md19mZXRj aCgpIGlzDQo+Pj4gdXNlZCBmb3IgYm90aCBjYXNlcy4NCj4+Pg0KPj4+IEh1QyBsb2FkaW5nIG5l ZWRzIHRvIGJlIGJlZm9yZSBHdUMgbG9hZGluZy4gVGhlIFdPUENNIHNldHRpbmcgbXVzdCBiZQ0K Pj4+IGRvbmUgZWFybHkgYmVmb3JlIGxvYWRpbmcgYW55IG9mIHRoZW0uDQo+Pj4NCj4+PiB2Mjog cmViYXNlZCBvbi10b3Agb2YgZHJtLWludGVsLW5pZ2h0bHkuDQo+Pj4gICAgIHJlbW92ZWQgaWYo SEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBjYWxsLiAoRC5Hb3Jkb24pDQo+Pj4gICAgIHVwZGF0 ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lg0KPj4+IHYzOiByZWJhc2VkIHRvIGRybS1p bnRlbC1uaWdodGx5LCBjaGFuZ2VkIHRoZSBmaWxlIG5hbWUgZm9ybWF0IHRvDQo+Pj4gICAgIG1h dGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLg0KPj4+ICAgICBDaGFuZ2VkIGRldi0+ZGV2 X3ByaXZhdGUgdG8gdG9faTkxNSgpDQo+Pj4gdjQ6IG1vdmVkIGZ1bmN0aW9uIGJhY2sgdG8gd2hl cmUgaXQgd2FzLg0KPj4+ICAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLg0K Pj4+IHY1OiByZWJhc2VkICsgY29tbWVudCBjaGFuZ2VzLg0KPj4+IHY3OiByZWJhc2VkLg0KPj4+ IHY4OiByZWJhc2VkLg0KPj4+IHY5OiByZWJhc2VkLiBDaGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBj b3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0IHRoZQ0KPj4+IHJpZ2h0IHllYXIuQ29ycmVjdCB0 aGUgY29tbWVudHMscmVtb3ZlIHRoZSB1bndhbnRlZCBXQVJOIG1lc3NhZ2UsDQo+Pj4gcmVwbGFj ZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgpIHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCgp Lk1ha2UNCj4+PiB0aGUgcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24tZXh0ZXJuLg0KPj4+ IHYxMDogcmViYXNlZC4gVXBkYXRlIHRoZSBmaWxlIGNvbnN0cnVjdGlvbiBkb25lIGJ5IEh1Qy4g SXQgaXMgc2ltaWxhcg0KPj4+IHRvIEd1Qy5BZG9wdGVkIHRoZSBhcHByb2FjaCB1c2VkIGluLQ0K Pj4+IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xMDQzNTUvIDxUdnJ0 a28gVXJzdWxpbj4NCj4+PiB2MTE6IEZpeCB3YXJuaW5ncyByZW1vdmUgb2xkIGRlY2xhcmF0aW9u DQo+Pj4gdjEyOiBDaGFuZ2UgZGV2IHRvIGRldl9wcml2IGluIG1hY3JvIGRlZmluaXRpb24uDQo+ Pj4gQ29ycmVjdGVkIGNvbW1lbnRzLg0KPj4+IHYxMzogcmViYXNlZC4NCj4+PiB2MTQ6IHJlYmFz ZWQgb24gdG9wIG9mIGRybS10aXANCj4+PiB2MTU6IHJlYmFzZWQuIFVwZGF0ZWQgZnVuY3Rpb25z IGludGVsX2h1Y19sb2FkKCksaW50ZWxfaHVjX2luaXQoKSBhbmQNCj4+PiBpbnRlbF91Y19md19m ZXRjaCgpIHRvIGFjY2VwdCBkZXZfcHJpdiBpbnN0ZWFkIG9mIGRldi4gTW92ZWQgY29udGVudHMN Cj4+PiBvZiBpbnRlbF9odWMuaCB0byBpbnRlbF91Yy5oDQo+Pj4gdjE2OiBjaGFuZ2UgU0tMX0ZX XyB0byBTS0xfSFVDX0ZXXy4gQWRkIGludGVsXyBwcmVmaXggdG8NCj4+Z3VjX3dvcGNtX3NpemUo KS4NCj4+PiBSZW1vdmUgdW53YW50ZWQgY2hlY2tzIGluIGludGVsX3VjLmguIFJlbmFtZSBodWNf ZncgaW4gc3RydWN0DQo+Pj4gaW50ZWxfaHVjIHRvIHNpbXBseSBmdyB0byBhdm9pZCByZWR1bmRl bmN5Lg0KPj4+IHYxNzogcmViYXNlZC4NCj4+Pg0KPj4+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPg0KPj4+IFRlc3RlZC1ieTogWGlhbmcgSGFpaGFvIDxoYWlo YW8ueGlhbmdAaW50ZWwuY29tPg0KPj4+IFNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8 YW51c2hhLnNyaXZhdHNhQGludGVsLmNvbT4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8 eXUuZGFpQGludGVsLmNvbT4NCj4+PiBTaWduZWQtb2ZmLWJ5OiBQZXRlciBBbnRvaW5lIDxwZXRl ci5hbnRvaW5lQGludGVsLmNvbT4NCj4+PiAtLS0NCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgICAgICAgICAgIHwgICAxICsNCj4+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyAgICAgICAgIHwgICA0ICstDQo+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICAgICB8ICAgMyArLQ0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1 Y19yZWcuaCAgICAgfCAgIDMgKw0KPj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf bG9hZGVyLmMgfCAgMTEgKy0NCj4+PiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9h ZGVyLmMgfCAyNjMNCj4+KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+PiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCAgICAgICAgIHwgIDE4ICsrKw0KPj4+ICA3IGZp bGVzIGNoYW5nZWQsIDI5NiBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKSAgY3JlYXRlIG1v ZGUNCj4+PiAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jDQo+ Pj4NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUNCj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGluZGV4IDUxOTY1MDkuLjQ1YWUxMjQgMTAw NjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUNCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQ0KPj4+IEBAIC01Nyw2ICs1Nyw3IEBAIGk5MTUt eSArPSBpOTE1X2NtZF9wYXJzZXIubyBcICAjIGdlbmVyYWwtcHVycG9zZQ0KPj4+IG1pY3JvY29u dHJvbGxlciAoR3VDKSBzdXBwb3J0ICBpOTE1LXkgKz0gaW50ZWxfdWMubyBcDQo+Pj4gIAkgIGlu dGVsX2d1Y19sb2FkZXIubyBcDQo+Pj4gKwkgIGludGVsX2h1Y19sb2FkZXIubyBcDQo+Pj4gIAkg IGk5MTVfZ3VjX3N1Ym1pc3Npb24ubw0KPj4+DQo+Pj4gICMgYXV0b2dlbmVyYXRlZCBudWxsIHJl bmRlciBzdGF0ZQ0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGluZGV4IDY0Mjg1ODgu Ljg1YTQ3YzIgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu Yw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMNCj4+PiBAQCAtNjAw LDYgKzYwMCw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3QNCj4+ PiBkcm1fZGV2aWNlDQo+PipkZXYpDQo+Pj4gIAlpZiAocmV0KQ0KPj4+ICAJCWdvdG8gY2xlYW51 cF9pcnE7DQo+Pj4NCj4+PiArCWludGVsX2h1Y19pbml0KGRldl9wcml2KTsNCj4+PiAgCWludGVs X2d1Y19pbml0KGRldl9wcml2KTsNCj4+Pg0KPj4+ICAJcmV0ID0gaTkxNV9nZW1faW5pdChkZXZf cHJpdik7DQo+Pj4gQEAgLTYyNyw2ICs2MjgsNyBAQCBzdGF0aWMgaW50IGk5MTVfbG9hZF9tb2Rl c2V0X2luaXQoc3RydWN0DQo+Pj4gZHJtX2RldmljZQ0KPj4qZGV2KQ0KPj4+ICAJCURSTV9FUlJP UigiZmFpbGVkIHRvIGlkbGUgaGFyZHdhcmU7IGNvbnRpbnVpbmcgdG8gdW5sb2FkIVxuIik7DQo+ Pj4gIAlpOTE1X2dlbV9maW5pKGRldl9wcml2KTsNCj4+PiAgY2xlYW51cF9pcnE6DQo+Pj4gKwlp bnRlbF9odWNfZmluaShkZXYpOw0KPj4+ICAJaW50ZWxfZ3VjX2ZpbmkoZGV2X3ByaXYpOw0KPj4+ ICAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsNCj4+PiAgCWludGVsX3RlYXJkb3duX2dtYnVzKGRl dl9wcml2KTsNCj4+PiBAQCAtMTMxMyw3ICsxMzE1LDcgQEAgdm9pZCBpOTE1X2RyaXZlcl91bmxv YWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4+Pg0KPj4+ICAJLyogRmx1c2ggYW55IG91dHN0 YW5kaW5nIHVucGluX3dvcmsuICovDQo+Pj4gIAlkcmFpbl93b3JrcXVldWUoZGV2X3ByaXYtPndx KTsNCj4+PiAtDQo+Pj4gKwlpbnRlbF9odWNfZmluaShkZXYpOw0KPj4+ICAJaW50ZWxfZ3VjX2Zp bmkoZGV2X3ByaXYpOw0KPj4+ICAJaTkxNV9nZW1fZmluaShkZXZfcHJpdik7DQo+Pj4gIAlpbnRl bF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOw0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oIGluZGV4IDFhOTE0MDkuLjdhYzc3MzAgMTAwNjQ0DQo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgNCj4+PiBAQCAtMjE0Nyw2ICsyMTQ3LDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ew0KPj4+DQo+Pj4gIAlzdHJ1Y3QgaW50ZWxfZ3Z0ICpndnQ7DQo+Pj4NCj4+PiArCXN0cnVjdCBp bnRlbF9odWMgaHVjOw0KPj4+ICAJc3RydWN0IGludGVsX2d1YyBndWM7DQo+Pj4NCj4+PiAgCXN0 cnVjdCBpbnRlbF9jc3IgY3NyOw0KPj4+IEBAIC0yOTIxLDcgKzI5MjIsNyBAQCBpbnRlbF9pbmZv KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4+PiAgI2RlZmluZSBI QVNfR1VDKGRldl9wcml2KQkoKGRldl9wcml2KS0+aW5mby5oYXNfZ3VjKQ0KPj4+ICAjZGVmaW5l IEhBU19HVUNfVUNPREUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkNCj4+PiAgI2RlZmlu ZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KQkoSEFTX0dVQyhkZXZfcHJpdikpDQo+Pj4gLQ0KPj4+ ICsjZGVmaW5lIEhBU19IVUNfVUNPREUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkNCj4+ PiAgI2RlZmluZSBIQVNfUkVTT1VSQ0VfU1RSRUFNRVIoZGV2X3ByaXYpDQo+Pj4gKChkZXZfcHJp diktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQ0KPj4+DQo+Pj4gICNkZWZpbmUgSEFTX1BP T0xFRF9FVShkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX3Bvb2xlZF9ldSkNCj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVnLmgNCj4+PiBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oDQo+Pj4gaW5kZXggNWU2MzhmYy4uZjk4 MjlmNiAxMDA2NDQNCj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oDQo+Pj4gQEAg LTYxLDkgKzYxLDEyIEBADQo+Pj4gICNkZWZpbmUgICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAg KDggPDwgMTYpDQo+Pj4gICNkZWZpbmUgRE1BX0NPUFlfU0laRQkJCV9NTUlPKDB4YzMxMCkNCj4+ PiAgI2RlZmluZSBETUFfQ1RSTAkJCV9NTUlPKDB4YzMxNCkNCj4+PiArI2RlZmluZSAgIEhVQ19V S0VSTkVMCQkJICAoMTw8OSkNCj4+PiAgI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8NCkNCj4+ PiAgI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8PDApDQo+Pj4gICNkZWZpbmUgRE1BX0dVQ19X T1BDTV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkNCj4+PiArI2RlZmluZSAgIEhVQ19MT0FESU5HX0FH RU5UX1ZDUgkJICAoMDw8MSkNCj4+PiArI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX0dVQwkJ ICAoMTw8MSkNCj4+PiAgI2RlZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAw CS8qIDUxMktCICovDQo+Pj4gICNkZWZpbmUgR1VDX01BWF9JRExFX0NPVU5UCQlfTU1JTygweEMz RTQpDQo+Pj4NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3Vj X2xvYWRlci5jDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMN Cj4+PiBpbmRleCAwNmUzZTVjLi44Yzc3ZTk0IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYw0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYw0KPj4+IEBAIC0zMDksOCArMzA5LDggQEAgc3RhdGljIGlu dCBndWNfdWNvZGVfeGZlcl9kbWEoc3RydWN0DQo+Pj4gZHJtX2k5MTVfcHJpdmF0ZQ0KPj4qZGV2 X3ByaXYsDQo+Pj4gIAlJOTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BB Q0VfV09QQ00pOw0KPj4+DQo+Pj4gIAkvKiBGaW5hbGx5IHN0YXJ0IHRoZSBETUEgKi8NCj4+PiAt CUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShVT1NfTU9WRSB8DQo+PlNU QVJUX0RNQSkpOw0KPj4+IC0NCj4+PiArCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklU X0VOQUJMRShVT1NfTU9WRSB8DQo+PlNUQVJUX0RNQSkgfA0KPj4+ICsJCV9NQVNLRURfQklUX0RJ U0FCTEUoSFVDX1VLRVJORUwpKTsNCj4+PiAgCS8qDQo+Pj4gIAkgKiBXYWl0IGZvciB0aGUgRE1B IHRvIGNvbXBsZXRlICYgdGhlIEd1QyB0byBzdGFydCB1cC4NCj4+PiAgCSAqIE5COiBEb2NzIHJl Y29tbWVuZCBub3QgdXNpbmcgdGhlIGludGVycnVwdCBmb3IgY29tcGxldGlvbi4NCj4+PiBAQCAt MzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0cnVjdA0KPj4+ IGRybV9pOTE1X3ByaXZhdGUNCj4+KmRldl9wcml2LA0KPj4+ICAJcmV0dXJuIHJldDsNCj4+PiAg fQ0KPj4+DQo+Pj4gLXN0YXRpYyB1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQ0KPj4+ICt1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQ0KPj4+ICB7DQo+Pj4gIAl1MzIgd29wY21fc2l6ZSA9 IEdVQ19XT1BDTV9UT1A7DQo+Pj4NCj4+PiBAQCAtMzcyLDcgKzM3Miw3IEBAIHN0YXRpYyBpbnQg Z3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4+KmRldl9wcml2KQ0KPj4+ ICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOw0K Pj4+DQo+Pj4gIAkvKiBpbml0IFdPUENNICovDQo+Pj4gLQlJOTE1X1dSSVRFKEdVQ19XT1BDTV9T SVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOw0KPj4+ICsJSTkxNV9XUklURShHVUNfV09Q Q01fU0laRSwgaW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsNCj4+PiAgCUk5MTVfV1JJ VEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsDQo+PkdVQ19XT1BDTV9PRkZTRVRfVkFMVUUpOw0KPj4+ DQo+Pj4gIAkvKiBFbmFibGUgTUlBIGNhY2hpbmcuIEd1QyBjbG9jayBnYXRpbmcgaXMgZGlzYWJs ZWQuICovIEBAIC01MTEsNg0KPj4+ICs1MTEsNyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikNCj4+PiAgCQlpZiAoZXJyKQ0KPj4+ICAJCQln b3RvIGZhaWw7DQo+Pj4NCj4+PiArCQlpbnRlbF9odWNfbG9hZChkZXZfcHJpdik7DQo+Pj4gIAkJ ZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOw0KPj4+ICAJCWlmICghZXJyKQ0KPj4+ICAJ CQlicmVhazsNCj4+PiBAQCAtNjU4LDcgKzY1OSw3IEBAIHZvaWQgaW50ZWxfdWNfZndfZmV0Y2go c3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4+KmRldl9wcml2LA0KPj4+ICAJCXNpemUgPSB1Y19m dy0+aGVhZGVyX3NpemUgKyB1Y19mdy0+dWNvZGVfc2l6ZTsNCj4+Pg0KPj4+ICAJCS8qIFRvcCAz Mmsgb2YgV09QQ00gaXMgcmVzZXJ2ZWQgKDhLIHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4NCj4+ Ki8NCj4+PiAtCQlpZiAoc2l6ZSA+IGd1Y193b3BjbV9zaXplKGRldl9wcml2KSkgew0KPj4+ICsJ CWlmIChzaXplID4gaW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKSB7DQo+Pj4gIAkJCURS TV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbg0KPj5XT1BDTVxuIik7DQo+ Pj4gIAkJCWdvdG8gZmFpbDsNCj4+PiAgCQl9DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYw0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaHVjX2xvYWRlci5jDQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiBpbmRleCAw MDAwMDAwLi45OGQ2MzFjDQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYw0KPj4+IEBAIC0wLDAgKzEsMjYzIEBADQo+Pj4g Ky8qDQo+Pj4gKyAqIENvcHlyaWdodCAoYykgMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbg0KPj4+ICsg Kg0KPj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbg0KPj4+ICtvYnRhaW5pbmcgYQ0KPj4+ICsgKiBjb3B5IG9mIHRoaXMgc29m dHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlDQo+Pj4gKyJTb2Z0 d2FyZSIpLA0KPj4+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dA0KPj4+ICtsaW1pdGF0aW9uDQo+Pj4gKyAqIHRoZSByaWdo dHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLA0KPj4+ ICtzdWJsaWNlbnNlLA0KPj4+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJl LCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQ0KPj4+ICt0aGUNCj4+PiArICogU29mdHdh cmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0 aW9uczoNCj4+PiArICoNCj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZw0KPj4+ICt0aGUgbmV4dA0KPj4+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwN Cj4+PiArcG9ydGlvbnMgb2YgdGhlDQo+Pj4gKyAqIFNvZnR3YXJlLg0KPj4+ICsgKg0KPj4+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwNCj4+PiArRVhQUkVTUyBPUg0KPj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQo+Pj4gK01FUkNIQU5UQUJJTElUWSwN Cj4+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PDQo+PkVWRU5UDQo+Pj4gK1NIQUxMDQo+Pj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLA0KPj5EQU1BR0VTDQo+ Pj4gK09SIE9USEVSDQo+Pj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0Yg Q09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPj4+ICtBUklTSU5HDQo+Pj4gKyAqIEZST00s IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IN Cj4+PiArT1RIRVIgREVBTElOR1MNCj4+PiArICogSU4gVEhFIFNPRlRXQVJFLg0KPj4+ICsgKg0K Pj4+ICsgKi8NCj4+PiArI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+DQo+Pj4gKyNpbmNsdWRl ICJpOTE1X2Rydi5oIg0KPj4+ICsjaW5jbHVkZSAiaW50ZWxfdWMuaCINCj4+PiArDQo+Pj4gKy8q Kg0KPj4+ICsgKiBET0M6IEh1QyBGaXJtd2FyZQ0KPj4+ICsgKg0KPj4+ICsgKiBNb3RpdmF0aW9u Og0KPj4+ICsgKiBHRU45IGludHJvZHVjZXMgYSBuZXcgZGVkaWNhdGVkIGZpcm13YXJlIGZvciB1 c2FnZSBpbiBtZWRpYSBIRVZDDQo+Pj4gKyhIaWdoDQo+Pj4gKyAqIEVmZmljaWVuY3kgVmlkZW8g Q29kaW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUNCj4+PiArZmlybXdhcmUN Cj4+PiArICogY2FwYWJpbGl0aWVzIGJ5IGFkZGluZyBIdUMgc3BlY2lmaWMgY29tbWFuZHMgdG8g YmF0Y2ggYnVmZmVycy4NCj4+PiArICoNCj4+PiArICogSW1wbGVtZW50YXRpb246DQo+Pj4gKyAq IFRoZSBzYW1lIGZpcm13YXJlIGxvYWRlciBpcyB1c2VkIGFzIHRoZSBHdUMuIEhvd2V2ZXIsIHRo ZSBhY3R1YWwNCj4+PiArICogbG9hZGluZyB0byBIVyBpcyBkZWZlcnJlZCB1bnRpbCBHRU0gaW5p dGlhbGl6YXRpb24gaXMgZG9uZS4NCj4+PiArICoNCj4+PiArICogTm90ZSB0aGF0IEh1QyBmaXJt d2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuDQo+Pj4gKyAqLw0K Pj4+ICsNCj4+PiArI2RlZmluZSBTS0xfSFVDX0ZXX01BSk9SIDAxDQo+Pj4gKyNkZWZpbmUgU0tM X0hVQ19GV19NSU5PUiAwNw0KPj4+ICsjZGVmaW5lIFNLTF9CTERfTlVNIDEzOTgNCj4+PiArDQo+ Pj4gKyNkZWZpbmUgSFVDX0ZXX1BBVEgocGxhdGZvcm0sIG1ham9yLCBtaW5vciwgYmxkX251bSkg XA0KPj4+ICsJImk5MTUvIiBfX3N0cmluZ2lmeShwbGF0Zm9ybSkgIl9odWNfdmVyIiBfX3N0cmlu Z2lmeShtYWpvcikgIl8iIFwNCj4+PiArCV9fc3RyaW5naWZ5KG1pbm9yKSAiXyIgX19zdHJpbmdp ZnkoYmxkX251bSkgIi5iaW4iDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIEk5MTVfU0tMX0hVQ19VQ09E RSBIVUNfRldfUEFUSChza2wsIFNLTF9IVUNfRldfTUFKT1IsIFwNCj4+PiArCVNLTF9IVUNfRldf TUlOT1IsIFNLTF9CTERfTlVNKQ0KPj4+ICtNT0RVTEVfRklSTVdBUkUoSTkxNV9TS0xfSFVDX1VD T0RFKTsNCj4+PiArDQo+Pj4gKy8qKg0KPj4+ICsgKiBodWNfdWNvZGVfeGZlcigpIC0gRE1BJ3Mg dGhlIGZpcm13YXJlDQo+Pj4gKyAqIEBkZXZfcHJpdjogdGhlIGRybSBkZXZpY2UNCj4+PiArICoN Cj4+PiArICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZ2VtIG9iamVjdCBjb250YWluaW5nIHRo ZSBmaXJtd2FyZSwgc2V0cw0KPj4+ICt1cCB0aGUgRE1BDQo+Pg0KPj5IbW0sIHRoaXMgZnVuY3Rp b24gdGFrZXMganVzdCBkZXZfcHJpdi4uLg0KPg0KPk9vcHMuLi4uIHdpbGwgY2hhbmdlIHRoZSBj b21tZW50Lg0KPg0KPkFudXNoYQ0KPj4NCj4+PiArICogZW5naW5lIE1NSU8sIHRyaWdnZXJzIHRo ZSBETUEgb3BlcmF0aW9uIGFuZCB3YWl0cyBmb3IgaXQgdG8gZmluaXNoLg0KPj4+ICsgKg0KPj4+ ICsgKiBUcmFuc2ZlciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkg dGhlIG1pY3JvY29udHJvbGxlci4NCj4+PiArICoNCj4+PiArICogUmV0dXJuOiAwIG9uIHN1Y2Nl c3MsIG5vbi16ZXJvIG9uIGZhaWx1cmUgICovIHN0YXRpYyBpbnQNCj4+PiAraHVjX3Vjb2RlX3hm ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7DQo+Pj4gKwlzdHJ1Y3QgaW50 ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3Ow0KPj4+ICsJc3RydWN0IGk5MTVf dm1hICp2bWE7DQo+Pj4gKwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7DQo+Pj4gKwl1MzIgc2l6 ZTsNCj4+PiArCWludCByZXQ7DQo+Pj4gKw0KPj4+ICsJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3Nl dF90b19ndHRfZG9tYWluKGh1Y19mdy0+dWNfZndfb2JqLCBmYWxzZSk7DQo+Pj4gKwlpZiAocmV0 KSB7DQo+Pj4gKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJl dCk7DQo+Pj4gKwkJcmV0dXJuIHJldDsNCj4+PiArCX0NCj4+PiArDQo+Pj4gKwl2bWEgPSBpOTE1 X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT51Y19md19vYmosIE5VTEwsIDAsIDAsIDApOw0K Pj4+ICsJaWYgKElTX0VSUih2bWEpKSB7DQo+Pj4gKwkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZh aWxlZCAlZFxuIiwgKGludClQVFJfRVJSKHZtYSkpOw0KPj4+ICsJCXJldHVybiBQVFJfRVJSKHZt YSk7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJLyogSW52YWxpZGF0ZSBHdUMgVExCIHRvIGxldCBH dUMgdGFrZSB0aGUgbGF0ZXN0IHVwZGF0ZXMgdG8gR1RULiAqLw0KPj4+ICsJSTkxNV9XUklURShH RU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsNCj4+PiArDQo+Pj4gKwlpbnRlbF91bmNv cmVfZm9yY2V3YWtlX2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7DQo+Pj4gKw0KPj4+ICsJ LyogaW5pdCBXT1BDTSAqLw0KPj4+ICsJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwgaW50ZWxf Z3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsNCj4+PiArCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BD TV9PRkZTRVQsDQo+PkdVQ19XT1BDTV9PRkZTRVRfVkFMVUUgfA0KPj4+ICsJCQlIVUNfTE9BRElO R19BR0VOVF9HVUMpOw0KPj4+ICsNCj4+PiArCS8qIFNldCB0aGUgc291cmNlIGFkZHJlc3MgZm9y IHRoZSB1Q29kZSAqLw0KPj4+ICsJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaHVj X2Z3LT5oZWFkZXJfb2Zmc2V0Ow0KPj4+ICsJSTkxNV9XUklURShETUFfQUREUl8wX0xPVywgbG93 ZXJfMzJfYml0cyhvZmZzZXQpKTsNCj4+PiArCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9ISUdILCB1 cHBlcl8zMl9iaXRzKG9mZnNldCkgJiAweEZGRkYpOw0KPj4+ICsNCj4+PiArCS8qIEhhcmR3YXJl IGRvZXNuJ3QgbG9vayBhdCBkZXN0aW5hdGlvbiBhZGRyZXNzIGZvciBIdUMuIFNldCBpdCB0byAw LA0KPj4+ICsJICogYnV0IHN0aWxsIHByb2dyYW0gdGhlIGNvcnJlY3QgYWRkcmVzcyBzcGFjZS4N Cj4+PiArCSAqLw0KPj4+ICsJSTkxNV9XUklURShETUFfQUREUl8xX0xPVywgMCk7DQo+Pj4gKwlJ OTE1X1dSSVRFKERNQV9BRERSXzFfSElHSCwgRE1BX0FERFJFU1NfU1BBQ0VfV09QQ00pOw0KPj4+ ICsNCj4+PiArCXNpemUgPSBodWNfZnctPmhlYWRlcl9zaXplICsgaHVjX2Z3LT51Y29kZV9zaXpl Ow0KPj4+ICsJSTkxNV9XUklURShETUFfQ09QWV9TSVpFLCBzaXplKTsNCj4+PiArDQo+Pj4gKwkv KiBTdGFydCB0aGUgRE1BICovDQo+Pj4gKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJ VF9FTkFCTEUoSFVDX1VLRVJORUwgfA0KPj5TVEFSVF9ETUEpKTsNCj4+PiArDQo+Pj4gKwkvKiBX YWl0IGZvciBETUEgdG8gZmluaXNoICovDQo+Pj4gKwlyZXQgPSB3YWl0X2ZvcigoSTkxNV9SRUFE KERNQV9DVFJMKSAmIFNUQVJUX0RNQSkgPT0gMCwgMTAwKTsNCj4+PiArDQo+Pj4gKwlEUk1fREVC VUdfRFJJVkVSKCJIdUMgRE1BIHRyYW5zZmVyIHdhaXQgb3ZlciB3aXRoIHJldCAlZFxuIiwgcmV0 KTsNCj4+PiArDQo+Pj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7DQo+Pj4gKw0KPj4+ICsJLyoNCj4+PiArCSAqIFdlIGtlZXAgdGhlIG9iamVj dCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdA0KPj4+ ICsJICogbm93IHRoYXQgRE1BIGhhcyBjb21wbGV0ZWQsIHNvIGl0IGRvZXNuJ3QgY29udGludWUg dG8gdGFrZSB1cCBzcGFjZS4NCj4+PiArCSAqLw0KPj4+ICsJaTkxNV92bWFfdW5waW4odm1hKTsN Cj4+PiArDQo+Pj4gKwlyZXR1cm4gcmV0Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiAr ICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVl c3QNCj4+PiArICogQGRldl9wcml2OiB0aGUgZHJtX2k5MTVfcHJpdmF0ZSBkZXZpY2UNCj4+PiAr ICoNCj4+PiArICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdF TSBpcyBpbml0aWFsaXNlZC4NCj4+PiArVGhlIGxvYWRpbmcNCj4+PiArICogd2lsbCBjb250aW51 ZSBvbmx5IHdoZW4gZHJpdmVyIGV4cGxpY2l0bHkgc3BlY2lmeSBmaXJtd2FyZSBuYW1lIGFuZA0K PnZlcnNpb24uDQo+Pj4gKyAqIEFsbCBvdGhlciBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBJTlRF TF9VQ19GSVJNV0FSRV9OT05FIGVpdGhlcg0KPj4+ICtiZWNhdXNlIEhXDQo+Pj4gKyAqIGlzIG5v dCBjYXBhYmxlIG9yIGRyaXZlciB5ZXQgc3VwcG9ydCBpdC4gQW5kIHRoZXJlIHdpbGwgYmUgbm8N Cj4+PiArZXJyb3IgbWVzc2FnZQ0KPj4+ICsgKiBmb3IgSU5URUxfVUNfRklSTVdBUkVfTk9ORSBj YXNlcy4NCj4+PiArICoNCj4+PiArICogVGhlIERNQS1jb3B5aW5nIHRvIEhXIGlzIGRvbmUgbGF0 ZXIgd2hlbiBpbnRlbF9odWNfbG9hZCgpIGlzIGNhbGxlZC4NCj4+PiArICovDQo+Pj4gK3ZvaWQg aW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KSB7DQo+Pj4g KwlzdHJ1Y3QgaW50ZWxfaHVjICpodWMgPSAmZGV2X3ByaXYtPmh1YzsNCj4+PiArCXN0cnVjdCBp bnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+Znc7DQo+Pj4gKwljb25zdCBjaGFyICpmd19wYXRo ID0gTlVMTDsNCj4+PiArDQo+Pj4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBOVUxMOw0KPj4+ICsJ aHVjX2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOw0KPj4+ICsJaHVj X2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7DQo+Pj4gKwlodWNfZnct PmZ3X3R5cGUgPSBJTlRFTF9VQ19GV19UWVBFX0hVQzsNCj4+PiArDQo+Pj4gKwlpZiAoIUhBU19I VUNfVUNPREUoZGV2X3ByaXYpKQ0KPj4+ICsJCXJldHVybjsNCj4+PiArDQo+Pj4gKwlpZiAoSVNf U0tZTEFLRShkZXZfcHJpdikpIHsNCj4+PiArCQlmd19wYXRoID0gSTkxNV9TS0xfSFVDX1VDT0RF Ow0KPj4+ICsJCWh1Y19mdy0+bWFqb3JfdmVyX3dhbnRlZCA9IFNLTF9IVUNfRldfTUFKT1I7DQo+ Pj4gKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0hVQ19GV19NSU5PUjsNCj4+PiAr CX0NCj4+PiArDQo+Pj4gKwlodWNfZnctPnVjX2Z3X3BhdGggPSBmd19wYXRoOw0KPj4+ICsJaHVj X2Z3LT5mZXRjaF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOw0KPj4+ICsNCj4+ PiArCURSTV9ERUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBm d19wYXRoKTsNCj4+PiArDQo+Pj4gKwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgaHVjX2Z3 KTsgfQ0KPj4+ICsNCj4+PiArLyoqDQo+Pj4gKyAqIGludGVsX2h1Y19sb2FkKCkgLSBsb2FkIEh1 QyB1Q29kZSB0byBkZXZpY2UNCj4+PiArICogQGRldl9wcml2OiB0aGUgZHJtX2k5MTVfcHJpdmF0 ZSBkZXZpY2UNCj4+PiArICoNCj4+PiArICogQ2FsbGVkIGZyb20gZ2VtX2luaXRfaHcoKSBkdXJp bmcgZHJpdmVyIGxvYWRpbmcgYW5kIGFsc28gYWZ0ZXIgYSBHUFUgcmVzZXQuDQo+Pj4gKyAqIEJl IG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLg0K Pj4+ICsgKg0KPj4+ICsgKiBUaGUgZmlybXdhcmUgaW1hZ2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBi ZWVuIGZldGNoZWQgaW50byBtZW1vcnkNCj4+PiArYnkgdGhlDQo+Pj4gKyAqIGVhcmxpZXIgY2Fs bCB0byBpbnRlbF9odWNfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQgb25seSBjaGVjayB0aGF0DQo+ Pj4gKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRoZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBo L3cuDQo+Pj4gKyAqDQo+Pj4gKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBlcnJvcg0KPj4+ ICsgKi8NCj4+PiAraW50IGludGVsX2h1Y19sb2FkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikgew0KPj4+ICsJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3ByaXYt Pmh1Yy5mdzsNCj4+PiArCWludCBlcnI7DQo+Pj4gKw0KPj4+ICsJaWYgKGh1Y19mdy0+ZmV0Y2hf c3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX05PTkUpDQo+Pj4gKwkJcmV0dXJuIDA7DQo+Pj4g Kw0KPj4+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAl c1xuIiwNCj4+PiArCQlodWNfZnctPnVjX2Z3X3BhdGgsDQo+Pj4gKwkJaW50ZWxfdWNfZndfc3Rh dHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLA0KPj4+ICsJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsNCj4+PiArDQo+Pj4gKwlpZiAoaHVjX2Z3LT5m ZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUyAmJg0KPj4+ICsJICAgIGh1 Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfRkFJTCkNCj4+PiArCQlyZXR1 cm4gLUVOT0VYRUM7DQo+Pj4gKw0KPj4+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VD X0ZJUk1XQVJFX1BFTkRJTkc7DQo+Pj4gKw0KPj4+ICsJc3dpdGNoIChodWNfZnctPmZldGNoX3N0 YXR1cykgew0KPj4+ICsJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOg0KPj4+ICsJCS8qIHNv bWV0aGluZyB3ZW50IHdyb25nIDooICovDQo+Pj4gKwkJZXJyID0gLUVJTzsNCj4+PiArCQlnb3Rv IGZhaWw7DQo+Pj4gKw0KPj4+ICsJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOg0KPj4+ICsJ Y2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOg0KPj4+ICsJZGVmYXVsdDoNCj4+PiArCQkv KiAiY2FuJ3QgaGFwcGVuIiAqLw0KPj4+ICsJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFs aWQgZmV0Y2hfc3RhdHVzICVzIFslZF1cbiIsDQo+Pj4gKwkJCWh1Y19mdy0+dWNfZndfcGF0aCwN Cj4+PiArCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLA0K Pj4+ICsJCQlodWNfZnctPmZldGNoX3N0YXR1cyk7DQo+Pj4gKwkJZXJyID0gLUVOWElPOw0KPj4+ ICsJCWdvdG8gZmFpbDsNCj4+PiArDQo+Pj4gKwljYXNlIElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NF U1M6DQo+Pj4gKwkJYnJlYWs7DQo+Pj4gKwl9DQo+Pj4gKw0KPj4+ICsJZXJyID0gaHVjX3Vjb2Rl X3hmZXIoZGV2X3ByaXYpOw0KPj4+ICsJaWYgKGVycikNCj4+PiArCQlnb3RvIGZhaWw7DQo+Pj4g Kw0KPj4+ICsJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX1NVQ0NFU1M7 DQo+Pj4gKw0KPj4+ICsJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywg bG9hZCAlc1xuIiwNCj4+PiArCQlodWNfZnctPnVjX2Z3X3BhdGgsDQo+Pj4gKwkJaW50ZWxfdWNf Zndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLA0KPj4+ICsJCWludGVsX3VjX2Z3 X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsNCj4+DQo+PkhtbSwgdGhpcyBtZXNz YWdlIHdpbGwgYWx3YXlzIGRpc3BsYXkgImZldGNoIFNVQ0NFU1MgbG9hZCBTVUNDRVNTIg0KPj5h cyBhbGwgb3RoZXIgY2FzZXMgYWxsIGhhbmRsZWQgYXMgZmFpbCBiZWxvdy4uLiBpcyBpdCBleHBl Y3RlZCA/DQoNClllcy4gSSB0aGluayB3ZSBuZWVkIGEgbWVzc2FnZSBmb3IgdGhlIGNhc2Ugd2hl biB0aGVyZSBpcyBubyBmYWlsdXJlLg0KDQo+Pj4gKw0KPj4+ICsJcmV0dXJuIDA7DQo+Pj4gKw0K Pj4+ICtmYWlsOg0KPj4+ICsJaWYgKGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0gSU5URUxfVUNfRklS TVdBUkVfUEVORElORykNCj4+PiArCQlodWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklS TVdBUkVfRkFJTDsNCj4+PiArDQo+Pj4gKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjb21wbGV0ZSBI dUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsNCj4+PiArDQo+Pj4gKwlyZXR1cm4g ZXJyOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKioNCj4+PiArICogaW50ZWxfaHVjX2ZpbmkoKSAt IGNsZWFuIHVwIHJlc291cmNlcyBhbGxvY2F0ZWQgZm9yIEh1Qw0KPj4+ICsgKiBAZGV2OiB0aGUg ZHJtIGRldmljZQ0KPj4+ICsgKg0KPj4+ICsgKiBDbGVhbnMgdXAgYnkgcmVsZWFzaW5nIHRoZSBo dWMgZmlybXdhcmUgR0VNIG9iai4NCj4+PiArICovDQo+Pj4gK3ZvaWQgaW50ZWxfaHVjX2Zpbmko c3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4+DQo+PldoeSB0aGlzIGZ1bmN0aW9uIHRha2VzIGRl dj8gQWxsIG90aGVyIGZ1bmN0aW9ucyB0YWtlIGRldl9wcml2Lg0KDQpMYXN0IEkgaGVhcmQgdGhp cyB3YXMgdGhlIG9ubHkgZnVuY3Rpb24gdGhhdCB0b29rIGRldiBhbmQgdGhlcmUgc29tZSBXSVAg YmVmb3JlIHdlIG1ha2UgaXQgdGFrZSBkZXZfcHJpdi4NCkFyZWssIGNhbiB3ZSBjaGFuZ2UgdGhp cyBub3c/DQoNCj4+TWljaGFsDQo+Pg0KPj4+ICt7DQo+Pj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7DQo+Pj4gKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmZ3Ow0KPj4+ICsNCj4+PiArCW11dGV4X2xvY2soJmRl di0+c3RydWN0X211dGV4KTsNCj4+PiArCWlmIChodWNfZnctPnVjX2Z3X29iaikNCj4+PiArCQlp OTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+dWNfZndfb2JqKTsNCj4+PiArCWh1Y19mdy0+dWNf Zndfb2JqID0gTlVMTDsNCj4+PiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOw0K Pj4+ICsNCj4+PiArCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9O RTsgfQ0KPj4+ICsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dWMuaA0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaCBpbmRleCBhZDE0MGUy Li41N2FlZjU2IDEwMDY0NA0KPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vj LmgNCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oDQo+Pj4gQEAgLTI0 LDYgKzI0LDkgQEANCj4+PiAgI2lmbmRlZiBfSU5URUxfVUNfSF8NCj4+PiAgI2RlZmluZSBfSU5U RUxfVUNfSF8NCj4+Pg0KPj4+ICsjZGVmaW5lIEhVQ19TVEFUVVMyICAgICAgICAgICAgIF9NTUlP KDB4RDNCMCkNCj4+PiArI2RlZmluZSAgIEhVQ19GV19WRVJJRklFRCAgICAgICAoMTw8NykNCj4+ PiArDQo+Pj4gICNpbmNsdWRlICJpbnRlbF9ndWNfZndpZi5oIg0KPj4+ICAjaW5jbHVkZSAiaTkx NV9ndWNfcmVnLmgiDQo+Pj4gICNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiDQo+Pj4gQEAg LTE3NCw2ICsxNzcsMTMgQEAgc3RydWN0IGludGVsX2d1YyB7DQo+Pj4gIAlzdHJ1Y3QgbXV0ZXgg c2VuZF9tdXRleDsNCj4+PiAgfTsNCj4+Pg0KPj4+ICtzdHJ1Y3QgaW50ZWxfaHVjIHsNCj4+PiAr CS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLw0KPj4+ICsJc3RydWN0IGludGVs X3VjX2Z3IGZ3Ow0KPj4+ICsNCj4+PiArCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8NCj4+ PiArfTsNCj4+PiArDQo+Pj4gIC8qIGludGVsX3VjLmMgKi8NCj4+PiAgdm9pZCBpbnRlbF91Y19p bml0X2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7ICBib29sDQo+Pj4g aW50ZWxfZ3VjX3JlY3Yoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnN0 YXR1cyk7IEBADQo+Pj4gLTE5MCw2ICsyMDAsOSBAQCBleHRlcm4gdm9pZCBpbnRlbF9ndWNfZmlu aShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPj4+ICpkZXZfcHJpdik7ICBleHRlcm4gY29uc3Qg Y2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bQ0KPj4+IGludGVsX3VjX2Z3X3N0YXR1 cyBzdGF0dXMpOyAgZXh0ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QNCj4+PiBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7ICBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUoc3Ry dWN0DQo+Pj4gZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOw0KPj4+ICt2b2lkIGludGVsX3Vj X2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwNCj4+PiArCXN0cnVj dCBpbnRlbF91Y19mdyAqdWNfZncpOw0KPj4+ICt1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsNCj4+Pg0KPj4+ICAvKiBpOTE1X2d1Y19z dWJtaXNzaW9uLmMgKi8NCj4+PiAgaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOyBAQA0KPj4+IC0yMDQsNCArMjE3LDkgQEAgdm9p ZCBpOTE1X2d1Y19yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZQ0KPj4+ICpkZXZfcHJp dik7ICB2b2lkIGk5MTVfZ3VjX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUNCj4+ PiAqZGV2X3ByaXYpOyAgaW50IGk5MTVfZ3VjX2xvZ19jb250cm9sKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlDQo+Pj4gKmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpOw0KPj4+DQo+Pj4gKy8qIGlu dGVsX2h1Y19sb2FkZXIuYyAqLw0KPj4+ICt2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7IHZvaWQNCj4+PiAraW50ZWxfaHVjX2Zpbmkoc3RydWN0 IGRybV9kZXZpY2UgKmRldik7IGludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QNCj4+PiArZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOw0KPj4+ICsNCj4+PiAgI2VuZGlmDQo+Pj4gLS0NCj4+PiAy LjcuNA0KPj4+DQo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCj4+PiBJbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+Pj4gSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZw0KPj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4DQo+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18NCj5JbnRlbC1nZnggbWFpbGluZyBsaXN0DQo+SW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZw0KPmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK