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 D1EA1C54EBC for ; Thu, 5 Jan 2023 22:33:57 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pDYUa-0006zi-NI; Thu, 05 Jan 2023 17:13:44 -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 1pDYUX-0006we-Qf for qemu-devel@nongnu.org; Thu, 05 Jan 2023 17:13:41 -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 1pDYUU-00028A-5o for qemu-devel@nongnu.org; Thu, 05 Jan 2023 17:13:41 -0500 Received: from pps.filterd (m0279872.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 305Khcka007382; Thu, 5 Jan 2023 22:13:36 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=Ra8/1489eqdU17G/MSzyM/vJBeqSYDlliaZQl5rkcms=; b=cIi82R3nF2pHkA18EQsYvdL4IQm47JwxniLI+DAg8eR6JpBEclxrjbVkpEjcAZ8gUBdf u0Gt9gDw+UiN+ZTnQUSqRpEi8eyxrByQaWbw0vA/DuEgcYXzZ2i2SVRYBkiWSH+KpVhO D4mE4tjYSRmCw7kexacYTIM37MJuTV2Ft7Lioxjr8Nh4cTRgzg1PKUJlBDXQ5bY+36sT Jv/px2tT2zqeGVX6I0vcDyMd8YC5mERPJW7kxBf+QnLjlB5qjryMwGazLKxFMqOfPjVd ZQwg5bdQ7yqU1I3H5Y8urhjUc7q4IHK+41QI5vgsmtZqRPI5P7Ka78LfK68dTMexvktQ Ig== Received: from nalasppmta03.qualcomm.com (Global_NAT1.qualcomm.com [129.46.96.20]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 3mwvaphc4j-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 05 Jan 2023 22:13:36 +0000 Received: from pps.filterd (NALASPPMTA03.qualcomm.com [127.0.0.1]) by NALASPPMTA03.qualcomm.com (8.17.1.5/8.17.1.5) with ESMTP id 305MDZaM009374; Thu, 5 Jan 2023 22:13:35 GMT Received: from pps.reinject (localhost [127.0.0.1]) by NALASPPMTA03.qualcomm.com (PPS) with ESMTP id 3mx6k603b9-1; Thu, 05 Jan 2023 22:13:35 +0000 Received: from NALASPPMTA03.qualcomm.com (NALASPPMTA03.qualcomm.com [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 305MDZC2009369; Thu, 5 Jan 2023 22:13:35 GMT Received: from hu-devc-lv-u18-c.qualcomm.com (hu-tsimpson-lv.qualcomm.com [10.47.235.220]) by NALASPPMTA03.qualcomm.com (PPS) with ESMTP id 305MDYqv009364; Thu, 05 Jan 2023 22:13:35 +0000 Received: by hu-devc-lv-u18-c.qualcomm.com (Postfix, from userid 47164) id 4AC7F500105; Thu, 5 Jan 2023 14:13:34 -0800 (PST) From: Taylor Simpson To: qemu-devel@nongnu.org Cc: tsimpson@quicinc.com, richard.henderson@linaro.org, philmd@linaro.org, ale@rev.ng, anjo@rev.ng, bcain@quicinc.com, quic_mathbern@quicinc.com Subject: [PATCH v3 8/9] Hexagon (tests/tcg/hexagon) Remove __builtin from scatter_gather Date: Thu, 5 Jan 2023 14:13:30 -0800 Message-Id: <20230105221331.12069-9-tsimpson@quicinc.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230105221331.12069-1-tsimpson@quicinc.com> References: <20230105221331.12069-1-tsimpson@quicinc.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-QCInternal: smtphost X-QCInternal: smtphost X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-Virus-Version: vendor=nai engine=6200 definitions=5800 signatures=585085 X-Proofpoint-GUID: hDAQHVtB9VRC-qIseg_tzpJ9kYXXnmEK X-Proofpoint-ORIG-GUID: hDAQHVtB9VRC-qIseg_tzpJ9kYXXnmEK X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.923,Hydra:6.0.545,FMLib:17.11.122.1 definitions=2023-01-05_12,2023-01-05_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 bulkscore=0 priorityscore=1501 suspectscore=0 clxscore=1015 mlxscore=0 impostorscore=0 phishscore=0 spamscore=0 mlxlogscore=978 adultscore=0 lowpriorityscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2301050174 Received-SPF: pass client-ip=205.220.180.131; envelope-from=tsimpson@qualcomm.com; helo=mx0b-0031df01.pphosted.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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 UmVwbGFjZSBfX2J1aWx0aW5fKiB3aXRoIGlubGluZSBhc3NlbWJseQogICAgVGhlIF9fYnVpbHRp bidzIGFyZSBzdWJqZWN0IHRvIGNoYW5nZSB3aXRoIGRpZmZlcmVudCBjb21waWxlcgogICAgcmVs ZWFzZXMsIHNvIG1pZ2h0IGJyZWFrCk1hcmsgYXJyYXlzIGFzIGFsaWduZWQgd2hlbiBhY2Nlc3Nl ZCBhcyBIVlggdmVjdG9ycwpDbGVhbiB1cCBjb21tZW50cwoKU2lnbmVkLW9mZi1ieTogVGF5bG9y IFNpbXBzb24gPHRzaW1wc29uQHF1aWNpbmMuY29tPgotLS0KIHRlc3RzL3RjZy9oZXhhZ29uL3Nj YXR0ZXJfZ2F0aGVyLmMgfCA1MTMgKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmls ZSBjaGFuZ2VkLCAyNzEgaW5zZXJ0aW9ucygrKSwgMjQyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3Rlc3RzL3RjZy9oZXhhZ29uL3NjYXR0ZXJfZ2F0aGVyLmMgYi90ZXN0cy90Y2cvaGV4YWdv bi9zY2F0dGVyX2dhdGhlci5jCmluZGV4IGI5M2ViMTgxMzMuLmJmOGI1ZTAzMTcgMTAwNjQ0Ci0t LSBhL3Rlc3RzL3RjZy9oZXhhZ29uL3NjYXR0ZXJfZ2F0aGVyLmMKKysrIGIvdGVzdHMvdGNnL2hl eGFnb24vc2NhdHRlcl9nYXRoZXIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAgQ29weXJpZ2h0 KGMpIDIwMTktMjAyMSBRdWFsY29tbSBJbm5vdmF0aW9uIENlbnRlciwgSW5jLiBBbGwgUmlnaHRz IFJlc2VydmVkLgorICogIENvcHlyaWdodChjKSAyMDE5LTIwMjMgUXVhbGNvbW0gSW5ub3ZhdGlv biBDZW50ZXIsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqCiAgKiAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK ICAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQpAQCAtNDAsNDcgKzQwLDYgQEAgdHlwZWRlZiBsb25nIEhWWF9WZWN0 b3JQYWlyICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDI1NikpKQogdHlwZWRlZiBs b25nIEhWWF9WZWN0b3JQcmVkICAgX19hdHRyaWJ1dGVfXygoX192ZWN0b3Jfc2l6ZV9fKDEyOCkp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgx MjgpKSk7CiAKLSNkZWZpbmUgVlNDQVRURVJfMTYoQkFTRSwgUkdOLCBPRkYsIFZBTFMpIFwKLSAg ICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1oXzEyOEIoKGludClCQVNFLCBSR04sIE9G RiwgVkFMUykKLSNkZWZpbmUgVlNDQVRURVJfMTZfTUFTS0VEKE1BU0ssIEJBU0UsIFJHTiwgT0ZG LCBWQUxTKSBcCi0gICAgX19idWlsdGluX0hFWEFHT05fVjZfdnNjYXR0ZXJtaHFfMTI4QihNQVNL LCAoaW50KUJBU0UsIFJHTiwgT0ZGLCBWQUxTKQotI2RlZmluZSBWU0NBVFRFUl8zMihCQVNFLCBS R04sIE9GRiwgVkFMUykgXAotICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXdfMTI4 QigoaW50KUJBU0UsIFJHTiwgT0ZGLCBWQUxTKQotI2RlZmluZSBWU0NBVFRFUl8zMl9NQVNLRUQo TUFTSywgQkFTRSwgUkdOLCBPRkYsIFZBTFMpIFwKLSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92 c2NhdHRlcm13cV8xMjhCKE1BU0ssIChpbnQpQkFTRSwgUkdOLCBPRkYsIFZBTFMpCi0jZGVmaW5l IFZTQ0FUVEVSXzE2XzMyKEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBcCi0gICAgX19idWlsdGluX0hF WEFHT05fVjZfdnNjYXR0ZXJtaHdfMTI4QigoaW50KUJBU0UsIFJHTiwgT0ZGLCBWQUxTKQotI2Rl ZmluZSBWU0NBVFRFUl8xNl8zMl9NQVNLRUQoTUFTSywgQkFTRSwgUkdOLCBPRkYsIFZBTFMpIFwK LSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1od3FfMTI4QihNQVNLLCAoaW50KUJB U0UsIFJHTiwgT0ZGLCBWQUxTKQotI2RlZmluZSBWU0NBVFRFUl8xNl9BQ0MoQkFTRSwgUkdOLCBP RkYsIFZBTFMpIFwKLSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92c2NhdHRlcm1oX2FkZF8xMjhC KChpbnQpQkFTRSwgUkdOLCBPRkYsIFZBTFMpCi0jZGVmaW5lIFZTQ0FUVEVSXzMyX0FDQyhCQVNF LCBSR04sIE9GRiwgVkFMUykgXAotICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzY2F0dGVybXdf YWRkXzEyOEIoKGludClCQVNFLCBSR04sIE9GRiwgVkFMUykKLSNkZWZpbmUgVlNDQVRURVJfMTZf MzJfQUNDKEJBU0UsIFJHTiwgT0ZGLCBWQUxTKSBcCi0gICAgX19idWlsdGluX0hFWEFHT05fVjZf dnNjYXR0ZXJtaHdfYWRkXzEyOEIoKGludClCQVNFLCBSR04sIE9GRiwgVkFMUykKLQotI2RlZmlu ZSBWR0FUSEVSXzE2KERTVEFERFIsIEJBU0UsIFJHTiwgT0ZGKSBcCi0gICAgX19idWlsdGluX0hF WEFHT05fVjZfdmdhdGhlcm1oXzEyOEIoRFNUQUREUiwgKGludClCQVNFLCBSR04sIE9GRikKLSNk ZWZpbmUgVkdBVEhFUl8xNl9NQVNLRUQoRFNUQUREUiwgTUFTSywgQkFTRSwgUkdOLCBPRkYpIFwK LSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWhxXzEyOEIoRFNUQUREUiwgTUFTSywg KGludClCQVNFLCBSR04sIE9GRikKLSNkZWZpbmUgVkdBVEhFUl8zMihEU1RBRERSLCBCQVNFLCBS R04sIE9GRikgXAotICAgIF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZnYXRoZXJtd18xMjhCKERTVEFE RFIsIChpbnQpQkFTRSwgUkdOLCBPRkYpCi0jZGVmaW5lIFZHQVRIRVJfMzJfTUFTS0VEKERTVEFE RFIsIE1BU0ssIEJBU0UsIFJHTiwgT0ZGKSBcCi0gICAgX19idWlsdGluX0hFWEFHT05fVjZfdmdh dGhlcm13cV8xMjhCKERTVEFERFIsIE1BU0ssIChpbnQpQkFTRSwgUkdOLCBPRkYpCi0jZGVmaW5l IFZHQVRIRVJfMTZfMzIoRFNUQUREUiwgQkFTRSwgUkdOLCBPRkYpIFwKLSAgICBfX2J1aWx0aW5f SEVYQUdPTl9WNl92Z2F0aGVybWh3XzEyOEIoRFNUQUREUiwgKGludClCQVNFLCBSR04sIE9GRikK LSNkZWZpbmUgVkdBVEhFUl8xNl8zMl9NQVNLRUQoRFNUQUREUiwgTUFTSywgQkFTRSwgUkdOLCBP RkYpIFwKLSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92Z2F0aGVybWh3cV8xMjhCKERTVEFERFIs IE1BU0ssIChpbnQpQkFTRSwgUkdOLCBPRkYpCi0KLSNkZWZpbmUgVlNIVUZGX0goVikgXAotICAg IF9fYnVpbHRpbl9IRVhBR09OX1Y2X3ZzaHVmZmhfMTI4QihWKQotI2RlZmluZSBWU1BMQVRfSChY KSBcCi0gICAgX19idWlsdGluX0hFWEFHT05fVjZfbHZzcGxhdGhfMTI4QihYKQotI2RlZmluZSBW QU5EX1ZBTChQUkVELCBWQUwpIFwKLSAgICBfX2J1aWx0aW5fSEVYQUdPTl9WNl92YW5kdnJ0XzEy OEIoUFJFRCwgVkFMKQotI2RlZmluZSBWREVBTF9IKFYpIFwKLSAgICBfX2J1aWx0aW5fSEVYQUdP Tl9WNl92ZGVhbGhfMTI4QihWKQotCiBpbnQgZXJyOwogCiAvKiBkZWZpbmUgdGhlIG51bWJlciBv ZiByb3dzL2NvbHMgaW4gYSBzcXVhcmUgbWF0cml4ICovCkBAIC0xMDgsMjIgKzY3LDIyIEBAIHVu c2lnbmVkIHNob3J0IHZzY2F0dGVyMTZfMzJfcmVmW1NDQVRURVJfQlVGRkVSX1NJWkVdOwogdW5z aWduZWQgc2hvcnQgdmdhdGhlcjE2XzMyX3JlZltNQVRSSVhfU0laRV07CiAKIC8qIGRlY2xhcmUg dGhlIGFycmF5cyBvZiBvZmZzZXRzICovCi11bnNpZ25lZCBzaG9ydCBoYWxmX29mZnNldHNbTUFU UklYX1NJWkVdOwotdW5zaWduZWQgaW50ICAgd29yZF9vZmZzZXRzW01BVFJJWF9TSVpFXTsKK3Vu c2lnbmVkIHNob3J0IGhhbGZfb2Zmc2V0c1tNQVRSSVhfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxp Z25lZCgxMjgpKSk7Cit1bnNpZ25lZCBpbnQgICB3b3JkX29mZnNldHNbTUFUUklYX1NJWkVdIF9f YXR0cmlidXRlX18oKGFsaWduZWQoMTI4KSkpOwogCiAvKiBkZWNsYXJlIHRoZSBhcnJheXMgb2Yg dmFsdWVzICovCi11bnNpZ25lZCBzaG9ydCBoYWxmX3ZhbHVlc1tNQVRSSVhfU0laRV07Ci11bnNp Z25lZCBzaG9ydCBoYWxmX3ZhbHVlc19hY2NbTUFUUklYX1NJWkVdOwotdW5zaWduZWQgc2hvcnQg aGFsZl92YWx1ZXNfbWFza2VkW01BVFJJWF9TSVpFXTsKLXVuc2lnbmVkIGludCAgIHdvcmRfdmFs dWVzW01BVFJJWF9TSVpFXTsKLXVuc2lnbmVkIGludCAgIHdvcmRfdmFsdWVzX2FjY1tNQVRSSVhf U0laRV07Ci11bnNpZ25lZCBpbnQgICB3b3JkX3ZhbHVlc19tYXNrZWRbTUFUUklYX1NJWkVdOwor dW5zaWduZWQgc2hvcnQgaGFsZl92YWx1ZXNbTUFUUklYX1NJWkVdIF9fYXR0cmlidXRlX18oKGFs aWduZWQoMTI4KSkpOwordW5zaWduZWQgc2hvcnQgaGFsZl92YWx1ZXNfYWNjW01BVFJJWF9TSVpF XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKK3Vuc2lnbmVkIHNob3J0IGhhbGZfdmFs dWVzX21hc2tlZFtNQVRSSVhfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxMjgpKSk7Cit1 bnNpZ25lZCBpbnQgICB3b3JkX3ZhbHVlc1tNQVRSSVhfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxp Z25lZCgxMjgpKSk7Cit1bnNpZ25lZCBpbnQgICB3b3JkX3ZhbHVlc19hY2NbTUFUUklYX1NJWkVd IF9fYXR0cmlidXRlX18oKGFsaWduZWQoMTI4KSkpOwordW5zaWduZWQgaW50ICAgd29yZF92YWx1 ZXNfbWFza2VkW01BVFJJWF9TSVpFXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKIAog LyogZGVjbGFyZSB0aGUgYXJyYXlzIG9mIHByZWRpY2F0ZXMgKi8KLXVuc2lnbmVkIHNob3J0IGhh bGZfcHJlZGljYXRlc1tNQVRSSVhfU0laRV07Ci11bnNpZ25lZCBpbnQgICB3b3JkX3ByZWRpY2F0 ZXNbTUFUUklYX1NJWkVdOwordW5zaWduZWQgc2hvcnQgaGFsZl9wcmVkaWNhdGVzW01BVFJJWF9T SVpFXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDEyOCkpKTsKK3Vuc2lnbmVkIGludCAgIHdvcmRf cHJlZGljYXRlc1tNQVRSSVhfU0laRV0gX19hdHRyaWJ1dGVfXygoYWxpZ25lZCgxMjgpKSk7CiAK LS8qIG1ha2UgdGhpcyBiaWcgZW5vdWdoIGZvciBhbGwgdGhlIGludHJpbnNpY3MgKi8KKy8qIG1h a2UgdGhpcyBiaWcgZW5vdWdoIGZvciBhbGwgdGhlIG9wZXJhdGlvbnMgKi8KIGNvbnN0IHNpemVf dCByZWdpb25fbGVuID0gc2l6ZW9mKHZ0Y20pOwogCiAvKiBvcHRpb25hbGx5IGFkZCBzeW5jIGlu c3RydWN0aW9ucyAqLwpAQCAtMjYxLDE2NCArMjIwLDIwMSBAQCB2b2lkIGNyZWF0ZV9vZmZzZXRz X3ZhbHVlc19wcmVkc18xNl8zMih2b2lkKQogICAgIH0KIH0KIAotLyogc2NhdHRlciB0aGUgMTYg Yml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KKy8qIHNjYXR0ZXIgdGhlIDE2IGJpdCBl bGVtZW50cyB1c2luZyBIVlggKi8KIHZvaWQgdmVjdG9yX3NjYXR0ZXJfMTYodm9pZCkKIHsKLSAg ICAvKiBjb3B5IHRoZSBvZmZzZXRzIGFuZCB2YWx1ZXMgdG8gdmVjdG9ycyAqLwotICAgIEhWWF9W ZWN0b3Igb2Zmc2V0cyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfb2Zmc2V0czsKLSAgICBIVlhfVmVj dG9yIHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfdmFsdWVzOwotCi0gICAgVlNDQVRURVJf MTYoJnZ0Y20udnNjYXR0ZXIxNiwgcmVnaW9uX2xlbiwgb2Zmc2V0cywgdmFsdWVzKTsKKyAgICBh c20gKCJtMCA9ICUxXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTIgKyAjMClcblx0IgorICAg ICAgICAgInYxID0gdm1lbSglMyArICMwKVxuXHQiCisgICAgICAgICAidnNjYXR0ZXIoJTAsIG0w LCB2MC5oKS5oID0gdjFcblx0IgorICAgICAgICAgOiA6ICJyIih2dGNtLnZzY2F0dGVyMTYpLCAi ciIocmVnaW9uX2xlbiksCisgICAgICAgICAgICAgInIiKGhhbGZfb2Zmc2V0cyksICJyIihoYWxm X3ZhbHVlcykKKyAgICAgICAgIDogIm0wIiwgInYwIiwgInYxIiwgIm1lbW9yeSIpOwogCiAgICAg c3luY19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNik7CiB9CiAKLS8qIHNjYXR0ZXItYWNjdW11bGF0 ZSB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KKy8qIHNjYXR0ZXItYWNj dW11bGF0ZSB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIEhWWCAqLwogdm9pZCB2ZWN0b3Jfc2Nh dHRlcl8xNl9hY2Modm9pZCkKIHsKLSAgICAvKiBjb3B5IHRoZSBvZmZzZXRzIGFuZCB2YWx1ZXMg dG8gdmVjdG9ycyAqLwotICAgIEhWWF9WZWN0b3Igb2Zmc2V0cyA9ICooSFZYX1ZlY3RvciAqKWhh bGZfb2Zmc2V0czsKLSAgICBIVlhfVmVjdG9yIHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKWhhbGZf dmFsdWVzX2FjYzsKLQotICAgIFZTQ0FUVEVSXzE2X0FDQygmdnRjbS52c2NhdHRlcjE2LCByZWdp b25fbGVuLCBvZmZzZXRzLCB2YWx1ZXMpOworICAgIGFzbSAoIm0wID0gJTFcblx0IgorICAgICAg ICAgInYwID0gdm1lbSglMiArICMwKVxuXHQiCisgICAgICAgICAidjEgPSB2bWVtKCUzICsgIzAp XG5cdCIKKyAgICAgICAgICJ2c2NhdHRlciglMCwgbTAsIHYwLmgpLmggKz0gdjFcblx0IgorICAg ICAgICAgOiA6ICJyIih2dGNtLnZzY2F0dGVyMTYpLCAiciIocmVnaW9uX2xlbiksCisgICAgICAg ICAgICAgInIiKGhhbGZfb2Zmc2V0cyksICJyIihoYWxmX3ZhbHVlc19hY2MpCisgICAgICAgICA6 ICJtMCIsICJ2MCIsICJ2MSIsICJtZW1vcnkiKTsKIAogICAgIHN5bmNfc2NhdHRlcih2dGNtLnZz Y2F0dGVyMTYpOwogfQogCi0vKiBzY2F0dGVyIHRoZSAxNiBiaXQgZWxlbWVudHMgdXNpbmcgaW50 cmluc2ljcyAqLworLyogbWFza2VkIHNjYXR0ZXIgdGhlIDE2IGJpdCBlbGVtZW50cyB1c2luZyBI VlggKi8KIHZvaWQgdmVjdG9yX3NjYXR0ZXJfMTZfbWFza2VkKHZvaWQpCiB7Ci0gICAgLyogY29w eSB0aGUgb2Zmc2V0cyBhbmQgdmFsdWVzIHRvIHZlY3RvcnMgKi8KLSAgICBIVlhfVmVjdG9yIG9m ZnNldHMgPSAqKEhWWF9WZWN0b3IgKiloYWxmX29mZnNldHM7Ci0gICAgSFZYX1ZlY3RvciB2YWx1 ZXMgPSAqKEhWWF9WZWN0b3IgKiloYWxmX3ZhbHVlc19tYXNrZWQ7Ci0gICAgSFZYX1ZlY3RvciBw cmVkX3JlZyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfcHJlZGljYXRlczsKLSAgICBIVlhfVmVjdG9y UHJlZCBwcmVkcyA9IFZBTkRfVkFMKHByZWRfcmVnLCB+MCk7Ci0KLSAgICBWU0NBVFRFUl8xNl9N QVNLRUQocHJlZHMsICZ2dGNtLnZzY2F0dGVyMTYsIHJlZ2lvbl9sZW4sIG9mZnNldHMsIHZhbHVl cyk7CisgICAgYXNtICgicjEgPSAjLTFcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMCArICMw KVxuXHQiCisgICAgICAgICAicTAgPSB2YW5kKHYwLCByMSlcblx0IgorICAgICAgICAgIm0wID0g JTJcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMyArICMwKVxuXHQiCisgICAgICAgICAidjEg PSB2bWVtKCU0ICsgIzApXG5cdCIKKyAgICAgICAgICJpZiAocTApIHZzY2F0dGVyKCUxLCBtMCwg djAuaCkuaCA9IHYxXG5cdCIKKyAgICAgICAgIDogOiAiciIoaGFsZl9wcmVkaWNhdGVzKSwgInIi KHZ0Y20udnNjYXR0ZXIxNiksICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAgICAgICAiciIoaGFs Zl9vZmZzZXRzKSwgInIiKGhhbGZfdmFsdWVzX21hc2tlZCkKKyAgICAgICAgIDogInIxIiwgInEw IiwgIm0wIiwgInEwIiwgInYwIiwgInYxIiwgIm1lbW9yeSIpOwogCiAgICAgc3luY19zY2F0dGVy KHZ0Y20udnNjYXR0ZXIxNik7CiB9CiAKLS8qIHNjYXR0ZXIgdGhlIDMyIGJpdCBlbGVtZW50cyB1 c2luZyBpbnRyaW5zaWNzICovCisvKiBzY2F0dGVyIHRoZSAzMiBiaXQgZWxlbWVudHMgdXNpbmcg SFZYICovCiB2b2lkIHZlY3Rvcl9zY2F0dGVyXzMyKHZvaWQpCiB7Ci0gICAgLyogY29weSB0aGUg b2Zmc2V0cyBhbmQgdmFsdWVzIHRvIHZlY3RvcnMgKi8KLSAgICBIVlhfVmVjdG9yIG9mZnNldHNs byA9ICooSFZYX1ZlY3RvciAqKXdvcmRfb2Zmc2V0czsKLSAgICBIVlhfVmVjdG9yIG9mZnNldHNo aSA9ICooSFZYX1ZlY3RvciAqKSZ3b3JkX29mZnNldHNbTUFUUklYX1NJWkUgLyAyXTsKLSAgICBI VlhfVmVjdG9yIHZhbHVlc2xvID0gKihIVlhfVmVjdG9yICopd29yZF92YWx1ZXM7Ci0gICAgSFZY X1ZlY3RvciB2YWx1ZXNoaSA9ICooSFZYX1ZlY3RvciAqKSZ3b3JkX3ZhbHVlc1tNQVRSSVhfU0la RSAvIDJdOwotCi0gICAgVlNDQVRURVJfMzIoJnZ0Y20udnNjYXR0ZXIzMiwgcmVnaW9uX2xlbiwg b2Zmc2V0c2xvLCB2YWx1ZXNsbyk7Ci0gICAgVlNDQVRURVJfMzIoJnZ0Y20udnNjYXR0ZXIzMiwg cmVnaW9uX2xlbiwgb2Zmc2V0c2hpLCB2YWx1ZXNoaSk7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0 c2xvID0gKEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0 c2hpID0gKEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01BVFJJWF9TSVpFIC8gMl07CisgICAg SFZYX1ZlY3RvciAqdmFsdWVzbG8gPSAoSFZYX1ZlY3RvciAqKXdvcmRfdmFsdWVzOworICAgIEhW WF9WZWN0b3IgKnZhbHVlc2hpID0gKEhWWF9WZWN0b3IgKikmd29yZF92YWx1ZXNbTUFUUklYX1NJ WkUgLyAyXTsKKworICAgIGFzbSAoIm0wID0gJTFcblx0IgorICAgICAgICAgInYwID0gdm1lbSgl MiArICMwKVxuXHQiCisgICAgICAgICAidjEgPSB2bWVtKCUzICsgIzApXG5cdCIKKyAgICAgICAg ICJ2c2NhdHRlciglMCwgbTAsIHYwLncpLncgPSB2MVxuXHQiCisgICAgICAgICA6IDogInIiKHZ0 Y20udnNjYXR0ZXIzMiksICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAgICAgICAiciIob2Zmc2V0 c2xvKSwgInIiKHZhbHVlc2xvKQorICAgICAgICAgOiAibTAiLCAidjAiLCAidjEiLCAibWVtb3J5 Iik7CisgICAgYXNtICgibTAgPSAlMVxuXHQiCisgICAgICAgICAidjAgPSB2bWVtKCUyICsgIzAp XG5cdCIKKyAgICAgICAgICJ2MSA9IHZtZW0oJTMgKyAjMClcblx0IgorICAgICAgICAgInZzY2F0 dGVyKCUwLCBtMCwgdjAudykudyA9IHYxXG5cdCIKKyAgICAgICAgIDogOiAiciIodnRjbS52c2Nh dHRlcjMyKSwgInIiKHJlZ2lvbl9sZW4pLAorICAgICAgICAgICAgICJyIihvZmZzZXRzaGkpLCAi ciIodmFsdWVzaGkpCisgICAgICAgICA6ICJtMCIsICJ2MCIsICJ2MSIsICJtZW1vcnkiKTsKIAog ICAgIHN5bmNfc2NhdHRlcih2dGNtLnZzY2F0dGVyMzIpOwogfQogCi0vKiBzY2F0dGVyLWFjYyB0 aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KKy8qIHNjYXR0ZXItYWNjdW11 bGF0ZSB0aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIEhWWCAqLwogdm9pZCB2ZWN0b3Jfc2NhdHRl cl8zMl9hY2Modm9pZCkKIHsKLSAgICAvKiBjb3B5IHRoZSBvZmZzZXRzIGFuZCB2YWx1ZXMgdG8g dmVjdG9ycyAqLwotICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2xvID0gKihIVlhfVmVjdG9yICopd29y ZF9vZmZzZXRzOwotICAgIEhWWF9WZWN0b3Igb2Zmc2V0c2hpID0gKihIVlhfVmVjdG9yICopJndv cmRfb2Zmc2V0c1tNQVRSSVhfU0laRSAvIDJdOwotICAgIEhWWF9WZWN0b3IgdmFsdWVzbG8gPSAq KEhWWF9WZWN0b3IgKil3b3JkX3ZhbHVlc19hY2M7Ci0gICAgSFZYX1ZlY3RvciB2YWx1ZXNoaSA9 ICooSFZYX1ZlY3RvciAqKSZ3b3JkX3ZhbHVlc19hY2NbTUFUUklYX1NJWkUgLyAyXTsKLQotICAg IFZTQ0FUVEVSXzMyX0FDQygmdnRjbS52c2NhdHRlcjMyLCByZWdpb25fbGVuLCBvZmZzZXRzbG8s IHZhbHVlc2xvKTsKLSAgICBWU0NBVFRFUl8zMl9BQ0MoJnZ0Y20udnNjYXR0ZXIzMiwgcmVnaW9u X2xlbiwgb2Zmc2V0c2hpLCB2YWx1ZXNoaSk7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0c2xvID0g KEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0c2hpID0g KEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01BVFJJWF9TSVpFIC8gMl07CisgICAgSFZYX1Zl Y3RvciAqdmFsdWVzbG8gPSAoSFZYX1ZlY3RvciAqKXdvcmRfdmFsdWVzX2FjYzsKKyAgICBIVlhf VmVjdG9yICp2YWx1ZXNoaSA9IChIVlhfVmVjdG9yICopJndvcmRfdmFsdWVzX2FjY1tNQVRSSVhf U0laRSAvIDJdOworCisgICAgYXNtICgibTAgPSAlMVxuXHQiCisgICAgICAgICAidjAgPSB2bWVt KCUyICsgIzApXG5cdCIKKyAgICAgICAgICJ2MSA9IHZtZW0oJTMgKyAjMClcblx0IgorICAgICAg ICAgInZzY2F0dGVyKCUwLCBtMCwgdjAudykudyArPSB2MVxuXHQiCisgICAgICAgICA6IDogInIi KHZ0Y20udnNjYXR0ZXIzMiksICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAgICAgICAiciIob2Zm c2V0c2xvKSwgInIiKHZhbHVlc2xvKQorICAgICAgICAgOiAibTAiLCAidjAiLCAidjEiLCAibWVt b3J5Iik7CisgICAgYXNtICgibTAgPSAlMVxuXHQiCisgICAgICAgICAidjAgPSB2bWVtKCUyICsg IzApXG5cdCIKKyAgICAgICAgICJ2MSA9IHZtZW0oJTMgKyAjMClcblx0IgorICAgICAgICAgInZz Y2F0dGVyKCUwLCBtMCwgdjAudykudyArPSB2MVxuXHQiCisgICAgICAgICA6IDogInIiKHZ0Y20u dnNjYXR0ZXIzMiksICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAgICAgICAiciIob2Zmc2V0c2hp KSwgInIiKHZhbHVlc2hpKQorICAgICAgICAgOiAibTAiLCAidjAiLCAidjEiLCAibWVtb3J5Iik7 CiAKICAgICBzeW5jX3NjYXR0ZXIodnRjbS52c2NhdHRlcjMyKTsKIH0KIAotLyogc2NhdHRlciB0 aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIGludHJpbnNpY3MgKi8KKy8qIG1hc2tlZCBzY2F0dGVy IHRoZSAzMiBiaXQgZWxlbWVudHMgdXNpbmcgSFZYICovCiB2b2lkIHZlY3Rvcl9zY2F0dGVyXzMy X21hc2tlZCh2b2lkKQogewotICAgIC8qIGNvcHkgdGhlIG9mZnNldHMgYW5kIHZhbHVlcyB0byB2 ZWN0b3JzICovCi0gICAgSFZYX1ZlY3RvciBvZmZzZXRzbG8gPSAqKEhWWF9WZWN0b3IgKil3b3Jk X29mZnNldHM7Ci0gICAgSFZYX1ZlY3RvciBvZmZzZXRzaGkgPSAqKEhWWF9WZWN0b3IgKikmd29y ZF9vZmZzZXRzW01BVFJJWF9TSVpFIC8gMl07Ci0gICAgSFZYX1ZlY3RvciB2YWx1ZXNsbyA9ICoo SFZYX1ZlY3RvciAqKXdvcmRfdmFsdWVzX21hc2tlZDsKLSAgICBIVlhfVmVjdG9yIHZhbHVlc2hp ID0gKihIVlhfVmVjdG9yICopJndvcmRfdmFsdWVzX21hc2tlZFtNQVRSSVhfU0laRSAvIDJdOwot ICAgIEhWWF9WZWN0b3IgcHJlZF9yZWdsbyA9ICooSFZYX1ZlY3RvciAqKXdvcmRfcHJlZGljYXRl czsKLSAgICBIVlhfVmVjdG9yIHByZWRfcmVnaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF9wcmVk aWNhdGVzW01BVFJJWF9TSVpFIC8gMl07Ci0gICAgSFZYX1ZlY3RvclByZWQgcHJlZHNsbyA9IFZB TkRfVkFMKHByZWRfcmVnbG8sIH4wKTsKLSAgICBIVlhfVmVjdG9yUHJlZCBwcmVkc2hpID0gVkFO RF9WQUwocHJlZF9yZWdoaSwgfjApOwotCi0gICAgVlNDQVRURVJfMzJfTUFTS0VEKHByZWRzbG8s ICZ2dGNtLnZzY2F0dGVyMzIsIHJlZ2lvbl9sZW4sIG9mZnNldHNsbywKLSAgICAgICAgICAgICAg ICAgICAgICAgdmFsdWVzbG8pOwotICAgIFZTQ0FUVEVSXzMyX01BU0tFRChwcmVkc2hpLCAmdnRj bS52c2NhdHRlcjMyLCByZWdpb25fbGVuLCBvZmZzZXRzaGksCi0gICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlc2hpKTsKKyAgICBIVlhfVmVjdG9yICpvZmZzZXRzbG8gPSAoSFZYX1ZlY3RvciAq KXdvcmRfb2Zmc2V0czsKKyAgICBIVlhfVmVjdG9yICpvZmZzZXRzaGkgPSAoSFZYX1ZlY3RvciAq KSZ3b3JkX29mZnNldHNbTUFUUklYX1NJWkUgLyAyXTsKKyAgICBIVlhfVmVjdG9yICp2YWx1ZXNs byA9IChIVlhfVmVjdG9yICopd29yZF92YWx1ZXNfbWFza2VkOworICAgIEhWWF9WZWN0b3IgKnZh bHVlc2hpID0gKEhWWF9WZWN0b3IgKikmd29yZF92YWx1ZXNfbWFza2VkW01BVFJJWF9TSVpFIC8g Ml07CisgICAgSFZYX1ZlY3RvciAqcHJlZHNsbyA9IChIVlhfVmVjdG9yICopd29yZF9wcmVkaWNh dGVzOworICAgIEhWWF9WZWN0b3IgKnByZWRzaGkgPSAoSFZYX1ZlY3RvciAqKSZ3b3JkX3ByZWRp Y2F0ZXNbTUFUUklYX1NJWkUgLyAyXTsKKworICAgIGFzbSAoInIxID0gIy0xXG5cdCIKKyAgICAg ICAgICJ2MCA9IHZtZW0oJTAgKyAjMClcblx0IgorICAgICAgICAgInEwID0gdmFuZCh2MCwgcjEp XG5cdCIKKyAgICAgICAgICJtMCA9ICUyXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTMgKyAj MClcblx0IgorICAgICAgICAgInYxID0gdm1lbSglNCArICMwKVxuXHQiCisgICAgICAgICAiaWYg KHEwKSB2c2NhdHRlciglMSwgbTAsIHYwLncpLncgPSB2MVxuXHQiCisgICAgICAgICA6IDogInIi KHByZWRzbG8pLCAiciIodnRjbS52c2NhdHRlcjMyKSwgInIiKHJlZ2lvbl9sZW4pLAorICAgICAg ICAgICAgICJyIihvZmZzZXRzbG8pLCAiciIodmFsdWVzbG8pCisgICAgICAgICA6ICJyMSIsICJx MCIsICJtMCIsICJxMCIsICJ2MCIsICJ2MSIsICJtZW1vcnkiKTsKKyAgICBhc20gKCJyMSA9ICMt MVxuXHQiCisgICAgICAgICAidjAgPSB2bWVtKCUwICsgIzApXG5cdCIKKyAgICAgICAgICJxMCA9 IHZhbmQodjAsIHIxKVxuXHQiCisgICAgICAgICAibTAgPSAlMlxuXHQiCisgICAgICAgICAidjAg PSB2bWVtKCUzICsgIzApXG5cdCIKKyAgICAgICAgICJ2MSA9IHZtZW0oJTQgKyAjMClcblx0Igor ICAgICAgICAgImlmIChxMCkgdnNjYXR0ZXIoJTEsIG0wLCB2MC53KS53ID0gdjFcblx0IgorICAg ICAgICAgOiA6ICJyIihwcmVkc2hpKSwgInIiKHZ0Y20udnNjYXR0ZXIzMiksICJyIihyZWdpb25f bGVuKSwKKyAgICAgICAgICAgICAiciIob2Zmc2V0c2hpKSwgInIiKHZhbHVlc2hpKQorICAgICAg ICAgOiAicjEiLCAicTAiLCAibTAiLCAicTAiLCAidjAiLCAidjEiLCAibWVtb3J5Iik7CiAKLSAg ICBzeW5jX3NjYXR0ZXIodnRjbS52c2NhdHRlcjE2KTsKKyAgICBzeW5jX3NjYXR0ZXIodnRjbS52 c2NhdHRlcjMyKTsKIH0KIAotLyogc2NhdHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHdpdGggMzIg Yml0IG9mZnNldHMgdXNpbmcgaW50cmluc2ljcyAqLworLyogc2NhdHRlciB0aGUgMTYgYml0IGVs ZW1lbnRzIHdpdGggMzIgYml0IG9mZnNldHMgdXNpbmcgSFZYICovCiB2b2lkIHZlY3Rvcl9zY2F0 dGVyXzE2XzMyKHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3RvclBhaXIgb2Zmc2V0czsKLSAgICBIVlhf VmVjdG9yIHZhbHVlczsKLQotICAgIC8qIGdldCB0aGUgd29yZCBvZmZzZXRzIGluIGEgdmVjdG9y IHBhaXIgKi8KLSAgICBvZmZzZXRzID0gKihIVlhfVmVjdG9yUGFpciAqKXdvcmRfb2Zmc2V0czsK LQotICAgIC8qIHRoZXNlIHZhbHVlcyBuZWVkIHRvIGJlIHNodWZmbGVkIGZvciB0aGUgc2NhdHRl ciAqLwotICAgIHZhbHVlcyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfdmFsdWVzOwotICAgIHZhbHVl cyA9IFZTSFVGRl9IKHZhbHVlcyk7Ci0KLSAgICBWU0NBVFRFUl8xNl8zMigmdnRjbS52c2NhdHRl cjE2XzMyLCByZWdpb25fbGVuLCBvZmZzZXRzLCB2YWx1ZXMpOworICAgIGFzbSAoIm0wID0gJTFc blx0IgorICAgICAgICAgInYwID0gdm1lbSglMiArICMwKVxuXHQiCisgICAgICAgICAidjEgPSB2 bWVtKCUyICsgIzEpXG5cdCIKKyAgICAgICAgICJ2MiA9IHZtZW0oJTMgKyAjMClcblx0IgorICAg ICAgICAgInYyLmggPSB2c2h1ZmYodjIuaClcblx0IiAgLyogc2h1ZmZsZSB0aGUgdmFsdWVzIGZv ciB0aGUgc2NhdHRlciAqLworICAgICAgICAgInZzY2F0dGVyKCUwLCBtMCwgdjE6MC53KS5oID0g djJcblx0IgorICAgICAgICAgOiA6ICJyIih2dGNtLnZzY2F0dGVyMTZfMzIpLCAiciIocmVnaW9u X2xlbiksCisgICAgICAgICAgICAgInIiKHdvcmRfb2Zmc2V0cyksICJyIihoYWxmX3ZhbHVlcykK KyAgICAgICAgIDogIm0wIiwgInYwIiwgInYxIiwgInYyIiwgIm1lbW9yeSIpOwogCiAgICAgc3lu Y19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNl8zMik7CiB9CiAKLS8qIHNjYXR0ZXItYWNjIHRoZSAx NiBiaXQgZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zmc2V0cyB1c2luZyBpbnRyaW5zaWNzICovCisv KiBzY2F0dGVyLWFjY3VtdWxhdGUgdGhlIDE2IGJpdCBlbGVtZW50cyB3aXRoIDMyIGJpdCBvZmZz ZXRzIHVzaW5nIEhWWCAqLwogdm9pZCB2ZWN0b3Jfc2NhdHRlcl8xNl8zMl9hY2Modm9pZCkKIHsK LSAgICBIVlhfVmVjdG9yUGFpciBvZmZzZXRzOwotICAgIEhWWF9WZWN0b3IgdmFsdWVzOwotCi0g ICAgLyogZ2V0IHRoZSB3b3JkIG9mZnNldHMgaW4gYSB2ZWN0b3IgcGFpciAqLwotICAgIG9mZnNl dHMgPSAqKEhWWF9WZWN0b3JQYWlyICopd29yZF9vZmZzZXRzOwotCi0gICAgLyogdGhlc2UgdmFs dWVzIG5lZWQgdG8gYmUgc2h1ZmZsZWQgZm9yIHRoZSBzY2F0dGVyICovCi0gICAgdmFsdWVzID0g KihIVlhfVmVjdG9yICopaGFsZl92YWx1ZXNfYWNjOwotICAgIHZhbHVlcyA9IFZTSFVGRl9IKHZh bHVlcyk7Ci0KLSAgICBWU0NBVFRFUl8xNl8zMl9BQ0MoJnZ0Y20udnNjYXR0ZXIxNl8zMiwgcmVn aW9uX2xlbiwgb2Zmc2V0cywgdmFsdWVzKTsKKyAgICBhc20gKCJtMCA9ICUxXG5cdCIKKyAgICAg ICAgICJ2MCA9IHZtZW0oJTIgKyAjMClcblx0IgorICAgICAgICAgInYxID0gdm1lbSglMiArICMx KVxuXHQiCisgICAgICAgICAidjIgPSB2bWVtKCUzICsgIzApXG5cdCIgXAorICAgICAgICAgInYy LmggPSB2c2h1ZmYodjIuaClcblx0IiAgLyogc2h1ZmZsZSB0aGUgdmFsdWVzIGZvciB0aGUgc2Nh dHRlciAqLworICAgICAgICAgInZzY2F0dGVyKCUwLCBtMCwgdjE6MC53KS5oICs9IHYyXG5cdCIK KyAgICAgICAgIDogOiAiciIodnRjbS52c2NhdHRlcjE2XzMyKSwgInIiKHJlZ2lvbl9sZW4pLAor ICAgICAgICAgICAgICJyIih3b3JkX29mZnNldHMpLCAiciIoaGFsZl92YWx1ZXNfYWNjKQorICAg ICAgICAgOiAibTAiLCAidjAiLCAidjEiLCAidjIiLCAibWVtb3J5Iik7CiAKICAgICBzeW5jX3Nj YXR0ZXIodnRjbS52c2NhdHRlcjE2XzMyKTsKIH0KIAotLyogbWFza2VkIHNjYXR0ZXIgdGhlIDE2 IGJpdCBlbGVtZW50cyB3aXRoIDMyIGJpdCBvZmZzZXRzIHVzaW5nIGludHJpbnNpY3MgKi8KKy8q IG1hc2tlZCBzY2F0dGVyIHRoZSAxNiBiaXQgZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zmc2V0cyB1 c2luZyBIVlggKi8KIHZvaWQgdmVjdG9yX3NjYXR0ZXJfMTZfMzJfbWFza2VkKHZvaWQpCiB7Ci0g ICAgSFZYX1ZlY3RvclBhaXIgb2Zmc2V0czsKLSAgICBIVlhfVmVjdG9yIHZhbHVlczsKLSAgICBI VlhfVmVjdG9yIHByZWRfcmVnOwotCi0gICAgLyogZ2V0IHRoZSB3b3JkIG9mZnNldHMgaW4gYSB2 ZWN0b3IgcGFpciAqLwotICAgIG9mZnNldHMgPSAqKEhWWF9WZWN0b3JQYWlyICopd29yZF9vZmZz ZXRzOwotCi0gICAgLyogdGhlc2UgdmFsdWVzIG5lZWQgdG8gYmUgc2h1ZmZsZWQgZm9yIHRoZSBz Y2F0dGVyICovCi0gICAgdmFsdWVzID0gKihIVlhfVmVjdG9yICopaGFsZl92YWx1ZXNfbWFza2Vk OwotICAgIHZhbHVlcyA9IFZTSFVGRl9IKHZhbHVlcyk7Ci0KLSAgICBwcmVkX3JlZyA9ICooSFZY X1ZlY3RvciAqKWhhbGZfcHJlZGljYXRlczsKLSAgICBwcmVkX3JlZyA9IFZTSFVGRl9IKHByZWRf cmVnKTsKLSAgICBIVlhfVmVjdG9yUHJlZCBwcmVkcyA9IFZBTkRfVkFMKHByZWRfcmVnLCB+MCk7 Ci0KLSAgICBWU0NBVFRFUl8xNl8zMl9NQVNLRUQocHJlZHMsICZ2dGNtLnZzY2F0dGVyMTZfMzIs IHJlZ2lvbl9sZW4sIG9mZnNldHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyk7 CisgICAgYXNtICgicjEgPSAjLTFcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMCArICMwKVxu XHQiCisgICAgICAgICAidjAuaCA9IHZzaHVmZih2MC5oKVxuXHQiICAvKiBzaHVmZmxlIHRoZSBw cmVkaWNhdGVzICovCisgICAgICAgICAicTAgPSB2YW5kKHYwLCByMSlcblx0IgorICAgICAgICAg Im0wID0gJTJcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMyArICMwKVxuXHQiCisgICAgICAg ICAidjEgPSB2bWVtKCUzICsgIzEpXG5cdCIKKyAgICAgICAgICJ2MiA9IHZtZW0oJTQgKyAjMClc blx0IiBcCisgICAgICAgICAidjIuaCA9IHZzaHVmZih2Mi5oKVxuXHQiICAvKiBzaHVmZmxlIHRo ZSB2YWx1ZXMgZm9yIHRoZSBzY2F0dGVyICovCisgICAgICAgICAiaWYgKHEwKSB2c2NhdHRlcigl MSwgbTAsIHYxOjAudykuaCA9IHYyXG5cdCIKKyAgICAgICAgIDogOiAiciIoaGFsZl9wcmVkaWNh dGVzKSwgInIiKHZ0Y20udnNjYXR0ZXIxNl8zMiksICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAg ICAgICAiciIod29yZF9vZmZzZXRzKSwgInIiKGhhbGZfdmFsdWVzX21hc2tlZCkKKyAgICAgICAg IDogInIxIiwgInEwIiwgIm0wIiwgInYwIiwgInYxIiwgInYyIiwgIm1lbW9yeSIpOwogCiAgICAg c3luY19zY2F0dGVyKHZ0Y20udnNjYXR0ZXIxNl8zMik7CiB9CiAKLS8qIGdhdGhlciB0aGUgZWxl bWVudHMgZnJvbSB0aGUgc2NhdHRlcjE2IGJ1ZmZlciAqLworLyogZ2F0aGVyIHRoZSBlbGVtZW50 cyBmcm9tIHRoZSBzY2F0dGVyMTYgYnVmZmVyIHVzaW5nIEhWWCAqLwogdm9pZCB2ZWN0b3JfZ2F0 aGVyXzE2KHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3RvciAqdmdhdGhlciA9IChIVlhfVmVjdG9yICop JnZ0Y20udmdhdGhlcjE2OwotICAgIEhWWF9WZWN0b3Igb2Zmc2V0cyA9ICooSFZYX1ZlY3RvciAq KWhhbGZfb2Zmc2V0czsKLQotICAgIFZHQVRIRVJfMTYodmdhdGhlciwgJnZ0Y20udnNjYXR0ZXIx NiwgcmVnaW9uX2xlbiwgb2Zmc2V0cyk7Ci0KLSAgICBzeW5jX2dhdGhlcih2Z2F0aGVyKTsKKyAg ICBhc20gKCJtMCA9ICUxXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTIgKyAjMClcblx0Igor ICAgICAgICAgInsgdnRtcC5oID0gdmdhdGhlciglMCwgbTAsIHYwLmgpLmhcblx0IgorICAgICAg ICAgIiAgdm1lbSglMyArICMwKSA9IHZ0bXAubmV3IH1cblx0IgorICAgICAgICAgOiA6ICJyIih2 dGNtLnZzY2F0dGVyMTYpLCAiciIocmVnaW9uX2xlbiksCisgICAgICAgICAgICAgInIiKGhhbGZf b2Zmc2V0cyksICJyIih2dGNtLnZnYXRoZXIxNikKKyAgICAgICAgIDogIm0wIiwgInYwIiwgIm1l bW9yeSIpOworCisgICAgc3luY19nYXRoZXIodnRjbS52Z2F0aGVyMTYpOwogfQogCiBzdGF0aWMg dW5zaWduZWQgc2hvcnQgZ2F0aGVyXzE2X21hc2tlZF9pbml0KHZvaWQpCkBAIC00MjcsMzEgKzQy Myw1MSBAQCBzdGF0aWMgdW5zaWduZWQgc2hvcnQgZ2F0aGVyXzE2X21hc2tlZF9pbml0KHZvaWQp CiAgICAgcmV0dXJuIGxldHRlciB8IChsZXR0ZXIgPDwgOCk7CiB9CiAKKy8qIG1hc2tlZCBnYXRo ZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIxNiBidWZmZXIgdXNpbmcgSFZYICovCiB2 b2lkIHZlY3Rvcl9nYXRoZXJfMTZfbWFza2VkKHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3RvciAqdmdh dGhlciA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjE2OwotICAgIEhWWF9WZWN0b3Igb2Zm c2V0cyA9ICooSFZYX1ZlY3RvciAqKWhhbGZfb2Zmc2V0czsKLSAgICBIVlhfVmVjdG9yIHByZWRf cmVnID0gKihIVlhfVmVjdG9yICopaGFsZl9wcmVkaWNhdGVzOwotICAgIEhWWF9WZWN0b3JQcmVk IHByZWRzID0gVkFORF9WQUwocHJlZF9yZWcsIH4wKTsKLQotICAgICp2Z2F0aGVyID0gVlNQTEFU X0goZ2F0aGVyXzE2X21hc2tlZF9pbml0KCkpOwotICAgIFZHQVRIRVJfMTZfTUFTS0VEKHZnYXRo ZXIsIHByZWRzLCAmdnRjbS52c2NhdHRlcjE2LCByZWdpb25fbGVuLCBvZmZzZXRzKTsKLQotICAg IHN5bmNfZ2F0aGVyKHZnYXRoZXIpOworICAgIHVuc2lnbmVkIHNob3J0IGluaXQgPSBnYXRoZXJf MTZfbWFza2VkX2luaXQoKTsKKworICAgIGFzbSAoInYwLmggPSB2c3BsYXQoJTUpXG5cdCIKKyAg ICAgICAgICJ2bWVtKCU0ICsgIzApID0gdjBcblx0IiAgLyogaW5pdGlhbGl6ZSB0aGUgd3JpdGUg YXJlYSAqLworICAgICAgICAgInIxID0gIy0xXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTAg KyAjMClcblx0IgorICAgICAgICAgInEwID0gdmFuZCh2MCwgcjEpXG5cdCIKKyAgICAgICAgICJt MCA9ICUyXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTMgKyAjMClcblx0IgorICAgICAgICAg InsgaWYgKHEwKSB2dG1wLmggPSB2Z2F0aGVyKCUxLCBtMCwgdjAuaCkuaFxuXHQiCisgICAgICAg ICAiICB2bWVtKCU0ICsgIzApID0gdnRtcC5uZXcgfVxuXHQiCisgICAgICAgICA6IDogInIiKGhh bGZfcHJlZGljYXRlcyksICJyIih2dGNtLnZzY2F0dGVyMTYpLCAiciIocmVnaW9uX2xlbiksCisg ICAgICAgICAgICAgInIiKGhhbGZfb2Zmc2V0cyksICJyIih2dGNtLnZnYXRoZXIxNiksICJyIihp bml0KQorICAgICAgICAgOiAicjEiLCAicTAiLCAibTAiLCAidjAiLCAibWVtb3J5Iik7CisKKyAg ICBzeW5jX2dhdGhlcih2dGNtLnZnYXRoZXIxNik7CiB9CiAKLS8qIGdhdGhlciB0aGUgZWxlbWVu dHMgZnJvbSB0aGUgc2NhdHRlcjMyIGJ1ZmZlciAqLworLyogZ2F0aGVyIHRoZSBlbGVtZW50cyBm cm9tIHRoZSBzY2F0dGVyMzIgYnVmZmVyIHVzaW5nIEhWWCAqLwogdm9pZCB2ZWN0b3JfZ2F0aGVy XzMyKHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3RvciAqdmdhdGhlcmxvID0gKEhWWF9WZWN0b3IgKikm dnRjbS52Z2F0aGVyMzI7Ci0gICAgSFZYX1ZlY3RvciAqdmdhdGhlcmhpID0KLSAgICAgICAgKEhW WF9WZWN0b3IgKikoKGludCkmdnRjbS52Z2F0aGVyMzIgKyAoTUFUUklYX1NJWkUgKiAyKSk7Ci0g ICAgSFZYX1ZlY3RvciBvZmZzZXRzbG8gPSAqKEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7Ci0g ICAgSFZYX1ZlY3RvciBvZmZzZXRzaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01B VFJJWF9TSVpFIC8gMl07Ci0KLSAgICBWR0FUSEVSXzMyKHZnYXRoZXJsbywgJnZ0Y20udnNjYXR0 ZXIzMiwgcmVnaW9uX2xlbiwgb2Zmc2V0c2xvKTsKLSAgICBWR0FUSEVSXzMyKHZnYXRoZXJoaSwg JnZ0Y20udnNjYXR0ZXIzMiwgcmVnaW9uX2xlbiwgb2Zmc2V0c2hpKTsKKyAgICBIVlhfVmVjdG9y ICp2Z2F0aGVybG8gPSAoSFZYX1ZlY3RvciAqKXZ0Y20udmdhdGhlcjMyOworICAgIEhWWF9WZWN0 b3IgKnZnYXRoZXJoaSA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjMyW01BVFJJWF9TSVpF IC8gMl07CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0c2xvID0gKEhWWF9WZWN0b3IgKil3b3JkX29m ZnNldHM7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0c2hpID0gKEhWWF9WZWN0b3IgKikmd29yZF9v ZmZzZXRzW01BVFJJWF9TSVpFIC8gMl07CisKKyAgICBhc20gKCJtMCA9ICUxXG5cdCIKKyAgICAg ICAgICJ2MCA9IHZtZW0oJTIgKyAjMClcblx0IgorICAgICAgICAgInsgdnRtcC53ID0gdmdhdGhl ciglMCwgbTAsIHYwLncpLndcblx0IgorICAgICAgICAgIiAgdm1lbSglMyArICMwKSA9IHZ0bXAu bmV3IH1cblx0IgorICAgICAgICAgOiA6ICJyIih2dGNtLnZzY2F0dGVyMzIpLCAiciIocmVnaW9u X2xlbiksCisgICAgICAgICAgICAgInIiKG9mZnNldHNsbyksICJyIih2Z2F0aGVybG8pCisgICAg ICAgICA6ICJtMCIsICJ2MCIsICJtZW1vcnkiKTsKKyAgICBhc20gKCJtMCA9ICUxXG5cdCIKKyAg ICAgICAgICJ2MCA9IHZtZW0oJTIgKyAjMClcblx0IgorICAgICAgICAgInsgdnRtcC53ID0gdmdh dGhlciglMCwgbTAsIHYwLncpLndcblx0IgorICAgICAgICAgIiAgdm1lbSglMyArICMwKSA9IHZ0 bXAubmV3IH1cblx0IgorICAgICAgICAgOiA6ICJyIih2dGNtLnZzY2F0dGVyMzIpLCAiciIocmVn aW9uX2xlbiksCisgICAgICAgICAgICAgInIiKG9mZnNldHNoaSksICJyIih2Z2F0aGVyaGkpCisg ICAgICAgICA6ICJtMCIsICJ2MCIsICJtZW1vcnkiKTsKIAorICAgIHN5bmNfZ2F0aGVyKHZnYXRo ZXJsbyk7CiAgICAgc3luY19nYXRoZXIodmdhdGhlcmhpKTsKIH0KIApAQCAtNDYxLDc5ICs0Nzcs ODggQEAgc3RhdGljIHVuc2lnbmVkIGludCBnYXRoZXJfMzJfbWFza2VkX2luaXQodm9pZCkKICAg ICByZXR1cm4gbGV0dGVyIHwgKGxldHRlciA8PCA4KSB8IChsZXR0ZXIgPDwgMTYpIHwgKGxldHRl ciA8PCAyNCk7CiB9CiAKKy8qIG1hc2tlZCBnYXRoZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNj YXR0ZXIzMiBidWZmZXIgdXNpbmcgSFZYICovCiB2b2lkIHZlY3Rvcl9nYXRoZXJfMzJfbWFza2Vk KHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3RvciAqdmdhdGhlcmxvID0gKEhWWF9WZWN0b3IgKikmdnRj bS52Z2F0aGVyMzI7Ci0gICAgSFZYX1ZlY3RvciAqdmdhdGhlcmhpID0KLSAgICAgICAgKEhWWF9W ZWN0b3IgKikoKGludCkmdnRjbS52Z2F0aGVyMzIgKyAoTUFUUklYX1NJWkUgKiAyKSk7Ci0gICAg SFZYX1ZlY3RvciBvZmZzZXRzbG8gPSAqKEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7Ci0gICAg SFZYX1ZlY3RvciBvZmZzZXRzaGkgPSAqKEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01BVFJJ WF9TSVpFIC8gMl07Ci0gICAgSFZYX1ZlY3RvciBwcmVkX3JlZ2xvID0gKihIVlhfVmVjdG9yICop d29yZF9wcmVkaWNhdGVzOwotICAgIEhWWF9WZWN0b3JQcmVkIHByZWRzbG8gPSBWQU5EX1ZBTChw cmVkX3JlZ2xvLCB+MCk7Ci0gICAgSFZYX1ZlY3RvciBwcmVkX3JlZ2hpID0gKihIVlhfVmVjdG9y ICopJndvcmRfcHJlZGljYXRlc1tNQVRSSVhfU0laRSAvIDJdOwotICAgIEhWWF9WZWN0b3JQcmVk IHByZWRzaGkgPSBWQU5EX1ZBTChwcmVkX3JlZ2hpLCB+MCk7Ci0KLSAgICAqdmdhdGhlcmxvID0g VlNQTEFUX0goZ2F0aGVyXzMyX21hc2tlZF9pbml0KCkpOwotICAgICp2Z2F0aGVyaGkgPSBWU1BM QVRfSChnYXRoZXJfMzJfbWFza2VkX2luaXQoKSk7Ci0gICAgVkdBVEhFUl8zMl9NQVNLRUQodmdh dGhlcmxvLCBwcmVkc2xvLCAmdnRjbS52c2NhdHRlcjMyLCByZWdpb25fbGVuLAotICAgICAgICAg ICAgICAgICAgICAgIG9mZnNldHNsbyk7Ci0gICAgVkdBVEhFUl8zMl9NQVNLRUQodmdhdGhlcmhp LCBwcmVkc2hpLCAmdnRjbS52c2NhdHRlcjMyLCByZWdpb25fbGVuLAotICAgICAgICAgICAgICAg ICAgICAgIG9mZnNldHNoaSk7CisgICAgdW5zaWduZWQgaW50IGluaXQgPSBnYXRoZXJfMzJfbWFz a2VkX2luaXQoKTsKKyAgICBIVlhfVmVjdG9yICp2Z2F0aGVybG8gPSAoSFZYX1ZlY3RvciAqKXZ0 Y20udmdhdGhlcjMyOworICAgIEhWWF9WZWN0b3IgKnZnYXRoZXJoaSA9IChIVlhfVmVjdG9yICop JnZ0Y20udmdhdGhlcjMyW01BVFJJWF9TSVpFIC8gMl07CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0 c2xvID0gKEhWWF9WZWN0b3IgKil3b3JkX29mZnNldHM7CisgICAgSFZYX1ZlY3RvciAqb2Zmc2V0 c2hpID0gKEhWWF9WZWN0b3IgKikmd29yZF9vZmZzZXRzW01BVFJJWF9TSVpFIC8gMl07CisgICAg SFZYX1ZlY3RvciAqcHJlZHNsbyA9IChIVlhfVmVjdG9yICopd29yZF9wcmVkaWNhdGVzOworICAg IEhWWF9WZWN0b3IgKnByZWRzaGkgPSAoSFZYX1ZlY3RvciAqKSZ3b3JkX3ByZWRpY2F0ZXNbTUFU UklYX1NJWkUgLyAyXTsKKworICAgIGFzbSAoInYwLmggPSB2c3BsYXQoJTUpXG5cdCIKKyAgICAg ICAgICJ2bWVtKCU0ICsgIzApID0gdjBcblx0IiAgLyogaW5pdGlhbGl6ZSB0aGUgd3JpdGUgYXJl YSAqLworICAgICAgICAgInIxID0gIy0xXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTAgKyAj MClcblx0IgorICAgICAgICAgInEwID0gdmFuZCh2MCwgcjEpXG5cdCIKKyAgICAgICAgICJtMCA9 ICUyXG5cdCIKKyAgICAgICAgICJ2MCA9IHZtZW0oJTMgKyAjMClcblx0IgorICAgICAgICAgInsg aWYgKHEwKSB2dG1wLncgPSB2Z2F0aGVyKCUxLCBtMCwgdjAudykud1xuXHQiCisgICAgICAgICAi ICB2bWVtKCU0ICsgIzApID0gdnRtcC5uZXcgfVxuXHQiCisgICAgICAgICA6IDogInIiKHByZWRz bG8pLCAiciIodnRjbS52c2NhdHRlcjMyKSwgInIiKHJlZ2lvbl9sZW4pLAorICAgICAgICAgICAg ICJyIihvZmZzZXRzbG8pLCAiciIodmdhdGhlcmxvKSwgInIiKGluaXQpCisgICAgICAgICA6ICJy MSIsICJxMCIsICJtMCIsICJ2MCIsICJtZW1vcnkiKTsKKyAgICBhc20gKCJ2MC5oID0gdnNwbGF0 KCU1KVxuXHQiCisgICAgICAgICAidm1lbSglNCArICMwKSA9IHYwXG5cdCIgIC8qIGluaXRpYWxp emUgdGhlIHdyaXRlIGFyZWEgKi8KKyAgICAgICAgICJyMSA9ICMtMVxuXHQiCisgICAgICAgICAi djAgPSB2bWVtKCUwICsgIzApXG5cdCIKKyAgICAgICAgICJxMCA9IHZhbmQodjAsIHIxKVxuXHQi CisgICAgICAgICAibTAgPSAlMlxuXHQiCisgICAgICAgICAidjAgPSB2bWVtKCUzICsgIzApXG5c dCIKKyAgICAgICAgICJ7IGlmIChxMCkgdnRtcC53ID0gdmdhdGhlciglMSwgbTAsIHYwLncpLndc blx0IgorICAgICAgICAgIiAgdm1lbSglNCArICMwKSA9IHZ0bXAubmV3IH1cblx0IgorICAgICAg ICAgOiA6ICJyIihwcmVkc2hpKSwgInIiKHZ0Y20udnNjYXR0ZXIzMiksICJyIihyZWdpb25fbGVu KSwKKyAgICAgICAgICAgICAiciIob2Zmc2V0c2hpKSwgInIiKHZnYXRoZXJoaSksICJyIihpbml0 KQorICAgICAgICAgOiAicjEiLCAicTAiLCAibTAiLCAidjAiLCAibWVtb3J5Iik7CiAKICAgICBz eW5jX2dhdGhlcih2Z2F0aGVybG8pOwogICAgIHN5bmNfZ2F0aGVyKHZnYXRoZXJoaSk7CiB9CiAK LS8qIGdhdGhlciB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc2NhdHRlcjE2XzMyIGJ1ZmZlciAqLwor LyogZ2F0aGVyIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBzY2F0dGVyMTZfMzIgYnVmZmVyIHVzaW5n IEhWWCAqLwogdm9pZCB2ZWN0b3JfZ2F0aGVyXzE2XzMyKHZvaWQpCiB7Ci0gICAgSFZYX1ZlY3Rv ciAqdmdhdGhlcjsKLSAgICBIVlhfVmVjdG9yUGFpciBvZmZzZXRzOwotICAgIEhWWF9WZWN0b3Ig dmFsdWVzOwotCi0gICAgLyogZ2V0IHRoZSB2dGNtIGFkZHJlc3MgdG8gZ2F0aGVyIGZyb20gKi8K LSAgICB2Z2F0aGVyID0gKEhWWF9WZWN0b3IgKikmdnRjbS52Z2F0aGVyMTZfMzI7Ci0KLSAgICAv KiBnZXQgdGhlIHdvcmQgb2Zmc2V0cyBpbiBhIHZlY3RvciBwYWlyICovCi0gICAgb2Zmc2V0cyA9 ICooSFZYX1ZlY3RvclBhaXIgKil3b3JkX29mZnNldHM7Ci0KLSAgICBWR0FUSEVSXzE2XzMyKHZn YXRoZXIsICZ2dGNtLnZzY2F0dGVyMTZfMzIsIHJlZ2lvbl9sZW4sIG9mZnNldHMpOwotCi0gICAg LyogZGVhbCB0aGUgZWxlbWVudHMgdG8gZ2V0IHRoZSBvcmRlciBiYWNrICovCi0gICAgdmFsdWVz ID0gKihIVlhfVmVjdG9yICopdmdhdGhlcjsKLSAgICB2YWx1ZXMgPSBWREVBTF9IKHZhbHVlcyk7 Ci0KLSAgICAvKiB3cml0ZSBpdCBiYWNrIHRvIHZ0Y20gYWRkcmVzcyAqLwotICAgICooSFZYX1Zl Y3RvciAqKXZnYXRoZXIgPSB2YWx1ZXM7CisgICAgYXNtICgibTAgPSAlMVxuXHQiCisgICAgICAg ICAidjAgPSB2bWVtKCUyICsgIzApXG5cdCIKKyAgICAgICAgICJ2MSA9IHZtZW0oJTIgKyAjMSlc blx0IgorICAgICAgICAgInsgdnRtcC5oID0gdmdhdGhlciglMCwgbTAsIHYxOjAudykuaFxuXHQi CisgICAgICAgICAiICB2bWVtKCUzICsgIzApID0gdnRtcC5uZXcgfVxuXHQiCisgICAgICAgICAi djAgPSB2bWVtKCUzICsgIzApXG5cdCIKKyAgICAgICAgICJ2MC5oID0gdmRlYWwodjAuaClcblx0 IiAgLyogZGVhbCB0aGUgZWxlbWVudHMgdG8gZ2V0IHRoZSBvcmRlciBiYWNrICovCisgICAgICAg ICAidm1lbSglMyArICMwKSA9IHYwXG5cdCIKKyAgICAgICAgIDogOiAiciIodnRjbS52c2NhdHRl cjE2XzMyKSwgInIiKHJlZ2lvbl9sZW4pLAorICAgICAgICAgICAgICJyIih3b3JkX29mZnNldHMp LCAiciIodnRjbS52Z2F0aGVyMTZfMzIpCisgICAgICAgICA6ICJtMCIsICJ2MCIsICJ2MSIsICJt ZW1vcnkiKTsKKworICAgIHN5bmNfZ2F0aGVyKHZ0Y20udmdhdGhlcjE2XzMyKTsKIH0KIAorLyog bWFza2VkIGdhdGhlciB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc2NhdHRlcjE2XzMyIGJ1ZmZlciB1 c2luZyBIVlggKi8KIHZvaWQgdmVjdG9yX2dhdGhlcl8xNl8zMl9tYXNrZWQodm9pZCkKIHsKLSAg ICBIVlhfVmVjdG9yICp2Z2F0aGVyOwotICAgIEhWWF9WZWN0b3JQYWlyIG9mZnNldHM7Ci0gICAg SFZYX1ZlY3RvciBwcmVkX3JlZzsKLSAgICBIVlhfVmVjdG9yUHJlZCBwcmVkczsKLSAgICBIVlhf VmVjdG9yIHZhbHVlczsKLQotICAgIC8qIGdldCB0aGUgdnRjbSBhZGRyZXNzIHRvIGdhdGhlciBm cm9tICovCi0gICAgdmdhdGhlciA9IChIVlhfVmVjdG9yICopJnZ0Y20udmdhdGhlcjE2XzMyOwot Ci0gICAgLyogZ2V0IHRoZSB3b3JkIG9mZnNldHMgaW4gYSB2ZWN0b3IgcGFpciAqLwotICAgIG9m ZnNldHMgPSAqKEhWWF9WZWN0b3JQYWlyICopd29yZF9vZmZzZXRzOwotICAgIHByZWRfcmVnID0g KihIVlhfVmVjdG9yICopaGFsZl9wcmVkaWNhdGVzOwotICAgIHByZWRfcmVnID0gVlNIVUZGX0go cHJlZF9yZWcpOwotICAgIHByZWRzID0gVkFORF9WQUwocHJlZF9yZWcsIH4wKTsKLQotICAgKnZn YXRoZXIgPSBWU1BMQVRfSChnYXRoZXJfMTZfbWFza2VkX2luaXQoKSk7Ci0gICBWR0FUSEVSXzE2 XzMyX01BU0tFRCh2Z2F0aGVyLCBwcmVkcywgJnZ0Y20udnNjYXR0ZXIxNl8zMiwgcmVnaW9uX2xl biwKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHMpOwotCi0gICAgLyogZGVhbCB0aGUg ZWxlbWVudHMgdG8gZ2V0IHRoZSBvcmRlciBiYWNrICovCi0gICAgdmFsdWVzID0gKihIVlhfVmVj dG9yICopdmdhdGhlcjsKLSAgICB2YWx1ZXMgPSBWREVBTF9IKHZhbHVlcyk7Ci0KLSAgICAvKiB3 cml0ZSBpdCBiYWNrIHRvIHZ0Y20gYWRkcmVzcyAqLwotICAgICooSFZYX1ZlY3RvciAqKXZnYXRo ZXIgPSB2YWx1ZXM7CisgICAgdW5zaWduZWQgc2hvcnQgaW5pdCA9IGdhdGhlcl8xNl9tYXNrZWRf aW5pdCgpOworCisgICAgYXNtICgidjAuaCA9IHZzcGxhdCglNSlcblx0IgorICAgICAgICAgInZt ZW0oJTQgKyAjMCkgPSB2MFxuXHQiICAvKiBpbml0aWFsaXplIHRoZSB3cml0ZSBhcmVhICovCisg ICAgICAgICAicjEgPSAjLTFcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMCArICMwKVxuXHQi CisgICAgICAgICAidjAuaCA9IHZzaHVmZih2MC5oKVxuXHQiICAvKiBzaHVmZmxlIHRoZSBwcmVk aWNhdGVzICovCisgICAgICAgICAicTAgPSB2YW5kKHYwLCByMSlcblx0IgorICAgICAgICAgIm0w ID0gJTJcblx0IgorICAgICAgICAgInYwID0gdm1lbSglMyArICMwKVxuXHQiCisgICAgICAgICAi djEgPSB2bWVtKCUzICsgIzEpXG5cdCIKKyAgICAgICAgICJ7IGlmIChxMCkgdnRtcC5oID0gdmdh dGhlciglMSwgbTAsIHYxOjAudykuaFxuXHQiCisgICAgICAgICAiICB2bWVtKCU0ICsgIzApID0g dnRtcC5uZXcgfVxuXHQiCisgICAgICAgICAidjAgPSB2bWVtKCU0ICsgIzApXG5cdCIKKyAgICAg ICAgICJ2MC5oID0gdmRlYWwodjAuaClcblx0IiAgLyogZGVhbCB0aGUgZWxlbWVudHMgdG8gZ2V0 IHRoZSBvcmRlciBiYWNrICovCisgICAgICAgICAidm1lbSglNCArICMwKSA9IHYwXG5cdCIKKyAg ICAgICAgIDogOiAiciIoaGFsZl9wcmVkaWNhdGVzKSwgInIiKHZ0Y20udnNjYXR0ZXIxNl8zMiks ICJyIihyZWdpb25fbGVuKSwKKyAgICAgICAgICAgICAiciIod29yZF9vZmZzZXRzKSwgInIiKHZ0 Y20udmdhdGhlcjE2XzMyKSwgInIiKGluaXQpCisgICAgICAgICA6ICJyMSIsICJxMCIsICJtMCIs ICJ2MCIsICJ2MSIsICJtZW1vcnkiKTsKKworICAgIHN5bmNfZ2F0aGVyKHZ0Y20udmdhdGhlcjE2 XzMyKTsKIH0KIAogc3RhdGljIHZvaWQgY2hlY2tfYnVmZmVyKGNvbnN0IGNoYXIgKm5hbWUsIHZv aWQgKmMsIHZvaWQgKnIsIHNpemVfdCBzaXplKQpAQCAtNTc5LDYgKzYwNCw3IEBAIHZvaWQgc2Nh bGFyX3NjYXR0ZXJfMTZfYWNjKHVuc2lnbmVkIHNob3J0ICp2c2NhdHRlcjE2KQogICAgIH0KIH0K IAorLyogc2NhdHRlci1hY2N1bXVsYXRlIHRoZSAxNiBiaXQgZWxlbWVudHMgdXNpbmcgQyAqLwog dm9pZCBjaGVja19zY2F0dGVyXzE2X2FjYygpCiB7CiAgICAgbWVtc2V0KHZzY2F0dGVyMTZfcmVm LCBGSUxMX0NIQVIsCkBAIC01ODksNyArNjE1LDcgQEAgdm9pZCBjaGVja19zY2F0dGVyXzE2X2Fj YygpCiAgICAgICAgICAgICAgICAgIFNDQVRURVJfQlVGRkVSX1NJWkUgKiBzaXplb2YodW5zaWdu ZWQgc2hvcnQpKTsKIH0KIAotLyogc2NhdHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHVzaW5nIEMg Ki8KKy8qIG1hc2tlZCBzY2F0dGVyIHRoZSAxNiBiaXQgZWxlbWVudHMgdXNpbmcgQyAqLwogdm9p ZCBzY2FsYXJfc2NhdHRlcl8xNl9tYXNrZWQodW5zaWduZWQgc2hvcnQgKnZzY2F0dGVyMTYpCiB7 CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgaSsrKSB7CkBAIC02MjgsNyAr NjU0LDcgQEAgdm9pZCBjaGVja19zY2F0dGVyXzMyKCkKICAgICAgICAgICAgICAgICAgU0NBVFRF Ul9CVUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBpbnQpKTsKIH0KIAotLyogc2NhdHRlciB0 aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIEMgKi8KKy8qIHNjYXR0ZXItYWNjdW11bGF0ZSB0aGUg MzIgYml0IGVsZW1lbnRzIHVzaW5nIEMgKi8KIHZvaWQgc2NhbGFyX3NjYXR0ZXJfMzJfYWNjKHVu c2lnbmVkIGludCAqdnNjYXR0ZXIzMikKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJ WF9TSVpFOyArK2kpIHsKQEAgLTY0Niw3ICs2NzIsNyBAQCB2b2lkIGNoZWNrX3NjYXR0ZXJfMzJf YWNjKCkKICAgICAgICAgICAgICAgICAgU0NBVFRFUl9CVUZGRVJfU0laRSAqIHNpemVvZih1bnNp Z25lZCBpbnQpKTsKIH0KIAotLyogc2NhdHRlciB0aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIEMg Ki8KKy8qIG1hc2tlZCBzY2F0dGVyIHRoZSAzMiBiaXQgZWxlbWVudHMgdXNpbmcgQyAqLwogdm9p ZCBzY2FsYXJfc2NhdHRlcl8zMl9tYXNrZWQodW5zaWduZWQgaW50ICp2c2NhdHRlcjMyKQogewog ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFUUklYX1NJWkU7IGkrKykgewpAQCAtNjY3LDcgKzY5 Myw3IEBAIHZvaWQgY2hlY2tfc2NhdHRlcl8zMl9tYXNrZWQoKQogICAgICAgICAgICAgICAgICAg U0NBVFRFUl9CVUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBpbnQpKTsKIH0KIAotLyogc2Nh dHRlciB0aGUgMzIgYml0IGVsZW1lbnRzIHVzaW5nIEMgKi8KKy8qIHNjYXR0ZXIgdGhlIDE2IGJp dCBlbGVtZW50cyB3aXRoIDMyIGJpdCBvZmZzZXRzIHVzaW5nIEMgKi8KIHZvaWQgc2NhbGFyX3Nj YXR0ZXJfMTZfMzIodW5zaWduZWQgc2hvcnQgKnZzY2F0dGVyMTZfMzIpCiB7CiAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CkBAIC02ODQsNyArNzEwLDcgQEAgdm9p ZCBjaGVja19zY2F0dGVyXzE2XzMyKCkKICAgICAgICAgICAgICAgICAgU0NBVFRFUl9CVUZGRVJf U0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwogfQogCi0vKiBzY2F0dGVyIHRoZSAzMiBi aXQgZWxlbWVudHMgdXNpbmcgQyAqLworLyogc2NhdHRlci1hY2N1bXVsYXRlIHRoZSAxNiBiaXQg ZWxlbWVudHMgd2l0aCAzMiBiaXQgb2Zmc2V0cyB1c2luZyBDICovCiB2b2lkIHNjYWxhcl9zY2F0 dGVyXzE2XzMyX2FjYyh1bnNpZ25lZCBzaG9ydCAqdnNjYXR0ZXIxNl8zMikKIHsKICAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsKQEAgLTcwMiw2ICs3MjgsNyBAQCB2 b2lkIGNoZWNrX3NjYXR0ZXJfMTZfMzJfYWNjKCkKICAgICAgICAgICAgICAgICAgU0NBVFRFUl9C VUZGRVJfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwogfQogCisvKiBtYXNrZWQgc2Nh dHRlciB0aGUgMTYgYml0IGVsZW1lbnRzIHdpdGggMzIgYml0IG9mZnNldHMgdXNpbmcgQyAqLwog dm9pZCBzY2FsYXJfc2NhdHRlcl8xNl8zMl9tYXNrZWQodW5zaWduZWQgc2hvcnQgKnZzY2F0dGVy MTZfMzIpCiB7CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgaSsrKSB7CkBA IC03MzgsNiArNzY1LDcgQEAgdm9pZCBjaGVja19nYXRoZXJfMTYoKQogICAgICAgICAgICAgICAg ICAgIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7CiB9CiAKKy8qIG1hc2tl ZCBnYXRoZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIgYnVmZmVyIHVzaW5nIEMgKi8K IHZvaWQgc2NhbGFyX2dhdGhlcl8xNl9tYXNrZWQodW5zaWduZWQgc2hvcnQgKnZnYXRoZXIxNikK IHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsKQEAgLTc1Niw3 ICs3ODQsNyBAQCB2b2lkIGNoZWNrX2dhdGhlcl8xNl9tYXNrZWQoKQogICAgICAgICAgICAgICAg ICBNQVRSSVhfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwogfQogCi0vKiBnYXRoZXIg dGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIgYnVmZmVyIHVzaW5nIEMgKi8KKy8qIGdhdGhl ciB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc2NhdHRlcjMyIGJ1ZmZlciB1c2luZyBDICovCiB2b2lk IHNjYWxhcl9nYXRoZXJfMzIodW5zaWduZWQgaW50ICp2Z2F0aGVyMzIpCiB7CiAgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNQVRSSVhfU0laRTsgKytpKSB7CkBAIC03NzIsNiArODAwLDcgQEAgdm9p ZCBjaGVja19nYXRoZXJfMzIodm9pZCkKICAgICAgICAgICAgICAgICAgTUFUUklYX1NJWkUgKiBz aXplb2YodW5zaWduZWQgaW50KSk7CiB9CiAKKy8qIG1hc2tlZCBnYXRoZXIgdGhlIGVsZW1lbnRz IGZyb20gdGhlIHNjYXR0ZXIzMiBidWZmZXIgdXNpbmcgQyAqLwogdm9pZCBzY2FsYXJfZ2F0aGVy XzMyX21hc2tlZCh1bnNpZ25lZCBpbnQgKnZnYXRoZXIzMikKIHsKICAgICBmb3IgKGludCBpID0g MDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsKQEAgLTc4MSw3ICs4MTAsNiBAQCB2b2lkIHNjYWxh cl9nYXRoZXJfMzJfbWFza2VkKHVuc2lnbmVkIGludCAqdmdhdGhlcjMyKQogICAgIH0KIH0KIAot CiB2b2lkIGNoZWNrX2dhdGhlcl8zMl9tYXNrZWQodm9pZCkKIHsKICAgICBtZW1zZXQodmdhdGhl cjMyX3JlZiwgZ2F0aGVyXzMyX21hc2tlZF9pbml0KCksCkBAIC03OTEsNyArODE5LDcgQEAgdm9p ZCBjaGVja19nYXRoZXJfMzJfbWFza2VkKHZvaWQpCiAgICAgICAgICAgICAgICAgIHZnYXRoZXIz Ml9yZWYsIE1BVFJJWF9TSVpFICogc2l6ZW9mKHVuc2lnbmVkIGludCkpOwogfQogCi0vKiBnYXRo ZXIgdGhlIGVsZW1lbnRzIGZyb20gdGhlIHNjYXR0ZXIgYnVmZmVyIHVzaW5nIEMgKi8KKy8qIGdh dGhlciB0aGUgZWxlbWVudHMgZnJvbSB0aGUgc2NhdHRlcjE2XzMyIGJ1ZmZlciB1c2luZyBDICov CiB2b2lkIHNjYWxhcl9nYXRoZXJfMTZfMzIodW5zaWduZWQgc2hvcnQgKnZnYXRoZXIxNl8zMikK IHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsKQEAgLTgwNyw2 ICs4MzUsNyBAQCB2b2lkIGNoZWNrX2dhdGhlcl8xNl8zMih2b2lkKQogICAgICAgICAgICAgICAg ICBNQVRSSVhfU0laRSAqIHNpemVvZih1bnNpZ25lZCBzaG9ydCkpOwogfQogCisvKiBtYXNrZWQg Z2F0aGVyIHRoZSBlbGVtZW50cyBmcm9tIHRoZSBzY2F0dGVyMTZfMzIgYnVmZmVyIHVzaW5nIEMg Ki8KIHZvaWQgc2NhbGFyX2dhdGhlcl8xNl8zMl9tYXNrZWQodW5zaWduZWQgc2hvcnQgKnZnYXRo ZXIxNl8zMikKIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BVFJJWF9TSVpFOyArK2kpIHsK LS0gCjIuMTcuMQoK