From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mailout1.samsung.com ([203.254.224.24]:37750 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753716Ab2GLMzB (ORCPT ); Thu, 12 Jul 2012 08:55:01 -0400 Received: from epcpsbge8.samsung.com (mailout1.samsung.com [203.254.224.24]) by mailout1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0M71008LHT7NZI50@mailout1.samsung.com> for linux-media@vger.kernel.org; Thu, 12 Jul 2012 21:54:59 +0900 (KST) Date: Thu, 12 Jul 2012 12:54:56 +0000 (GMT) From: Arun Kumar K Subject: RE: [PATCH v2 2/2] [media] s5p-mfc: update MFC v4l2 driver to support MFC6.x To: Kamil Debski , "linux-media@vger.kernel.org" Cc: Jeongtae Park , Jang-Hyuck Kim , peter Oh , NAVEEN KRISHNA CHATRADHI , Marek Szyprowski , Sylwester Nawrocki , "hans.verkuil@cisco.com" , "mchehab@infradead.org" Reply-to: arun.kk@samsung.com MIME-version: 1.0 Content-transfer-encoding: base64 Content-type: text/plain; charset=windows-1252 MIME-version: 1.0 Message-id: <7331320.308251342097696611.JavaMail.weblogic@epml02> Sender: linux-media-owner@vger.kernel.org List-ID: SGkgS2FtaWwsDQoNClRoYW5rIHlvdSBmb3IgdGhlIHJldmlldy4gUGxlYXNlIGZpbmQgbXkgY29t bWVudHMgaW5saW5lLg0KDQpPbiBUdWUsIEp1bCAxMCwgMjAxMiBhdCA4OjQwIFBNLCBLYW1pbCBE ZWJza2kgPGsuZGVic2tpQHNhbXN1bmcuY29tPiB3cm90ZToNCj4NCj4gSGkgQXJ1biwNCj4NCj4g UGxlYXNlIGZpbmQgc29tZSBhZGRpdGlvbmFsIGNvbW1lbnRzIGJlbG93Lg0KPg0KPiA+IEZyb206 IEFydW4gS3VtYXIgSyBbbWFpbHRvOmFydW4ua2tAc2Ftc3VuZy5jb21dDQo+ID4gU2VudDogMDYg SnVseSAyMDEyIDE2OjAwDQo+DQo+IFtzbmlwXQ0KPg0KPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvTWFrZWZpbGUNCj4gPiBiL2RyaXZlcnMvbWVkaWEvdmlk ZW8vczVwLW1mYy9NYWtlZmlsZQ0KPiA+IGluZGV4IGQwNjYzNDAuLjAzMDhkNzQgMTAwNjQ0DQo+ ID4gLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL01ha2VmaWxlDQo+ID4gKysrIGIv ZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL01ha2VmaWxlDQo+ID4gQEAgLTEsNSArMSw2IEBA DQo+ID4gIG9iai0kKENPTkZJR19WSURFT19TQU1TVU5HX1M1UF9NRkMpIDo9IHM1cC1tZmMubw0K PiA+IC1zNXAtbWZjLXkgKz0gczVwX21mYy5vIHM1cF9tZmNfaW50ci5vIHM1cF9tZmNfb3ByLm8N Cj4gPiArczVwLW1mYy15ICs9IHM1cF9tZmMubyBzNXBfbWZjX2ludHIubw0KPiA+ICBzNXAtbWZj LXkgKz0gczVwX21mY19kZWMubyBzNXBfbWZjX2VuYy5vDQo+ID4gLXM1cC1tZmMteSArPSBzNXBf bWZjX2N0cmwubyBzNXBfbWZjX2NtZC5vDQo+ID4gLXM1cC1tZmMteSArPSBzNXBfbWZjX3BtLm8g czVwX21mY19zaG0ubw0KPiA+ICtzNXAtbWZjLXkgKz0gczVwX21mY19jdHJsLm8gczVwX21mY19w bS5vDQo+ID4gK29iai0kKENPTkZJR19WSURFT19TQU1TVU5HX1M1UF9NRkNfVjUpICs9IHM1cF9t ZmNfb3ByLm8gczVwX21mY19jbWQubw0KPiA+IHM1cF9tZmNfc2htLm8NCj4gPiArb2JqLSQoQ09O RklHX1ZJREVPX1NBTVNVTkdfUzVQX01GQ19WNikgKz0gczVwX21mY19vcHJfdjYubw0KPiA+IHM1 cF9tZmNfY21kX3Y2Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAt bWZjL3JlZ3MtbWZjLXY2LmgNCj4gPiBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9yZWdz LW1mYy12Ni5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwLi5m MjJhMTU5DQo+DQo+IFRoaXMgTWFrZWZpbGUgZG9lcyBub3Qgd29yayB3aGVuIGNvbXBpbGluZyB0 aGUgZHJpdmVyIGFzIGEgbW9kdWxlLg0KPiAoSSBhbHNvIHdyb3RlIGFib3V0IHRoaXMgaW4gbXkg cHJldmlvdXMgZW1haWwpDQo+DQoNClllcy4gSSB3aWxsIGZpeCBpdC4NCg0KPiBbc25pcF0NCj4N Cj4gPg0KPiA+ICAjZW5kaWYgLyogX1JFR1NfRklNVl9IICovDQo+ID4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjLmMNCj4gPiBiL2RyaXZlcnMvbWVkaWEv dmlkZW8vczVwLW1mYy9zNXBfbWZjLmMNCj4gPiBpbmRleCA5YmI2OGU3Li5iZWM5NGJjIDEwMDY0 NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjLmMNCj4gPiAr KysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21mYy5jDQo+DQo+IFtzbmlwXQ0K Pg0KPiA+IEBAIC0yODUsMTIgKzI3NiwxMyBAQCBzdGF0aWMgdm9pZCBzNXBfbWZjX2hhbmRsZV9m cmFtZShzdHJ1Y3QNCj4gPiBzNXBfbWZjX2N0eA0KPiA+ICpjdHgsDQo+ID4NCj4gPiAgICAgICBk c3RfZnJhbWVfc3RhdHVzID0gczVwX21mY19nZXRfZHNwbF9zdGF0dXMoKQ0KPiA+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICYNCj4gPiBTNVBfRklNVl9ERUNfU1RBVFVTX0RFQ09ESU5H X1NUQVRVU19NQVNLOw0KPiA+IC0gICAgIHJlc19jaGFuZ2UgPSBzNXBfbWZjX2dldF9kc3BsX3N0 YXR1cygpDQo+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTNVBfRklNVl9ERUNf U1RBVFVTX1JFU09MVVRJT05fTUFTSzsNCj4gPiArICAgICByZXNfY2hhbmdlID0gKHM1cF9tZmNf Z2V0X2RzcGxfc3RhdHVzKCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIFM1 UF9GSU1WX0RFQ19TVEFUVVNfUkVTT0xVVElPTl9NQVNLKQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgID4+IFM1UF9GSU1WX0RFQ19TVEFUVVNfUkVTT0xVVElPTl9TSElGVDsNCj4g PiAgICAgICBtZmNfZGVidWcoMiwgIkZyYW1lIFN0YXR1czogJXhcbiIsIGRzdF9mcmFtZV9zdGF0 dXMpOw0KPiA+ICAgICAgIGlmIChjdHgtPnN0YXRlID09IE1GQ0lOU1RfUkVTX0NIQU5HRV9JTklU KQ0KPiA+ICAgICAgICAgICAgICAgY3R4LT5zdGF0ZSA9IE1GQ0lOU1RfUkVTX0NIQU5HRV9GTFVT SDsNCj4gPiAtICAgICBpZiAocmVzX2NoYW5nZSkgew0KPiA+ICsgICAgIGlmIChyZXNfY2hhbmdl ICYmIHJlc19jaGFuZ2UgIT0gMykgew0KPg0KPiBNYXliZQ0KPiBJZiAocmVzX2NoYW5nZSA9PSAx IHx8IHJlc19jaGFuZ2UgPT0gMikgew0KPiB3b3VsZCBiZSBiZXR0ZXIsIGF0IGxlYXN0IGl0IHdv dWxkIGJlIG1vcmUgY2xlYXIuDQo+DQoNClN1cmUgSSB3aWxsIGNoYW5nZSBpdCB0aGF0IHdheS4N Cg0KPiBbc25pcF0NCj4NCj4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9z NXAtbWZjL3M1cF9tZmNfY29tbW9uLmgNCj4gPiBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1m Yy9zNXBfbWZjX2NvbW1vbi5oDQo+ID4gaW5kZXggYmQ1NzA2YS4uOGM2NDZmNCAxMDA2NDQNCj4g PiAtLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21mY19jb21tb24uaA0KPiA+ ICsrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX2NvbW1vbi5oDQo+DQo+ IFtzbmlwXQ0KPg0KPiA+IEBAIC00OTksMzcgKzU2Myw0MiBAQCBzdHJ1Y3QgczVwX21mY19jdHgg ew0KPiA+ICAgICAgIGludCBkaXNwbGF5X2RlbGF5Ow0KPiA+ICAgICAgIGludCBkaXNwbGF5X2Rl bGF5X2VuYWJsZTsNCj4gPiAgICAgICBpbnQgYWZ0ZXJfcGFja2VkX3BiOw0KPiA+ICsgICAgIGlu dCBzZWlfZnBfcGFyc2U7DQo+ID4NCj4gPiAgICAgICBpbnQgZHBiX2NvdW50Ow0KPiA+ICAgICAg IGludCB0b3RhbF9kcGJfY291bnQ7DQo+ID4NCj4gPiAgICAgICAvKiBCdWZmZXJzICovDQo+ID4g LSAgICAgdm9pZCAqY3R4X2J1ZjsNCj4gPiAtICAgICBzaXplX3QgY3R4X3BoeXM7DQo+ID4gLSAg ICAgc2l6ZV90IGN0eF9vZnM7DQo+ID4gLSAgICAgc2l6ZV90IGN0eF9zaXplOw0KPiA+IC0NCj4g PiAtICAgICB2b2lkICpkZXNjX2J1ZjsNCj4gPiAtICAgICBzaXplX3QgZGVzY19waHlzOw0KPiA+ IC0NCj4gPiAtDQo+ID4gLSAgICAgdm9pZCAqc2htX2FsbG9jOw0KPiA+IC0gICAgIHZvaWQgKnNo bTsNCj4gPiAtICAgICBzaXplX3Qgc2htX29mczsNCj4gPiArICAgICB1bnNpZ25lZCBpbnQgY3R4 X3NpemU7DQo+ID4gKyAgICAgc3RydWN0IHM1cF9tZmNfcHJpdl9idWYgY3R4Ow0KPiA+ICsgICAg IHN0cnVjdCBzNXBfbWZjX3ByaXZfYnVmIGRzYzsNCj4gPiArICAgICBzdHJ1Y3QgczVwX21mY19w cml2X2J1ZiBzaG07DQo+DQo+IEkgdGhpbmsgdGhhdCBjdHhfc2l6ZSBjb3VsZCBiZSBpbnRlZ3Jh dGVkIGluIHN0cnVjdCBzNXBfbWZjX3ByaXZfYnVmLg0KPiBBbHNvIC0gd2h5IHVuc2lnbmVkIGlu dCwgd2hlcmUgaW4gb3RoZXIgcGxhY2VzIHlvdSB1c2Ugc2l6ZV90IGZvciBzaXplPw0KPiBJIHRo aW5rIGl0IHNob3VsZCBiZSBjb25zaXN0ZW50LiBJIHdvdWxkIGNob29zZSBzaXplX3QuDQo+DQoN Clllcy4gc2l6ZV90IGlzIGJldHRlci4gSSB3aWxsIGNoYW5nZSBpdC4NCg0KPiA+DQo+ID4gICAg ICAgc3RydWN0IHM1cF9tZmNfZW5jX3BhcmFtcyBlbmNfcGFyYW1zOw0KPiA+DQo+ID4gICAgICAg c2l6ZV90IGVuY19kc3RfYnVmX3NpemU7DQo+ID4gKyAgICAgc2l6ZV90IGx1bWFfZHBiX3NpemU7 DQo+ID4gKyAgICAgc2l6ZV90IGNocm9tYV9kcGJfc2l6ZTsNCj4gPiArICAgICBzaXplX3QgbWVf YnVmZmVyX3NpemU7DQo+ID4gKyAgICAgc2l6ZV90IHRtdl9idWZmZXJfc2l6ZTsNCj4gPg0KPg0K PiBeXiBZb3UgdXNlIHNpemVfdCBoZXJlLg0KPg0KPiBbc25pcF0NCj4NCj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9tZmNfY3RybC5jDQo+ID4gYi9kcml2 ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21mY19jdHJsLmMNCj4gPiBpbmRleCAwOGE1Y2Zl Li42NWZmMTVkIDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9z NXBfbWZjX2N0cmwuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBf bWZjX2N0cmwuYw0KPiA+IEBAIC0xNSw3ICsxNSw2IEBADQo+ID4gICNpbmNsdWRlIDxsaW51eC9m aXJtd2FyZS5oPg0KPiA+ICAjaW5jbHVkZSA8bGludXgvamlmZmllcy5oPg0KPiA+ICAjaW5jbHVk ZSA8bGludXgvc2NoZWQuaD4NCj4gPiAtI2luY2x1ZGUgInJlZ3MtbWZjLmgiDQo+ID4gICNpbmNs dWRlICJzNXBfbWZjX2NtZC5oIg0KPiA+ICAjaW5jbHVkZSAiczVwX21mY19jb21tb24uaCINCj4g PiAgI2luY2x1ZGUgInM1cF9tZmNfZGVidWcuaCINCj4gPiBAQCAtMzgsMTIgKzM3LDEyIEBAIGlu dCBzNXBfbWZjX2FsbG9jX2FuZF9sb2FkX2Zpcm13YXJlKHN0cnVjdA0KPiA+IHM1cF9tZmNfZGV2 ICpkZXYpDQo+ID4gICAgICAgICogaW50byBrZXJuZWwuICovDQo+ID4gICAgICAgbWZjX2RlYnVn X2VudGVyKCk7DQo+ID4gICAgICAgZXJyID0gcmVxdWVzdF9maXJtd2FyZSgoY29uc3Qgc3RydWN0 IGZpcm13YXJlICoqKSZmd19ibG9iLA0KPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInM1cC1tZmMuZnciLCBkZXYtPnY0bDJfZGV2LmRldik7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAibWZjX2Z3LmJpbiIsIGRldi0+djRsMl9kZXYuZGV2KTsN Cj4NCj4gQW5vdGhlciBuYW1lIGNoYW5nZT8gVGhpcyBpcyBnZXR0aW5nIHJpZGljdWxvdXMuIE5l aW4sIG5laW4sIG5laW4gISA7KQ0KPiBJZiB5b3UgXypyZWFsbHkqXyBuZWVkIHN1Y2ggYSBjaGFu Z2UgdGhlbiBnbyBhaGVhZCBhbmQgdHJ5IHRvIGNvbnZpbmNlDQo+IG1lLCBidXQgSSB0ZWxsIHlv dSAtIGl0J3MgZ29pbmcgdG8gYmUgaGFyZC4NCj4NCg0KT2suIEkgd2lsbCByZXRhaW4gdGhlIG9s ZCBuYW1lIDopDQpBbmQgYXMgZGlzY3Vzc2VkIHdpbGwgYWRkIG5ldyBuYW1lIHM1cC1tZmMtdjYu ZncgZm9yIFY2Lg0KDQoNCj4gPiAgICAgICBpZiAoZXJyICE9IDApIHsNCj4gPiAgICAgICAgICAg ICAgIG1mY19lcnIoIkZpcm13YXJlIGlzIG5vdCBwcmVzZW50IGluIHRoZSAvbGliL2Zpcm13YXJl DQo+ID4gZGlyZWN0b3J5IG5vciBjb21waWxlZCBpbiBrZXJuZWxcbiIpOw0KPiA+ICAgICAgICAg ICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gICAgICAgfQ0KPiA+IC0gICAgIGRldi0+Zndfc2l6 ZSA9IEFMSUdOKGZ3X2Jsb2ItPnNpemUsIEZJUk1XQVJFX0FMSUdOKTsNCj4gPiArICAgICBkZXYt PmZ3X3NpemUgPSBkZXYtPnZhcmlhbnQtPmJ1Zl9zaXplLT5mdzsNCj4NCj4gV2h5IGlzIHNpemUg dGFrZW4gZnJvbSB0aGVyZSBpbnN0ZWFkIG9mIHRoZSBzaXplIG9mIHRoZSBmaXJtd2FyZSBmaWxl Pw0KPiBFdmVuIGlmIHRoZXJlIHdhcyBzb21lIHBvaW50IHRvIGRvIGl0IHRoaXMgd2F5IHRoZW4g eW91IHJlYWxseSAqc2hvdWxkKg0KPiBjaGVjayBpZiB0aGUgZmlybXdhcmUgcmVhZCBmcm9tIHRo ZSBmaWxlIGZpdHMgaW4gdGhlIGFsbG9jYXRlZCBidWZmZXIuDQo+DQo+IFRoaXMgaXMgYSBzdHJh aWdodCB3YXkgdG8gYSBidWZmZXIgb3ZlcmZsb3cgZXJyb3IuIEFsbCBJIG5lZWQgaXMgdG8NCj4g cHJlcGFyZSBhbiBleHRyYSBiaWcgZmlybXdhcmUgZmlsZSBhbmQgInZpb2xhISIgd2UgaGF2ZSBh IGJ1ZmZlciBvdmVyZmxvdw0KPiB0aGF0IGNvdWxkIGJlIGZhdGFsIHRvIHRoZSBzeXN0ZW0uDQoN Clllcy4gV2lsbCBmaXggaXQuDQoNCj4NCj4gPiAgICAgICBpZiAoczVwX21mY19iaXRwcm9jX2J1 Zikgew0KPiA+ICAgICAgICAgICAgICAgbWZjX2VycigiQXR0ZW1wdGluZyB0byBhbGxvY2F0ZSBm aXJtd2FyZSB3aGVuIGl0IHNlZW1zDQo+ID4gdGhhdA0KPiA+IGl0IGlzIGFscmVhZHkgbG9hZGVk XG4iKTsNCj4gPiAgICAgICAgICAgICAgIHJlbGVhc2VfZmlybXdhcmUoZndfYmxvYik7DQo+ID4g QEAgLTc3LDI4ICs3NiwzMyBAQCBpbnQgczVwX21mY19hbGxvY19hbmRfbG9hZF9maXJtd2FyZShz dHJ1Y3QNCj4gPiBzNXBfbWZjX2RldiAqZGV2KQ0KPiA+ICAgICAgICAgICAgICAgcmV0dXJuIC1F SU87DQo+ID4gICAgICAgfQ0KPiA+ICAgICAgIGRldi0+YmFuazEgPSBzNXBfbWZjX2JpdHByb2Nf cGh5czsNCj4gPiAtICAgICBiX2Jhc2UgPSB2YjJfZG1hX2NvbnRpZ19tZW1vcHMuYWxsb2MoDQo+ ID4gLSAgICAgICAgICAgICBkZXYtPmFsbG9jX2N0eFtNRkNfQkFOSzJfQUxMT0NfQ1RYXSwgMSA8 PA0KPiA+IE1GQ19CQU5LMl9BTElHTl9PUkRFUik7DQo+ID4gLSAgICAgaWYgKElTX0VSUihiX2Jh c2UpKSB7DQo+ID4gLSAgICAgICAgICAgICB2YjJfZG1hX2NvbnRpZ19tZW1vcHMucHV0KHM1cF9t ZmNfYml0cHJvY19idWYpOw0KPiA+IC0gICAgICAgICAgICAgczVwX21mY19iaXRwcm9jX3BoeXMg PSAwOw0KPiA+IC0gICAgICAgICAgICAgczVwX21mY19iaXRwcm9jX2J1ZiA9IE5VTEw7DQo+ID4g LSAgICAgICAgICAgICBtZmNfZXJyKCJBbGxvY2F0aW5nIGJhbmsyIGJhc2UgZmFpbGVkXG4iKTsN Cj4gPiAtICAgICByZWxlYXNlX2Zpcm13YXJlKGZ3X2Jsb2IpOw0KPiA+IC0gICAgICAgICAgICAg cmV0dXJuIC1FTk9NRU07DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGJhbmsyX2Jhc2VfcGh5cyA9 IHM1cF9tZmNfbWVtX2Nvb2tpZSgNCj4gPiAtICAgICAgICAgICAgIGRldi0+YWxsb2NfY3R4W01G Q19CQU5LMl9BTExPQ19DVFhdLCBiX2Jhc2UpOw0KPiA+IC0gICAgIHZiMl9kbWFfY29udGlnX21l bW9wcy5wdXQoYl9iYXNlKTsNCj4gPiAtICAgICBpZiAoYmFuazJfYmFzZV9waHlzICYgKCgxIDw8 IE1GQ19CQVNFX0FMSUdOX09SREVSKSAtIDEpKSB7DQo+ID4gLSAgICAgICAgICAgICBtZmNfZXJy KCJUaGUgYmFzZSBtZW1vcnkgZm9yIGJhbmsgMiBpcyBub3QgYWxpZ25lZCB0bw0KPiA+IDEyOEtC XG4iKTsNCj4gPiAtICAgICAgICAgICAgIHZiMl9kbWFfY29udGlnX21lbW9wcy5wdXQoczVwX21m Y19iaXRwcm9jX2J1Zik7DQo+ID4gLSAgICAgICAgICAgICBzNXBfbWZjX2JpdHByb2NfcGh5cyA9 IDA7DQo+ID4gLSAgICAgICAgICAgICBzNXBfbWZjX2JpdHByb2NfYnVmID0gTlVMTDsNCj4gPiAt ICAgICAgICAgICAgIHJlbGVhc2VfZmlybXdhcmUoZndfYmxvYik7DQo+ID4gLSAgICAgICAgICAg ICByZXR1cm4gLUVJTzsNCj4gPiArICAgICBpZiAoSEFTX1BPUlROVU0oZGV2KSAmJiBJU19UV09Q T1JUKGRldikpIHsNCj4gPiArICAgICAgICAgICAgIGJfYmFzZSA9IHZiMl9kbWFfY29udGlnX21l bW9wcy5hbGxvYygNCj4gPiArICAgICAgICAgICAgICAgICAgICAgZGV2LT5hbGxvY19jdHhbTUZD X0JBTksyX0FMTE9DX0NUWF0sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIDEgPDwgTUZDX0JB TksyX0FMSUdOX09SREVSKTsNCj4gPiArICAgICAgICAgICAgIGlmIChJU19FUlIoYl9iYXNlKSkg ew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICB2YjJfZG1hX2NvbnRpZ19tZW1vcHMucHV0KHM1 cF9tZmNfYml0cHJvY19idWYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzNXBfbWZjX2Jp dHByb2NfcGh5cyA9IDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHM1cF9tZmNfYml0cHJv Y19idWYgPSAwOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBtZmNfZXJyKCJBbGxvY2F0aW5n IGJhbmsyIGJhc2UgZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmVsZWFz ZV9maXJtd2FyZShmd19ibG9iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1F Tk9NRU07DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBiYW5rMl9iYXNl X3BoeXMgPSBzNXBfbWZjX21lbV9jb29raWUoDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIGRl di0+YWxsb2NfY3R4W01GQ19CQU5LMl9BTExPQ19DVFhdLCBiX2Jhc2UpOw0KPiA+ICsgICAgICAg ICAgICAgdmIyX2RtYV9jb250aWdfbWVtb3BzLnB1dChiX2Jhc2UpOw0KPiA+ICsgICAgICAgICAg ICAgaWYgKGJhbmsyX2Jhc2VfcGh5cyAmICgoMSA8PCBNRkNfQkFTRV9BTElHTl9PUkRFUikgLSAx KSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBtZmNfZXJyKCJUaGUgYmFzZSBtZW1vcnkg Zm9yIGJhbmsgMiBpcyBub3QgYWxpZ25lZA0KPiA+IHRvDQo+ID4gMTI4S0JcbiIpOw0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICB2YjJfZG1hX2NvbnRpZ19tZW1vcHMucHV0KHM1cF9tZmNfYml0 cHJvY19idWYpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICBzNXBfbWZjX2JpdHByb2NfcGh5 cyA9IDA7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHM1cF9tZmNfYml0cHJvY19idWYgPSAw Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICByZWxlYXNlX2Zpcm13YXJlKGZ3X2Jsb2IpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTzsNCj4gPiArICAgICAgICAgICAg IH0NCj4gPiArICAgICAgICAgICAgIGRldi0+YmFuazIgPSBiYW5rMl9iYXNlX3BoeXM7DQo+ID4g KyAgICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIGRldi0+YmFuazIgPSBkZXYtPmJhbmsx Ow0KPiA+ICAgICAgIH0NCj4gPiAtICAgICBkZXYtPmJhbmsyID0gYmFuazJfYmFzZV9waHlzOw0K PiA+ICAgICAgIG1lbWNweShzNXBfbWZjX2JpdHByb2NfdmlydCwgZndfYmxvYi0+ZGF0YSwgZndf YmxvYi0+c2l6ZSk7DQo+ID4gICAgICAgd21iKCk7DQo+ID4gICAgICAgcmVsZWFzZV9maXJtd2Fy ZShmd19ibG9iKTsNCj4gPiBAQCAtMTE2LDcgKzEyMCw3IEBAIGludCBzNXBfbWZjX3JlbG9hZF9m aXJtd2FyZShzdHJ1Y3QgczVwX21mY19kZXYgKmRldikNCj4gPiAgICAgICAgKiBpbnRvIGtlcm5l bC4gKi8NCj4gPiAgICAgICBtZmNfZGVidWdfZW50ZXIoKTsNCj4gPiAgICAgICBlcnIgPSByZXF1 ZXN0X2Zpcm13YXJlKChjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKiopJmZ3X2Jsb2IsDQo+ID4gLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiczVwLW1mYy5mdyIsIGRldi0+djRsMl9k ZXYuZGV2KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZmNfZncu YmluIiwgZGV2LT52NGwyX2Rldi5kZXYpOw0KPg0KPiBEaXR0by4NCj4NCj4gW3NuaXBdDQo+DQo+ DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX2N0 cmwuaA0KPiA+IGIvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9tZmNfY3RybC5oDQo+ ID4gaW5kZXggNjFkYzIzYi4uYjcyYzhjNiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlh L3ZpZGVvL3M1cC1tZmMvczVwX21mY19jdHJsLmgNCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3Zp ZGVvL3M1cC1tZmMvczVwX21mY19jdHJsLmgNCj4NCj4gW3NuaXBdDQo+DQo+ID4NCj4gPiBAQCAt MzM2LDIxICszNjQsMzUgQEAgc3RhdGljIGludCB2aWRpb2NfZ19mbXQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQNCj4gPiAqcHJpdiwgc3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KPiA+ICAvKiBUcnkg Zm9ybWF0ICovDQo+ID4gIHN0YXRpYyBpbnQgdmlkaW9jX3RyeV9mbXQoc3RydWN0IGZpbGUgKmZp bGUsIHZvaWQgKnByaXYsIHN0cnVjdA0KPiA+IHY0bDJfZm9ybWF0ICpmKQ0KPiA+ICB7DQo+ID4g KyAgICAgc3RydWN0IHM1cF9tZmNfZGV2ICpkZXYgPSB2aWRlb19kcnZkYXRhKGZpbGUpOw0KPiA+ ICAgICAgIHN0cnVjdCBzNXBfbWZjX2ZtdCAqZm10Ow0KPiA+DQo+ID4gLSAgICAgaWYgKGYtPnR5 cGUgIT0gVjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBMQU5FKSB7DQo+ID4gLSAgICAgICAg ICAgICBtZmNfZXJyKCJUaGlzIG5vZGUgc3VwcG9ydHMgZGVjb2Rpbmcgb25seVxuIik7DQo+ID4g LSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAtICAgICB9DQo+ID4gLSAgICAgZm10 ID0gZmluZF9mb3JtYXQoZiwgTUZDX0ZNVF9ERUMpOw0KPiA+IC0gICAgIGlmICghZm10KSB7DQo+ ID4gLSAgICAgICAgICAgICBtZmNfZXJyKCJVbnN1cHBvcnRlZCBmb3JtYXRcbiIpOw0KPiA+IC0g ICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+ID4gLSAgICAgfQ0KPiA+IC0gICAgIGlmIChm bXQtPnR5cGUgIT0gTUZDX0ZNVF9ERUMpIHsNCj4gPiAtICAgICAgICAgICAgIG1mY19lcnIoIlxu Iik7DQo+ID4gLSAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICBtZmNfZGVi dWcoMiwgIlR5cGUgaXMgJWRcbiIsIGYtPnR5cGUpOw0KPiA+ICsgICAgIGlmIChmLT50eXBlID09 IFY0TDJfQlVGX1RZUEVfVklERU9fT1VUUFVUX01QTEFORSkgew0KPiA+ICsgICAgICAgICAgICAg Zm10ID0gZmluZF9mb3JtYXQoZiwgTUZDX0ZNVF9ERUMpOw0KPiA+ICsgICAgICAgICAgICAgaWYg KCFmbXQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgbWZjX2VycigiVW5zdXBwb3J0ZWQg Zm9ybWF0IGZvciBzb3VyY2UuXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+ID4gKyAgICAgICAgICAgICB9DQo+ID4gKyAgICAgICAgICAgICBpZiAoIUlT X01GQ1Y2KGRldikgJiYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9WUDgpKSB7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgIG1mY19lcnIoIk5vdCBzdXBwb3J0ZWQgZm9ybWF0LlxuIik7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAg ICAgICAgfQ0KPiA+ICsgICAgIH0gZWxzZSBpZiAoZi0+dHlwZSA9PSBWNEwyX0JVRl9UWVBFX1ZJ REVPX0NBUFRVUkVfTVBMQU5FKSB7DQo+ID4gKyAgICAgICAgICAgICBmbXQgPSBmaW5kX2Zvcm1h dChmLCBNRkNfRk1UX1JBVyk7DQo+ID4gKyAgICAgICAgICAgICBpZiAoIWZtdCkgew0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBtZmNfZXJyKCJVbnN1cHBvcnRlZCBmb3JtYXQgZm9yIGRlc3Rp bmF0aW9uLlxuIik7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0K PiA+ICsgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAgaWYgKElTX01GQ1Y2KGRldikg JiYgKGZtdC0+Zm91cmNjID09IFY0TDJfUElYX0ZNVF9OVjEyTVQpKQ0KPiA+IHsNCj4NCj4gT2su IExldCdzIHNlZS4NCj4gSWYgSVNfTUZDVjYoZGV2KSBpcyAxIGFuZA0KPiBmbXQtPmZvdXJjYyA9 PSBWNEwyX1BJWF9GTVRfTlYxMk1UIGlzIDANCj4gdGhlbiB0aGUgZm9sbG93aW5nIGNvZGUgaXMg bm90IHJ1bi4NCj4NCj4gPiArICAgICAgICAgICAgICAgICAgICAgbWZjX2VycigiTm90IHN1cHBv cnRlZCBmb3JtYXQuXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5W QUw7DQo+DQo+IEFuZCB3ZSBnZXQgaGVyZS4NCj4NCj4gPiArICAgICAgICAgICAgIH0gZWxzZSBp ZiAoZm10LT5mb3VyY2MgIT0gVjRMMl9QSVhfRk1UX05WMTJNVCkgew0KPg0KPiBmbXQtPmZvdXJj YyA9PSBWNEwyX1BJWF9GTVRfTlYxMk1UIGlzIHN0aWxsIDAsIHNvDQo+IGZtdC0+Zm91cmNjICE9 IFY0TDJfUElYX0ZNVF9OVjEyTVQgaXMgMSBhbmQgdGhpcyBjb2RlIGlzIHJ1bg0KPg0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICBtZmNfZXJyKCJOb3Qgc3VwcG9ydGVkIGZvcm1hdC5cbiIpOw0K PiA+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAg ICAgIH0NCj4gPiAgICAgICB9DQo+ID4gKw0KPiA+ICAgICAgIHJldHVybiAwOw0KPiA+ICB9DQo+ DQo+IE15IHF1ZXN0aW9uIGlzIC0gd2hhdCB0YXJnZXRzIGRpZCB5b3UgcnVuIHRoaXMgY29kZSBv bj8gRGlkIHlvdSBydW4gaXQNCj4gb24gRXh5bm9zNSB3aXRoIE1GQyB2Nj8gQXJ1biwgaXQgaXMg aW1wb3J0YW50IHRoYXQgeW91IHRlc3QgdGhlIHBhdGNoZXMNCj4gdGhhdCB5b3Ugc2VuZCB0byB0 aGUgbWFpbGluZyBsaXN0LiBNYXliZSB5b3UgaGF2ZSBzZW50IGRpZmZlcmVudCBmaWxlcw0KPiB0 aGFuIHRoZSBvbmVzIHlvdSBoYXZlIHRlc3RlZD8NCj4NCg0KWWVzIHRoaXMgaXMgYSBidWcgaW4g dGhlIGNvZGUuIA0KVGhlIHBhdGNoIHdhcyB0ZXN0ZWQgd2VsbCBvbiBFeHlub3M1IHdpdGggTUZD djYgdXNpbmcgdGhlIHY0bCBleGFtcGxlDQp0ZXN0IGFwcC4gVW5mb3J0dWF0ZWx5IHRoZSB0ZXN0 IGFwcCBkb2VzbnQgY2FsbCBzX2ZtdCBvbiBDQVBUVVJFX01QTEFORSANCmFuZCB0aGlzIGlzc3Vl IG5ldmVyIHN1cmZhY2VkLg0KDQoNCj4gW3NuaXBdDQo+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21mY19lbmMuYw0KPiBiL2RyaXZlcnMvbWVkaWEvdmlk ZW8vczVwLW1mYy9zNXBfbWZjX2VuYy5jDQo+IGluZGV4IDAzZDgzMzQuLjY0NWE4ZWYgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX2VuYy5jDQo+ICsr KyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX2VuYy5jDQo+IEBAIC0yNCw0 OCArMjQsNjMgQEANCj4gICNpbmNsdWRlIDxsaW51eC93b3JrcXVldWUuaD4NCj4gICNpbmNsdWRl IDxtZWRpYS92NGwyLWN0cmxzLmg+DQo+ICAjaW5jbHVkZSA8bWVkaWEvdmlkZW9idWYyLWNvcmUu aD4NCj4gLSNpbmNsdWRlICJyZWdzLW1mYy5oIg0KPiAgI2luY2x1ZGUgInM1cF9tZmNfY29tbW9u LmgiDQo+ICAjaW5jbHVkZSAiczVwX21mY19kZWJ1Zy5oIg0KPiAgI2luY2x1ZGUgInM1cF9tZmNf ZW5jLmgiDQo+ICAjaW5jbHVkZSAiczVwX21mY19pbnRyLmgiDQo+IC0jaW5jbHVkZSAiczVwX21m Y19vcHIuaCINCj4gKw0KPiArI2RlZmluZSBERUZfU1JDX0ZNVCAgICAyDQo+ICsjZGVmaW5lIERF Rl9EU1RfRk1UICAgIDQNCj4NCj4gSSB3b3VsZCBhZGQgRU5DL0RFQyB0byB0aGUgbmFtZSBvZiB0 aGlzIGRlZmluZSBhcyBpdCBoYXMgY29uZnVzZWQgbWUNCj4gYmVjYXVzZSB0aGVyZSBhcmUgdHdv IHN5bWJvbHMgd2l0aCB0aGUgc2FtZSBuYW1lIGluIGRpZmZlcmVudCBmaWxlcy4NCj4gU2FtZSBh cHBsaWVzIHRvIHRoZSBzNXBfbWZjX2RlYy5jIGZpbGUuDQo+DQoNCk9rLiBXaWxsIGNoYW5nZSBp dC4NCg0KPiBbc25pcF0NCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVw LW1mYy9zNXBfbWZjX2VuYy5oDQo+IGIvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9t ZmNfZW5jLmgNCj4gaW5kZXggNDA1YmRkMy4uNDEzZjIyZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9tZmNfZW5jLmgNCj4gKysrIGIvZHJpdmVycy9tZWRp YS92aWRlby9zNXAtbWZjL3M1cF9tZmNfZW5jLmgNCj4gQEAgLTE5LDUgKzE5LDYgQEAgY29uc3Qg c3RydWN0IHY0bDJfaW9jdGxfb3BzDQo+ICpnZXRfZW5jX3Y0bDJfaW9jdGxfb3BzKHZvaWQpOw0K PiAgc3RydWN0IHM1cF9tZmNfZm10ICpnZXRfZW5jX2RlZl9mbXQoYm9vbCBzcmMpOw0KPiAgaW50 IHM1cF9tZmNfZW5jX2N0cmxzX3NldHVwKHN0cnVjdCBzNXBfbWZjX2N0eCAqY3R4KTsNCj4gIHZv aWQgczVwX21mY19lbmNfY3RybHNfZGVsZXRlKHN0cnVjdCBzNXBfbWZjX2N0eCAqY3R4KTsNCj4g K3ZvaWQgczVwX21mY19lbmNfaW5pdChzdHJ1Y3QgczVwX21mY19jdHggKmN0eCk7DQo+DQo+ICAj ZW5kaWYgLyogUzVQX01GQ19FTkNfSF8gICovDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlh L3ZpZGVvL3M1cC1tZmMvczVwX21mY19pbnRyLmMNCj4gYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1 cC1tZmMvczVwX21mY19pbnRyLmMNCj4gaW5kZXggOGYyZjhiZi4uZGZkYzU1OCAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9tZmNfaW50ci5jDQo+ICsrKyBi L2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX2ludHIuYw0KPiBAQCAtMTcsNyAr MTcsNiBAQA0KPiAgI2luY2x1ZGUgPGxpbnV4L2lvLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvc2No ZWQuaD4NCj4gICNpbmNsdWRlIDxsaW51eC93YWl0Lmg+DQo+IC0jaW5jbHVkZSAicmVncy1tZmMu aCINCj4gICNpbmNsdWRlICJzNXBfbWZjX2NvbW1vbi5oIg0KPiAgI2luY2x1ZGUgInM1cF9tZmNf ZGVidWcuaCINCj4gICNpbmNsdWRlICJzNXBfbWZjX2ludHIuaCINCj4NCj4NCj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtbWZjL3M1cF9tZmNfb3ByLmMNCj4gPiBiL2Ry aXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBfbWZjX29wci5jDQo+ID4gaW5kZXggZTYyMTdj Yi4uMWZkOWM5MiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMv czVwX21mY19vcHIuYw0KPiA+ICsrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLW1mYy9zNXBf bWZjX29wci5jDQo+ID4gQEAgLTEyLDE1ICsxMiwxMiBAQA0KPiA+ICAgKiBwdWJsaXNoZWQgYnkg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCj4gPiAgICovDQo+ID4NCj4gPiAtI2luY2x1 ZGUgInJlZ3MtbWZjLmgiDQo+ID4gLSNpbmNsdWRlICJzNXBfbWZjX2NtZC5oIg0KPiA+ICAjaW5j bHVkZSAiczVwX21mY19jb21tb24uaCINCj4gPiArI2luY2x1ZGUgInM1cF9tZmNfY21kLmgiDQo+ ID4gICNpbmNsdWRlICJzNXBfbWZjX2N0cmwuaCINCj4gPiAgI2luY2x1ZGUgInM1cF9tZmNfZGVi dWcuaCINCj4gPiAgI2luY2x1ZGUgInM1cF9tZmNfaW50ci5oIg0KPiA+IC0jaW5jbHVkZSAiczVw X21mY19vcHIuaCINCj4gPiAgI2luY2x1ZGUgInM1cF9tZmNfcG0uaCINCj4gPiAtI2luY2x1ZGUg InM1cF9tZmNfc2htLmgiDQo+ID4gICNpbmNsdWRlIDxhc20vY2FjaGVmbHVzaC5oPg0KPiA+ICAj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gPiAgI2luY2x1ZGUgPGxpbnV4L2RtYS1tYXBwaW5n Lmg+DQo+ID4gQEAgLTM3LDM5ICszNCwzMSBAQA0KPiA+ICAvKiBBbGxvY2F0ZSB0ZW1wb3Jhcnkg YnVmZmVycyBmb3IgZGVjb2RpbmcgKi8NCj4gPiAgaW50IHM1cF9tZmNfYWxsb2NfZGVjX3RlbXBf YnVmZmVycyhzdHJ1Y3QgczVwX21mY19jdHggKmN0eCkNCj4gPiAgew0KPiA+IC0gICAgIHZvaWQg KmRlc2NfdmlydDsNCj4gPiAgICAgICBzdHJ1Y3QgczVwX21mY19kZXYgKmRldiA9IGN0eC0+ZGV2 Ow0KPiA+ICsgICAgIHN0cnVjdCBzNXBfbWZjX2J1Zl9zaXplX3Y1ICpidWZfc2l6ZSA9DQo+ID4g ZGV2LT52YXJpYW50LT5idWZfc2l6ZS0+cHJpdjsNCj4gPg0KPiA+IC0gICAgIGN0eC0+ZGVzY19i dWYgPSB2YjJfZG1hX2NvbnRpZ19tZW1vcHMuYWxsb2MoDQo+ID4gLSAgICAgICAgICAgICAgICAg ICAgIGRldi0+YWxsb2NfY3R4W01GQ19CQU5LMV9BTExPQ19DVFhdLA0KPiA+IERFU0NfQlVGX1NJ WkUpOw0KPiA+IC0gICAgIGlmIChJU19FUlJfVkFMVUUoKGludCljdHgtPmRlc2NfYnVmKSkgew0K PiA+IC0gICAgICAgICAgICAgY3R4LT5kZXNjX2J1ZiA9IE5VTEw7DQo+ID4gKyAgICAgY3R4LT5k c2MuYWxsb2MgPSB2YjJfZG1hX2NvbnRpZ19tZW1vcHMuYWxsb2MoDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgIGRldi0+YWxsb2NfY3R4W01GQ19CQU5LMV9BTExPQ19DVFhdLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICBidWZfc2l6ZS0+ZHNjKTsNCj4gPiArICAgICBpZiAoSVNfRVJSX1ZB TFVFKChpbnQpY3R4LT5kc2MuYWxsb2MpKSB7DQo+ID4gKyAgICAgICAgICAgICBjdHgtPmRzYy5h bGxvYyA9IE5VTEw7DQo+ID4gICAgICAgICAgICAgICBtZmNfZXJyKCJBbGxvY2F0aW5nIERFU0Mg YnVmZmVyIGZhaWxlZFxuIik7DQo+ID4gICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4g PiAgICAgICB9DQo+ID4gLSAgICAgY3R4LT5kZXNjX3BoeXMgPSBzNXBfbWZjX21lbV9jb29raWUo DQo+ID4gLSAgICAgICAgICAgICAgICAgICAgIGRldi0+YWxsb2NfY3R4W01GQ19CQU5LMV9BTExP Q19DVFhdLA0KPiA+IGN0eC0+ZGVzY19idWYpOw0KPiA+IC0gICAgIEJVR19PTihjdHgtPmRlc2Nf cGh5cyAmICgoMSA8PCBNRkNfQkFOSzFfQUxJR05fT1JERVIpIC0gMSkpOw0KPiA+IC0gICAgIGRl c2NfdmlydCA9IHZiMl9kbWFfY29udGlnX21lbW9wcy52YWRkcihjdHgtPmRlc2NfYnVmKTsNCj4g PiAtICAgICBpZiAoZGVzY192aXJ0ID09IE5VTEwpIHsNCj4gPiAtICAgICAgICAgICAgIHZiMl9k bWFfY29udGlnX21lbW9wcy5wdXQoY3R4LT5kZXNjX2J1Zik7DQo+ID4gLSAgICAgICAgICAgICBj dHgtPmRlc2NfcGh5cyA9IDA7DQo+ID4gLSAgICAgICAgICAgICBjdHgtPmRlc2NfYnVmID0gTlVM TDsNCj4gPiAtICAgICAgICAgICAgIG1mY19lcnIoIlJlbWFwcGluZyBERVNDIGJ1ZmZlciBmYWls ZWRcbiIpOw0KPiA+IC0gICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4gLSAgICAgfQ0K PiA+IC0gICAgIG1lbXNldChkZXNjX3ZpcnQsIDAsIERFU0NfQlVGX1NJWkUpOw0KPiA+IC0gICAg IHdtYigpOw0KPg0KPiBXaHkgd2FzIHRoaXMgcmVtb3ZlZD8NCj4gVGhlIGRyaXZlciBzaG91bGQg d29yayB3aXRoIG9sZGVyIGZpcm13YXJlIHZlcnNpb25zIG9uIEV4eW5vczQvUzVQQzExMC4NCj4g SSByZW1lbWJlciB0aGF0IHplcm9pbmcgdGhlIGRlc2MgYnVmZmVyIHdhcyAoYW5kIHN0aWxsIGlz PykgbWFuZGF0b3J5Lg0KPg0KDQpUaGlzIHdhcyByZW1vdmVkIGluIHRoZSBvcmlnaW5hbCBwYXRj aCBpdHNlbGYuIEkgdGVzdGVkIGl0IG9uIEV4eW5vczQgb3JpZ2VuIGJvYXJkDQphbmQgaXQgd29y a2VkIHdpdGhvdXQgYW55IHByb2JsZW1zLg0KQW55d2F5IG1lbXNldCBzZWVtcyBsb2dpY2FsIGFu ZCBJIHdpbGwgcmV2ZXJ0IHRoaXMgY2hhbmdlLg0KDQoNCj4gW3NuaXBdDQo+DQo+ID4NCj4gPiBA QCAtMTM5NSwzICsxNDcxLDIxIEBAIHZvaWQgczVwX21mY19jbGVhbnVwX3F1ZXVlKHN0cnVjdCBs aXN0X2hlYWQgKmxoLA0KPiA+IHN0cnVjdCB2YjJfcXVldWUgKnZxKQ0KPiA+ICAgICAgIH0NCj4g PiAgfQ0KPiA+DQo+ID4gK3ZvaWQgczVwX21mY19jbGVhcl9pbnRfZmxhZ3Moc3RydWN0IHM1cF9t ZmNfZGV2ICpkZXYpDQo+ID4gK3sNCj4gPiArICAgICBtZmNfd3JpdGUoZGV2LCAwLCBTNVBfRklN Vl9SSVNDX0hPU1RfSU5UKTsNCj4gPiArICAgICBtZmNfd3JpdGUoZGV2LCAwLCBTNVBfRklNVl9S SVNDMkhPU1RfQ01EKTsNCj4gPiArICAgICBtZmNfd3JpdGUoZGV2LCAweGZmZmYsIFM1UF9GSU1W X1NJX1JUTl9DSElEKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdm9pZCBzNXBfbWZjX3dyaXRlX2lu Zm8oc3RydWN0IHM1cF9tZmNfY3R4ICpjdHgsIHVuc2lnbmVkIGludCBkYXRhLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgb2ZzKQ0KPiA+ICt7DQo+ID4gKyAgICAgczVw X21mY193cml0ZV9zaG0oY3R4LCBkYXRhLCBvZnMpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICt1bnNp Z25lZCBpbnQgczVwX21mY19yZWFkX2luZm8oc3RydWN0IHM1cF9tZmNfY3R4ICpjdHgsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG9mcykNCj4gPiArew0K PiA+ICsgICAgIHJldHVybiBzNXBfbWZjX3JlYWRfc2htKGN0eCwgb2ZzKTsNCj4NCj4gQWJvdXQg czVwX21mY18qX3NobSBmdW5jdGlvbnMuIElmIHlvdSBhcmUgYWRkaW5nIHRoaXMga2luZCBvZiBz dXBwb3J0IGZvcg0KPiB0d28gdmFyaWFudHMgb2YgTUZDIHRoZW4gbWF5YmUgaXQgd291bGQgYmUg YSBnb29kIGlkZWEgdG8gcmVtb3ZlIHRoZQ0KPiBzNXBfbWZjX3NobS5jIGFuZCBzNXBfbWZjX3No bS5oIGZpbGVzIGFsdG9nZXRoZXIuIEFsbCByZWdpc3RlciBkZWZpbml0aW9ucw0KPiBhcmUgYWxy ZWFkeSBpbiB0aGUgcmVncy1tZmMuaCBhbmQgcmVncy1tZmMtdjYuaCBmaWxlcy4gSW5zdGVhZCBv ZiBjYWxsaW5nDQo+IHM1cF9tZmNfKl9zaG0gZnJvbSBzNXBfbWZjXypfaW5mbyBpdCBtaWdodCBi ZSBiZXR0ZXIgdG8gZG8gdGhlIGhhcmR3YXJlDQo+IGNhbGxzIHRoZXJlLiBBbHNvIHM1cF9tZmNf aW5pdF9zaG0gY2FuIGJlIG1vdmUgdG8NCj4gczVwX21mY19hbGxvY19pbnN0YW5jZV9idWZmZXIu DQo+DQoNClllcyByaWdodC4gSSB3aWxsIGNoYW5nZSBpdC4NCg0KPiA+ICt9DQo+DQo+IFtzbmlw XQ0KPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21m Y19wbS5jDQo+ID4gYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1tZmMvczVwX21mY19wbS5jDQo+ ID4gaW5kZXggNzM4YTYwNy4uNGZhMGI1NCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL21lZGlh L3ZpZGVvL3M1cC1tZmMvczVwX21mY19wbS5jDQo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS92aWRl by9zNXAtbWZjL3M1cF9tZmNfcG0uYw0KPiA+IEBAIC0yMCw3ICsyMCwxMSBAQA0KPiA+ICAjaW5j bHVkZSAiczVwX21mY19kZWJ1Zy5oIg0KPiA+ICAjaW5jbHVkZSAiczVwX21mY19wbS5oIg0KPiA+ DQo+ID4gLSNkZWZpbmUgTUZDX0NMS05BTUUgICAgICAgICAgInNjbGtfbWZjIg0KPiA+ICsjaWYg ZGVmaW5lZChDT05GSUdfVklERU9fU0FNU1VOR19TNVBfTUZDX1Y1KQ0KPiA+ICsjZGVmaW5lIE1G Q19DTEtOQU1FICAgICAgICAgICAgInNjbGtfbWZjIg0KPiA+ICsjZWxpZiBkZWZpbmVkKENPTkZJ R19WSURFT19TQU1TVU5HX1M1UF9NRkNfVjYpDQo+ID4gKyNkZWZpbmUgTUZDX0NMS05BTUUgICAg ICAgICAgICAiYWNsa18zMzMiDQo+ID4gKyNlbmRpZg0KPiA+ICAjZGVmaW5lIE1GQ19HQVRFX0NM S19OQU1FICAgICJtZmMiDQo+DQo+IE1heWJlIGl0IHdvdWxkIGJlIGJldHRlciB0byBjaGVjayB0 aGUgdmFyaWFudCBkdXJpbmcgaW5pdA0KPiB0aGFuIHVzZSBhIGRlZmluZS4NCj4NCg0KWWVzLiBJ IHdpbGwgY2hhbmdlIGl0Lg0KDQpSZWdhcmRzDQpBcnVu