From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6EF5F10EF25 for ; Fri, 13 May 2022 08:47:07 +0000 (UTC) From: "Kahola, Mika" To: "B, Jeevan" , "igt-dev@lists.freedesktop.org" Date: Fri, 13 May 2022 08:47:05 +0000 Message-ID: <446ddbd9f09948a2b3830a72ca71e62e@intel.com> References: <20220420103909.17175-1-jeevan.b@intel.com> <20220420103909.17175-3-jeevan.b@intel.com> In-Reply-To: <20220420103909.17175-3-jeevan.b@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t v2 2/4] lib/DG2: create flat ccs framebuffers with 4-tile List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Heikkila, Juha-pekka" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBpZ3QtZGV2IDxpZ3QtZGV2LWJv dW5jZXNAbGlzdHMuZnJlZWRlc2t0b3Aub3JnPiBPbiBCZWhhbGYgT2YgSmVldmFuIEINCj4gU2Vu dDogV2VkbmVzZGF5LCBBcHJpbCAyMCwgMjAyMiAxOjM5IFBNDQo+IFRvOiBpZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZw0KPiBDYzogSGVpa2tpbGEsIEp1aGEtcGVra2EgPGp1aGEtcGVra2Eu aGVpa2tpbGFAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBbaWd0LWRldl0gW1BBVENIIGktZy10IHYy IDIvNF0gbGliL0RHMjogY3JlYXRlIGZsYXQgY2NzIGZyYW1lYnVmZmVycyB3aXRoDQo+IDQtdGls ZQ0KPiANCj4gRnJvbTogSnVoYS1QZWtrYSBIZWlra2lsw6QgPGp1aGEtcGVra2EuaGVpa2tpbGFA aW50ZWwuY29tPg0KPiANCj4gQWRkIHN1cHBvcnQgZm9yIERHMiBmbGF0IGNjcyBmcmFtZWJ1ZmZl cnMgd2l0aCB0aWxlLTQuDQo+IA0KPiBTaWduZWQtb2ZmLWJ5OiBKdWhhLVBla2thIEhlaWtraWzD pCA8anVoYS1wZWtrYS5oZWlra2lsYUBpbnRlbC5jb20+DQo+IFNpZ25lZC1vZmYtYnk6IEplZXZh biBCIDxqZWV2YW4uYkBpbnRlbC5jb20+DQoNClJldmlld2VkLWJ5OiBNaWthIEthaG9sYSA8bWlr YS5rYWhvbGFAaW50ZWwuY29tPg0KDQo+IC0tLQ0KPiAgbGliL2dlbjlfcmVuZGVyLmggICAgICAg fCAgNDAgKysrKysrKysrKy0tLQ0KPiAgbGliL2lndF9mYi5jICAgICAgICAgICAgfCAgNDkgKysr KysrKysrKysrLS0tLQ0KPiAgbGliL2ludGVsX2F1eF9wZ3RhYmxlLmMgfCAgIDYgKy0NCj4gIGxp Yi9pbnRlbF9iYXRjaGJ1ZmZlci5jIHwgICAyICstDQo+ICBsaWIvaW50ZWxfYnVmb3BzLmMgICAg ICB8IDExOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tDQo+ICBsaWIvaW50 ZWxfY2hpcHNldC5oICAgICB8ICAgMyArLQ0KPiAgbGliL3JlbmRlcmNvcHlfZ2VuOS5jICAgfCAx MjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQ0KPiAgbGliL3ZlYm94 Y29weV9nZW4xMi5jICAgfCAxMDkgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQ0K PiAgOCBmaWxlcyBjaGFuZ2VkLCAzNDggaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQ0K PiANCj4gZGlmZiAtLWdpdCBhL2xpYi9nZW45X3JlbmRlci5oIGIvbGliL2dlbjlfcmVuZGVyLmgg aW5kZXggMDZkOTcxOGMuLjgyYTlmOTljDQo+IDEwMDY0NA0KPiAtLS0gYS9saWIvZ2VuOV9yZW5k ZXIuaA0KPiArKysgYi9saWIvZ2VuOV9yZW5kZXIuaA0KPiBAQCAtNTksOSArNTksMTUgQEAgc3Ry dWN0IGdlbjlfc3VyZmFjZV9zdGF0ZSB7DQo+ICAJCXVpbnQzMl90IGRlcHRoOjExOw0KPiAgCX0g c3MzOw0KPiANCj4gLQlzdHJ1Y3Qgew0KPiAtCQl1aW50MzJfdCBtaW5pbXVtX2FycmF5X2VsZW1l bnQ6Mjc7DQo+IC0JCXVpbnQzMl90IHBhZDA6NTsNCj4gKwl1bmlvbiB7DQo+ICsJCXN0cnVjdCB7 DQo+ICsJCQl1aW50MzJfdCBtaW5pbXVtX2FycmF5X2VsZW1lbnQ6Mjc7DQo+ICsJCQl1aW50MzJf dCBwYWQwOjU7DQo+ICsJCX0gc2tsOw0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3QgZGVj b21wcmVzc19pbl9sMzoxOw0KPiArCQkJdWludDMyX3QgcGFkMDozMTsNCj4gKwkJfSBkZzI7DQo+ ICAJfSBzczQ7DQo+IA0KPiAgCXN0cnVjdCB7DQo+IEBAIC0xMTYsNiArMTIyLDE1IEBAIHN0cnVj dCBnZW45X3N1cmZhY2Vfc3RhdGUgew0KPiAgCQkJdWludDMyX3QgbWVkaWFfY29tcHJlc3Npb246 MTsNCj4gIAkJCXVpbnQzMl90IHBhZDI6MTsNCj4gIAkJfSB0Z2w7DQo+ICsNCj4gKwkJc3RydWN0 IHsNCj4gKwkJCXVpbnQzMl90IHBhZDA6MTQ7DQo+ICsJCQl1aW50MzJfdA0KPiBkaXNhYmxlX3N1 cHBvcnRfZm9yX211bHRpX2dwdV9wYXJ0aWFsX3dyaXRlczoxOw0KPiArCQkJdWludDMyX3QgZGlz YWJsZV9zdXBwb3J0X2Zvcl9tdWx0aV9ncHVfYXRvbWljczoxOw0KPiArCQkJdWludDMyX3QgcGFk MToxNDsNCj4gKwkJCXVpbnQzMl90IG1lbW9yeV9jb21wcmVzc2lvbl9lbmFibGU6MTsNCj4gKwkJ CXVpbnQzMl90IG1lbW9yeV9jb21wcmVzc2lvbl90eXBlOjE7DQo+ICsJCX0gZGcyOw0KPiAgCX0g c3M3Ow0KPiANCj4gIAlzdHJ1Y3Qgew0KPiBAQCAtMTM4LDE1ICsxNTMsMjIgQEAgc3RydWN0IGdl bjlfc3VyZmFjZV9zdGF0ZSB7DQo+ICAJCXVpbnQzMl90IGF1eF9iYXNlX2FkZHJfaGk7DQo+ICAJ fSBzczExOw0KPiANCj4gLQkvKiByZWdpc3RlciBjYW4gYmUgdXNlZCBmb3IgZWl0aGVyDQo+IC0J ICogY2xlYXIgdmFsdWUgb3IgZGVwdGggY2xlYXIgdmFsdWUNCj4gLQkgKi8NCj4gIAlzdHJ1Y3Qg ew0KPiAtCQl1aW50MzJfdCBjbGVhcl9hZGRyZXNzOw0KPiAtCX0gc3MxMjsNCj4gKwkJLyoNCj4g KwkJICogY29tcHJlc3Npb25fZm9ybWF0IGlzIHVzZWQgb25seSBkZzIgb253YXJkLg0KPiArCQkg KiBwcmlvciB0byBkZzIgZnVsbCBzczEyIGlzIHVzZWQgZm9yIHRoZSBhZGRyZXNzDQo+ICsJCSAq IGJ1dCBkdWUgdG8gYWxpZ25tZW50cyBiaXRzIDAuLjYgd2lsbCBiZSB6ZXJvDQo+ICsJCSAqIGFu ZCBhc3NlcnRlZCBpbiBjb2RlIHRvIGJlIHNvDQo+ICsJCSAqLw0KPiArCQl1aW50MzJfdCBjb21w cmVzc2lvbl9mb3JtYXQ6NTsNCj4gKwkJdWludDMyX3QgcGFkMDoxOw0KPiArCQl1aW50MzJfdCBj bGVhcl9hZGRyZXNzOjI2Ow0KPiArICAgICAgICB9IHNzMTI7DQo+IA0KPiAgCXN0cnVjdCB7DQo+ IC0JCXVpbnQzMl90IGNsZWFyX2FkZHJlc3NfaGk7DQo+ICsJCXVpbnQzMl90IGNsZWFyX2FkZHJl c3NfaGk6MTY7DQo+ICsJCXVpbnQzMl90IHBhZDA6MTY7DQo+ICsNCj4gIAl9IHNzMTM7DQo+IA0K PiAgCXN0cnVjdCB7DQo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMg aW5kZXggZWFmYmU3ZmQuLjkzZTk4NzMzIDEwMDY0NA0KPiAtLS0gYS9saWIvaWd0X2ZiLmMNCj4g KysrIGIvbGliL2lndF9mYi5jDQo+IEBAIC00NTcsNiArNDU3LDkgQEAgdm9pZCBpZ3RfZ2V0X2Zi X3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IG1vZGlmaWVyLCBpbnQNCj4gZmJfYnBwLA0KPiAg CWNhc2UgSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTX0NDOg0KPiAgCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOg0KPiAgCWNhc2UgSTkxNV9GT1JN QVRfTU9EXzRfVElMRUQ6DQo+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfUkNf Q0NTOg0KPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX01DX0NDUzoNCj4gKwlj YXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEX0RHMl9SQ19DQ1NfQ0M6DQo+ICAJCWlndF9yZXF1 aXJlX2ludGVsKGZkKTsNCj4gIAkJaWYgKGludGVsX2Rpc3BsYXlfdmVyKGludGVsX2dldF9kcm1f ZGV2aWQoZmQpKSA9PSAyKSB7DQo+ICAJCQkqd2lkdGhfcmV0ID0gMTI4Ow0KPiBAQCAtNTY1LDE0 ICs1NjgsMTcgQEAgdm9pZCBpZ3RfZ2V0X2ZiX3RpbGVfc2l6ZShpbnQgZmQsIHVpbnQ2NF90IG1v ZGlmaWVyLCBpbnQNCj4gZmJfYnBwLA0KPiANCj4gIHN0YXRpYyBib29sIGlzX2dlbjEyX21jX2Nj c19tb2RpZmllcih1aW50NjRfdCBtb2RpZmllcikgIHsNCj4gLQlyZXR1cm4gbW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfTUNfQ0NTOw0KPiArCXJldHVybiBtb2RpZmll ciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9NQ19DQ1MgfHwNCj4gKwkJbW9kaWZp ZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX01DX0NDUzsNCj4gIH0NCj4gDQo+ICBz dGF0aWMgYm9vbCBpc19nZW4xMl9jY3NfbW9kaWZpZXIodWludDY0X3QgbW9kaWZpZXIpICB7DQo+ ICAJcmV0dXJuIGlzX2dlbjEyX21jX2Njc19tb2RpZmllcihtb2RpZmllcikgfHwNCj4gIAkJbW9k aWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTIHx8DQo+IC0JCW1v ZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19DQzsNCj4gKwkJ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTX0NDDQo+IHx8 DQo+ICsJCW1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF80X1RJTEVEX0RHMl9SQ19DQ1MgfHwN Cj4gKwkJbW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDU19DQzsN Cj4gIH0NCj4gDQo+ICBzdGF0aWMgYm9vbCBpc19jY3NfbW9kaWZpZXIodWludDY0X3QgbW9kaWZp ZXIpIEBAIC01ODQsNyArNTkwLDcgQEAgc3RhdGljDQo+IGJvb2wgaXNfY2NzX21vZGlmaWVyKHVp bnQ2NF90IG1vZGlmaWVyKQ0KPiANCj4gIHN0YXRpYyBib29sIGlzX2Njc19wbGFuZShjb25zdCBz dHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKSAgew0KPiAtCWlmICghaXNfY2NzX21vZGlmaWVy KGZiLT5tb2RpZmllcikpDQo+ICsJaWYgKCFpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSB8 fA0KPiArSEFTX0ZMQVRDQ1MoaW50ZWxfZ2V0X2RybV9kZXZpZChmYi0+ZmQpKSkNCj4gIAkJcmV0 dXJuIGZhbHNlOw0KPiANCj4gIAlyZXR1cm4gcGxhbmUgPj0gZmItPm51bV9wbGFuZXMgLyAyOw0K PiBAQCAtNjAyLDggKzYwOCwxNSBAQCBzdGF0aWMgYm9vbCBpc19nZW4xMl9jY3NfcGxhbmUoY29u c3Qgc3RydWN0IGlndF9mYiAqZmIsDQo+IGludCBwbGFuZSkNCj4gDQo+ICBzdGF0aWMgYm9vbCBp c19nZW4xMl9jY3NfY2NfcGxhbmUoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkg IHsNCj4gLQlyZXR1cm4gZmItPm1vZGlmaWVyID09DQo+IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0dFTjEyX1JDX0NDU19DQyAmJg0KPiAtCSAgICAgICBwbGFuZSA9PSAyOw0KPiArCWlmIChmYi0+ bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EX1lfVElMRURfR0VOMTJfUkNfQ0NTX0NDDQo+ICYm DQo+ICsJICAgIHBsYW5lID09IDIpDQo+ICsJCXJldHVybiB0cnVlOw0KPiArDQo+ICsJaWYgKGZi LT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfUkNfQ0NTX0NDICYmDQo+ ICsgICAgICAgICAgICBwbGFuZSA9PSAxKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKw0KPiArCXJl dHVybiBmYWxzZTsNCj4gIH0NCj4gDQo+ICBib29sIGlndF9mYl9pc19nZW4xMl9jY3NfY2NfcGxh bmUoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkgQEAgLQ0KPiA2ODksNyArNzAy LDggQEAgc3RhdGljIGludCBmYl9udW1fcGxhbmVzKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQ0K PiAgCWlmIChpc19jY3NfbW9kaWZpZXIoZmItPm1vZGlmaWVyKSkNCj4gIAkJbnVtX3BsYW5lcyAq PSAyOw0KPiANCj4gLQlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01PRF9ZX1RJTEVE X0dFTjEyX1JDX0NDU19DQykNCj4gKwlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFUX01P RF9ZX1RJTEVEX0dFTjEyX1JDX0NDU19DQw0KPiB8fA0KPiArCSAgICBmYi0+bW9kaWZpZXIgPT0g STkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDU19DQykNCj4gIAkJbnVtX3BsYW5lcysr Ow0KPiANCj4gIAlyZXR1cm4gbnVtX3BsYW5lczsNCj4gQEAgLTc2Myw3ICs3NzcsNyBAQCBzdGF0 aWMgdWludDMyX3QgY2FsY19wbGFuZV9zdHJpZGUoc3RydWN0IGlndF9mYiAqZmIsIGludA0KPiBw bGFuZSkNCj4gIAkJcmV0dXJuIEFMSUdOKG1pbl9zdHJpZGUsIHRpbGVfd2lkdGgpOw0KPiAgCX0g ZWxzZSBpZiAoaXNfZ2VuMTJfY2NzX2NjX3BsYW5lKGZiLCBwbGFuZSkpIHsNCj4gIAkJLyogY2xl YXIgY29sb3IgYWx3YXlzIGZpeGVkIHRvIDY0IGJ5dGVzICovDQo+IC0JCXJldHVybiA2NDsNCj4g KwkJcmV0dXJuIEhBU19GTEFUQ0NTKGludGVsX2dldF9kcm1fZGV2aWQoZmItPmZkKSkgPyA1MTIg OiA2NDsNCj4gIAl9IGVsc2UgaWYgKGlzX2dlbjEyX2Njc19wbGFuZShmYiwgcGxhbmUpKSB7DQo+ ICAJCS8qDQo+ICAJCSAqIFRoZSBDQ1Mgc3VyZmFjZSBzdHJpZGUgaXMNCj4gQEAgLTk2Niw2ICs5 ODAsOSBAQCB1aW50NjRfdCBpZ3RfZmJfbW9kX3RvX3RpbGluZyh1aW50NjRfdCBtb2RpZmllcikN Cj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEX0dFTjEyX01DX0NDUzoNCj4gIAkJcmV0 dXJuIEk5MTVfVElMSU5HX1k7DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRDoNCj4g KwljYXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEX0RHMl9SQ19DQ1M6DQo+ICsJY2FzZSBJOTE1 X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfTUNfQ0NTOg0KPiArCWNhc2UgSTkxNV9GT1JNQVRfTU9E XzRfVElMRURfREcyX1JDX0NDU19DQzoNCj4gIAkJcmV0dXJuIEk5MTVfVElMSU5HXzQ7DQo+ICAJ Y2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6DQo+ICAJY2FzZSBJOTE1X0ZPUk1BVF9NT0Rf WWZfVElMRURfQ0NTOg0KPiBAQCAtMjUwNCw5ICsyNTIxLDEwIEBAIGlndF9mYl9jcmVhdGVfaW50 ZWxfYnVmKGludCBmZCwgc3RydWN0IGJ1Zl9vcHMgKmJvcHMsDQo+ICAJaWYgKGlzX2Njc19tb2Rp ZmllcihmYi0+bW9kaWZpZXIpKSB7DQo+ICAJCWlndF9hc3NlcnRfZXEoZmItPnN0cmlkZXNbMF0g JiAxMjcsIDApOw0KPiANCj4gLQkJaWYgKGlzX2dlbjEyX2Njc19tb2RpZmllcihmYi0+bW9kaWZp ZXIpKQ0KPiAtCQkJaWd0X2Fzc2VydF9lcShmYi0+c3RyaWRlc1sxXSAmIDYzLCAwKTsNCj4gLQkJ ZWxzZQ0KPiArCQlpZiAoaXNfZ2VuMTJfY2NzX21vZGlmaWVyKGZiLT5tb2RpZmllcikpIHsNCj4g KwkJCWlmICghSEFTX0ZMQVRDQ1MoaW50ZWxfZ2V0X2RybV9kZXZpZChmYi0+ZmQpKSkNCj4gKwkJ CQlpZ3RfYXNzZXJ0X2VxKGZiLT5zdHJpZGVzWzFdICYgNjMsIDApOw0KPiArCQl9IGVsc2UNCj4g IAkJCWlndF9hc3NlcnRfZXEoZmItPnN0cmlkZXNbMV0gJiAxMjcsIDApOw0KPiANCj4gIAkJaWYg KGlzX2dlbjEyX21jX2Njc19tb2RpZmllcihmYi0+bW9kaWZpZXIpKQ0KPiBAQCAtMjUzOSw3ICsy NTU3LDcgQEAgaWd0X2ZiX2NyZWF0ZV9pbnRlbF9idWYoaW50IGZkLCBzdHJ1Y3QgYnVmX29wcyAq Ym9wcywNCj4gIAkJYnVmLT55dXZfc2VtaXBsYW5hcl9icHAgPSB5dXZfc2VtaXBsYW5hcl9icHAo ZmItDQo+ID5kcm1fZm9ybWF0KTsNCj4gDQo+ICAJaWYgKGlzX2Njc19tb2RpZmllcihmYi0+bW9k aWZpZXIpKSB7DQo+IC0JCW51bV9zdXJmYWNlcyA9IGZiLT5udW1fcGxhbmVzIC8gMjsNCj4gKwkJ bnVtX3N1cmZhY2VzID0gZmItPm51bV9wbGFuZXMgLw0KPiArKEhBU19GTEFUQ0NTKGludGVsX2dl dF9kcm1fZGV2aWQoZmItPmZkKSkgPyAxIDogMik7DQo+ICAJCWZvciAoaSA9IDA7IGkgPCBudW1f c3VyZmFjZXM7IGkrKykNCj4gIAkJCWluaXRfYnVmX2NjcyhidWYsIGksDQo+ICAJCQkJICAgICBm Yi0+b2Zmc2V0c1tudW1fc3VyZmFjZXMgKyBpXSwgQEAgLTI1NjAsNg0KPiArMjU3OCw5IEBAIGln dF9mYl9jcmVhdGVfaW50ZWxfYnVmKGludCBmZCwgc3RydWN0IGJ1Zl9vcHMgKmJvcHMsDQo+ICAJ aWYgKGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWV9USUxFRF9HRU4xMl9SQ19DQ1Nf Q0MpDQo+ICAJCWJ1Zi0+Y2Mub2Zmc2V0ID0gZmItPm9mZnNldHNbMl07DQo+IA0KPiArCWlmIChm Yi0+bW9kaWZpZXIgPT0gSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDU19DQykNCj4g KwkJYnVmLT5jYy5vZmZzZXQgPSBmYi0+b2Zmc2V0c1sxXTsNCj4gKw0KPiAgCXJldHVybiBidWY7 DQo+ICB9DQo+IA0KPiBAQCAtNDU3MCw2ICs0NTkxLDEyIEBAIGNvbnN0IGNoYXIgKmlndF9mYl9t b2RpZmllcl9uYW1lKHVpbnQ2NF90DQo+IG1vZGlmaWVyKQ0KPiAgCQlyZXR1cm4gIlktTUNfQ0NT IjsNCj4gIAljYXNlIEk5MTVfRk9STUFUX01PRF80X1RJTEVEOg0KPiAgCQlyZXR1cm4gIjQiOw0K PiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EXzRfVElMRURfREcyX1JDX0NDUzoNCj4gKwkJcmV0dXJu ICI0LVJDX0NDUyI7DQo+ICsJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfNF9USUxFRF9ERzJfTUNfQ0NT Og0KPiArCQlyZXR1cm4gIjQtTUNfQ0NTIjsNCj4gKwljYXNlIEk5MTVfRk9STUFUX01PRF80X1RJ TEVEX0RHMl9SQ19DQ1NfQ0M6DQo+ICsJCXJldHVybiAiNC1SQ19DQ1MtQ0MiOw0KPiAgCWRlZmF1 bHQ6DQo+ICAJCXJldHVybiAiPyI7DQo+ICAJfQ0KPiBkaWZmIC0tZ2l0IGEvbGliL2ludGVsX2F1 eF9wZ3RhYmxlLmMgYi9saWIvaW50ZWxfYXV4X3BndGFibGUuYyBpbmRleA0KPiBmNTc5NmZkZi4u ZTMxYTZjMzQgMTAwNjQ0DQo+IC0tLSBhL2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jDQo+ICsrKyBi L2xpYi9pbnRlbF9hdXhfcGd0YWJsZS5jDQo+IEBAIC0yNjMsNyArMjYzLDggQEAgc3RhdGljIHVp bnQ2NF90IHBndF9nZXRfbDFfZmxhZ3MoY29uc3Qgc3RydWN0IGludGVsX2J1Zg0KPiAqYnVmLCBp bnQgc3VyZmFjZV9pZHgpDQo+ICAJfSBlbnRyeSA9IHsNCj4gIAkJLmUgPSB7DQo+ICAJCQkudmFs aWQgPSAxLA0KPiAtCQkJLnRpbGVfbW9kZSA9IGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1kg PyAxIDogMCwNCj4gKwkJCS50aWxlX21vZGUgPSBidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR19Z ID8gMSA6DQo+ICsJCQkJKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HXzQgPyAyIDogMCksDQo+ ICAJCX0NCj4gIAl9Ow0KPiANCj4gQEAgLTI3NCw3ICsyNzUsOCBAQCBzdGF0aWMgdWludDY0X3Qg cGd0X2dldF9sMV9mbGFncyhjb25zdCBzdHJ1Y3QgaW50ZWxfYnVmDQo+ICpidWYsIGludCBzdXJm YWNlX2lkeCkNCj4gIAkgKi8NCj4gIAlpZ3RfYXNzZXJ0KGJ1Zi0+dGlsaW5nID09IEk5MTVfVElM SU5HX1kgfHwNCj4gIAkJICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYgfHwNCj4gLQkJ ICAgYnVmLT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWXMpOw0KPiArCQkgICBidWYtPnRpbGluZyA9 PSBJOTE1X1RJTElOR19ZcyB8fA0KPiArCQkgICBidWYtPnRpbGluZyA9PSBJOTE1X1RJTElOR180 KTsNCj4gDQo+ICAJZW50cnkuZS55Y3IgPSBzdXJmYWNlX2lkeCA+IDA7DQo+IA0KPiBkaWZmIC0t Z2l0IGEvbGliL2ludGVsX2JhdGNoYnVmZmVyLmMgYi9saWIvaW50ZWxfYmF0Y2hidWZmZXIuYyBp bmRleA0KPiBlYmYzYzU5OC4uODFkMmUxNDAgMTAwNjQ0DQo+IC0tLSBhL2xpYi9pbnRlbF9iYXRj aGJ1ZmZlci5jDQo+ICsrKyBiL2xpYi9pbnRlbF9iYXRjaGJ1ZmZlci5jDQo+IEBAIC0xMTQ2LDcg KzExNDYsNyBAQCBpZ3RfcmVuZGVyX2NvcHlmdW5jX3QgaWd0X2dldF9yZW5kZXJfY29weWZ1bmMo aW50DQo+IGRldmlkKQ0KPiAgCQljb3B5ID0gZ2VuOV9yZW5kZXJfY29weWZ1bmM7DQo+ICAJZWxz ZSBpZiAoSVNfR0VOMTEoZGV2aWQpKQ0KPiAgCQljb3B5ID0gZ2VuMTFfcmVuZGVyX2NvcHlmdW5j Ow0KPiAtCWVsc2UgaWYgKElTX0RHMihkZXZpZCkpDQo+ICsJZWxzZSBpZiAoSEFTXzRUSUxFKGRl dmlkKSkNCj4gIAkJY29weSA9IGdlbjEycDcxX3JlbmRlcl9jb3B5ZnVuYzsNCj4gIAllbHNlIGlm IChJU19HRU4xMihkZXZpZCkpDQo+ICAJCWNvcHkgPSBnZW4xMl9yZW5kZXJfY29weWZ1bmM7DQo+ IGRpZmYgLS1naXQgYS9saWIvaW50ZWxfYnVmb3BzLmMgYi9saWIvaW50ZWxfYnVmb3BzLmMgaW5k ZXggZjEzMDYzZmEuLjcyYjFiYWZhDQo+IDEwMDY0NA0KPiAtLS0gYS9saWIvaW50ZWxfYnVmb3Bz LmMNCj4gKysrIGIvbGliL2ludGVsX2J1Zm9wcy5jDQo+IEBAIC04OSw2ICs4OSw3IEBADQo+ICAj ZGVmaW5lIFRJTEVfWSAgICAgIFRJTEVfREVGKEk5MTVfVElMSU5HX1kpDQo+ICAjZGVmaW5lIFRJ TEVfWWYgICAgIFRJTEVfREVGKEk5MTVfVElMSU5HX1lmKQ0KPiAgI2RlZmluZSBUSUxFX1lzICAg ICBUSUxFX0RFRihJOTE1X1RJTElOR19ZcykNCj4gKyNkZWZpbmUgVElMRV80ICAgICAgVElMRV9E RUYoSTkxNV9USUxJTkdfNCkNCj4gDQo+ICAjZGVmaW5lIENDU19PRkZTRVQoYnVmKSAoYnVmLT5j Y3NbMF0ub2Zmc2V0KSAgI2RlZmluZSBDQ1NfU0laRShnZW4sIGJ1ZikgXCBAQA0KPiAtMTA1LDE2 ICsxMDYsMTkgQEAgc3RydWN0IGJ1Zl9vcHMgew0KPiAgCXVpbnQzMl90IHN1cHBvcnRlZF9od190 aWxlczsNCj4gIAl1aW50MzJfdCBzd2l6emxlX3g7DQo+ICAJdWludDMyX3Qgc3dpenpsZV95Ow0K PiArCXVpbnQzMl90IHN3aXp6bGVfdGlsZTQ7DQo+ICAJYm9fY29weSBsaW5lYXJfdG87DQo+ICAJ Ym9fY29weSBsaW5lYXJfdG9feDsNCj4gIAlib19jb3B5IGxpbmVhcl90b195Ow0KPiAgCWJvX2Nv cHkgbGluZWFyX3RvX3lmOw0KPiAgCWJvX2NvcHkgbGluZWFyX3RvX3lzOw0KPiArCWJvX2NvcHkg bGluZWFyX3RvX3RpbGU0Ow0KPiAgCWJvX2NvcHkgdG9fbGluZWFyOw0KPiAgCWJvX2NvcHkgeF90 b19saW5lYXI7DQo+ICAJYm9fY29weSB5X3RvX2xpbmVhcjsNCj4gIAlib19jb3B5IHlmX3RvX2xp bmVhcjsNCj4gIAlib19jb3B5IHlzX3RvX2xpbmVhcjsNCj4gKwlib19jb3B5IHRpbGU0X3RvX2xp bmVhcjsNCj4gIH07DQo+IA0KPiAgc3RhdGljIGNvbnN0IGNoYXIgKnRpbGluZ19zdHIodWludDMy X3QgdGlsaW5nKSBAQCAtMTI1LDYgKzEyOSw3IEBAIHN0YXRpYyBjb25zdA0KPiBjaGFyICp0aWxp bmdfc3RyKHVpbnQzMl90IHRpbGluZykNCj4gIAljYXNlIEk5MTVfVElMSU5HX1k6ICAgIHJldHVy biAiWSI7DQo+ICAJY2FzZSBJOTE1X1RJTElOR19ZZjogICByZXR1cm4gIllmIjsNCj4gIAljYXNl IEk5MTVfVElMSU5HX1lzOiAgIHJldHVybiAiWXMiOw0KPiArCWNhc2UgSTkxNV9USUxJTkdfNDog ICAgcmV0dXJuICI0IjsNCj4gIAlkZWZhdWx0OiAgICAgICAgICAgICAgIHJldHVybiAiVU5LTk9X TiI7DQo+ICAJfQ0KPiAgfQ0KPiBAQCAtMjIyLDcgKzIyNyw4IEBAIHN0YXRpYyB2b2lkIHNldF9o d190aWxlZChzdHJ1Y3QgYnVmX29wcyAqYm9wcywgc3RydWN0DQo+IGludGVsX2J1ZiAqYnVmKSAg ew0KPiAgCXVpbnQzMl90IHJldF90aWxpbmcsIHJldF9zd2l6emxlOw0KPiANCj4gLQlpZiAoYnVm LT50aWxpbmcgIT0gSTkxNV9USUxJTkdfWCAmJiBidWYtPnRpbGluZyAhPSBJOTE1X1RJTElOR19Z KQ0KPiArCWlmIChidWYtPnRpbGluZyAhPSBJOTE1X1RJTElOR19YICYmIGJ1Zi0+dGlsaW5nICE9 IEk5MTVfVElMSU5HX1kgJiYNCj4gKwkgICAgYnVmLT50aWxpbmcgIT0gSTkxNV9USUxJTkdfNCkN Cj4gIAkJcmV0dXJuOw0KPiANCj4gIAlpZiAoIWJ1Zl9vcHNfaGFzX2h3X2ZlbmNlKGJvcHMsIGJ1 Zi0+dGlsaW5nKSkgeyBAQCAtMzIwLDYgKzMyNiw1MA0KPiBAQCBzdGF0aWMgdm9pZCAqeV9wdHIo dm9pZCAqcHRyLA0KPiAgCXJldHVybiBwdHIgKyBwb3M7DQo+ICB9DQo+IA0KPiArLyoNCj4gKyAq ICh4LHkpIHRvIG1lbW9yeSBsb2NhdGlvbiBpbiB0aWxlZC00IHN1cmZhY2UNCj4gKyAqDQo+ICsg KiBjb3ZlcnRlZCB0aG9zZSBkaXZpc2lvbnMgYW5kIG11bHRpcGxpY2F0aW9ucyB0byBzaGlmdHMg YW5kIG1hc2tzDQo+ICsgKiBpbiBob3BlIHRoaXMgd291bGRuJ3QgYmUgc28gc2xvdy4NCj4gKyAq Lw0KPiArc3RhdGljIHZvaWQgKnRpbGU0X3B0cih2b2lkICpwdHIsDQo+ICsJCQl1bnNpZ25lZCBp bnQgeCwgdW5zaWduZWQgaW50IHksDQo+ICsJCQl1bnNpZ25lZCBpbnQgc3RyaWRlLCB1bnNpZ25l ZCBpbnQgY3BwKSB7DQo+ICsJY29uc3QgaW50IHRpbGVfd2lkdGggPSAxMjg7DQo+ICsJY29uc3Qg aW50IHRpbGVfaGVpZ2h0ID0gMzI7DQo+ICsJY29uc3QgaW50IHN1YnRpbGVfc2l6ZSA9IDY0Ow0K PiArCWNvbnN0IGludCBvd29yZHMgPSAxNjsNCj4gKwlpbnQgYmFzZSwgX3gsIF95LCBzdWJ0aWxl LCB0aWxlX3gsIHRpbGVfeTsNCj4gKwlpbnQgeF9sb2MgPSB4IDw8IF9fYnVpbHRpbl9jdHooY3Bw KTsNCj4gKwlpbnQgcG9zOw0KPiArDQo+ICsJLyogUGl4ZWwgaW4gdGlsZSB2aWEgbWFza3MgKi8N Cj4gKwl0aWxlX3ggPSB4X2xvYyAmICh0aWxlX3dpZHRoIC0gMSk7DQo+ICsJdGlsZV95ID0geSAm ICh0aWxlX2hlaWdodCAtIDEpOw0KPiArDQo+ICsJLyogc3VidGlsZSBpbiA0ayB0aWxlICovDQo+ ICsJX3ggPSB0aWxlX3ggPj4gX19idWlsdGluX2N0eihvd29yZHMpOw0KPiArCV95ID0gdGlsZV95 ID4+IDI7DQo+ICsNCj4gKwkvKiB0aWxlLTQgc3dpenpsZSAqLw0KPiArCXN1YnRpbGUgPSAoKF95 ID4+IDEpIDw8IDQpICsgKChfeSAmIDEpIDw8IDIpICsgKF94ICYgMykgKyAoKF94ICYgNCkgPDwN Cj4gKzEpOw0KPiArDQo+ICsJLyogbWVtb3J5IGxvY2F0aW9uICovDQo+ICsJYmFzZSA9ICh5ID4+ IF9fYnVpbHRpbl9jdHoodGlsZV9oZWlnaHQpKSAqDQo+ICsJCShzdHJpZGUgPDwgX19idWlsdGlu X2N0eih0aWxlX2hlaWdodCkpICsNCj4gKwkJKCgoeF9sb2MgPj4gX19idWlsdGluX2N0eih0aWxl X3dpZHRoKSkgPDwgX19idWlsdGluX2N0eig0MDk2KSkpOw0KPiArDQo+ICsJcG9zID0gYmFzZSAr IChzdWJ0aWxlIDw8IF9fYnVpbHRpbl9jdHooc3VidGlsZV9zaXplKSkgKw0KPiArCQkoKHRpbGVf eSAmIDMpIDw8IF9fYnVpbHRpbl9jdHoob3dvcmRzKSkgKw0KPiArCQkodGlsZV94ICYgKG93b3Jk cyAtIDEpKTsNCj4gKwlpZ3RfYXNzZXJ0KChwb3MgJiAoY3BwIC0gMSkpID09IDApOw0KPiArCXBv cyA9IHBvcyA+PiBfX2J1aWx0aW5fY3R6KGNwcCk7DQo+ICsNCj4gKwlyZXR1cm4gcHRyICsgcG9z Ow0KPiArfQ0KPiArDQo+ICsNCj4gIHN0YXRpYyB2b2lkICp5Zl9wdHIodm9pZCAqcHRyLA0KPiAg CQkgICAgdW5zaWduZWQgaW50IHgsIHVuc2lnbmVkIGludCB5LA0KPiAgCQkgICAgdW5zaWduZWQg aW50IHN0cmlkZSwgdW5zaWduZWQgaW50IGNwcCkgQEAgLTM2NSw2ICs0MTUsOCBAQA0KPiBzdGF0 aWMgdGlsZV9mbiBfX2dldF90aWxlX2ZuX3B0cihpbnQgdGlsaW5nKQ0KPiAgCWNhc2UgSTkxNV9U SUxJTkdfWWY6DQo+ICAJCWZuID0geWZfcHRyOw0KPiAgCQlicmVhazsNCj4gKwljYXNlIEk5MTVf VElMSU5HXzQ6DQo+ICsJCWZuID0gdGlsZTRfcHRyOw0KPiAgCWNhc2UgSTkxNV9USUxJTkdfWXM6 DQo+ICAJCS8qIFRvIGJlIGltcGxlbWVudGVkICovDQo+ICAJCWJyZWFrOw0KPiBAQCAtMzkxLDcg KzQ0Myw3IEBAIHN0YXRpYyB2b2lkIF9fY29weV9jY3Moc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0 cnVjdA0KPiBpbnRlbF9idWYgKmJ1ZiwNCj4gIAl2b2lkICptYXA7DQo+ICAJaW50IGdlbjsNCj4g DQo+IC0JaWYgKCFidWYtPmNvbXByZXNzaW9uKQ0KPiArCWlmICghYnVmLT5jb21wcmVzc2lvbiB8 fCBIQVNfRkxBVENDUyhpbnRlbF9nZXRfZHJtX2RldmlkKGJvcHMtPmZkKSkpDQo+ICAJCXJldHVy bjsNCj4gDQo+ICAJZ2VuID0gYm9wcy0+aW50ZWxfZ2VuOw0KPiBAQCAtNTUxLDYgKzYwMywxMyBA QCBzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b195cyhzdHJ1Y3QgYnVmX29wcyAqYm9wcywNCj4g c3RydWN0IGludGVsX2J1ZiAqYnVmLA0KPiAgCV9fY29weV9saW5lYXJfdG8oYm9wcy0+ZmQsIGJ1 ZiwgbGluZWFyLCBJOTE1X1RJTElOR19ZcywgMCk7ICB9DQo+IA0KPiArc3RhdGljIHZvaWQgY29w eV9saW5lYXJfdG9fdGlsZTQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBpbnRlbF9idWYg KmJ1ZiwNCj4gKwkJCQkgdWludDMyX3QgKmxpbmVhcikNCj4gK3sNCj4gKwlERUJVR0ZOKCk7DQo+ ICsJX19jb3B5X2xpbmVhcl90byhib3BzLT5mZCwgYnVmLCBsaW5lYXIsIEk5MTVfVElMSU5HXzQs DQo+ICtib3BzLT5zd2l6emxlX3RpbGU0KTsgfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBfX2NvcHlf dG9fbGluZWFyKGludCBmZCwgc3RydWN0IGludGVsX2J1ZiAqYnVmLA0KPiAgCQkJICAgICB1aW50 MzJfdCAqbGluZWFyLCBpbnQgdGlsaW5nLCB1aW50MzJfdCBzd2l6emxlKSAgeyBAQCAtDQo+IDYw MSw2ICs2NjAsMTMgQEAgc3RhdGljIHZvaWQgY29weV95c190b19saW5lYXIoc3RydWN0IGJ1Zl9v cHMgKmJvcHMsIHN0cnVjdA0KPiBpbnRlbF9idWYgKmJ1ZiwNCj4gIAlfX2NvcHlfdG9fbGluZWFy KGJvcHMtPmZkLCBidWYsIGxpbmVhciwgSTkxNV9USUxJTkdfWXMsIDApOyAgfQ0KPiANCj4gK3N0 YXRpYyB2b2lkIGNvcHlfdGlsZTRfdG9fbGluZWFyKHN0cnVjdCBidWZfb3BzICpib3BzLCBzdHJ1 Y3QgaW50ZWxfYnVmICpidWYsDQo+ICsJCQkJIHVpbnQzMl90ICpsaW5lYXIpDQo+ICt7DQo+ICsJ REVCVUdGTigpOw0KPiArCV9fY29weV90b19saW5lYXIoYm9wcy0+ZmQsIGJ1ZiwgbGluZWFyLCBJ OTE1X1RJTElOR180LCAwKTsgfQ0KPiArDQo+ICBzdGF0aWMgdm9pZCBjb3B5X2xpbmVhcl90b19n dHQoc3RydWN0IGJ1Zl9vcHMgKmJvcHMsIHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwNCj4gIAkJCSAg ICAgICB1aW50MzJfdCAqbGluZWFyKQ0KPiAgew0KPiBAQCAtNzUyLDExICs4MTgsMTAgQEAgc3Rh dGljIHZvaWQgX19pbnRlbF9idWZfaW5pdChzdHJ1Y3QgYnVmX29wcyAqYm9wcywNCj4gIAlJR1Rf SU5JVF9MSVNUX0hFQUQoJmJ1Zi0+bGluayk7DQo+IA0KPiAgCWlmIChjb21wcmVzc2lvbikgew0K PiAtCQlpbnQgYXV4X3dpZHRoLCBhdXhfaGVpZ2h0Ow0KPiAtDQo+ICAJCWlndF9yZXF1aXJlKGJv cHMtPmludGVsX2dlbiA+PSA5KTsNCj4gIAkJaWd0X2Fzc2VydChyZXFfdGlsaW5nID09IEk5MTVf VElMSU5HX1kgfHwNCj4gLQkJCSAgIHJlcV90aWxpbmcgPT0gSTkxNV9USUxJTkdfWWYpOw0KPiAr CQkJICAgcmVxX3RpbGluZyA9PSBJOTE1X1RJTElOR19ZZiB8fA0KPiArCQkJICAgcmVxX3RpbGlu ZyA9PSBJOTE1X1RJTElOR180KTsNCj4gIAkJLyoNCj4gIAkJICogT24gR0VOMTIrIHdlIGFsaWdu IHRoZSBtYWluIHN1cmZhY2UgdG8gNCAqIDQgbWFpbiBzdXJmYWNlDQo+ICAJCSAqIHRpbGVzLCB3 aGljaCBpcyA2NGtCLiBUaGVzZSAxNiB0aWxlcyBhcmUgbWFwcGVkIGJ5IDQgQVVYIEBAIC0NCj4g Nzc4LDEzICs4NDMsMTkgQEAgc3RhdGljIHZvaWQgX19pbnRlbF9idWZfaW5pdChzdHJ1Y3QgYnVm X29wcyAqYm9wcywNCj4gIAkJYnVmLT5icHAgPSBicHA7DQo+ICAJCWJ1Zi0+Y29tcHJlc3Npb24g PSBjb21wcmVzc2lvbjsNCj4gDQo+IC0JCWF1eF93aWR0aCA9IGludGVsX2J1Zl9jY3Nfd2lkdGgo Ym9wcy0+aW50ZWxfZ2VuLCBidWYpOw0KPiAtCQlhdXhfaGVpZ2h0ID0gaW50ZWxfYnVmX2Njc19o ZWlnaHQoYm9wcy0+aW50ZWxfZ2VuLCBidWYpOw0KPiArCQlpZiAoIUhBU19GTEFUQ0NTKGludGVs X2dldF9kcm1fZGV2aWQoYm9wcy0+ZmQpKSkgew0KPiArCQkJaW50IGF1eF93aWR0aCwgYXV4X2hl aWdodDsNCj4gDQo+IC0JCWJ1Zi0+Y2NzWzBdLm9mZnNldCA9IGJ1Zi0+c3VyZmFjZVswXS5zdHJp ZGUgKiBBTElHTihoZWlnaHQsIDMyKTsNCj4gLQkJYnVmLT5jY3NbMF0uc3RyaWRlID0gYXV4X3dp ZHRoOw0KPiArCQkJYXV4X3dpZHRoID0gaW50ZWxfYnVmX2Njc193aWR0aChib3BzLT5pbnRlbF9n ZW4sIGJ1Zik7DQo+ICsJCQlhdXhfaGVpZ2h0ID0gaW50ZWxfYnVmX2Njc19oZWlnaHQoYm9wcy0+ aW50ZWxfZ2VuLA0KPiBidWYpOw0KPiANCj4gLQkJc2l6ZSA9IGJ1Zi0+Y2NzWzBdLm9mZnNldCAr IGF1eF93aWR0aCAqIGF1eF9oZWlnaHQ7DQo+ICsJCQlidWYtPmNjc1swXS5vZmZzZXQgPSBidWYt PnN1cmZhY2VbMF0uc3RyaWRlICoNCj4gQUxJR04oaGVpZ2h0LCAzMik7DQo+ICsJCQlidWYtPmNj c1swXS5zdHJpZGUgPSBhdXhfd2lkdGg7DQo+ICsJCQlzaXplID0gYnVmLT5jY3NbMF0ub2Zmc2V0 ICsgYXV4X3dpZHRoICogYXV4X2hlaWdodDsNCj4gKwkJfQ0KPiArCQllbHNlIHsNCj4gKwkJCXNp emUgPSBidWYtPmNjc1swXS5vZmZzZXQ7DQo+ICsJCX0NCj4gIAl9IGVsc2Ugew0KPiAgCQlpZiAo dGlsaW5nKSB7DQo+ICAJCQlkZXZpZCA9ICBpbnRlbF9nZXRfZHJtX2RldmlkKGJvcHMtPmZkKTsg QEAgLTExNzYsMTcNCj4gKzEyNDcsMTkgQEAgdm9pZCBpbnRlbF9idWZfd3JpdGVfYXV4X3RvX3Bu ZyhzdHJ1Y3QgaW50ZWxfYnVmICpidWYsIGNvbnN0DQo+IGNoYXIgKmZpbGVuYW1lKSAgI2RlZmlu ZSBERUZBVUxUX0JVRk9QUyhfX2dlbl9zdGFydCwgX19nZW5fZW5kKSBcDQo+ICAJLmdlbl9zdGFy dCAgICAgICAgICA9IF9fZ2VuX3N0YXJ0LCBcDQo+ICAJLmdlbl9lbmQgICAgICAgICAgICA9IF9f Z2VuX2VuZCwgXA0KPiAtCS5zdXBwb3J0ZWRfaHdfdGlsZXMgPSBUSUxFX1ggfCBUSUxFX1ksIFwN Cj4gKwkuc3VwcG9ydGVkX2h3X3RpbGVzID0gVElMRV9YIHwgVElMRV9ZIHwgVElMRV80LCBcDQo+ ICAJLmxpbmVhcl90byAgICAgICAgICA9IGNvcHlfbGluZWFyX3RvX3djLCBcDQo+ICAJLmxpbmVh cl90b194ICAgICAgICA9IGNvcHlfbGluZWFyX3RvX2d0dCwgXA0KPiAgCS5saW5lYXJfdG9feSAg ICAgICAgPSBjb3B5X2xpbmVhcl90b19ndHQsIFwNCj4gIAkubGluZWFyX3RvX3lmICAgICAgID0g Y29weV9saW5lYXJfdG9feWYsIFwNCj4gIAkubGluZWFyX3RvX3lzICAgICAgID0gY29weV9saW5l YXJfdG9feXMsIFwNCj4gKwkubGluZWFyX3RvX3RpbGU0ICAgID0gY29weV9saW5lYXJfdG9fdGls ZTQsIFwNCj4gIAkudG9fbGluZWFyICAgICAgICAgID0gY29weV93Y190b19saW5lYXIsIFwNCj4g IAkueF90b19saW5lYXIgICAgICAgID0gY29weV9ndHRfdG9fbGluZWFyLCBcDQo+ICAJLnlfdG9f bGluZWFyICAgICAgICA9IGNvcHlfZ3R0X3RvX2xpbmVhciwgXA0KPiAgCS55Zl90b19saW5lYXIg ICAgICAgPSBjb3B5X3lmX3RvX2xpbmVhciwgXA0KPiAtCS55c190b19saW5lYXIgICAgICAgPSBj b3B5X3lzX3RvX2xpbmVhcg0KPiArCS55c190b19saW5lYXIgICAgICAgPSBjb3B5X3lzX3RvX2xp bmVhciwgXA0KPiArCS50aWxlNF90b19saW5lYXIgICAgPSBjb3B5X3RpbGU0X3RvX2xpbmVhcg0K PiANCj4gIHN0cnVjdCBidWZfb3BzIGJ1Zl9vcHNfYXJyW10gPSB7DQo+ICAJew0KPiBAQCAtMTIw MSw3ICsxMjc0LDcgQEAgc3RydWN0IGJ1Zl9vcHMgYnVmX29wc19hcnJbXSA9IHsNCj4gDQo+ICAJ ew0KPiAgCQlERUZBVUxUX0JVRk9QUygxMiwgMTIpLA0KPiAtCQkuc3VwcG9ydGVkX3RpbGVzICAg PSBUSUxFX05PTkUgfCBUSUxFX1ggfCBUSUxFX1kgfCBUSUxFX1lmIHwNCj4gVElMRV9ZcywNCj4g KwkJLnN1cHBvcnRlZF90aWxlcyAgID0gVElMRV9OT05FIHwgVElMRV9YIHwgVElMRV9ZIHwgVElM RV9ZZiB8DQo+IFRJTEVfWXMgfCBUSUxFXzQsDQo+ICAJfSwNCj4gIH07DQo+IA0KPiBAQCAtMTIz MCw2ICsxMzAzLDggQEAgc3RhdGljIGJvb2wgcHJvYmVfaHdfdGlsaW5nKHN0cnVjdCBidWZfb3Bz ICpib3BzLA0KPiB1aW50MzJfdCB0aWxpbmcsDQo+ICAJCQlib3BzLT5zd2l6emxlX3ggPSBidWZf c3dpenpsZTsNCj4gIAkJZWxzZSBpZiAodGlsaW5nID09IEk5MTVfVElMSU5HX1kpDQo+ICAJCQli b3BzLT5zd2l6emxlX3kgPSBidWZfc3dpenpsZTsNCj4gKwkJZWxzZSBpZiAodGlsaW5nID09IEk5 MTVfVElMSU5HXzQpDQo+ICsJCQlib3BzLT5zd2l6emxlX3RpbGU0ID0gYnVmX3N3aXp6bGU7DQo+ IA0KPiAgCQkqc3dpenpsaW5nX3N1cHBvcnRlZCA9IGJ1Zl9zd2l6emxlID09IHBoeXNfc3dpenps ZTsNCj4gIAl9DQo+IEBAIC0xMzkwLDYgKzE0NjUsMjQgQEAgc3RhdGljIHN0cnVjdCBidWZfb3Bz ICpfX2J1Zl9vcHNfY3JlYXRlKGludCBmZCwgYm9vbA0KPiBjaGVja19pZGVtcG90ZW5jeSkNCj4g IAkJfQ0KPiAgCX0NCj4gDQo+ICsJaWYgKGlzX2h3X3RpbGluZ19zdXBwb3J0ZWQoYm9wcywgSTkx NV9USUxJTkdfNCkpIHsNCj4gKwkJYm9vbCBzd2l6emxpbmdfc3VwcG9ydGVkOw0KPiArCQlib29s IHN1cHBvcnRlZCA9IHByb2JlX2h3X3RpbGluZyhib3BzLCBJOTE1X1RJTElOR180LA0KPiArCQkJ CQkJICZzd2l6emxpbmdfc3VwcG9ydGVkKTsNCj4gKw0KPiArCQlpZiAoIXN3aXp6bGluZ19zdXBw b3J0ZWQpIHsNCj4gKwkJCWlndF9kZWJ1ZygiU3dpenpsaW5nIGZvciA0IGlzIG5vdCBzdXBwb3J0 ZWRcbiIpOw0KPiArCQkJYm9wcy0+c3VwcG9ydGVkX3RpbGVzICY9IH5USUxFXzQ7DQo+ICsJCX0N Cj4gKw0KPiArCQlpZ3RfZGVidWcoIjQgZmVuY2Ugc3VwcG9ydDogJXNcbiIsIGJvb2xfc3RyKHN1 cHBvcnRlZCkpOw0KPiArCQlpZiAoIXN1cHBvcnRlZCkgew0KPiArCQkJYm9wcy0+c3VwcG9ydGVk X2h3X3RpbGVzICY9IH5USUxFXzQ7DQo+ICsJCQlib3BzLT5saW5lYXJfdG9fdGlsZTQgPSBjb3B5 X2xpbmVhcl90b190aWxlNDsNCj4gKwkJCWJvcHMtPnRpbGU0X3RvX2xpbmVhciA9IGNvcHlfdGls ZTRfdG9fbGluZWFyOw0KPiArCQl9DQo+ICsJfQ0KPiArDQo+ICAJLyogRGlzYWJsZSBvdGhlciB0 aWxpbmcgZm9ybWF0IGZ1bmN0aW9ucyBpZiBub3Qgc3VwcG9ydGVkICovDQo+ICAJaWYgKCFpc190 aWxpbmdfc3VwcG9ydGVkKGJvcHMsIEk5MTVfVElMSU5HX1lmKSkgew0KPiAgCQlpZ3RfZGVidWco IllmIGZvcm1hdCBub3Qgc3VwcG9ydGVkXG4iKTsgZGlmZiAtLWdpdA0KPiBhL2xpYi9pbnRlbF9j aGlwc2V0LmggYi9saWIvaW50ZWxfY2hpcHNldC5oIGluZGV4IGRiNzVhODI5Li40ZDlmNDYyMyAx MDA2NDQNCj4gLS0tIGEvbGliL2ludGVsX2NoaXBzZXQuaA0KPiArKysgYi9saWIvaW50ZWxfY2hp cHNldC5oDQo+IEBAIC0yMTksNiArMjE5LDcgQEAgdm9pZCBpbnRlbF9jaGVja19wY2godm9pZCk7 DQo+IA0KPiAgI2RlZmluZSBIQVNfNFRJTEUoZGV2aWQpCShpbnRlbF9nZXRfZGV2aWNlX2luZm8o ZGV2aWQpLT5oYXNfNHRpbGUpDQo+IA0KPiAtI2RlZmluZSBIQVNfRkxBVENDUyhkZXZpZCkJKGlu dGVsX2dldF9kZXZpY2VfaW5mbyhkZXZpZCktPmhhc19mbGF0Y2NzKQ0KPiArLyogdXNlIEhBU180 VElMRSBoZXJlIGFzIGFsbCBkZXZpY2VzIHdpdGggNC10aWxlIGhhdmUgZmxhdCBjY3MuICovDQo+ ICsjZGVmaW5lIEhBU19GTEFUQ0NTKGRldmlkKQlIQVNfNFRJTEUoZGV2aWQpDQo+IA0KPiAgI2Vu ZGlmIC8qIF9JTlRFTF9DSElQU0VUX0ggKi8NCj4gZGlmZiAtLWdpdCBhL2xpYi9yZW5kZXJjb3B5 X2dlbjkuYyBiL2xpYi9yZW5kZXJjb3B5X2dlbjkuYyBpbmRleA0KPiA2YzQ1ZWZiNC4uOWQ3ZTVi NzEgMTAwNjQ0DQo+IC0tLSBhL2xpYi9yZW5kZXJjb3B5X2dlbjkuYw0KPiArKysgYi9saWIvcmVu ZGVyY29weV9nZW45LmMNCj4gQEAgLTE2NSw3ICsxNjUsOCBAQCBpbnRlbF9nZXRfdWNfbW9jcyhp bnQgZmQpIHsNCj4gDQo+ICAvKiBNb3N0bHkgY29weStwYXN0ZSBmcm9tIGdlbjYsIGV4Y2VwdCBo ZWlnaHQsIHdpZHRoLCBwaXRjaCBtb3ZlZCAqLyAgc3RhdGljDQo+IHVpbnQzMl90IC1nZW44X2Jp bmRfYnVmKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCBjb25zdCBzdHJ1Y3QgaW50ZWxfYnVmICpidWYs IGludA0KPiBpc19kc3QpIHsNCj4gK2dlbjhfYmluZF9idWYoc3RydWN0IGludGVsX2JiICppYmIs IGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmJ1ZiwgaW50IGlzX2RzdCwNCj4gKwkgICAgICBib29s IGZhc3RfY2xlYXIpIHsNCj4gIAlzdHJ1Y3QgZ2VuOV9zdXJmYWNlX3N0YXRlICpzczsNCj4gIAl1 aW50MzJfdCB3cml0ZV9kb21haW4sIHJlYWRfZG9tYWluOw0KPiAgCXVpbnQ2NF90IGFkZHJlc3M7 DQo+IEBAIC0xOTIsMTUgKzE5MywyNiBAQCBnZW44X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9iYiAq aWJiLCBjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfYnVmICpidWYsIGludCBpc19kc3QpIHsNCj4gIAkJ Y2FzZSA2NDogc3MtPnNzMC5zdXJmYWNlX2Zvcm1hdCA9DQo+IFNVUkZBQ0VGT1JNQVRfUjE2RzE2 QjE2QTE2X0ZMT0FUOyBicmVhazsNCj4gIAkJZGVmYXVsdDogaWd0X2Fzc2VydCgwKTsNCj4gIAl9 DQo+IC0Jc3MtPnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7DQo+ICAJc3MtPnNzMC52 ZXJ0aWNhbF9hbGlnbm1lbnQgPSAxOyAvKiBhbGlnbiA0ICovDQo+IC0Jc3MtPnNzMC5ob3Jpem9u dGFsX2FsaWdubWVudCA9IDE7IC8qIGFsaWduIDQgKi8NCj4gKwlzcy0+c3MwLmhvcml6b250YWxf YWxpZ25tZW50ID0gMTsgLyogYWxpZ24gNCBvciBIQUxJR05fMzIgb24gZGlzcGxheQ0KPiArdmVy ID49IDEzKi8NCj4gKw0KPiArCWlmIChIQVNfNFRJTEUoaWJiLT5kZXZpZCkpIHsNCj4gKwkJLyoN Cj4gKwkJICogbW9jcyB0YWJsZSB2ZXJzaW9uIDEgaW5kZXggMyBncm91YiB3YiB1c2UgbDMNCj4g KwkJICovDQo+ICsJCXNzLT5zczEubWVtb3J5X29iamVjdF9jb250cm9sID0gMyA8PCAxOw0KPiAr CQlzcy0+c3M1Lm1pcF90YWlsX3N0YXJ0X2xvZCA9IDA7DQo+ICsJfSBlbHNlIHsNCj4gKwkJc3Mt PnNzMC5yZW5kZXJfY2FjaGVfcmVhZF93cml0ZSA9IDE7DQo+ICsJCXNzLT5zczEubWVtb3J5X29i amVjdF9jb250cm9sID0gaW50ZWxfZ2V0X3VjX21vY3MoaTkxNSk7DQo+ICsJCXNzLT5zczUubWlw X3RhaWxfc3RhcnRfbG9kID0gMTsgLyogbmVlZGVkIHdpdGggdHJtb2RlICovDQo+ICsJfQ0KPiAr DQo+ICAJaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElMSU5HX1gpDQo+ICAJCXNzLT5zczAudGls ZWRfbW9kZSA9IDI7DQo+ICAJZWxzZSBpZiAoYnVmLT50aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9O RSkNCj4gIAkJc3MtPnNzMC50aWxlZF9tb2RlID0gMzsNCj4gDQo+IC0Jc3MtPnNzMS5tZW1vcnlf b2JqZWN0X2NvbnRyb2wgPSBpbnRlbF9nZXRfdWNfbW9jcyhpOTE1KTsNCj4gIAlpZiAoaW50ZWxf YnVmX3B4cChidWYpKQ0KPiAgCQlzcy0+c3MxLm1lbW9yeV9vYmplY3RfY29udHJvbCB8PSAxOw0K PiANCj4gQEAgLTIwOCw3ICsyMjAsNiBAQCBnZW44X2JpbmRfYnVmKHN0cnVjdCBpbnRlbF9iYiAq aWJiLCBjb25zdCBzdHJ1Y3QNCj4gaW50ZWxfYnVmICpidWYsIGludCBpc19kc3QpIHsNCj4gIAkJ c3MtPnNzNS50cm1vZGUgPSAxOw0KPiAgCWVsc2UgaWYgKGJ1Zi0+dGlsaW5nID09IEk5MTVfVElM SU5HX1lzKQ0KPiAgCQlzcy0+c3M1LnRybW9kZSA9IDI7DQo+IC0Jc3MtPnNzNS5taXBfdGFpbF9z dGFydF9sb2QgPSAxOyAvKiBuZWVkZWQgd2l0aCB0cm1vZGUgKi8NCj4gDQo+ICAJYWRkcmVzcyA9 IGludGVsX2JiX29mZnNldF9yZWxvYyhpYmIsIGJ1Zi0+aGFuZGxlLA0KPiAgCQkJCQlyZWFkX2Rv bWFpbiwgd3JpdGVfZG9tYWluLA0KPiBAQCAtMjI5LDIwICsyNDAsMjIgQEAgZ2VuOF9iaW5kX2J1 ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgY29uc3Qgc3RydWN0DQo+IGludGVsX2J1ZiAqYnVmLCBp bnQgaXNfZHN0KSB7DQo+ICAJaWYgKGJ1Zi0+Y29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lP Tl9NRURJQSkNCj4gIAkJc3MtPnNzNy50Z2wubWVkaWFfY29tcHJlc3Npb24gPSAxOw0KPiAgCWVs c2UgaWYgKGJ1Zi0+Y29tcHJlc3Npb24gPT0gSTkxNV9DT01QUkVTU0lPTl9SRU5ERVIpIHsNCj4g LQkJaWd0X2Fzc2VydChidWYtPmNjc1swXS5zdHJpZGUpOw0KPiAtDQo+ICAJCXNzLT5zczYuYXV4 X21vZGUgPSAweDU7IC8qIEFVWF9DQ1NfRSAqLw0KPiAtCQlzcy0+c3M2LmF1eF9waXRjaCA9IChi dWYtPmNjc1swXS5zdHJpZGUgLyAxMjgpIC0gMTsNCj4gDQo+IC0JCWFkZHJlc3MgPSBpbnRlbF9i Yl9vZmZzZXRfcmVsb2Nfd2l0aF9kZWx0YShpYmIsIGJ1Zi0+aGFuZGxlLA0KPiAtCQkJCQkJCSAg IHJlYWRfZG9tYWluLA0KPiB3cml0ZV9kb21haW4sDQo+IC0JCQkJCQkJICAgKGJ1Zi0+Y2Mub2Zm c2V0ID8gKDENCj4gPDwgMTApIDogMCkgfCBidWYtPmNjc1swXS5vZmZzZXQsDQo+IC0JCQkJCQkJ ICAgaW50ZWxfYmJfb2Zmc2V0KGliYikNCj4gKyA0ICogMTAsDQo+IC0JCQkJCQkJICAgYnVmLT5h ZGRyLm9mZnNldCk7DQo+IC0JCXNzLT5zczEwLmF1eF9iYXNlX2FkZHIgPSAoYWRkcmVzcyArIGJ1 Zi0+Y2NzWzBdLm9mZnNldCkgPj4gMTI7DQo+IC0JCXNzLT5zczExLmF1eF9iYXNlX2FkZHJfaGkg PSAoYWRkcmVzcyArIGJ1Zi0+Y2NzWzBdLm9mZnNldCkgPj4NCj4gMzI7DQo+ICsJCWlmIChidWYt PmNjc1swXS5zdHJpZGUpIHsNCj4gKw0KPiArCQkJc3MtPnNzNi5hdXhfcGl0Y2ggPSAoYnVmLT5j Y3NbMF0uc3RyaWRlIC8gMTI4KSAtIDE7DQo+ICsNCj4gKwkJCWFkZHJlc3MgPSBpbnRlbF9iYl9v ZmZzZXRfcmVsb2Nfd2l0aF9kZWx0YShpYmIsIGJ1Zi0NCj4gPmhhbmRsZSwNCj4gKw0KPiByZWFk X2RvbWFpbiwgd3JpdGVfZG9tYWluLA0KPiArCQkJCQkJCQkgICAoYnVmLQ0KPiA+Y2Mub2Zmc2V0 ID8gKDEgPDwgMTApIDogMCkgfCBidWYtPmNjc1swXS5vZmZzZXQsDQo+ICsNCj4gaW50ZWxfYmJf b2Zmc2V0KGliYikgKyA0ICogMTAsDQo+ICsJCQkJCQkJCSAgIGJ1Zi0NCj4gPmFkZHIub2Zmc2V0 KTsNCj4gKwkJCXNzLT5zczEwLmF1eF9iYXNlX2FkZHIgPSAoYWRkcmVzcyArIGJ1Zi0NCj4gPmNj c1swXS5vZmZzZXQpID4+IDEyOw0KPiArCQkJc3MtPnNzMTEuYXV4X2Jhc2VfYWRkcl9oaSA9IChh ZGRyZXNzICsgYnVmLQ0KPiA+Y2NzWzBdLm9mZnNldCkgPj4gMzI7DQo+ICsJCX0NCj4gDQo+IC0J CWlmIChidWYtPmNjLm9mZnNldCkgew0KPiArCQlpZiAoZmFzdF9jbGVhciB8fCAoYnVmLT5jYy5v ZmZzZXQgJiYgIUhBU19GTEFUQ0NTKGliYi0+ZGV2aWQpKSkNCj4gew0KPiAgCQkJaWd0X2Fzc2Vy dChidWYtPmNvbXByZXNzaW9uID09DQo+IEk5MTVfQ09NUFJFU1NJT05fUkVOREVSKTsNCj4gDQo+ ICAJCQlzcy0+c3MxMC5jbGVhcnZhbHVlX2FkZHJfZW5hYmxlID0gMTsgQEAgLTI1Miw5DQo+ICsy NjUsMzAgQEAgZ2VuOF9iaW5kX2J1ZihzdHJ1Y3QgaW50ZWxfYmIgKmliYiwgY29uc3Qgc3RydWN0 IGludGVsX2J1ZiAqYnVmLCBpbnQNCj4gaXNfZHN0KSB7DQo+ICAJCQkJCQkJCSAgIGJ1Zi0NCj4g PmNjLm9mZnNldCwNCj4gDQo+IGludGVsX2JiX29mZnNldChpYmIpICsgNCAqIDEyLA0KPiAgCQkJ CQkJCQkgICBidWYtDQo+ID5hZGRyLm9mZnNldCk7DQo+IC0JCQlzcy0+c3MxMi5jbGVhcl9hZGRy ZXNzID0gYWRkcmVzcyArIGJ1Zi0+Y2Mub2Zmc2V0Ow0KPiAtCQkJc3MtPnNzMTMuY2xlYXJfYWRk cmVzc19oaSA9IChhZGRyZXNzICsgYnVmLT5jYy5vZmZzZXQpDQo+ID4+IDMyOw0KPiAtCQl9DQo+ ICsNCj4gKwkJCS8qDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiB0aGlzIGFzc2Vy dCBkb2Vzbid0IGhvbGQgYmVsb3cgY2xlYXIgYWRkcmVzcyB3aWxsIGJlDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgKiB3cml0dGVuIHdyb25nLg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBpZ3RfYXNzZXJ0KF9fYnVpbHRpbl9j dHpsKGFkZHJlc3MgKyBidWYtPmNjLm9mZnNldCkgPj0gNiAmJg0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoX19idWlsdGluX2NsemwoYWRkcmVzcyArDQo+ICtidWYtPmNj Lm9mZnNldCkgPj0gMTYpKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc3MtPnNz MTIuY2xlYXJfYWRkcmVzcyA9IChhZGRyZXNzICsgYnVmLT5jYy5vZmZzZXQpID4+IDY7DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzcy0+c3MxMy5jbGVhcl9hZGRyZXNzX2hpID0gKGFkZHJl c3MgKyBidWYtPmNjLm9mZnNldCkgPj4gMzI7DQo+ICsgICAgICAgICAgICAgICAgfSBlbHNlIGlm IChIQVNfRkxBVENDUyhpYmItPmRldmlkKSkgew0KPiArICAgICAgICAgICAgICAgICAgICAgICAg c3MtPnNzNy5kZzIubWVtb3J5X2NvbXByZXNzaW9uX3R5cGUgPSAwOw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgc3MtPnNzNy5kZzIubWVtb3J5X2NvbXByZXNzaW9uX2VuYWJsZSA9IDA7DQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICBzcy0+c3M3LmRnMi5kaXNhYmxlX3N1cHBvcnRfZm9y X211bHRpX2dwdV9wYXJ0aWFsX3dyaXRlcyA9IDE7DQo+ICsNCj4gKyBzcy0+c3M3LmRnMi5kaXNh YmxlX3N1cHBvcnRfZm9yX211bHRpX2dwdV9hdG9taWNzID0gMTsNCj4gKw0KPiArICAgICAgICAg ICAgICAgICAgICAgICAgLyoNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIEZvciBub3cg aGVyZSBpcyBjb21pbmcgb25seSAzMmJwcCByZ2IgZm9ybWF0DQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgKiB3aGljaCBpcyBtYXJrZWQgYmVsb3cgYXMgQjhHOFI4WDhfVU5PUk0gPSAnOCcN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAqIElmIGhlcmUgZXZlciBhcnJpdmUgb3RoZXIg Zm9ybWF0cyBiZWxvdyBuZWVkIHRvIGJlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgKiBm aXhlZCB0byB0YWtlIHRoYXQgaW50byBhY2NvdW50Lg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICovDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzcy0+c3MxMi5jb21wcmVzc2lvbl9m b3JtYXQgPSA4Ow0KPiArICAgICAgICAgICAgICAgIH0NCj4gIAl9DQo+IA0KPiAgCXJldHVybiBp bnRlbF9iYl9wdHJfYWRkX3JldHVybl9wcmV2X29mZnNldChpYmIsIHNpemVvZigqc3MpKTsgQEAg LQ0KPiAyNjYsMTQgKzMwMCwxNSBAQCBnZW44X2JpbmRfc3VyZmFjZXMoc3RydWN0IGludGVsX2Ji ICppYmIsDQo+ICAJCSAgIGNvbnN0IHN0cnVjdCBpbnRlbF9idWYgKmRzdCkNCj4gIHsNCj4gIAl1 aW50MzJfdCAqYmluZGluZ190YWJsZSwgYmluZGluZ190YWJsZV9vZmZzZXQ7DQo+ICsJYm9vbCBm YXN0X2NsZWFyID0gIXNyYzsNCj4gDQo+ICAJYmluZGluZ190YWJsZSA9IGludGVsX2JiX3B0cl9h bGlnbihpYmIsIDMyKTsNCj4gIAliaW5kaW5nX3RhYmxlX29mZnNldCA9IGludGVsX2JiX3B0cl9h ZGRfcmV0dXJuX3ByZXZfb2Zmc2V0KGliYiwgMzIpOw0KPiANCj4gLQliaW5kaW5nX3RhYmxlWzBd ID0gZ2VuOF9iaW5kX2J1ZihpYmIsIGRzdCwgMSk7DQo+ICsJYmluZGluZ190YWJsZVswXSA9IGdl bjhfYmluZF9idWYoaWJiLCBkc3QsIDEsIGZhc3RfY2xlYXIpOw0KPiANCj4gIAlpZiAoc3JjICE9 IE5VTEwpDQo+IC0JCWJpbmRpbmdfdGFibGVbMV0gPSBnZW44X2JpbmRfYnVmKGliYiwgc3JjLCAw KTsNCj4gKwkJYmluZGluZ190YWJsZVsxXSA9IGdlbjhfYmluZF9idWYoaWJiLCBzcmMsIDAsIGZh bHNlKTsNCj4gDQo+ICAJcmV0dXJuIGJpbmRpbmdfdGFibGVfb2Zmc2V0Ow0KPiAgfQ0KPiBAQCAt ODU2LDEyICs4OTEsMTQgQEAgZ2VuOF9lbWl0X3BzKHN0cnVjdCBpbnRlbF9iYiAqaWJiLCB1aW50 MzJfdCBrZXJuZWwsDQo+IGJvb2wgZmFzdF9jbGVhcikgeyAgc3RhdGljIHZvaWQgIGdlbjlfZW1p dF9kZXB0aChzdHJ1Y3QgaW50ZWxfYmIgKmliYikgIHsNCj4gKwlib29sIG5lZWRfMTBkdyA9IEhB U180VElMRShpYmItPmRldmlkKTsNCj4gKw0KPiAgCWludGVsX2JiX291dChpYmIsIEdFTjhfM0RT VEFURV9XTV9ERVBUSF9TVEVOQ0lMIHwgKDQgLSAyKSk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwg MCk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwgMCk7 DQo+IA0KPiAtCWludGVsX2JiX291dChpYmIsIEdFTjdfM0RTVEFURV9ERVBUSF9CVUZGRVIgfCAo OC0yKSk7DQo+ICsJaW50ZWxfYmJfb3V0KGliYiwgR0VON18zRFNUQVRFX0RFUFRIX0JVRkZFUiB8 IChuZWVkXzEwZHcgPyAoMTAtDQo+IDIpIDoNCj4gKyg4LTIpKSk7DQo+ICAJaW50ZWxfYmJfb3V0 KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJfb3V0KGliYiwgMCk7DQo+ICAJaW50ZWxfYmJfb3V0KGli YiwgMCk7DQo+IEBAIC04NjksNiArOTA2LDEwIEBAIGdlbjlfZW1pdF9kZXB0aChzdHJ1Y3QgaW50 ZWxfYmIgKmliYikNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gIAlpbnRlbF9iYl9vdXQo aWJiLCAwKTsNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gKwlpZiAobmVlZF8xMGR3KSB7 DQo+ICsJCWludGVsX2JiX291dChpYmIsIDApOw0KPiArCQlpbnRlbF9iYl9vdXQoaWJiLCAwKTsN Cj4gKwl9DQo+IA0KPiAgCWludGVsX2JiX291dChpYmIsIEdFTjhfM0RTVEFURV9ISUVSX0RFUFRI X0JVRkZFUiB8ICg1LTIpKTsNCj4gIAlpbnRlbF9iYl9vdXQoaWJiLCAwKTsNCj4gQEAgLTEwODAs NyArMTEyMSw3IEBAIHZvaWQgX2dlbjlfcmVuZGVyX29wKHN0cnVjdCBpbnRlbF9iYiAqaWJiLA0K PiANCj4gIAlnZW45X2VtaXRfc3RhdGVfYmFzZV9hZGRyZXNzKGliYik7DQo+IA0KPiAtCWlmIChJ U19ERzIoaWJiLT5kZXZpZCkgfHwgaW50ZWxfZ2VuKGliYi0+ZGV2aWQpID4gMTIpIHsNCj4gKwlp ZiAoSEFTXzRUSUxFKGliYi0+ZGV2aWQpIHx8IGludGVsX2dlbihpYmItPmRldmlkKSA+IDEyKSB7 DQo+ICAJCWludGVsX2JiX291dChpYmIsDQo+IEdFTjRfM0RTVEFURV9CSU5ESU5HX1RBQkxFX1BP T0xfQUxMT0MgfCAyKTsNCj4gIAkJaW50ZWxfYmJfZW1pdF9yZWxvYyhpYmIsIGliYi0+aGFuZGxl LA0KPiAgCQkJCSAgICBJOTE1X0dFTV9ET01BSU5fUkVOREVSIHwNCj4gSTkxNV9HRU1fRE9NQUlO X0lOU1RSVUNUSU9OLCAwLCBAQCAtMTE5NywxOCArMTIzOCwxMiBAQCB2b2lkDQo+IGdlbjEycDcx X3JlbmRlcl9jb3B5ZnVuYyhzdHJ1Y3QgaW50ZWxfYmIgKmliYiwNCj4gIAkJCSAgICAgIHN0cnVj dCBpbnRlbF9idWYgKmRzdCwNCj4gIAkJCSAgICAgIHVuc2lnbmVkIGludCBkc3RfeCwgdW5zaWdu ZWQgaW50IGRzdF95KSAgew0KPiAtCXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvIHBndGFibGVfaW5m byA9IHsgfTsNCj4gLQ0KPiAtCWdlbjEyX2F1eF9wZ3RhYmxlX2luaXQoJnBndGFibGVfaW5mbywg aWJiLCBzcmMsIGRzdCk7DQo+IC0NCj4gIAlfZ2VuOV9yZW5kZXJfb3AoaWJiLCBzcmMsIHNyY194 LCBzcmNfeSwNCj4gIAkJCXdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRzdF95LA0KPiAtCQkJ cGd0YWJsZV9pbmZvLnBndGFibGVfYnVmLA0KPiArCQkJTlVMTCwNCj4gIAkJCU5VTEwsDQo+ICAJ CQlnZW4xMnA3MV9yZW5kZXJfY29weSwNCj4gIAkJCXNpemVvZihnZW4xMnA3MV9yZW5kZXJfY29w eSkpOw0KPiAtDQo+IC0JZ2VuMTJfYXV4X3BndGFibGVfY2xlYW51cChpYmIsICZwZ3RhYmxlX2lu Zm8pOw0KPiAgfQ0KPiANCj4gIHZvaWQgZ2VuMTJfcmVuZGVyX2NsZWFyZnVuYyhzdHJ1Y3QgaW50 ZWxfYmIgKmliYiwgQEAgLTEyMTcsMTYgKzEyNTIsMjQgQEANCj4gdm9pZCBnZW4xMl9yZW5kZXJf Y2xlYXJmdW5jKHN0cnVjdCBpbnRlbF9iYiAqaWJiLA0KPiAgCQkJICAgIHVuc2lnbmVkIGludCB3 aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwNCj4gIAkJCSAgICBjb25zdCBmbG9hdCBjbGVhcl9j b2xvcls0XSkNCj4gIHsNCj4gLQlzdHJ1Y3QgYXV4X3BndGFibGVfaW5mbyBwZ3RhYmxlX2luZm8g PSB7IH07DQo+IC0NCj4gLQlnZW4xMl9hdXhfcGd0YWJsZV9pbml0KCZwZ3RhYmxlX2luZm8sIGli YiwgTlVMTCwgZHN0KTsNCj4gLQ0KPiAtCV9nZW45X3JlbmRlcl9vcChpYmIsIE5VTEwsIDAsIDAs DQo+IC0JCSAgICAgICAgd2lkdGgsIGhlaWdodCwgZHN0LCBkc3RfeCwgZHN0X3ksDQo+IC0JCSAg ICAgICAgcGd0YWJsZV9pbmZvLnBndGFibGVfYnVmLA0KPiAtCQkgICAgICAgIGNsZWFyX2NvbG9y LA0KPiAtCQkgICAgICAgIGdlbjEyX3JlbmRlcl9jb3B5LA0KPiAtCQkgICAgICAgIHNpemVvZihn ZW4xMl9yZW5kZXJfY29weSkpOw0KPiAtDQo+IC0JZ2VuMTJfYXV4X3BndGFibGVfY2xlYW51cChp YmIsICZwZ3RhYmxlX2luZm8pOw0KPiArCWlmICghSEFTXzRUSUxFKGliYi0+ZGV2aWQpKSB7DQo+ ICsJCXN0cnVjdCBhdXhfcGd0YWJsZV9pbmZvIHBndGFibGVfaW5mbyA9IHsgfTsNCj4gKwkJZ2Vu MTJfYXV4X3BndGFibGVfaW5pdCgmcGd0YWJsZV9pbmZvLCBpYmIsIE5VTEwsIGRzdCk7DQo+ICsN Cj4gKwkJX2dlbjlfcmVuZGVyX29wKGliYiwgTlVMTCwgMCwgMCwNCj4gKwkJCSAgICAgICAgd2lk dGgsIGhlaWdodCwgZHN0LCBkc3RfeCwgZHN0X3ksDQo+ICsJCQkgICAgICAgIHBndGFibGVfaW5m by5wZ3RhYmxlX2J1ZiwNCj4gKwkJCSAgICAgICAgY2xlYXJfY29sb3IsDQo+ICsJCQkgICAgICAg IGdlbjEyX3JlbmRlcl9jb3B5LA0KPiArCQkJICAgICAgICBzaXplb2YoZ2VuMTJfcmVuZGVyX2Nv cHkpKTsNCj4gKw0KPiArCQlnZW4xMl9hdXhfcGd0YWJsZV9jbGVhbnVwKGliYiwgJnBndGFibGVf aW5mbyk7DQo+ICsJfSBlbHNlIHsNCj4gKwkJCV9nZW45X3JlbmRlcl9vcChpYmIsIE5VTEwsIDAs IDAsDQo+ICsJCQkJCXdpZHRoLCBoZWlnaHQsIGRzdCwgZHN0X3gsIGRzdF95LA0KPiArCQkJCQlO VUxMLA0KPiArCQkJCQljbGVhcl9jb2xvciwNCj4gKwkJCQkJZ2VuMTJwNzFfcmVuZGVyX2NvcHks DQo+ICsJCQkJCXNpemVvZihnZW4xMnA3MV9yZW5kZXJfY29weSkpOw0KPiArCX0NCj4gIH0NCj4g ZGlmZiAtLWdpdCBhL2xpYi92ZWJveGNvcHlfZ2VuMTIuYyBiL2xpYi92ZWJveGNvcHlfZ2VuMTIu YyBpbmRleA0KPiAxNzU2NDQ5My4uN2MzY2EyNDUgMTAwNjQ0DQo+IC0tLSBhL2xpYi92ZWJveGNv cHlfZ2VuMTIuYw0KPiArKysgYi9saWIvdmVib3hjb3B5X2dlbjEyLmMNCj4gQEAgLTUzLDE5ICs1 MywyNSBAQCBzdHJ1Y3QgdmVib3hfc3VyZmFjZV9zdGF0ZSB7DQo+ICAJCXVpbnQzMl90IHdpZHRo OjE0Ow0KPiAgCQl1aW50MzJfdCBoZWlnaHQ6MTQ7DQo+ICAJfSBzczI7DQo+IC0Jc3RydWN0IHsN Cj4gKwl1bmlvbiB7DQo+ICsJCXN0cnVjdCB7DQo+ICAjZGVmaW5lIFZFQk9YX1RJTEVfV0FMS19Y TUFKT1IgMA0KPiAgI2RlZmluZSBWRUJPWF9USUxFX1dBTEtfWU1BSk9SIDENCj4gLQkJdWludDMy X3QgdGlsZV93YWxrOjE7DQo+IC0JCXVpbnQzMl90IHRpbGVkX3N1cmZhY2U6MTsNCj4gLQkJdWlu dDMyX3QgY2hyb21hX2hhbGZfcGl0Y2g6MTsNCj4gLQkJdWludDMyX3Qgc3VyZmFjZV9waXRjaDox NzsNCj4gLQkJdWludDMyX3QgY2hyb21hX2ludGVybGVhdmU6MTsNCj4gLQkJdWludDMyX3QgbHNi X3BhY2tlZF9lbmFibGU6MTsNCj4gLQkJdWludDMyX3QgYmF5ZXJfaW5wdXRfYWxpZ25tZW50OjI7 DQo+IC0JCXVpbnQzMl90IGJheWVyX3BhdHRlcm5fZm9ybWF0OjE7DQo+IC0JCXVpbnQzMl90IGJh eWVyX3BhdHRlcm5fb2Zmc2V0OjI7DQo+IC0JCXVpbnQzMl90IHN1cmZhY2VfZm9ybWF0OjU7DQo+ ICsJCQl1aW50MzJfdCB0aWxlX3dhbGs6MTsNCj4gKwkJCXVpbnQzMl90IHRpbGVkX3N1cmZhY2U6 MTsNCj4gKwkJCXVpbnQzMl90IGNocm9tYV9oYWxmX3BpdGNoOjE7DQo+ICsJCQl1aW50MzJfdCBz dXJmYWNlX3BpdGNoOjE3Ow0KPiArCQkJdWludDMyX3QgY2hyb21hX2ludGVybGVhdmU6MTsNCj4g KwkJCXVpbnQzMl90IGxzYl9wYWNrZWRfZW5hYmxlOjE7DQo+ICsJCQl1aW50MzJfdCBiYXllcl9p bnB1dF9hbGlnbm1lbnQ6MjsNCj4gKwkJCXVpbnQzMl90IGJheWVyX3BhdHRlcm5fZm9ybWF0OjE7 DQo+ICsJCQl1aW50MzJfdCBiYXllcl9wYXR0ZXJuX29mZnNldDoyOw0KPiArCQkJdWludDMyX3Qg c3VyZmFjZV9mb3JtYXQ6NTsNCj4gKwkJfSB0Z2w7DQo+ICsJCXN0cnVjdCB7DQo+ICsJCQl1aW50 MzJfdCB0aWxlX21vZGU6MjsNCj4gKwkJCXVpbnQzMl90IHBhZDA6MzA7DQo+ICsJCX0gZGcyOw0K PiAgCX0gc3MzOw0KPiAgCXN0cnVjdCB7DQo+ICAJCXVpbnQzMl90IHVfeV9vZmZzZXQ6MTU7DQo+ IEBAIC04Miw5ICs4OCwxNSBAQCBzdHJ1Y3QgdmVib3hfc3VyZmFjZV9zdGF0ZSB7DQo+ICAJCXVp bnQzMl90IGZyYW1lX3hfb2Zmc2V0OjE1Ow0KPiAgCQl1aW50MzJfdCBwYWQ6MjsNCj4gIAl9IHNz NjsNCj4gLQlzdHJ1Y3Qgew0KPiAtCQl1aW50MzJfdCBkZXJpdmVkX3N1cmZhY2VfcGl0Y2g6MTc7 DQo+IC0JCXVpbnQzMl90IHBhZDoxNTsNCj4gKwl1bmlvbiB7DQo+ICsJCXN0cnVjdCB7DQo+ICsJ CQl1aW50MzJfdCBkZXJpdmVkX3N1cmZhY2VfcGl0Y2g6MTc7DQo+ICsJCQl1aW50MzJfdCBwYWQ6 MTU7DQo+ICsJCX0gc2tsOw0KPiArCQlzdHJ1Y3Qgew0KPiArCQkJdWludDMyX3QgcGFkOjI3Ow0K PiArCQkJdWludDMyX3QgY29tcHJlc3Npb25fZm9ybWF0OjU7DQo+ICsJCX0gZGcyOw0KPiAgCX0g c3M3Ow0KPiAgCXN0cnVjdCB7DQo+ICAJCXVpbnQzMl90IHNraW5fc2NvcmVfb3V0cHV0X3N1cmZh Y2VfcGl0Y2g6MTc7DQo+IEBAIC0xNjYsMTcgKzE3OCw0NiBAQCBzdGF0aWMgdm9pZCBlbWl0X3N1 cmZhY2Vfc3RhdGVfY21kKHN0cnVjdCBpbnRlbF9iYg0KPiAqaWJiLA0KPiAgCXNzLT5zczIuaGVp Z2h0ID0gaGVpZ2h0IC0gMTsNCj4gIAlzcy0+c3MyLndpZHRoID0gd2lkdGggLSAxOw0KPiANCj4g LQlzcy0+c3MzLnN1cmZhY2VfZm9ybWF0ID0gZm9ybWF0Ow0KPiArCXNzLT5zczMudGdsLnN1cmZh Y2VfZm9ybWF0ID0gZm9ybWF0Ow0KPiAgCWlmIChmb3JtYXRfaXNfaW50ZXJsZWF2ZWRfeXV2KGZv cm1hdCkpDQo+IC0JCXNzLT5zczMuY2hyb21hX2ludGVybGVhdmUgPSAxOw0KPiAtCXNzLT5zczMu c3VyZmFjZV9waXRjaCA9IHBpdGNoIC0gMTsNCj4gLQlzcy0+c3MzLnRpbGVfd2FsayA9ICh0aWxp bmcgPT0gSTkxNV9USUxJTkdfWSkgfHwNCj4gLQkJCSAgICAodGlsaW5nID09IEk5MTVfVElMSU5H X1lmKTsNCj4gLQlzcy0+c3MzLnRpbGVkX3N1cmZhY2UgPSB0aWxpbmcgIT0gSTkxNV9USUxJTkdf Tk9ORTsNCj4gKwkJc3MtPnNzMy50Z2wuY2hyb21hX2ludGVybGVhdmUgPSAxOw0KPiArCXNzLT5z czMudGdsLnN1cmZhY2VfcGl0Y2ggPSBwaXRjaCAtIDE7DQo+IA0KPiAgCXNzLT5zczQudV95X29m ZnNldCA9IHV2X29mZnNldCAvIHBpdGNoOw0KPiANCj4gLQlzcy0+c3M3LmRlcml2ZWRfc3VyZmFj ZV9waXRjaCA9IHBpdGNoIC0gMTsNCj4gKwlpZiAoSEFTX0ZMQVRDQ1MoaWJiLT5kZXZpZCkpIHsN Cj4gKyAgICAgICAgICAgICAgICAvKg0KPiArICAgICAgICAgICAgICAgICAqIGYtdGlsZSA9IDMg KFRpbGUgRikNCj4gKyAgICAgICAgICAgICAgICAgKi8NCj4gKyAgICAgICAgICAgICAgICBzcy0+ c3MzLmRnMi50aWxlX21vZGUgPSAodGlsaW5nICE9IEk5MTVfVElMSU5HX05PTkUpID8NCj4gKzMg OiAwOw0KPiArDQo+ICsgICAgICAgICAgICAgICAgc3dpdGNoIChmb3JtYXQpIHsNCj4gKyAgICAg ICAgICAgICAgICBjYXNlIFI4RzhCOEE4X1VOT1JNOg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgc3MtPnNzNy5kZzIuY29tcHJlc3Npb25fZm9ybWF0ID0gMHhhOw0KPiArICAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgY2FzZSBQTEFOQVJfNDIwXzg6 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBzcy0+c3M3LmRnMi5jb21wcmVzc2lvbl9mb3Jt YXQgPSAweGY7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKyAgICAgICAg ICAgICAgICBjYXNlIFBMQU5BUl80MjBfMTY6DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICBz cy0+c3M3LmRnMi5jb21wcmVzc2lvbl9mb3JtYXQgPSA4Ow0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgY2FzZSBZQ1JDQl9OT1JNQUw6DQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICBzcy0+c3M3LmRnMi5jb21wcmVzc2lvbl9mb3JtYXQgPSAz Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsgICAgICAgICAgICAgICAg Y2FzZSBQQUNLRURfNDQ0QV84Og0KPiArICAgICAgICAgICAgICAgICAgICAgICAgc3MtPnNzNy5k ZzIuY29tcHJlc3Npb25fZm9ybWF0ID0gMHg5Ow0KPiArICAgICAgICAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ICsgICAgICAgICAgICAgICAgZGVmYXVsdDoNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIGlndF9hc3NlcnQoMCk7DQo+ICsgICAgICAgICAgICAgICAgfQ0KPiArICAgICAgICB9 IGVsc2Ugew0KPiArICAgICAgICAgICAgICAgIHNzLT5zczMudGdsLnRpbGVfd2FsayA9ICh0aWxp bmcgPT0gSTkxNV9USUxJTkdfWSkgfHwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICh0aWxp bmcgPT0gSTkxNV9USUxJTkdfWWYpIHx8DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAodGls aW5nID09IEk5MTVfVElMSU5HXzQpOw0KPiArICAgICAgICAgICAgICAgIHNzLT5zczMudGdsLnRp bGVkX3N1cmZhY2UgPSB0aWxpbmcgIT0gSTkxNV9USUxJTkdfTk9ORTsNCj4gKyAgICAgICAgfQ0K PiArDQo+ICsJc3MtPnNzNy5za2wuZGVyaXZlZF9zdXJmYWNlX3BpdGNoID0gcGl0Y2ggLSAxOw0K PiANCj4gIAlpbnRlbF9iYl9wdHJfYWRkKGliYiwgc2l6ZW9mKCpzcykpOw0KPiAgfQ0KPiBAQCAt MjAzLDcgKzI0NCwxMSBAQCBzdGF0aWMgdm9pZCBlbWl0X3RpbGluZ19jb252ZXJ0X2NtZChzdHJ1 Y3QgaW50ZWxfYmINCj4gKmliYiwNCj4gIAkJdGMtPnRjMV8yLmlucHV0X2NvbXByZXNzaW9uX3R5 cGUgPQ0KPiAgCQkJc3JjLT5jb21wcmVzc2lvbiA9PSBJOTE1X0NPTVBSRVNTSU9OX1JFTkRFUjsN Cj4gIAl9DQo+IC0JdGMtPnRjMV8yLmlucHV0X3RpbGVkX3Jlc291cmNlX21vZGUgPSBzcmMtPnRp bGluZyA9PSBJOTE1X1RJTElOR19ZZjsNCj4gKw0KPiArCWlmIChIQVNfNFRJTEUoaWJiLT5kZXZp ZCkpDQo+ICsJCXRjLT50YzFfMi5pbnB1dF9tb2NzX2lkeCA9IDM7DQo+ICsJZWxzZQ0KPiArCQl0 Yy0+dGMxXzIuaW5wdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IHNyYy0+dGlsaW5nID09DQo+IEk5 MTVfVElMSU5HX1lmOw0KPiAgCXJlbG9jX2RlbHRhID0gdGMtPnRjMV8yX2w7DQo+IA0KPiAgCWln dF9hc3NlcnQoc3JjLT5hZGRyLm9mZnNldCA9PSBBTElHTihzcmMtPmFkZHIub2Zmc2V0LCAweDEw MDApKTsgQEAgLQ0KPiAyMjAsNyArMjY1LDEyIEBAIHN0YXRpYyB2b2lkIGVtaXRfdGlsaW5nX2Nv bnZlcnRfY21kKHN0cnVjdCBpbnRlbF9iYiAqaWJiLA0KPiAgCQl0Yy0+dGMzXzQub3V0cHV0X2Nv bXByZXNzaW9uX3R5cGUgPQ0KPiAgCQkJZHN0LT5jb21wcmVzc2lvbiA9PSBJOTE1X0NPTVBSRVNT SU9OX1JFTkRFUjsNCj4gIAl9DQo+IC0JdGMtPnRjM180Lm91dHB1dF90aWxlZF9yZXNvdXJjZV9t b2RlID0gZHN0LT50aWxpbmcgPT0gSTkxNV9USUxJTkdfWWY7DQo+ICsNCj4gKwlpZiAoSEFTXzRU SUxFKGliYi0+ZGV2aWQpKQ0KPiArCQl0Yy0+dGMzXzQub3V0cHV0X21vY3NfaWR4ID0gMzsNCj4g KwllbHNlDQo+ICsJCXRjLT50YzNfNC5vdXRwdXRfdGlsZWRfcmVzb3VyY2VfbW9kZSA9IGRzdC0+ dGlsaW5nID09DQo+IEk5MTVfVElMSU5HX1lmOw0KPiArDQo+ICAJcmVsb2NfZGVsdGEgPSB0Yy0+ dGMzXzRfbDsNCj4gDQo+ICAJaWd0X2Fzc2VydChkc3QtPmFkZHIub2Zmc2V0ID09IEFMSUdOKGRz dC0+YWRkci5vZmZzZXQsIDB4MTAwMCkpOyBAQCAtDQo+IDI1NSwxMCArMzA1LDEyIEBAIHZvaWQg Z2VuMTJfdmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JiICppYmIsDQo+ICAJaW50ZWxfYmJf YWRkX2ludGVsX2J1ZihpYmIsIGRzdCwgdHJ1ZSk7DQo+ICAJaW50ZWxfYmJfYWRkX2ludGVsX2J1 ZihpYmIsIHNyYywgZmFsc2UpOw0KPiANCj4gLQlpbnRlbF9iYl9wdHJfc2V0KGliYiwgQkFUQ0hf U1RBVEVfU1BMSVQpOw0KPiAtCWdlbjEyX2F1eF9wZ3RhYmxlX2luaXQoJmF1eF9wZ3RhYmxlX2lu Zm8sIGliYiwgc3JjLCBkc3QpOw0KPiAtCWF1eF9wZ3RhYmxlX3N0YXRlID0gZ2VuMTJfY3JlYXRl X2F1eF9wZ3RhYmxlX3N0YXRlKGliYiwNCj4gLQ0KPiBhdXhfcGd0YWJsZV9pbmZvLnBndGFibGVf YnVmKTsNCj4gKwlpZiAoIUhBU19GTEFUQ0NTKGliYi0+ZGV2aWQpKSB7DQo+ICsJCWludGVsX2Ji X3B0cl9zZXQoaWJiLCBCQVRDSF9TVEFURV9TUExJVCk7DQo+ICsJCWdlbjEyX2F1eF9wZ3RhYmxl X2luaXQoJmF1eF9wZ3RhYmxlX2luZm8sIGliYiwgc3JjLCBkc3QpOw0KPiArCQlhdXhfcGd0YWJs ZV9zdGF0ZSA9IGdlbjEyX2NyZWF0ZV9hdXhfcGd0YWJsZV9zdGF0ZShpYmIsDQo+ICsNCj4gYXV4 X3BndGFibGVfaW5mby5wZ3RhYmxlX2J1Zik7DQo+ICsJfQ0KPiANCj4gIAlpbnRlbF9iYl9wdHJf c2V0KGliYiwgMCk7DQo+ICAJZ2VuMTJfZW1pdF9hdXhfcGd0YWJsZV9zdGF0ZShpYmIsIGF1eF9w Z3RhYmxlX3N0YXRlLCBmYWxzZSk7IEBAIC0NCj4gMzExLDUgKzM2Myw2IEBAIHZvaWQgZ2VuMTJf dmVib3hfY29weWZ1bmMoc3RydWN0IGludGVsX2JiICppYmIsDQo+IA0KPiAgCWludGVsX2JiX3Jl c2V0KGliYiwgZmFsc2UpOw0KPiANCj4gLQlnZW4xMl9hdXhfcGd0YWJsZV9jbGVhbnVwKGliYiwg JmF1eF9wZ3RhYmxlX2luZm8pOw0KPiArCWlmICghSEFTX0ZMQVRDQ1MoaWJiLT5kZXZpZCkpDQo+ ICsJCWdlbjEyX2F1eF9wZ3RhYmxlX2NsZWFudXAoaWJiLCAmYXV4X3BndGFibGVfaW5mbyk7DQo+ ICB9DQo+IC0tDQo+IDIuMzUuMQ0KDQo=