From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E433EC47422 for ; Mon, 22 Jan 2024 00:23:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=LoVGOt8yhKxivLFqFmQTlJSn1WnSxzby1fCLydpBOPw=; b=ydVIPTvp9AT3B4 E78vrWdSqJIrm3i+8aQwP1jFZ2OJgUFsjxjQSTvcOjxTqPUxPc29u2192zvjLCCgo3snqBItEbjHh kGo+0JHRI4CpYsaWuB//OqXcDHojmuH1gm2VhLNOdCBLnYin4Whsti/31DmFlRXxTc6sXsYtEZwM2 VRqCsCCaL5+m5Jh95I/3xEnj9qpM2Oo+V9pfSIrtH15ZdbYeNgNHDE5e5nllB83lkT7/RhumWlMuO YLLU5VwboHffC0hyLlrSU1nfMMGSqq5Odq1VqTSmAP7PlxEa7qeAMcDDM9Y1ywKYCqzhBhcgyQbB9 JZ5N3P+44/hdOiI8HnOg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1rRi5p-00AFqP-39; Mon, 22 Jan 2024 00:23:13 +0000 Received: from ams.source.kernel.org ([145.40.68.75]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1rRi5i-00AFni-30 for linux-riscv@lists.infradead.org; Mon, 22 Jan 2024 00:23:12 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by ams.source.kernel.org (Postfix) with ESMTP id 42A02B80B3F; Mon, 22 Jan 2024 00:23:05 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 24CEDC43394; Mon, 22 Jan 2024 00:23:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1705882984; bh=wUIH+X+Dg+8OiDsKdtlX0w7Z47Xr1FoGVXdx2XNe13Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=czzM607GU+kSq5CG72zHhlDdRxwH3dUY+To2i9NQCiIbzWh6R80uj5W0K6mzFcAkH UFvTHLGS6alnicD9RlgR6BW5zRWIh9Gu7ISNha6eqA1daKLKKVppJYtQEzUlNRkEln qZR85sTL0pwtUIgfby9gR0v6NEirD4Rda3y+bmV50GRHIZgkoEGxjyMN744ajXFeE7 ldxMOs1JChyux66qgstYvDyps8ekpldyZQUOqKasxUmv8HoMBbAJaACRu3/a9vYK0n Z9wpWQoBiBPgSaj5n8KSg+Ats4mzUP5G73B0iAQRTP/f3msE+HmJxk0NLXw/vunNTz 8beJ3oiFXHXfA== From: Eric Biggers To: linux-crypto@vger.kernel.org, linux-riscv@lists.infradead.org Cc: linux-kernel@vger.kernel.org, Albert Ou , Andy Chiu , Ard Biesheuvel , =?UTF-8?q?Christoph=20M=C3=BCllner?= , Heiko Stuebner , Jerry Shih , Palmer Dabbelt , Paul Walmsley , Phoebe Chen , hongrong.hsu@sifive.com, Heiko Stuebner Subject: [PATCH v3 10/10] crypto: riscv - add vector crypto accelerated SM4 Date: Sun, 21 Jan 2024 16:19:21 -0800 Message-ID: <20240122002024.27477-11-ebiggers@kernel.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240122002024.27477-1-ebiggers@kernel.org> References: <20240122002024.27477-1-ebiggers@kernel.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240121_162307_256253_08364D93 X-CRM114-Status: GOOD ( 27.11 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org RnJvbTogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgoKQWRkIGFuIGltcGxlbWVu dGF0aW9uIG9mIFNNNCB1c2luZyB0aGUgWnZrc2VkIGV4dGVuc2lvbi4gIFRoZSBhc3NlbWJseQpj b2RlIGlzIGRlcml2ZWQgZnJvbSBPcGVuU1NMIGNvZGUgKG9wZW5zc2wvb3BlbnNzbCMyMTkyMykg dGhhdCB3YXMKZHVhbC1saWNlbnNlZCBzbyB0aGF0IGl0IGNvdWxkIGJlIHJldXNlZCBpbiB0aGUg a2VybmVsLiAgTmV2ZXJ0aGVsZXNzLAp0aGUgYXNzZW1ibHkgaGFzIGJlZW4gc2lnbmlmaWNhbnRs eSByZXdvcmtlZCBmb3IgaW50ZWdyYXRpb24gd2l0aCB0aGUKa2VybmVsLCBmb3IgZXhhbXBsZSBi eSB1c2luZyBhIHJlZ3VsYXIgLlMgZmlsZSBpbnN0ZWFkIG9mIHRoZSBzby1jYWxsZWQKcGVybGFz bSwgdXNpbmcgdGhlIGFzc2VtYmxlciBpbnN0ZWFkIG9mIGJhcmUgJy5pbnN0JywgYW5kIGdyZWF0 bHkKcmVkdWNpbmcgY29kZSBkdXBsaWNhdGlvbi4KCkNvLWRldmVsb3BlZC1ieTogQ2hyaXN0b3Bo IE3DvGxsbmVyIDxjaHJpc3RvcGgubXVlbGxuZXJAdnJ1bGwuZXU+ClNpZ25lZC1vZmYtYnk6IENo cmlzdG9waCBNw7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PgpDby1kZXZlbG9w ZWQtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrby5zdHVlYm5lckB2cnVsbC5ldT4KU2lnbmVkLW9m Zi1ieTogSGVpa28gU3R1ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1PgpTaWduZWQtb2Zm LWJ5OiBKZXJyeSBTaGloIDxqZXJyeS5zaGloQHNpZml2ZS5jb20+CkNvLWRldmVsb3BlZC1ieTog RXJpYyBCaWdnZXJzIDxlYmlnZ2Vyc0Bnb29nbGUuY29tPgpTaWduZWQtb2ZmLWJ5OiBFcmljIEJp Z2dlcnMgPGViaWdnZXJzQGdvb2dsZS5jb20+Ci0tLQogYXJjaC9yaXNjdi9jcnlwdG8vS2NvbmZp ZyAgICAgICAgICAgICAgICAgICB8ICAxNyArKysKIGFyY2gvcmlzY3YvY3J5cHRvL01ha2VmaWxl ICAgICAgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9yaXNjdi9jcnlwdG8vc200LXJpc2N2NjQt Z2x1ZS5jICAgICAgICB8IDEwNyArKysrKysrKysrKysrKysrKysKIGFyY2gvcmlzY3YvY3J5cHRv L3NtNC1yaXNjdjY0LXp2a3NlZC16dmtiLlMgfCAxMTcgKysrKysrKysrKysrKysrKysrKysKIDQg ZmlsZXMgY2hhbmdlZCwgMjQ0IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L3Jpc2N2L2NyeXB0by9zbTQtcmlzY3Y2NC1nbHVlLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBhcmNo L3Jpc2N2L2NyeXB0by9zbTQtcmlzY3Y2NC16dmtzZWQtenZrYi5TCgpkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9jcnlwdG8vS2NvbmZpZyBiL2FyY2gvcmlzY3YvY3J5cHRvL0tjb25maWcKaW5kZXgg MTc5ZDA5ZGY4ZTBjYS4uMmFkNDRlMWQ0NjRhZiAxMDA2NDQKLS0tIGEvYXJjaC9yaXNjdi9jcnlw dG8vS2NvbmZpZworKysgYi9hcmNoL3Jpc2N2L2NyeXB0by9LY29uZmlnCkBAIC02NiwxMSArNjYs MjggQEAgY29uZmlnIENSWVBUT19TTTNfUklTQ1Y2NAogCWRlcGVuZHMgb24gNjRCSVQgJiYgUklT Q1ZfSVNBX1YgJiYgVE9PTENIQUlOX0hBU19WRUNUT1JfQ1JZUFRPCiAJc2VsZWN0IENSWVBUT19I QVNICiAJc2VsZWN0IENSWVBUT19TTTMKIAloZWxwCiAJICBTTTMgKFNoYW5nTWkgMykgc2VjdXJl IGhhc2ggZnVuY3Rpb24gKE9TQ0NBIEdNL1QgMDAwNC0yMDEyKQogCiAJICBBcmNoaXRlY3R1cmU6 IHJpc2N2NjQgdXNpbmc6CiAJICAtIFp2a3NoIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9uCiAJICAt IFp2a2IgdmVjdG9yIGNyeXB0byBleHRlbnNpb24KIAorY29uZmlnIENSWVBUT19TTTRfUklTQ1Y2 NAorCXRyaXN0YXRlICJDaXBoZXJzOiBTTTQgKFNoYW5nTWkgNCkiCisJZGVwZW5kcyBvbiA2NEJJ VCAmJiBSSVNDVl9JU0FfViAmJiBUT09MQ0hBSU5fSEFTX1ZFQ1RPUl9DUllQVE8KKwlzZWxlY3Qg Q1JZUFRPX0FMR0FQSQorCXNlbGVjdCBDUllQVE9fU000CisJaGVscAorCSAgU000IGJsb2NrIGNp cGhlciBhbGdvcml0aG0gKE9TQ0NBIEdCL1QgMzI5MDctMjAxNiwKKwkgIElTTy9JRUMgMTgwMzMt MzoyMDEwL0FtZCAxOjIwMjEpCisKKwkgIFNNNCAoR0JULjMyOTA3LTIwMTYpIGlzIGEgY3J5cHRv Z3JhcGhpYyBzdGFuZGFyZCBpc3N1ZWQgYnkgdGhlCisJICBPcmdhbml6YXRpb24gb2YgU3RhdGUg Q29tbWVyY2lhbCBBZG1pbmlzdHJhdGlvbiBvZiBDaGluYSAoT1NDQ0EpCisJICBhcyBhbiBhdXRo b3JpemVkIGNyeXB0b2dyYXBoaWMgYWxnb3JpdGhtIGZvciB1c2Ugd2l0aGluIENoaW5hLgorCisJ ICBBcmNoaXRlY3R1cmU6IHJpc2N2NjQgdXNpbmc6CisJICAtIFp2a3NlZCB2ZWN0b3IgY3J5cHRv IGV4dGVuc2lvbgorCSAgLSBadmtiIHZlY3RvciBjcnlwdG8gZXh0ZW5zaW9uCisKIGVuZG1lbnUK ZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRvL01ha2VmaWxlIGIvYXJjaC9yaXNjdi9jcnlw dG8vTWFrZWZpbGUKaW5kZXggZGE0ODk3N2U5NmY1OC4uMjQ3YzdiYzcyODhjZSAxMDA2NDQKLS0t IGEvYXJjaC9yaXNjdi9jcnlwdG8vTWFrZWZpbGUKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vTWFr ZWZpbGUKQEAgLTExLDEwICsxMSwxMyBAQCBvYmotJChDT05GSUdfQ1JZUFRPX0dIQVNIX1JJU0NW NjQpICs9IGdoYXNoLXJpc2N2NjQubwogZ2hhc2gtcmlzY3Y2NC15IDo9IGdoYXNoLXJpc2N2NjQt Z2x1ZS5vIGdoYXNoLXJpc2N2NjQtenZrZy5vCiAKIG9iai0kKENPTkZJR19DUllQVE9fU0hBMjU2 X1JJU0NWNjQpICs9IHNoYTI1Ni1yaXNjdjY0Lm8KIHNoYTI1Ni1yaXNjdjY0LXkgOj0gc2hhMjU2 LXJpc2N2NjQtZ2x1ZS5vIHNoYTI1Ni1yaXNjdjY0LXp2a25oYV9vcl96dmtuaGItenZrYi5vCiAK IG9iai0kKENPTkZJR19DUllQVE9fU0hBNTEyX1JJU0NWNjQpICs9IHNoYTUxMi1yaXNjdjY0Lm8K IHNoYTUxMi1yaXNjdjY0LXkgOj0gc2hhNTEyLXJpc2N2NjQtZ2x1ZS5vIHNoYTUxMi1yaXNjdjY0 LXp2a25oYi16dmtiLm8KIAogb2JqLSQoQ09ORklHX0NSWVBUT19TTTNfUklTQ1Y2NCkgKz0gc20z LXJpc2N2NjQubwogc20zLXJpc2N2NjQteSA6PSBzbTMtcmlzY3Y2NC1nbHVlLm8gc20zLXJpc2N2 NjQtenZrc2gtenZrYi5vCisKK29iai0kKENPTkZJR19DUllQVE9fU000X1JJU0NWNjQpICs9IHNt NC1yaXNjdjY0Lm8KK3NtNC1yaXNjdjY0LXkgOj0gc200LXJpc2N2NjQtZ2x1ZS5vIHNtNC1yaXNj djY0LXp2a3NlZC16dmtiLm8KZGlmZiAtLWdpdCBhL2FyY2gvcmlzY3YvY3J5cHRvL3NtNC1yaXNj djY0LWdsdWUuYyBiL2FyY2gvcmlzY3YvY3J5cHRvL3NtNC1yaXNjdjY0LWdsdWUuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi40N2ZiODRlYmU1NzdkCi0tLSAvZGV2 L251bGwKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vc200LXJpc2N2NjQtZ2x1ZS5jCkBAIC0wLDAg KzEsMTA3IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisvKgor ICogU000IHVzaW5nIHRoZSBSSVNDLVYgdmVjdG9yIGNyeXB0byBleHRlbnNpb25zCisgKgorICog Q29weXJpZ2h0IChDKSAyMDIzIFZSVUxMIEdtYkgKKyAqIEF1dGhvcjogSGVpa28gU3R1ZWJuZXIg PGhlaWtvLnN0dWVibmVyQHZydWxsLmV1PgorICoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBTaUZp dmUsIEluYy4KKyAqIEF1dGhvcjogSmVycnkgU2hpaCA8amVycnkuc2hpaEBzaWZpdmUuY29tPgor ICovCisKKyNpbmNsdWRlIDxhc20vc2ltZC5oPgorI2luY2x1ZGUgPGFzbS92ZWN0b3IuaD4KKyNp bmNsdWRlIDxjcnlwdG8vaW50ZXJuYWwvY2lwaGVyLmg+CisjaW5jbHVkZSA8Y3J5cHRvL2ludGVy bmFsL3NpbWQuaD4KKyNpbmNsdWRlIDxjcnlwdG8vc200Lmg+CisjaW5jbHVkZSA8bGludXgvbGlu a2FnZS5oPgorI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgorCithc21saW5rYWdlIHZvaWQgc200 X2V4cGFuZGtleV96dmtzZWRfenZrYihjb25zdCB1OCB1c2VyX2tleVtTTTRfS0VZX1NJWkVdLAor CQkJCQkgIHUzMiBya2V5X2VuY1tTTTRfUktFWV9XT1JEU10sCisJCQkJCSAgdTMyIHJrZXlfZGVj W1NNNF9SS0VZX1dPUkRTXSk7Cithc21saW5rYWdlIHZvaWQgc200X2NyeXB0X3p2a3NlZF96dmti KGNvbnN0IHUzMiBya2V5W1NNNF9SS0VZX1dPUkRTXSwKKwkJCQkgICAgICBjb25zdCB1OCBpbltT TTRfQkxPQ0tfU0laRV0sCisJCQkJICAgICAgdTggb3V0W1NNNF9CTE9DS19TSVpFXSk7CisKK3N0 YXRpYyBpbnQgcmlzY3Y2NF9zbTRfc2V0a2V5KHN0cnVjdCBjcnlwdG9fdGZtICp0Zm0sIGNvbnN0 IHU4ICprZXksCisJCQkgICAgICB1bnNpZ25lZCBpbnQga2V5bGVuKQoreworCXN0cnVjdCBzbTRf Y3R4ICpjdHggPSBjcnlwdG9fdGZtX2N0eCh0Zm0pOworCisJaWYgKGNyeXB0b19zaW1kX3VzYWJs ZSgpKSB7CisJCWlmIChrZXlsZW4gIT0gU000X0tFWV9TSVpFKQorCQkJcmV0dXJuIC1FSU5WQUw7 CisJCWtlcm5lbF92ZWN0b3JfYmVnaW4oKTsKKwkJc200X2V4cGFuZGtleV96dmtzZWRfenZrYihr ZXksIGN0eC0+cmtleV9lbmMsIGN0eC0+cmtleV9kZWMpOworCQlrZXJuZWxfdmVjdG9yX2VuZCgp OworCQlyZXR1cm4gMDsKKwl9CisJcmV0dXJuIHNtNF9leHBhbmRrZXkoY3R4LCBrZXksIGtleWxl bik7Cit9CisKK3N0YXRpYyB2b2lkIHJpc2N2NjRfc200X2VuY3J5cHQoc3RydWN0IGNyeXB0b190 Zm0gKnRmbSwgdTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwljb25zdCBzdHJ1Y3Qgc200X2N0 eCAqY3R4ID0gY3J5cHRvX3RmbV9jdHgodGZtKTsKKworCWlmIChjcnlwdG9fc2ltZF91c2FibGUo KSkgeworCQlrZXJuZWxfdmVjdG9yX2JlZ2luKCk7CisJCXNtNF9jcnlwdF96dmtzZWRfenZrYihj dHgtPnJrZXlfZW5jLCBzcmMsIGRzdCk7CisJCWtlcm5lbF92ZWN0b3JfZW5kKCk7CisJfSBlbHNl IHsKKwkJc200X2NyeXB0X2Jsb2NrKGN0eC0+cmtleV9lbmMsIGRzdCwgc3JjKTsKKwl9Cit9CisK K3N0YXRpYyB2b2lkIHJpc2N2NjRfc200X2RlY3J5cHQoc3RydWN0IGNyeXB0b190Zm0gKnRmbSwg dTggKmRzdCwgY29uc3QgdTggKnNyYykKK3sKKwljb25zdCBzdHJ1Y3Qgc200X2N0eCAqY3R4ID0g Y3J5cHRvX3RmbV9jdHgodGZtKTsKKworCWlmIChjcnlwdG9fc2ltZF91c2FibGUoKSkgeworCQlr ZXJuZWxfdmVjdG9yX2JlZ2luKCk7CisJCXNtNF9jcnlwdF96dmtzZWRfenZrYihjdHgtPnJrZXlf ZGVjLCBzcmMsIGRzdCk7CisJCWtlcm5lbF92ZWN0b3JfZW5kKCk7CisJfSBlbHNlIHsKKwkJc200 X2NyeXB0X2Jsb2NrKGN0eC0+cmtleV9kZWMsIGRzdCwgc3JjKTsKKwl9Cit9CisKK3N0YXRpYyBz dHJ1Y3QgY3J5cHRvX2FsZyByaXNjdjY0X3NtNF9hbGcgPSB7CisJLmNyYV9mbGFncyA9IENSWVBU T19BTEdfVFlQRV9DSVBIRVIsCisJLmNyYV9ibG9ja3NpemUgPSBTTTRfQkxPQ0tfU0laRSwKKwku Y3JhX2N0eHNpemUgPSBzaXplb2Yoc3RydWN0IHNtNF9jdHgpLAorCS5jcmFfcHJpb3JpdHkgPSAz MDAsCisJLmNyYV9uYW1lID0gInNtNCIsCisJLmNyYV9kcml2ZXJfbmFtZSA9ICJzbTQtcmlzY3Y2 NC16dmtzZWQtenZrYiIsCisJLmNyYV9jaXBoZXIgPSB7CisJCS5jaWFfbWluX2tleXNpemUgPSBT TTRfS0VZX1NJWkUsCisJCS5jaWFfbWF4X2tleXNpemUgPSBTTTRfS0VZX1NJWkUsCisJCS5jaWFf c2V0a2V5ID0gcmlzY3Y2NF9zbTRfc2V0a2V5LAorCQkuY2lhX2VuY3J5cHQgPSByaXNjdjY0X3Nt NF9lbmNyeXB0LAorCQkuY2lhX2RlY3J5cHQgPSByaXNjdjY0X3NtNF9kZWNyeXB0LAorCX0sCisJ LmNyYV9tb2R1bGUgPSBUSElTX01PRFVMRSwKK307CisKK3N0YXRpYyBpbnQgX19pbml0IHJpc2N2 NjRfc200X21vZF9pbml0KHZvaWQpCit7CisJaWYgKHJpc2N2X2lzYV9leHRlbnNpb25fYXZhaWxh YmxlKE5VTEwsIFpWS1NFRCkgJiYKKwkgICAgcmlzY3ZfaXNhX2V4dGVuc2lvbl9hdmFpbGFibGUo TlVMTCwgWlZLQikgJiYKKwkgICAgcmlzY3ZfdmVjdG9yX3ZsZW4oKSA+PSAxMjgpCisJCXJldHVy biBjcnlwdG9fcmVnaXN0ZXJfYWxnKCZyaXNjdjY0X3NtNF9hbGcpOworCisJcmV0dXJuIC1FTk9E RVY7Cit9CisKK3N0YXRpYyB2b2lkIF9fZXhpdCByaXNjdjY0X3NtNF9tb2RfZXhpdCh2b2lkKQor eworCWNyeXB0b191bnJlZ2lzdGVyX2FsZygmcmlzY3Y2NF9zbTRfYWxnKTsKK30KKworbW9kdWxl X2luaXQocmlzY3Y2NF9zbTRfbW9kX2luaXQpOworbW9kdWxlX2V4aXQocmlzY3Y2NF9zbTRfbW9k X2V4aXQpOworCitNT0RVTEVfREVTQ1JJUFRJT04oIlNNNCAoUklTQy1WIGFjY2VsZXJhdGVkKSIp OworTU9EVUxFX0FVVEhPUigiSGVpa28gU3R1ZWJuZXIgPGhlaWtvLnN0dWVibmVyQHZydWxsLmV1 PiIpOworTU9EVUxFX0xJQ0VOU0UoIkdQTCIpOworTU9EVUxFX0FMSUFTX0NSWVBUTygic200Iik7 CmRpZmYgLS1naXQgYS9hcmNoL3Jpc2N2L2NyeXB0by9zbTQtcmlzY3Y2NC16dmtzZWQtenZrYi5T IGIvYXJjaC9yaXNjdi9jcnlwdG8vc200LXJpc2N2NjQtenZrc2VkLXp2a2IuUwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwLi5mYWU2MjE3OWE0YTNkCi0tLSAvZGV2L251 bGwKKysrIGIvYXJjaC9yaXNjdi9jcnlwdG8vc200LXJpc2N2NjQtenZrc2VkLXp2a2IuUwpAQCAt MCwwICsxLDExNyBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAgT1Ig QlNELTItQ2xhdXNlICovCisvLworLy8gVGhpcyBmaWxlIGlzIGR1YWwtbGljZW5zZWQsIG1lYW5p bmcgdGhhdCB5b3UgY2FuIHVzZSBpdCB1bmRlciB5b3VyCisvLyBjaG9pY2Ugb2YgZWl0aGVyIG9m IHRoZSBmb2xsb3dpbmcgdHdvIGxpY2Vuc2VzOgorLy8KKy8vIENvcHlyaWdodCAyMDIzIFRoZSBP cGVuU1NMIFByb2plY3QgQXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy8vCisvLyBMaWNl bnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UgMi4wICh0aGUgIkxpY2Vuc2UiKS4gWW91IGNh biBvYnRhaW4KKy8vIGEgY29weSBpbiB0aGUgZmlsZSBMSUNFTlNFIGluIHRoZSBzb3VyY2UgZGlz dHJpYnV0aW9uIG9yIGF0CisvLyBodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2UvbGljZW5z ZS5odG1sCisvLworLy8gb3IKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMjMsIENocmlzdG9waCBN w7xsbG5lciA8Y2hyaXN0b3BoLm11ZWxsbmVyQHZydWxsLmV1PgorLy8gQ29weXJpZ2h0IChjKSAy MDIzLCBKZXJyeSBTaGloIDxqZXJyeS5zaGloQHNpZml2ZS5jb20+CisvLyBDb3B5cmlnaHQgMjAy NCBHb29nbGUgTExDCisvLyBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0 aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor Ly8gbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu ZyBjb25kaXRpb25zCisvLyBhcmUgbWV0OgorLy8gMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vICAgIG5vdGljZSwgdGhp cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg Y29weXJpZ2h0CisvLyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisvLyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLy8KKy8vIFRI SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U UklCVVRPUlMKKy8vICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF UywgSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQ VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisv LyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD VCwgSU5DSURFTlRBTCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1Ig UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g QU5ZCisvLyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg TElBQklMSVRZLCBPUiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUs IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKy8v IFRoZSBnZW5lcmF0ZWQgY29kZSBvZiB0aGlzIGZpbGUgZGVwZW5kcyBvbiB0aGUgZm9sbG93aW5n IFJJU0MtViBleHRlbnNpb25zOgorLy8gLSBSVjY0SQorLy8gLSBSSVNDLVYgVmVjdG9yICgnVicp IHdpdGggVkxFTiA+PSAxMjgKKy8vIC0gUklTQy1WIFZlY3RvciBTTTQgQmxvY2sgQ2lwaGVyIGV4 dGVuc2lvbiAoJ1p2a3NlZCcpCisvLyAtIFJJU0MtViBWZWN0b3IgQ3J5cHRvZ3JhcGh5IEJpdC1t YW5pcHVsYXRpb24gZXh0ZW5zaW9uICgnWnZrYicpCisKKyNpbmNsdWRlIDxsaW51eC9saW5rYWdl Lmg+CisKKy50ZXh0Cisub3B0aW9uIGFyY2gsICt6dmtzZWQsICt6dmtiCisKKy8vIHZvaWQgc200 X2V4cGFuZGtleV96a3NlZF96dmtiKGNvbnN0IHU4IHVzZXJfa2V5WzE2XSwgdTMyIHJrZXlfZW5j WzMyXSwKKy8vCQkJCSB1MzIgcmtleV9kZWNbMzJdKTsKK1NZTV9GVU5DX1NUQVJUKHNtNF9leHBh bmRrZXlfenZrc2VkX3p2a2IpCisJdnNldGl2bGkJemVybywgNCwgZTMyLCBtMSwgdGEsIG1hCisK KwkvLyBMb2FkIHRoZSB1c2VyIGtleS4KKwl2bGUzMi52CQl2MSwgKGEwKQorCXZyZXY4LnYJCXYx LCB2MQorCisJLy8gWE9SIHRoZSB1c2VyIGtleSB3aXRoIHRoZSBmYW1pbHkga2V5LgorCWxhCQl0 MCwgRkFNSUxZX0tFWQorCXZsZTMyLnYJCXYyLCAodDApCisJdnhvci52dgkJdjEsIHYxLCB2Mgor CisJLy8gQ29tcHV0ZSB0aGUgcm91bmQga2V5cy4gIFN0b3JlIHRoZW0gaW4gZm9yd2FyZHMgb3Jk ZXIgaW4gcmtleV9lbmMKKwkvLyBhbmQgaW4gcmV2ZXJzZSBvcmRlciBpbiBya2V5X2RlYy4KKwlh ZGRpCQlhMiwgYTIsIDMxKjQKKwlsaQkJdDAsIC00CisJLnNldAkJaSwgMAorLnJlcHQgOAorCXZz bTRrLnZpCXYxLCB2MSwgaQorCXZzZTMyLnYJCXYxLCAoYTEpCS8vIFN0b3JlIHRvIHJrZXlfZW5j LgorCXZzc2UzMi52CXYxLCAoYTIpLCB0MAkvLyBTdG9yZSB0byBya2V5X2RlYy4KKy5pZiBpIDwg NworCWFkZGkJCWExLCBhMSwgMTYKKwlhZGRpCQlhMiwgYTIsIC0xNgorLmVuZGlmCisJLnNldAkJ aSwgaSArIDEKKy5lbmRyCisKKwlyZXQKK1NZTV9GVU5DX0VORChzbTRfZXhwYW5ka2V5X3p2a3Nl ZF96dmtiKQorCisvLyB2b2lkIHNtNF9jcnlwdF96dmtzZWRfenZrYihjb25zdCB1MzIgcmtleVsz Ml0sIGNvbnN0IHU4IGluWzE2XSwgdTggb3V0WzE2XSk7CitTWU1fRlVOQ19TVEFSVChzbTRfY3J5 cHRfenZrc2VkX3p2a2IpCisJdnNldGl2bGkJemVybywgNCwgZTMyLCBtMSwgdGEsIG1hCisKKwkv LyBMb2FkIHRoZSBpbnB1dCBkYXRhLgorCXZsZTMyLnYJCXYxLCAoYTEpCisJdnJldjgudgkJdjEs IHYxCisKKwkvLyBEbyB0aGUgMzIgcm91bmRzIG9mIFNNNCwgNCBhdCBhIHRpbWUuCisJLnNldAkJ aSwgMAorLnJlcHQgOAorCXZsZTMyLnYJCXYyLCAoYTApCisJdnNtNHIudnMJdjEsIHYyCisuaWYg aSA8IDcKKwlhZGRpCQlhMCwgYTAsIDE2CisuZW5kaWYKKwkuc2V0CQlpLCBpICsgMQorLmVuZHIK KworCS8vIFN0b3JlIHRoZSBvdXRwdXQgZGF0YSAoaW4gcmV2ZXJzZSBlbGVtZW50IG9yZGVyKS4K Kwl2cmV2OC52CQl2MSwgdjEKKwlsaQkJdDAsIC00CisJYWRkaQkJYTIsIGEyLCAxMgorCXZzc2Uz Mi52CXYxLCAoYTIpLCB0MAorCisJcmV0CitTWU1fRlVOQ19FTkQoc200X2NyeXB0X3p2a3NlZF96 dmtiKQorCisuc2VjdGlvbiAiLnJvZGF0YSIKKy5wMmFsaWduIDIKKy50eXBlIEZBTUlMWV9LRVks IEBvYmplY3QKK0ZBTUlMWV9LRVk6CisJLndvcmQgMHhBM0IxQkFDNiwgMHg1NkFBMzM1MCwgMHg2 NzdEOTE5NywgMHhCMjcwMjJEQworLnNpemUgRkFNSUxZX0tFWSwgLiAtIEZBTUlMWV9LRVkKLS0g CjIuNDMuMAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3Jn Cmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK