From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 51CF824A076 for ; Wed, 11 Mar 2026 02:38:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=211.75.126.72 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773196731; cv=none; b=qNXGAiFEkgL1xloLra3dDxQOmwapMdkzLL6MWj3BrvWBfkl/OWKmhU3agRaDHVlxobdHpJqekjNVt2BUKkP+UbNof438yf6ZmI6AfyE8Np1F2XdkyzO+Cr30LEEcwkCdcqdn0DccImjej2VvLENlItAbLTxIRRljsiQt6xZmLwI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773196731; c=relaxed/simple; bh=rFl8s6UYPFWMEwmxHQ+c7zY3TCYTu1aRyB/08389Okg=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=BJ4iHKt1UzJxaJ+PZiRJiVMqcYgH4ITgmNGdIiy9lIXa1WAwAZkB+DmwU5X7gYw+mkaQgJmjD7y7NI/DM2MWj8Tg8JTlJQSxjrWPPRKpeZEcceE4y5vBsx6Q8OlbksPfHIzvmjZx9yFRsL55YxmDrfIfnFis14c9+1LAXUxJ2kg= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com; spf=pass smtp.mailfrom=realtek.com; dkim=pass (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b=KN05afWE; arc=none smtp.client-ip=211.75.126.72 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=realtek.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=realtek.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=realtek.com header.i=@realtek.com header.b="KN05afWE" X-SpamFilter-By: ArmorX SpamTrap 5.80 with qID 62B2cOCA13763311, This message is accepted by code: ctloc85258 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=realtek.com; s=dkim; t=1773196704; bh=rFl8s6UYPFWMEwmxHQ+c7zY3TCYTu1aRyB/08389Okg=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:Content-Transfer-Encoding:MIME-Version; b=KN05afWEzMPxIMF52IApyNXAuPA+SvZdLHQxme580qeAgPSNOr0NocDx51QWlMmqe D7xC5DGm4xNEBPmr0GIogALx1At/jTOfNqiCgpVcxFJ+vUx6p5yPx2XBHX9vIZeaXI AhOctTwWKEluX0jJQ9nbhnGSkvvODPCy4HhFr+nzwaOi7/6nigBDKLpTJeezRPMlfL aVH9I+0AQcz9rYXhv8xdOG0/uoN2MYN1YExRAOB/L+5gesB1eNU5DvYnpaA5ncFBTP cj+tG7nIkwymSksbdRIMT+tq2jEJLxO1H9b+QpkShGzo0rLPRcOOYw5LQOszYIGgd5 AJOn2mHxp+SEA== Received: from mail.realtek.com (rtkexhmbs02.realtek.com.tw[172.21.6.41]) by rtits2.realtek.com.tw (8.15.2/3.21/5.94) with ESMTPS id 62B2cOCA13763311 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 11 Mar 2026 10:38:24 +0800 Received: from RTKEXHMBS05.realtek.com.tw (10.21.1.55) by RTKEXHMBS02.realtek.com.tw (172.21.6.41) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Wed, 11 Mar 2026 10:38:25 +0800 Received: from RTKEXHMBS06.realtek.com.tw (10.21.1.56) by RTKEXHMBS05.realtek.com.tw (10.21.1.55) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1748.10; Wed, 11 Mar 2026 10:38:24 +0800 Received: from RTKEXHMBS06.realtek.com.tw ([fe80::4cbd:6c6c:b92b:3913]) by RTKEXHMBS06.realtek.com.tw ([fe80::4cbd:6c6c:b92b:3913%10]) with mapi id 15.02.1748.010; Wed, 11 Mar 2026 10:38:24 +0800 From: Ping-Ke Shih To: Bitterblue Smith , Martin Kaistra , "linux-wireless@vger.kernel.org" CC: Jes Sorensen , Sebastian Andrzej Siewior Subject: RE: [PATCH v3 19/21] wifi: rtl8xxxu: add hw crypto support for AP mode Thread-Topic: [PATCH v3 19/21] wifi: rtl8xxxu: add hw crypto support for AP mode Thread-Index: AQHco37HevHTgHMQvUG78ePW4CP1qLWRe4UAgAEtoKCAFVYpAIAAtlzw Date: Wed, 11 Mar 2026 02:38:24 +0000 Message-ID: References: <20231222101442.626837-1-martin.kaistra@linutronix.de> <20231222101442.626837-20-martin.kaistra@linutronix.de> <64617033bcdc445091186070350a0d20@realtek.com> <61d5c08b-d924-42ad-8a56-ba3ddb970297@gmail.com> In-Reply-To: <61d5c08b-d924-42ad-8a56-ba3ddb970297@gmail.com> Accept-Language: en-US, zh-TW Content-Language: zh-TW Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-wireless@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Qml0dGVyYmx1ZSBTbWl0aCA8cnRsODgyMWNlcmZlMkBnbWFpbC5jb20+IHdyb3RlOg0KPiBPbiAy NS8wMi8yMDI2IDA0OjI4LCBQaW5nLUtlIFNoaWggd3JvdGU6DQo+ID4gTWFydGluIEthaXN0cmEg PG1hcnRpbi5rYWlzdHJhQGxpbnV0cm9uaXguZGU+IHdyb3RlOg0KPiA+PiBBbSAyMS4wMi4yNiB1 bSAyMzowOSBzY2hyaWViIEJpdHRlcmJsdWUgU21pdGg6DQo+ID4+PiBPbiAyMi8xMi8yMDIzIDEy OjE0LCBNYXJ0aW4gS2Fpc3RyYSB3cm90ZToNCj4gPj4+PiBBZGQgYSBjdXN0b20gZnVuY3Rpb24g Zm9yIGFsbG9jYXRpbmcgZW50cmllcyBpbiB0aGUgc2VjIGNhbS4gVGhpcyBhbGxvd3MNCj4gPj4+ PiB1cyB0byBzdG9yZSBtdWx0aXBsZSBrZXlzIHdpdGggdGhlIHNhbWUga2V5aWR4Lg0KPiA+Pj4+ DQo+ID4+Pj4gVGhlIG1heGltdW0gbnVtYmVyIG9mIHNlYyBjYW0gZW50cmllcyBmb3IgODE4OGYg aXMgMTYgYWNjb3JkaW5nIHRvIHRoZQ0KPiA+Pj4+IHZlbmRvciBkcml2ZXIuIEFkZCB0aGUgbnVt YmVyIHRvIHJ0bDh4eHh1X2ZpbGVvcHMsIHNvIHRoYXQgb3RoZXIgY2hpcHMNCj4gPj4+PiB3aGlj aCBtaWdodCBzdXBwb3J0IG1vcmUgZW50cmllcywgY2FuIHNldCBhIGRpZmZlcmVudCBudW1iZXIg dGhlcmUuDQo+ID4+Pj4NCj4gPj4+PiBTZXQgdGhlIGJzc2lkIGFzIG1hYyBhZGRyZXNzIGZvciBn cm91cCBrZXlzIGluc3RlYWQgb2YganVzdCB1c2luZyB0aGUNCj4gPj4+PiBldGhlcm5ldCBicm9h ZGNhc3QgYWRkcmVzcyBhbmQgdXNlIEJJVCg2KSBpbiB0aGUgc2VjIGNhbSBjdHJsIGVudHJ5DQo+ ID4+Pj4gZm9yIGRpZmZlcmVudGlhdGluZyB0aGVtIGZyb20gcGFpcndpc2Uga2V5cyBsaWtlIGlu IHRoZSB2ZW5kb3IgZHJpdmVyLg0KPiA+Pj4+DQo+ID4+Pj4gQWRkIHRoZSBUWERFU0NfRU5fREVT Q19JRCBiaXQgYW5kIHRoZSBod19rZXlfaWR4IHRvIHR4DQo+ID4+Pj4gYnJvYWRjYXN0L211bHRp Y2FzdCBwYWNrZXRzIGluIEFQIG1vZGUuDQo+ID4+Pj4NCj4gPj4+PiBGaW5hbGx5LCBhbGxvdyB0 aGUgdXNhZ2Ugb2YgcnRsOHh4eHVfc2V0X2tleSgpIGZvciBBUCBtb2RlLg0KPiA+Pj4+DQo+ID4+ Pj4gU2lnbmVkLW9mZi1ieTogTWFydGluIEthaXN0cmEgPG1hcnRpbi5rYWlzdHJhQGxpbnV0cm9u aXguZGU+DQo+ID4+Pj4gUmV2aWV3ZWQtYnk6IFBpbmctS2UgU2hpaCA8cGtzaGloQHJlYWx0ZWsu Y29tPg0KPiA+Pj4+IC0tLQ0KPiA+Pj4+ICAgLi4uL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4 eHh1L3J0bDh4eHh1LmggIHwgIDUgKysNCj4gPj4+PiAgIC4uLi9yZWFsdGVrL3J0bDh4eHh1L3J0 bDh4eHh1XzgxODhmLmMgICAgICAgICB8ICAxICsNCj4gPj4+PiAgIC4uLi93aXJlbGVzcy9yZWFs dGVrL3J0bDh4eHh1L3J0bDh4eHh1X2NvcmUuYyB8IDQ4ICsrKysrKysrKysrKysrKy0tLS0NCj4g Pj4+PiAgIDMgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0p DQo+ID4+Pj4NCj4gPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRl ay9ydGw4eHh4dS9ydGw4eHh4dS5oDQo+ID4+IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRl ay9ydGw4eHh4dS9ydGw4eHh4dS5oDQo+ID4+Pj4gaW5kZXggYzVlNmQ4ZjdkMjZiZC4uNjJlNjMx OGJjMDkyNCAxMDA2NDQNCj4gPj4+PiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVr L3J0bDh4eHh1L3J0bDh4eHh1LmgNCj4gPj4+PiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9y ZWFsdGVrL3J0bDh4eHh1L3J0bDh4eHh1LmgNCj4gPj4+PiBAQCAtNDk4LDYgKzQ5OCw3IEBAIHN0 cnVjdCBydGw4eHh4dV90eGRlc2M0MCB7DQo+ID4+Pj4gICAjZGVmaW5lIERFU0NfUkFURV9JRF9T SElGVCAgICAgICAgIDE2DQo+ID4+Pj4gICAjZGVmaW5lIERFU0NfUkFURV9JRF9NQVNLICAgICAg ICAgIDB4Zg0KPiA+Pj4+ICAgI2RlZmluZSBUWERFU0NfTkFWVVNFSERSICAgICAgICAgICBCSVQo MjApDQo+ID4+Pj4gKyNkZWZpbmUgVFhERVNDX0VOX0RFU0NfSUQgICAgICAgICAgIEJJVCgyMSkN Cj4gPj4+PiAgICNkZWZpbmUgVFhERVNDX1NFQ19SQzQgICAgICAgICAgICAgICAgICAgICAweDAw NDAwMDAwDQo+ID4+Pj4gICAjZGVmaW5lIFRYREVTQ19TRUNfQUVTICAgICAgICAgICAgICAgICAg ICAgMHgwMGMwMDAwMA0KPiA+Pj4+ICAgI2RlZmluZSBUWERFU0NfUEtUX09GRlNFVF9TSElGVCAg ICAgICAgICAgIDI2DQo+ID4+Pj4gQEAgLTE3NzUsNiArMTc3Niw3IEBAIHN0cnVjdCBydGw4eHh4 dV9jZm9fdHJhY2tpbmcgew0KPiA+Pj4+ICAgI2RlZmluZSBSVEw4WFhYVV9NQVhfTUFDX0lEX05V TSAgICAxMjgNCj4gPj4+PiAgICNkZWZpbmUgUlRMOFhYWFVfQkNfTUNfTUFDSUQgICAgICAgMA0K PiA+Pj4+ICAgI2RlZmluZSBSVEw4WFhYVV9CQ19NQ19NQUNJRDEgICAgICAxDQo+ID4+Pj4gKyNk ZWZpbmUgUlRMOFhYWFVfTUFYX1NFQ19DQU1fTlVNICAgIDY0DQo+ID4+Pj4NCj4gPj4+PiAgIHN0 cnVjdCBydGw4eHh4dV9wcml2IHsNCj4gPj4+PiAgICAgIHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3 Ow0KPiA+Pj4+IEBAIC0xOTA4LDYgKzE5MTAsNyBAQCBzdHJ1Y3QgcnRsOHh4eHVfcHJpdiB7DQo+ ID4+Pj4gICAgICBjaGFyIGxlZF9uYW1lWzMyXTsNCj4gPj4+PiAgICAgIHN0cnVjdCBsZWRfY2xh c3NkZXYgbGVkX2NkZXY7DQo+ID4+Pj4gICAgICBERUNMQVJFX0JJVE1BUChtYWNfaWRfbWFwLCBS VEw4WFhYVV9NQVhfTUFDX0lEX05VTSk7DQo+ID4+Pj4gKyAgICBERUNMQVJFX0JJVE1BUChjYW1f bWFwLCBSVEw4WFhYVV9NQVhfU0VDX0NBTV9OVU0pOw0KPiA+Pj4+ICAgfTsNCj4gPj4+Pg0KPiA+ Pj4+ICAgc3RydWN0IHJ0bDh4eHh1X3N0YV9pbmZvIHsNCj4gPj4+PiBAQCAtMTkxOSw2ICsxOTIy LDcgQEAgc3RydWN0IHJ0bDh4eHh1X3N0YV9pbmZvIHsNCj4gPj4+Pg0KPiA+Pj4+ICAgc3RydWN0 IHJ0bDh4eHh1X3ZpZiB7DQo+ID4+Pj4gICAgICBpbnQgcG9ydF9udW07DQo+ID4+Pj4gKyAgICB1 OCBod19rZXlfaWR4Ow0KPiA+Pj4+ICAgfTsNCj4gPj4+Pg0KPiA+Pj4+ICAgc3RydWN0IHJ0bDh4 eHh1X3J4X3VyYiB7DQo+ID4+Pj4gQEAgLTE5OTMsNiArMTk5Nyw3IEBAIHN0cnVjdCBydGw4eHh4 dV9maWxlb3BzIHsNCj4gPj4+PiAgICAgIHUxNiBtYXhfYWdncl9udW07DQo+ID4+Pj4gICAgICB1 OCBzdXBwb3J0c19hcDoxOw0KPiA+Pj4+ICAgICAgdTE2IG1heF9tYWNpZF9udW07DQo+ID4+Pj4g KyAgICB1MTYgbWF4X3NlY19jYW1fbnVtOw0KPiA+Pj4+ICAgICAgdTMyIGFkZGFfMXRfaW5pdDsN Cj4gPj4+PiAgICAgIHUzMiBhZGRhXzF0X3BhdGhfb247DQo+ID4+Pj4gICAgICB1MzIgYWRkYV8y dF9wYXRoX29uX2E7DQo+ID4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3Jl YWx0ZWsvcnRsOHh4eHUvcnRsOHh4eHVfODE4OGYuYw0KPiA+PiBiL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL3JlYWx0ZWsvcnRsOHh4eHUvcnRsOHh4eHVfODE4OGYuYw0KPiA+Pj4+IGluZGV4IDFlMWM4 ZmExOTRjYjguLjU3NGE1ZmU5NTE1NDMgMTAwNjQ0DQo+ID4+Pj4gLS0tIGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dV84MTg4Zi5jDQo+ID4+Pj4gKysrIGIv ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dV84MTg4Zi5jDQo+ ID4+Pj4gQEAgLTE3NTEsNiArMTc1MSw3IEBAIHN0cnVjdCBydGw4eHh4dV9maWxlb3BzIHJ0bDgx ODhmdV9mb3BzID0gew0KPiA+Pj4+ICAgICAgLm1heF9hZ2dyX251bSA9IDB4MGMxNCwNCj4gPj4+ PiAgICAgIC5zdXBwb3J0c19hcCA9IDEsDQo+ID4+Pj4gICAgICAubWF4X21hY2lkX251bSA9IDE2 LA0KPiA+Pj4+ICsgICAgLm1heF9zZWNfY2FtX251bSA9IDE2LA0KPiA+Pj4+ICAgICAgLmFkZGFf MXRfaW5pdCA9IDB4MDNjMDAwMTQsDQo+ID4+Pj4gICAgICAuYWRkYV8xdF9wYXRoX29uID0gMHgw M2MwMDAxNCwNCj4gPj4+PiAgICAgIC50cnhmZl9ib3VuZGFyeSA9IDB4M2Y3ZiwNCj4gPj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4 dV9jb3JlLmMNCj4gPj4gYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L3J0 bDh4eHh1X2NvcmUuYw0KPiA+Pj4+IGluZGV4IGVjZjU0ZWI4ZGJhNjEuLjdhYWZhZTlmZTc2Yjgg MTAwNjQ0DQo+ID4+Pj4gLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4 dS9ydGw4eHh4dV9jb3JlLmMNCj4gPj4+PiArKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFs dGVrL3J0bDh4eHh1L3J0bDh4eHh1X2NvcmUuYw0KPiA+Pj4+IEBAIC00NTU5LDggKzQ1NTksMTAg QEAgc3RhdGljIHZvaWQgcnRsOHh4eHVfY2FtX3dyaXRlKHN0cnVjdCBydGw4eHh4dV9wcml2DQo+ ICpwcml2LA0KPiA+Pj4+ICAgICAgICogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLSB0aGUgbG93 ZXIgYml0cyBvZiB0aGUgY2lwaGVyDQo+ID4+Pj4gICAgICAgKiBzdWl0ZSBzZWxlY3RvciBoYXBw ZW5zIHRvIG1hdGNoIHRoZSBjaXBoZXIgaW5kZXggaW4gdGhlIENBTQ0KPiA+Pj4+ICAgICAgICov DQo+ID4+Pj4gLSAgICBhZGRyID0ga2V5LT5rZXlpZHggPDwgQ0FNX0NNRF9LRVlfU0hJRlQ7DQo+ ID4+Pj4gKyAgICBhZGRyID0ga2V5LT5od19rZXlfaWR4IDw8IENBTV9DTURfS0VZX1NISUZUOw0K PiA+Pj4+ICAgICAgY3RybCA9IChrZXktPmNpcGhlciAmIDB4MGYpIDw8IDIgfCBrZXktPmtleWlk eCB8IENBTV9XUklURV9WQUxJRDsNCj4gPj4+PiArICAgIGlmICghKGtleS0+ZmxhZ3MgJiBJRUVF ODAyMTFfS0VZX0ZMQUdfUEFJUldJU0UpKQ0KPiA+Pj4+ICsgICAgICAgICAgICBjdHJsIHw9IEJJ VCg2KTsNCj4gPj4+Pg0KPiA+Pj4+ICAgICAgZm9yIChqID0gNTsgaiA+PSAwOyBqLS0pIHsNCj4g Pj4+PiAgICAgICAgICAgICAgc3dpdGNoIChqKSB7DQo+ID4+Pj4gQEAgLTU1NDYsMTMgKzU1NDgs MTQgQEAgc3RhdGljIHZvaWQgcnRsOHh4eHVfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQo+ ID4+Pj4gICAgICBzdHJ1Y3QgcnRsOHh4eHVfdHhfdXJiICp0eF91cmI7DQo+ID4+Pj4gICAgICBz dHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhID0gTlVMTDsNCj4gPj4+PiAgICAgIHN0cnVjdCBpZWVl ODAyMTFfdmlmICp2aWYgPSB0eF9pbmZvLT5jb250cm9sLnZpZjsNCj4gPj4+PiArICAgIHN0cnVj dCBydGw4eHh4dV92aWYgKnJ0bHZpZiA9IChzdHJ1Y3QgcnRsOHh4eHVfdmlmICopdmlmLT5kcnZf cHJpdjsNCj4gPj4+PiAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwcml2LT51ZGV2LT5kZXY7 DQo+ID4+Pj4gICAgICB1MzIgcXVldWUsIHJ0c19yYXRlOw0KPiA+Pj4+ICAgICAgdTE2IHBrdGxl biA9IHNrYi0+bGVuOw0KPiA+Pj4+ICAgICAgaW50IHR4X2Rlc2Nfc2l6ZSA9IHByaXYtPmZvcHMt PnR4X2Rlc2Nfc2l6ZTsNCj4gPj4+PiAgICAgIHU4IG1hY2lkOw0KPiA+Pj4+ICAgICAgaW50IHJl dDsNCj4gPj4+PiAtICAgIGJvb2wgYW1wZHVfZW5hYmxlLCBzZ2kgPSBmYWxzZSwgc2hvcnRfcHJl YW1ibGUgPSBmYWxzZTsNCj4gPj4+PiArICAgIGJvb2wgYW1wZHVfZW5hYmxlLCBzZ2kgPSBmYWxz ZSwgc2hvcnRfcHJlYW1ibGUgPSBmYWxzZSwgYm1jID0gZmFsc2U7DQo+ID4+Pj4NCj4gPj4+PiAg ICAgIGlmIChza2JfaGVhZHJvb20oc2tiKSA8IHR4X2Rlc2Nfc2l6ZSkgew0KPiA+Pj4+ICAgICAg ICAgICAgICBkZXZfd2FybihkZXYsDQo+ID4+Pj4gQEAgLTU1OTQsMTAgKzU1OTcsMTQgQEAgc3Rh dGljIHZvaWQgcnRsOHh4eHVfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsDQo+ID4+Pj4gICAg ICAgICAgICAgIHR4X2Rlc2MtPnR4ZHcwID0NCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICBU WERFU0NfT1dOIHwgVFhERVNDX0ZJUlNUX1NFR01FTlQgfA0KPiBUWERFU0NfTEFTVF9TRUdNRU5U Ow0KPiA+Pj4+ICAgICAgaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGllZWU4MDIxMV9nZXRf REEoaGRyKSkgfHwNCj4gPj4+PiAtICAgICAgICBpc19icm9hZGNhc3RfZXRoZXJfYWRkcihpZWVl ODAyMTFfZ2V0X0RBKGhkcikpKQ0KPiA+Pj4+ICsgICAgICAgIGlzX2Jyb2FkY2FzdF9ldGhlcl9h ZGRyKGllZWU4MDIxMV9nZXRfREEoaGRyKSkpIHsNCj4gPj4+PiAgICAgICAgICAgICAgdHhfZGVz Yy0+dHhkdzAgfD0gVFhERVNDX0JST0FETVVMVElDQVNUOw0KPiA+Pj4+ICsgICAgICAgICAgICBi bWMgPSB0cnVlOw0KPiA+Pj4+ICsgICAgfQ0KPiA+Pj4+ICsNCj4gPj4+Pg0KPiA+Pj4+ICAgICAg dHhfZGVzYy0+dHhkdzEgPSBjcHVfdG9fbGUzMihxdWV1ZSA8PCBUWERFU0NfUVVFVUVfU0hJRlQp Ow0KPiA+Pj4+ICsgICAgbWFjaWQgPSBydGw4eHh4dV9nZXRfbWFjaWQocHJpdiwgc3RhKTsNCj4g Pj4+Pg0KPiA+Pj4+ICAgICAgaWYgKHR4X2luZm8tPmNvbnRyb2wuaHdfa2V5KSB7DQo+ID4+Pj4g ICAgICAgICAgICAgIHN3aXRjaCAodHhfaW5mby0+Y29udHJvbC5od19rZXktPmNpcGhlcikgew0K PiA+Pj4+IEBAIC01NjEyLDYgKzU2MTksMTAgQEAgc3RhdGljIHZvaWQgcnRsOHh4eHVfdHgoc3Ry dWN0IGllZWU4MDIxMV9odyAqaHcsDQo+ID4+Pj4gICAgICAgICAgICAgIGRlZmF1bHQ6DQo+ID4+ Pj4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4+Pj4gICAgICAgICAgICAgIH0NCj4g Pj4+PiArICAgICAgICAgICAgaWYgKGJtYyAmJiBydGx2aWYtPmh3X2tleV9pZHggIT0gMHhmZikg ew0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgIHR4X2Rlc2MtPnR4ZHcxIHw9IFRYREVTQ19F Tl9ERVNDX0lEOw0KPiA+Pj4+ICsgICAgICAgICAgICAgICAgICAgIG1hY2lkID0gcnRsdmlmLT5o d19rZXlfaWR4Ow0KPiA+Pj4+ICsgICAgICAgICAgICB9DQo+ID4+Pj4gICAgICB9DQo+ID4+Pj4N Cj4gPj4+PiAgICAgIC8qICh0eF9pbmZvLT5mbGFncyAmIElFRUU4MDIxMV9UWF9DVExfQU1QRFUp ICYmICovDQo+ID4+Pj4gQEAgLTU2NTUsNyArNTY2Niw2IEBAIHN0YXRpYyB2b2lkIHJ0bDh4eHh1 X3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0KPiA+Pj4+ICAgICAgZWxzZQ0KPiA+Pj4+ICAg ICAgICAgICAgICBydHNfcmF0ZSA9IDA7DQo+ID4+Pj4NCj4gPj4+PiAtICAgIG1hY2lkID0gcnRs OHh4eHVfZ2V0X21hY2lkKHByaXYsIHN0YSk7DQo+ID4+Pj4gICAgICBwcml2LT5mb3BzLT5maWxs X3R4ZGVzYyhodywgaGRyLCB0eF9pbmZvLCB0eF9kZXNjLCBzZ2ksDQo+IHNob3J0X3ByZWFtYmxl LA0KPiA+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1wZHVfZW5hYmxlLCBydHNf cmF0ZSwgbWFjaWQpOw0KPiA+Pj4+DQo+ID4+Pj4gQEAgLTY2NjcsNiArNjY3Nyw3IEBAIHN0YXRp YyBpbnQgcnRsOHh4eHVfYWRkX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3DQo+ICpodywN Cj4gPj4+Pg0KPiA+Pj4+ICAgICAgcHJpdi0+dmlmc1twb3J0X251bV0gPSB2aWY7DQo+ID4+Pj4g ICAgICBydGx2aWYtPnBvcnRfbnVtID0gcG9ydF9udW07DQo+ID4+Pj4gKyAgICBydGx2aWYtPmh3 X2tleV9pZHggPSAweGZmOw0KPiA+Pj4+DQo+ID4+Pj4gICAgICBydGw4eHh4dV9zZXRfbGlua3R5 cGUocHJpdiwgdmlmLT50eXBlLCBwb3J0X251bSk7DQo+ID4+Pj4gICAgICBldGhlcl9hZGRyX2Nv cHkocHJpdi0+bWFjX2FkZHIsIHZpZi0+YWRkcik7DQo+ID4+Pj4gQEAgLTY4NDMsMTEgKzY4NTQs MTkgQEAgc3RhdGljIGludCBydGw4eHh4dV9zZXRfcnRzX3RocmVzaG9sZChzdHJ1Y3QNCj4gaWVl ZTgwMjExX2h3ICpodywgdTMyIHJ0cykNCj4gPj4+PiAgICAgIHJldHVybiAwOw0KPiA+Pj4+ICAg fQ0KPiA+Pj4+DQo+ID4+Pj4gK3N0YXRpYyBpbnQgcnRsOHh4eHVfZ2V0X2ZyZWVfc2VjX2NhbShz dHJ1Y3QgaWVlZTgwMjExX2h3ICpodykNCj4gPj4+PiArew0KPiA+Pj4+ICsgICAgc3RydWN0IHJ0 bDh4eHh1X3ByaXYgKnByaXYgPSBody0+cHJpdjsNCj4gPj4+PiArDQo+ID4+Pj4gKyAgICByZXR1 cm4gZmluZF9maXJzdF96ZXJvX2JpdChwcml2LT5jYW1fbWFwLA0KPiBwcml2LT5mb3BzLT5tYXhf c2VjX2NhbV9udW0pOw0KPiA+Pj4+ICt9DQo+ID4+Pj4gKw0KPiA+Pj4+ICAgc3RhdGljIGludCBy dGw4eHh4dV9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBlbnVtIHNldF9rZXlfY21k DQo+IGNtZCwNCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGllZWU4MDIx MV92aWYgKnZpZiwNCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGllZWU4 MDIxMV9zdGEgKnN0YSwNCj4gPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGll ZWU4MDIxMV9rZXlfY29uZiAqa2V5KQ0KPiA+Pj4+ICAgew0KPiA+Pj4+ICsgICAgc3RydWN0IHJ0 bDh4eHh1X3ZpZiAqcnRsdmlmID0gKHN0cnVjdCBydGw4eHh4dV92aWYgKil2aWYtPmRydl9wcml2 Ow0KPiA+Pj4+ICAgICAgc3RydWN0IHJ0bDh4eHh1X3ByaXYgKnByaXYgPSBody0+cHJpdjsNCj4g Pj4+PiAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwcml2LT51ZGV2LT5kZXY7DQo+ID4+Pj4g ICAgICB1OCBtYWNfYWRkcltFVEhfQUxFTl07DQo+ID4+Pj4gQEAgLTY4NTksOSArNjg3OCw2IEBA IHN0YXRpYyBpbnQgcnRsOHh4eHVfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywNCj4g ZW51bSBzZXRfa2V5X2NtZCBjbWQsDQo+ID4+Pj4gICAgICBkZXZfZGJnKGRldiwgIiVzOiBjbWQg JTAyeCwgY2lwaGVyICUwOHgsIGluZGV4ICVpXG4iLA0KPiA+Pj4+ICAgICAgICAgICAgICBfX2Z1 bmNfXywgY21kLCBrZXktPmNpcGhlciwga2V5LT5rZXlpZHgpOw0KPiA+Pj4+DQo+ID4+Pj4gLSAg ICBpZiAodmlmLT50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pDQo+ID4+Pj4gLSAgICAg ICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gPj4+PiAtDQo+ID4+Pj4gICAgICBpZiAoa2V5 LT5rZXlpZHggPiAzKQ0KPiA+Pj4+ICAgICAgICAgICAgICByZXR1cm4gLUVPUE5PVFNVUFA7DQo+ ID4+Pj4NCj4gPj4+PiBAQCAtNjg4NSw3ICs2OTAxLDcgQEAgc3RhdGljIGludCBydGw4eHh4dV9z ZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0KPiBlbnVtIHNldF9rZXlfY21kIGNtZCwN Cj4gPj4+PiAgICAgICAgICAgICAgZXRoZXJfYWRkcl9jb3B5KG1hY19hZGRyLCBzdGEtPmFkZHIp Ow0KPiA+Pj4+ICAgICAgfSBlbHNlIHsNCj4gPj4+PiAgICAgICAgICAgICAgZGV2X2RiZyhkZXYs ICIlczogZ3JvdXAga2V5XG4iLCBfX2Z1bmNfXyk7DQo+ID4+Pj4gLSAgICAgICAgICAgIGV0aF9i cm9hZGNhc3RfYWRkcihtYWNfYWRkcik7DQo+ID4+Pj4gKyAgICAgICAgICAgIGV0aGVyX2FkZHJf Y29weShtYWNfYWRkciwgdmlmLT5ic3NfY29uZi5ic3NpZCk7DQo+ID4+Pj4gICAgICB9DQo+ID4+ Pj4NCj4gPj4+PiAgICAgIHZhbDE2ID0gcnRsOHh4eHVfcmVhZDE2KHByaXYsIFJFR19DUik7DQo+ ID4+Pj4gQEAgLTY4OTksMTYgKzY5MTUsMjggQEAgc3RhdGljIGludCBydGw4eHh4dV9zZXRfa2V5 KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LA0KPiBlbnVtIHNldF9rZXlfY21kIGNtZCwNCj4gPj4+ Pg0KPiA+Pj4+ICAgICAgc3dpdGNoIChjbWQpIHsNCj4gPj4+PiAgICAgIGNhc2UgU0VUX0tFWToN Cj4gPj4+PiAtICAgICAgICAgICAga2V5LT5od19rZXlfaWR4ID0ga2V5LT5rZXlpZHg7DQo+ID4+ Pj4gKw0KPiA+Pj4+ICsgICAgICAgICAgICByZXR2YWwgPSBydGw4eHh4dV9nZXRfZnJlZV9zZWNf Y2FtKGh3KTsNCj4gPj4+PiArICAgICAgICAgICAgaWYgKHJldHZhbCA8IDApDQo+ID4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiA+Pj4+ICsNCj4gPj4+PiAr ICAgICAgICAgICAga2V5LT5od19rZXlfaWR4ID0gcmV0dmFsOw0KPiA+Pj4+ICsNCj4gPj4+PiAr ICAgICAgICAgICAgaWYgKHZpZi0+dHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCAmJiAhKGtleS0+ ZmxhZ3MgJg0KPiBJRUVFODAyMTFfS0VZX0ZMQUdfUEFJUldJU0UpKQ0KPiA+Pj4+ICsgICAgICAg ICAgICAgICAgICAgIHJ0bHZpZi0+aHdfa2V5X2lkeCA9IGtleS0+aHdfa2V5X2lkeDsNCj4gPj4+ PiArDQo+ID4+Pj4gICAgICAgICAgICAgIGtleS0+ZmxhZ3MgfD0gSUVFRTgwMjExX0tFWV9GTEFH X0dFTkVSQVRFX0lWOw0KPiA+Pj4+ICAgICAgICAgICAgICBydGw4eHh4dV9jYW1fd3JpdGUocHJp diwga2V5LCBtYWNfYWRkcik7DQo+ID4+Pj4gKyAgICAgICAgICAgIHNldF9iaXQoa2V5LT5od19r ZXlfaWR4LCBwcml2LT5jYW1fbWFwKTsNCj4gPj4+DQo+ID4+PiBIaSBNYXJ0aW4sDQo+ID4+DQo+ ID4+IEhpIEJpdHRlcmJsdWUsDQo+ID4+DQo+ID4+Pg0KPiA+Pj4gSXQgdHVybnMgb3V0IFJUTDgx ODhDVVMgYW5kIFJUTDgxOTJDVSBkb24ndCBsaWtlIHRoaXMgcGF0Y2gsIHNwZWNpZmljYWxseQ0K PiA+Pj4gd2hlbiB3ZSB1c2UgaXdkLiBBZnRlciB0aGUgV1BBMiBoYW5kc2hha2Ugbm8gbW9yZSBk YXRhIGlzIHRyYW5zbWl0dGVkLg0KPiA+Pj4NCj4gPj4+IEJlZm9yZSB0aGlzIHBhdGNoLCBrZXkt Pmh3X2tleV9pZHggd2FzIHRoZSBzYW1lIGFzIGtleS0+a2V5aWR4LiBBZnRlcg0KPiA+Pj4gdGhp cyBwYXRjaCwgd2hlbiB3ZSB1c2UgaXdkLCB0aGUgZ3JvdXAga2V5IGlzIGluc3RhbGxlZCBmaXJz dC4gSXQgaGFzDQo+ID4+PiBrZXktPmtleWlkeCA9IDEsIGJ1dCBpdCBnZXRzIGtleS0+aHdfa2V5 X2lkeCA9IDAuIFRoZSBwYWlyd2lzZSBrZXkgaXMNCj4gPj4+IGluc3RhbGxlZCBzZWNvbmQuIEl0 IGhhcyBrZXktPmtleWlkeCA9IDAsIGJ1dCBpdCBnZXRzIGtleS0+aHdfa2V5X2lkeCA9IDEuDQo+ ID4+PiBCb3RoIGtleWlkeCBhbmQgaHdfa2V5X2lkeCBhcmUgcGFzc2VkIHRvIHRoZSBjaGlwIGlu IHJ0bDh4eHh1X2NhbV93cml0ZSgpLg0KPiA+Pj4NCj4gPj4+IEl0J3MgZmluZSB3aXRoIHdwYV9z dXBwbGljYW50LiB3cGFfc3VwcGxpY2FudCBpbnN0YWxscyB0aGUgcGFpcndpc2Uga2V5DQo+ID4+ PiBmaXJzdCwgd2l0aCBrZXktPmtleWlkeCA9IDAsIHRoZW4gdGhlIGdyb3VwIGtleSwgd2l0aCBr ZXktPmtleWlkeCA9IDEuDQo+ID4+Pg0KPiA+Pj4gVGhpcyBwYXRjaCBpbWl0YXRpbmcgcnR3ODgg bWFrZXMgdGhlIG9sZCBjaGlwcyB3b3JrIGFnYWluIHdpdGggaXdkLg0KPiA+Pj4gV2hhdCBkbyB5 b3UgdGhpbms/DQo+ID4+DQo+ID4+IFNvIHlvdSByZXNlcnZlIHRoZSBmaXJzdCA0IGVudHJpZXMg Zm9yIGdyb3VwIGtleXMgYW5kIHVzZSBrZXktPmtleWlkeCBhcw0KPiA+PiBrZXktPmh3X2tleV9p ZHggZGlyZWN0bHkgZm9yIHRob3NlLCByaWdodD8gRG9lcyB0aGF0IHdvcmsgaWYgMiB2aXJ0dWFs DQo+ID4+IGludGVyZmFjZXMgYXJlIHVzZWQgYXQgdGhlIHNhbWUgdGltZT8NCj4gPj4gSSB3aWxs IGRvIHNvbWUgdGVzdHMgaW4gdGhlIG5leHQgZGF5cywgYnV0IEkgc3VzcGVjdCB0aGlzIGJlIGFu IGlzc3VlLg0KPiA+DQo+ID4gQWguIEknbSBub3QgYXdhcmUgdGhhdCBydGw4eHh4dSBjYW4gc3Vw cG9ydCAyIHZpcnR1YWwgaW50ZXJmYWNlcywgYW5kDQo+ID4gb25seSBSVEw4MTg4RlUgZGVjbGFy ZXMgLnN1cHBvcnRzX2NvbmN1cnJlbnQgPSAxLCBzbyBtYXliZSB3ZSBjYW4gaGF2ZQ0KPiA+IHNw ZWNpYWwgaGFuZGxpbmcgZm9yIHRoaXMgY2hpcD8NCj4gDQo+IEkgd291bGQgbGlrZSB0byBlbmFi bGUgc3VwcG9ydHNfY29uY3VycmVudCBmb3IgbW9yZSBjaGlwcywgaWYgSSBjYW4gdGVzdA0KPiB0 aGlzIGZlYXR1cmUuDQo+IA0KPiA+DQo+ID4gSSdkIHNoYXJlIHNvbWUgaW5mb3JtYXRpb24gYWJv dXQgc2VjdXJpdHkgQ0FNIGZvciByZWZlcmVuY2UuIFNpbmNlIGRhdGEgaXMNCj4gPiBxdWl0ZSBv bGQgKDEwKyB5ZWFycyksIEkgY2FuJ3QgZ3VhcmFudGVlIGFsbCBhcmUgY29ycmVjdC4NCj4gPg0K PiA+IDEuIGRlZmF1bHQga2V5IHN3aXRjaCBpbiBydGw4eHh4dV9zZXRfa2V5KCkNCj4gPiAgICBT RUNfQ0ZHX1RYQkNfVVNFX0RFRktFWSBhbmQgU0VDX0NGR19SWEJDX1VTRV9ERUZLRVkgbWVhbiB0 aGF0DQo+ID4gICAgYnJvYWRjYXN0L211bHRpY2FzdCBwYWNrZXRzIHVzZSBkZWZhdWx0IGtleSAo Q0FNIGVudHJpZXMgMH4zIGZvcg0KPiA+ICAgIGtleWlkeCAwfjMpLg0KPiA+ICAgIEZvciB0d28g aW50ZXJmYWNlcyBjYXNlLCB0aGF0J2QgYSBwcm9ibGVtLCBzbyBtYXliZSB3ZSBzaG91bGQgdXNl DQo+ID4gICAgc29mdHdhcmUgZW5jcnlwdGlvbi9kZWNyeXB0aW9uIGZvciBub24tcGFpcndpc2Ug a2V5Lg0KPiA+DQo+ID4gICAgICAgdmFsOCA9IFNFQ19DRkdfVFhfU0VDX0VOQUJMRSB8IFNFQ19D RkdfVFhCQ19VU0VfREVGS0VZIHwNCj4gPiAgICAgICAgICAgICAgIFNFQ19DRkdfUlhfU0VDX0VO QUJMRSB8IFNFQ19DRkdfUlhCQ19VU0VfREVGS0VZOw0KPiA+ICAgICAgIHZhbDggfD0gU0VDX0NG R19UWF9VU0VfREVGS0VZIHwgU0VDX0NGR19SWF9VU0VfREVGS0VZOw0KPiA+ICAgICAgIHJ0bDh4 eHh1X3dyaXRlOChwcml2LCBSRUdfU0VDVVJJVFlfQ0ZHLCB2YWw4KTsNCj4gPg0KPiA+IDIuIGdy b3VwIGtleSAoR0spIGZpZWxkIG9mIHNlY3VyaXR5IENBTSBpbiBydGw4eHh4dV9jYW1fd3JpdGUo KQ0KPiA+ICAgIFRoZSBncm91cCBrZXkgZmllbGQgb2Ygc2VjdXJpdHkgQ0FNIGlzIEJJVCg2KSB3 aGljaCBpc24ndCBzdXBwb3J0ZWQNCj4gPiAgICBieSBlYXJsaWVyIGNoaXBzIChzb3JyeSBJIGhh dmUgbm8gZGF0YSBhYm91dCB0aGUgZXhhY3QgY2hpcHMpLg0KPiA+DQo+IA0KPiBCSVQgNiBpcyB1 c2VkIGluIHRoZSBydGw4MTg4ZXUgZHJpdmVyLCBhbmQgbm90IHVzZWQgaW4gdGhlIHJ0bDgxOTJj dSBkcml2ZXIsDQo+IHNvIEkgYXNzdW1lIGl0J3MganVzdCB0aGUgb2xkZXIgUlRMODE4OENVL1JU TDgxOTJDVSBhbmQgUlRMODcyM0FVIHRoYXQgZG9uJ3QNCj4gc3VwcG9ydCBpdC4NCj4gDQo+ID4g ICAgSWYgYSBjaGlwIGNhbiBzdXBwb3J0IGdyb3VwIGtleSBmaWVsZCwgdGhlIENBTSBsYXlvdXQg d2l0aCBkZWZhdWx0IGtleQ0KPiA+ICAgIGVuYWJsZWQgZm9yIHR3byBpbnRlcmZhY2VzIChTVEEt MStBUC0xKSBjYW4gYmUNCj4gPg0KPiA+ICAgIFNUQS0xIDwtPiBBUC0xMA0KPiA+ICAgIEFQLTEg IDwtPiBTVEEtMjANCj4gPg0KPiA+ICAgIENBTSAgR0sgICBNQUMgICAgS0VZDQo+ID4gICAgIDAN Cj4gPiAgICAgMSAgIDEgICAgMDA6ICAgIEFQLTEgKEdUSykgIC8vIHNob3VsZCBiZSBvbiBlbnRy eSAwfjMgZGVwZW5kcyBvbiBrZXlfaWR4DQo+ID4gICAgIDINCj4gPiAgICAgMw0KPiA+ICAgICA0 DQo+ID4gICAgIDUgICAxICAgIEFQLTEwICBBUC0xMCAoR1RLKSAgLy8gY2FuIGJlIG9uIGFueSBl bnRyeSBhZnRlciA0DQo+ID4gICAgIDYNCj4gPg0KPiANCj4gV2hhdCBhcmUgdGhlIG51bWJlcnMg MSwgMTAsIGFuZCAyMCBpbiAiQVAtMSIsICJBUC0xMCIsICJTVEEtMjAiID8NCg0KSnVzdCByZXBy ZXNlbnQgZGlmZmVyZW50IHJvbGVzLiANCg0KRm9yIHJ0bDh4eHh1LCB0d28gaW50ZXJmYWNlcyBh cmUgU1RBLTEgYW5kIEFQLTEsIGFuZCBTVEEtMSBjb25uZWN0IHRvIEFQLTEwLA0KYW5kIEFQLTEg aXMgY29ubmVjdGVkIGZyb20gU1RBLTIwLg0KDQpJIGRvbid0IGFkZCBwYWlyd2lzZSBrZXkgdG8g YWJvdmUgZXhhbXBsZSwgYmVjYXVzZSBpdCBpcyBzaW1wbGUsIGp1c3Qgb25lDQplbnRyeSB0byBh IFBUSy4gSW5zdGVhZCwgSSBvbmx5IGxpc3QgZ3JvdXAga2V5IGluIHRoZSBleGFtcGxlLg0KDQpG b3IgQVAgcm9sZSAoQVAtMSksIGl0IGNhbiBzZW5kIGJyb2FkY2FzdCBwYWNrZXRzIHRvIG1hbnkg c3RhdGlvbnMsIHNvDQp1c2UgZGVmYXVsdCBrZXkuDQooYnV0IGl0IHNob3VsZCBub3QgcmVjZWl2 ZSBhIGJyb2FkY2FzdCBwYWNrZXQgZnJvbSBzdGF0aW9ucykNCg0KRm9yIHN0YXRpb24gcm9sZSAo U1RBLTEpLCBpdCBzaG91bGQgcmVjZWl2ZSBicm9hZGNhc3QgcGFja2V0cyBmcm9tDQpzcGVjaWZp YyBBUC0xMCwgc28gYWRkIGFuIGVudHJ5IHdpdGggQVAtMTAncyBNQUMgYWRkcmVzcy4NCg0KPiAN Cj4gPiAgICAgKHBhaXJ3aXNlIGtleSBjYW4gYmUgb24gYW55IGVudHJ5IGFmdGVyIDQpDQo+ID4N Cj4gPiAgICAgICBpZiAoIShrZXktPmZsYWdzICYgSUVFRTgwMjExX0tFWV9GTEFHX1BBSVJXSVNF KSkNCj4gPiAgICAgICAgICAgICAgIGN0cmwgfD0gQklUKDYpOw0KPiA+DQo+ID4gTXkgcGVyc3Bl Y3RpdmUgYXJlDQo+ID4gMS4gY3VycmVudGx5IGRlZmF1bHQga2V5IGlzIGVuYWJsZWQsIHNvIHdl IHNob3VsZCB0cmVhdCBDQU0gZW50cnkgMH4zIGFzDQo+ID4gICAgc3BlY2lhbCBjYXNlcy4gVGhh dCBtZWFucyBydGw4eHh4dV9nZXRfZnJlZV9zZWNfY2FtKCkgc2hvdWxkIGJlIG1vZGlmaWVkDQo+ ID4gICAgYXMgQml0dGVyYmx1ZSdzIHZlcnNpb24uDQo+ID4NCj4gPiAyLiBGb3IgdHdvIGludGVy ZmFjZXMsIEkgZ3Vlc3MgUlRMODE4OEZVIGNhbiBzdXBwb3J0IEdLIGJpdCwgc28gaXQnZCBiZSB3 b3J0aA0KPiA+ICAgIHRvIHRyeSB0aGUgbWV0aG9kIG9mIGV4YW1wbGUgMiBhYm92ZS4NCj4gPg0K PiA+ICAgIElmIHdlIHdhbnQgZWFybGllciBjaGlwcyBjYW4gc3VwcG9ydCB0d28gaW50ZXJmYWNl cywgSSB0aGluayB3ZSBzaG91bGQNCj4gPiAgICBkaXNhYmxlIGRlZmF1bHQga2V5Lg0KPiANCj4g SW5kZWVkLCB0aGUgcnRsODE5MmN1IGRyaXZlciAob3V0IG9mIGtlcm5lbCkgZG9lc24ndCBzZXQg U0VDX0NGR19UWEJDX1VTRV9ERUZLRVkNCj4gYW5kIFNFQ19DRkdfUlhCQ19VU0VfREVGS0VZIHdo ZW4gY29uY3VycmVudCBtb2RlIGlzIGVuYWJsZWQuDQo+IA0KPiA+IFNlZW1pbmdseSwgaXQgaXMg bm90IHBvc3NpYmxlIHRoYXQgdXNpbmcgaGFyZHdhcmUNCj4gPiAgICBjcnlwdG8gd2hlbiBvcGVy YXRpbmcgb25lIGludGVyZmFjZSBhbmQgdGhlbiBzd2l0Y2hpbmcgdG8gdXNlIHNvZnR3YXJlPg0K PiBjcnlwdG8gd2hlbiBvcGVyYXRpbmcgdHdvIGludGVyZmFjZXMuIFRoYXQgbWVhbnMgYnJvYWRj YXN0L211bHRpY2FzdA0KPiA+ICAgIHBhY2tldHMgc2hvdWxkIGJlIGJ5IHNvZnR3YXJlIGNyeXB0 byBlbnRpcmVseSBpZiB3ZSB3YW50IHRvIHN1cHBvcnQgdHdvDQo+ID4gICAgaW50ZXJmYWNlcy4N Cj4gPg0KPiA+IDMuIEkgdGhpbmsgcnR3ODggaGFzIHNpbWlsYXIgcHJvYmxlbSBmb3IgdHdvIGlu dGVyZmFjZXMuDQo+ID4NCj4gPj4NCj4gPj4+DQo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9u ZXQvd2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9jb3JlLmMNCj4gPj4gYi9kcml2ZXJzL25ldC93 aXJlbGVzcy9yZWFsdGVrL3J0bDh4eHh1L2NvcmUuYw0KPiA+Pj4gaW5kZXggZWUyNzhmMDU0OGU0 Li5mN2IzNTY1NWJlYzUgMTAwNjQ0DQo+ID4+PiAtLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9y ZWFsdGVrL3J0bDh4eHh1L2NvcmUuYw0KPiA+Pj4gKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mv cmVhbHRlay9ydGw4eHh4dS9jb3JlLmMNCj4gPj4+IEBAIC02OTQyLDcgKzY5NDIsOCBAQCBzdGF0 aWMgaW50IHJ0bDh4eHh1X2dldF9mcmVlX3NlY19jYW0oc3RydWN0DQo+IGllZWU4MDIxMV9odyAq aHcpDQo+ID4+PiAgIHsNCj4gPj4+ICAgICAgIHN0cnVjdCBydGw4eHh4dV9wcml2ICpwcml2ID0g aHctPnByaXY7DQo+ID4+Pg0KPiA+Pj4gLSAgICAgcmV0dXJuIGZpbmRfZmlyc3RfemVyb19iaXQo cHJpdi0+Y2FtX21hcCwNCj4gcHJpdi0+Zm9wcy0+bWF4X3NlY19jYW1fbnVtKTsNCj4gPj4+ICsg ICAgIHJldHVybiBmaW5kX25leHRfemVyb19iaXQocHJpdi0+Y2FtX21hcCwNCj4gcHJpdi0+Zm9w cy0+bWF4X3NlY19jYW1fbnVtLA0KPiA+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSVEw4WFhYVV9TRUNfREVGQVVMVF9LRVlfTlVNKTsNCj4gPj4+ICAgfQ0KPiA+Pj4NCj4gPj4+ ICAgc3RhdGljIGludCBydGw4eHh4dV9zZXRfa2V5KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LCBl bnVtIHNldF9rZXlfY21kDQo+IGNtZCwNCj4gPj4+IEBAIC02OTk5LDEyICs3MDAwLDE1IEBAIHN0 YXRpYyBpbnQgcnRsOHh4eHVfc2V0X2tleShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywNCj4gZW51 bSBzZXRfa2V5X2NtZCBjbWQsDQo+ID4+Pg0KPiA+Pj4gICAgICAgc3dpdGNoIChjbWQpIHsNCj4g Pj4+ICAgICAgIGNhc2UgU0VUX0tFWToNCj4gPj4+ICsgICAgICAgICAgICAgaWYgKGtleS0+Zmxh Z3MgJiBJRUVFODAyMTFfS0VZX0ZMQUdfUEFJUldJU0UpIHsNCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICByZXR2YWwgPSBydGw4eHh4dV9nZXRfZnJlZV9zZWNfY2FtKGh3KTsNCj4gPj4+ICsg ICAgICAgICAgICAgICAgICAgICBpZiAocmV0dmFsIDwgMCkNCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gPj4+DQo+ID4+PiAtICAgICAg ICAgICAgIHJldHZhbCA9IHJ0bDh4eHh1X2dldF9mcmVlX3NlY19jYW0oaHcpOw0KPiA+Pj4gLSAg ICAgICAgICAgICBpZiAocmV0dmFsIDwgMCkNCj4gPj4+IC0gICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gLUVPUE5PVFNVUFA7DQo+ID4+PiAtDQo+ID4+PiAtICAgICAgICAgICAgIGtleS0+aHdf a2V5X2lkeCA9IHJldHZhbDsNCj4gPj4+ICsgICAgICAgICAgICAgICAgICAgICBrZXktPmh3X2tl eV9pZHggPSByZXR2YWw7DQo+ID4+PiArICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4+PiArICAg ICAgICAgICAgICAgICAgICAga2V5LT5od19rZXlfaWR4ID0ga2V5LT5rZXlpZHg7DQo+ID4+PiAr ICAgICAgICAgICAgIH0NCj4gPj4+DQo+ID4+PiAgICAgICAgICAgICAgIGlmICh2aWYtPnR5cGUg PT0gTkw4MDIxMV9JRlRZUEVfQVAgJiYgIShrZXktPmZsYWdzICYNCj4gSUVFRTgwMjExX0tFWV9G TEFHX1BBSVJXSVNFKSkNCj4gPj4+ICAgICAgICAgICAgICAgICAgICAgICBydGx2aWYtPmh3X2tl eV9pZHggPSBrZXktPmh3X2tleV9pZHg7DQo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQv d2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dS5oDQo+ID4+IGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dS5oDQo+ID4+PiBpbmRleCA0YjA1ZGJh MjJlNjcuLjE4OGY0YmJlOTljZCAxMDA2NDQNCj4gPj4+IC0tLSBhL2RyaXZlcnMvbmV0L3dpcmVs ZXNzL3JlYWx0ZWsvcnRsOHh4eHUvcnRsOHh4eHUuaA0KPiA+Pj4gKysrIGIvZHJpdmVycy9uZXQv d2lyZWxlc3MvcmVhbHRlay9ydGw4eHh4dS9ydGw4eHh4dS5oDQo+ID4+PiBAQCAtMTc4OCw2ICsx Nzg4LDcgQEAgc3RydWN0IHJ0bDh4eHh1X2Nmb190cmFja2luZyB7DQo+ID4+PiAgICNkZWZpbmUg UlRMOFhYWFVfQkNfTUNfTUFDSUQgICAgICAgIDANCj4gPj4+ICAgI2RlZmluZSBSVEw4WFhYVV9C Q19NQ19NQUNJRDEgICAgICAgMQ0KPiA+Pj4gICAjZGVmaW5lIFJUTDhYWFhVX01BWF9TRUNfQ0FN X05VTSAgICA2NA0KPiA+Pj4gKyNkZWZpbmUgUlRMOFhYWFVfU0VDX0RFRkFVTFRfS0VZX05VTSA0 DQo+ID4+Pg0KPiA+Pj4gICBzdHJ1Y3QgcnRsOHh4eHVfcHJpdiB7DQo+ID4+PiAgICAgICBzdHJ1 Y3QgaWVlZTgwMjExX2h3ICpodzsNCj4gPg0KDQo=