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 C8DE6CCA470 for ; Tue, 30 Sep 2025 11:51:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1v3Ypr-0001kI-Sm; Tue, 30 Sep 2025 07:47:59 -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 1v3Yop-000106-8X for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:59 -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 1v3Yoc-0006Nd-Jp for grub-devel@gnu.org; Tue, 30 Sep 2025 07:46:52 -0400 Received: from pps.filterd (m0356517.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 58U821hK022485; Tue, 30 Sep 2025 11:46:37 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=QHVDmt197p4MPnBD3 O6snWypu31WpPaZ3Zkir+Rn1aE=; b=lNqvP8gNOSUULw0CbTNXecPr9dQh6CEk4 iyyYIQ98EODYitTGKXHOPO38Avj4Yj4l9hUZ2aZdldoTj7rBPZCDqjFFh/eh/Giu 4qx0XyWUZQPVFS9Pz4hZZmFkjIokAonDoo9qnSlIbADXNgO5aj1q/1mU9TVBRzo5 hnRk8/kCR/H9aihwQ3xfajqzfy3FmIqTNvqmwFqIr891NXP67XjE5o3Qg+8kTJl9 UZGG9hlIvrFoXIrM7aY3ciYLUYerhnRky802GNhYlWR6Ftdwwvfc6G2HKJxuMcGh D8hqt/8JDAj8FxJx1fv2aPuNMBz4FB/k3fMcZrACRgruSLQvlrvDg== Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 49e7n7rf1u-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:46:36 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 58U9JqWk026818; Tue, 30 Sep 2025 11:46:35 GMT Received: from smtprelay06.fra02v.mail.ibm.com ([9.218.2.230]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 49eu8mu53g-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 30 Sep 2025 11:46:35 +0000 Received: from smtpav01.fra02v.mail.ibm.com (smtpav01.fra02v.mail.ibm.com [10.20.54.100]) by smtprelay06.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 58UBkV5E11010444 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 30 Sep 2025 11:46:31 GMT Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 5F08C20043; Tue, 30 Sep 2025 11:46:31 +0000 (GMT) Received: from smtpav01.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A920520040; Tue, 30 Sep 2025 11:46:28 +0000 (GMT) Received: from localhost.localdomain (unknown [9.39.16.143]) by smtpav01.fra02v.mail.ibm.com (Postfix) with ESMTP; Tue, 30 Sep 2025 11:46:28 +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, Daniel Kiper Subject: [PATCH v13 14/20] appended signatures: Using db and dbx lists for signature verification Date: Tue, 30 Sep 2025 17:10:08 +0530 Message-ID: <20250930114018.78215-15-sudhakar@linux.ibm.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250930114018.78215-1-sudhakar@linux.ibm.com> References: <20250930114018.78215-1-sudhakar@linux.ibm.com> MIME-Version: 1.0 X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: FgJLLSshNY0GnvQhtVmoJRipQjol1muG X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwOTI3MDAyNSBTYWx0ZWRfX2vytvJdygqcV oKfF3JtpWnNAR+OW/+Q23XYCZ2RKzMXWAUlIIBg88ooXzhPO5EGP9rrzU1VDw8XsQRP6Fm3s9hH SO7uuZfQJDSuNstpKjgM4YFWgIs6gRBrBra/tQwFMZ4y3wfrMNwpKU2kBCp+fMuZ0Q4r48IaJ5U s08u65YUK8aG1/NFh6PilwobOKgKcHwe9SmMFZ5IEUaEFE/jnkRs5NbdFHacJvesmSZ0GzC58EE GtY1EIQtVe67+FavM5WGiY2DMI4xVZyX3hG+2zEhVPgALN8ft0YBV8zGk3OZjGNeEa1ViX0KIZv Icr9J1TNnLrQRcIcSCum4j2SgQgN9PTzWtg9m0WDTKeJd28akHxqIImIN5SxgdffFK2dAbHn7mT LGFWChScp/F3opu/dxdsGlQe74fKww== X-Proofpoint-GUID: FgJLLSshNY0GnvQhtVmoJRipQjol1muG X-Authority-Analysis: v=2.4 cv=T7qBjvKQ c=1 sm=1 tr=0 ts=68dbc31c cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=yJojWOMRYYMA:10 a=VnNF1IyMAAAA:8 a=yPCof4ZbAAAA:8 a=BlRlUMKLR4rfvJ7WqM8A:9 a=cPQSjfK2_nFv0Q5t_7PE:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1117,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-09-30_02,2025-09-29_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 impostorscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 clxscore=1015 suspectscore=0 bulkscore=0 phishscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2509150000 definitions=main-2509270025 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_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 U2lnbmF0dXJlIHZlcmlmaWNhdGlvbjogdmVyaWZ5IHRoZSBrZXJuZWwgYWdhaW5zdCBsaXN0cyBv ZiBoYXNoZXMgdGhhdCBhcmUKZWl0aGVyIGluIGRieCBvciBkYiBsaXN0LiBJZiBpdCBpcyBub3Qg aW4gdGhlIGRieCBsaXN0IHRoZW4gdGhlIHRydXN0ZWQga2V5cwpmcm9tIHRoZSBkYiBsaXN0IGFy ZSB1c2VkIHRvIHZlcmlmeSB0aGUgc2lnbmF0dXJlLgoKU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIg S3VwcHVzYW15IDxzdWRoYWthckBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEJl cmdlciA8c3RlZmFuYkBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogQXZuaXNoIENob3VoYW4g PGF2bmlzaEBsaW51eC5pYm0uY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwu a2lwZXJAb3JhY2xlLmNvbT4KLS0tCiBncnViLWNvcmUvY29tbWFuZHMvYXBwZW5kZWRzaWcvYXBw ZW5kZWRzaWcuYyB8IDk0ICsrKysrKysrKysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgOTMg aW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL2dydWItY29yZS9jb21t YW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jIGIvZ3J1Yi1jb3JlL2NvbW1hbmRzL2FwcGVu ZGVkc2lnL2FwcGVuZGVkc2lnLmMKaW5kZXggYmZhNWYzMzJlLi5iNGI5ZTRjZDMgMTAwNjQ0Ci0t LSBhL2dydWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCisrKyBiL2dy dWItY29yZS9jb21tYW5kcy9hcHBlbmRlZHNpZy9hcHBlbmRlZHNpZy5jCkBAIC01MjEsNiArNTIx LDgzIEBAIGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChjb25zdCBncnViX3VpbnQ4X3QgKmJ1 ZiwgZ3J1Yl9zaXplX3QgYnVmc2l6ZSwKICAgcmV0dXJuIGdydWJfcGtjczdfZGF0YV9wYXJzZSAo c2lnbmVkX2RhdGEsIGFwcGVuZGVkc2lnX3BrY3M3X3NpemUsICZzaWctPnBrY3M3KTsKIH0KIAor c3RhdGljIGdydWJfZXJyX3QKK2dldF9iaW5hcnlfaGFzaCAoY29uc3QgZ3J1Yl9zaXplX3QgYmlu YXJ5X2hhc2hfc2l6ZSwgY29uc3QgZ3J1Yl91aW50OF90ICpkYXRhLAorICAgICAgICAgICAgICAg ICBjb25zdCBncnViX3NpemVfdCBkYXRhX3NpemUsIGdydWJfdWludDhfdCAqaGFzaCwgZ3J1Yl9z aXplX3QgKmhhc2hfc2l6ZSkKK3sKKyAgZ3J1Yl9wYWNrZWRfZ3VpZF90IGd1aWQgPSB7IDAgfTsK KworICAvKiBzdXBwb3J0IFNIQTI1NiwgU0hBMzg0IGFuZCBTSEE1MTIgZm9yIGJpbmFyeSBoYXNo ICovCisgIGlmIChiaW5hcnlfaGFzaF9zaXplID09IFNIQTI1Nl9IQVNIX1NJWkUpCisgICAgZ3J1 Yl9tZW1jcHkgKCZndWlkLCAmR1JVQl9QS1NfQ0VSVF9TSEEyNTZfR1VJRCwgR1JVQl9QQUNLRURf R1VJRF9TSVpFKTsKKyAgZWxzZSBpZiAoYmluYXJ5X2hhc2hfc2l6ZSA9PSBTSEEzODRfSEFTSF9T SVpFKQorICAgIGdydWJfbWVtY3B5ICgmZ3VpZCwgJkdSVUJfUEtTX0NFUlRfU0hBMzg0X0dVSUQs IEdSVUJfUEFDS0VEX0dVSURfU0laRSk7CisgIGVsc2UgaWYgKGJpbmFyeV9oYXNoX3NpemUgPT0g U0hBNTEyX0hBU0hfU0laRSkKKyAgICBncnViX21lbWNweSAoJmd1aWQsICZHUlVCX1BLU19DRVJU X1NIQTUxMl9HVUlELCBHUlVCX1BBQ0tFRF9HVUlEX1NJWkUpOworICBlbHNlCisgICAgeworICAg ICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAidW5zdXBwb3J0ZWQgaGFzaCB0eXBlICgl IiBQUkl1R1JVQl9TSVpFICIpIGFuZCAiCisgICAgICAgICAgICAgICAgICAgICJza2lwcGVkXG4i LCBiaW5hcnlfaGFzaF9zaXplKTsKKyAgICAgIHJldHVybiBHUlVCX0VSUl9VTktOT1dOX0NPTU1B TkQ7CisgICAgfQorCisgIHJldHVybiBnZXRfaGFzaCAoJmd1aWQsIGRhdGEsIGRhdGFfc2l6ZSwg aGFzaCwgaGFzaF9zaXplKTsKK30KKworLyoKKyAqIFZlcmlmeSBiaW5hcnkgaGFzaCBhZ2FpbnN0 IHRoZSBkYiBhbmQgZGJ4IGxpc3QuCisgKiBUaGUgZm9sbG93aW5nIGVycm9ycyBjYW4gb2NjdXI6 CisgKiAgLSBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOiBpbmRpY2F0ZXMgdGhhdCB0aGUgaGFzaCBp cyBpbiBkYnggbGlzdC4KKyAqICAtIEdSVUJfRVJSX0VPRjogdGhlIGhhc2ggY291bGQgbm90IGJl IGZvdW5kIGluIHRoZSBkYiBhbmQgZGJ4IGxpc3QuCisgKiAgLSBHUlVCX0VSUl9OT05FOiB0aGUg aGFzaCBpcyBmb3VuZCBpbiBkYiBsaXN0LgorICovCitzdGF0aWMgZ3J1Yl9lcnJfdAordmVyaWZ5 X2JpbmFyeV9oYXNoIChjb25zdCBncnViX3VpbnQ4X3QgKmRhdGEsIGNvbnN0IGdydWJfc2l6ZV90 IGRhdGFfc2l6ZSkKK3sKKyAgZ3J1Yl9lcnJfdCByYyA9IEdSVUJfRVJSX05PTkU7CisgIGdydWJf dWludDMyX3QgaTsKKyAgZ3J1Yl9zaXplX3QgaGFzaF9zaXplID0gMDsKKyAgZ3J1Yl91aW50OF90 IGhhc2hbR1JVQl9NQVhfSEFTSF9MRU5dID0geyAwIH07CisKKyAgZm9yIChpID0gMDsgaSA8IGRi eC5oYXNoX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZGJ4Lmhhc2hlc1tpXSA9PSBO VUxMKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgcmMgPSBnZXRfYmluYXJ5X2hhc2ggKGRi eC5oYXNoX3NpemVzW2ldLCBkYXRhLCBkYXRhX3NpemUsIGhhc2gsICZoYXNoX3NpemUpOworICAg ICAgaWYgKHJjICE9IEdSVUJfRVJSX05PTkUpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBp ZiAoaGFzaF9zaXplID09IGRieC5oYXNoX3NpemVzW2ldICYmCisgICAgICAgICAgZ3J1Yl9tZW1j bXAgKGRieC5oYXNoZXNbaV0sIGhhc2gsIGhhc2hfc2l6ZSkgPT0gMCkKKyAgICAgICAgeworICAg ICAgICAgIGdydWJfZHByaW50ZiAoImFwcGVuZGVkc2lnIiwgInRoZSBoYXNoICglMDJ4JTAyeCUw MnglMDJ4KSBpcyBwcmVzZW50IGluIHRoZSBkYnggbGlzdFxuIiwKKyAgICAgICAgICAgICAgICAg ICAgICAgIGhhc2hbMF0sIGhhc2hbMV0sIGhhc2hbMl0sIGhhc2hbM10pOworICAgICAgICAgIHJl dHVybiBHUlVCX0VSUl9CQURfU0lHTkFUVVJFOworICAgICAgICB9CisgICAgfQorCisgIGZvciAo aSA9IDA7IGkgPCBkYi5oYXNoX2VudHJpZXM7IGkrKykKKyAgICB7CisgICAgICBpZiAoZGIuaGFz aGVzW2ldID09IE5VTEwpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICByYyA9IGdldF9iaW5h cnlfaGFzaCAoZGIuaGFzaF9zaXplc1tpXSwgZGF0YSwgZGF0YV9zaXplLCBoYXNoLCAmaGFzaF9z aXplKTsKKyAgICAgIGlmIChyYyAhPSBHUlVCX0VSUl9OT05FKQorICAgICAgICBjb250aW51ZTsK KworICAgICAgaWYgKGhhc2hfc2l6ZSA9PSBkYi5oYXNoX3NpemVzW2ldICYmCisgICAgICAgICAg Z3J1Yl9tZW1jbXAgKGRiLmhhc2hlc1tpXSwgaGFzaCwgaGFzaF9zaXplKSA9PSAwKQorICAgICAg ICB7CisgICAgICAgICAgZ3J1Yl9kcHJpbnRmICgiYXBwZW5kZWRzaWciLCAidmVyaWZpZWQgd2l0 aCBhIHRydXN0ZWQgaGFzaCAoJTAyeCUwMnglMDJ4JTAyeClcbiIsCisgICAgICAgICAgICAgICAg ICAgICAgICBoYXNoWzBdLCBoYXNoWzFdLCBoYXNoWzJdLCBoYXNoWzNdKTsKKyAgICAgICAgICBy ZXR1cm4gR1JVQl9FUlJfTk9ORTsKKyAgICAgICAgfQorICAgIH0KKworICByZXR1cm4gR1JVQl9F UlJfRU9GOworfQorCiAvKgogICogR2l2ZW4gYSBoYXNoIHZhbHVlICdodmFsJywgb2YgaGFzaCBz cGVjaWZpY2F0aW9uICdoYXNoJywgcHJlcGFyZSB0aGUKICAqIFMtZXhwcmVzc2lvbnMgKHNleHAp IGFuZCBwZXJmb3JtIHRoZSBzaWduYXR1cmUgdmVyaWZpY2F0aW9uLgpAQCAtNTY1LDcgKzY0Miw3 IEBAIGdydWJfdmVyaWZ5X2FwcGVuZGVkX3NpZ25hdHVyZSAoY29uc3QgZ3J1Yl91aW50OF90ICpi dWYsIGdydWJfc2l6ZV90IGJ1ZnNpemUpCiAgIGdydWJfcGtjczdfc2lnbmVyX3QgKnNpOwogICBn cnViX2ludDMyX3QgaTsKIAotICBpZiAoIWRiLmNlcnRfZW50cmllcykKKyAgaWYgKCFkYi5jZXJ0 X2VudHJpZXMgJiYgIWRiLmhhc2hfZW50cmllcykKICAgICByZXR1cm4gZ3J1Yl9lcnJvciAoR1JV Ql9FUlJfQkFEX1NJR05BVFVSRSwgIm5vIHRydXN0ZWQga2V5cyB0byB2ZXJpZnkgYWdhaW5zdCIp OwogCiAgIGVyciA9IGV4dHJhY3RfYXBwZW5kZWRfc2lnbmF0dXJlIChidWYsIGJ1ZnNpemUsICZz aWcpOwpAQCAtNTc0LDYgKzY1MSwyMSBAQCBncnViX3ZlcmlmeV9hcHBlbmRlZF9zaWduYXR1cmUg KGNvbnN0IGdydWJfdWludDhfdCAqYnVmLCBncnViX3NpemVfdCBidWZzaXplKQogCiAgIGRhdGFz aXplID0gYnVmc2l6ZSAtIHNpZy5zaWduYXR1cmVfbGVuOwogCisgIC8qCisgICAqIElmIHNpZ25h dHVyZSB2ZXJpZmljYXRpb24gaXMgZW5hYmxlZCB3aXRoIGR5bmFtaWMga2V5IG1hbmFnZW1lbnQg bW9kZSwKKyAgICogVmVyaWZ5IGJpbmFyeSBoYXNoIGFnYWluc3QgdGhlIGRiIGFuZCBkYnggbGlz dC4KKyAgICovCisgIGlmIChhcHBlbmRfa2V5X21nbXQgPT0gdHJ1ZSkKKyAgICB7CisgICAgICBl cnIgPSB2ZXJpZnlfYmluYXJ5X2hhc2ggKGJ1ZiwgZGF0YXNpemUpOworICAgICAgaWYgKGVyciA9 PSBHUlVCX0VSUl9CQURfU0lHTkFUVVJFKQorICAgICAgICB7CisgICAgICAgICAgZ3J1Yl9wa2Nz N19kYXRhX3JlbGVhc2UgKCZzaWcucGtjczcpOworICAgICAgICAgIHJldHVybiBncnViX2Vycm9y IChlcnIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gdmVyaWZ5IHRo ZSBiaW5hcnkgaGFzaCBhZ2FpbnN0IGEgdHJ1c3RlZCBiaW5hcnkgaGFzaCIpOworICAgICAgICB9 CisgICAgfQorCiAgIC8qIFZlcmlmeSBzaWduYXR1cmUgdXNpbmcgdHJ1c3RlZCBrZXlzIGZyb20g ZGIgbGlzdC4gKi8KICAgZm9yIChpID0gMDsgaSA8IHNpZy5wa2NzNy5zaWduZXJfY291bnQ7IGkr KykKICAgICB7Ci0tIAoyLjUwLjEgKEFwcGxlIEdpdC0xNTUpCgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KR3J1Yi1kZXZlbCBtYWlsaW5nIGxpc3QKR3J1 Yi1kZXZlbEBnbnUub3JnCmh0dHBzOi8vbGlzdHMuZ251Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2dy dWItZGV2ZWwK