From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E7AD89BB0 for ; Mon, 30 Dec 2019 12:06:54 +0000 (UTC) From: "Kahola, Mika" Date: Mon, 30 Dec 2019 12:06:51 +0000 Message-ID: References: <20191230034040.21943-1-imre.deak@intel.com> <20191230034040.21943-4-imre.deak@intel.com> In-Reply-To: <20191230034040.21943-4-imre.deak@intel.com> Content-Language: en-US Content-ID: <0AD237AF29ACEE4BB3221B914A60B861@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 03/10] lib/igt_buf: Extend igt_buf to include two color surfaces List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "Deak, Imre" List-ID: T24gTW9uLCAyMDE5LTEyLTMwIGF0IDA1OjQwICswMjAwLCBJbXJlIERlYWsgd3JvdGU6DQo+IFVW IEZCcyBoYXZlIHR3byBjb2xvciBzdXJmYWNlcyBzbyBleHRlbmQgdGhlIGlndF9idWYgc3RydWN0 DQo+IGFjY29yZGluZ2x5DQo+IHRvIHN1cHBvcnQgYmxpdHRpbmcgc3VjaCBGQnMuDQo+IA0KPiBU aGUgcGF0Y2ggaXMgcHJvZHVjZWQgd2l0aCB0aGUgY29jY2luZWxsZSBwYXRjaCBiZWxvdy4NCj4g DQo+IE5vIGZ1bmN0aW9uYWwgY2hhbmdlcy4NCg0KV2hlbiBhcHBseWluZyB0aGlzIHBhdGNoLCB0 aGUgY29tcGlsZXIgc3RhcnRlZCB0byBuYWcgYWJvdXQNCg0KWzc1LzY3Ml0gQ29tcGlsaW5nIEMg b2JqZWN0ICd0ZXN0cy81OTgzMGViQEBrbXNfY3Vyc29yX2NyY0BleGUva21zX2N1cnMNCm9yX2Ny Yy5jLm8nLg0KRkFJTEVEOiB0ZXN0cy81OTgzMGViQEBrbXNfY3Vyc29yX2NyY0BleGUva21zX2N1 cnNvcl9jcmMuYy5vDQpjY2FjaGUgY2MgLUl0ZXN0cy81OTgzMGViQEBrbXNfY3Vyc29yX2NyY0Bl eGUgLUl0ZXN0cyAtSS4uL3Rlc3RzDQotSS4uL2luY2x1ZGUvZHJtLXVhcGkgLUlsaWIgLUkuLi9s aWIgLUkuLi9saWIvc3R1YnMvc3lzY2FsbHMgLUkuIC1JLi4vDQotSS91c3IvaW5jbHVkZS9jYWly byAtSS91c3IvaW5jbHVkZS9nbGliLTIuMCAtSS91c3IvbGliL3g4Nl82NC1saW51eC0NCmdudS9n bGliLTIuMC9pbmNsdWRlIC1JL3Vzci9pbmNsdWRlL3BpeG1hbi0xIC1JL3Vzci9pbmNsdWRlL2Zy ZWV0eXBlMg0KLUkvdXNyL2luY2x1ZGUvbGlicG5nMTYgLUkvdXNyL2luY2x1ZGUvbGliZHJtIC1J L3Vzci9pbmNsdWRlL3g4Nl82NC0NCmxpbnV4LWdudSAtSS91c3IvaW5jbHVkZS9hbHNhIC1JL3Vz ci9pbmNsdWRlL2xpYmRybS9ub3V2ZWF1DQotZmRpYWdub3N0aWNzLWNvbG9yPWFsd2F5cyAtcGlw ZSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1XYWxsDQotV2ludmFsaWQtcGNoIC1XZXh0cmEgLXN0 ZD1nbnUxMSAtTzIgLWcgLURfR05VX1NPVVJDRSAtaW5jbHVkZSBjb25maWcuaA0KLURfRk9SVElG WV9TT1VSQ0U9MiAtV2JhZC1mdW5jdGlvbi1jYXN0IC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVt ZW50DQotV2Zvcm1hdD0yIC1XaW1wbGljaXQtZmFsbHRocm91Z2g9MCAtV2xvZ2ljYWwtb3AgLVdt aXNzaW5nLWRlY2xhcmF0aW9ucyANCi1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlIC1XbWlzc2lu Zy1ub3JldHVybiAtV21pc3NpbmctcHJvdG90eXBlcw0KLVduZXN0ZWQtZXh0ZXJucyAtV29sZC1z dHlsZS1kZWZpbml0aW9uIC1XcG9pbnRlci1hcml0aCAtV3JlZHVuZGFudC0NCmRlY2xzIC1Xc2hh ZG93IC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd1bmluaXRpYWxpemVkIC1XdW51c2VkIC1Xbm8tDQpj bG9iYmVyZWQgLVduby1tYXliZS11bmluaXRpYWxpemVkIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0 aWFsaXplcnMNCi1Xbm8tcG9pbnRlci1hcml0aCAtV25vLXNpZ24tY29tcGFyZSAtV25vLXR5cGUt bGltaXRzIC1Xbm8tdW51c2VkLQ0KcGFyYW1ldGVyIC1Xbm8tdW51c2VkLXJlc3VsdCAtV2Vycm9y PWFkZHJlc3MgLVdlcnJvcj1hcnJheS1ib3VuZHMNCi1XZXJyb3I9aW1wbGljaXQgLVdlcnJvcj1p bml0LXNlbGYgLVdlcnJvcj1pbnQtdG8tcG9pbnRlci1jYXN0DQotV2Vycm9yPW1haW4gLVdlcnJv cj1taXNzaW5nLWJyYWNlcyAtV2Vycm9yPW5vbm51bGwgLVdlcnJvcj1wb2ludGVyLXRvLQ0KaW50 LWNhc3QgLVdlcnJvcj1yZXR1cm4tdHlwZSAtV2Vycm9yPXNlcXVlbmNlLXBvaW50IC1XZXJyb3I9 dHJpZ3JhcGhzDQotV2Vycm9yPXdyaXRlLXN0cmluZ3MgLWZuby1idWlsdGluLW1hbGxvYyAtZm5v LWJ1aWx0aW4tY2FsbG9jDQotcHRocmVhZCAgLU1EIC1NUSAndGVzdHMvNTk4MzBlYkBAa21zX2N1 cnNvcl9jcmNAZXhlL2ttc19jdXJzb3JfY3JjLmMubw0KJyAtTUYgJ3Rlc3RzLzU5ODMwZWJAQGtt c19jdXJzb3JfY3JjQGV4ZS9rbXNfY3Vyc29yX2NyYy5jLm8uZCcgLW8NCid0ZXN0cy81OTgzMGVi QEBrbXNfY3Vyc29yX2NyY0BleGUva21zX2N1cnNvcl9jcmMuYy5vJyAtYw0KLi4vdGVzdHMva21z X2N1cnNvcl9jcmMuYw0KLi4vdGVzdHMva21zX2N1cnNvcl9jcmMuYzogSW4gZnVuY3Rpb24g4oCY c2NyYXRjaF9idWZfaW5pdOKAmToNCi4uL3Rlc3RzL2ttc19jdXJzb3JfY3JjLmM6Mzg4OjIxOiBl cnJvcjog4oCYc3RydWN0IGlndF9idWbigJkgaGFzIG5vIG1lbWJlcg0KbmFtZWQg4oCYc3RyaWRl 4oCZDQogIGRhdGEtPmlndGJvW2J1ZmZlcl0uc3RyaWRlID0gZGF0YS0+cHJpbWFyeV9mYltidWZm ZXJdLnN0cmlkZXNbMF07DQogICAgICAgICAgICAgICAgICAgICBeDQouLi90ZXN0cy9rbXNfY3Vy c29yX2NyYy5jOjM5MDoyMTogZXJyb3I6IOKAmHN0cnVjdCBpZ3RfYnVm4oCZIGhhcyBubyBtZW1i ZXINCm5hbWVkIOKAmHNpemXigJkNCiAgZGF0YS0+aWd0Ym9bYnVmZmVyXS5zaXplID0gZGF0YS0+ cHJpbWFyeV9mYltidWZmZXJdLnNpemU7DQogICAgICAgICAgICAgICAgICAgICBeDQpbODQvNjcy XSBDb21waWxpbmcgQyBvYmplY3QgJ3Rlc3RzLzU5ODMwZWJAQGttc19jdXJzb3JfbGVnYWN5QGV4 ZS9rbXNfYw0KdXJzb3JfbGVnYWN5LmMubycuDQpuaW5qYTogYnVpbGQgc3RvcHBlZDogc3ViY29t bWFuZCBmYWlsZWQuDQoNCj4gDQo+IEBADQo+IEBADQo+IA0KPiBzdHJ1Y3QgaWd0X2J1ZiB7DQo+ IAkuLi4NCj4gLQl1aW50MzJfdCBzdHJpZGU7DQo+IAkuLi4NCj4gLQl1aW50MzJfdCBzaXplOw0K PiArCXN0cnVjdCB7DQo+ICsJCXVpbnQzMl90IHN0cmlkZTsNCj4gKwkJdWludDMyX3Qgc2l6ZTsN Cj4gKwl9IHN1cmZhY2VbMl07DQo+IAkuLi4NCj4gfTsNCj4gDQo+IEBADQo+IHN0cnVjdCBpZ3Rf YnVmIGI7DQo+IEBADQo+IA0KPiA8Li4uDQo+ICgNCj4gLSBiLnN0cmlkZQ0KPiArIGIuc3VyZmFj ZVswXS5zdHJpZGUNCj4gPiANCj4gDQo+IC0gYi5zaXplDQo+ICsgYi5zdXJmYWNlWzBdLnNpemUN Cj4gKQ0KPiAuLi4+DQo+IA0KPiBAQA0KPiBzdHJ1Y3QgaWd0X2J1ZiAqYjsNCj4gQEANCj4gDQo+ IDwuLi4NCj4gKA0KPiAtIGItPnNpemUNCj4gKyBiLT5zdXJmYWNlWzBdLnNpemUNCj4gPiANCj4g DQo+IC0gYi0+c3RyaWRlDQo+ICsgYi0+c3VyZmFjZVswXS5zdHJpZGUNCj4gKQ0KPiAuLi4+DQo+ IA0KPiBAQA0KPiBpZGVudGlmaWVyIEk7DQo+IGV4cHJlc3Npb24gRTE7DQo+IGV4cHJlc3Npb24g RTI7DQo+IEBADQo+IA0KPiAoDQo+IHN0cnVjdCBpZ3RfYnVmIEkgPSB7DQo+IC0JLnNpemUgPSBF MSwNCj4gLQkuc3RyaWRlID0gRTIsDQo+ICsJLnN1cmZhY2VbMF0gPSB7DQo+ICsJCS5zaXplID0g RTEsDQo+ICsJCS5zdHJpZGUgPSBFMiwNCj4gKwl9LA0KPiB9Ow0KPiA+IA0KPiANCj4gc3RydWN0 IGlndF9idWYgSSA9IHsNCj4gLQkuc2l6ZSA9IEUxLA0KPiArCS5zdXJmYWNlWzBdID0gew0KPiAr CQkuc2l6ZSA9IEUxLA0KPiArCX0sDQo+IH07DQo+ID4gDQo+IA0KPiBzdHJ1Y3QgaWd0X2J1ZiBJ ID0gew0KPiAtCS5zdHJpZGUgPSBFMSwNCj4gKwkuc3VyZmFjZVswXSA9IHsNCj4gKwkJLnN0cmlk ZSA9IEUxLA0KPiArCX0sDQo+IH07DQo+ICkNCj4gDQo+IENjOiBNaWthIEthaG9sYSA8bWlrYS5r YWhvbGFAaW50ZWwuY29tPg0KPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0Bp bnRlbC5jb20+DQo+IC0tLQ0KPiAgbGliL2dwdV9jbWRzLmMgICAgICAgICAgICAgICAgICAgICAg IHwgIDQgKy0NCj4gIGxpYi9pZ3RfZHJhdy5jICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsr LS0NCj4gIGxpYi9pZ3RfZmIuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstDQo+ICBs aWIvaW50ZWxfYXV4X3BndGFibGUuYyAgICAgICAgICAgICAgfCAgNSArKy0NCj4gIGxpYi9pbnRl bF9iYXRjaGJ1ZmZlci5jICAgICAgICAgICAgICB8ICA4ICsrLS0NCj4gIGxpYi9pbnRlbF9iYXRj aGJ1ZmZlci5oICAgICAgICAgICAgICB8ICA2ICsrLQ0KPiAgbGliL3JlbmRlcmNvcHlfZ2VuNC5j ICAgICAgICAgICAgICAgIHwgIDQgKy0NCj4gIGxpYi9yZW5kZXJjb3B5X2dlbjYuYyAgICAgICAg ICAgICAgICB8ICA0ICstDQo+ICBsaWIvcmVuZGVyY29weV9nZW43LmMgICAgICAgICAgICAgICAg fCAgNCArLQ0KPiAgbGliL3JlbmRlcmNvcHlfZ2VuOC5jICAgICAgICAgICAgICAgIHwgIDQgKy0N Cj4gIGxpYi9yZW5kZXJjb3B5X2dlbjkuYyAgICAgICAgICAgICAgICB8ICA0ICstDQo+ICBsaWIv cmVuZGVyY29weV9pODMwLmMgICAgICAgICAgICAgICAgfCAgOCArKy0tDQo+ICBsaWIvcmVuZGVy Y29weV9pOTE1LmMgICAgICAgICAgICAgICAgfCAgOCArKy0tDQo+ICBsaWIvdmVib3hjb3B5X2dl bjEyLmMgICAgICAgICAgICAgICAgfCAgNiArKy0NCj4gIHRlc3RzL2k5MTUvZ2VtX2NvbmN1cnJl bnRfYWxsLmMgICAgICB8IDEwICsrKy0tDQo+ICB0ZXN0cy9pOTE1L2dlbV9ncGdwdV9maWxsLmMg ICAgICAgICAgfCAgNCArLQ0KPiAgdGVzdHMvaTkxNS9nZW1fbWVkaWFfZmlsbC5jICAgICAgICAg IHwgIDQgKy0NCj4gIHRlc3RzL2k5MTUvZ2VtX21lZGlhX3ZtZS5jICAgICAgICAgICB8ICA2ICst LQ0KPiAgdGVzdHMvaTkxNS9nZW1fcHBndHQuYyAgICAgICAgICAgICAgIHwgIDggKystLQ0KPiAg dGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3NwZWVkLmMgICAgIHwgMTAgKysrLS0NCj4gIHRlc3Rz L2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMgICAgICAgICB8IDM1ICsrKysrKysrKy0tLS0tLS0tDQo+ ICB0ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jICAgfCAgNCArLQ0KPiAgdGVzdHMv aTkxNS9nZW1fcmVuZGVyX2xpbmVhcl9ibGl0cy5jIHwgMjQgKysrKystLS0tLS0NCj4gIHRlc3Rz L2k5MTUvZ2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jICB8ICA4ICsrLS0NCj4gIHRlc3RzL2k5MTUv Z2VtX3Jpbmdfc3luY19jb3B5LmMgICAgICB8ICA0ICstDQo+ICB0ZXN0cy9pOTE1L2dlbV9zdHJl c3MuYyAgICAgICAgICAgICAgfCA1OSArKysrKysrKysrKysrKystLS0tLS0tLS0tLQ0KPiAtLQ0K PiAgdGVzdHMvaTkxNS9pOTE1X3BtX3NzZXUuYyAgICAgICAgICAgIHwgIDcgKystLQ0KPiAgdGVz dHMva21zX2JpZ19mYi5jICAgICAgICAgICAgICAgICAgIHwgMTAgKysrLS0NCj4gIHRlc3RzL2tt c19wc3IuYyAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstDQo+ICB0ZXN0cy9wZXJmLmMgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgNCArLQ0KPiAgMzAgZmlsZXMgY2hhbmdlZCwgMTQ5IGlu c2VydGlvbnMoKyksIDEyOSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9saWIvZ3B1 X2NtZHMuYyBiL2xpYi9ncHVfY21kcy5jDQo+IGluZGV4IDhkMjcwZWU4Li43OTQxMjcyNSAxMDA2 NDQNCj4gLS0tIGEvbGliL2dwdV9jbWRzLmMNCj4gKysrIGIvbGliL2dwdV9jbWRzLmMNCj4gQEAg LTExOSw3ICsxMTksNyBAQCBnZW43X2ZpbGxfc3VyZmFjZV9zdGF0ZShzdHJ1Y3QgaW50ZWxfYmF0 Y2hidWZmZXINCj4gKmJhdGNoLA0KPiAgCXNzLT5zczIuaGVpZ2h0ID0gaWd0X2J1Zl9oZWlnaHQo YnVmKSAtIDE7DQo+ICAJc3MtPnNzMi53aWR0aCAgPSBpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxOw0K PiAgDQo+IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYtPnN0cmlkZSAtIDE7DQo+ICsJc3MtPnNzMy5w aXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMTsNCj4gIA0KPiAgCXNzLT5zczcuc2hh ZGVyX2NoYW5lbF9zZWxlY3RfciA9IDQ7DQo+ICAJc3MtPnNzNy5zaGFkZXJfY2hhbmVsX3NlbGVj dF9nID0gNTsNCj4gQEAgLTQyMiw3ICs0MjIsNyBAQCBnZW44X2ZpbGxfc3VyZmFjZV9zdGF0ZShz dHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXINCj4gKmJhdGNoLA0KPiAgDQo+ICAJc3MtPnNzMi5oZWln aHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsNCj4gIAlzcy0+c3MyLndpZHRoICA9IGlndF9i dWZfd2lkdGgoYnVmKSAtIDE7DQo+IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYtPnN0cmlkZSAtIDE7 DQo+ICsJc3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMTsNCj4gIA0K PiAgCXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfciA9IDQ7DQo+ICAJc3MtPnNzNy5zaGFk ZXJfY2hhbmVsX3NlbGVjdF9nID0gNTsNCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHJhdy5jIGIv bGliL2lndF9kcmF3LmMNCj4gaW5kZXggN2UwZWRlYzEuLjY5NTBiYzQ5IDEwMDY0NA0KPiAtLS0g YS9saWIvaWd0X2RyYXcuYw0KPiArKysgYi9saWIvaWd0X2RyYXcuYw0KPiBAQCAtNjAzLDE0ICs2 MDMsMTQgQEAgc3RhdGljIHZvaWQgZHJhd19yZWN0X3JlbmRlcihpbnQgZmQsIHN0cnVjdA0KPiBj bWRfZGF0YSAqY21kX2RhdGEsDQo+ICAJaWd0X2Fzc2VydChkc3QpOw0KPiAgDQo+ICAJc3JjX2J1 Zi5ibyA9IHNyYzsNCj4gLQlzcmNfYnVmLnN0cmlkZSA9IHRtcC5zdHJpZGU7DQo+ICsJc3JjX2J1 Zi5zdXJmYWNlWzBdLnN0cmlkZSA9IHRtcC5zdHJpZGU7DQo+ICAJc3JjX2J1Zi50aWxpbmcgPSBJ OTE1X1RJTElOR19OT05FOw0KPiAtCXNyY19idWYuc2l6ZSA9IHRtcC5zaXplOw0KPiArCXNyY19i dWYuc3VyZmFjZVswXS5zaXplID0gdG1wLnNpemU7DQo+ICAJc3JjX2J1Zi5icHAgPSB0bXAuYnBw Ow0KPiAgCWRzdF9idWYuYm8gPSBkc3Q7DQo+IC0JZHN0X2J1Zi5zdHJpZGUgPSBidWYtPnN0cmlk ZTsNCj4gKwlkc3RfYnVmLnN1cmZhY2VbMF0uc3RyaWRlID0gYnVmLT5zdHJpZGU7DQo+ICAJZHN0 X2J1Zi50aWxpbmcgPSB0aWxpbmc7DQo+IC0JZHN0X2J1Zi5zaXplID0gYnVmLT5zaXplOw0KPiAr CWRzdF9idWYuc3VyZmFjZVswXS5zaXplID0gYnVmLT5zaXplOw0KPiAgCWRzdF9idWYuYnBwID0g YnVmLT5icHA7DQo+ICANCj4gIAliYXRjaCA9IGludGVsX2JhdGNoYnVmZmVyX2FsbG9jKGNtZF9k YXRhLT5idWZtZ3IsIGRldmlkKTsNCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZmIuYyBiL2xpYi9p Z3RfZmIuYw0KPiBpbmRleCAwZTFiODQ5My4uY2MwZmIzNzMgMTAwNjQ0DQo+IC0tLSBhL2xpYi9p Z3RfZmIuYw0KPiArKysgYi9saWIvaWd0X2ZiLmMNCj4gQEAgLTE5NzcsOSArMTk3Nyw5IEBAIHN0 YXRpYyB2b2lkIGluaXRfYnVmKHN0cnVjdCBmYl9ibGl0X3VwbG9hZA0KPiAqYmxpdCwNCj4gIAli dWYtPmJvID0gZ2VtX2hhbmRsZV90b19saWJkcm1fYm8oYmxpdC0+YnVmbWdyLCBibGl0LT5mZCwN Cj4gIAkJCQkJICBuYW1lLCBmYi0+Z2VtX2hhbmRsZSk7DQo+ICAJYnVmLT50aWxpbmcgPSBpZ3Rf ZmJfbW9kX3RvX3RpbGluZyhmYi0+bW9kaWZpZXIpOw0KPiAtCWJ1Zi0+c3RyaWRlID0gZmItPnN0 cmlkZXNbMF07DQo+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IGZiLT5zdHJpZGVzWzBdOw0K PiAgCWJ1Zi0+YnBwID0gZmItPnBsYW5lX2JwcFswXTsNCj4gLQlidWYtPnNpemUgPSBmYi0+c2l6 ZTsNCj4gKwlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IGZiLT5zaXplOw0KPiAgDQo+ICAJaWYgKGlz X2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKSB7DQo+ICAJCWlndF9hc3NlcnRfZXEoZmItPnN0 cmlkZXNbMF0gJiAxMjcsIDApOw0KPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2F1eF9wZ3RhYmxl LmMgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYw0KPiBpbmRleCBkYWI4M2E5YS4uNWFkZGIyZTIg MTAwNjQ0DQo+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jDQo+ICsrKyBiL2xpYi9pbnRl bF9hdXhfcGd0YWJsZS5jDQo+IEBAIC03Nyw3ICs3Nyw4IEBAIHBndF90YWJsZV9jb3VudChpbnQg YWRkcmVzc19iaXRzLCBjb25zdCBzdHJ1Y3QNCj4gaWd0X2J1ZiAqKmJ1ZnMsIGludCBidWZfY291 bnQpDQo+ICAJCS8qIEF2b2lkIGRvdWJsZSBjb3VudGluZyBmb3Igb3ZlcmxhcHBpbmcgYWxpZ25l ZCBidWZzLg0KPiAqLw0KPiAgCQlzdGFydCA9IG1heChzdGFydCwgZW5kKTsNCj4gIA0KPiAtCQll bmQgPSBBTElHTihidWYtPmJvLT5vZmZzZXQ2NCArIGJ1Zi0+c2l6ZSwgMVVMIDw8DQo+IGFkZHJl c3NfYml0cyk7DQo+ICsJCWVuZCA9IEFMSUdOKGJ1Zi0+Ym8tPm9mZnNldDY0ICsgYnVmLT5zdXJm YWNlWzBdLnNpemUsDQo+ICsJCQkgICAgMVVMIDw8IGFkZHJlc3NfYml0cyk7DQo+ICAJCWlndF9h c3NlcnQoZW5kID49IHN0YXJ0KTsNCj4gIA0KPiAgCQljb3VudCArPSAoZW5kIC0gc3RhcnQpID4+ IGFkZHJlc3NfYml0czsNCj4gQEAgLTI1NSw3ICsyNTYsNyBAQCBwZ3RfcG9wdWxhdGVfZW50cmll c19mb3JfYnVmKHN0cnVjdCBwZ3RhYmxlICpwZ3QsDQo+ICAJCQkgICAgICAgdWludDY0X3QgdG9w X3RhYmxlKQ0KPiAgew0KPiAgCXVpbnQ2NF90IHN1cmZhY2VfYWRkciA9IGJ1Zi0+Ym8tPm9mZnNl dDY0Ow0KPiAtCXVpbnQ2NF90IHN1cmZhY2VfZW5kID0gc3VyZmFjZV9hZGRyICsgYnVmLT5zaXpl Ow0KPiArCXVpbnQ2NF90IHN1cmZhY2VfZW5kID0gc3VyZmFjZV9hZGRyICsgYnVmLT5zdXJmYWNl WzBdLnNpemU7DQo+ICAJdWludDY0X3QgYXV4X2FkZHIgPSBidWYtPmJvLT5vZmZzZXQ2NCArIGJ1 Zi0+Y2NzWzBdLm9mZnNldDsNCj4gIAl1aW50NjRfdCBsMV9mbGFncyA9IHBndF9nZXRfbDFfZmxh Z3MoYnVmKTsNCj4gIAl1aW50NjRfdCBseF9mbGFncyA9IHBndF9nZXRfbHhfZmxhZ3MoKTsNCj4g ZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jIGIvbGliL2ludGVsX2JhdGNoYnVm ZmVyLmMNCj4gaW5kZXggNTFhYWU0ZGMuLjNkYzg5MDI0IDEwMDY0NA0KPiAtLS0gYS9saWIvaW50 ZWxfYmF0Y2hidWZmZXIuYw0KPiArKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYw0KPiBAQCAt NTEyLDcgKzUxMiw3IEBAIGludGVsX2NvcHlfYm8oc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpi YXRjaCwNCj4gICAqLw0KPiAgdW5zaWduZWQgaWd0X2J1Zl93aWR0aChjb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmKQ0KPiAgew0KPiAtCXJldHVybiBidWYtPnN0cmlkZS8oYnVmLT5icHAgLyA4KTsN Cj4gKwlyZXR1cm4gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZS8oYnVmLT5icHAgLyA4KTsNCj4gIH0N Cj4gIA0KPiAgLyoqDQo+IEBAIC01MjYsNyArNTI2LDcgQEAgdW5zaWduZWQgaWd0X2J1Zl93aWR0 aChjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQ0KPiAgICovDQo+ICB1bnNpZ25lZCBpZ3RfYnVm X2hlaWdodChjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmKQ0KPiAgew0KPiAtCXJldHVybiBidWYt PnNpemUvYnVmLT5zdHJpZGU7DQo+ICsJcmV0dXJuIGJ1Zi0+c3VyZmFjZVswXS5zaXplL2J1Zi0+ c3VyZmFjZVswXS5zdHJpZGU7DQo+ICB9DQo+ICANCj4gIC8qDQo+IEBAIC03ODUsOCArNzg1LDgg QEAgdm9pZCBpZ3RfYmxpdHRlcl9mYXN0X2NvcHkoc3RydWN0DQo+IGludGVsX2JhdGNoYnVmZmVy ICpiYXRjaCwNCj4gIA0KPiAgCWlndF9hc3NlcnQoc3JjLT5icHAgPT0gZHN0LT5icHApOw0KPiAg DQo+IC0Jc3JjX3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKHNyYy0+c3RyaWRlLCBzcmMtPnRpbGlu Zyk7DQo+IC0JZHN0X3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKGRzdC0+c3RyaWRlLCBzcmMtPnRp bGluZyk7DQo+ICsJc3JjX3BpdGNoID0gZmFzdF9jb3B5X3BpdGNoKHNyYy0+c3VyZmFjZVswXS5z dHJpZGUsIHNyYy0NCj4gPnRpbGluZyk7DQo+ICsJZHN0X3BpdGNoID0gZmFzdF9jb3B5X3BpdGNo KGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsIHNyYy0NCj4gPnRpbGluZyk7DQo+ICAJZHdvcmQwID0g ZmFzdF9jb3B5X2R3b3JkMChzcmMtPnRpbGluZywgZHN0LT50aWxpbmcpOw0KPiAgCWR3b3JkMSA9 IGZhc3RfY29weV9kd29yZDEoc3JjLT50aWxpbmcsIGRzdC0+dGlsaW5nLCBkc3QtPmJwcCk7DQo+ ICANCj4gZGlmZiAtLWdpdCBhL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5oIGIvbGliL2ludGVsX2Jh dGNoYnVmZmVyLmgNCj4gaW5kZXggNjNkMzIxODguLjY5NTgwODM5IDEwMDY0NA0KPiAtLS0gYS9s aWIvaW50ZWxfYmF0Y2hidWZmZXIuaA0KPiArKysgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuaA0K PiBAQCAtMjMyLDEyICsyMzIsMTQgQEAgZW51bSBpOTE1X2NvbXByZXNzaW9uIHsNCj4gICAqLw0K PiAgc3RydWN0IGlndF9idWYgew0KPiAgCWRybV9pbnRlbF9ibyAqYm87DQo+IC0JdWludDMyX3Qg c3RyaWRlOw0KPiAgCXVpbnQzMl90IHRpbGluZzsNCj4gIAllbnVtIGk5MTVfY29tcHJlc3Npb24g Y29tcHJlc3Npb247DQo+ICAJdWludDMyX3QgYnBwOw0KPiAgCXVpbnQzMl90ICpkYXRhOw0KPiAt CXVpbnQzMl90IHNpemU7DQo+ICsJc3RydWN0IHsNCj4gKwkJdWludDMyX3Qgc3RyaWRlOw0KPiAr CQl1aW50MzJfdCBzaXplOw0KPiArCX0gc3VyZmFjZVsyXTsNCj4gIAlzdHJ1Y3Qgew0KPiAgCQl1 aW50MzJfdCBvZmZzZXQ7DQo+ICAJCXVpbnQzMl90IHN0cmlkZTsNCj4gZGlmZiAtLWdpdCBhL2xp Yi9yZW5kZXJjb3B5X2dlbjQuYyBiL2xpYi9yZW5kZXJjb3B5X2dlbjQuYw0KPiBpbmRleCA0MmRl NzdmOS4uZDA3YjhlNDggMTAwNjQ0DQo+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjQuYw0KPiAr KysgYi9saWIvcmVuZGVyY29weV9nZW40LmMNCj4gQEAgLTE0Miw3ICsxNDIsNyBAQCBnZW40X2Jp bmRfYnVmKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsDQo+ICAJdWludDMyX3Qgd3Jp dGVfZG9tYWluLCByZWFkX2RvbWFpbjsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+IC0JaWd0X2Fzc2Vy dF9sdGUoYnVmLT5zdHJpZGUsIDEyOCoxMDI0KTsNCj4gKwlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN1 cmZhY2VbMF0uc3RyaWRlLCAxMjgqMTAyNCk7DQo+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl93 aWR0aChidWYpLCA4MTkyKTsNCj4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX2hlaWdodChidWYp LCA4MTkyKTsNCj4gIA0KPiBAQCAtMTc2LDcgKzE3Niw3IEBAIGdlbjRfYmluZF9idWYoc3RydWN0 IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4gIA0KPiAgCXNzLT5zczIuaGVpZ2h0ID0gaWd0 X2J1Zl9oZWlnaHQoYnVmKSAtIDE7DQo+ICAJc3MtPnNzMi53aWR0aCAgPSBpZ3RfYnVmX3dpZHRo KGJ1ZikgLSAxOw0KPiAtCXNzLT5zczMucGl0Y2ggID0gYnVmLT5zdHJpZGUgLSAxOw0KPiArCXNz LT5zczMucGl0Y2ggID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAtIDE7DQo+ICAJc3MtPnNzMy50 aWxlZF9zdXJmYWNlID0gYnVmLT50aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9ORTsNCj4gIAlzcy0+ c3MzLnRpbGVfd2FsayAgICAgPSBidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19ZOw0KPiAgDQo+ IGRpZmYgLS1naXQgYS9saWIvcmVuZGVyY29weV9nZW42LmMgYi9saWIvcmVuZGVyY29weV9nZW42 LmMNCj4gaW5kZXggODNjN2Q2OTQuLjg3MDM0Nzc0IDEwMDY0NA0KPiAtLS0gYS9saWIvcmVuZGVy Y29weV9nZW42LmMNCj4gKysrIGIvbGliL3JlbmRlcmNvcHlfZ2VuNi5jDQo+IEBAIC03OSw3ICs3 OSw3IEBAIGdlbjZfYmluZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4g Y29uc3Qgc3RydWN0IGlndF9idWYgKmJ1ZiwNCj4gIAl1aW50MzJfdCB3cml0ZV9kb21haW4sIHJl YWRfZG9tYWluOw0KPiAgCWludCByZXQ7DQo+ICANCj4gLQlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN0 cmlkZSwgMTI4KjEwMjQpOw0KPiArCWlndF9hc3NlcnRfbHRlKGJ1Zi0+c3VyZmFjZVswXS5zdHJp ZGUsIDEyOCoxMDI0KTsNCj4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX3dpZHRoKGJ1ZiksIDgx OTIpOw0KPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KGJ1ZiksIDgxOTIpOw0KPiAg DQo+IEBAIC0xMTMsNyArMTEzLDcgQEAgZ2VuNl9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLA0KPiBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgDQo+ICAJc3Mt PnNzMi5oZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsNCj4gIAlzcy0+c3MyLndpZHRo ICA9IGlndF9idWZfd2lkdGgoYnVmKSAtIDE7DQo+IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYtPnN0 cmlkZSAtIDE7DQo+ICsJc3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0g MTsNCj4gIAlzcy0+c3MzLnRpbGVkX3N1cmZhY2UgPSBidWYtPnRpbGluZyAhPSBJOTE1X1RJTElO R19OT05FOw0KPiAgCXNzLT5zczMudGlsZV93YWxrICAgICA9IGJ1Zi0+dGlsaW5nID09IEk5MTVf VElMSU5HX1k7DQo+ICANCj4gZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5X2dlbjcuYyBiL2xp Yi9yZW5kZXJjb3B5X2dlbjcuYw0KPiBpbmRleCBhM2M4YjdmMy4uYjg4Yjc1ZTkgMTAwNjQ0DQo+ IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjcuYw0KPiArKysgYi9saWIvcmVuZGVyY29weV9nZW43 LmMNCj4gQEAgLTY1LDcgKzY1LDcgQEAgZ2VuN19iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hi dWZmZXIgKmJhdGNoLA0KPiAgCXVpbnQzMl90IHdyaXRlX2RvbWFpbiwgcmVhZF9kb21haW47DQo+ ICAJaW50IHJldDsNCj4gIA0KPiAtCWlndF9hc3NlcnRfbHRlKGJ1Zi0+c3RyaWRlLCAyNTYqMTAy NCk7DQo+ICsJaWd0X2Fzc2VydF9sdGUoYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSwgMjU2KjEwMjQp Ow0KPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfd2lkdGgoYnVmKSwgMTYzODQpOw0KPiAgCWln dF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KGJ1ZiksIDE2Mzg0KTsNCj4gIA0KPiBAQCAtOTIs NyArOTIsNyBAQCBnZW43X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gs DQo+ICAJc3NbMV0gPSBidWYtPmJvLT5vZmZzZXQ7DQo+ICAJc3NbMl0gPSAoKGlndF9idWZfd2lk dGgoYnVmKSAtIDEpICA8PCBHRU43X1NVUkZBQ0VfV0lEVEhfU0hJRlQNCj4gfA0KPiAgCQkgKGln dF9idWZfaGVpZ2h0KGJ1ZikgLSAxKSA8PA0KPiBHRU43X1NVUkZBQ0VfSEVJR0hUX1NISUZUKTsN Cj4gLQlzc1szXSA9IChidWYtPnN0cmlkZSAtIDEpIDw8IEdFTjdfU1VSRkFDRV9QSVRDSF9TSElG VDsNCj4gKwlzc1szXSA9IChidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMSkgPDwNCj4gR0VON19T VVJGQUNFX1BJVENIX1NISUZUOw0KPiAgCXNzWzRdID0gMDsNCj4gIAlpZiAoSVNfVkFMTEVZVklF VyhiYXRjaC0+ZGV2aWQpKQ0KPiAgCQlzc1s1XSA9IFZMVl9NT0NTX0wzIDw8IDE2Ow0KPiBkaWZm IC0tZ2l0IGEvbGliL3JlbmRlcmNvcHlfZ2VuOC5jIGIvbGliL3JlbmRlcmNvcHlfZ2VuOC5jDQo+ IGluZGV4IGUyMmQ4NTAxLi44ZTAyZDg0NiAxMDA2NDQNCj4gLS0tIGEvbGliL3JlbmRlcmNvcHlf Z2VuOC5jDQo+ICsrKyBiL2xpYi9yZW5kZXJjb3B5X2dlbjguYw0KPiBAQCAtMTUxLDcgKzE1MSw3 IEBAIGdlbjhfYmluZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4gIAl1 aW50MzJfdCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluLCBvZmZzZXQ7DQo+ICAJaW50IHJldDsN Cj4gIA0KPiAtCWlndF9hc3NlcnRfbHRlKGJ1Zi0+c3RyaWRlLCAyNTYqMTAyNCk7DQo+ICsJaWd0 X2Fzc2VydF9sdGUoYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSwgMjU2KjEwMjQpOw0KPiAgCWlndF9h c3NlcnRfbHRlKGlndF9idWZfd2lkdGgoYnVmKSwgMTYzODQpOw0KPiAgCWlndF9hc3NlcnRfbHRl KGlndF9idWZfaGVpZ2h0KGJ1ZiksIDE2Mzg0KTsNCj4gIA0KPiBAQCAtMTk5LDcgKzE5OSw3IEBA IGdlbjhfYmluZF9idWYoc3RydWN0IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4gIA0KPiAg CXNzLT5zczIuaGVpZ2h0ID0gaWd0X2J1Zl9oZWlnaHQoYnVmKSAtIDE7DQo+ICAJc3MtPnNzMi53 aWR0aCAgPSBpZ3RfYnVmX3dpZHRoKGJ1ZikgLSAxOw0KPiAtCXNzLT5zczMucGl0Y2ggID0gYnVm LT5zdHJpZGUgLSAxOw0KPiArCXNzLT5zczMucGl0Y2ggID0gYnVmLT5zdXJmYWNlWzBdLnN0cmlk ZSAtIDE7DQo+ICANCj4gIAlzcy0+c3M3LnNoYWRlcl9jaGFuZWxfc2VsZWN0X3IgPSA0Ow0KPiAg CXNzLT5zczcuc2hhZGVyX2NoYW5lbF9zZWxlY3RfZyA9IDU7DQo+IGRpZmYgLS1naXQgYS9saWIv cmVuZGVyY29weV9nZW45LmMgYi9saWIvcmVuZGVyY29weV9nZW45LmMNCj4gaW5kZXggNGQ0NTQx ZTMuLjgzNWM4ZDgwIDEwMDY0NA0KPiAtLS0gYS9saWIvcmVuZGVyY29weV9nZW45LmMNCj4gKysr IGIvbGliL3JlbmRlcmNvcHlfZ2VuOS5jDQo+IEBAIC0xOTksNyArMTk5LDcgQEAgZ2VuOF9iaW5k X2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLA0KPiBjb25zdCBzdHJ1Y3QgaWd0 X2J1ZiAqYnVmLA0KPiAgCXVpbnQzMl90IHdyaXRlX2RvbWFpbiwgcmVhZF9kb21haW4sIG9mZnNl dDsNCj4gIAlpbnQgcmV0Ow0KPiAgDQo+IC0JaWd0X2Fzc2VydF9sdGUoYnVmLT5zdHJpZGUsIDI1 NioxMDI0KTsNCj4gKwlpZ3RfYXNzZXJ0X2x0ZShidWYtPnN1cmZhY2VbMF0uc3RyaWRlLCAyNTYq MTAyNCk7DQo+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl93aWR0aChidWYpLCAxNjM4NCk7DQo+ ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoYnVmKSwgMTYzODQpOw0KPiAgDQo+IEBA IC0yNTAsNyArMjUwLDcgQEAgZ2VuOF9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIg KmJhdGNoLA0KPiBjb25zdCBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgDQo+ICAJc3MtPnNzMi5o ZWlnaHQgPSBpZ3RfYnVmX2hlaWdodChidWYpIC0gMTsNCj4gIAlzcy0+c3MyLndpZHRoICA9IGln dF9idWZfd2lkdGgoYnVmKSAtIDE7DQo+IC0Jc3MtPnNzMy5waXRjaCAgPSBidWYtPnN0cmlkZSAt IDE7DQo+ICsJc3MtPnNzMy5waXRjaCAgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlIC0gMTsNCj4g IA0KPiAgCXNzLT5zczcuc2tsLnNoYWRlcl9jaGFuZWxfc2VsZWN0X3IgPSA0Ow0KPiAgCXNzLT5z czcuc2tsLnNoYWRlcl9jaGFuZWxfc2VsZWN0X2cgPSA1Ow0KPiBkaWZmIC0tZ2l0IGEvbGliL3Jl bmRlcmNvcHlfaTgzMC5jIGIvbGliL3JlbmRlcmNvcHlfaTgzMC5jDQo+IGluZGV4IGU4YzA0NzE4 Li5jYTgxNTEyMiAxMDA2NDQNCj4gLS0tIGEvbGliL3JlbmRlcmNvcHlfaTgzMC5jDQo+ICsrKyBi L2xpYi9yZW5kZXJjb3B5X2k4MzAuYw0KPiBAQCAtMTM4LDcgKzEzOCw3IEBAIHN0YXRpYyB2b2lk IGdlbjJfZW1pdF90YXJnZXQoc3RydWN0DQo+IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4g IAl1aW50MzJfdCB0aWxpbmc7DQo+ICAJdWludDMyX3QgZm9ybWF0Ow0KPiAgDQo+IC0JaWd0X2Fz c2VydF9sdGUoZHN0LT5zdHJpZGUsIDgxOTIpOw0KPiArCWlndF9hc3NlcnRfbHRlKGRzdC0+c3Vy ZmFjZVswXS5zdHJpZGUsIDgxOTIpOw0KPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfd2lkdGgo ZHN0KSwgMjA0OCk7DQo+ICAJaWd0X2Fzc2VydF9sdGUoaWd0X2J1Zl9oZWlnaHQoZHN0KSwgMjA0 OCk7DQo+ICANCj4gQEAgLTE1Niw3ICsxNTYsNyBAQCBzdGF0aWMgdm9pZCBnZW4yX2VtaXRfdGFy Z2V0KHN0cnVjdA0KPiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsDQo+ICAJCXRpbGluZyB8PSBC VUZfM0RfVElMRV9XQUxLX1k7DQo+ICANCj4gIAlPVVRfQkFUQ0goXzNEU1RBVEVfQlVGX0lORk9f Q01EKTsNCj4gLQlPVVRfQkFUQ0goQlVGXzNEX0lEX0NPTE9SX0JBQ0sgfCB0aWxpbmcgfCBCVUZf M0RfUElUQ0goZHN0LQ0KPiA+c3RyaWRlKSk7DQo+ICsJT1VUX0JBVENIKEJVRl8zRF9JRF9DT0xP Ul9CQUNLIHwgdGlsaW5nIHwgQlVGXzNEX1BJVENIKGRzdC0NCj4gPnN1cmZhY2VbMF0uc3RyaWRl KSk7DQo+ICAJT1VUX1JFTE9DKGRzdC0+Ym8sIEk5MTVfR0VNX0RPTUFJTl9SRU5ERVIsDQo+IEk5 MTVfR0VNX0RPTUFJTl9SRU5ERVIsIDApOw0KPiAgDQo+ICAJT1VUX0JBVENIKF8zRFNUQVRFX0RT VF9CVUZfVkFSU19DTUQpOw0KPiBAQCAtMTc5LDcgKzE3OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjJf ZW1pdF90ZXh0dXJlKHN0cnVjdA0KPiBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsDQo+ICAJdWlu dDMyX3QgdGlsaW5nOw0KPiAgCXVpbnQzMl90IGZvcm1hdDsNCj4gIA0KPiAtCWlndF9hc3NlcnRf bHRlKHNyYy0+c3RyaWRlLCA4MTkyKTsNCj4gKwlpZ3RfYXNzZXJ0X2x0ZShzcmMtPnN1cmZhY2Vb MF0uc3RyaWRlLCA4MTkyKTsNCj4gIAlpZ3RfYXNzZXJ0X2x0ZShpZ3RfYnVmX3dpZHRoKHNyYyks IDIwNDgpOw0KPiAgCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KHNyYyksIDIwNDgpOw0K PiAgDQo+IEBAIC0yMDEsNyArMjAxLDcgQEAgc3RhdGljIHZvaWQgZ2VuMl9lbWl0X3RleHR1cmUo c3RydWN0DQo+IGludGVsX2JhdGNoYnVmZmVyICpiYXRjaCwNCj4gIAlPVVRfQkFUQ0goKGlndF9i dWZfaGVpZ2h0KHNyYykgLSAxKSA8PCBUTTBTMV9IRUlHSFRfU0hJRlQgfA0KPiAgCQkgIChpZ3Rf YnVmX3dpZHRoKHNyYykgLSAxKSA8PCBUTTBTMV9XSURUSF9TSElGVCB8DQo+ICAJCSAgZm9ybWF0 IHwgdGlsaW5nKTsNCj4gLQlPVVRfQkFUQ0goKHNyYy0+c3RyaWRlIC8gNCAtIDEpIDw8IFRNMFMy X1BJVENIX1NISUZUIHwNCj4gVE0wUzJfTUFQXzJEKTsNCj4gKwlPVVRfQkFUQ0goKHNyYy0+c3Vy ZmFjZVswXS5zdHJpZGUgLyA0IC0gMSkgPDwgVE0wUzJfUElUQ0hfU0hJRlQNCj4gfCBUTTBTMl9N QVBfMkQpOw0KPiAgCU9VVF9CQVRDSChGSUxURVJfTkVBUkVTVCA8PCBUTTBTM19NQUdfRklMVEVS X1NISUZUIHwNCj4gIAkJICBGSUxURVJfTkVBUkVTVCA8PCBUTTBTM19NSU5fRklMVEVSX1NISUZU IHwNCj4gIAkJICBNSVBGSUxURVJfTk9ORSA8PCBUTTBTM19NSVBfRklMVEVSX1NISUZUKTsNCj4g ZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5X2k5MTUuYyBiL2xpYi9yZW5kZXJjb3B5X2k5MTUu Yw0KPiBpbmRleCAxYmFhN2ExYi4uNTZlMTg2M2UgMTAwNjQ0DQo+IC0tLSBhL2xpYi9yZW5kZXJj b3B5X2k5MTUuYw0KPiArKysgYi9saWIvcmVuZGVyY29weV9pOTE1LmMNCj4gQEAgLTg4LDcgKzg4 LDcgQEAgdm9pZCBnZW4zX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmF0Y2hidWZmZXIN Cj4gKmJhdGNoLA0KPiAgI2RlZmluZSBURVhfQ09VTlQgMQ0KPiAgCQl1aW50MzJfdCBmb3JtYXRf Yml0cywgdGlsaW5nX2JpdHMgPSAwOw0KPiAgDQo+IC0JCWlndF9hc3NlcnRfbHRlKHNyYy0+c3Ry aWRlLCA4MTkyKTsNCj4gKwkJaWd0X2Fzc2VydF9sdGUoc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSwg ODE5Mik7DQo+ICAJCWlndF9hc3NlcnRfbHRlKGlndF9idWZfd2lkdGgoc3JjKSwgMjA0OCk7DQo+ ICAJCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KHNyYyksIDIwNDgpOw0KPiAgDQo+IEBA IC0xMTAsNyArMTEwLDcgQEAgdm9pZCBnZW4zX3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QNCj4gaW50 ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLA0KPiAgCQlPVVRfQkFUQ0goZm9ybWF0X2JpdHMgfCB0aWxp bmdfYml0cyB8DQo+ICAJCQkgIChpZ3RfYnVmX2hlaWdodChzcmMpIC0gMSkgPDwgTVMzX0hFSUdI VF9TSElGVA0KPiB8DQo+ICAJCQkgIChpZ3RfYnVmX3dpZHRoKHNyYykgLSAxKSA8PCBNUzNfV0lE VEhfU0hJRlQpOw0KPiAtCQlPVVRfQkFUQ0goKHNyYy0+c3RyaWRlLzQtMSkgPDwgTVM0X1BJVENI X1NISUZUKTsNCj4gKwkJT1VUX0JBVENIKChzcmMtPnN1cmZhY2VbMF0uc3RyaWRlLzQtMSkgPDwN Cj4gTVM0X1BJVENIX1NISUZUKTsNCj4gIA0KPiAgCQlPVVRfQkFUQ0goXzNEU1RBVEVfU0FNUExF Ul9TVEFURSB8ICgzICogVEVYX0NPVU5UKSk7DQo+ICAJCU9VVF9CQVRDSCgoMSA8PCBURVhfQ09V TlQpIC0gMSk7DQo+IEBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBnZW4zX3JlbmRlcl9jb3B5ZnVu YyhzdHJ1Y3QNCj4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLA0KPiAgCQl1aW50MzJfdCB0aWxp bmdfYml0cyA9IDA7DQo+ICAJCXVpbnQzMl90IGZvcm1hdF9iaXRzOw0KPiAgDQo+IC0JCWlndF9h c3NlcnRfbHRlKGRzdC0+c3RyaWRlLCA4MTkyKTsNCj4gKwkJaWd0X2Fzc2VydF9sdGUoZHN0LT5z dXJmYWNlWzBdLnN0cmlkZSwgODE5Mik7DQo+ICAJCWlndF9hc3NlcnRfbHRlKGlndF9idWZfd2lk dGgoZHN0KSwgMjA0OCk7DQo+ICAJCWlndF9hc3NlcnRfbHRlKGlndF9idWZfaGVpZ2h0KGRzdCks IDIwNDgpOw0KPiAgDQo+IEBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBnZW4zX3JlbmRlcl9jb3B5 ZnVuYyhzdHJ1Y3QNCj4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLA0KPiAgDQo+ICAJCU9VVF9C QVRDSChfM0RTVEFURV9CVUZfSU5GT19DTUQpOw0KPiAgCQlPVVRfQkFUQ0goQlVGXzNEX0lEX0NP TE9SX0JBQ0sgfCB0aWxpbmdfYml0cyB8DQo+IC0JCQkgIEJVRl8zRF9QSVRDSChkc3QtPnN0cmlk ZSkpOw0KPiArCQkJICBCVUZfM0RfUElUQ0goZHN0LT5zdXJmYWNlWzBdLnN0cmlkZSkpOw0KPiAg CQlPVVRfUkVMT0MoZHN0LT5ibywgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUiwNCj4gSTkxNV9HRU1f RE9NQUlOX1JFTkRFUiwgMCk7DQo+ICANCj4gIAkJT1VUX0JBVENIKF8zRFNUQVRFX0RTVF9CVUZf VkFSU19DTUQpOw0KPiBkaWZmIC0tZ2l0IGEvbGliL3ZlYm94Y29weV9nZW4xMi5jIGIvbGliL3Zl Ym94Y29weV9nZW4xMi5jDQo+IGluZGV4IDg3ODAwOTQxLi4yZjAxNzUxNCAxMDA2NDQNCj4gLS0t IGEvbGliL3ZlYm94Y29weV9nZW4xMi5jDQo+ICsrKyBiL2xpYi92ZWJveGNvcHlfZ2VuMTIuYw0K PiBAQCAtMjQ4LDEyICsyNDgsMTQgQEAgdm9pZCBnZW4xMl92ZWJveF9jb3B5ZnVuYyhzdHJ1Y3QN Cj4gaW50ZWxfYmF0Y2hidWZmZXIgKmJhdGNoLA0KPiAgCS8qIFRPRE86IGFkZCBzdXBwb3J0IGZv ciBtb3JlIGZvcm1hdHMgKi8NCj4gIAlpZ3RfYXNzZXJ0KHNyYy0+YnBwID09IDMyKTsNCj4gIAll bWl0X3N1cmZhY2Vfc3RhdGVfY21kKGJhdGNoLCBWRUJPWF9TVVJGQUNFX0lOUFVULA0KPiAtCQkJ ICAgICAgIHdpZHRoLCBoZWlnaHQsIHNyYy0+YnBwLCBzcmMtPnN0cmlkZSwNCj4gKwkJCSAgICAg ICB3aWR0aCwgaGVpZ2h0LCBzcmMtPmJwcCwNCj4gKwkJCSAgICAgICBzcmMtPnN1cmZhY2VbMF0u c3RyaWRlLA0KPiAgCQkJICAgICAgIHNyYy0+dGlsaW5nLCBSOEc4QjhBOF9VTk9STSk7DQo+ICAN Cj4gIAlpZ3RfYXNzZXJ0KGRzdC0+YnBwID09IDMyKTsNCj4gIAllbWl0X3N1cmZhY2Vfc3RhdGVf Y21kKGJhdGNoLCBWRUJPWF9TVVJGQUNFX09VVFBVVCwNCj4gLQkJCSAgICAgICB3aWR0aCwgaGVp Z2h0LCBkc3QtPmJwcCwgZHN0LT5zdHJpZGUsDQo+ICsJCQkgICAgICAgd2lkdGgsIGhlaWdodCwg ZHN0LT5icHAsDQo+ICsJCQkgICAgICAgZHN0LT5zdXJmYWNlWzBdLnN0cmlkZSwNCj4gIAkJCSAg ICAgICBkc3QtPnRpbGluZywgUjhHOEI4QThfVU5PUk0pOw0KPiAgDQo+ICAJZW1pdF90aWxpbmdf Y29udmVydF9jbWQoYmF0Y2gsDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9jb25jdXJy ZW50X2FsbC5jDQo+IGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYw0KPiBpbmRleCA2 NDg2YmViZi4uZjFiZTRhODUgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2NvbmN1cnJl bnRfYWxsLmMNCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fY29uY3VycmVudF9hbGwuYw0KPiBAQCAt ODUxLDE1ICs4NTEsMTcgQEAgc3RhdGljIHZvaWQgcmVuZGVyX2NvcHlfYm8oc3RydWN0IGJ1ZmZl cnMgKmIsDQo+IGRybV9pbnRlbF9ibyAqZHN0LCBkcm1faW50ZWxfYm8gKnMNCj4gIHsNCj4gIAlz dHJ1Y3QgaWd0X2J1ZiBkID0gew0KPiAgCQkuYm8gPSBkc3QsDQo+IC0JCS5zaXplID0gYi0+bnBp eGVscyAqIDQsDQo+ICAJCS5udW1fdGlsZXMgPSBiLT5ucGl4ZWxzICogNCwNCj4gLQkJLnN0cmlk ZSA9IGItPndpZHRoICogNCwNCj4gKwkJLnN1cmZhY2VbMF0gPSB7DQo+ICsJCQkuc2l6ZSA9IGIt Pm5waXhlbHMgKiA0LCAuc3RyaWRlID0gYi0+d2lkdGggKiA0LA0KPiArCQl9LA0KPiAgCQkuYnBw ID0gMzIsDQo+ICAJfSwgcyA9IHsNCj4gIAkJLmJvID0gc3JjLA0KPiAtCQkuc2l6ZSA9IGItPm5w aXhlbHMgKiA0LA0KPiAgCQkubnVtX3RpbGVzID0gYi0+bnBpeGVscyAqIDQsDQo+IC0JCS5zdHJp ZGUgPSBiLT53aWR0aCAqIDQsDQo+ICsJCS5zdXJmYWNlWzBdID0gew0KPiArCQkJLnNpemUgPSBi LT5ucGl4ZWxzICogNCwgLnN0cmlkZSA9IGItPndpZHRoICogNCwNCj4gKwkJfSwNCj4gIAkJLmJw cCA9IDMyLA0KPiAgCX07DQo+ICAJdWludDMyX3Qgc3dpenpsZTsNCj4gZGlmZiAtLWdpdCBhL3Rl c3RzL2k5MTUvZ2VtX2dwZ3B1X2ZpbGwuYw0KPiBiL3Rlc3RzL2k5MTUvZ2VtX2dwZ3B1X2ZpbGwu Yw0KPiBpbmRleCA2ODkxOGMzZS4uYjJkNDAxZDYgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2k5MTUv Z2VtX2dwZ3B1X2ZpbGwuYw0KPiArKysgYi90ZXN0cy9pOTE1L2dlbV9ncGdwdV9maWxsLmMNCj4g QEAgLTc1LDkgKzc1LDkgQEAgc3RhdGljIHZvaWQgc2NyYXRjaF9idWZfaW5pdChkYXRhX3QgKmRh dGEsIHN0cnVjdA0KPiBpZ3RfYnVmICpidWYsDQo+ICAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpi dWYpKTsNCj4gIA0KPiAgCWJ1Zi0+Ym8gPSBibzsNCj4gLQlidWYtPnN0cmlkZSA9IHN0cmlkZTsN Cj4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gc3RyaWRlOw0KPiAgCWJ1Zi0+dGlsaW5nID0g STkxNV9USUxJTkdfTk9ORTsNCj4gLQlidWYtPnNpemUgPSBTSVpFOw0KPiArCWJ1Zi0+c3VyZmFj ZVswXS5zaXplID0gU0laRTsNCj4gIAlidWYtPmJwcCA9IDMyOw0KPiAgfQ0KPiAgDQo+IGRpZmYg LS1naXQgYS90ZXN0cy9pOTE1L2dlbV9tZWRpYV9maWxsLmMNCj4gYi90ZXN0cy9pOTE1L2dlbV9t ZWRpYV9maWxsLmMNCj4gaW5kZXggYTdkNzcwOGMuLmM4ODBiYWU5IDEwMDY0NA0KPiAtLS0gYS90 ZXN0cy9pOTE1L2dlbV9tZWRpYV9maWxsLmMNCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fbWVkaWFf ZmlsbC5jDQo+IEBAIC03OCw5ICs3OCw5IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQo ZGF0YV90ICpkYXRhLCBzdHJ1Y3QNCj4gaWd0X2J1ZiAqYnVmLA0KPiAgCW1lbXNldChidWYsIDAs IHNpemVvZigqYnVmKSk7DQo+ICANCj4gIAlidWYtPmJvID0gYm87DQo+IC0JYnVmLT5zdHJpZGUg PSBzdHJpZGU7DQo+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IHN0cmlkZTsNCj4gIAlidWYt PnRpbGluZyA9IEk5MTVfVElMSU5HX05PTkU7DQo+IC0JYnVmLT5zaXplID0gU0laRTsNCj4gKwli dWYtPnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7DQo+ICAJYnVmLT5icHAgPSAzMjsNCj4gIH0NCj4g IA0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbWVkaWFfdm1lLmMgYi90ZXN0cy9pOTE1 L2dlbV9tZWRpYV92bWUuYw0KPiBpbmRleCBkNTA0NWFkMS4uMjBmNWNhMzUgMTAwNjQ0DQo+IC0t LSBhL3Rlc3RzL2k5MTUvZ2VtX21lZGlhX3ZtZS5jDQo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX21l ZGlhX3ZtZS5jDQo+IEBAIC01OCw3ICs1OCw3IEBAIHNjcmF0Y2hfYnVmX2luaXQoZHJtX2ludGVs X2J1Zm1nciAqYnVmbWdyLA0KPiAgDQo+ICAJYnVmLT5ibyA9IGJvOw0KPiAgCWJ1Zi0+dGlsaW5n ID0gSTkxNV9USUxJTkdfTk9ORTsNCj4gLQlidWYtPnNpemUgPSBzaXplOw0KPiArCWJ1Zi0+c3Vy ZmFjZVswXS5zaXplID0gc2l6ZTsNCj4gIH0NCj4gIA0KPiAgc3RhdGljIHZvaWQgc2NyYXRjaF9i dWZfaW5pdF9zcmMoZHJtX2ludGVsX2J1Zm1nciAqYnVmbWdyLCBzdHJ1Y3QNCj4gaWd0X2J1ZiAq YnVmKQ0KPiBAQCAtNzEsMTQgKzcxLDE0IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXRf c3JjKGRybV9pbnRlbF9idWZtZ3INCj4gKmJ1Zm1nciwgc3RydWN0IGlndF9idWYgKmJ1ZikNCj4g IAkgKiB3aXRoIHRoaXMgdm1lIGtlcm5lbC4NCj4gIAkgKi8NCj4gIA0KPiAtCWJ1Zi0+c3RyaWRl ID0gU1RSSURFOw0KPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7DQo+ICB9DQo+ ICANCj4gIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXRfZHN0KGRybV9pbnRlbF9idWZtZ3Ig KmJ1Zm1nciwgc3RydWN0DQo+IGlndF9idWYgKmJ1ZikNCj4gIHsNCj4gIAlzY3JhdGNoX2J1Zl9p bml0KGJ1Zm1nciwgYnVmLCBPVVRQVVRfU0laRSk7DQo+ICANCj4gLQlidWYtPnN0cmlkZSA9IDE7 DQo+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IDE7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB1 aW50NjRfdCBzd2l0Y2hfb2ZmX25fYml0cyh1aW50NjRfdCBtYXNrLCB1bnNpZ25lZCBpbnQgbikN Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3BwZ3R0LmMgYi90ZXN0cy9pOTE1L2dlbV9w cGd0dC5jDQo+IGluZGV4IDg5Y2RjNGRiLi40YzdkM2JhMiAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv aTkxNS9nZW1fcHBndHQuYw0KPiArKysgYi90ZXN0cy9pOTE1L2dlbV9wcGd0dC5jDQo+IEBAIC03 Myw5ICs3Myw5IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoc3RydWN0IGlndF9idWYg KmJ1ZiwNCj4gIAltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOw0KPiAgDQo+ICAJYnVmLT5i byA9IGNyZWF0ZV9ibyhidWZtZ3IsIHBpeGVsKTsNCj4gLQlidWYtPnN0cmlkZSA9IFNUUklERTsN Cj4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOw0KPiAgCWJ1Zi0+dGlsaW5nID0g STkxNV9USUxJTkdfTk9ORTsNCj4gLQlidWYtPnNpemUgPSBTSVpFOw0KPiArCWJ1Zi0+c3VyZmFj ZVswXS5zaXplID0gU0laRTsNCj4gIAlidWYtPmJwcCA9IDMyOw0KPiAgfQ0KPiAgDQo+IEBAIC0x NDAsOSArMTQwLDkgQEAgc3RhdGljIHZvaWQgZm9ya19yY3NfY29weShpbnQgdGltZW91dCwgdWlu dDMyX3QNCj4gZmluYWwsDQo+ICAJCX0NCj4gIA0KPiAgCQlidWYuYm8gPSBkc3RbY2hpbGRdOw0K PiAtCQlidWYuc3RyaWRlID0gU1RSSURFOw0KPiArCQlidWYuc3VyZmFjZVswXS5zdHJpZGUgPSBT VFJJREU7DQo+ICAJCWJ1Zi50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOw0KPiAtCQlidWYuc2l6 ZSA9IFNJWkU7DQo+ICsJCWJ1Zi5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOw0KPiAgCQlidWYuYnBw ID0gMzI7DQo+ICANCj4gIAkJaSA9IDA7DQo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9y ZWFkX3JlYWRfc3BlZWQuYw0KPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlYWRfcmVhZF9zcGVlZC5jDQo+ IGluZGV4IDhiNWJhOGY3Li4yYWFiMjIwNCAxMDA2NDQNCj4gLS0tIGEvdGVzdHMvaTkxNS9nZW1f cmVhZF9yZWFkX3NwZWVkLmMNCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fcmVhZF9yZWFkX3NwZWVk LmMNCj4gQEAgLTUzLDE1ICs1MywxNyBAQCBzdGF0aWMgZHJtX2ludGVsX2JvICpyY3NfY29weV9i byhkcm1faW50ZWxfYm8NCj4gKmRzdCwgZHJtX2ludGVsX2JvICpzcmMpDQo+ICB7DQo+ICAJc3Ry dWN0IGlndF9idWYgZCA9IHsNCj4gIAkJLmJvID0gZHN0LA0KPiAtCQkuc2l6ZSA9IHdpZHRoICog aGVpZ2h0ICogNCwNCj4gIAkJLm51bV90aWxlcyA9IHdpZHRoICogaGVpZ2h0ICogNCwNCj4gLQkJ LnN0cmlkZSA9IHdpZHRoICogNCwNCj4gKwkJLnN1cmZhY2VbMF0gPSB7DQo+ICsJCQkuc2l6ZSA9 IHdpZHRoICogaGVpZ2h0ICogNCwgLnN0cmlkZSA9IHdpZHRoICoNCj4gNCwNCj4gKwkJfSwNCj4g IAkJLmJwcCA9IDMyLA0KPiAgCX0sIHMgPSB7DQo+ICAJCS5ibyA9IHNyYywNCj4gLQkJLnNpemUg PSB3aWR0aCAqIGhlaWdodCAqIDQsDQo+ICAJCS5udW1fdGlsZXMgPSB3aWR0aCAqIGhlaWdodCAq IDQsDQo+IC0JCS5zdHJpZGUgPSB3aWR0aCAqIDQsDQo+ICsJCS5zdXJmYWNlWzBdID0gew0KPiAr CQkJLnNpemUgPSB3aWR0aCAqIGhlaWdodCAqIDQsIC5zdHJpZGUgPSB3aWR0aCAqDQo+IDQsDQo+ ICsJCX0sDQo+ICAJCS5icHAgPSAzMiwNCj4gIAl9Ow0KPiAgCXVpbnQzMl90IHN3aXp6bGU7DQo+ IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfY29weS5jDQo+IGIvdGVzdHMvaTkx NS9nZW1fcmVuZGVyX2NvcHkuYw0KPiBpbmRleCBkZjBkMDQ1ZS4uNWFiYjIwMzYgMTAwNjQ0DQo+ IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5LmMNCj4gKysrIGIvdGVzdHMvaTkxNS9n ZW1fcmVuZGVyX2NvcHkuYw0KPiBAQCAtMTE4LDcgKzExOCw4IEBAIHN0YXRpYyB2b2lkIGNvcHlf bGluZWFyX3RvX3lmKGRhdGFfdCAqZGF0YSwNCj4gc3RydWN0IGlndF9idWYgKmJ1ZiwNCj4gIAlm b3IgKGludCB5ID0gMDsgeSA8IGhlaWdodDsgeSsrKSB7DQo+ICAJCWZvciAoaW50IHggPSAwOyB4 IDwgd2lkdGg7IHgrKykgew0KPiAgCQkJdWludDMyX3QgKnB0ciA9IHlmX3B0cihtYXAsIHgsIHks DQo+IC0JCQkJCSAgICAgICBidWYtPnN0cmlkZSwgYnVmLT5icHAgLw0KPiA4KTsNCj4gKwkJCQkJ ICAgICAgIGJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUsDQo+ICsJCQkJCSAgICAgICBidWYtPmJwcCAv IDgpOw0KPiAgDQo+ICAJCQkqcHRyID0gbGluZWFyW3kgKiB3aWR0aCArIHhdOw0KPiAgCQl9DQo+ IEBAIC0xNDIsNyArMTQzLDggQEAgc3RhdGljIHZvaWQgY29weV95Zl90b19saW5lYXIoZGF0YV90 ICpkYXRhLA0KPiBzdHJ1Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgCWZvciAoaW50IHkgPSAwOyB5IDwg aGVpZ2h0OyB5KyspIHsNCj4gIAkJZm9yIChpbnQgeCA9IDA7IHggPCB3aWR0aDsgeCsrKSB7DQo+ ICAJCQl1aW50MzJfdCAqcHRyID0geWZfcHRyKG1hcCwgeCwgeSwNCj4gLQkJCQkJICAgICAgIGJ1 Zi0+c3RyaWRlLCBidWYtPmJwcCAvDQo+IDgpOw0KPiArCQkJCQkgICAgICAgYnVmLT5zdXJmYWNl WzBdLnN0cmlkZSwNCj4gKwkJCQkJICAgICAgIGJ1Zi0+YnBwIC8gOCk7DQo+ICANCj4gIAkJCWxp bmVhclt5ICogd2lkdGggKyB4XSA9ICpwdHI7DQo+ICAJCX0NCj4gQEAgLTIzMSw3ICsyMzMsNyBA QCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl93cml0ZV90b19wbmcoZGF0YV90DQo+ICpkYXRhLCBz dHJ1Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgCQkJCQkJICAgICAgQ0FJUk9fRk9STUFUX1JHQjINCj4g NCwNCj4gIAkJCQkJCSAgICAgIGlndF9idWZfd2lkdGgoYnVmDQo+ICksDQo+ICAJCQkJCQkgICAg ICBpZ3RfYnVmX2hlaWdodChidQ0KPiBmKSwNCj4gLQkJCQkJCSAgICAgIGJ1Zi0+c3RyaWRlKTsN Cj4gKwkJCQkJCSAgICAgIGJ1Zi0NCj4gPnN1cmZhY2VbMF0uc3RyaWRlKTsNCj4gIAlyZXQgPSBj YWlyb19zdXJmYWNlX3dyaXRlX3RvX3BuZyhzdXJmYWNlLA0KPiBtYWtlX2ZpbGVuYW1lKGZpbGVu YW1lKSk7DQo+ICAJaWd0X2Fzc2VydChyZXQgPT0gQ0FJUk9fU1RBVFVTX1NVQ0NFU1MpOw0KPiAg CWNhaXJvX3N1cmZhY2VfZGVzdHJveShzdXJmYWNlKTsNCj4gQEAgLTMyNCw3ICszMjYsNyBAQCBz dGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9kcmF3X3BhdHRlcm4oZGF0YV90DQo+ICpkYXRhLCBzdHJ1 Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgCQkJCQkJICAgICAgQ0FJUk9fRk9STUFUX1JHQjINCj4gNCwN Cj4gIAkJCQkJCSAgICAgIGlndF9idWZfd2lkdGgoYnVmDQo+ICksDQo+ICAJCQkJCQkgICAgICBp Z3RfYnVmX2hlaWdodChidQ0KPiBmKSwNCj4gLQkJCQkJCSAgICAgIGJ1Zi0+c3RyaWRlKTsNCj4g KwkJCQkJCSAgICAgIGJ1Zi0NCj4gPnN1cmZhY2VbMF0uc3RyaWRlKTsNCj4gIA0KPiAgCWNyID0g Y2Fpcm9fY3JlYXRlKHN1cmZhY2UpOw0KPiAgDQo+IEBAIC00MDMsNyArNDA1LDcgQEAgc2NyYXRj aF9idWZfY29weShkYXRhX3QgKmRhdGEsDQo+ICAJCWZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsr KSB7DQo+ICAJCQlmb3IgKGludCB4ID0gMDsgeCA8IHc7IHgrKykgew0KPiAgCQkJCWNvbnN0IHVp bnQzMl90ICpwdHIgPSB5Zl9wdHIobWFwLCBzeCt4LA0KPiBzeSt5LA0KPiAtCQkJCQkJCSAgICAg c3JjLQ0KPiA+c3RyaWRlLA0KPiArCQkJCQkJCSAgICAgc3JjLQ0KPiA+c3VyZmFjZVswXS5zdHJp ZGUsDQo+ICAJCQkJCQkJICAgICBzcmMtPmJwcCAvDQo+IDgpOw0KPiAgDQo+ICAJCQkJbGluZWFy X2RzdFsoZHkreSkgKiB3aWR0aCArIGR4K3hdID0NCj4gKnB0cjsNCj4gQEAgLTQ1OCwxNCArNDYw LDE0IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLA0KPiBzdHJ1 Y3QgaWd0X2J1ZiAqYnVmLA0KPiAgCQkgKiB0dXJuIG1hcHBlZCBieSBvbmUgTDEgQVVYIHBhZ2Ug dGFibGUgZW50cnkuDQo+ICAJCSAqLw0KPiAgCQlpZiAoaW50ZWxfZ2VuKGRhdGEtPmRldmlkKSA+ PSAxMikNCj4gLQkJCWJ1Zi0+c3RyaWRlID0gQUxJR04od2lkdGggKiAoYnBwIC8gOCksIDEyOCAq DQo+IDQpOw0KPiArCQkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IEFMSUdOKHdpZHRoICogKGJw cCAvDQo+IDgpLCAxMjggKiA0KTsNCj4gIAkJZWxzZQ0KPiAtCQkJYnVmLT5zdHJpZGUgPSBBTElH Tih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsNCj4gKwkJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUg PSBBTElHTih3aWR0aCAqIChicHAgLw0KPiA4KSwgMTI4KTsNCj4gIA0KPiAgCQlpZiAoaW50ZWxf Z2VuKGRhdGEtPmRldmlkKSA+PSAxMikNCj4gIAkJCWhlaWdodCA9IEFMSUdOKGhlaWdodCwgNCAq IDMyKTsNCj4gIA0KPiAtCQlidWYtPnNpemUgPSBidWYtPnN0cmlkZSAqIGhlaWdodDsNCj4gKwkJ YnVmLT5zdXJmYWNlWzBdLnNpemUgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlICogaGVpZ2h0Ow0K PiAgCQlidWYtPnRpbGluZyA9IHRpbGluZzsNCj4gIAkJYnVmLT5icHAgPSBicHA7DQo+ICANCj4g QEAgLTQ3Myw3ICs0NzUsNyBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1Zl9pbml0KGRhdGFfdCAq ZGF0YSwgc3RydWN0DQo+IGlndF9idWYgKmJ1ZiwNCj4gIAkJYXV4X2hlaWdodCA9IHNjcmF0Y2hf YnVmX2F1eF9oZWlnaHQoZGF0YS0+ZGV2aWQsIGJ1Zik7DQo+ICANCj4gIAkJYnVmLT5jb21wcmVz c2lvbiA9IGNvbXByZXNzaW9uOw0KPiAtCQlidWYtPmNjc1swXS5vZmZzZXQgPSBidWYtPnN0cmlk ZSAqIEFMSUdOKGhlaWdodCwgMzIpOw0KPiArCQlidWYtPmNjc1swXS5vZmZzZXQgPSBidWYtPnN1 cmZhY2VbMF0uc3RyaWRlICoNCj4gQUxJR04oaGVpZ2h0LCAzMik7DQo+ICAJCWJ1Zi0+Y2NzWzBd LnN0cmlkZSA9IGF1eF93aWR0aDsNCj4gIA0KPiAgCQlzaXplID0gYnVmLT5jY3NbMF0ub2Zmc2V0 ICsgYXV4X3dpZHRoICogYXV4X2hlaWdodDsNCj4gQEAgLTQ4MSwxOCArNDgzLDE5IEBAIHN0YXRp YyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpkYXRhLA0KPiBzdHJ1Y3QgaWd0X2J1ZiAq YnVmLA0KPiAgCQlidWYtPmJvID0gZHJtX2ludGVsX2JvX2FsbG9jKGRhdGEtPmJ1Zm1nciwgIiIs IHNpemUsDQo+IDQwOTYpOw0KPiAgDQo+ICAJCWlmICh0aWxpbmcgPT0gSTkxNV9USUxJTkdfWSkg ew0KPiAtCQkJZHJtX2ludGVsX2JvX3NldF90aWxpbmcoYnVmLT5ibywgJnRpbGluZywgYnVmLQ0K PiA+c3RyaWRlKTsNCj4gKwkJCWRybV9pbnRlbF9ib19zZXRfdGlsaW5nKGJ1Zi0+Ym8sICZ0aWxp bmcsDQo+ICsJCQkJCQlidWYtDQo+ID5zdXJmYWNlWzBdLnN0cmlkZSk7DQo+ICAJCQlpZ3RfYXNz ZXJ0X2VxKHRpbGluZywgcmVxX3RpbGluZyk7DQo+ICAJCX0NCj4gIAl9IGVsc2UgaWYgKHJlcV90 aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpIHsNCj4gIAkJaW50IHNpemU7DQo+ICANCj4gLQkJYnVm LT5zdHJpZGUgPSBBTElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsNCj4gLQkJYnVmLT5zaXpl ID0gYnVmLT5zdHJpZGUgKiBoZWlnaHQ7DQo+ICsJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBB TElHTih3aWR0aCAqIChicHAgLyA4KSwgMTI4KTsNCj4gKwkJYnVmLT5zdXJmYWNlWzBdLnNpemUg PSBidWYtPnN1cmZhY2VbMF0uc3RyaWRlICogaGVpZ2h0Ow0KPiAgCQlidWYtPnRpbGluZyA9IHRp bGluZzsNCj4gIAkJYnVmLT5icHAgPSBicHA7DQo+ICANCj4gLQkJc2l6ZSA9IGJ1Zi0+c3RyaWRl ICogQUxJR04oaGVpZ2h0LCAzMik7DQo+ICsJCXNpemUgPSBidWYtPnN1cmZhY2VbMF0uc3RyaWRl ICogQUxJR04oaGVpZ2h0LCAzMik7DQo+ICANCj4gIAkJYnVmLT5ibyA9IGRybV9pbnRlbF9ib19h bGxvYyhkYXRhLT5idWZtZ3IsICIiLCBzaXplLA0KPiA0MDk2KTsNCj4gIAl9IGVsc2Ugew0KPiBA QCAtNTAxLDkgKzUwNCw5IEBAIHN0YXRpYyB2b2lkIHNjcmF0Y2hfYnVmX2luaXQoZGF0YV90ICpk YXRhLCBzdHJ1Y3QNCj4gaWd0X2J1ZiAqYnVmLA0KPiAgCQkJCQkJICAgJnRpbGluZywgJnBpdGNo LCAwKTsNCj4gIAkJaWd0X2Fzc2VydF9lcSh0aWxpbmcsIHJlcV90aWxpbmcpOw0KPiAgDQo+IC0J CWJ1Zi0+c3RyaWRlID0gcGl0Y2g7DQo+ICsJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBwaXRj aDsNCj4gIAkJYnVmLT50aWxpbmcgPSB0aWxpbmc7DQo+IC0JCWJ1Zi0+c2l6ZSA9IHBpdGNoICog aGVpZ2h0Ow0KPiArCQlidWYtPnN1cmZhY2VbMF0uc2l6ZSA9IHBpdGNoICogaGVpZ2h0Ow0KPiAg CQlidWYtPmJwcCA9IGJwcDsNCj4gIAl9DQo+ICANCj4gQEAgLTgwNiw3ICs4MDksNyBAQCBzdGF0 aWMgdm9pZCB0ZXN0KGRhdGFfdCAqZGF0YSwgdWludDMyX3QNCj4gc3JjX3RpbGluZywgdWludDMy X3QgZHN0X3RpbGluZywNCj4gIAkJCQkJICAgICAgMCwgMCwNCj4gaWd0X2J1Zl93aWR0aCgmZHN0 KSwNCj4gIAkJCQkJICAgICAgaWd0X2J1Zl9oZWlnaHQoJmRzdCksDQo+ICAJCQkJCSAgICAgIEFV Ql9EVU1QX0JNUF9GT1JNQVRfQVJHQl8NCj4gODg4OCwNCj4gLQkJCQkJICAgICAgZHN0LnN0cmlk ZSwgMCk7DQo+ICsJCQkJCSAgICAgIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSwNCj4gMCk7DQo+ICAJ CWRybV9pbnRlbF9idWZtZ3JfZ2VtX3NldF9hdWJfZHVtcChkYXRhLT5idWZtZ3IsIGZhbHNlKTsN Cj4gIAl9IGVsc2UgaWYgKGNoZWNrX2FsbF9waXhlbHMpIHsNCj4gIAkJc2NyYXRjaF9idWZfY2hl Y2tfYWxsKGRhdGEsICZkc3QsICZyZWYpOw0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1f cmVuZGVyX2NvcHlfcmVkdXguYw0KPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9jb3B5X3JlZHV4 LmMNCj4gaW5kZXggZWY2MDFjMjIuLjIzODhmYzI0IDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9pOTE1 L2dlbV9yZW5kZXJfY29weV9yZWR1eC5jDQo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9j b3B5X3JlZHV4LmMNCj4gQEAgLTEwNiw5ICsxMDYsOSBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1 Zl9pbml0KGRhdGFfdCAqZGF0YSwgc3RydWN0DQo+IGlndF9idWYgKmJ1ZiwNCj4gIAltZW1zZXQo YnVmLCAwLCBzaXplb2YoKmJ1ZikpOw0KPiAgDQo+ICAJYnVmLT5ibyA9IGJvOw0KPiAtCWJ1Zi0+ c3RyaWRlID0gc3RyaWRlOw0KPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBzdHJpZGU7DQo+ ICAJYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOw0KPiAtCWJ1Zi0+c2l6ZSA9IFNJWkU7 DQo+ICsJYnVmLT5zdXJmYWNlWzBdLnNpemUgPSBTSVpFOw0KPiAgCWJ1Zi0+YnBwID0gMzI7DQo+ ICB9DQo+ICANCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9saW5lYXJfYmxp dHMuYw0KPiBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9saW5lYXJfYmxpdHMuYw0KPiBpbmRleCBh NzI2NjUyYi4uNjY2YTQzY2QgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl9s aW5lYXJfYmxpdHMuYw0KPiArKysgYi90ZXN0cy9pOTE1L2dlbV9yZW5kZXJfbGluZWFyX2JsaXRz LmMNCj4gQEAgLTEwOCwxNSArMTA4LDE1IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0IChpbnQgZmQs IGludCBjb3VudCkNCj4gIAkJc3RydWN0IGlndF9idWYgc3JjID0ge30sIGRzdCA9IHt9Ow0KPiAg DQo+ICAJCXNyYy5ibyA9IGJvW2kgJSBjb3VudF07DQo+IC0JCXNyYy5zdHJpZGUgPSBTVFJJREU7 DQo+ICsJCXNyYy5zdXJmYWNlWzBdLnN0cmlkZSA9IFNUUklERTsNCj4gIAkJc3JjLnRpbGluZyA9 IEk5MTVfVElMSU5HX05PTkU7DQo+IC0JCXNyYy5zaXplID0gU0laRTsNCj4gKwkJc3JjLnN1cmZh Y2VbMF0uc2l6ZSA9IFNJWkU7DQo+ICAJCXNyYy5icHAgPSAzMjsNCj4gIA0KPiAgCQlkc3QuYm8g PSBib1soaSArIDEpICUgY291bnRdOw0KPiAtCQlkc3Quc3RyaWRlID0gU1RSSURFOw0KPiArCQlk c3Quc3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7DQo+ICAJCWRzdC50aWxpbmcgPSBJOTE1X1RJ TElOR19OT05FOw0KPiAtCQlkc3Quc2l6ZSA9IFNJWkU7DQo+ICsJCWRzdC5zdXJmYWNlWzBdLnNp emUgPSBTSVpFOw0KPiAgCQlkc3QuYnBwID0gMzI7DQo+ICANCj4gIAkJcmVuZGVyX2NvcHkoYmF0 Y2gsIE5VTEwsICZzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsDQo+ICZkc3QsIDAsIDApOw0KPiBA QCAtMTMzLDE1ICsxMzMsMTUgQEAgc3RhdGljIHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNv dW50KQ0KPiAgCQlzdHJ1Y3QgaWd0X2J1ZiBzcmMgPSB7fSwgZHN0ID0ge307DQo+ICANCj4gIAkJ c3JjLmJvID0gYm9bKGkgKyAxKSAlIGNvdW50XTsNCj4gLQkJc3JjLnN0cmlkZSA9IFNUUklERTsN Cj4gKwkJc3JjLnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOw0KPiAgCQlzcmMudGlsaW5nID0g STkxNV9USUxJTkdfTk9ORTsNCj4gLQkJc3JjLnNpemUgPSBTSVpFOw0KPiArCQlzcmMuc3VyZmFj ZVswXS5zaXplID0gU0laRTsNCj4gIAkJc3JjLmJwcCA9IDMyOw0KPiAgDQo+ICAJCWRzdC5ibyA9 IGJvW2kgJSBjb3VudF07DQo+IC0JCWRzdC5zdHJpZGUgPSBTVFJJREU7DQo+ICsJCWRzdC5zdXJm YWNlWzBdLnN0cmlkZSA9IFNUUklERTsNCj4gIAkJZHN0LnRpbGluZyA9IEk5MTVfVElMSU5HX05P TkU7DQo+IC0JCWRzdC5zaXplID0gU0laRTsNCj4gKwkJZHN0LnN1cmZhY2VbMF0uc2l6ZSA9IFNJ WkU7DQo+ICAJCWRzdC5icHAgPSAzMjsNCj4gIA0KPiAgCQlyZW5kZXJfY29weShiYXRjaCwgTlVM TCwgJnNyYywgMCwgMCwgV0lEVEgsIEhFSUdIVCwNCj4gJmRzdCwgMCwgMCk7DQo+IEBAIC0xNjAs MTUgKzE2MCwxNSBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdCAoaW50IGZkLCBpbnQgY291bnQpDQo+ ICAJCQljb250aW51ZTsNCj4gIA0KPiAgCQlzcmMuYm8gPSBib1tzXTsNCj4gLQkJc3JjLnN0cmlk ZSA9IFNUUklERTsNCj4gKwkJc3JjLnN1cmZhY2VbMF0uc3RyaWRlID0gU1RSSURFOw0KPiAgCQlz cmMudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsNCj4gLQkJc3JjLnNpemUgPSBTSVpFOw0KPiAr CQlzcmMuc3VyZmFjZVswXS5zaXplID0gU0laRTsNCj4gIAkJc3JjLmJwcCA9IDMyOw0KPiAgDQo+ ICAJCWRzdC5ibyA9IGJvW2RdOw0KPiAtCQlkc3Quc3RyaWRlID0gU1RSSURFOw0KPiArCQlkc3Qu c3VyZmFjZVswXS5zdHJpZGUgPSBTVFJJREU7DQo+ICAJCWRzdC50aWxpbmcgPSBJOTE1X1RJTElO R19OT05FOw0KPiAtCQlkc3Quc2l6ZSA9IFNJWkU7DQo+ICsJCWRzdC5zdXJmYWNlWzBdLnNpemUg PSBTSVpFOw0KPiAgCQlkc3QuYnBwID0gMzI7DQo+ICANCj4gIAkJcmVuZGVyX2NvcHkoYmF0Y2gs IE5VTEwsICZzcmMsIDAsIDAsIFdJRFRILCBIRUlHSFQsDQo+ICZkc3QsIDAsIDApOw0KPiBkaWZm IC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fcmVuZGVyX3RpbGVkX2JsaXRzLmMNCj4gYi90ZXN0cy9p OTE1L2dlbV9yZW5kZXJfdGlsZWRfYmxpdHMuYw0KPiBpbmRleCAxNDAxODMyOS4uMWRlMWI3MmMg MTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jDQo+ICsr KyBiL3Rlc3RzL2k5MTUvZ2VtX3JlbmRlcl90aWxlZF9ibGl0cy5jDQo+IEBAIC02Niw5ICs2Niw5 IEBAIGNoZWNrX2JvKHN0cnVjdCBpbnRlbF9iYXRjaGJ1ZmZlciAqYmF0Y2gsIHN0cnVjdA0KPiBp Z3RfYnVmICpidWYsIHVpbnQzMl90IHZhbCkNCj4gIAlpbnQgaTsNCj4gIA0KPiAgCXRtcC5ibyA9 IGxpbmVhcjsNCj4gLQl0bXAuc3RyaWRlID0gU1RSSURFOw0KPiArCXRtcC5zdXJmYWNlWzBdLnN0 cmlkZSA9IFNUUklERTsNCj4gIAl0bXAudGlsaW5nID0gSTkxNV9USUxJTkdfTk9ORTsNCj4gLQl0 bXAuc2l6ZSA9IFNJWkU7DQo+ICsJdG1wLnN1cmZhY2VbMF0uc2l6ZSA9IFNJWkU7DQo+ICAJdG1w LmJwcCA9IDMyOw0KPiAgDQo+ICAJcmVuZGVyX2NvcHkoYmF0Y2gsIE5VTEwsIGJ1ZiwgMCwgMCwg V0lEVEgsIEhFSUdIVCwgJnRtcCwgMCwgMCk7DQo+IEBAIC0xMzIsOSArMTMyLDkgQEAgc3RhdGlj IHZvaWQgcnVuX3Rlc3QgKGludCBmZCwgaW50IGNvdW50KQ0KPiAgCQlidWZbaV0uYm8gPSBkcm1f aW50ZWxfYm9fYWxsb2NfdGlsZWQoYnVmbWdyLCAiIiwNCj4gIAkJCQkJCSAgICAgV0lEVEgsIEhF SUdIVCwgNCwNCj4gIAkJCQkJCSAgICAgJnRpbGluZywgJnBpdGNoLA0KPiAwKTsNCj4gLQkJYnVm W2ldLnN0cmlkZSA9IHBpdGNoOw0KPiArCQlidWZbaV0uc3VyZmFjZVswXS5zdHJpZGUgPSBwaXRj aDsNCj4gIAkJYnVmW2ldLnRpbGluZyA9IHRpbGluZzsNCj4gLQkJYnVmW2ldLnNpemUgPSBTSVpF Ow0KPiArCQlidWZbaV0uc3VyZmFjZVswXS5zaXplID0gU0laRTsNCj4gIAkJYnVmW2ldLmJwcCA9 IDMyOw0KPiAgDQo+ICAJCXN0YXJ0X3ZhbFtpXSA9IHN0YXJ0Ow0KPiBkaWZmIC0tZ2l0IGEvdGVz dHMvaTkxNS9nZW1fcmluZ19zeW5jX2NvcHkuYw0KPiBiL3Rlc3RzL2k5MTUvZ2VtX3Jpbmdfc3lu Y19jb3B5LmMNCj4gaW5kZXggMWU1NzI4YmMuLmRkZjVmNzUwIDEwMDY0NA0KPiAtLS0gYS90ZXN0 cy9pOTE1L2dlbV9yaW5nX3N5bmNfY29weS5jDQo+ICsrKyBiL3Rlc3RzL2k5MTUvZ2VtX3Jpbmdf c3luY19jb3B5LmMNCj4gQEAgLTEzNCw5ICsxMzQsOSBAQCBzdGF0aWMgdm9pZCBzY3JhdGNoX2J1 Zl9pbml0X2Zyb21fYm8oc3RydWN0DQo+IGlndF9idWYgKmJ1ZiwgZHJtX2ludGVsX2JvICpibykN Cj4gIAltZW1zZXQoYnVmLCAwLCBzaXplb2YoKmJ1ZikpOw0KPiAgDQo+ICAJYnVmLT5ibyA9IGJv Ow0KPiAtCWJ1Zi0+c3RyaWRlID0gNCAqIFdJRFRIOw0KPiArCWJ1Zi0+c3VyZmFjZVswXS5zdHJp ZGUgPSA0ICogV0lEVEg7DQo+ICAJYnVmLT50aWxpbmcgPSBJOTE1X1RJTElOR19OT05FOw0KPiAt CWJ1Zi0+c2l6ZSA9IDQgKiBXSURUSCAqIEhFSUdIVDsNCj4gKwlidWYtPnN1cmZhY2VbMF0uc2l6 ZSA9IDQgKiBXSURUSCAqIEhFSUdIVDsNCj4gIAlidWYtPmJwcCA9IDMyOw0KPiAgfQ0KPiAgDQo+ IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zdHJlc3MuYyBiL3Rlc3RzL2k5MTUvZ2VtX3N0 cmVzcy5jDQo+IGluZGV4IDU3ZTI5MDljLi41MDI0NWI5MyAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv aTkxNS9nZW1fc3RyZXNzLmMNCj4gKysrIGIvdGVzdHMvaTkxNS9nZW1fc3RyZXNzLmMNCj4gQEAg LTE1NSw4ICsxNTUsOCBAQCBzdHJ1Y3Qgew0KPiAgc3RhdGljIHZvaWQgdGlsZTJ4eShzdHJ1Y3Qg aWd0X2J1ZiAqYnVmLCB1bnNpZ25lZCB0aWxlLCB1bnNpZ25lZCAqeCwNCj4gdW5zaWduZWQgKnkp DQo+ICB7DQo+ICAJaWd0X2Fzc2VydCh0aWxlIDwgYnVmLT5udW1fdGlsZXMpOw0KPiAtCSp4ID0g KHRpbGUqb3B0aW9ucy50aWxlX3NpemUpICUgKGJ1Zi0+c3RyaWRlL3NpemVvZih1aW50MzJfdCkp Ow0KPiAtCSp5ID0gKCh0aWxlKm9wdGlvbnMudGlsZV9zaXplKSAvIChidWYtDQo+ID5zdHJpZGUv c2l6ZW9mKHVpbnQzMl90KSkpICogb3B0aW9ucy50aWxlX3NpemU7DQo+ICsJKnggPSAodGlsZSpv cHRpb25zLnRpbGVfc2l6ZSkgJSAoYnVmLQ0KPiA+c3VyZmFjZVswXS5zdHJpZGUvc2l6ZW9mKHVp bnQzMl90KSk7DQo+ICsJKnkgPSAoKHRpbGUqb3B0aW9ucy50aWxlX3NpemUpIC8gKGJ1Zi0NCj4g PnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCkpKSAqIG9wdGlvbnMudGlsZV9zaXpl Ow0KPiAgfQ0KPiAgDQo+ICBzdGF0aWMgdm9pZCBlbWl0X2JsdChkcm1faW50ZWxfYm8gKnNyY19i bywgdWludDMyX3Qgc3JjX3RpbGluZywNCj4gdW5zaWduZWQgc3JjX3BpdGNoLA0KPiBAQCAtMjY4 LDggKzI2OCwxMCBAQCBzdGF0aWMgdm9pZCBjcHVfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNy YywNCj4gdW5zaWduZWQgc3JjX3gsIHVuc2lnbmVkIHNyY195LA0KPiAgCQlzZXRfdG9fY3B1X2Rv bWFpbihkc3QsIDEpOw0KPiAgCX0NCj4gIA0KPiAtCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5z dHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwgc3JjX3gsIHNyY195LA0KPiAtCQkgZHN0LT5kYXRhLCBk c3QtPnN0cmlkZS9zaXplb2YodWludDMyX3QpLCBkc3RfeCwgZHN0X3ksDQo+ICsJY3B1Y3B5MmQo c3JjLT5kYXRhLCBzcmMtPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksDQo+IHNy Y194LA0KPiArCQkgc3JjX3ksDQo+ICsJCSBkc3QtPmRhdGEsIGRzdC0+c3VyZmFjZVswXS5zdHJp ZGUvc2l6ZW9mKHVpbnQzMl90KSwNCj4gZHN0X3gsDQo+ICsJCSBkc3RfeSwNCj4gIAkJIGxvZ2lj YWxfdGlsZV9ubyk7DQo+ICB9DQo+ICANCj4gQEAgLTI4Nyw3ICsyODksNyBAQCBzdGF0aWMgdm9p ZCBwcndfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywNCj4gdW5zaWduZWQgc3JjX3gsIHVu c2lnbmVkIHNyY195LA0KPiAgDQo+ICAJaWYgKHNyYy0+dGlsaW5nID09IEk5MTVfVElMSU5HX05P TkUpIHsNCj4gIAkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKyspIHsNCj4g LQkJCXVuc2lnbmVkIG9mcyA9IHNyY194KnNpemVvZih1aW50MzJfdCkgKyBzcmMtDQo+ID5zdHJp ZGUqKHNyY195ICsgaSk7DQo+ICsJCQl1bnNpZ25lZCBvZnMgPSBzcmNfeCpzaXplb2YodWludDMy X3QpICsgc3JjLQ0KPiA+c3VyZmFjZVswXS5zdHJpZGUqKHNyY195ICsgaSk7DQo+ICAJCQlkcm1f aW50ZWxfYm9fZ2V0X3N1YmRhdGEoc3JjLT5ibywgb2ZzLA0KPiAgCQkJCQkJIG9wdGlvbnMudGls ZV9zaXplKnNpemUNCj4gb2YodWludDMyX3QpLA0KPiAgCQkJCQkJIHRtcF90aWxlICsNCj4gb3B0 aW9ucy50aWxlX3NpemUqaSk7DQo+IEBAIC0yOTYsMTMgKzI5OCwxNCBAQCBzdGF0aWMgdm9pZCBw cndfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywNCj4gdW5zaWduZWQgc3JjX3gsIHVuc2ln bmVkIHNyY195LA0KPiAgCQlpZiAob3B0aW9ucy51c2VfY3B1X21hcHMpDQo+ICAJCQlzZXRfdG9f Y3B1X2RvbWFpbihzcmMsIDApOw0KPiAgDQo+IC0JCWNwdWNweTJkKHNyYy0+ZGF0YSwgc3JjLT5z dHJpZGUvc2l6ZW9mKHVpbnQzMl90KSwNCj4gc3JjX3gsIHNyY195LA0KPiArCQljcHVjcHkyZChz cmMtPmRhdGEsIHNyYy0NCj4gPnN1cmZhY2VbMF0uc3RyaWRlL3NpemVvZih1aW50MzJfdCksDQo+ ICsJCQkgc3JjX3gsIHNyY195LA0KPiAgCQkJIHRtcF90aWxlLCBvcHRpb25zLnRpbGVfc2l6ZSwg MCwgMCwNCj4gbG9naWNhbF90aWxlX25vKTsNCj4gIAl9DQo+ICANCj4gIAlpZiAoZHN0LT50aWxp bmcgPT0gSTkxNV9USUxJTkdfTk9ORSkgew0KPiAgCQlmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy50 aWxlX3NpemU7IGkrKykgew0KPiAtCQkJdW5zaWduZWQgb2ZzID0gZHN0X3gqc2l6ZW9mKHVpbnQz Ml90KSArIGRzdC0NCj4gPnN0cmlkZSooZHN0X3kgKyBpKTsNCj4gKwkJCXVuc2lnbmVkIG9mcyA9 IGRzdF94KnNpemVvZih1aW50MzJfdCkgKyBkc3QtDQo+ID5zdXJmYWNlWzBdLnN0cmlkZSooZHN0 X3kgKyBpKTsNCj4gIAkJCWRybV9pbnRlbF9ib19zdWJkYXRhKGRzdC0+Ym8sIG9mcywNCj4gIAkJ CQkJICAgICBvcHRpb25zLnRpbGVfc2l6ZSpzaXplb2YodQ0KPiBpbnQzMl90KSwNCj4gIAkJCQkJ ICAgICB0bXBfdGlsZSArDQo+IG9wdGlvbnMudGlsZV9zaXplKmkpOw0KPiBAQCAtMzEyLDcgKzMx NSw4IEBAIHN0YXRpYyB2b2lkIHByd19jb3B5ZnVuYyhzdHJ1Y3QgaWd0X2J1ZiAqc3JjLA0KPiB1 bnNpZ25lZCBzcmNfeCwgdW5zaWduZWQgc3JjX3ksDQo+ICAJCQlzZXRfdG9fY3B1X2RvbWFpbihk c3QsIDEpOw0KPiAgDQo+ICAJCWNwdWNweTJkKHRtcF90aWxlLCBvcHRpb25zLnRpbGVfc2l6ZSwg MCwgMCwNCj4gLQkJCSBkc3QtPmRhdGEsIGRzdC0+c3RyaWRlL3NpemVvZih1aW50MzJfdCksDQo+ IGRzdF94LCBkc3RfeSwNCj4gKwkJCSBkc3QtPmRhdGEsIGRzdC0NCj4gPnN1cmZhY2VbMF0uc3Ry aWRlL3NpemVvZih1aW50MzJfdCksDQo+ICsJCQkgZHN0X3gsIGRzdF95LA0KPiAgCQkJIGxvZ2lj YWxfdGlsZV9ubyk7DQo+ICAJfQ0KPiAgfQ0KPiBAQCAtMzI3LDkgKzMzMSw5IEBAIHN0YXRpYyB2 b2lkIGJsaXR0ZXJfY29weWZ1bmMoc3RydWN0IGlndF9idWYgKnNyYywNCj4gdW5zaWduZWQgc3Jj X3gsIHVuc2lnbmVkIHNyY195DQo+ICAJaWYgKGtlZXBfZ3B1X2J1c3lfY291bnRlciAmIDEgJiYg IWZlbmNlX3N0b3JtKQ0KPiAgCQlrZWVwX2dwdV9idXN5KCk7DQo+ICANCj4gLQllbWl0X2JsdChz cmMtPmJvLCBzcmMtPnRpbGluZywgc3JjLT5zdHJpZGUsIHNyY194LCBzcmNfeSwNCj4gKwllbWl0 X2JsdChzcmMtPmJvLCBzcmMtPnRpbGluZywgc3JjLT5zdXJmYWNlWzBdLnN0cmlkZSwgc3JjX3gs DQo+IHNyY195LA0KPiAgCQkgb3B0aW9ucy50aWxlX3NpemUsIG9wdGlvbnMudGlsZV9zaXplLA0K PiAtCQkgZHN0LT5ibywgZHN0LT50aWxpbmcsIGRzdC0+c3RyaWRlLCBkc3RfeCwgZHN0X3kpOw0K PiArCQkgZHN0LT5ibywgZHN0LT50aWxpbmcsIGRzdC0+c3VyZmFjZVswXS5zdHJpZGUsIGRzdF94 LA0KPiBkc3RfeSk7DQo+ICANCj4gIAlpZiAoIShrZWVwX2dwdV9idXN5X2NvdW50ZXIgJiAxKSAm JiAhZmVuY2Vfc3Rvcm0pDQo+ICAJCWtlZXBfZ3B1X2J1c3koKTsNCj4gQEAgLTQ0MSw3ICs0NDUs NyBAQCBzdGF0aWMgdm9pZCBmYW5fb3V0KHZvaWQpDQo+ICANCj4gIAkJY3B1Y3B5MmQodG1wX3Rp bGUsIG9wdGlvbnMudGlsZV9zaXplLCAwLCAwLA0KPiAgCQkJIGJ1ZmZlcnNbY3VycmVudF9zZXRd W2J1Zl9pZHhdLmRhdGEsDQo+IC0JCQkgYnVmZmVyc1tjdXJyZW50X3NldF1bYnVmX2lkeF0uc3Ry aWRlIC8NCj4gc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwkJCSBidWZmZXJzW2N1cnJlbnRfc2V0XVti dWZfaWR4XS5zdXJmYWNlWzBdLnN0cmlkDQo+IGUgLyBzaXplb2YodWludDMyX3QpLA0KPiAgCQkJ IHgsIHksIGkpOw0KPiAgCX0NCj4gIA0KPiBAQCAtNDY1LDcgKzQ2OSw3IEBAIHN0YXRpYyB2b2lk IGZhbl9pbl9hbmRfY2hlY2sodm9pZCkNCj4gIAkJCXNldF90b19jcHVfZG9tYWluKCZidWZmZXJz W2N1cnJlbnRfc2V0XVtidWZfaWR4DQo+IF0sIDApOw0KPiAgDQo+ICAJCWNwdWNweTJkKGJ1ZmZl cnNbY3VycmVudF9zZXRdW2J1Zl9pZHhdLmRhdGEsDQo+IC0JCQkgYnVmZmVyc1tjdXJyZW50X3Nl dF1bYnVmX2lkeF0uc3RyaWRlIC8NCj4gc2l6ZW9mKHVpbnQzMl90KSwNCj4gKwkJCSBidWZmZXJz W2N1cnJlbnRfc2V0XVtidWZfaWR4XS5zdXJmYWNlWzBdLnN0cmlkDQo+IGUgLyBzaXplb2YodWlu dDMyX3QpLA0KPiAgCQkJIHgsIHksDQo+ICAJCQkgdG1wX3RpbGUsIG9wdGlvbnMudGlsZV9zaXpl LCAwLCAwLA0KPiAgCQkJIGkpOw0KPiBAQCAtNDc2LDE1ICs0ODAsMTUgQEAgc3RhdGljIHZvaWQg c2FuaXRpemVfc3RyaWRlKHN0cnVjdCBpZ3RfYnVmDQo+ICpidWYpDQo+ICB7DQo+ICANCj4gIAlp ZiAoaWd0X2J1Zl9oZWlnaHQoYnVmKSA+IG9wdGlvbnMubWF4X2RpbWVuc2lvbikNCj4gLQkJYnVm LT5zdHJpZGUgPSBidWYtPnNpemUgLyBvcHRpb25zLm1heF9kaW1lbnNpb247DQo+ICsJCWJ1Zi0+ c3VyZmFjZVswXS5zdHJpZGUgPSBidWYtPnN1cmZhY2VbMF0uc2l6ZSAvDQo+IG9wdGlvbnMubWF4 X2RpbWVuc2lvbjsNCj4gIA0KPiAgCWlmIChpZ3RfYnVmX2hlaWdodChidWYpIDwgb3B0aW9ucy50 aWxlX3NpemUpDQo+IC0JCWJ1Zi0+c3RyaWRlID0gYnVmLT5zaXplIC8gb3B0aW9ucy50aWxlX3Np emU7DQo+ICsJCWJ1Zi0+c3VyZmFjZVswXS5zdHJpZGUgPSBidWYtPnN1cmZhY2VbMF0uc2l6ZSAv DQo+IG9wdGlvbnMudGlsZV9zaXplOw0KPiAgDQo+ICAJaWYgKGlndF9idWZfd2lkdGgoYnVmKSA8 IG9wdGlvbnMudGlsZV9zaXplKQ0KPiAtCQlidWYtPnN0cmlkZSA9IG9wdGlvbnMudGlsZV9zaXpl ICogc2l6ZW9mKHVpbnQzMl90KTsNCj4gKwkJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9IG9wdGlv bnMudGlsZV9zaXplICoNCj4gc2l6ZW9mKHVpbnQzMl90KTsNCj4gIA0KPiAtCWlndF9hc3NlcnQo YnVmLT5zdHJpZGUgPD0gODE5Mik7DQo+ICsJaWd0X2Fzc2VydChidWYtPnN1cmZhY2VbMF0uc3Ry aWRlIDw9IDgxOTIpOw0KPiAgCWlndF9hc3NlcnQoaWd0X2J1Zl93aWR0aChidWYpIDw9IG9wdGlv bnMubWF4X2RpbWVuc2lvbik7DQo+ICAJaWd0X2Fzc2VydChpZ3RfYnVmX2hlaWdodChidWYpIDw9 IG9wdGlvbnMubWF4X2RpbWVuc2lvbik7DQo+ICANCj4gQEAgLTQ5OCwxMCArNTAyLDEwIEBAIHN0 YXRpYyB2b2lkIGluaXRfYnVmZmVyKHN0cnVjdCBpZ3RfYnVmICpidWYsDQo+IHVuc2lnbmVkIHNp emUpDQo+ICAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsNCj4gIA0KPiAgCWJ1Zi0+Ym8g PSBkcm1faW50ZWxfYm9fYWxsb2MoYnVmbWdyLCAidGlsZWQgYm8iLCBzaXplLCA0MDk2KTsNCj4g LQlidWYtPnNpemUgPSBzaXplOw0KPiArCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gc2l6ZTsNCj4g IAlpZ3RfYXNzZXJ0KGJ1Zi0+Ym8pOw0KPiAgCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfTk9O RTsNCj4gLQlidWYtPnN0cmlkZSA9IDQwOTY7DQo+ICsJYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSA9 IDQwOTY7DQo+ICAJYnVmLT5icHAgPSAzMjsNCj4gIA0KPiAgCXNhbml0aXplX3N0cmlkZShidWYp Ow0KPiBAQCAtNTYwLDI1ICs1NjQsMjYgQEAgc3RhdGljIHZvaWQgaW5pdF9zZXQodW5zaWduZWQg c2V0KQ0KPiAgCQlpZiAoYnVmZmVyc1tzZXRdW2ldLnRpbGluZyA9PSBJOTE1X1RJTElOR19OT05F KSB7DQo+ICAJCQkvKiBtaW4gNjQgYnl0ZSBzdHJpZGUgKi8NCj4gIAkJCXIgJT0gODsNCj4gLQkJ CWJ1ZmZlcnNbc2V0XVtpXS5zdHJpZGUgPSA2NCAqICgxIDw8IHIpOw0KPiArCQkJYnVmZmVyc1tz ZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRlID0gNjQgKiAoMSA8PA0KPiByKTsNCj4gIAkJfSBlbHNl IGlmIChJU19HRU4yKGRldmlkKSkgew0KPiAgCQkJLyogbWluIDEyOCBieXRlIHN0cmlkZSAqLw0K PiAgCQkJciAlPSA3Ow0KPiAtCQkJYnVmZmVyc1tzZXRdW2ldLnN0cmlkZSA9IDEyOCAqICgxIDw8 IHIpOw0KPiArCQkJYnVmZmVyc1tzZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRlID0gMTI4ICogKDEg PDwNCj4gcik7DQo+ICAJCX0gZWxzZSB7DQo+ICAJCQkvKiBtaW4gNTEyIGJ5dGUgc3RyaWRlICov DQo+ICAJCQlyICU9IDU7DQo+IC0JCQlidWZmZXJzW3NldF1baV0uc3RyaWRlID0gNTEyICogKDEg PDwgcik7DQo+ICsJCQlidWZmZXJzW3NldF1baV0uc3VyZmFjZVswXS5zdHJpZGUgPSA1MTIgKiAo MSA8PA0KPiByKTsNCj4gIAkJfQ0KPiAgDQo+ICAJCXNhbml0aXplX3N0cmlkZSgmYnVmZmVyc1tz ZXRdW2ldKTsNCj4gIA0KPiAgCQlnZW1fc2V0X3RpbGluZyhkcm1fZmQsIGJ1ZmZlcnNbc2V0XVtp XS5iby0+aGFuZGxlLA0KPiAgCQkJICAgICAgIGJ1ZmZlcnNbc2V0XVtpXS50aWxpbmcsDQo+IC0J CQkgICAgICAgYnVmZmVyc1tzZXRdW2ldLnN0cmlkZSk7DQo+ICsJCQkgICAgICAgYnVmZmVyc1tz ZXRdW2ldLnN1cmZhY2VbMF0uc3RyaWRlKTsNCj4gIA0KPiAgCQlpZiAob3B0aW9ucy50cmFjZV90 aWxlICE9IC0xICYmIGkgPT0NCj4gb3B0aW9ucy50cmFjZV90aWxlL29wdGlvbnMudGlsZXNfcGVy X2J1ZikNCj4gLQkJCWlndF9pbmZvKCJjaGFuZ2luZyBidWZmZXIgJWkgY29udGFpbmluZyB0aWxl DQo+ICVpOiB0aWxpbmcgJWksIHN0cmlkZSAlaVxuIiwgaSwgb3B0aW9ucy50cmFjZV90aWxlLA0K PiBidWZmZXJzW3NldF1baV0udGlsaW5nLCBidWZmZXJzW3NldF1baV0uc3RyaWRlKTsNCj4gKwkJ CWlndF9pbmZvKCJjaGFuZ2luZyBidWZmZXIgJWkgY29udGFpbmluZyB0aWxlDQo+ICVpOiB0aWxp bmcgJWksIHN0cmlkZSAlaVxuIiwgaSwgb3B0aW9ucy50cmFjZV90aWxlLA0KPiBidWZmZXJzW3Nl dF1baV0udGlsaW5nLA0KPiArCQkJCSBidWZmZXJzW3NldF1baV0uc3VyZmFjZVswXS5zdHJpZGUp Ow0KPiAgCX0NCj4gIH0NCj4gIA0KPiBAQCAtNjE2LDEwICs2MjEsMTAgQEAgc3RhdGljIHZvaWQg Y29weV90aWxlcyh1bnNpZ25lZCAqcGVybXV0YXRpb24pDQo+ICANCj4gIAkJaWYgKG9wdGlvbnMu bm9faHcpIHsNCj4gIAkJCWNwdWNweTJkKHNyY19idWYtPmRhdGEsDQo+IC0JCQkJIHNyY19idWYt PnN0cmlkZSAvIHNpemVvZih1aW50MzJfdCksDQo+ICsJCQkJIHNyY19idWYtPnN1cmZhY2VbMF0u c3RyaWRlIC8NCj4gc2l6ZW9mKHVpbnQzMl90KSwNCj4gIAkJCQkgc3JjX3gsIHNyY195LA0KPiAg CQkJCSBkc3RfYnVmLT5kYXRhLA0KPiAtCQkJCSBkc3RfYnVmLT5zdHJpZGUgLyBzaXplb2YodWlu dDMyX3QpLA0KPiArCQkJCSBkc3RfYnVmLT5zdXJmYWNlWzBdLnN0cmlkZSAvDQo+IHNpemVvZih1 aW50MzJfdCksDQo+ICAJCQkJIGRzdF94LCBkc3RfeSwNCj4gIAkJCQkgaSk7DQo+ICAJCX0gZWxz ZSB7DQo+IEBAIC04MDgsNyArODEzLDcgQEAgc3RhdGljIHZvaWQgY2hlY2tfcmVuZGVyX2NvcHlm dW5jKHZvaWQpDQo+ICANCj4gIAkJbWVtc2V0KHNyYy5kYXRhLCAweGZmLCBvcHRpb25zLnNjcmF0 Y2hfYnVmX3NpemUpOw0KPiAgCQlmb3IgKGogPSAwOyBqIDwgb3B0aW9ucy50aWxlX3NpemU7IGor Kykgew0KPiAtCQkJcHRyID0gKHVpbnQzMl90KikoKGNoYXIgKilzcmMuZGF0YSArIHN4KjQgKw0K PiAoc3kraikgKiBzcmMuc3RyaWRlKTsNCj4gKwkJCXB0ciA9ICh1aW50MzJfdCopKChjaGFyICop c3JjLmRhdGEgKyBzeCo0ICsNCj4gKHN5K2opICogc3JjLnN1cmZhY2VbMF0uc3RyaWRlKTsNCj4g IAkJCWZvciAoaSA9IDA7IGkgPCBvcHRpb25zLnRpbGVfc2l6ZTsgaSsrKQ0KPiAgCQkJCXB0cltp XSA9IGogKiBvcHRpb25zLnRpbGVfc2l6ZSArIGk7DQo+ICAJCX0NCj4gQEAgLTgxOSw3ICs4MjQs NyBAQCBzdGF0aWMgdm9pZCBjaGVja19yZW5kZXJfY29weWZ1bmModm9pZCkNCj4gIAkJCXNldF90 b19jcHVfZG9tYWluKCZkc3QsIDApOw0KPiAgDQo+ICAJCWZvciAoaiA9IDA7IGogPCBvcHRpb25z LnRpbGVfc2l6ZTsgaisrKSB7DQo+IC0JCQlwdHIgPSAodWludDMyX3QqKSgoY2hhciAqKWRzdC5k YXRhICsgZHgqNCArDQo+IChkeStqKSAqIGRzdC5zdHJpZGUpOw0KPiArCQkJcHRyID0gKHVpbnQz Ml90KikoKGNoYXIgKilkc3QuZGF0YSArIGR4KjQgKw0KPiAoZHkraikgKiBkc3Quc3VyZmFjZVsw XS5zdHJpZGUpOw0KPiAgCQkJZm9yIChpID0gMDsgaSA8IG9wdGlvbnMudGlsZV9zaXplOyBpKysp DQo+ICAJCQkJaWYgKHB0cltpXSAhPSBqICogb3B0aW9ucy50aWxlX3NpemUgKw0KPiBpKSB7DQo+ ICAJCQkJCWlndF9pbmZvKCJyZW5kZXIgY29weWZ1bmMNCj4gbWlzbWF0Y2ggYXQgKCVkLCAlZCk6 IGZvdW5kICVkLCBleHBlY3RlZCAlZFxuIiwgaSwgaiwgcHRyW2ldLCBqICoNCj4gb3B0aW9ucy50 aWxlX3NpemUgKyBpKTsNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvaTkxNV9wbV9zc2V1LmMg Yi90ZXN0cy9pOTE1L2k5MTVfcG1fc3NldS5jDQo+IGluZGV4IGU2NzFlMTkwLi5jMmRlZTExOCAx MDA2NDQNCj4gLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3NzZXUuYw0KPiArKysgYi90ZXN0cy9p OTE1L2k5MTVfcG1fc3NldS5jDQo+IEBAIC0yOTksMTAgKzI5OSwxMSBAQCBnZW1faW5pdCh2b2lk KQ0KPiAgCWlndF9hc3NlcnQoZ2VtLmJhdGNoKTsNCj4gIAlnZW0uaW5pdCA9IDM7DQo+ICANCj4g LQlnZW0uYnVmLnN0cmlkZSA9IHNpemVvZih1aW50MzJfdCk7DQo+ICsJZ2VtLmJ1Zi5zdXJmYWNl WzBdLnN0cmlkZSA9IHNpemVvZih1aW50MzJfdCk7DQo+ICAJZ2VtLmJ1Zi50aWxpbmcgPSBJOTE1 X1RJTElOR19OT05FOw0KPiAtCWdlbS5idWYuc2l6ZSA9IGdlbS5idWYuc3RyaWRlOw0KPiAtCWdl bS5idWYuYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZ2VtLmJ1Zm1nciwgIiIsIGdlbS5idWYuc2l6 ZSwNCj4gNDA5Nik7DQo+ICsJZ2VtLmJ1Zi5zdXJmYWNlWzBdLnNpemUgPSBnZW0uYnVmLnN1cmZh Y2VbMF0uc3RyaWRlOw0KPiArCWdlbS5idWYuYm8gPSBkcm1faW50ZWxfYm9fYWxsb2MoZ2VtLmJ1 Zm1nciwgIiIsDQo+ICsJCQkJCWdlbS5idWYuc3VyZmFjZVswXS5zaXplLCA0MDk2KTsNCj4gIAln ZW0uYnVmLmJwcCA9IDMyOw0KPiAgCWlndF9hc3NlcnQoZ2VtLmJ1Zi5ibyk7DQo+ICAJZ2VtLmlu aXQgPSA0Ow0KPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2JpZ19mYi5jIGIvdGVzdHMva21zX2Jp Z19mYi5jDQo+IGluZGV4IGM1ZDAwMmNhLi5lYjE0NGRhOSAxMDA2NDQNCj4gLS0tIGEvdGVzdHMv a21zX2JpZ19mYi5jDQo+ICsrKyBiL3Rlc3RzL2ttc19iaWdfZmIuYw0KPiBAQCAtNjAsOSArNjAs OSBAQCBzdGF0aWMgdm9pZCBpbml0X2J1ZihkYXRhX3QgKmRhdGEsDQo+ICAJYnVmLT5ibyA9IGdl bV9oYW5kbGVfdG9fbGliZHJtX2JvKGRhdGEtPmJ1Zm1nciwgZGF0YS0+ZHJtX2ZkLA0KPiAgCQkJ CQkgIG5hbWUsIGZiLT5nZW1faGFuZGxlKTsNCj4gIAlidWYtPnRpbGluZyA9IGlndF9mYl9tb2Rf dG9fdGlsaW5nKGZiLT5tb2RpZmllcik7DQo+IC0JYnVmLT5zdHJpZGUgPSBmYi0+c3RyaWRlc1sw XTsNCj4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gZmItPnN0cmlkZXNbMF07DQo+ICAJYnVm LT5icHAgPSBmYi0+cGxhbmVfYnBwWzBdOw0KPiAtCWJ1Zi0+c2l6ZSA9IGZiLT5zaXplOw0KPiAr CWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gZmItPnNpemU7DQo+ICB9DQo+ICANCj4gIHN0YXRpYyB2 b2lkIGZpbmlfYnVmKHN0cnVjdCBpZ3RfYnVmICpidWYpDQo+IEBAIC05OSw4ICs5OSwxMCBAQCBz dGF0aWMgdm9pZCBjb3B5X3BhdHRlcm4oZGF0YV90ICpkYXRhLA0KPiAgCQloID0gbWluKGgsIHNy Y19mYi0+aGVpZ2h0IC0gc3kpOw0KPiAgCQloID0gbWluKGgsIGRzdF9mYi0+aGVpZ2h0IC0gZHkp Ow0KPiAgDQo+IC0JCWludGVsX2JsdF9jb3B5KGRhdGEtPmJhdGNoLCBzcmMuYm8sIHN4LCBzeSwg c3JjLnN0cmlkZSwNCj4gLQkJCSAgICAgICBkc3QuYm8sIGR4LCBkeSwgZHN0LnN0cmlkZSwgdywg aCwNCj4gZHN0LmJwcCk7DQo+ICsJCWludGVsX2JsdF9jb3B5KGRhdGEtPmJhdGNoLCBzcmMuYm8s IHN4LCBzeSwNCj4gKwkJCSAgICAgICBzcmMuc3VyZmFjZVswXS5zdHJpZGUsDQo+ICsJCQkgICAg ICAgZHN0LmJvLCBkeCwgZHksIGRzdC5zdXJmYWNlWzBdLnN0cmlkZSwNCj4gdywgaCwNCj4gKwkJ CSAgICAgICBkc3QuYnBwKTsNCj4gIAl9DQo+ICANCj4gIAlmaW5pX2J1ZigmZHN0KTsNCj4gZGlm ZiAtLWdpdCBhL3Rlc3RzL2ttc19wc3IuYyBiL3Rlc3RzL2ttc19wc3IuYw0KPiBpbmRleCAyMzJj ODBhYS4uZDliZTg3ZDkgMTAwNjQ0DQo+IC0tLSBhL3Rlc3RzL2ttc19wc3IuYw0KPiArKysgYi90 ZXN0cy9rbXNfcHNyLmMNCj4gQEAgLTE1Myw5ICsxNTMsOSBAQCBzdGF0aWMgdm9pZCBzY3JhdGNo X2J1Zl9pbml0KHN0cnVjdCBpZ3RfYnVmICpidWYsDQo+IGRybV9pbnRlbF9ibyAqYm8sDQo+ICAJ bWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKCpidWYpKTsNCj4gIA0KPiAgCWJ1Zi0+Ym8gPSBibzsNCj4g LQlidWYtPnN0cmlkZSA9IHN0cmlkZTsNCj4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gc3Ry aWRlOw0KPiAgCWJ1Zi0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsNCj4gLQlidWYtPnNpemUgPSBz aXplOw0KPiArCWJ1Zi0+c3VyZmFjZVswXS5zaXplID0gc2l6ZTsNCj4gIAlidWYtPmJwcCA9IDMy Ow0KPiAgfQ0KPiAgDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9wZXJmLmMgYi90ZXN0cy9wZXJmLmMN Cj4gaW5kZXggZjVkZDYwNTEuLjk4MjI3N2RmIDEwMDY0NA0KPiAtLS0gYS90ZXN0cy9wZXJmLmMN Cj4gKysrIGIvdGVzdHMvcGVyZi5jDQo+IEBAIC01MDYsOSArNTA2LDkgQEAgc2NyYXRjaF9idWZf aW5pdChkcm1faW50ZWxfYnVmbWdyICpidWZtZ3IsDQo+ICAJbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9m KCpidWYpKTsNCj4gIA0KPiAgCWJ1Zi0+Ym8gPSBibzsNCj4gLQlidWYtPnN0cmlkZSA9IHN0cmlk ZTsNCj4gKwlidWYtPnN1cmZhY2VbMF0uc3RyaWRlID0gc3RyaWRlOw0KPiAgCWJ1Zi0+dGlsaW5n ID0gSTkxNV9USUxJTkdfTk9ORTsNCj4gLQlidWYtPnNpemUgPSBzaXplOw0KPiArCWJ1Zi0+c3Vy ZmFjZVswXS5zaXplID0gc2l6ZTsNCj4gIAlidWYtPmJwcCA9IDMyOw0KPiAgfQ0KPiAgDQpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxp bmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK