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 lists1p.gnu.org (lists1p.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 3EB39C43327 for ; Mon, 29 Jun 2026 13:49:56 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1weCHN-0003cg-Cw; Mon, 29 Jun 2026 09:44:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1weCH7-0003Yq-Qa for qemu-devel@nongnu.org; Mon, 29 Jun 2026 09:43:50 -0400 Received: from mx0b-0031df01.pphosted.com ([205.220.180.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1weCH4-0006Bb-ML for qemu-devel@nongnu.org; Mon, 29 Jun 2026 09:43:49 -0400 Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 65TAT4so2627854 for ; Mon, 29 Jun 2026 13:43:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= G8bosUNkIisGhuX8AG1Z5l9LVe/reA0/IE25v64WV3U=; b=HUMBQs92OA+T2THr pP02SIClSqvQ5OghIDfIbbnrCWUpwA2o4dVILo5wH3eiC6zcXvhq8U6EhjlcFXUM xBQtVDvlEct6A1n9RLkmihsC73V7TWnLONlVr2nEtL7lwZD2FmSLM6C7q39HyOKw qm1MF6McsWyQoJzCmL8v2GzxKjbIIU293YEyoqSVrDYb2WMtokBS5EwlSQ5/bKbo zjBKiCa4vZ5z+nOUyhunVCztHLNiA3nz9bSmLqcqrPNPPBzflAU+UjkJn5dk32HV diIHBqciZ9iE1qhf5kDxsDVdXDDOZrV0iyReMuF49k3zL56zqySDUvi22Wsfr6Dp u+H6Tg== Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4f3nbgs577-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 29 Jun 2026 13:43:45 +0000 (GMT) Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-2c81c7421abso47697435ad.0 for ; Mon, 29 Jun 2026 06:43:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1782740624; x=1783345424; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=G8bosUNkIisGhuX8AG1Z5l9LVe/reA0/IE25v64WV3U=; b=Pv8j0Tdzzb5iFkkrDEjEVrE7Bp3l6JfP+lMJqaspxN7Af8hlbV53Pemn/jTfCQliQQ FBDiLoOkh3MjdYeuL0Fe1a/3VAy3WcudO05/G3pqO8UodbMV5VAZB5+VQNC4mBQQB0Ct Vbu0mvewehMnj3JnX9Pi9TW/Le7ZoXLnODc11F4RGiSsoBlddDe+Vt2G5NuNi7pgLsPY Dy9c+s8Z/0DA6qq7Z91IX+69tSbZ56d0HhUBKdZU0tr4DNHqV4c3fTBdiW9GX5kfnLpN rnObBHfLmoLVVe10YzlWScw0lub1KqNVMeFKFAUUl9nRba2eBSnun4jXiYaRVWkUP9f4 Ym+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782740624; x=1783345424; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=G8bosUNkIisGhuX8AG1Z5l9LVe/reA0/IE25v64WV3U=; b=C0KYmIOHhBlTwVBHgRjs9tPWrSElv78luDo1St+8M+gkXK9FSsB5ox3eZzdcMqzyGQ uXpNlvcT7Dq9rt49CXUxSP8wyVgbI6Q8Ib6YcuMdoyKz+aOUvoIm+8Fb0is0eIsidAhC cgxrfGBTDh/w6ivzTbKTHBqYhFdzdAHPM1NUV60NxkDLZyX9nyThcxWyByjFHL8SpRKj 1OicSzhon/afPFmwQ5hDMFDjr52ibJtatMqLnbEW15mQ/eNu1qqwWoXbXMLLBH3pGgPt DlJfbhc4OeOBEamgWF/YFFda1I0MzBbc/ww8Z6FcvDOXBxemHsQP4UDxFtTgIZhaQT0L +BlQ== X-Gm-Message-State: AOJu0YzNDG0S6Eq7ALStqnIle8B98L1ej8i64Vh0bvK/8BA9XTJiEOgm IC/z2bop+3wCxy36ZzEN86DBdJ/6gVeutlgl5dCLsCq15Ds5qwaxV7whXE84T+c7g4Ab6SpnKlG ysB7dMjA8ghgWQA9QvDt7/4pe18AzfSMVz+WCOLOE4XWJT9wLVxCGblHBlAauwGLrog== X-Gm-Gg: AfdE7ckrpf1T5HdWw3NpNgp2thjW7IQFMrwPqKDvB9VEEfzhL+XJxtLuDSfZo8OHxgw rr7OzRwFi1SsytG5qot+0+rXIUX25EoTZWK+1ZewHkO6j1iXZBQsa3o62OUTY6je27jkhbV+kPr qFORrRvii+XUccoDzZtSBZC4zJryv5nOGVtKzUBphLMjxrFSTEhxO7SqgJrZmJNnqInWPmS85st 0t8iYAVnwM/3n8h53eDo8cDSULjS6iGaNpVfzqqhQ5chim5Kk3se5TCnlZxFWAwAhxsCgJnBU5L UbQ4mc0vvOxIby4O4J9sdlfz1MbrttbkRJzdFbRqkUev7B5VgyV27klmqYACqwhF5604nk+vedo QTprzkfsB/6ddUIiL+uTlL6qJFpSaP4IOlgUEtjhwSfiGLoai4TzgANBpQI8= X-Received: by 2002:a17:902:ef03:b0:2c7:fc03:fcf0 with SMTP id d9443c01a7336-2c7fca71647mr148337845ad.17.1782740624109; Mon, 29 Jun 2026 06:43:44 -0700 (PDT) X-Received: by 2002:a17:902:ef03:b0:2c7:fc03:fcf0 with SMTP id d9443c01a7336-2c7fca71647mr148337555ad.17.1782740623468; Mon, 29 Jun 2026 06:43:43 -0700 (PDT) Received: from hu-bcain-lv.qualcomm.com (Global_NAT1.qualcomm.com. [129.46.96.20]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c9b0992227sm48968555ad.37.2026.06.29.06.43.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 06:43:42 -0700 (PDT) From: Brian Cain To: qemu-devel@nongnu.org, stefanha@redhat.com, peter.maydell@linaro.org Cc: brian.cain@oss.qualcomm.com, Brian Cain , Taylor Simpson , Sid Manning , Michael Lambert , Pierrick Bouvier Subject: [PULL v5 40/77] target/hexagon: Add hex_interrupts support Date: Mon, 29 Jun 2026 06:11:55 -0700 Message-Id: <20260629131232.2487780-41-brian.cain@oss.qualcomm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260629131232.2487780-1-brian.cain@oss.qualcomm.com> References: <20260629131232.2487780-1-brian.cain@oss.qualcomm.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Proofpoint-ORIG-GUID: ACF6qvG7jamASxZ5xpa1OFW1xCZ9Oy9R X-Authority-Analysis: v=2.4 cv=Z4Hc2nRA c=1 sm=1 tr=0 ts=6a427691 cx=c_pps a=cmESyDAEBpBGqyK7t0alAg==:117 a=ouPCqIW2jiPt+lZRy3xVPw==:17 a=IkcTkHD0fZMA:10 a=FelO9ux0wxsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=COk6AnOGAAAA:8 a=pGLkceISAAAA:8 a=EUspDBNiAAAA:8 a=_4Jc8uW0NYDJnYJF3oQA:9 a=QEXdDO2ut3YA:10 a=O8hF6Hzn-FEA:10 a=1OuFwYUASf3TG4hYMiVC:22 a=TjNXssC_j7lpFel5tvFf:22 X-Proofpoint-Spam-Info: AW1haW4tMjYwNjI5MDExNCBTYWx0ZWRfXwFsaVCQ1JBLY JjgKXk2PMV6BomZHru4c9In/v7PfNE53JTafQraSzuKfAVZmOs1a8jIPaI3ZHlPe3V+TH5urYpy pXV0I5wTzl0JwwG2INOuf6KKcVRQrQ8= X-Proofpoint-GUID: ACF6qvG7jamASxZ5xpa1OFW1xCZ9Oy9R X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNjI5MDExNCBTYWx0ZWRfX1SckHZ3ea4qC k3V1E6CSZedZTuZ9Et2Arfhk32gA1Y26zBLBf0/mw4PRoz0bcO8KQLcYlnLEE0Mq7GespH4JlTw pcnY6QhCknbGYMVxr0LFJT+6018wcHnCA4i3jm/13Bwpoi3pajOujjLjTeiyyBy6ppgKy7SerKt C0AkB8fzEjWs7n3qf7IEtcHIO4jrD6h1io7qnR0jz07cuZuV8B9FJxXvLUObhW8ONpEGdAA4qrN qABcPWbFOgF2ezS5Zwvk1nsKO/zB71g7zPXFjbZD10Ge2KPJDkNsKm/eqxuaSOolz3vUIj3zwU7 MYhhj60rSynBPeXFrPouLHLcA5+hktAkLGOddvL5ryb1NNfxX/82irx3949qp6ah7vb7J4kDzVi BrdM305vQD1CXBEIRzNcnldDakK4Teh5VegZJ3JsXFkP/HB+0/eEyh7ellkSmKYECmQHN1sGCjf rC6mHzxVmGt5RARotDw== X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.125,FMLib:17.12.100.49 definitions=2026-06-29_03,2026-06-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 priorityscore=1501 bulkscore=0 spamscore=0 impostorscore=0 phishscore=0 clxscore=1015 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2606290114 Received-SPF: pass client-ip=205.220.180.131; envelope-from=brian.cain@oss.qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org RnJvbTogQnJpYW4gQ2FpbiA8YmNhaW5AcXVpY2luYy5jb20+CgpDby1hdXRob3JlZC1ieTogVGF5 bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KQ28tYXV0aG9yZWQtYnk6IFNp ZCBNYW5uaW5nIDxzaWRuZXltQHF1aWNpbmMuY29tPgpDby1hdXRob3JlZC1ieTogTWljaGFlbCBM YW1iZXJ0IDxtbGFtYmVydEBxdWljaW5jLmNvbT4KUmV2aWV3ZWQtYnk6IFBpZXJyaWNrIEJvdXZp ZXIgPHBpZXJyaWNrLmJvdXZpZXJAb3NzLnF1YWxjb21tLmNvbT4KU2lnbmVkLW9mZi1ieTogQnJp YW4gQ2FpbiA8YnJpYW4uY2FpbkBvc3MucXVhbGNvbW0uY29tPgotLS0KIHRhcmdldC9oZXhhZ29u L2NwdS5oICAgICAgICAgICAgfCAgIDIgKwogdGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMu aCB8ICAxNSArKwogdGFyZ2V0L2hleGFnb24vY3B1LmMgICAgICAgICAgICB8ICAgNCArCiB0YXJn ZXQvaGV4YWdvbi9oZXhfaW50ZXJydXB0cy5jIHwgMzcxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDM5MiBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9k ZSAxMDA2NDQgdGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHRhcmdldC9oZXhhZ29uL2hleF9pbnRlcnJ1cHRzLmMKCmRpZmYgLS1naXQgYS90YXJnZXQv aGV4YWdvbi9jcHUuaCBiL3RhcmdldC9oZXhhZ29uL2NwdS5oCmluZGV4IGRiZGM0NTZkNzMyLi4x YjIyNWUzNWFiYyAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vY3B1LmgKKysrIGIvdGFyZ2V0 L2hleGFnb24vY3B1LmgKQEAgLTE5Nyw2ICsxOTcsOCBAQCBzdHJ1Y3QgQXJjaENQVSB7CiAgICAg Ym9vbCBzaG9ydF9jaXJjdWl0OwogI2lmbmRlZiBDT05GSUdfVVNFUl9PTkxZCiAgICAgSGV4YWdv blRMQlN0YXRlICp0bGI7CisgICAgdWludDMyX3QgYm9vdF9hZGRyOworICAgIEhleGFnb25HbG9i YWxSZWdTdGF0ZSAqZ2xvYmFscmVnczsKICAgICB1aW50MzJfdCBodGlkOwogI2VuZGlmCiB9Owpk aWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vaGV4X2ludGVycnVwdHMuaCBiL3RhcmdldC9oZXhh Z29uL2hleF9pbnRlcnJ1cHRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjZiNmY1NDAzNjMzCi0tLSAvZGV2L251bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vaGV4X2lu dGVycnVwdHMuaApAQCAtMCwwICsxLDE1IEBACisvKgorICogQ29weXJpZ2h0IChjKSBRdWFsY29t bSBUZWNobm9sb2dpZXMsIEluYy4gYW5kL29yIGl0cyBzdWJzaWRpYXJpZXMuCisgKgorICogU1BE WC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKKyAqLworCisjaWZuZGVmIEhF WF9JTlRFUlJVUFRTX0gKKyNkZWZpbmUgSEVYX0lOVEVSUlVQVFNfSAorCitib29sIGhleF9jaGVj a19pbnRlcnJ1cHRzKENQVUhleGFnb25TdGF0ZSAqZW52KTsKK3ZvaWQgaGV4X2NsZWFyX2ludGVy cnVwdHMoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90IHR5cGUp Owordm9pZCBoZXhfcmFpc2VfaW50ZXJydXB0cyhDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWludDMy X3QgbWFzaywgdWludDMyX3QgdHlwZSk7Cit2b2lkIGhleF9pbnRlcnJ1cHRfdXBkYXRlKENQVUhl eGFnb25TdGF0ZSAqZW52KTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9j cHUuYyBiL3RhcmdldC9oZXhhZ29uL2NwdS5jCmluZGV4IDczYWNhMGE0MjE3Li5lYjFmNzA0OTI5 OCAxMDA2NDQKLS0tIGEvdGFyZ2V0L2hleGFnb24vY3B1LmMKKysrIGIvdGFyZ2V0L2hleGFnb24v Y3B1LmMKQEAgLTU0LDYgKzU0LDkgQEAgc3RhdGljIGNvbnN0IFByb3BlcnR5IGhleGFnb25fY3B1 X3Byb3BlcnRpZXNbXSA9IHsKICNpZm5kZWYgQ09ORklHX1VTRVJfT05MWQogICAgIERFRklORV9Q Uk9QX0xJTksoInRsYiIsIEhleGFnb25DUFUsIHRsYiwgVFlQRV9IRVhBR09OX1RMQiwKICAgICAg ICAgICAgICAgICAgICAgIEhleGFnb25UTEJTdGF0ZSAqKSwKKyAgICBERUZJTkVfUFJPUF9VSU5U MzIoImV4ZWMtc3RhcnQtYWRkciIsIEhleGFnb25DUFUsIGJvb3RfYWRkciwgMHhmZmZmZmZmZiks CisgICAgREVGSU5FX1BST1BfTElOSygiZ2xvYmFsLXJlZ3MiLCBIZXhhZ29uQ1BVLCBnbG9iYWxy ZWdzLAorICAgICAgICBUWVBFX0hFWEFHT05fR0xPQkFMUkVHLCBIZXhhZ29uR2xvYmFsUmVnU3Rh dGUgKiksCiAgICAgREVGSU5FX1BST1BfVUlOVDMyKCJodGlkIiwgSGV4YWdvbkNQVSwgaHRpZCwg MCksCiAjZW5kaWYKICAgICBERUZJTkVfUFJPUF9CT09MKCJsbGRiLWNvbXBhdCIsIEhleGFnb25D UFUsIGxsZGJfY29tcGF0LCBmYWxzZSksCkBAIC0zMzYsNiArMzM5LDcgQEAgc3RhdGljIHZvaWQg aGV4YWdvbl9jcHVfcmVzZXRfaG9sZChPYmplY3QgKm9iaiwgUmVzZXRUeXBlIHR5cGUpCiAKICAg ICBlbnYtPnRfc3JlZ1tIRVhfU1JFR19IVElEXSA9IGNwdS0+aHRpZDsKICAgICBlbnYtPnRocmVh ZElkID0gY3B1LT5odGlkOworICAgIGVudi0+Z3ByW0hFWF9SRUdfUENdID0gY3B1LT5ib290X2Fk ZHI7CiAjZW5kaWYKICAgICBlbnYtPmNhdXNlX2NvZGUgPSBIRVhfRVZFTlRfTk9ORTsKIH0KZGlm ZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2hleF9pbnRlcnJ1cHRzLmMgYi90YXJnZXQvaGV4YWdv bi9oZXhfaW50ZXJydXB0cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li4zNTM0NDgxZGEyNAotLS0gL2Rldi9udWxsCisrKyBiL3RhcmdldC9oZXhhZ29uL2hleF9pbnRl cnJ1cHRzLmMKQEAgLTAsMCArMSwzNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIFF1YWxjb21t IFRlY2hub2xvZ2llcywgSW5jLiBhbmQvb3IgaXRzIHN1YnNpZGlhcmllcy4KKyAqCisgKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlcgorICovCisKKyNpbmNsdWRlICJx ZW11L29zZGVwLmgiCisjaW5jbHVkZSAicWVtdS9sb2cuaCIKKyNpbmNsdWRlICJxZW11L21haW4t bG9vcC5oIgorI2luY2x1ZGUgImNwdS5oIgorI2luY2x1ZGUgImNwdV9oZWxwZXIuaCIKKyNpbmNs dWRlICJleGVjL2NwdS1pbnRlcnJ1cHQuaCIKKyNpbmNsdWRlICJoZXhfaW50ZXJydXB0cy5oIgor I2luY2x1ZGUgIm1hY3Jvcy5oIgorI2luY2x1ZGUgInN5c19tYWNyb3MuaCIKKyNpbmNsdWRlICJz eXN0ZW0vY3B1cy5oIgorI2luY2x1ZGUgImh3L2hleGFnb24vaGV4YWdvbl9nbG9iYWxyZWcuaCIK Kworc3RhdGljIGJvb2wgaGV4X2lzX3F1YWxpZmllZF9mb3JfaW50KENQVUhleGFnb25TdGF0ZSAq ZW52LCBpbnQgaW50X251bSk7CisKK3N0YXRpYyBib29sIGdldF9zeXNjZmdfZ2llKENQVUhleGFn b25TdGF0ZSAqZW52KQoreworICAgIEhleGFnb25DUFUgKmNwdSA9IGVudl9hcmNoY3B1KGVudik7 CisgICAgdWludDMyX3Qgc3lzY2ZnID0KKyAgICAgICAgaGV4YWdvbl9nbG9iYWxyZWdfcmVhZChj cHUtPmdsb2JhbHJlZ3MsIEhFWF9TUkVHX1NZU0NGRywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnYtPnRocmVhZElkKTsKKyAgICByZXR1cm4gR0VUX1NZU0NGR19GSUVMRChTWVND RkdfR0lFLCBzeXNjZmcpOworfQorCitzdGF0aWMgYm9vbCBnZXRfc3NyX2V4KENQVUhleGFnb25T dGF0ZSAqZW52KQoreworICAgIHVpbnQzMl90IHNzciA9IGVudi0+dF9zcmVnW0hFWF9TUkVHX1NT Ul07CisgICAgcmV0dXJuIEdFVF9TU1JfRklFTEQoU1NSX0VYLCBzc3IpOworfQorCitzdGF0aWMg Ym9vbCBnZXRfc3NyX2llKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIHVpbnQzMl90IHNz ciA9IGVudi0+dF9zcmVnW0hFWF9TUkVHX1NTUl07CisgICAgcmV0dXJuIEdFVF9TU1JfRklFTEQo U1NSX0lFLCBzc3IpOworfQorCisvKiBEbyB0aGVzZSB0b2dldGhlciBzbyB3ZSBvbmx5IGhhdmUg dG8gY2FsbCBoZXhhZ29uX21vZGlmeV9zc3Igb25jZSAqLworc3RhdGljIHZvaWQgc2V0X3Nzcl9l eF9jYXVzZShDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IGV4LCB1aW50MzJfdCBjYXVzZSkKK3sK KyAgICB1aW50MzJfdCBvbGQsIG5ldzsKKworICAgIG9sZCA9IGVudi0+dF9zcmVnW0hFWF9TUkVH X1NTUl07CisgICAgU0VUX1NZU1RFTV9GSUVMRChlbnYsIEhFWF9TUkVHX1NTUiwgU1NSX0VYLCBl eCk7CisgICAgU0VUX1NZU1RFTV9GSUVMRChlbnYsIEhFWF9TUkVHX1NTUiwgU1NSX0NBVVNFLCBj YXVzZSk7CisgICAgbmV3ID0gZW52LT50X3NyZWdbSEVYX1NSRUdfU1NSXTsKKyAgICBoZXhhZ29u X21vZGlmeV9zc3IoZW52LCBuZXcsIG9sZCk7Cit9CisKK3N0YXRpYyBib29sIGdldF9pYWRfYml0 KENQVUhleGFnb25TdGF0ZSAqZW52LCBpbnQgaW50X251bSkKK3sKKyAgICBIZXhhZ29uQ1BVICpj cHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIHVpbnQzMl90IGlwZW5kYWQgPQorICAgICAgICBo ZXhhZ29uX2dsb2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywgSEVYX1NSRUdfSVBFTkRBRCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnRocmVhZElkKTsKKyAgICB1aW50 MzJfdCBpYWQgPSBHRVRfRklFTEQoSVBFTkRBRF9JQUQsIGlwZW5kYWQpOworICAgIHJldHVybiBl eHRyYWN0MzIoaWFkLCBpbnRfbnVtLCAxKTsKK30KKworc3RhdGljIHZvaWQgc2V0X2lhZF9iaXQo Q1BVSGV4YWdvblN0YXRlICplbnYsIGludCBpbnRfbnVtLCBpbnQgdmFsKQoreworICAgIEhleGFn b25DUFUgKmNwdSA9IGVudl9hcmNoY3B1KGVudik7CisgICAgdWludDMyX3QgaXBlbmRhZCA9Cisg ICAgICAgIGhleGFnb25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBIRVhfU1JFR19J UEVOREFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhyZWFkSWQpOwor ICAgIHVpbnQzMl90IGlhZCA9IEdFVF9GSUVMRChJUEVOREFEX0lBRCwgaXBlbmRhZCk7CisgICAg aWFkID0gZGVwb3NpdDMyKGlhZCwgaW50X251bSwgMSwgdmFsKTsKKyAgICBmU0VUX0ZJRUxEKGlw ZW5kYWQsIElQRU5EQURfSUFELCBpYWQpOworICAgIGhleGFnb25fZ2xvYmFscmVnX3dyaXRlKGNw dS0+Z2xvYmFscmVncywgSEVYX1NSRUdfSVBFTkRBRCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpcGVuZGFkLCBlbnYtPnRocmVhZElkKTsKK30KKworc3RhdGljIHVpbnQzMl90IGdldF9p cGVuZChDUFVIZXhhZ29uU3RhdGUgKmVudikKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZf YXJjaGNwdShlbnYpOworICAgIHVpbnQzMl90IGlwZW5kYWQgPQorICAgICAgICBoZXhhZ29uX2ds b2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywgSEVYX1NSRUdfSVBFTkRBRCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbnYtPnRocmVhZElkKTsKKyAgICByZXR1cm4gR0VUX0ZJ RUxEKElQRU5EQURfSVBFTkQsIGlwZW5kYWQpOworfQorCitzdGF0aWMgaW5saW5lIGJvb2wgZ2V0 X2lwZW5kX2JpdChDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IGludF9udW0pCit7CisgICAgSGV4 YWdvbkNQVSAqY3B1ID0gZW52X2FyY2hjcHUoZW52KTsKKyAgICB1aW50MzJfdCBpcGVuZGFkID0K KyAgICAgICAgaGV4YWdvbl9nbG9iYWxyZWdfcmVhZChjcHUtPmdsb2JhbHJlZ3MsIEhFWF9TUkVH X0lQRU5EQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJlYWRJZCk7 CisgICAgdWludDMyX3QgaXBlbmQgPSBHRVRfRklFTEQoSVBFTkRBRF9JUEVORCwgaXBlbmRhZCk7 CisgICAgcmV0dXJuIGV4dHJhY3QzMihpcGVuZCwgaW50X251bSwgMSk7Cit9CisKK3N0YXRpYyB2 b2lkIGNsZWFyX2lwZW5kKENQVUhleGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBtYXNrKQorewor ICAgIEhleGFnb25DUFUgKmNwdSA9IGVudl9hcmNoY3B1KGVudik7CisgICAgdWludDMyX3QgaXBl bmRhZCA9CisgICAgICAgIGhleGFnb25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBI RVhfU1JFR19JUEVOREFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhy ZWFkSWQpOworICAgIHVpbnQzMl90IGlwZW5kID0gR0VUX0ZJRUxEKElQRU5EQURfSVBFTkQsIGlw ZW5kYWQpOworICAgIGlwZW5kICY9IH5tYXNrOworICAgIGZTRVRfRklFTEQoaXBlbmRhZCwgSVBF TkRBRF9JUEVORCwgaXBlbmQpOworICAgIGhleGFnb25fZ2xvYmFscmVnX3dyaXRlKGNwdS0+Z2xv YmFscmVncywgSEVYX1NSRUdfSVBFTkRBRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp cGVuZGFkLCBlbnYtPnRocmVhZElkKTsKK30KKworc3RhdGljIHZvaWQgc2V0X2lwZW5kKENQVUhl eGFnb25TdGF0ZSAqZW52LCB1aW50MzJfdCBtYXNrKQoreworICAgIEhleGFnb25DUFUgKmNwdSA9 IGVudl9hcmNoY3B1KGVudik7CisgICAgdWludDMyX3QgaXBlbmRhZCA9CisgICAgICAgIGhleGFn b25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBIRVhfU1JFR19JUEVOREFELAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+dGhyZWFkSWQpOworICAgIHVpbnQzMl90 IGlwZW5kID0gR0VUX0ZJRUxEKElQRU5EQURfSVBFTkQsIGlwZW5kYWQpOworICAgIGlwZW5kIHw9 IG1hc2s7CisgICAgZlNFVF9GSUVMRChpcGVuZGFkLCBJUEVOREFEX0lQRU5ELCBpcGVuZCk7Cisg ICAgaGV4YWdvbl9nbG9iYWxyZWdfd3JpdGUoY3B1LT5nbG9iYWxyZWdzLCBIRVhfU1JFR19JUEVO REFELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwZW5kYWQsIGVudi0+dGhyZWFkSWQp OworfQorCitzdGF0aWMgdm9pZCBzZXRfaXBlbmRfYml0KENQVUhleGFnb25TdGF0ZSAqZW52LCBp bnQgaW50X251bSwgaW50IHZhbCkKK3sKKyAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNw dShlbnYpOworICAgIHVpbnQzMl90IGlwZW5kYWQgPQorICAgICAgICBoZXhhZ29uX2dsb2JhbHJl Z19yZWFkKGNwdS0+Z2xvYmFscmVncywgSEVYX1NSRUdfSVBFTkRBRCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnYtPnRocmVhZElkKTsKKyAgICB1aW50MzJfdCBpcGVuZCA9IEdF VF9GSUVMRChJUEVOREFEX0lQRU5ELCBpcGVuZGFkKTsKKyAgICBpcGVuZCA9IGRlcG9zaXQzMihp cGVuZCwgaW50X251bSwgMSwgdmFsKTsKKyAgICBmU0VUX0ZJRUxEKGlwZW5kYWQsIElQRU5EQURf SVBFTkQsIGlwZW5kKTsKKyAgICBoZXhhZ29uX2dsb2JhbHJlZ193cml0ZShjcHUtPmdsb2JhbHJl Z3MsIEhFWF9TUkVHX0lQRU5EQUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBlbmRh ZCwgZW52LT50aHJlYWRJZCk7Cit9CisKK3N0YXRpYyBib29sIGdldF9pbWFza19iaXQoQ1BVSGV4 YWdvblN0YXRlICplbnYsIGludCBpbnRfbnVtKQoreworICAgIHVpbnQzMl90IGltYXNrID0gZW52 LT50X3NyZWdbSEVYX1NSRUdfSU1BU0tdOworICAgIHJldHVybiBleHRyYWN0MzIoaW1hc2ssIGlu dF9udW0sIDEpOworfQorCitzdGF0aWMgdWludDMyX3QgZ2V0X3ByaW8oQ1BVSGV4YWdvblN0YXRl ICplbnYpCit7CisgICAgdWludDMyX3Qgc3RpZCA9IGVudi0+dF9zcmVnW0hFWF9TUkVHX1NUSURd OworICAgIHJldHVybiBleHRyYWN0MzIoc3RpZCwgcmVnX2ZpZWxkX2luZm9bU1RJRF9QUklPXS5v ZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICByZWdfZmllbGRfaW5mb1tTVElEX1BSSU9dLndp ZHRoKTsKK30KKworc3RhdGljIHZvaWQgc2V0X2VscihDUFVIZXhhZ29uU3RhdGUgKmVudiwgdWlu dDMyX3QgdmFsKQoreworICAgIGVudi0+dF9zcmVnW0hFWF9TUkVHX0VMUl0gPSB2YWw7Cit9CisK K3N0YXRpYyBib29sIGdldF9zY2hlZGNmZ2VuKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAg IEhleGFnb25DUFUgKmNwdSA9IGVudl9hcmNoY3B1KGVudik7CisgICAgdWludDMyX3Qgc2NoZWRj ZmcgPQorICAgICAgICBoZXhhZ29uX2dsb2JhbHJlZ19yZWFkKGNwdS0+Z2xvYmFscmVncywgSEVY X1NSRUdfU0NIRURDRkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJl YWRJZCk7CisgICAgcmV0dXJuIGV4dHJhY3QzMihzY2hlZGNmZywgcmVnX2ZpZWxkX2luZm9bU0NI RURDRkdfRU5dLm9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIHJlZ19maWVsZF9pbmZvW1ND SEVEQ0ZHX0VOXS53aWR0aCk7Cit9CisKK3N0YXRpYyBib29sIGlzX2xvd2VzdF9wcmlvKENQVUhl eGFnb25TdGF0ZSAqZW52LCBpbnQgaW50X251bSkKK3sKKyAgICB1aW50MzJfdCBteV9wcmlvID0g Z2V0X3ByaW8oZW52KTsKKyAgICBDUFVTdGF0ZSAqY3M7CisKKyAgICBDUFVfRk9SRUFDSChjcykg eworICAgICAgICBDUFVIZXhhZ29uU3RhdGUgKmhleF9lbnYgPSBjcHVfZW52KGNzKTsKKyAgICAg ICAgaWYgKCFoZXhfaXNfcXVhbGlmaWVkX2Zvcl9pbnQoaGV4X2VudiwgaW50X251bSkpIHsKKyAg ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyogTm90ZSB0aGF0IGxv d2VyIHZhbHVlcyBpbmRpY2F0ZSAqaGlnaGVyKiBwcmlvcml0eSAqLworICAgICAgICBpZiAobXlf cHJpbyA8IGdldF9wcmlvKGhleF9lbnYpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGhleF9p c19xdWFsaWZpZWRfZm9yX2ludChDUFVIZXhhZ29uU3RhdGUgKmVudiwgaW50IGludF9udW0pCit7 CisgICAgYm9vbCBzeXNjZmdfZ2llID0gZ2V0X3N5c2NmZ19naWUoZW52KTsKKyAgICBib29sIGlh ZCA9IGdldF9pYWRfYml0KGVudiwgaW50X251bSk7CisgICAgYm9vbCBzc3JfaWUgPSBnZXRfc3Ny X2llKGVudik7CisgICAgYm9vbCBzc3JfZXggPSBnZXRfc3NyX2V4KGVudik7CisgICAgYm9vbCBp bWFzayA9IGdldF9pbWFza19iaXQoZW52LCBpbnRfbnVtKTsKKworICAgIHJldHVybiBzeXNjZmdf Z2llICYmICFpYWQgJiYgc3NyX2llICYmICFzc3JfZXggJiYgIWltYXNrOworfQorCitzdGF0aWMg dm9pZCBjbGVhcl9wZW5kaW5nX2xvY2tzKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIGdf YXNzZXJ0KGJxbF9sb2NrZWQoKSk7CisgICAgaWYgKGVudi0+azBfbG9ja19zdGF0ZSA9PSBIRVhf TE9DS19XQUlUSU5HKSB7CisgICAgICAgIGVudi0+azBfbG9ja19zdGF0ZSA9IEhFWF9MT0NLX1VO TE9DS0VEOworICAgIH0KKyAgICBpZiAoZW52LT50bGJfbG9ja19zdGF0ZSA9PSBIRVhfTE9DS19X QUlUSU5HKSB7CisgICAgICAgIGVudi0+dGxiX2xvY2tfc3RhdGUgPSBIRVhfTE9DS19VTkxPQ0tF RDsKKyAgICB9Cit9CisKK3N0YXRpYyBib29sIHNob3VsZF9ub3RfZXhlYyhDUFVIZXhhZ29uU3Rh dGUgKmVudikKK3sKKyAgICByZXR1cm4gKGdldF9leGVfbW9kZShlbnYpID09IEhFWF9FWEVfTU9E RV9XQUlUKTsKK30KKworc3RhdGljIHZvaWQgcmVzdG9yZV9zdGF0ZShDUFVIZXhhZ29uU3RhdGUg KmVudiwgYm9vbCBpbnRfYWNjZXB0ZWQpCit7CisgICAgQ1BVU3RhdGUgKmNzID0gZW52X2NwdShl bnYpOworICAgIGNwdV9yZXNldF9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfSEFSRCB8IENQ VV9JTlRFUlJVUFRfU1dJKTsKKyAgICBpZiAoIWludF9hY2NlcHRlZCAmJiBzaG91bGRfbm90X2V4 ZWMoZW52KSkgeworICAgICAgICBjcHVfaW50ZXJydXB0KGNzLCBDUFVfSU5URVJSVVBUX0hBTFQp OworICAgIH0KK30KKworc3RhdGljIHZvaWQgaGV4X2FjY2VwdF9pbnQoQ1BVSGV4YWdvblN0YXRl ICplbnYsIGludCBpbnRfbnVtKQoreworICAgIENQVVN0YXRlICpjcyA9IGVudl9jcHUoZW52KTsK KyAgICBIZXhhZ29uQ1BVICpjcHUgPSBlbnZfYXJjaGNwdShlbnYpOworICAgIHVpbnQzMl90IGV2 YiA9CisgICAgICAgIGhleGFnb25fZ2xvYmFscmVnX3JlYWQoY3B1LT5nbG9iYWxyZWdzLCBIRVhf U1JFR19FVkIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52LT50aHJlYWRJZCk7 CisgICAgY29uc3QgaW50IGV4ZV9tb2RlID0gZ2V0X2V4ZV9tb2RlKGVudik7CisgICAgY29uc3Qg Ym9vbCBpbl93YWl0X21vZGUgPSBleGVfbW9kZSA9PSBIRVhfRVhFX01PREVfV0FJVDsKKworICAg IHNldF9pcGVuZF9iaXQoZW52LCBpbnRfbnVtLCAwKTsKKyAgICBzZXRfaWFkX2JpdChlbnYsIGlu dF9udW0sIDEpOworICAgIHNldF9zc3JfZXhfY2F1c2UoZW52LCAxLCBIRVhfQ0FVU0VfSU5UMCB8 IGludF9udW0pOworICAgIGNzLT5leGNlcHRpb25faW5kZXggPSBIRVhfRVZFTlRfSU5UMCArIGlu dF9udW07CisgICAgZW52LT5jYXVzZV9jb2RlID0gSEVYX0VWRU5UX0lOVDAgKyBpbnRfbnVtOwor ICAgIGNsZWFyX3BlbmRpbmdfbG9ja3MoZW52KTsKKyAgICBpZiAoaW5fd2FpdF9tb2RlKSB7Cisg ICAgICAgIHFlbXVfbG9nX21hc2soQ1BVX0xPR19JTlQsCisgICAgICAgICAgICAiJXM6IHRocmVh ZCAiIFRBUkdFVF9GTVRfbGQgIiByZXN1bWluZywgZXhpdGluZyBXQUlUIG1vZGVcbiIsCisgICAg ICAgICAgICBfX2Z1bmNfXywgZW52LT50aHJlYWRJZCk7CisgICAgICAgIHNldF9lbHIoZW52LCBl bnYtPndhaXRfbmV4dF9wYyk7CisgICAgICAgIGNsZWFyX3dhaXRfbW9kZShlbnYpOworICAgICAg ICBjcy0+aGFsdGVkID0gZmFsc2U7CisgICAgfSBlbHNlIGlmIChlbnYtPmswX2xvY2tfc3RhdGUg PT0gSEVYX0xPQ0tfV0FJVElORykgeworICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOwor ICAgIH0gZWxzZSB7CisgICAgICAgIHNldF9lbHIoZW52LCBlbnYtPmdwcltIRVhfUkVHX1BDXSk7 CisgICAgfQorICAgIGVudi0+Z3ByW0hFWF9SRUdfUENdID0gZXZiIHwgKGNzLT5leGNlcHRpb25f aW5kZXggPDwgMik7CisgICAgaWYgKGdldF9pcGVuZChlbnYpID09IDApIHsKKyAgICAgICAgcmVz dG9yZV9zdGF0ZShlbnYsIHRydWUpOworICAgIH0KK30KKworCitib29sIGhleF9jaGVja19pbnRl cnJ1cHRzKENQVUhleGFnb25TdGF0ZSAqZW52KQoreworICAgIENQVVN0YXRlICpjcyA9IGVudl9j cHUoZW52KTsKKyAgICBib29sIGludF9oYW5kbGVkID0gZmFsc2U7CisgICAgYm9vbCBzc3JfZXgg PSBnZXRfc3NyX2V4KGVudik7CisgICAgaW50IG1heF9pbnRzID0gMzI7CisgICAgYm9vbCBzY2hl ZGNmZ2VuOworCisgICAgLyogRWFybHkgZXhpdCBpZiBub3RoaW5nIHBlbmRpbmcgKi8KKyAgICBp ZiAoZ2V0X2lwZW5kKGVudikgPT0gMCkgeworICAgICAgICByZXN0b3JlX3N0YXRlKGVudiwgZmFs c2UpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQlFMX0xPQ0tfR1VBUkQo KTsKKyAgICAvKiBPbmx5IGNoZWNrIHByaW9yaXRpZXMgd2hlbiBzY2hlZGNmZ2VuIGlzIHNldCAq LworICAgIHNjaGVkY2ZnZW4gPSBnZXRfc2NoZWRjZmdlbihlbnYpOworICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbWF4X2ludHM7IGkrKykgeworICAgICAgICBpZiAoIWdldF9pYWRfYml0KGVudiwg aSkgJiYgZ2V0X2lwZW5kX2JpdChlbnYsIGkpKSB7CisgICAgICAgICAgICBib29sIHN5c2NmZ19n aWUsIGlhZCwgc3NyX2llLCBpbWFzazsKKworICAgICAgICAgICAgcWVtdV9sb2dfbWFzayhDUFVf TE9HX0lOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiB0aHJlYWRbIiBUQVJHRVRf Rk1UX2xkICJdICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInBjID0gMHgiIFRBUkdFVF9G TVRfbHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBmb3VuZCBpbnQgJWRcbiIsCisgICAg ICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBlbnYtPnRocmVhZElkLAorICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnYtPmdwcltIRVhfUkVHX1BDXSwgaSk7CisgICAgICAgICAgICBp ZiAoaGV4X2lzX3F1YWxpZmllZF9mb3JfaW50KGVudiwgaSkgJiYKKyAgICAgICAgICAgICAgICAo IXNjaGVkY2ZnZW4gfHwgaXNfbG93ZXN0X3ByaW8oZW52LCBpKSkpIHsKKyAgICAgICAgICAgICAg ICBxZW11X2xvZ19tYXNrKENQVV9MT0dfSU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIiVzOiB0aHJlYWRbIiBUQVJHRVRfRk1UX2xkICJdIGludCAlZCBoYW5kbGVkX1xuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBlbnYtPnRocmVhZElkLCBpKTsK KyAgICAgICAgICAgICAgICBoZXhfYWNjZXB0X2ludChlbnYsIGkpOworICAgICAgICAgICAgICAg IGludF9oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg IH0KKyAgICAgICAgICAgIHN5c2NmZ19naWUgPSBnZXRfc3lzY2ZnX2dpZShlbnYpOworICAgICAg ICAgICAgaWFkID0gZ2V0X2lhZF9iaXQoZW52LCBpKTsKKyAgICAgICAgICAgIHNzcl9pZSA9IGdl dF9zc3JfaWUoZW52KTsKKyAgICAgICAgICAgIGltYXNrID0gZ2V0X2ltYXNrX2JpdChlbnYsIGkp OworCisgICAgICAgICAgICBxZW11X2xvZ19tYXNrKENQVV9MT0dfSU5ULAorICAgICAgICAgICAg ICAgICAgICAgICAgICAiJXM6IHRocmVhZFsiIFRBUkdFVF9GTVRfbGQgIl0gIgorICAgICAgICAg ICAgICAgICAgICAgICAgICAiaW50ICVkIG5vdCBoYW5kbGVkLCBxdWFsaWZpZWQ6ICVkLCAiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICJzY2hlZGNmZ19lbjogJWQsIGxvdyBwcmlvICVkXG4i LAorICAgICAgICAgICAgICAgICAgICAgICAgICBfX2Z1bmNfXywgZW52LT50aHJlYWRJZCwgaSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgaGV4X2lzX3F1YWxpZmllZF9mb3JfaW50KGVudiwg aSksIHNjaGVkY2ZnZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2xvd2VzdF9wcmlv KGVudiwgaSkpOworCisgICAgICAgICAgICBxZW11X2xvZ19tYXNrKENQVV9MT0dfSU5ULAorICAg ICAgICAgICAgICAgICAgICAgICAgICAiJXM6IHRocmVhZFsiIFRBUkdFVF9GTVRfbGQgIl0gIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50ICVkIG5vdCBoYW5kbGVkLCBHSUUgJWQsIGlh ZCAlZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAiU1NSOklFICVkLCBTU1I6RVg6ICVk LCBpbWFzayBiaXQgJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZnVuY19fLCBl bnYtPnRocmVhZElkLCBpLCBzeXNjZmdfZ2llLCBpYWQsIHNzcl9pZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgc3NyX2V4LCBpbWFzayk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgor ICAgICAqIElmIHdlIGRpZG4ndCBoYW5kbGUgdGhlIGludGVycnVwdCBhbmQgaXQgd2Fzbid0Cisg ICAgICogYmVjYXVzZSB3ZSB3ZXJlIGluIEVYIHN0YXRlLCB0aGVuIHdlIHdvbid0IGJlIGFibGUK KyAgICAgKiB0byBleGVjdXRlIHRoZSBpbnRlcnJ1cHQgb24gdGhpcyBDUFUgdW5sZXNzIHNvbWV0 aGluZworICAgICAqIGNoYW5nZXMgaW4gdGhlIENQVSBzdGF0ZS4gIENsZWFyIHRoZSBpbnRlcnJ1 cHRfcmVxdWVzdCBiaXRzCisgICAgICogd2hpbGUgcHJlc2VydmluZyB0aGUgSVBFTkQgYml0cywg YW5kIHdlIGNhbiByZS1hc3NlcnQgdGhlCisgICAgICogaW50ZXJydXB0X3JlcXVlc3QgYml0KHMp IHdoZW4gd2UgZXhlY3V0ZSBvbmUgb2YgdGhvc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAqLworICAg IGlmICghaW50X2hhbmRsZWQgJiYgIXNzcl9leCkgeworICAgICAgICByZXN0b3JlX3N0YXRlKGVu diwgaW50X2hhbmRsZWQpOworICAgIH0gZWxzZSBpZiAoaW50X2hhbmRsZWQpIHsKKyAgICAgICAg YXNzZXJ0KCFjcy0+aGFsdGVkKTsKKyAgICB9CisKKyAgICByZXR1cm4gaW50X2hhbmRsZWQ7Cit9 CisKK3ZvaWQgaGV4X2NsZWFyX2ludGVycnVwdHMoQ1BVSGV4YWdvblN0YXRlICplbnYsIHVpbnQz Ml90IG1hc2ssIHVpbnQzMl90IHR5cGUpCit7CisgICAgaWYgKG1hc2sgPT0gMCkgeworICAgICAg ICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3RpZnkgYWxsIENQVXMgdGhhdCB0 aGUgaW50ZXJydXB0IGhhcyBoYXBwZW5lZAorICAgICAqLworICAgIEJRTF9MT0NLX0dVQVJEKCk7 CisgICAgY2xlYXJfaXBlbmQoZW52LCBtYXNrKTsKKyAgICBoZXhfaW50ZXJydXB0X3VwZGF0ZShl bnYpOworfQorCit2b2lkIGhleF9yYWlzZV9pbnRlcnJ1cHRzKENQVUhleGFnb25TdGF0ZSAqZW52 LCB1aW50MzJfdCBtYXNrLCB1aW50MzJfdCB0eXBlKQoreworICAgIGdfYXNzZXJ0KGJxbF9sb2Nr ZWQoKSk7CisgICAgaWYgKG1hc2sgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisg ICAgLyoKKyAgICAgKiBOb3RpZnkgYWxsIENQVXMgdGhhdCB0aGUgaW50ZXJydXB0IGhhcyBoYXBw ZW5lZAorICAgICAqLworICAgIHNldF9pcGVuZChlbnYsIG1hc2spOworICAgIGhleF9pbnRlcnJ1 cHRfdXBkYXRlKGVudik7Cit9CisKK3ZvaWQgaGV4X2ludGVycnVwdF91cGRhdGUoQ1BVSGV4YWdv blN0YXRlICplbnYpCit7CisgICAgQ1BVU3RhdGUgKmNzOworCisgICAgZ19hc3NlcnQoYnFsX2xv Y2tlZCgpKTsKKyAgICBpZiAoZ2V0X2lwZW5kKGVudikgIT0gMCkgeworICAgICAgICBDUFVfRk9S RUFDSChjcykgeworICAgICAgICAgICAgQ1BVSGV4YWdvblN0YXRlICpoZXhfZW52ID0gY3B1X2Vu dihjcyk7CisgICAgICAgICAgICBjb25zdCBpbnQgZXhlX21vZGUgPSBnZXRfZXhlX21vZGUoaGV4 X2Vudik7CisgICAgICAgICAgICBpZiAoZXhlX21vZGUgIT0gSEVYX0VYRV9NT0RFX09GRikgewor ICAgICAgICAgICAgICAgIGNwdV9pbnRlcnJ1cHQoY3MsIENQVV9JTlRFUlJVUFRfU1dJKTsKKyAg ICAgICAgICAgICAgICBjcHVfcmVzdW1lKGNzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgIH0KK30KLS0gCjIuMzQuMQoK