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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 04A84CA0EE6 for ; Tue, 19 Aug 2025 13:16:42 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uoMAn-0006aD-2T; Tue, 19 Aug 2025 09:14:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uoMAk-0006WM-Pe for grub-devel@gnu.org; Tue, 19 Aug 2025 09:14:42 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uoMAg-0007dx-Jv for grub-devel@gnu.org; Tue, 19 Aug 2025 09:14:42 -0400 Received: from pps.filterd (m0360083.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 57JCtF1Y025162; Tue, 19 Aug 2025 13:14:35 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=qMnWakbJ0UDLzbYqm zTDagb7xAYLhNcHwY1b2Hsi9Zg=; b=a/RUba2EtV/BinfsA9a7+bZLqQJgtznjM tVF4eYzFgTWGRH8GKbUgII7muEXjMZ8wFPxHLNFMaaL2Njx+zeSbUbBGttOMEwQY N5LZKohysualIWLbzI2m+jmn/6kj+Vhnf5V+AZnke0yjrM5IiLIqYOp2eHGUyDlb m/odOIgf/DJihWJwDW/Hz7OJx968va/FshKzvZHHCuZQICL5tcrY2M7H0Le9Ifpd GC/tPhVilXwQ2t0/9GbVq20aP/oO3vUCZONTTeOY08o/slAPB2k8+T9jm2jMl2Mw QmEXpR821ABUdhVF0qx6DKMVrZWqTnHbMepZKw0A2EyhfqxOm2/vQ== Received: from ppma23.wdc07v.mail.ibm.com (5d.69.3da9.ip4.static.sl-reverse.com [169.61.105.93]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 48k60g3w70-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Aug 2025 13:14:34 +0000 (GMT) Received: from pps.filterd (ppma23.wdc07v.mail.ibm.com [127.0.0.1]) by ppma23.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 57JA7348014791; Tue, 19 Aug 2025 13:14:33 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma23.wdc07v.mail.ibm.com (PPS) with ESMTPS id 48k5tmt8vs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 19 Aug 2025 13:14:33 +0000 Received: from smtpav05.fra02v.mail.ibm.com (smtpav05.fra02v.mail.ibm.com [10.20.54.104]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 57JDETOg57540896 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 19 Aug 2025 13:14:29 GMT Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2C19420043; Tue, 19 Aug 2025 13:14:29 +0000 (GMT) Received: from smtpav05.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 9D81920040; Tue, 19 Aug 2025 13:14:26 +0000 (GMT) Received: from localhost.localdomain (unknown [9.124.211.37]) by smtpav05.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 19 Aug 2025 13:14:26 +0000 (GMT) From: Sudhakar Kuppusamy To: grub-devel@gnu.org Cc: dja@axtens.net, jan.setjeeilers@oracle.com, julian.klode@canonical.com, mate.kukri@canonical.com, pjones@redhat.com, msuchanek@suse.com, mlewando@redhat.com, stefanb@linux.ibm.com, avnish@linux.ibm.com, nayna@linux.ibm.com, ssrish@linux.ibm.com, Sudhakar Kuppusamy , sridharm@linux.ibm.com Subject: [PATCH v7 10/20] appended signatures: Support verifying appended signatures Date: Tue, 19 Aug 2025 18:43:13 +0530 Message-Id: <20250819131323.57631-11-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) In-Reply-To: <20250819131323.57631-1-sudhakar@linux.ibm.com> References: <20250819131323.57631-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: RHnRslL_XwurmaCPlh0BpWzVNlnuGt-i X-Authority-Analysis: v=2.4 cv=coObk04i c=1 sm=1 tr=0 ts=68a478ba cx=c_pps a=3Bg1Hr4SwmMryq2xdFQyZA==:117 a=3Bg1Hr4SwmMryq2xdFQyZA==:17 a=2OwXVqhp2XgA:10 a=mDV3o1hIAAAA:8 a=JuTF4qcAAAAA:8 a=VnNF1IyMAAAA:8 a=Kz99EobU-ye-OY8kR0EA:9 a=WlT8qwTXB_Kj6um4hl3b:22 X-Proofpoint-GUID: RHnRslL_XwurmaCPlh0BpWzVNlnuGt-i X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODE3MDAxNiBTYWx0ZWRfX0VyX54QHfd1i k8mEkbqVaLipoI32MpqiCx2u7WcjG9HGFDWP72hWZkcMlixEa0PDAbRMcKqEoXDElZFZo7InU9w ZuxtGJY7rd26Yhpg9aNNthuCLrijMtdQmqei1sBcykdz7q875uvVmvgsX7zPi7boGGRPCGqqd04 xTRE9lM1nXTWOQVzmSifGAPuREmSggA2poTSo2sZGmUjVHowNsbLwDKkxGG7/q81wA2AAFej10K NXyT0nK7PiN0RZX9q3uvg3YKo1pPePDfYWrnjgbkLEXdFRMdCw83XnXx9g8iOnGLgrqvNg3SV58 8XqxSuVifCiQ8A8t+uTg184LQIRcui0xm3Vv9Ov1HSLb1weQ8xyQVeR0zR9Jir6ESW4nq6An0C0 BkxdRCTC X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-08-19_02,2025-08-14_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 suspectscore=0 bulkscore=0 clxscore=1015 malwarescore=0 priorityscore=1501 adultscore=0 impostorscore=0 spamscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2507300000 definitions=main-2508170016 Received-SPF: pass client-ip=148.163.156.1; envelope-from=sudhakar@linux.ibm.com; helo=mx0a-001b2d01.pphosted.com X-Spam_score_int: -26 X-Spam_score: -2.7 X-Spam_bar: -- X-Spam_report: (-2.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: grub-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: The development of GNU GRUB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: The development of GNU GRUB Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org Sender: grub-devel-bounces+grub-devel=archiver.kernel.org@gnu.org QnVpbGRpbmcgb24gdGhlIHBhcnNlcnMgYW5kIHRoZSBhYmlsaXR5IHRvIGVtYmVkIFguNTA5IGNl cnRpZmljYXRlcywgYXMKd2VsbCBhcyB0aGUgZXhpc3RpbmcgZ2NyeXB0IGZ1bmN0aW9uYWxpdHks IGFkZCBhIG1vZHVsZSBmb3IgdmVyaWZ5aW5nCmFwcGVuZGVkIHNpZ25hdHVyZXMuCgpUaGlzIGlu Y2x1ZGVzIGEgdmVyaWZpZXIgdGhhdCByZXF1aXJlcyB0aGF0IExpbnV4IGtlcm5lbHMgYW5kCkdS VUIgbW9kdWxlcyBoYXZlIGFwcGVuZGVkIHNpZ25hdHVyZXMsIGFuZCBjb21tYW5kcyB0byBtYW5h Z2UgdGhlCmxpc3Qgb2YgdHJ1c3RlZCBjZXJ0aWZpY2F0ZXMgZm9yIHZlcmlmaWNhdGlvbi4KClZl cmlmaWNhdGlvbiBtdXN0IGJlIGVuYWJsZWQgYnkgc2V0dGluZyBjaGVja19hcHBlbmRlZF9zaWdu YXR1cmVzLiBJZgpzZWN1cmUgYm9vdCBpcyBlbmFibGVkIHdpdGggZW5mb3JjZWQgbW9kZSB3aGVu IHRoZSBtb2R1bGUgaXMgbG9hZGVkLAp2ZXJpZmljYXRpb24gd2lsbCBiZSBlbmFibGVkIGFuZCBs b2NrZWQgYXV0b21hdGljYWxseS4gSWYgdmVyaWZpY2F0aW9uCmlzIGVuYWJsZWQsIGV4dHJhY3Qg dHJ1c3RlZCBrZXlzIGZyb20gdGhlIEdSVUIgRUxGIE5vdGUgYW5kIHN0b3JlIHRoZW0gaW4gdGhl IGRiLgoKQXMgd2l0aCB0aGUgUEdQIHZlcmlmaWVyLCBpdCBpcyBub3QgYSBjb21wbGV0ZSBzZWN1 cmUtYm9vdCBzb2x1dGlvbjoKb3RoZXIgbWVjaGFuaXNtcywgc3VjaCBhcyBhIHBhc3N3b3JkIG9y IGxvY2tkb3duLCBtdXN0IGJlIHVzZWQgdG8gZW5zdXJlCnRoYXQgYSB1c2VyIGNhbm5vdCBkcm9w IHRvIHRoZSBHUlVCIHNoZWxsIGFuZCBkaXNhYmxlIHZlcmlmaWNhdGlvbi4KCkludHJvZHVjaW5n IHRoZSBmb2xsb3dpbmcgR1JVQiBjb21tYW5kcy4KCiAxLiBhcHBlbmRfbGlzdF9kYjoKICAgICAg U2hvdyB0aGUgbGlzdCBvZiB0cnVzdGVkIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBkYiBsaXN0CiAy LiBhcHBlbmRfYWRkX2RiX2NlcnQ6CiAgICAgIEFkZCB0aGUgdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0 byB0aGUgZGIgbGlzdAogMy4gYXBwZW5kX3JtX2RieF9jZXJ0OgogICAgICBSZW1vdmUgdGhlIGRp c3RydXN0ZWQgY2VydGlmaWNhdGUgZnJvbSB0aGUgZGIgbGlzdAogNC4gYXBwZW5kX3ZlcmlmeToK ICAgICAgVmVyaWZ5IHRoZSBzaWduZWQgZmlsZSB1c2luZyBkYiBsaXN0CgpTaWduZWQtb2ZmLWJ5 OiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5zLm5ldD4KU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIg S3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJl cmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4g PGF2bmlzaEBsaW51eC5pYm0uY29tPgotLS0KIGdydWItY29yZS9NYWtlZmlsZS5jb3JlLmRlZiAg ICAgICAgICAgICAgICAgIHwgIDE1ICsKIGdydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9h cHBlbmRlZHNpZy5jIHwgNzgzICsrKysrKysrKysrKysrKysrKysKIGluY2x1ZGUvZ3J1Yi9lcnIu aCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBpbmNsdWRlL2dydWIvZmlsZS5o ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiA0IGZpbGVzIGNoYW5nZWQsIDgwMiBp bnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ3J1Yi1jb3Jl L2NvbW1hbmRzL2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKCmRpZmYgLS1naXQgYS9ncnViLWNv cmUvTWFrZWZpbGUuY29yZS5kZWYgYi9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKaW5kZXgg YjcyZjMyMmIxLi5kOTE2OTRkZTAgMTAwNjQ0Ci0tLSBhL2dydWItY29yZS9NYWtlZmlsZS5jb3Jl LmRlZgorKysgYi9ncnViLWNvcmUvTWFrZWZpbGUuY29yZS5kZWYKQEAgLTk4MCw2ICs5ODAsMjEg QEAgbW9kdWxlID0gewogICBjcHBmbGFncyA9ICckKENQUEZMQUdTX0dDUlkpJzsKIH07CiAKK21v ZHVsZSA9IHsKKyAgbmFtZSA9IGFwcGVuZGVkc2lnOworICBjb21tb24gPSBjb21tYW5kcy9hcHBl bmRlZHNpZy9hcHBlbmRlZHNpZy5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBlbmRlZHNpZy94 NTA5LmM7CisgIGNvbW1vbiA9IGNvbW1hbmRzL2FwcGVuZGVkc2lnL3BrY3M3LmM7CisgIGNvbW1v biA9IGNvbW1hbmRzL2FwcGVuZGVkc2lnL2FzbjF1dGlsLmM7CisgIGNvbW1vbiA9IGNvbW1hbmRz L2FwcGVuZGVkc2lnL2dudXRsc19hc24xX3RhYi5jOworICBjb21tb24gPSBjb21tYW5kcy9hcHBl bmRlZHNpZy9wa2l4X2FzbjFfdGFiLmM7CisgIGVuYWJsZSA9IGVtdTsKKyAgZW5hYmxlID0gcG93 ZXJwY19pZWVlMTI3NTsKKyAgY2ZsYWdzID0gJyQoQ0ZMQUdTX0dDUlkpIC1Xbm8tcmVkdW5kYW50 LWRlY2xzJzsKKyAgY3BwZmxhZ3MgPSAnJChDUFBGTEFHU19HQ1JZKSAtSSQoc3JjZGlyKS9saWIv bGlidGFzbjEtZ3J1Yic7CisgIGRlcGVuZHMgPSBjcnlwdG8sIGdjcnlfcnNhLCBnY3J5X3NoYTI1 NiwgZ2NyeV9zaGE1MTIsIG1waSwgYXNuMTsKK307CisKIG1vZHVsZSA9IHsKICAgbmFtZSA9IGhk cGFybTsKICAgY29tbW9uID0gY29tbWFuZHMvaGRwYXJtLmM7CmRpZmYgLS1naXQgYS9ncnViLWNv cmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBwZW5kZWRzaWcuYyBiL2dydWItY29yZS9jb21tYW5k cy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uYzk1MmIwNGEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3J1Yi1jb3JlL2NvbW1hbmRz L2FwcGVuZGVkc2lnL2FwcGVuZGVkc2lnLmMKQEAgLTAsMCArMSw3ODMgQEAKKy8qCisgKiAgR1JV QiAgLS0gIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlcgorICogIENvcHlyaWdodCAoQykgMjAyMCwg MjAyMSwgMjAyMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAqICBDb3B5cmlnaHQg KEMpIDIwMjAsIDIwMjEsIDIwMjIsIDIwMjUgSUJNIENvcnBvcmF0aW9uCisgKgorICogIEdSVUIg aXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorICoKKyAqICBHUlVCIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiAgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq ICBhbG9uZyB3aXRoIEdSVUIuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGdydWIvdHlwZXMuaD4KKyNpbmNsdWRlIDxncnViL21p c2MuaD4KKyNpbmNsdWRlIDxncnViL21tLmg+CisjaW5jbHVkZSA8Z3J1Yi9lcnIuaD4KKyNpbmNs dWRlIDxncnViL2RsLmg+CisjaW5jbHVkZSA8Z3J1Yi9maWxlLmg+CisjaW5jbHVkZSA8Z3J1Yi9j b21tYW5kLmg+CisjaW5jbHVkZSA8Z3J1Yi9jcnlwdG8uaD4KKyNpbmNsdWRlIDxncnViL2kxOG4u aD4KKyNpbmNsdWRlIDxncnViL2djcnlwdC9nY3J5cHQuaD4KKyNpbmNsdWRlIDxncnViL2tlcm5l bC5oPgorI2luY2x1ZGUgPGdydWIvZXh0Y21kLmg+CisjaW5jbHVkZSA8Z3J1Yi92ZXJpZnkuaD4K KyNpbmNsdWRlIDxsaWJ0YXNuMS5oPgorI2luY2x1ZGUgPGdydWIvZW52Lmg+CisjaW5jbHVkZSA8 Z3J1Yi9sb2NrZG93bi5oPgorCisjaW5jbHVkZSAiYXBwZW5kZWRzaWcuaCIKKworR1JVQl9NT0Rf TElDRU5TRSAoIkdQTHYzKyIpOworCisvKiBQdWJsaWMga2V5IHR5cGUuICovCisjZGVmaW5lIEdS VUJfUEtFWV9JRF9QS0NTNyAyCisKKy8qIEFwcGVuZGVkIHNpZ25hdHVyZSBtYWdpYyBzdHJpbmcu ICovCitzdGF0aWMgY29uc3QgY2hhciBtYWdpY1tdID0gIn5Nb2R1bGUgc2lnbmF0dXJlIGFwcGVu ZGVkflxuIjsKKworLyoKKyAqIFRoaXMgc3RydWN0dXJlIGlzIGV4dHJhY3RlZCBmcm9tIHNjcmlw dHMvc2lnbi1maWxlLmMgaW4gdGhlIGxpbnV4IGtlcm5lbAorICogc291cmNlLiBJdCB3YXMgbGlj ZW5zZWQgYXMgTEdQTHYyLjErLCB3aGljaCBpcyBHUEx2MysgY29tcGF0aWJsZS4KKyAqLworc3Ry dWN0IG1vZHVsZV9zaWduYXR1cmUKK3sKKyAgZ3J1Yl91aW50OF90IGFsZ287ICAgICAgIC8qIFB1 YmxpYy1rZXkgY3J5cHRvIGFsZ29yaXRobSBbMF0uICovCisgIGdydWJfdWludDhfdCBoYXNoOyAg ICAgICAvKiBEaWdlc3QgYWxnb3JpdGhtIFswXS4gKi8KKyAgZ3J1Yl91aW50OF90IGlkX3R5cGU7 ICAgIC8qIEtleSBpZGVudGlmaWVyIHR5cGUgW0dSVUJfUEtFWV9JRF9QS0NTN10uICovCisgIGdy dWJfdWludDhfdCBzaWduZXJfbGVuOyAvKiBMZW5ndGggb2Ygc2lnbmVyJ3MgbmFtZSBbMF0uICov CisgIGdydWJfdWludDhfdCBrZXlfaWRfbGVuOyAvKiBMZW5ndGggb2Yga2V5IGlkZW50aWZpZXIg WzBdLiAqLworICBncnViX3VpbnQ4X3QgX19wYWRbM107CisgIGdydWJfdWludDMyX3Qgc2lnX2xl bjsgICAvKiBMZW5ndGggb2Ygc2lnbmF0dXJlIGRhdGEuICovCit9IEdSVUJfUEFDS0VEOworCisv KiBUaGlzIHJlcHJlc2VudHMgYW4gZW50aXJlLCBwYXJzZWQsIGFwcGVuZGVkIHNpZ25hdHVyZS4g Ki8KK3N0cnVjdCBncnViX2FwcGVuZGVkX3NpZ25hdHVyZQoreworICBncnViX3NpemVfdCBzaWdu YXR1cmVfbGVuOyAgICAgICAgICAgIC8qIExlbmd0aCBvZiBQS0NTIzcgZGF0YSArIG1ldGFkYXRh ICsgbWFnaWMuICovCisgIHN0cnVjdCBtb2R1bGVfc2lnbmF0dXJlIHNpZ19tZXRhZGF0YTsgLyog TW9kdWxlIHNpZ25hdHVyZSBtZXRhZGF0YS4gKi8KKyAgc3RydWN0IHBrY3M3X3NpZ25lZERhdGEg cGtjczc7ICAgICAgICAvKiBQYXJzZWQgUEtDUyM3IGRhdGEuICovCit9OworCisvKiBUaGlzIHJl cHJlc2VudHMgYSB0cnVzdGVkIGNlcnRpZmljYXRlcy4gKi8KK3N0cnVjdCBncnViX2RhdGFiYXNl Cit7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpjZXJ0czsgLyogQ2VydGlmaWNhdGVzLiAq LworICBncnViX3VpbnQzMl90IGNlcnRfZW50cmllczsgICAgIC8qIE51bWJlciBvZiBjZXJ0aWZp Y2F0ZXMuICovCit9OworCisvKiBUaGUgZGIgbGlzdCAqLworc3RydWN0IGdydWJfZGF0YWJhc2Ug ZGIgPSB7LmNlcnRzID0gTlVMTCwgLmNlcnRfZW50cmllcyA9IDB9OworCisvKiBBcHBlbmRlZCBz aWduYXR1cmUgc2l6ZS4gKi8KK3N0YXRpYyBncnViX3NpemVfdCBhcHBlbmRfc2lnX2xlbiA9IDA7 CisKKy8qCisgKiBTaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZsYWcgKGNoZWNrX3NpZ3MpLgorICog Y2hlY2tfc2lnczogZmFsc2UKKyAqICAtIE5vIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24uIFRoaXMg aXMgdGhlIGRlZmF1bHQuCisgKiBjaGVja19zaWdzOiB0cnVlCisgKiAgLSBFbmZvcmNlIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24sIGFuZCBpZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGZhaWxzLAor ICogICAgcG9zdCB0aGUgZXJyb3JzIGFuZCBzdG9wIHRoZSBib290LgorICovCitzdGF0aWMgYm9v bCBjaGVja19zaWdzID0gZmFsc2U7CisKK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9hcHBlbmRlZF9z aWduYXR1cmVzX2NtZCAodm9pZCk7CitzdGF0aWMgdm9pZAordW5yZWdpc3Rlcl9hcHBlbmRlZF9z aWduYXR1cmVzX2NtZCAodm9pZCk7CisKK3N0YXRpYyBjb25zdCBjaGFyICoKK2dydWJfZW52X3Jl YWRfc2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkp LAorICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnZhbCBfX2F0dHJpYnV0ZV9fICgodW51 c2VkKSkpCit7CisgIGlmIChjaGVja19zaWdzID09IHRydWUpCisgICAgcmV0dXJuICJlbmZvcmNl IjsKKworICByZXR1cm4gIm5vIjsKK30KKworc3RhdGljIGNoYXIgKgorZ3J1Yl9lbnZfd3JpdGVf c2VjIChzdHJ1Y3QgZ3J1Yl9lbnZfdmFyICp2YXIgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBj b25zdCBjaGFyICp2YWwpCit7CisgIGNoYXIgKnJldDsKKworICAvKgorICAgKiBEbyBub3QgYWxs b3cgdGhlIHZhbHVlIHRvIGJlIGNoYW5nZWQgaWYgY2hlY2tfc2lncyBpcyBzZXQgdG8gZW5mb3Jj ZSBhbmQKKyAgICogR1JVQiBpcyBsb2NrZWQgZG93bi4KKyAgICovCisgIGlmIChjaGVja19zaWdz ID09IHRydWUgJiYgZ3J1Yl9pc19sb2NrZG93biAoKSA9PSBHUlVCX0xPQ0tET1dOX0VOQUJMRUQp CisgICAgeworICAgICAgcmV0ID0gZ3J1Yl9zdHJkdXAgKCJlbmZvcmNlIik7CisgICAgICBpZiAo cmV0ID09IE5VTEwpCisgICAgICAgIGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlks ICJjb3VsZCBub3QgZHVwbGljYXRlIGEgc3RyaW5nIGVuZm9yY2UiKTsKKworICAgICAgcmV0dXJu IHJldDsKKyAgICB9CisKKyAgaWYgKCgqdmFsID09ICcxJykgfHwgKCp2YWwgPT0gJ2UnKSkKKyAg ICBjaGVja19zaWdzID0gdHJ1ZTsKKyAgZWxzZSBpZiAoKCp2YWwgPT0gJzAnKSB8fCAoKnZhbCA9 PSAnbicpKQorICAgIGNoZWNrX3NpZ3MgPSBmYWxzZTsKKworICByZXQgPSBncnViX3N0cmR1cCAo Z3J1Yl9lbnZfcmVhZF9zZWMgKE5VTEwsIE5VTEwpKTsKKyAgaWYgKHJldCA9PSBOVUxMKQorICAg IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJjb3VsZCBub3QgZHVwbGljYXRl IGEgc3RyaW5nICVzIiwKKyAgICAgICAgICAgICAgICBncnViX2Vudl9yZWFkX3NlYyAoTlVMTCwg TlVMTCkpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBib29sCitpc19jZXJ0X21hdGNo IChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqZGlzdHJ1c3RlZF9jZXJ0LAorICAgICAg ICAgICAgICAgY29uc3Qgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmRiX2NlcnQpCit7CisgIGlm IChncnViX21lbWNtcCAoZGlzdHJ1c3RlZF9jZXJ0LT5zdWJqZWN0LCBkYl9jZXJ0LT5zdWJqZWN0 LCBkYl9jZXJ0LT5zdWJqZWN0X2xlbikgPT0gMAorICAgICAgJiYgZ3J1Yl9tZW1jbXAgKGRpc3Ry dXN0ZWRfY2VydC0+aXNzdWVyLCBkYl9jZXJ0LT5pc3N1ZXIsIGRiX2NlcnQtPmlzc3Vlcl9sZW4p ID09IDAKKyAgICAgICYmIGdydWJfbWVtY21wIChkaXN0cnVzdGVkX2NlcnQtPnNlcmlhbCwgZGJf Y2VydC0+c2VyaWFsLCBkYl9jZXJ0LT5zZXJpYWxfbGVuKSA9PSAwCisgICAgICAmJiBncnViX21l bWNtcCAoZGlzdHJ1c3RlZF9jZXJ0LT5tcGlzWzBdLCBkYl9jZXJ0LT5tcGlzWzBdLCBzaXplb2Yg KGRiX2NlcnQtPm1waXNbMF0pKSA9PSAwCisgICAgICAmJiBncnViX21lbWNtcCAoZGlzdHJ1c3Rl ZF9jZXJ0LT5tcGlzWzFdLCBkYl9jZXJ0LT5tcGlzWzFdLCBzaXplb2YgKGRiX2NlcnQtPm1waXNb MV0pKSA9PSAwKQorICAgIHJldHVybiB0cnVlOworCisgIHJldHVybiBmYWxzZTsKK30KKworc3Rh dGljIGdydWJfZXJyX3QKK2ZpbGVfcmVhZF93aG9sZSAoZ3J1Yl9maWxlX3QgZmlsZSwgZ3J1Yl91 aW50OF90ICoqYnVmLCBncnViX3NpemVfdCAqbGVuKQoreworICBncnViX29mZl90IGZ1bGxfZmls ZV9zaXplOworICBncnViX3NpemVfdCBmaWxlX3NpemUsIHRvdGFsX3JlYWRfc2l6ZSA9IDA7Cisg IGdydWJfc3NpemVfdCByZWFkX3NpemU7CisKKyAgZnVsbF9maWxlX3NpemUgPSBncnViX2ZpbGVf c2l6ZSAoZmlsZSk7CisgIGlmIChmdWxsX2ZpbGVfc2l6ZSA9PSBHUlVCX0ZJTEVfU0laRV9VTktO T1dOKQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisgICAg ICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVhZCBhIGZpbGUgb2YgdW5rbm93biBzaXplIGlu dG8gYSBidWZmZXIiKTsKKworICBpZiAoZnVsbF9maWxlX3NpemUgPiBHUlVCX1NJWkVfTUFYKQor ICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9PVVRfT0ZfUkFOR0UsCisgICAgICAgICAg ICAgICAgICAgICAgICJmaWxlIGlzIHRvbyBsYXJnZSB0byByZWFkOiAlIiBQUkl1R1JVQl9VSU5U NjRfVCAiIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZnVsbF9maWxlX3NpemUpOwor CisgIGZpbGVfc2l6ZSA9IChncnViX3NpemVfdCkgZnVsbF9maWxlX3NpemU7CisgICpidWYgPSBn cnViX21hbGxvYyAoZmlsZV9zaXplKTsKKyAgaWYgKCpidWYgPT0gTlVMTCkKKyAgICByZXR1cm4g Z3J1Yl9lcnJvciAoR1JVQl9FUlJfT1VUX09GX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAg ICAgImNvdWxkIG5vdCBhbGxvY2F0ZSBmaWxlIGRhdGEgYnVmZmVyIHNpemUgJSIgUFJJdUdSVUJf U0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9zaXplKTsKKworICB3aGlsZSAodG90 YWxfcmVhZF9zaXplIDwgZmlsZV9zaXplKQorICAgIHsKKyAgICAgIHJlYWRfc2l6ZSA9IGdydWJf ZmlsZV9yZWFkIChmaWxlLCAqYnVmICsgdG90YWxfcmVhZF9zaXplLCBmaWxlX3NpemUgLSB0b3Rh bF9yZWFkX3NpemUpOworICAgICAgaWYgKHJlYWRfc2l6ZSA8IDApCisgICAgICAgIHsKKyAgICAg ICAgICBncnViX2ZyZWUgKCpidWYpOworICAgICAgICAgIHJldHVybiBncnViX2Vycm5vOworICAg ICAgICB9CisgICAgICBlbHNlIGlmIChyZWFkX3NpemUgPT0gMCkKKyAgICAgICAgeworICAgICAg ICAgIGdydWJfZnJlZSAoKmJ1Zik7CisgICAgICAgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJf RVJSX0lPLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IHJlYWQgZnVs bCBmaWxlIHNpemUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKCUiIFBSSXVHUlVC X1NJWkUgIiksIG9ubHkgJSIgUFJJdUdSVUJfU0laRSAiIGJ5dGVzIHJlYWQiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUsIHRvdGFsX3JlYWRfc2l6ZSk7CisgICAgICAg IH0KKworICAgICAgdG90YWxfcmVhZF9zaXplICs9IHJlYWRfc2l6ZTsKKyAgICB9CisKKyAgKmxl biA9IGZpbGVfc2l6ZTsKKworICByZXR1cm4gR1JVQl9FUlJfTk9ORTsKK30KKworc3RhdGljIGdy dWJfZXJyX3QKK2V4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3Qg KmJ1ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgZ3J1Yl9hcHBlbmRlZF9zaWduYXR1cmUgKnNpZykKK3sKKyAgZ3J1Yl9zaXplX3QgcGtj czdfc2l6ZTsKKyAgZ3J1Yl9zaXplX3QgcmVtYWluaW5nX2xlbjsKKyAgY29uc3QgZ3J1Yl91aW50 OF90ICphcHBzaWdkYXRhID0gYnVmICsgYnVmc2l6ZSAtIGdydWJfc3RybGVuIChtYWdpYyk7CisK KyAgaWYgKGJ1ZnNpemUgPCBncnViX3N0cmxlbiAobWFnaWMpKQorICAgIHJldHVybiBncnViX2Vy cm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0b28gc2hvcnQgZm9yIHNpZ25hdHVy ZSBtYWdpYyIpOworCisgIGlmIChncnViX3N0cm5jbXAgKChjb25zdCBjaGFyICopIGFwcHNpZ2Rh dGEsIG1hZ2ljLCBzaXplb2YgKG1hZ2ljKSAtIDEpKQorICAgIHJldHVybiBncnViX2Vycm9yIChH UlVCX0VSUl9CQURfU0lHTkFUVVJFLCAibWlzc2luZyBvciBpbnZhbGlkIHNpZ25hdHVyZSBtYWdp YyIpOworCisgIHJlbWFpbmluZ19sZW4gPSBidWZzaXplIC0gZ3J1Yl9zdHJsZW4gKG1hZ2ljKTsK KworICBpZiAocmVtYWluaW5nX2xlbiA8IHNpemVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUp KQorICAgIHJldHVybiBncnViX2Vycm9yIChHUlVCX0VSUl9CQURfU0lHTkFUVVJFLCAiZmlsZSB0 b28gc2hvcnQgZm9yIHNpZ25hdHVyZSBtZXRhZGF0YSIpOworCisgIGFwcHNpZ2RhdGEgLT0gc2l6 ZW9mIChzdHJ1Y3QgbW9kdWxlX3NpZ25hdHVyZSk7CisgIC8qIEV4dHJhY3QgdGhlIG1ldGFkYXRh LiAqLworICBncnViX21lbWNweSAoJihzaWctPnNpZ19tZXRhZGF0YSksIGFwcHNpZ2RhdGEsIHNp emVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpKTsKKyAgcmVtYWluaW5nX2xlbiAtPSBzaXpl b2YgKHN0cnVjdCBtb2R1bGVfc2lnbmF0dXJlKTsKKworICBpZiAoc2lnLT5zaWdfbWV0YWRhdGEu aWRfdHlwZSAhPSBHUlVCX1BLRVlfSURfUEtDUzcpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdS VUJfRVJSX0JBRF9TSUdOQVRVUkUsICJ3cm9uZyBzaWduYXR1cmUgdHlwZSIpOworCisgIHBrY3M3 X3NpemUgPSBncnViX2JlX3RvX2NwdTMyIChzaWctPnNpZ19tZXRhZGF0YS5zaWdfbGVuKTsKKwor ICBpZiAocGtjczdfc2l6ZSA+IHJlbWFpbmluZ19sZW4pCisgICAgcmV0dXJuIGdydWJfZXJyb3Ig KEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJmaWxlIHRvbyBzaG9ydCBmb3IgUEtDUyM3IG1lc3Nh Z2UiKTsKKworICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJzaWcgbGVuICUiIFBSSXVH UlVCX1NJWkUgIlxuIiwgcGtjczdfc2l6ZSk7CisKKyAgc2lnLT5zaWduYXR1cmVfbGVuID0gZ3J1 Yl9zdHJsZW4gKG1hZ2ljKSArIHNpemVvZiAoc3RydWN0IG1vZHVsZV9zaWduYXR1cmUpICsgcGtj czdfc2l6ZTsKKyAgLyogUmV3aW5kIHBvaW50ZXIgYW5kIHBhcnNlIHBrY3M3IGRhdGEuICovCisg IGFwcHNpZ2RhdGEgLT0gcGtjczdfc2l6ZTsKKworICByZXR1cm4gcGFyc2VfcGtjczdfc2lnbmVk RGF0YSAoYXBwc2lnZGF0YSwgcGtjczdfc2l6ZSwgJnNpZy0+cGtjczcpOworfQorCisvKgorICog R2l2ZW4gYSBoYXNoIHZhbHVlICdodmFsJywgb2YgaGFzaCBzcGVjaWZpY2F0aW9uICdoYXNoJywg cHJlcGFyZQorICogdGhlIFMtZXhwcmVzc2lvbnMgKHNleHApIGFuZCBwZXJmb3JtIHRoZSBzaWdu YXR1cmUgdmVyaWZpY2F0aW9uLgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAordmVyaWZ5X3NpZ25h dHVyZSAoY29uc3QgZ2NyeV9tcGlfdCAqcGttcGksIGNvbnN0IGdjcnlfbXBpX3QgaG1waSwKKyAg ICAgICAgICAgICAgICAgIGNvbnN0IGdjcnlfbWRfc3BlY190ICpoYXNoLCBjb25zdCBncnViX3Vp bnQ4X3QgKmh2YWwpCit7CisgIGdjcnlfc2V4cF90IGhzZXhwLCBwdWJrZXksIHNpZzsKKyAgZ3J1 Yl9zaXplX3QgZXJyb2Y7CisKKyAgaWYgKF9nY3J5X3NleHBfYnVpbGQoJmhzZXhwLCAmZXJyb2Ys ICIoZGF0YSAoZmxhZ3MgJXMpIChoYXNoICVzICViKSkiLCAicGtjczEiLAorICAgICAgICAgICAg ICAgICAgICAgICBoYXNoLT5uYW1lLCBoYXNoLT5tZGxlbiwgaHZhbCkgIT0gR1BHX0VSUl9OT19F UlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICBpZiAoX2djcnlf c2V4cF9idWlsZCgmcHVia2V5LCAmZXJyb2YsICIocHVibGljLWtleSAoZHNhIChuICVNKSAoZSAl TSkpKSIsCisgICAgICAgICAgICAgICAgICAgICAgIHBrbXBpWzBdLCBwa21waVsxXSkgIT0gR1BH X0VSUl9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJR05BVFVSRTsKKworICBp ZiAoX2djcnlfc2V4cF9idWlsZCgmc2lnLCAmZXJyb2YsICIoc2lnLXZhbCAocnNhIChzICVNKSkp IiwgaG1waSkgIT0gR1BHX0VSUl9OT19FUlJPUikKKyAgICByZXR1cm4gR1JVQl9FUlJfQkFEX1NJ R05BVFVSRTsKKworICBfZ2NyeV9zZXhwX2R1bXAoc2lnKTsKKyAgX2djcnlfc2V4cF9kdW1wKGhz ZXhwKTsKKyAgX2djcnlfc2V4cF9kdW1wKHB1YmtleSk7CisKKyAgaWYgKGdydWJfY3J5cHRvX3Br X3JzYS0+dmVyaWZ5IChzaWcsIGhzZXhwLCBwdWJrZXkpICE9IEdQR19FUlJfTk9fRVJST1IpCisg ICAgcmV0dXJuIEdSVUJfRVJSX0JBRF9TSUdOQVRVUkU7CisKKyAgcmV0dXJuIEdSVUJfRVJSX05P TkU7Cit9CisKK3N0YXRpYyBncnViX2Vycl90CitncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1 cmUgKGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZzaXplKQoreworICBn cnViX2Vycl90IGVycjsKKyAgZ3J1Yl9zaXplX3QgZGF0YXNpemU7CisgIHZvaWQgKmNvbnRleHQ7 CisgIHVuc2lnbmVkIGNoYXIgKmhhc2g7CisgIHN0cnVjdCB4NTA5X2NlcnRpZmljYXRlICpwazsK KyAgc3RydWN0IGdydWJfYXBwZW5kZWRfc2lnbmF0dXJlIHNpZzsKKyAgc3RydWN0IHBrY3M3X3Np Z25lckluZm8gKnNpOworICBncnViX3VpbnQzMl90IGk7CisKKyAgaWYgKCFkYi5jZXJ0X2VudHJp ZXMpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9TSUdOQVRVUkUsICJubyB0 cnVzdGVkIGtleXMgdG8gdmVyaWZ5IGFnYWluc3QiKTsKKworICBlcnIgPSBleHRyYWN0X2FwcGVu ZGVkX3NpZ25hdHVyZSAoYnVmLCBidWZzaXplLCAmc2lnKTsKKyAgaWYgKGVyciAhPSBHUlVCX0VS Ul9OT05FKQorICAgIHJldHVybiBlcnI7CisKKyAgYXBwZW5kX3NpZ19sZW4gPSBzaWcuc2lnbmF0 dXJlX2xlbjsKKyAgZGF0YXNpemUgPSBidWZzaXplIC0gc2lnLnNpZ25hdHVyZV9sZW47CisKKyAg LyogVmVyaWZ5IHNpZ25hdHVyZSB1c2luZyB0cnVzdGVkIGtleXMgZnJvbSBkYiBsaXN0LiAqLwor ICBmb3IgKGkgPSAwOyBpIDwgc2lnLnBrY3M3LnNpZ25lckluZm9fY291bnQ7IGkrKykKKyAgICB7 CisgICAgICAvKgorICAgICAgICogVGhpcyBjb3VsZCBiZSBvcHRpbWlzZWQgaW4gYSBjb3VwbGUg b2Ygd2F5czoKKyAgICAgICAqIC0gd2UgY291bGQgb25seSBjb21wdXRlIGhhc2hlcyBvbmNlIHBl ciBoYXNoIHR5cGUuCisgICAgICAgKiAtIHdlIGNvdWxkIHRyYWNrIHNpZ25lciBpbmZvcm1hdGlv biBhbmQgb25seSB2ZXJpZnkgd2hlcmUgSURzIG1hdGNoLgorICAgICAgICogRm9yIG5vdyB3ZSBk byB0aGUgbmFpdmUgTyh0cnVzdGVkIGtleXMgKiBwa2NzNyBzaWduZXJzKSBhcHByb2FjaC4KKyAg ICAgICAqLworICAgICAgc2kgPSAmc2lnLnBrY3M3LnNpZ25lckluZm9zW2ldOworICAgICAgY29u dGV4dCA9IGdydWJfemFsbG9jIChzaS0+aGFzaC0+Y29udGV4dHNpemUpOworICAgICAgaWYgKGNv bnRleHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGdydWJfZXJybm87CisKKyAgICAgIHNpLT5o YXNoLT5pbml0IChjb250ZXh0LCAwKTsKKyAgICAgIHNpLT5oYXNoLT53cml0ZSAoY29udGV4dCwg YnVmLCBkYXRhc2l6ZSk7CisgICAgICBzaS0+aGFzaC0+ZmluYWwgKGNvbnRleHQpOworICAgICAg aGFzaCA9IHNpLT5oYXNoLT5yZWFkIChjb250ZXh0KTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgi YXBwZW5kZWRzaWciLCAiZGF0YSBzaXplICUiIFBSSXVHUlVCX1NJWkUgIiwgc2lnbmVyICVkIGhh c2ggJTAyeCUwMnglMDJ4JTAyeC4uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgZGF0YXNpemUs IGksIGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOworCisgICAgICBmb3IgKHBr ID0gZGIuY2VydHM7IHBrICE9IE5VTEw7IHBrID0gcGstPm5leHQpCisgICAgICAgIHsKKyAgICAg ICAgICBlcnIgPSB2ZXJpZnlfc2lnbmF0dXJlIChway0+bXBpcywgc2ktPnNpZ19tcGksIHNpLT5o YXNoLCBoYXNoKTsKKyAgICAgICAgICBpZiAoZXJyID09IEdSVUJfRVJSX05PTkUpCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlm eSBzaWduZXIgJWQgd2l0aCBrZXkgJyVzJyBzdWNjZWVkZWRcbiIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaSwgcGstPnN1YmplY3QpOworICAgICAgICAgICAgICBicmVhazsKKyAgICAg ICAgICAgIH0KKworICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInZlcmlm eSBzaWduZXIgJWQgd2l0aCBrZXkgJyVzJyBmYWlsZWRcbiIsCisgICAgICAgICAgICAgICAgICAg ICAgICBpLCBway0+c3ViamVjdCk7CisgICAgICAgIH0KKworICAgICAgZ3J1Yl9mcmVlIChjb250 ZXh0KTsKKyAgICAgIGlmIChlcnIgPT0gR1JVQl9FUlJfTk9ORSkKKyAgICAgICAgYnJlYWs7Cisg ICAgfQorCisgIHBrY3M3X3NpZ25lZERhdGFfcmVsZWFzZSAoJnNpZy5wa2NzNyk7CisKKyAgaWYg KGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHJldHVybiBncnViX2Vycm9yIChlcnIsICJmYWls ZWQgdG8gdmVyaWZ5IHNpZ25hdHVyZSBhZ2FpbnN0IGEgdHJ1c3RlZCBrZXkiKTsKKworICByZXR1 cm4gZXJyOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorcmVhZF9jZXJ0X2Zyb21fZmlsZSAoZ3J1 Yl9maWxlX3QgY2VydF9maWxlLCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqKmNlcnQpCit7Cisg IGdydWJfZXJyX3QgZXJyOworICBncnViX3VpbnQ4X3QgKmJ1ZiA9IE5VTEw7CisgIGdydWJfc2l6 ZV90IGJ1Zl9zaXplID0gMDsKKworICAqY2VydCA9IGdydWJfemFsbG9jIChzaXplb2YgKHN0cnVj dCB4NTA5X2NlcnRpZmljYXRlKSk7CisgIGlmICgqY2VydCA9PSBOVUxMKQorICAgICAgcmV0dXJu IGdydWJfZXJyb3IgKEdSVUJfRVJSX09VVF9PRl9NRU1PUlksICJjb3VsZCBub3QgYWxsb2NhdGUg bWVtb3J5IGZvciBjZXJ0aWZpY2F0ZSIpOworCisgIGVyciA9IGZpbGVfcmVhZF93aG9sZSAoY2Vy dF9maWxlLCAmYnVmLCAmYnVmX3NpemUpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisg ICAgcmV0dXJuIGVycjsKKworICAvKgorICAgKiBJZiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlz IGVuYWJsZWQsIG9idGFpbiB0aGUgYWN0dWFsIGNlcnRpZmljYXRlIHNpemUgYnkKKyAgICogc3Vi dHJhY3RpbmcgdGhlIGFwcGVuZGVkIHNpZ25hdHVyZSBzaXplIGZyb20gdGhlIGNlcnRpZmljYXRl IHNpemUgYmVjYXVzZQorICAgKiB0aGUgY2VydGlmaWNhdGUgaGFzIGFuIGFwcGVuZGVkIHNpZ25h dHVyZSwgYW5kIHRoaXMgYWN0dWFsIGNlcnRpZmljYXRlIHNpemUgaXMKKyAgICogdXNlZCB0byBn ZXQgdGhlIFguNTA5IGNlcnRpZmljYXRlLgorICAgKi8KKyAgaWYgKGNoZWNrX3NpZ3MgPT0gdHJ1 ZSkKKyAgICBidWZfc2l6ZSAtPSBhcHBlbmRfc2lnX2xlbjsKKworICBlcnIgPSBwYXJzZV94NTA5 X2NlcnRpZmljYXRlIChidWYsIGJ1Zl9zaXplLCAqY2VydCk7CisgIGdydWJfZnJlZSAoYnVmKTsK KworICByZXR1cm4gZXJyOworfQorCitzdGF0aWMgYm9vbAoraXNfY2VydF9wcmVzZW50X2luX2Ri IChjb25zdCBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydF9pbikKK3sKKyAgc3RydWN0IHg1 MDlfY2VydGlmaWNhdGUgKmNlcnQ7CisKKyAgZm9yIChjZXJ0ID0gZGIuY2VydHM7IGNlcnQgIT0g TlVMTDsgY2VydCA9IGNlcnQtPm5leHQpCisgICAgaWYgKGlzX2NlcnRfbWF0Y2ggKGNlcnQsIGNl cnRfaW4pID09IHRydWUpCisgICAgICByZXR1cm4gdHJ1ZTsKKworICByZXR1cm4gZmFsc2U7Cit9 CisKK3N0YXRpYyB2b2lkCityZW1vdmVfY2VydF9mcm9tX2RiIChjb25zdCBzdHJ1Y3QgeDUwOV9j ZXJ0aWZpY2F0ZSAqY2VydCkKK3sKKyAgZ3J1Yl91aW50MzJfdCBpID0gMTsKKyAgc3RydWN0IHg1 MDlfY2VydGlmaWNhdGUgKmN1cnJfY2VydCwgKnByZXZfY2VydDsKKworICBmb3IgKGN1cnJfY2Vy dCA9IHByZXZfY2VydCA9IGRiLmNlcnRzOyBjdXJyX2NlcnQgIT0gTlVMTDsgY3Vycl9jZXJ0ID0g Y3Vycl9jZXJ0LT5uZXh0LCBpKyspCisgICAgeworICAgICAgaWYgKGlzX2NlcnRfbWF0Y2ggKGN1 cnJfY2VydCwgY2VydCkgPT0gdHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgIGlmIChpID09IDEp IC8qIE1hdGNoIHdpdGggZmlyc3QgY2VydGlmaWNhdGUgaW4gdGhlIGRiIGxpc3QuICovCisgICAg ICAgICAgICBkYi5jZXJ0cyA9IGN1cnJfY2VydC0+bmV4dDsKKyAgICAgICAgICBlbHNlCisgICAg ICAgICAgICBwcmV2X2NlcnQtPm5leHQgPSBjdXJyX2NlcnQtPm5leHQ7CisKKyAgICAgICAgICBn cnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAicmVt b3ZlZCBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHdpdGggQ046ICVzIGZyb20gdGhlIGRiIGxpc3Rc biIsIGN1cnJfY2VydC0+c3ViamVjdCk7CisgICAgICAgICAgY3Vycl9jZXJ0LT5uZXh0ID0gTlVM TDsKKyAgICAgICAgICBjZXJ0aWZpY2F0ZV9yZWxlYXNlIChjdXJyX2NlcnQpOworICAgICAgICAg IGdydWJfZnJlZSAoY3Vycl9jZXJ0KTsKKyAgICAgICAgICBicmVhazsKKwl9CisgICAgICBlbHNl CisgICAgICAgIHByZXZfY2VydCA9IGN1cnJfY2VydDsKKyAgICB9Cit9CisKK3N0YXRpYyBncnVi X2Vycl90CitncnViX2NtZF92ZXJpZnlfc2lnbmF0dXJlIChncnViX2NvbW1hbmRfdCBjbWQgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCit7CisgIGdydWJf ZmlsZV90IHNpZ25lZF9maWxlOworICBncnViX2Vycl90IGVycjsKKyAgZ3J1Yl91aW50OF90ICpz aWduZWRfZGF0YSA9IE5VTEw7CisgIGdydWJfc2l6ZV90IHNpZ25lZF9kYXRhX3NpemUgPSAwOwor CisgIGlmIChhcmdjICE9IDEpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9B UkdVTUVOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgImEgc2lnbmVkIGZpbGUgaXMgZXhwZWN0 ZWRcbkV4YW1wbGU6XG5cdGFwcGVuZF92ZXJpZnkgPFNJR05FRCBGSUxFPlxuIik7CisKKyAgaWYg KCphcmdzID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxF TkFNRSwgIm1pc3Npbmcgc2lnbmVkIGZpbGUiKTsKKworICBncnViX2RwcmludGYgKCJhcHBlbmRl ZHNpZyIsICJ2ZXJpZnlpbmcgJXNcbiIsIGFyZ3NbMF0pOworCisgIHNpZ25lZF9maWxlID0gZ3J1 Yl9maWxlX29wZW4gKGFyZ3NbMF0sIEdSVUJfRklMRV9UWVBFX1ZFUklGWV9TSUdOQVRVUkUpOwor ICBpZiAoc2lnbmVkX2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfRklMRV9OT1RfRk9VTkQsICJjb3VsZCBub3Qgb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7CisK KyAgZXJyID0gZmlsZV9yZWFkX3dob2xlIChzaWduZWRfZmlsZSwgJnNpZ25lZF9kYXRhLCAmc2ln bmVkX2RhdGFfc2l6ZSk7CisgIGlmIChlcnIgPT0gR1JVQl9FUlJfTk9ORSkKKyAgICBlcnIgPSBn cnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUgKHNpZ25lZF9kYXRhLCBzaWduZWRfZGF0YV9z aXplKTsKKworICBncnViX2ZpbGVfY2xvc2UgKHNpZ25lZF9maWxlKTsKKyAgZ3J1Yl9mcmVlIChz aWduZWRfZGF0YSk7CisKKyAgcmV0dXJuIGVycjsKK30KKworLyoKKyAqIEFkZCB0aGUgdHJ1c3Rl ZCBjZXJ0aWZpY2F0ZSB0byB0aGUgZGIgbGlzdCBpZiBpdCBpcyBub3QgYWxyZWFkeSBwcmVzZW50 LgorICogTm90ZTotIFdoZW4gc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyBlbmFibGVkLCB0aGlz IGNvbW1hbmQgb25seSBhY2NlcHRzIHRoZQorICogdHJ1c3RlZCBjZXJ0aWZpY2F0ZSB0aGF0IGlz IHNpZ25lZCB3aXRoIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAqIFRoZSBzaWduYXR1cmUgaXMg dmVyaWZpZWQgYnkgdGhlIGFwcGVuZGVkc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0aW9uIHN1Y2Nl ZWRzLAorICogdGhlIGNlcnRpZmljYXRlIGlzIGFkZGVkIHRvIHRoZSBkYiBsaXN0LiBPdGhlcndp c2UsIGFuIGVycm9yIGlzIHBvc3RlZCBhbmQKKyAqIHRoZSBjZXJ0aWZpY2F0ZSBpcyBub3QgYWRk ZWQuCisgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQsIGl0IGFjY2Vw dHMgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgd2l0aG91dAorICogYW4gYXBwZW5kZWQgc2lnbmF0 dXJlIGFuZCBhZGQgaXQgdG8gdGhlIGRiIGxpc3QuCisgKgorICogQWxzbywgbm90ZSB0aGF0IHRo ZSBhZGRpbmcgb2YgdGhlIHRydXN0ZWQgY2VydGlmaWNhdGUgdXNpbmcgdGhpcyBjb21tYW5kIGRv ZXMKKyAqIG5vdCBwZXJzaXN0IGFjcm9zcyByZWJvb3RzLgorICovCitzdGF0aWMgZ3J1Yl9lcnJf dAorZ3J1Yl9jbWRfZGJfY2VydCAoZ3J1Yl9jb21tYW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSwgaW50IGFyZ2MsIGNoYXIgKiphcmdzKQoreworICBncnViX2Vycl90IGVycjsKKyAg Z3J1Yl9maWxlX3QgY2VydF9maWxlOworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydCA9 IE5VTEw7CisKKyAgaWYgKGFyZ2MgIT0gMSkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX0FSR1VNRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAiYSB0cnVzdGVkIFguNTA5 IGNlcnRpZmljYXRlIGZpbGUgaXMgZXhwZWN0ZWQgaW4gREVSIGZvcm1hdFxuIgorICAgICAgICAg ICAgICAgICAgICAgICAiRXhhbXBsZTpcblx0YXBwZW5kX2FkZF9kYl9jZXJ0IDxYNTA5X0NFUlRJ RklDQVRFPlxuIik7CisKKyAgaWYgKCphcmdzID09IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJy b3IgKEdSVUJfRVJSX0JBRF9GSUxFTkFNRSwgIm1pc3NpbmcgdHJ1c3RlZCBYLjUwOSBjZXJ0aWZp Y2F0ZSBmaWxlIik7CisKKyAgY2VydF9maWxlID0gZ3J1Yl9maWxlX29wZW4gKGFyZ3NbMF0sCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUlVCX0ZJTEVfVFlQRV9DRVJUSUZJQ0FURV9U UlVTVCB8IEdSVUJfRklMRV9UWVBFX05PX0RFQ09NUFJFU1MpOworICBpZiAoY2VydF9maWxlID09 IE5VTEwpCisgICAgcmV0dXJuIGdydWJfZXJyb3IgKEdSVUJfRVJSX0JBRF9GSUxFX1RZUEUsICJj b3VsZCBub3Qgb3BlbiAlcyBmaWxlIiwgYXJnc1swXSk7CisKKyAgZXJyID0gcmVhZF9jZXJ0X2Zy b21fZmlsZSAoY2VydF9maWxlLCAmY2VydCk7CisgIGdydWJfZmlsZV9jbG9zZSAoY2VydF9maWxl KTsKKyAgaWYgKGVyciAhPSBHUlVCX0VSUl9OT05FKQorICAgIHsKKyAgICAgIGdydWJfZnJlZSAo Y2VydCk7CisgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICBpZiAoaXNfY2VydF9wcmVzZW50 X2luX2RiIChjZXJ0KSA9PSB0cnVlKQorICAgIHsKKyAgICAgIGNlcnRpZmljYXRlX3JlbGVhc2Ug KGNlcnQpOworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAgIHJldHVybiBncnViX2Vycm9y IChHUlVCX0VSUl9FWElTVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBh ZGQgdGhlIGNlcnRpZmljYXRlLCBhcyBpdCBpcyBwcmVzZW50IGluIHRoZSBkYiBsaXN0Iik7Cisg ICAgfQorCisgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgImFkZGVkIGNlcnRpZmljYXRl IHdpdGggQ046ICVzXG4iLCBjZXJ0LT5zdWJqZWN0KTsKKworICBjZXJ0LT5uZXh0ID0gZGIuY2Vy dHM7CisgIGRiLmNlcnRzID0gY2VydDsKKyAgZGIuY2VydF9lbnRyaWVzKys7CisKKyAgcmV0dXJu IEdSVUJfRVJSX05PTkU7Cit9CisKKy8qCisgKiBSZW1vdmUgdGhlIGRpc3RydXN0ZWQgY2VydGlm aWNhdGUgZnJvbSB0aGUgZGIgbGlzdCBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQuCisgKiBOb3Rl Oi0gV2hlbiBzaWduYXR1cmUgdmVyaWZpY2F0aW9uIGlzIGVuYWJsZWQsIHRoaXMgY29tbWFuZCBv bmx5IGFjY2VwdHMgdGhlCisgKiBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHRoYXQgaXMgc2lnbmVk IHdpdGggYW4gYXBwZW5kZWQgc2lnbmF0dXJlLgorICogVGhlIHNpZ25hdHVyZSBpcyB2ZXJpZmll ZCBieSB0aGUgYXBwZW5kZWQgc2lnIG1vZHVsZS4gSWYgdmVyaWZpY2F0aW9uIHN1Y2NlZWRzLAor ICogdGhlIGNlcnRpZmljYXRlIGlzIHJlbW92ZWQgZnJvbSB0aGUgZGIgbGlzdC4gT3RoZXJ3aXNl LCBhbiBlcnJvciBpcyBwb3N0ZWQgYW5kCisgKiB0aGUgY2VydGlmaWNhdGUgaXMgbm90IHJlbW92 ZWQuCisgKiBXaGVuIHNpZ25hdHVyZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQsIGl0IGFjY2Vw dHMgdGhlIGRpc3RydXN0ZWQgY2VydGlmaWNhdGUKKyAqIHdpdGhvdXQgYW4gYXBwZW5kZWQgc2ln bmF0dXJlIGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIGRiIGxpc3QuCisgKgorICogQWxzbywgbm90 ZSB0aGF0IHRoZSByZW1vdmFsIG9mIHRoZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIHVzaW5nIHRo aXMgY29tbWFuZAorICogZG9lcyBub3QgcGVyc2lzdCBhY3Jvc3MgcmVib290cy4KKyAqLworc3Rh dGljIGdydWJfZXJyX3QKK2dydWJfY21kX2RieF9jZXJ0IChncnViX2NvbW1hbmRfdCBjbWQgX19h dHRyaWJ1dGVfXyAoKHVudXNlZCkpLCBpbnQgYXJnYywgY2hhciAqKmFyZ3MpCit7CisgIGdydWJf ZXJyX3QgZXJyOworICBncnViX2ZpbGVfdCBjZXJ0X2ZpbGU7CisgIHN0cnVjdCB4NTA5X2NlcnRp ZmljYXRlICpjZXJ0ID0gTlVMTDsKKworICBpZiAoYXJnYyAhPSAxKQorICAgIHJldHVybiBncnVi X2Vycm9yIChHUlVCX0VSUl9CQURfQVJHVU1FTlQsCisgICAgICAgICAgICAgICAgICAgICAgICJh IGRpc3RydXN0ZWQgWC41MDkgY2VydGlmaWNhdGUgZmlsZSBpcyBleHBlY3RlZCBpbiBERVIgZm9y bWF0XG4iCisgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOlxuXHRhcHBlbmRfcm1fZGJ4 X2NlcnQgPFg1MDlfQ0VSVElGSUNBVEU+XG4iKTsKKworICBpZiAoKmFyZ3MgPT0gTlVMTCkKKyAg ICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9FUlJfQkFEX0ZJTEVOQU1FLCAibWlzc2luZyBkaXN0 cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlIGZpbGUiKTsKKworICBjZXJ0X2ZpbGUgPSBncnViX2Zp bGVfb3BlbiAoYXJnc1swXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdSVUJfRklM RV9UWVBFX0NFUlRJRklDQVRFX1RSVVNUIHwgR1JVQl9GSUxFX1RZUEVfTk9fREVDT01QUkVTUyk7 CisgIGlmIChjZXJ0X2ZpbGUgPT0gTlVMTCkKKyAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JVQl9F UlJfQkFEX0ZJTEVfVFlQRSwgImNvdWxkIG5vdCBvcGVuICVzIGZpbGUiLCBhcmdzWzBdKTsKKwor ICBlcnIgPSByZWFkX2NlcnRfZnJvbV9maWxlIChjZXJ0X2ZpbGUsICZjZXJ0KTsKKyAgZ3J1Yl9m aWxlX2Nsb3NlIChjZXJ0X2ZpbGUpOworICBpZiAoZXJyICE9IEdSVUJfRVJSX05PTkUpCisgICAg eworICAgICAgZ3J1Yl9mcmVlIChjZXJ0KTsKKyAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisg IC8qIFJlbW92ZSBkaXN0cnVzdGVkIGNlcnRpZmljYXRlIGZyb20gdGhlIGRiIGxpc3QgaWYgcHJl c2VudC4gKi8KKyAgcmVtb3ZlX2NlcnRfZnJvbV9kYiAoY2VydCk7CisgIGNlcnRpZmljYXRlX3Jl bGVhc2UgKGNlcnQpOworICBncnViX2ZyZWUgKGNlcnQpOworCisgIHJldHVybiBHUlVCX0VSUl9O T05FOworfQorCitzdGF0aWMgZ3J1Yl9lcnJfdAorZ3J1Yl9jbWRfbGlzdF9kYiAoZ3J1Yl9jb21t YW5kX3QgY21kIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSwgaW50IGFyZ2MgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpLAorICAgICAgICAgICAgICAgICAgY2hhciAqKmFyZ3MgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0ZSAqY2VydDsKKyAgZ3J1 Yl91aW50MzJfdCBpLCBjZXJ0X251bSA9IDE7CisKKyAgZm9yIChjZXJ0ID0gZGIuY2VydHM7IGNl cnQgIT0gTlVMTDsgY2VydCA9IGNlcnQtPm5leHQsIGNlcnRfbnVtKyspCisgICAgeworICAgICAg Z3J1Yl9wcmludGYgKCJDZXJ0aWZpY2F0ZSAldTpcbiIsIGNlcnRfbnVtKTsKKyAgICAgIGdydWJf cHJpbnRmICgiXHRTZXJpYWw6ICIpOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgY2VydC0+c2Vy aWFsX2xlbiAtIDE7IGkrKykKKyAgICAgICAgZ3J1Yl9wcmludGYgKCIlMDJ4OiIsIGNlcnQtPnNl cmlhbFtpXSk7CisKKyAgICAgIGdydWJfcHJpbnRmICgiJTAyeFxuIiwgY2VydC0+c2VyaWFsW2Nl cnQtPnNlcmlhbF9sZW4gLSAxXSk7CisgICAgICBncnViX3ByaW50ZiAoIlx0aXNzdWVyOiAlc1xu IiwgY2VydC0+aXNzdWVyKTsKKyAgICAgIGdydWJfcHJpbnRmICgiXHRDTjogJXNcblxuIiwgY2Vy dC0+c3ViamVjdCk7CisgICAgfQorCisgIHJldHVybiBHUlVCX0VSUl9OT05FOworfQorCitzdGF0 aWMgZ3J1Yl9lcnJfdAorYXBwZW5kZWRzaWdfaW5pdCAoZ3J1Yl9maWxlX3QgaW8gX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpLCBlbnVtIGdydWJfZmlsZV90eXBlIHR5cGUsCisgICAgICAgICAgICAg ICAgICB2b2lkICoqY29udGV4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIGVudW0gZ3J1Yl92 ZXJpZnlfZmxhZ3MgKmZsYWdzKQoreworICBpZiAoY2hlY2tfc2lncyA9PSBmYWxzZSkKKyAgICB7 CisgICAgICAqZmxhZ3MgPSBHUlVCX1ZFUklGWV9GTEFHU19TS0lQX1ZFUklGSUNBVElPTjsKKyAg ICAgIHJldHVybiBHUlVCX0VSUl9OT05FOworICAgIH0KKworICBzd2l0Y2ggKHR5cGUgJiBHUlVC X0ZJTEVfVFlQRV9NQVNLKQorICAgIHsKKyAgICAgIGNhc2UgR1JVQl9GSUxFX1RZUEVfQ0VSVElG SUNBVEVfVFJVU1Q6CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgaXMgYSBjZXJ0aWZpY2F0 ZSB0byBhZGQgdG8gdHJ1c3RlZCBrZXljaGFpbi4KKyAgICAgICAgICoKKyAgICAgICAgICogVGhp cyBuZWVkcyB0byBiZSB2ZXJpZmllZCBvciBibG9ja2VkLiBJZGVhbGx5IHdlJ2Qgd3JpdGUgYW4g eDUwOQorICAgICAgICAgKiB2ZXJpZmllciwgYnV0IHdlIGxhY2sgdGhlIGh1YnJpcyByZXF1aXJl ZCB0byB0YWtlIHRoaXMgb24uIEluc3RlYWQsCisgICAgICAgICAqIHJlcXVpcmUgdGhhdCBpdCBo YXZlIGFuIGFwcGVuZGVkIHNpZ25hdHVyZS4KKyAgICAgICAgICovCisgICAgICBjYXNlIEdSVUJf RklMRV9UWVBFX0xJTlVYX0tFUk5FTDoKKyAgICAgIGNhc2UgR1JVQl9GSUxFX1RZUEVfR1JVQl9N T0RVTEU6CisgICAgICAgIC8qCisgICAgICAgICAqIEFwcGVuZGVkIHNpZ25hdHVyZXMgYXJlIG9u bHkgZGVmaW5lZCBmb3IgRUxGIGJpbmFyaWVzLgorICAgICAgICAgKiBPdXQgb2YgYW4gYWJ1bmRh bmNlIG9mIGNhdXRpb24sIHdlIG9ubHkgdmVyaWZ5IExpbnV4IGtlcm5lbHMKKyAgICAgICAgICog YW5kIEdSVUIgbW9kdWxlcyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgKi8KKyAgICAgICAgKmZs YWdzID0gR1JVQl9WRVJJRllfRkxBR1NfU0lOR0xFX0NIVU5LOworICAgICAgICByZXR1cm4gR1JV Ql9FUlJfTk9ORTsKKworICAgICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9BQ1BJX1RBQkxFOgorICAg ICAgY2FzZSBHUlVCX0ZJTEVfVFlQRV9ERVZJQ0VfVFJFRV9JTUFHRToKKyAgICAgICAgLyoKKyAg ICAgICAgICogSXQgaXMgcG9zc2libGUgdG8gdXNlIGFwcGVuZGVkIHNpZ25hdHVyZSB2ZXJpZmlj YXRpb24gd2l0aG91dAorICAgICAgICAgKiBsb2NrZG93biAtIGxpa2UgdGhlIFBHUCB2ZXJpZmll ci4gV2hlbiBjb21iaW5lZCB3aXRoIGFuIGVtYmVkZGVkCisgICAgICAgICAqIGNvbmZpZyBmaWxl IGluIGEgc2lnbmVkIEdSVUIgYmluYXJ5LCB0aGlzIGNvdWxkIHN0aWxsIGJlIGEgbWVhbmluZ2Z1 bAorICAgICAgICAgKiBzZWN1cmUtYm9vdCBjaGFpbiAtIHNvIGxvbmcgYXMgaXQgaXNuJ3Qgc3Vi dmVydGVkIGJ5IHNvbWV0aGluZyBsaWtlIGEKKyAgICAgICAgICogcm91Z2UgQUNQSSB0YWJsZSBv ciBEVCBpbWFnZS4gRGVmZXIgdGhlbSBleHBsaWNpdGx5LgorICAgICAgICAgKi8KKyAgICAgICAg KmZsYWdzID0gR1JVQl9WRVJJRllfRkxBR1NfREVGRVJfQVVUSDsKKyAgICAgICAgcmV0dXJuIEdS VUJfRVJSX05PTkU7CisKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgICpmbGFncyA9IEdSVUJfVkVS SUZZX0ZMQUdTX1NLSVBfVkVSSUZJQ0FUSU9OOworICAgICAgICByZXR1cm4gR1JVQl9FUlJfTk9O RTsKKyAgICB9Cit9CisKK3N0YXRpYyBncnViX2Vycl90CithcHBlbmRlZHNpZ193cml0ZSAodm9p ZCAqY3R4dCBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSksIHZvaWQgKmJ1ZiwgZ3J1Yl9zaXplX3Qg c2l6ZSkKK3sKKyAgcmV0dXJuIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoYnVmLCBz aXplKTsKK30KKworc3RydWN0IGdydWJfZmlsZV92ZXJpZmllciBncnViX2FwcGVuZGVkc2lnX3Zl cmlmaWVyID0geworICAubmFtZSA9ICJhcHBlbmRlZHNpZyIsCisgIC5pbml0ID0gYXBwZW5kZWRz aWdfaW5pdCwKKyAgLndyaXRlID0gYXBwZW5kZWRzaWdfd3JpdGUsCit9OworCitzdGF0aWMgZ3J1 Yl9zc2l6ZV90Citwc2V1ZG9fcmVhZCAoc3RydWN0IGdydWJfZmlsZSAqZmlsZSwgY2hhciAqYnVm LCBncnViX3NpemVfdCBsZW4pCit7CisgIGdydWJfbWVtY3B5IChidWYsIChncnViX3VpbnQ4X3Qg KikgZmlsZS0+ZGF0YSArIGZpbGUtPm9mZnNldCwgbGVuKTsKKyAgcmV0dXJuIGxlbjsKK30KKwor LyogRmlsZXN5c3RlbSBkZXNjcmlwdG9yLiAqLworc3RhdGljIHN0cnVjdCBncnViX2ZzIHBzZXVk b19mcyA9IHsKKyAgLm5hbWUgPSAicHNldWRvIiwKKyAgLmZzX3JlYWQgPSBwc2V1ZG9fcmVhZAor fTsKKworc3RhdGljIGdydWJfY29tbWFuZF90IGNtZF92ZXJpZnksIGNtZF9saXN0X2RiLCBjbWRf ZGJ4X2NlcnQsIGNtZF9kYl9jZXJ0OworCisvKiBGcmVlIGRiIGxpc3QgbWVtb3J5ICovCitzdGF0 aWMgdm9pZAorZnJlZV9kYl9saXN0ICh2b2lkKQoreworICBzdHJ1Y3QgeDUwOV9jZXJ0aWZpY2F0 ZSAqY2VydDsKKworICB3aGlsZSAoZGIuY2VydHMgIT0gTlVMTCkKKyAgICB7CisgICAgICBjZXJ0 ID0gZGIuY2VydHM7CisgICAgICBkYi5jZXJ0cyA9IGRiLmNlcnRzLT5uZXh0OworICAgICAgY2Vy dGlmaWNhdGVfcmVsZWFzZSAoY2VydCk7CisgICAgICBncnViX2ZyZWUgKGNlcnQpOworICAgIH0K KworICBncnViX21lbXNldCAoJmRiLCAwLCBzaXplb2YgKHN0cnVjdCBncnViX2RhdGFiYXNlKSk7 Cit9CisKKy8qCisgKiBFeHRyYWN0IHRoZSBYLjUwOSBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgRUxG IE5vdGUgaGVhZGVyLAorICogcGFyc2UgaXQsIGFuZCBhZGQgaXQgdG8gdGhlIGRiIGxpc3QuCisg Ki8KK3N0YXRpYyB2b2lkCitidWlsZF9zdGF0aWNfZGJfbGlzdCAodm9pZCkKK3sKKyAgZ3J1Yl9l cnJfdCBlcnI7CisgIHN0cnVjdCBncnViX21vZHVsZV9oZWFkZXIgKmhlYWRlcjsKKyAgc3RydWN0 IGdydWJfZmlsZSBwc2V1ZG9fZmlsZTsKKyAgc3RydWN0IHg1MDlfY2VydGlmaWNhdGUgKmNlcnQ7 CisKKyAgRk9SX01PRFVMRVMgKGhlYWRlcikKKyAgICB7CisgICAgICAvKiBOb3QgYW4gWC41MDkg Y2VydGlmaWNhdGUsIHNraXAuICovCisgICAgICBpZiAoaGVhZGVyLT50eXBlICE9IE9CSl9UWVBF X1g1MDlfUFVCS0VZKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgZ3J1Yl9tZW1zZXQgKCZw c2V1ZG9fZmlsZSwgMCwgc2l6ZW9mIChwc2V1ZG9fZmlsZSkpOworICAgICAgcHNldWRvX2ZpbGUu ZnMgPSAmcHNldWRvX2ZzOworICAgICAgcHNldWRvX2ZpbGUuc2l6ZSA9IGhlYWRlci0+c2l6ZSAt IHNpemVvZiAoc3RydWN0IGdydWJfbW9kdWxlX2hlYWRlcik7CisgICAgICBwc2V1ZG9fZmlsZS5k YXRhID0gKGNoYXIgKikgaGVhZGVyICsgc2l6ZW9mIChzdHJ1Y3QgZ3J1Yl9tb2R1bGVfaGVhZGVy KTsKKworICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAiZm91bmQgYW4gWC41MDkg Y2VydGlmaWNhdGUsIHNpemU9JSIgUFJJdUdSVUJfVUlOVDY0X1QgIlxuIiwKKyAgICAgICAgICAg ICAgICAgICAgcHNldWRvX2ZpbGUuc2l6ZSk7CisKKyAgICAgIGVyciA9IHJlYWRfY2VydF9mcm9t X2ZpbGUgKCZwc2V1ZG9fZmlsZSwgJmNlcnQpOworICAgICAgaWYgKGVyciA9PSBHUlVCX0VSUl9P VVRfT0ZfTUVNT1JZKQorICAgICAgICByZXR1cm47CisgICAgICBlbHNlIGlmIChlcnIgIT0gR1JV Ql9FUlJfTk9ORSkKKyAgICAgICAgeworICAgICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVk c2lnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5nOiBjYW5ub3QgYWRkIGEgY2Vy dGlmaWNhdGUgJXUgdG8gdGhlIGRiIGxpc3RcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBk Yi5jZXJ0X2VudHJpZXMgKyAxKTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisg ICAgICBncnViX2RwcmludGYgKCJhcHBlbmRlZHNpZyIsICJhZGQgYSBjZXJ0aWZpY2F0ZSBDTj0n JXMnIHRvIGRiXG4iLCBjZXJ0LT5zdWJqZWN0KTsKKworICAgICAgY2VydC0+bmV4dCA9IGRiLmNl cnRzOworICAgICAgZGIuY2VydHMgPSBjZXJ0OworICAgICAgZGIuY2VydF9lbnRyaWVzKys7Cisg ICAgfQorfQorCisvKiBJdCByZWdpc3RlcnMgdGhlIGFwcGVuZGVkIHNpZ25hdHVyZXMgR1JVQiBj b21tYW5kcy4gKi8KK3N0YXRpYyB2b2lkCityZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1cmVzX2Nt ZCAodm9pZCkKK3sKKyAgY21kX3ZlcmlmeSA9IGdydWJfcmVnaXN0ZXJfY29tbWFuZCAoImFwcGVu ZF92ZXJpZnkiLCBncnViX2NtZF92ZXJpZnlfc2lnbmF0dXJlLCBOXygiU0lHTkVEX0ZJTEUiKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlZlcmlmeSBTSUdORURf RklMRSBhZ2FpbnN0IHRoZSB0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRlcyBpbiB0aGUgZGIgbGlz dCIpKTsKKyAgY21kX2xpc3RfZGIgPSBncnViX3JlZ2lzdGVyX2NvbW1hbmQgKCJhcHBlbmRfbGlz dF9kYiIsIGdydWJfY21kX2xpc3RfZGIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOXygiU2hvdyB0aGUgbGlzdCBvZiB0cnVzdGVkIFguNTA5IGNlcnRpZmljYXRl cyBmcm9tIHRoZSBkYiBsaXN0IikpOworICBjbWRfZGJfY2VydCA9IGdydWJfcmVnaXN0ZXJfY29t bWFuZCAoImFwcGVuZF9hZGRfZGJfY2VydCIsIGdydWJfY21kX2RiX2NlcnQsIE5fKCJYNTA5X0NF UlRJRklDQVRFIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOXygi QWRkIHRydXN0ZWQgWDUwOV9DRVJUSUZJQ0FURSB0byB0aGUgZGIgbGlzdCIpKTsKKyAgY21kX2Ri eF9jZXJ0ID0gZ3J1Yl9yZWdpc3Rlcl9jb21tYW5kICgiYXBwZW5kX3JtX2RieF9jZXJ0IiwgZ3J1 Yl9jbWRfZGJ4X2NlcnQsIE5fKCJYNTA5X0NFUlRJRklDQVRFIiksCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTl8oIlJlbW92ZSBkaXN0cnVzdGVkIFg1MDlfQ0VSVElG SUNBVEUgZnJvbSB0aGUgZGIgbGlzdCIpKTsKK30KKworLyogSXQgdW5yZWdpc3RlcnMgdGhlIGFw cGVuZGVkIHNpZ25hdHVyZXMgR1JVQiBjb21tYW5kcy4gKi8KK3N0YXRpYyB2b2lkCit1bnJlZ2lz dGVyX2FwcGVuZGVkX3NpZ25hdHVyZXNfY21kICh2b2lkKQoreworICBncnViX3VucmVnaXN0ZXJf Y29tbWFuZCAoY21kX3ZlcmlmeSk7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfbGlz dF9kYik7CisgIGdydWJfdW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJfY2VydCk7CisgIGdydWJf dW5yZWdpc3Rlcl9jb21tYW5kIChjbWRfZGJ4X2NlcnQpOworfQorCitHUlVCX01PRF9JTklUIChh cHBlbmRlZHNpZykKK3sKKyAgZ3J1Yl9pbnQzMl90IHJjOworCisgIC8qCisgICAqIElmIHNlY3Vy ZSBib290IGlzIGVuYWJsZWQgd2l0aCBlbmZvcmNlZCBtb2RlIGFuZCBHUlVCIGlzIGxvY2tlZCBk b3duLAorICAgKiBlbmFibGUgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbi4KKyAgICovCisgIGlmIChn cnViX2lzX2xvY2tkb3duICgpID09IEdSVUJfTE9DS0RPV05fRU5BQkxFRCkKKyAgICBjaGVja19z aWdzID0gdHJ1ZTsKKworICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJjaGVja19hcHBl bmRlZF9zaWduYXR1cmVzIiwgZ3J1Yl9lbnZfcmVhZF9zZWMsIGdydWJfZW52X3dyaXRlX3NlYyk7 CisgIGdydWJfZW52X2V4cG9ydCAoImNoZWNrX2FwcGVuZGVkX3NpZ25hdHVyZXMiKTsKKworICBy YyA9IGFzbjFfaW5pdCAoKTsKKyAgaWYgKHJjICE9IEFTTjFfU1VDQ0VTUykKKyAgICBncnViX2Zh dGFsICgiZXJyb3IgaW5pdGluZyBBU04uMSBkYXRhIHN0cnVjdHVyZXM6ICVkOiAlc1xuIiwgcmMs IGFzbjFfc3RyZXJyb3IgKHJjKSk7CisKKyAgLyoKKyAgICogSWYgc2lnbmF0dXJlIHZlcmlmaWNh dGlvbiBpcyBlbmFibGVkLAorICAgKiBleHRyYWN0IHRydXN0ZWQga2V5cyBmcm9tIEVMRiBOb3Rl IGFuZCBzdG9yZSB0aGVtIGluIHRoZSBkYi4KKyAgICovCisgIGlmIChjaGVja19zaWdzID09IHRy dWUpCisgICAgeworICAgICAgYnVpbGRfc3RhdGljX2RiX2xpc3QgKCk7CisgICAgICBncnViX2Rw cmludGYgKCJhcHBlbmRlZHNpZyIsICJ0aGUgZGIgbGlzdCBub3cgaGFzICV1IHN0YXRpYyBrZXlz XG4iLAorICAgICAgICAgICAgICAgICAgICBkYi5jZXJ0X2VudHJpZXMpOworICAgIH0KKworICBy ZWdpc3Rlcl9hcHBlbmRlZF9zaWduYXR1cmVzX2NtZCAoKTsKKyAgZ3J1Yl92ZXJpZmllcl9yZWdp c3RlciAoJmdydWJfYXBwZW5kZWRzaWdfdmVyaWZpZXIpOworICBncnViX2RsX3NldF9wZXJzaXN0 ZW50IChtb2QpOworfQorCitHUlVCX01PRF9GSU5JIChhcHBlbmRlZHNpZykKK3sKKyAgLyoKKyAg ICogZ3J1Yl9kbF9zZXRfcGVyc2lzdGVudCBzaG91bGQgcHJldmVudCB0aGlzIGZyb20gYWN0dWFs bHkgcnVubmluZywgYnV0CisgICAqIGl0IGRvZXMgc3RpbGwgcnVuIHVuZGVyIGVtdS4KKyAgICov CisKKyAgZnJlZV9kYl9saXN0ICgpOworICBncnViX3JlZ2lzdGVyX3ZhcmlhYmxlX2hvb2sgKCJj aGVja19hcHBlbmRlZF9zaWduYXR1cmVzIiwgTlVMTCwgTlVMTCk7CisgIGdydWJfZW52X3Vuc2V0 ICgiY2hlY2tfYXBwZW5kZWRfc2lnbmF0dXJlcyIpOworICBncnViX3ZlcmlmaWVyX3VucmVnaXN0 ZXIgKCZncnViX2FwcGVuZGVkc2lnX3ZlcmlmaWVyKTsKKyAgdW5yZWdpc3Rlcl9hcHBlbmRlZF9z aWduYXR1cmVzX2NtZCAoKTsKK30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZ3J1Yi9lcnIuaCBiL2lu Y2x1ZGUvZ3J1Yi9lcnIuaAppbmRleCAyMDJmYThhN2EuLjZhYjkwNWM5MyAxMDA2NDQKLS0tIGEv aW5jbHVkZS9ncnViL2Vyci5oCisrKyBiL2luY2x1ZGUvZ3J1Yi9lcnIuaApAQCAtNzUsNyArNzUs OCBAQCB0eXBlZGVmIGVudW0KICAgICBHUlVCX0VSUl9CQURfU0lHTkFUVVJFLAogICAgIEdSVUJf RVJSX0JBRF9GSVJNV0FSRSwKICAgICBHUlVCX0VSUl9TVElMTF9SRUZFUkVOQ0VELAotICAgIEdS VUJfRVJSX1JFQ1VSU0lPTl9ERVBUSAorICAgIEdSVUJfRVJSX1JFQ1VSU0lPTl9ERVBUSCwKKyAg ICBHUlVCX0VSUl9FWElTVFMKICAgfQogZ3J1Yl9lcnJfdDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9ncnViL2ZpbGUuaCBiL2luY2x1ZGUvZ3J1Yi9maWxlLmgKaW5kZXggYTViZjNhNzkyLi5kNjc4 ZGUwNjMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZ3J1Yi9maWxlLmgKKysrIGIvaW5jbHVkZS9ncnVi L2ZpbGUuaApAQCAtODAsNiArODAsOCBAQCBlbnVtIGdydWJfZmlsZV90eXBlCiAgICAgR1JVQl9G SUxFX1RZUEVfUFVCTElDX0tFWSwKICAgICAvKiBGaWxlIGhvbGRpbmcgcHVibGljIGtleSB0byBh ZGQgdG8gdHJ1c2VkIGtleXMuICAqLwogICAgIEdSVUJfRklMRV9UWVBFX1BVQkxJQ19LRVlfVFJV U1QsCisgICAgLyogRmlsZSBob2xkaW5nIHg1MDkgY2VydGlmaWNpYXRlIHRvIGFkZCB0byB0cnVz dGVkIGtleXMuICAqLworICAgIEdSVUJfRklMRV9UWVBFX0NFUlRJRklDQVRFX1RSVVNULAogICAg IC8qIEZpbGUgb2Ygd2hpY2ggd2UgaW50ZW5kIHRvIHByaW50IGEgYmxvY2tsaXN0IHRvIHRoZSB1 c2VyLiAgKi8KICAgICBHUlVCX0ZJTEVfVFlQRV9QUklOVF9CTE9DS0xJU1QsCiAgICAgLyogRmls ZSB3ZSBpbnRlbmQgdG8gdXNlIGZvciB0ZXN0IGxvYWRpbmcgb3IgdGVzdGluZyBzcGVlZC4gICov Ci0tIAoyLjM5LjUgKEFwcGxlIEdpdC0xNTQpCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1Yi1kZXZlbEBn bnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dydWItZGV2ZWwK