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 90065C47DD3 for ; Mon, 22 Jan 2024 06:37:36 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rRnuU-0003As-OZ; Mon, 22 Jan 2024 01:35:54 -0500 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 1rRnuN-00036E-1E for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:48 -0500 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 1rRnuJ-0005jb-Mt for qemu-devel@nongnu.org; Mon, 22 Jan 2024 01:35:46 -0500 Received: from pps.filterd (m0279869.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.24/8.17.1.24) with ESMTP id 40M5FKY7025911; Mon, 22 Jan 2024 06:35:31 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; h= from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-type:content-transfer-encoding; s= qcppdkim1; bh=36WrSWw0YnnK8IGaHi0p9Tlcf3HLdx+wMXtYwCgglao=; b=Q/ LYIy8gVek7w6Crl11b1mv8wYp/WJWLveBbGPNRTo4o9Tyg6vIG+G2oJYLdAmWjXy AsZoeGdCIUb+TbF062SHhGoBB3tQMEOjbsSS6CnSQ8bgtDNZ9h/cLeybboVfVWRi dEK56smJL1Aa0CKpF3ppb/oJjAHqNbXAXq9psla4B8SSzghz6oO/RXUWVy6R9fhT l10rlY79shf40Fb7Jd7vBG4T/MrCZ2dUZHsd5UAMx2wa15PtDB4UaKCpkO0gOBb2 YxDe0MwFP6OydMdhEV3I73JX7iL6wuRIe56gFs9qS66tcIZnb2mZucMte0hLq8bO agptd/ZpTvJ95vpgzEkQ== Received: from nalasppmta05.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3vr56d35gb-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:30 +0000 (GMT) Received: from nalasex01a.na.qualcomm.com (nalasex01a.na.qualcomm.com [10.47.209.196]) by NALASPPMTA05.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTPS id 40M6ZTRM002725 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 22 Jan 2024 06:35:29 GMT Received: from hu-bcain-lv.qualcomm.com (10.49.16.6) by nalasex01a.na.qualcomm.com (10.47.209.196) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.40; Sun, 21 Jan 2024 22:35:28 -0800 From: Brian Cain To: CC: , , , , , , , , , , Subject: [PULL 12/15] Hexagon (target/hexagon) Use QEMU decodetree (32-bit instructions) Date: Sun, 21 Jan 2024 22:34:58 -0800 Message-ID: <20240122063501.782041-13-bcain@quicinc.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240122063501.782041-1-bcain@quicinc.com> References: <20240122063501.782041-1-bcain@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Originating-IP: [10.49.16.6] X-ClientProxiedBy: nalasex01b.na.qualcomm.com (10.47.209.197) To nalasex01a.na.qualcomm.com (10.47.209.196) X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-ORIG-GUID: sGTgJVr2w3My7aGT0Cx4LCtZQQ3Lxvai X-Proofpoint-GUID: sGTgJVr2w3My7aGT0Cx4LCtZQQ3Lxvai X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.997,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-01-21_04,2024-01-19_02,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 malwarescore=0 phishscore=0 suspectscore=0 adultscore=0 impostorscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1015 mlxscore=0 priorityscore=1501 mlxlogscore=887 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.19.0-2311290000 definitions=main-2401220046 Received-SPF: pass client-ip=205.220.180.131; envelope-from=bcain@quicinc.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: 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 RnJvbTogVGF5bG9yIFNpbXBzb24gPGx0YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KClRoZSBEZWNv ZGV0cmVlIFNwZWNpZmljYXRpb24gY2FuIGJlIGZvdW5kIGhlcmUKaHR0cHM6Ly93d3cucWVtdS5v cmcvZG9jcy9tYXN0ZXIvZGV2ZWwvZGVjb2RldHJlZS5odG1sCgpDb3ZlcnMgYWxsIDMyLWJpdCBp bnN0cnVjdGlvbnMsIGluY2x1ZGluZyBIVlgKCldlIGdlbmVyYXRlIHNlcGFyYXRlIGRlY29kZXJz IGZvciBlYWNoIGluc3RydWN0aW9uIGNsYXNzLiAgVGhlIHJlYXNvbgp3aWxsIGJlIG1vcmUgYXBw YXJlbnQgaW4gdGhlIG5leHQgcGF0Y2ggaW4gdGhpcyBzZXJpZXMuCgpXZSBhZGQgMiBuZXcgc2Ny aXB0cwogICAgZ2VuX2RlY29kZXRyZWUucHkgICAgICAgIEdlbmVyYXRlIHRoZSBpbnB1dCB0byBk ZWNvZGV0cmVlLnB5CiAgICBnZW5fdHJhbnNfZnVuY3MucHkgICAgICAgR2VuZXJhdGUgdGhlIHRy YW5zXyogZnVuY3Rpb25zIHVzZWQgYnkgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b3V0cHV0IG9mIGRlY29kZXRyZWUucHkKClNpbmNlIHRoZSBmdW5jdGlvbnMgZ2VuZXJhdGVkIGJ5 IGRlY29kZXRyZWUucHkgdGFrZSBEaXNhc0NvbnRleHQgKiBhcyBhbgphcmd1bWVudCwgd2UgYWRk IHRoZSBhcmd1bWVudCB0byBhIGNvdXBsZSBvZiBmdW5jdGlvbnMgdGhhdCBkaWRuJ3QgbmVlZApp dCBwcmV2aW91c2x5LiAgV2UgYWxzbyBzZXQgdGhlIGluc24gZmllbGQgaW4gRGlzYXNDb250ZXh0 IGR1cmluZyBkZWNvZGUKYmVjYXVzZSBpdCBpcyB1c2VkIGJ5IHRoZSB0cmFuc18qIGZ1bmN0aW9u cy4KClRoZXJlIGlzIGEgZ19hc3NlcnRfbm90X3JlYWNoZWQoKSBpbiBkZWNvZGVfaW5zbnMoKSBp biBkZWNvZGUuYyB0bwp2ZXJpZnkgd2UgbmV2ZXIgdHJ5IHRvIHVzZSB0aGUgb2xkIGRlY29kZXIg b24gMzItYml0IGluc3RydWN0aW9ucwoKU2lnbmVkLW9mZi1ieTogVGF5bG9yIFNpbXBzb24gPGx0 YXlsb3JzaW1wc29uQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEJyaWFuIENhaW4gPGJjYWluQHF1 aWNpbmMuY29tPgpNZXNzYWdlLUlkOiA8MjAyNDAxMTUyMjE0NDMuMzY1Mjg3LTItbHRheWxvcnNp bXBzb25AZ21haWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBCcmlhbiBDYWluIDxiY2FpbkBxdWljaW5j LmNvbT4KLS0tCiB0YXJnZXQvaGV4YWdvbi9SRUFETUUgICAgICAgICAgICAgfCAgMTMgKy0KIHRh cmdldC9oZXhhZ29uL2RlY29kZS5jICAgICAgICAgICB8ICA1NCArKysrKysrKy0KIHRhcmdldC9o ZXhhZ29uL2RlY29kZS5oICAgICAgICAgICB8ICAgNSArLQogdGFyZ2V0L2hleGFnb24vZ2VuX2Rl Y29kZXRyZWUucHkgIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogdGFyZ2V0 L2hleGFnb24vZ2VuX3RyYW5zX2Z1bmNzLnB5IHwgMTMyICsrKysrKysrKysrKysrKysrKysrKwog dGFyZ2V0L2hleGFnb24vbWVzb24uYnVpbGQgICAgICAgIHwgIDU1ICsrKysrKysrKwogdGFyZ2V0 L2hleGFnb24vdHJhbnNsYXRlLmMgICAgICAgIHwgICA0ICstCiA3IGZpbGVzIGNoYW5nZWQsIDQz OSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0YXJn ZXQvaGV4YWdvbi9nZW5fZGVjb2RldHJlZS5weQogY3JlYXRlIG1vZGUgMTAwNzU1IHRhcmdldC9o ZXhhZ29uL2dlbl90cmFuc19mdW5jcy5weQoKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL1JF QURNRSBiL3RhcmdldC9oZXhhZ29uL1JFQURNRQppbmRleCA2OWIyZmZlOWJiLi4xYjJhNGQwZWFj IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9SRUFETUUKKysrIGIvdGFyZ2V0L2hleGFnb24v UkVBRE1FCkBAIC0xODksMTEgKzE4OSwxNiBAQCB0aGUgcGFja2V0LCBhbmQgd2UgbWFyayB0aGUg aW1wbGljaXQgd3JpdGVzLiAgQWZ0ZXIgdGhlIGFuYWx5c2lzIGlzIHBlcmZvcm1lZCwKIHdlIGlu aXRpYWxpemUgdGhlIHJlc3VsdCByZWdpc3RlciBmb3IgZWFjaCBvZiB0aGUgcHJlZGljYXRlZCBh c3NpZ25tZW50cy4KIAogSW4gYWRkaXRpb24gdG8gaW5zdHJ1Y3Rpb24gc2VtYW50aWNzLCB3ZSB1 c2UgYSBnZW5lcmF0b3IgdG8gY3JlYXRlIHRoZSBkZWNvZGUKLXRyZWUuICBUaGlzIGdlbmVyYXRp b24gaXMgYWxzbyBhIHR3byBzdGVwIHByb2Nlc3MuICBUaGUgZmlyc3Qgc3RlcCBpcyB0byBydW4K LXRhcmdldC9oZXhhZ29uL2dlbl9kZWN0cmVlX2ltcG9ydC5jIHRvIHByb2R1Y2UKK3RyZWUuICBU aGlzIGdlbmVyYXRpb24gaXMgYSBmb3VyIHN0ZXAgcHJvY2Vzcy4KK1N0ZXAgMSBpcyB0byBydW4g dGFyZ2V0L2hleGFnb24vZ2VuX2RlY3RyZWVfaW1wb3J0LmMgdG8gcHJvZHVjZQogICAgIDxCVUlM RF9ESVI+L3RhcmdldC9oZXhhZ29uL2lzZXQucHkKLVRoaXMgZmlsZSBpcyBpbXBvcnRlZCBieSB0 YXJnZXQvaGV4YWdvbi9kZWN0cmVlLnB5IHRvIHByb2R1Y2UKLSAgICA8QlVJTERfRElSPi90YXJn ZXQvaGV4YWdvbi9kZWN0cmVlX2dlbmVyYXRlZC5oLmluYworU3RlcCAyIGlzIHRvIGltcG9ydCBp c2V0LnB5IGludG8gdGFyZ2V0L2hleGFnb24vZ2VuX2RlY29kZXRyZWUucHkgdG8gcHJvZHVjZQor ICAgIDxCVUlMRF9ESVI+L3RhcmdldC9oZXhhZ29uL25vcm1hbF9kZWNvZGVfZ2VuZXJhdGVkCisg ICAgPEJVSUxEX0RJUj4vdGFyZ2V0L2hleGFnb24vaHZ4X2RlY29kZV9nZW5lcmF0ZWQKK1N0ZXAg MyBpcyB0byBwcm9jZXNzIHRoZSBhYm92ZSBmaWxlcyB3aXRoIFFFTVUncyBkZWNvZGV0cmVlLnB5 IHRvIHByb2R1Y2UKKyAgICA8QlVJTERfRElSPi90YXJnZXQvaGV4YWdvbi9kZWNvZGVfKl9nZW5l cmF0ZWQuYy5pbmMKK1N0ZXAgNCBpcyB0byBpbXBvcnQgaXNldC5weSBpbnRvIHRhcmdldC9oZXhh Z29uL2dlbl90cmFuc19mdW5jcy5weSB0byBwcm9kdWNlCisgICAgPEJVSUxEX0RJUj4vdGFyZ2V0 L2hleGFnb24vZGVjb2RldHJlZV90cmFuc19mdW5jc19nZW5lcmF0ZWQuYy5pbmMKIAogKioqIEtl eSBGaWxlcyAqKioKIApkaWZmIC0tZ2l0IGEvdGFyZ2V0L2hleGFnb24vZGVjb2RlLmMgYi90YXJn ZXQvaGV4YWdvbi9kZWNvZGUuYwppbmRleCA5NDZjNTVjYzcxLi5iZGRhZDFmNzVlIDEwMDY0NAot LS0gYS90YXJnZXQvaGV4YWdvbi9kZWNvZGUuYworKysgYi90YXJnZXQvaGV4YWdvbi9kZWNvZGUu YwpAQCAtNTIsNiArNTIsMzQgQEAgREVGX1JFR01BUChSXzgsICAgOCwgIDAsIDEsIDIsIDMsIDQs IDUsIDYsIDcpCiAjZGVmaW5lIERFQ09ERV9NQVBQRURfUkVHKE9QTlVNLCBOQU1FKSBcCiAgICAg aW5zbi0+cmVnbm9bT1BOVU1dID0gREVDT0RFX1JFR0lTVEVSXyMjTkFNRVtpbnNuLT5yZWdub1tP UE5VTV1dOwogCisvKiBIZWxwZXIgZnVuY3Rpb25zIGZvciBkZWNvZGVfKl9nZW5lcmF0ZWQuYy5p bmMgKi8KKyNkZWZpbmUgREVDT0RFX01BUFBFRChOQU1FKSBcCitzdGF0aWMgaW50IGRlY29kZV9t YXBwZWRfcmVnXyMjTkFNRShEaXNhc0NvbnRleHQgKmN0eCwgaW50IHgpIFwKK3sgXAorICAgIHJl dHVybiBERUNPREVfUkVHSVNURVJfIyNOQU1FW3hdOyBcCit9CitERUNPREVfTUFQUEVEKFJfMTYp CitERUNPREVfTUFQUEVEKFJfOCkKKworLyogSGVscGVyIGZ1bmN0aW9uIGZvciBkZWNvZGV0cmVl X3RyYW5zX2Z1bmNzX2dlbmVyYXRlZC5jLmluYyAqLworc3RhdGljIGludCBzaGlmdF9sZWZ0KERp c2FzQ29udGV4dCAqY3R4LCBpbnQgeCwgaW50IG4sIGludCBpbW1ubykKK3sKKyAgICBpbnQgcmV0 ID0geDsKKyAgICBJbnNuICppbnNuID0gY3R4LT5pbnNuOworICAgIGlmICghaW5zbi0+ZXh0ZW5z aW9uX3ZhbGlkIHx8CisgICAgICAgIGluc24tPndoaWNoX2V4dGVuZGVkICE9IGltbW5vKSB7Cisg ICAgICAgIHJldCA8PD0gbjsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworLyogSW5jbHVk ZSB0aGUgZ2VuZXJhdGVkIGRlY29kZXIgZm9yIDMyIGJpdCBpbnNuICovCisjaW5jbHVkZSAiZGVj b2RlX25vcm1hbF9nZW5lcmF0ZWQuYy5pbmMiCisjaW5jbHVkZSAiZGVjb2RlX2h2eF9nZW5lcmF0 ZWQuYy5pbmMiCisKKy8qIEluY2x1ZGUgdGhlIGdlbmVyYXRlZCBoZWxwZXJzIGZvciB0aGUgZGVj b2RlciAqLworI2luY2x1ZGUgImRlY29kZXRyZWVfdHJhbnNfZnVuY3NfZ2VuZXJhdGVkLmMuaW5j IgorCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgY29uc3Qgc3RydWN0IERlY3RyZWVUYWJsZSAqdGFi bGVfbGluazsKICAgICBjb25zdCBzdHJ1Y3QgRGVjdHJlZVRhYmxlICp0YWJsZV9saW5rX2I7CkBA IC01NTAsNyArNTc4LDggQEAgYXBwbHlfZXh0ZW5kZXIoUGFja2V0ICpwa3QsIGludCBpLCB1aW50 MzJfdCBleHRlbmRlcikKICAgICBpbnQgaW1tZWRfbnVtOwogICAgIHVpbnQzMl90IGJhc2VfaW1t ZWQ7CiAKLSAgICBpbW1lZF9udW0gPSBvcGNvZGVfd2hpY2hfaW1tZWRpYXRlX2lzX2V4dGVuZGVk KHBrdC0+aW5zbltpXS5vcGNvZGUpOworICAgIGltbWVkX251bSA9IHBrdC0+aW5zbltpXS53aGlj aF9leHRlbmRlZDsKKyAgICBnX2Fzc2VydChpbW1lZF9udW0gPT0gb3Bjb2RlX3doaWNoX2ltbWVk aWF0ZV9pc19leHRlbmRlZChwa3QtPmluc25baV0ub3Bjb2RlKSk7CiAgICAgYmFzZV9pbW1lZCA9 IHBrdC0+aW5zbltpXS5pbW1lZFtpbW1lZF9udW1dOwogCiAgICAgcGt0LT5pbnNuW2ldLmltbWVk W2ltbWVkX251bV0gPSBleHRlbmRlciB8IGZaWFROKDYsIDMyLCBiYXNlX2ltbWVkKTsKQEAgLTc2 MiwxMiArNzkxLDE5IEBAIGRlY29kZV9pbnNuc190YWJsZXdhbGsoSW5zbiAqaW5zbiwgY29uc3Qg RGVjdHJlZVRhYmxlICp0YWJsZSwKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludAotZGVjb2RlX2lu c25zKEluc24gKmluc24sIHVpbnQzMl90IGVuY29kaW5nKQorZGVjb2RlX2luc25zKERpc2FzQ29u dGV4dCAqY3R4LCBJbnNuICppbnNuLCB1aW50MzJfdCBlbmNvZGluZykKIHsKICAgICBjb25zdCBE ZWN0cmVlVGFibGUgKnRhYmxlOwogICAgIGlmIChwYXJzZV9iaXRzKGVuY29kaW5nKSAhPSAwKSB7 CisgICAgICAgIGlmIChkZWNvZGVfbm9ybWFsKGN0eCwgZW5jb2RpbmcpIHx8CisgICAgICAgICAg ICBkZWNvZGVfaHZ4KGN0eCwgZW5jb2RpbmcpKSB7CisgICAgICAgICAgICBpbnNuLT5nZW5lcmF0 ZSA9IG9wY29kZV9nZW5wdHJbaW5zbi0+b3Bjb2RlXTsKKyAgICAgICAgICAgIGluc24tPmljbGFz cyA9IGljbGFzc19iaXRzKGVuY29kaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAg ICB9CiAgICAgICAgIC8qIFN0YXJ0IHdpdGggUFAgdGFibGUgLSAzMiBiaXQgaW5zdHJ1Y3Rpb25z ICovCiAgICAgICAgIHRhYmxlID0gJmRlY3RyZWVfdGFibGVfREVDT0RFX1JPT1RfMzI7CisgICAg ICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLyogc3Rh cnQgd2l0aCBFRSB0YWJsZSAtIGR1cGxleCBpbnN0cnVjdGlvbnMgKi8KICAgICAgICAgdGFibGUg PSAmZGVjdHJlZV90YWJsZV9ERUNPREVfUk9PVF9FRTsKQEAgLTkxNiw4ICs5NTIsOCBAQCBkZWNv ZGVfc2V0X3Nsb3RfbnVtYmVyKFBhY2tldCAqcGt0KQogICogb3IgbnVtYmVyIG9mIHdvcmRzIHVz ZWQgb24gc3VjY2VzcwogICovCiAKLWludCBkZWNvZGVfcGFja2V0KGludCBtYXhfd29yZHMsIGNv bnN0IHVpbnQzMl90ICp3b3JkcywgUGFja2V0ICpwa3QsCi0gICAgICAgICAgICAgICAgICBib29s IGRpc2FzX29ubHkpCitpbnQgZGVjb2RlX3BhY2tldChEaXNhc0NvbnRleHQgKmN0eCwgaW50IG1h eF93b3JkcywgY29uc3QgdWludDMyX3QgKndvcmRzLAorICAgICAgICAgICAgICAgICAgUGFja2V0 ICpwa3QsIGJvb2wgZGlzYXNfb25seSkKIHsKICAgICBpbnQgbnVtX2luc25zID0gMDsKICAgICBp bnQgd29yZHNfcmVhZCA9IDA7CkBAIC05MzAsOSArOTY2LDExIEBAIGludCBkZWNvZGVfcGFja2V0 KGludCBtYXhfd29yZHMsIGNvbnN0IHVpbnQzMl90ICp3b3JkcywgUGFja2V0ICpwa3QsCiAgICAg bWVtc2V0KHBrdCwgMCwgc2l6ZW9mKCpwa3QpKTsKICAgICAvKiBUcnkgdG8gYnVpbGQgcGFja2V0 ICovCiAgICAgd2hpbGUgKCFlbmRfb2ZfcGFja2V0ICYmICh3b3Jkc19yZWFkIDwgbWF4X3dvcmRz KSkgeworICAgICAgICBJbnNuICppbnNuID0gJnBrdC0+aW5zbltudW1faW5zbnNdOworICAgICAg ICBjdHgtPmluc24gPSBpbnNuOwogICAgICAgICBlbmNvZGluZzMyID0gd29yZHNbd29yZHNfcmVh ZF07CiAgICAgICAgIGVuZF9vZl9wYWNrZXQgPSBpc19wYWNrZXRfZW5kKGVuY29kaW5nMzIpOwot ICAgICAgICBuZXdfaW5zbnMgPSBkZWNvZGVfaW5zbnMoJnBrdC0+aW5zbltudW1faW5zbnNdLCBl bmNvZGluZzMyKTsKKyAgICAgICAgbmV3X2luc25zID0gZGVjb2RlX2luc25zKGN0eCwgaW5zbiwg ZW5jb2RpbmczMik7CiAgICAgICAgIGdfYXNzZXJ0KG5ld19pbnNucyA+IDApOwogICAgICAgICAv KgogICAgICAgICAgKiBJZiB3ZSBzYXcgYW4gZXh0ZW5kZXIsIG1hcmsgbmV4dCB3b3JkIGV4dGVu ZGVkIHNvIGltbWVkaWF0ZQpAQCAtMTAwNiw5ICsxMDQ0LDEzIEBAIGludCBkZWNvZGVfcGFja2V0 KGludCBtYXhfd29yZHMsIGNvbnN0IHVpbnQzMl90ICp3b3JkcywgUGFja2V0ICpwa3QsCiBpbnQg ZGlzYXNzZW1ibGVfaGV4YWdvbih1aW50MzJfdCAqd29yZHMsIGludCBud29yZHMsIGJmZF92bWEg cGMsCiAgICAgICAgICAgICAgICAgICAgICAgICBHU3RyaW5nICpidWYpCiB7CisgICAgRGlzYXND b250ZXh0IGN0eDsKICAgICBQYWNrZXQgcGt0OwogCi0gICAgaWYgKGRlY29kZV9wYWNrZXQobndv cmRzLCB3b3JkcywgJnBrdCwgdHJ1ZSkgPiAwKSB7CisgICAgbWVtc2V0KCZjdHgsIDAsIHNpemVv ZihEaXNhc0NvbnRleHQpKTsKKyAgICBjdHgucGt0ID0gJnBrdDsKKworICAgIGlmIChkZWNvZGVf cGFja2V0KCZjdHgsIG53b3Jkcywgd29yZHMsICZwa3QsIHRydWUpID4gMCkgewogICAgICAgICBz bnByaW50X2FfcGt0X2Rpc2FzKGJ1ZiwgJnBrdCwgd29yZHMsIHBjKTsKICAgICAgICAgcmV0dXJu IHBrdC5lbmNvZF9wa3Rfc2l6ZV9pbl9ieXRlczsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEv dGFyZ2V0L2hleGFnb24vZGVjb2RlLmggYi90YXJnZXQvaGV4YWdvbi9kZWNvZGUuaAppbmRleCBj NjZmNWVhNjRkLi4zZjMwMTJiOTc4IDEwMDY0NAotLS0gYS90YXJnZXQvaGV4YWdvbi9kZWNvZGUu aAorKysgYi90YXJnZXQvaGV4YWdvbi9kZWNvZGUuaApAQCAtMjEsMTIgKzIxLDEzIEBACiAjaW5j bHVkZSAiY3B1LmgiCiAjaW5jbHVkZSAib3Bjb2Rlcy5oIgogI2luY2x1ZGUgImluc24uaCIKKyNp bmNsdWRlICJ0cmFuc2xhdGUuaCIKIAogdm9pZCBkZWNvZGVfaW5pdCh2b2lkKTsKIAogdm9pZCBk ZWNvZGVfc2VuZF9pbnNuX3RvKFBhY2tldCAqcGFja2V0LCBpbnQgc3RhcnQsIGludCBuZXdsb2Mp OwogCi1pbnQgZGVjb2RlX3BhY2tldChpbnQgbWF4X3dvcmRzLCBjb25zdCB1aW50MzJfdCAqd29y ZHMsIFBhY2tldCAqcGt0LAotICAgICAgICAgICAgICAgICAgYm9vbCBkaXNhc19vbmx5KTsKK2lu dCBkZWNvZGVfcGFja2V0KERpc2FzQ29udGV4dCAqY3R4LCBpbnQgbWF4X3dvcmRzLCBjb25zdCB1 aW50MzJfdCAqd29yZHMsCisgICAgICAgICAgICAgICAgICBQYWNrZXQgKnBrdCwgYm9vbCBkaXNh c19vbmx5KTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS90YXJnZXQvaGV4YWdvbi9nZW5fZGVjb2Rl dHJlZS5weSBiL3RhcmdldC9oZXhhZ29uL2dlbl9kZWNvZGV0cmVlLnB5Cm5ldyBmaWxlIG1vZGUg MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAuLjk2MzQ1NTQxNDIKLS0tIC9kZXYvbnVsbAorKysgYi90 YXJnZXQvaGV4YWdvbi9nZW5fZGVjb2RldHJlZS5weQpAQCAtMCwwICsxLDE5MCBAQAorIyEvdXNy L2Jpbi9lbnYgcHl0aG9uMworCisjIworIyMgIENvcHlyaWdodCAoYykgMjAyNCBUYXlsb3IgU2lt cHNvbiA8bHRheWxvcnNpbXBzb25AZ21haWwuY29tPgorIyMKKyMjICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyMg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisjIyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyMjICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorIyMKKyMjICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMjICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyMgIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMjICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIyMKKyMjICBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorIyMgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisjIworCitpbXBvcnQgaW8KK2ltcG9ydCByZQorCitpbXBvcnQg c3lzCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCBpc2V0CitpbXBvcnQgaGV4X2NvbW1vbgorCitl bmNzID0geworICAgIHRhZzogIiIuam9pbihyZXZlcnNlZChpc2V0LmlzZXRbdGFnXVsiZW5jIl0u cmVwbGFjZSgiICIsICIiKSkpCisgICAgZm9yIHRhZyBpbiBpc2V0LnRhZ3MKKyAgICBpZiBpc2V0 LmlzZXRbdGFnXVsiZW5jIl0gIT0gIk1JU1NJTkcgRU5DT0RJTkciCit9CisKKworcmVncmUgPSBy ZS5jb21waWxlKHIiKCg/PCFEVVApW01OT1JDUFFYU0dWWkFdKShbc3R1dnd4eXpkZWZnXSspKFsu XT9bTGxIaF0/KShcZCtTPykiKQoraW1tcmUgPSByZS5jb21waWxlKHIiWyNdKFtyUnNTdVVtXSko XGQrKSg/Ols6XShcZCspKT8iKQorCisKK2RlZiBvcmRlcmVkX3VuaXF1ZShsKToKKyAgICByZXR1 cm4gc29ydGVkKHNldChsKSwga2V5PWwuaW5kZXgpCisKK251bV9yZWdpc3RlcnMgPSB7IlIiOiAz MiwgIlYiOiAzMn0KKworb3BlcmFuZF9sZXR0ZXJzID0geworICAgICJQIiwKKyAgICAiaSIsCisg ICAgIkkiLAorICAgICJyIiwKKyAgICAicyIsCisgICAgInQiLAorICAgICJ1IiwKKyAgICAidiIs CisgICAgInciLAorICAgICJ4IiwKKyAgICAieSIsCisgICAgInoiLAorICAgICJkIiwKKyAgICAi ZSIsCisgICAgImYiLAorICAgICJnIiwKK30KKworIworIyBUaGVzZSBpbnN0cnVjdGlvbnMgaGF2 ZSB1bnVzZWQgb3BlcmFuZCBsZXR0ZXJzIGluIHRoZWlyIGVuY29kaW5nCisjIFRoZXkgZG9uJ3Qg Y29ycmVzcG9uZCB0byBhY3R1YWwgb3BlcmFuZHMgaW4gdGhlIGluc3RydWN0aW9uIHNlbWFudGlj cworIyBXZSB3aWxsIG1hcmsgdGhlbSBhcyBpZ25vcmVkIGluIFFFTVUgZGVjb2RldHJlZQorIwor dGFnc193aXRoX3VudXNlZF9kX2VuY29kaW5nID0geworICAgICJSNl9yZWxlYXNlX2F0X3ZpIiwK KyAgICAiUjZfcmVsZWFzZV9zdF92aSIsCisgICAgIlM0X3N0b3JlZF9ybF9hdF92aSIsCisgICAg IlM0X3N0b3JlZF9ybF9zdF92aSIsCisgICAgIlMyX3N0b3Jld19ybF9hdF92aSIsCisgICAgIlMy X3N0b3JlZF9ybF9hdF92aSIsCisgICAgIlMyX3N0b3Jld19ybF9zdF92aSIsCit9CisKK3RhZ3Nf d2l0aF91bnVzZWRfdF9lbmNvZGluZyA9IHsKKyAgICAiUjZfcmVsZWFzZV9hdF92aSIsCisgICAg IlI2X3JlbGVhc2Vfc3RfdmkiLAorfQorCitkZWYgc2tpcF90YWcodGFnLCBjbGFzc190b19kZWNv ZGUpOgorICAgIGVuY19jbGFzcyA9IGlzZXQuaXNldFt0YWddWyJlbmNfY2xhc3MiXQorICAgIHJl dHVybiBlbmNfY2xhc3MgIT0gY2xhc3NfdG9fZGVjb2RlCisKKworIyMKKyMjIEdlbmVyYXRlIHRo ZSBRRU1VIGRlY29kZXRyZWUgZmlsZSBmb3IgZWFjaCBpbnN0cnVjdGlvbiBpbiBjbGFzc190b19k ZWNvZGUKKyMjICAgICBGb3IgQTJfYWRkOiBSZDMyPWFkZChSczMyLFJ0MzIpCisjIyAgICAgV2Ug cHJvZHVjZToKKyMjICAgICAlQTJfYWRkX1JkICAgMDo1CisjIyAgICAgJUEyX2FkZF9ScyAgIDE2 OjUKKyMjICAgICAlQTJfYWRkX1J0ICAgODo1CisjIyAgICAgQEEyX2FkZCAgMTExMTAwMTEwMDAu Li4uLi4uLS4uLi4uLS0tLi4uLi4gUmQ9JUEyX2FkZF9SZCBScz0lQTJfYWRkX1JzIFJ0PSVBMl9h ZGRfUnQgJVBQCisjIyAgICAgQTJfYWRkICAgLi4uLi4uLi4uLi4uLi4uLi4uLS4uLi4uLS0tLi4u Li4gQEEyX2FkZAorIyMKK2RlZiBnZW5fZGVjb2RldHJlZV9maWxlKGYsIGNsYXNzX3RvX2RlY29k ZSk6CisgICAgZi53cml0ZShmIiMjIERPIE5PVCBNT0RJRlkgLSBUaGlzIGZpbGUgaXMgZ2VuZXJh dGVkIGJ5IHtzeXMuYXJndlswXX1cblxuIikKKyAgICBmLndyaXRlKCIlUFBcdDE0OjJcblxuIikK KyAgICBmb3IgdGFnIGluIHNvcnRlZChlbmNzLmtleXMoKSwga2V5PWlzZXQudGFncy5pbmRleCk6 CisgICAgICAgIGlmIHNraXBfdGFnKHRhZywgY2xhc3NfdG9fZGVjb2RlKToKKyAgICAgICAgICAg IGNvbnRpbnVlCisKKyAgICAgICAgZW5jID0gZW5jc1t0YWddCisgICAgICAgIGVuY19zdHIgPSAi Ii5qb2luKHJldmVyc2VkKGVuY3NbdGFnXSkpCisgICAgICAgIGYud3JpdGUoKCIjIiAqIDgwKSAr ICJcbiIKKyAgICAgICAgICAgICAgICBmIiMjIHt0YWd9Olx0e2VuY19zdHJ9XG4iCisgICAgICAg ICAgICAgICAgIiMjXG4iKQorCisKKyAgICAgICAgcmVncyA9IG9yZGVyZWRfdW5pcXVlKHJlZ3Jl LmZpbmRhbGwoaXNldC5pc2V0W3RhZ11bInN5bnRheCJdKSkKKyAgICAgICAgaW1tcyA9IG9yZGVy ZWRfdW5pcXVlKGltbXJlLmZpbmRhbGwoaXNldC5pc2V0W3RhZ11bInN5bnRheCJdKSkKKworICAg ICAgICAjIFdyaXRlIHRoZSBmaWVsZCBkZWZpbml0aW9ucyBmb3IgdGhlIHJlZ2lzdGVycworICAg ICAgICBmb3IgcmVnbm8sIHJlZyBpbiBlbnVtZXJhdGUocmVncyk6CisgICAgICAgICAgICByZWdf dHlwZSwgcmVnX2lkLCBfLCByZWdfZW5jX3NpemUgPSByZWcKKyAgICAgICAgICAgIHJlZ19sZXR0 ZXIgPSByZWdfaWRbMF0KKyAgICAgICAgICAgIHJlZ19udW1fY2hvaWNlcyA9IGludChyZWdfZW5j X3NpemUucnN0cmlwKCJTIikpCisgICAgICAgICAgICByZWdfbWFwcGluZyA9IHJlZ190eXBlICsg IiIuam9pbigiXyIgZm9yIGxldHRlciBpbiByZWdfaWQpICsgXAorICAgICAgICAgICAgICAgICAg ICAgICAgICByZWdfZW5jX3NpemUKKyAgICAgICAgICAgIHJlZ19lbmNfZmllbGRzID0gcmUuZmlu ZGFsbChyZWdfbGV0dGVyICsgIisiLCBlbmMpCisKKyAgICAgICAgICAgICMgQ2hlY2sgZm9yIHNv bWUgZXJyb3JzCisgICAgICAgICAgICBpZiBsZW4ocmVnX2VuY19maWVsZHMpID09IDA6CisgICAg ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKGYie3RhZ30gbWlzc2luZyByZWdpc3RlciBmaWVs ZCEiKQorICAgICAgICAgICAgaWYgbGVuKHJlZ19lbmNfZmllbGRzKSA+IDE6CisgICAgICAgICAg ICAgICAgcmFpc2UgRXhjZXB0aW9uKGYie3RhZ30gaGFzIHNwbGl0IHJlZ2lzdGVyIGZpZWxkISIp CisgICAgICAgICAgICByZWdfZW5jX2ZpZWxkID0gcmVnX2VuY19maWVsZHNbMF0KKyAgICAgICAg ICAgIGlmIDIgKiogbGVuKHJlZ19lbmNfZmllbGQpICE9IHJlZ19udW1fY2hvaWNlczoKKyAgICAg ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oZiJ7dGFnfSBoYXMgaW5jb3JyZWN0IHJlZ2lzdGVy IGZpZWxkIHdpZHRoISIpCisKKyAgICAgICAgICAgIGYud3JpdGUoZiIle3RhZ31fe3JlZ190eXBl fXtyZWdfaWR9XHQiCisgICAgICAgICAgICAgICAgICAgIGYie2VuYy5pbmRleChyZWdfZW5jX2Zp ZWxkKX06e2xlbihyZWdfZW5jX2ZpZWxkKX0iKQorCisgICAgICAgICAgICBpZiAocmVnX3R5cGUg aW4gbnVtX3JlZ2lzdGVycyBhbmQKKyAgICAgICAgICAgICAgICByZWdfbnVtX2Nob2ljZXMgIT0g bnVtX3JlZ2lzdGVyc1tyZWdfdHlwZV0pOgorICAgICAgICAgICAgICAgIGYud3JpdGUoZiJcdCFm dW5jdGlvbj1kZWNvZGVfbWFwcGVkX3JlZ197cmVnX21hcHBpbmd9IikKKyAgICAgICAgICAgIGYu d3JpdGUoIlxuIikKKworICAgICAgICAjIFdyaXRlIHRoZSBmaWVsZCBkZWZpbml0aW9ucyBmb3Ig dGhlIGltbWVkaWF0ZXMKKyAgICAgICAgZm9yIGltbSBpbiBpbW1zOgorICAgICAgICAgICAgaW1t bm8gPSAxIGlmIGltbVswXS5pc3VwcGVyKCkgZWxzZSAwCisgICAgICAgICAgICBpbW1fdHlwZSA9 IGltbVswXQorICAgICAgICAgICAgaW1tX3dpZHRoID0gaW50KGltbVsxXSkKKyAgICAgICAgICAg IGltbV9sZXR0ZXIgPSAiaSIgaWYgaW1tX3R5cGUuaXNsb3dlcigpIGVsc2UgIkkiCisgICAgICAg ICAgICBmaWVsZHMgPSBbXQorICAgICAgICAgICAgc2lnbl9tYXJrID0gInMiIGlmIGltbV90eXBl Lmxvd2VyKCkgaW4gInNyIiBlbHNlICIiCisgICAgICAgICAgICBmb3IgbSBpbiByZXZlcnNlZChs aXN0KHJlLmZpbmRpdGVyKGltbV9sZXR0ZXIgKyAiKyIsIGVuYykpKToKKyAgICAgICAgICAgICAg ICBmaWVsZHMuYXBwZW5kKGYie20uc3RhcnQoKX06e3NpZ25fbWFya317bS5lbmQoKSAtIG0uc3Rh cnQoKX0iKQorICAgICAgICAgICAgICAgIHNpZ25fbWFyayA9ICIiCisgICAgICAgICAgICBmaWVs ZF9zdHIgPSAiICIuam9pbihmaWVsZHMpCisgICAgICAgICAgICBmLndyaXRlKGYiJXt0YWd9X3tp bW1fdHlwZX17aW1tX2xldHRlcn1cdHtmaWVsZF9zdHJ9XG4iKQorCisgICAgICAgICMjIEhhbmRs ZSBpbnN0cnVjdGlvbnMgd2l0aCB1bnVzZWQgZW5jb2RpbmcgbGV0dGVycworICAgICAgICAjIyBD aGFuZ2UgdGhlIHVudXNlZCBsZXR0ZXJzIHRvIGlnbm9yZWQKKyAgICAgICAgaWYgdGFnIGluIHRh Z3Nfd2l0aF91bnVzZWRfZF9lbmNvZGluZzoKKyAgICAgICAgICAgIGVuY19zdHIgPSBlbmNfc3Ry LnJlcGxhY2UoImQiLCAiLSIpCisgICAgICAgIGlmIHRhZyBpbiB0YWdzX3dpdGhfdW51c2VkX3Rf ZW5jb2Rpbmc6CisgICAgICAgICAgICBlbmNfc3RyID0gZW5jX3N0ci5yZXBsYWNlKCJ0IiwgIi0i KQorCisgICAgICAgICMgUmVwbGFjZSB0aGUgb3BlcmFuZCBsZXR0ZXJzIHdpdGggLgorICAgICAg ICBmb3IgeCBpbiBvcGVyYW5kX2xldHRlcnM6CisgICAgICAgICAgICBlbmNfc3RyID0gZW5jX3N0 ci5yZXBsYWNlKHgsICIuIikKKworICAgICAgICAjIFdyaXRlIHRoZSBpbnN0cnVjdGlvbiBmb3Jt YXQKKyAgICAgICAgZi53cml0ZShmIkB7dGFnfVx0e2VuY19zdHJ9IikKKyAgICAgICAgZm9yIHJl ZyBpbiByZWdzOgorICAgICAgICAgICAgcmVnX3R5cGUgPSByZWdbMF0KKyAgICAgICAgICAgIHJl Z19pZCA9IHJlZ1sxXQorICAgICAgICAgICAgZi53cml0ZShmIiB7cmVnX3R5cGV9e3JlZ19pZH09 JXt0YWd9X3tyZWdfdHlwZX17cmVnX2lkfSIpCisgICAgICAgIGZvciBpbW0gaW4gaW1tczoKKyAg ICAgICAgICAgIGltbV90eXBlID0gaW1tWzBdCisgICAgICAgICAgICBpbW1fbGV0dGVyID0gImki IGlmIGltbV90eXBlLmlzbG93ZXIoKSBlbHNlICJJIgorICAgICAgICAgICAgZi53cml0ZShmIiB7 aW1tX3R5cGV9e2ltbV9sZXR0ZXJ9PSV7dGFnfV97aW1tX3R5cGV9e2ltbV9sZXR0ZXJ9IikKKwor ICAgICAgICBmLndyaXRlKCIgJVBQXG4iKQorCisgICAgICAgICAjIFJlcGxhY2UgdGhlIDBzIGFu ZCAxcyB3aXRoIC4KKyAgICAgICAgZW5jX3N0ciA9IGVuY19zdHIucmVwbGFjZSgiMCIsICIuIiku cmVwbGFjZSgiMSIsICIuIikKKworICAgICAgICAjIFdyaXRlIHRoZSBpbnN0cnVjdGlvbiBwYXR0 ZXJuCisgICAgICAgIGYud3JpdGUoZiJ7dGFnfVx0e2VuY19zdHJ9IEB7dGFnfVxuIikKKworCitp ZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGhleF9jb21tb24ucmVhZF9zZW1hbnRpY3Nf ZmlsZShzeXMuYXJndlsxXSkKKyAgICBjbGFzc190b19kZWNvZGUgPSBzeXMuYXJndlsyXQorICAg IHdpdGggb3BlbihzeXMuYXJndlszXSwgInciKSBhcyBmOgorICAgICAgICBnZW5fZGVjb2RldHJl ZV9maWxlKGYsIGNsYXNzX3RvX2RlY29kZSkKZGlmZiAtLWdpdCBhL3RhcmdldC9oZXhhZ29uL2dl bl90cmFuc19mdW5jcy5weSBiL3RhcmdldC9oZXhhZ29uL2dlbl90cmFuc19mdW5jcy5weQpuZXcg ZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwLi5jOTA3MTMxMDA5Ci0tLSAvZGV2L251 bGwKKysrIGIvdGFyZ2V0L2hleGFnb24vZ2VuX3RyYW5zX2Z1bmNzLnB5CkBAIC0wLDAgKzEsMTMy IEBACisjIS91c3IvYmluL2VudiBweXRob24zCisKKyMjCisjIyAgQ29weXJpZ2h0IChjKSAyMDI0 IFRheWxvciBTaW1wc29uIDxsdGF5bG9yc2ltcHNvbkBnbWFpbC5jb20+CisjIworIyMgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisjIyAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMjICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIyMgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisjIworIyMgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyMgIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIyAgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQorIyMgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjIwor IyMgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCisjIyAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyMjCisKK2ltcG9ydCBpbworaW1wb3J0IHJl CisKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IGlzZXQKK2ltcG9ydCBoZXhf Y29tbW9uCisKK2VuY3MgPSB7CisgICAgdGFnOiAiIi5qb2luKHJldmVyc2VkKGlzZXQuaXNldFt0 YWddWyJlbmMiXS5yZXBsYWNlKCIgIiwgIiIpKSkKKyAgICBmb3IgdGFnIGluIGlzZXQudGFncwor ICAgIGlmIGlzZXQuaXNldFt0YWddWyJlbmMiXSAhPSAiTUlTU0lORyBFTkNPRElORyIKK30KKwor CityZWdyZSA9IHJlLmNvbXBpbGUociIoKD88IURVUClbTU5PUkNQUVhTR1ZaQV0pKFtzdHV2d3h5 emRlZmddKykoWy5dP1tMbEhoXT8pKFxkK1M/KSIpCitpbW1yZSA9IHJlLmNvbXBpbGUociJbI10o W3JSc1N1VW1dKShcZCspKD86WzpdKFxkKykpPyIpCisKKworZGVmIG9yZGVyZWRfdW5pcXVlKGwp OgorICAgIHJldHVybiBzb3J0ZWQoc2V0KGwpLCBrZXk9bC5pbmRleCkKKworCitkZWYgc2tpcF90 YWcodGFnLCBjbGFzc2VzKToKKyAgICBlbmNfY2xhc3MgPSBpc2V0LmlzZXRbdGFnXVsiZW5jX2Ns YXNzIl0KKyAgICByZXR1cm4gZW5jX2NsYXNzIG5vdCBpbiBjbGFzc2VzCisKKworZGVmIGNvZGVf Zm10KHR4dCk6CisgICAgcmV0dXJuIHRleHR3cmFwLmluZGVudCh0ZXh0d3JhcC5kZWRlbnQodHh0 KSwgIiAgICAiKQorCitvcGVuX2N1cmx5ID0gInsiCitjbG9zZV9jdXJseSA9ICJ9IgorCitkZWYg bWFya193aGljaF9pbW1fZXh0ZW5kZWQoZiwgdGFnKToKKyAgICBpbW1yZSA9IHJlLmNvbXBpbGUo ciJJTU1FWFRcKFtyUnNTdVVtXSIpCisgICAgaW1tID0gaW1tcmUuZmluZGFsbChoZXhfY29tbW9u LnNlbWRpY3RbdGFnXSkKKyAgICBpZiBsZW4oaW1tKSA9PSAwOgorICAgICAgICAjIE5vIGV4dGVu ZGVkIG9wZXJhbmQgZm91bmQKKyAgICAgICAgcmV0dXJuCisgICAgbGV0dGVyID0gcmUuc3BsaXQo IlxcKCIsIGltbVswXSlbMV0KKyAgICBmLndyaXRlKGNvZGVfZm10KGYiIiJcCisgICAgICAgIGlu c24tPndoaWNoX2V4dGVuZGVkID0gezAgaWYgbGV0dGVyLmlzbG93ZXIoKSBlbHNlIDF9OworICAg ICIiIikpCisKKyMjCisjIyBHZW5lcmF0ZSB0aGUgUUVNVSBkZWNvZGV0cmVlIHRyYW5zXzx0YWc+ IGZ1bmN0aW9uIGZvciBlYWNoIGluc3RydWN0aW9uCisjIyAgICAgRm9yIEEyX2FkZDogUmQzMj1h ZGQoUnMzMixSdDMyKQorIyMgICAgIFdlIHByb2R1Y2U6CisjIyAgICAgc3RhdGljIGJvb2wgdHJh bnNfQTJfYWRkKERpc2FzQ29udGV4dCAqY3R4LCBhcmdfQTJfYWRkICphcmdzKQorIyMgICAgIHsK KyMjICAgICAgICAgSW5zbiAqaW5zbiA9IGN0eC0+aW5zbjsKKyMjICAgICAgICAgaW5zbi0+b3Bj b2RlID0gQTJfYWRkOworIyMgICAgICAgICBpbnNuLT5yZWdub1swXSA9IGFyZ3MtPlJkOworIyMg ICAgICAgICBpbnNuLT5yZWdub1sxXSA9IGFyZ3MtPlJzOworIyMgICAgICAgICBpbnNuLT5yZWdu b1syXSA9IGFyZ3MtPlJ0OworIyMgICAgICAgICByZXR1cm4gdHJ1ZTsKKyMjICAgICB9CisjIwor ZGVmIGdlbl90cmFuc19mdW5jcyhmLCBjbGFzc2VzKToKKyAgICBmLndyaXRlKGYiLyogRE8gTk9U IE1PRElGWSAtIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgYnkge3N5cy5hcmd2WzBdfSAqL1xuXG4i KQorICAgIGZvciB0YWcgaW4gc29ydGVkKGVuY3Mua2V5cygpLCBrZXk9aXNldC50YWdzLmluZGV4 KToKKyAgICAgICAgaWYgc2tpcF90YWcodGFnLCBjbGFzc2VzKToKKyAgICAgICAgICAgIGNvbnRp bnVlCisKKyAgICAgICAgcmVncyA9IG9yZGVyZWRfdW5pcXVlKHJlZ3JlLmZpbmRhbGwoaXNldC5p c2V0W3RhZ11bInN5bnRheCJdKSkKKyAgICAgICAgaW1tcyA9IG9yZGVyZWRfdW5pcXVlKGltbXJl LmZpbmRhbGwoaXNldC5pc2V0W3RhZ11bInN5bnRheCJdKSkKKworICAgICAgICBmLndyaXRlKHRl eHR3cmFwLmRlZGVudChmIiIiXAorICAgICAgICAgICAgc3RhdGljIGJvb2wgdHJhbnNfe3RhZ30o RGlzYXNDb250ZXh0ICpjdHgsIGFyZ197dGFnfSAqYXJncykKKyAgICAgICAgICAgIHtvcGVuX2N1 cmx5fQorICAgICAgICAgICAgICAgIEluc24gKmluc24gPSBjdHgtPmluc247CisgICAgICAgICAg ICAgICAgaW5zbi0+b3Bjb2RlID0ge3RhZ307CisgICAgICAgICIiIikpCisKKyAgICAgICAgcmVn bm8gPSAwCisgICAgICAgIGZvciByZWcgaW4gcmVnczoKKyAgICAgICAgICAgIHJlZ190eXBlID0g cmVnWzBdCisgICAgICAgICAgICByZWdfaWQgPSByZWdbMV0KKyAgICAgICAgICAgIGYud3JpdGUo Y29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAgICAgICBpbnNuLT5yZWdub1t7cmVnbm99XSA9IGFy Z3MtPntyZWdfdHlwZX17cmVnX2lkfTsKKyAgICAgICAgICAgICIiIikpCisgICAgICAgICAgICBy ZWdubyArPSAxCisKKyAgICAgICAgaWYgbGVuKGltbXMpICE9IDA6CisgICAgICAgICAgICBtYXJr X3doaWNoX2ltbV9leHRlbmRlZChmLCB0YWcpCisKKyAgICAgICAgZm9yIGltbSBpbiBpbW1zOgor ICAgICAgICAgICAgaW1tX3R5cGUgPSBpbW1bMF0KKyAgICAgICAgICAgIGltbV9sZXR0ZXIgPSAi aSIgaWYgaW1tX3R5cGUuaXNsb3dlcigpIGVsc2UgIkkiCisgICAgICAgICAgICBpbW1ubyA9IDAg aWYgaW1tX3R5cGUuaXNsb3dlcigpIGVsc2UgMQorICAgICAgICAgICAgaW1tX3NoaWZ0ID0gaW50 KGltbVsyXSkgaWYgaW1tWzJdIGVsc2UgMAorICAgICAgICAgICAgaWYgaW1tX3NoaWZ0OgorICAg ICAgICAgICAgICAgIGYud3JpdGUoY29kZV9mbXQoZiIiIlwKKyAgICAgICAgICAgICAgICAgICAg aW5zbi0+aW1tZWRbe2ltbW5vfV0gPQorICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnRfbGVm dChjdHgsIGFyZ3MtPntpbW1fdHlwZX17aW1tX2xldHRlcn0sCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHtpbW1fc2hpZnR9LCB7aW1tbm99KTsKKyAgICAgICAgICAgICAgICAi IiIpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmLndyaXRlKGNvZGVfZm10 KGYiIiJcCisgICAgICAgICAgICAgICAgICAgIGluc24tPmltbWVkW3tpbW1ub31dID0gYXJncy0+ e2ltbV90eXBlfXtpbW1fbGV0dGVyfTsKKyAgICAgICAgICAgICAgICAiIiIpKQorCisgICAgICAg IGYud3JpdGUodGV4dHdyYXAuZGVkZW50KGYiIiJcCisgICAgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICAgICB7Y2xvc2VfY3VybHl9CisgICAgICAgICIiIikpCisKKworaWYgX19u YW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBoZXhfY29tbW9uLnJlYWRfc2VtYW50aWNzX2ZpbGUo c3lzLmFyZ3ZbMV0pCisgICAgd2l0aCBvcGVuKHN5cy5hcmd2WzJdLCAidyIpIGFzIGY6CisgICAg ICAgIGdlbl90cmFuc19mdW5jcyhmLCB7ICJOT1JNQUwiLCAiRVhUX21tdmVjIiB9KQpkaWZmIC0t Z2l0IGEvdGFyZ2V0L2hleGFnb24vbWVzb24uYnVpbGQgYi90YXJnZXQvaGV4YWdvbi9tZXNvbi5i dWlsZAppbmRleCBkYThlNjA4ZDAwLi44MzFiZDU3MTZhIDEwMDY0NAotLS0gYS90YXJnZXQvaGV4 YWdvbi9tZXNvbi5idWlsZAorKysgYi90YXJnZXQvaGV4YWdvbi9tZXNvbi5idWlsZApAQCAtMTMz LDYgKzEzMyw2MSBAQCBkZWN0cmVlX2dlbmVyYXRlZCA9IGN1c3RvbV90YXJnZXQoCiApCiBoZXhh Z29uX3NzLmFkZChkZWN0cmVlX2dlbmVyYXRlZCkKIAorIworIyBHZW5lcmF0ZSB0aGUgaW5wdXQg dG8gdGhlIFFFTVUgZGVjb2RldHJlZS5weSBzY3JpcHQKKyMKK25vcm1hbF9kZWNvZGVfZ2VuZXJh dGVkID0gY3VzdG9tX3RhcmdldCgKKyAgICAnbm9ybWFsX2RlY29kZV9nZW5lcmF0ZWQnLAorICAg IG91dHB1dDogJ25vcm1hbF9kZWNvZGVfZ2VuZXJhdGVkJywKKyAgICBkZXBlbmRzOiBbaXNldF9w eSwgc2VtYW50aWNzX2dlbmVyYXRlZF0sCisgICAgZW52OiB7J1BZVEhPTlBBVEgnOiBtZXNvbi5j dXJyZW50X2J1aWxkX2RpcigpfSwKKyAgICBjb21tYW5kOiBbcHl0aG9uLCBmaWxlcygnZ2VuX2Rl Y29kZXRyZWUucHknKSwgc2VtYW50aWNzX2dlbmVyYXRlZCwgJ05PUk1BTCcsICdAT1VUUFVUQCdd LAorKQoraGV4YWdvbl9zcy5hZGQobm9ybWFsX2RlY29kZV9nZW5lcmF0ZWQpCisKK2h2eF9kZWNv ZGVfZ2VuZXJhdGVkID0gY3VzdG9tX3RhcmdldCgKKyAgICAnaHZ4X2RlY29kZV9nZW5lcmF0ZWQn LAorICAgIG91dHB1dDogJ2h2eF9kZWNvZGVfZ2VuZXJhdGVkJywKKyAgICBkZXBlbmRzOiBbaXNl dF9weSwgc2VtYW50aWNzX2dlbmVyYXRlZF0sCisgICAgZW52OiB7J1BZVEhPTlBBVEgnOiBtZXNv bi5jdXJyZW50X2J1aWxkX2RpcigpfSwKKyAgICBjb21tYW5kOiBbcHl0aG9uLCBmaWxlcygnZ2Vu X2RlY29kZXRyZWUucHknKSwgc2VtYW50aWNzX2dlbmVyYXRlZCwgJ0VYVF9tbXZlYycsICdAT1VU UFVUQCddLAorKQoraGV4YWdvbl9zcy5hZGQoaHZ4X2RlY29kZV9nZW5lcmF0ZWQpCisKKyMKKyMg UnVuIHRoZSBRRU1VIGRlY29kZXRyZWUucHkgc2NyaXB0IHRvIHByb2R1Y2UgdGhlIGluc3RydWN0 aW9uIGRlY29kZXIKKyMKK2RlY29kZXRyZWVfcHkgPSBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIo KSAvICcuLi8uLi9zY3JpcHRzL2RlY29kZXRyZWUucHknCitkZWNvZGVfbm9ybWFsX2dlbmVyYXRl ZCA9IGN1c3RvbV90YXJnZXQoCisgICAgJ2RlY29kZV9ub3JtYWxfZ2VuZXJhdGVkLmMuaW5jJywK KyAgICBvdXRwdXQ6ICdkZWNvZGVfbm9ybWFsX2dlbmVyYXRlZC5jLmluYycsCisgICAgaW5wdXQ6 IG5vcm1hbF9kZWNvZGVfZ2VuZXJhdGVkLAorICAgIGVudjogeydQWVRIT05QQVRIJzogbWVzb24u Y3VycmVudF9idWlsZF9kaXIoKX0sCisgICAgY29tbWFuZDogW3B5dGhvbiwgZmlsZXMoZGVjb2Rl dHJlZV9weSksIG5vcm1hbF9kZWNvZGVfZ2VuZXJhdGVkLCAnLS1zdGF0aWMtZGVjb2RlPWRlY29k ZV9ub3JtYWwnLCAnLW8nLCAnQE9VVFBVVEAnXSwKKykKK2hleGFnb25fc3MuYWRkKGRlY29kZV9u b3JtYWxfZ2VuZXJhdGVkKQorCitkZWNvZGVfaHZ4X2dlbmVyYXRlZCA9IGN1c3RvbV90YXJnZXQo CisgICAgJ2RlY29kZV9odnhfZ2VuZXJhdGVkLmMuaW5jJywKKyAgICBvdXRwdXQ6ICdkZWNvZGVf aHZ4X2dlbmVyYXRlZC5jLmluYycsCisgICAgaW5wdXQ6IGh2eF9kZWNvZGVfZ2VuZXJhdGVkLAor ICAgIGVudjogeydQWVRIT05QQVRIJzogbWVzb24uY3VycmVudF9idWlsZF9kaXIoKX0sCisgICAg Y29tbWFuZDogW3B5dGhvbiwgZmlsZXMoZGVjb2RldHJlZV9weSksIGh2eF9kZWNvZGVfZ2VuZXJh dGVkLCAnLS1zdGF0aWMtZGVjb2RlPWRlY29kZV9odngnLCAnLW8nLCAnQE9VVFBVVEAnXSwKKykK K2hleGFnb25fc3MuYWRkKGRlY29kZV9odnhfZ2VuZXJhdGVkKQorCisjCisjIEdlbmVyYXRlIHRo ZSB0cmFuc18qIGZ1bmN0aW9ucyB0aGF0IHRoZSBkZWNvZGVyIHdpbGwgdXNlCisjCitkZWNvZGV0 cmVlX3RyYW5zX2Z1bmNzX2dlbmVyYXRlZCA9IGN1c3RvbV90YXJnZXQoCisgICAgJ2RlY29kZXRy ZWVfdHJhbnNfZnVuY3NfZ2VuZXJhdGVkLmMuaW5jJywKKyAgICBvdXRwdXQ6ICdkZWNvZGV0cmVl X3RyYW5zX2Z1bmNzX2dlbmVyYXRlZC5jLmluYycsCisgICAgZGVwZW5kczogW2lzZXRfcHksIHNl bWFudGljc19nZW5lcmF0ZWRdLAorICAgIGVudjogeydQWVRIT05QQVRIJzogbWVzb24uY3VycmVu dF9idWlsZF9kaXIoKX0sCisgICAgY29tbWFuZDogW3B5dGhvbiwgZmlsZXMoJ2dlbl90cmFuc19m dW5jcy5weScpLCBzZW1hbnRpY3NfZ2VuZXJhdGVkLCAnQE9VVFBVVEAnXSwKKykKK2hleGFnb25f c3MuYWRkKGRlY29kZXRyZWVfdHJhbnNfZnVuY3NfZ2VuZXJhdGVkKQorCiBoZXhhZ29uX3NzLmFk ZChmaWxlcygKICAgICAnY3B1LmMnLAogICAgICd0cmFuc2xhdGUuYycsCmRpZmYgLS1naXQgYS90 YXJnZXQvaGV4YWdvbi90cmFuc2xhdGUuYyBiL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5jCmlu ZGV4IDY2NmMwNjExODAuLjk1NTc5YWUyNDMgMTAwNjQ0Ci0tLSBhL3RhcmdldC9oZXhhZ29uL3Ry YW5zbGF0ZS5jCisrKyBiL3RhcmdldC9oZXhhZ29uL3RyYW5zbGF0ZS5jCkBAIC0xMDMzLDEwICsx MDMzLDEwIEBAIHN0YXRpYyB2b2lkIGRlY29kZV9hbmRfdHJhbnNsYXRlX3BhY2tldChDUFVIZXhh Z29uU3RhdGUgKmVudiwgRGlzYXNDb250ZXh0ICpjdHgpCiAgICAgICAgIHJldHVybjsKICAgICB9 CiAKLSAgICBpZiAoZGVjb2RlX3BhY2tldChud29yZHMsIHdvcmRzLCAmcGt0LCBmYWxzZSkgPiAw KSB7CisgICAgY3R4LT5wa3QgPSAmcGt0OworICAgIGlmIChkZWNvZGVfcGFja2V0KGN0eCwgbndv cmRzLCB3b3JkcywgJnBrdCwgZmFsc2UpID4gMCkgewogICAgICAgICBwa3QucGMgPSBjdHgtPmJh c2UucGNfbmV4dDsKICAgICAgICAgSEVYX0RFQlVHX1BSSU5UX1BLVCgmcGt0KTsKLSAgICAgICAg Y3R4LT5wa3QgPSAmcGt0OwogICAgICAgICBnZW5fc3RhcnRfcGFja2V0KGN0eCk7CiAgICAgICAg IGZvciAoaSA9IDA7IGkgPCBwa3QubnVtX2luc25zOyBpKyspIHsKICAgICAgICAgICAgIGN0eC0+ aW5zbiA9ICZwa3QuaW5zbltpXTsKLS0gCjIuMjUuMQoK