From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by sourceware.org (Postfix) with ESMTPS id 80395383FBA4; Mon, 13 Feb 2023 12:43:04 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 80395383FBA4 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com Received: from pps.filterd (m0098420.ppops.net [127.0.0.1]) by mx0b-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31DCOOku003396; Mon, 13 Feb 2023 12:43:02 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=content-type : message-id : date : mime-version : subject : to : references : cc : from : in-reply-to; s=pp1; bh=JdqKo6lpx/WXlUIFAYktPoZi4ZVkqLdThBULfZdBtNE=; b=TNK2CRpbBM3VfWNFY8KfsITbOfR3zsmsWadX4CiN8hPBcRyq9PVSNwSPszc4T5wIkUZr PJqQzEOcbePwXR/M0Ei2s5mTvcFhdycWwq86wWBzU1vPo/wQa5GidOn8MKuhWVao8sRJ 73WRtMZrIPE5Dp1zSaT2dVtytZHEILV/SofK7mG49/cN3hwNorQpSUUa6+gYJZHyWdQK PjdQ1JobN6KMweCMUipAUj88zcyhXQwcSuFwNy8CqzJCt+f1QA8TlDkHqzwWE8r1ht4Q RcAHl72tFkSh6wGUZ5IrXhPF1JcuJqpMZZa/QCxVzcrBqSlqRAIfYRAbN/wobnE9cLqq 1w== Received: from ppma04fra.de.ibm.com (6a.4a.5195.ip4.static.sl-reverse.com [149.81.74.106]) by mx0b-001b2d01.pphosted.com (PPS) with ESMTPS id 3nqn6drfcf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Feb 2023 12:43:01 +0000 Received: from pps.filterd (ppma04fra.de.ibm.com [127.0.0.1]) by ppma04fra.de.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 31CINiRb027208; Mon, 13 Feb 2023 12:43:00 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma04fra.de.ibm.com (PPS) with ESMTPS id 3np2n69ydm-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 13 Feb 2023 12:42:59 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 31DCgv2X49545604 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Feb 2023 12:42:57 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 597832004D; Mon, 13 Feb 2023 12:42:57 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6874420040; Mon, 13 Feb 2023 12:42:55 +0000 (GMT) Received: from [9.200.40.67] (unknown [9.200.40.67]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Mon, 13 Feb 2023 12:42:55 +0000 (GMT) Content-Type: multipart/mixed; boundary="------------qiOJIa0eHVsggX9e1lkYTA6f" Message-ID: <3daa6e11-7ac6-0348-91eb-26e65f067fe4@linux.ibm.com> Date: Mon, 13 Feb 2023 20:42:53 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.6.1 Subject: Re: [PATCH 2/2] vect: Make partial trapping ops use predication [PR96373] Content-Language: en-US To: richard.sandiford@arm.com References: Cc: rguenther@suse.de, linkw@gcc.gnu.org, gcc-patches@gcc.gnu.org From: "Kewen.Lin" In-Reply-To: X-TM-AS-GCONF: 00 X-Proofpoint-GUID: JyizLyKma2-yfb_qDutqYGi4uI8vKUgJ X-Proofpoint-ORIG-GUID: JyizLyKma2-yfb_qDutqYGi4uI8vKUgJ X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.170.22 definitions=2023-02-13_08,2023-02-13_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1011 mlxscore=0 malwarescore=0 suspectscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 priorityscore=1501 impostorscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2302130112 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------qiOJIa0eHVsggX9e1lkYTA6f Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi Richard, on 2023/1/27 19:08, Richard Sandiford via Gcc-patches wrote: > PR96373 points out that a predicated SVE loop currently converts > trapping unconditional ops into unpredicated vector ops. Doing > the operation on inactive lanes can then raise an exception. > > As discussed in the PR trail, we aren't 100% consistent about > whether we preserve traps or not. But the direction of travel > is clearly to improve that rather than live with it. This patch > tries to do that for the SVE case. > > Doing this regresses gcc.target/aarch64/sve/fabd_1.c. I've added > -fno-trapping-math for now and filed PR108571 to track it. > A similar problem applies to fsubr_1.d. > > I think this is likely to regress Power 10, since conditional > operations are only available for masked loops. I think we'll > need to add -fno-trapping-math to any affected testcases, > but I don't have a Power 10 system to test on. Kewen, would you > mind giving this a spin and seeing how bad the fallout is? > Sorry for the late reply, I'm just back from vacation. Thank you for fixing this and caring about Power10! I tested your proposed patch on one Power10 machine (ppc64le), it's bootstrapped but some test failures got exposed as below. < FAIL: gcc.target/powerpc/p9-vec-length-epil-1.c scan-assembler-times \\\\mlxvl\\\\M 14 < FAIL: gcc.target/powerpc/p9-vec-length-epil-1.c scan-assembler-times \\\\mstxvl\\\\M 7 < FAIL: gcc.target/powerpc/p9-vec-length-epil-2.c scan-assembler-times \\\\mlxvl\\\\M 20 < FAIL: gcc.target/powerpc/p9-vec-length-epil-2.c scan-assembler-times \\\\mstxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-epil-3.c scan-assembler-times \\\\mlxvl\\\\M 14 < FAIL: gcc.target/powerpc/p9-vec-length-epil-3.c scan-assembler-times \\\\mstxvl\\\\M 7 < FAIL: gcc.target/powerpc/p9-vec-length-epil-4.c scan-assembler-times \\\\mlxvl\\\\M 70 < FAIL: gcc.target/powerpc/p9-vec-length-epil-4.c scan-assembler-times \\\\mlxvx?\\\\M 120 < FAIL: gcc.target/powerpc/p9-vec-length-epil-4.c scan-assembler-times \\\\mstxvl\\\\M 70 < FAIL: gcc.target/powerpc/p9-vec-length-epil-4.c scan-assembler-times \\\\mstxvx?\\\\M 70 < FAIL: gcc.target/powerpc/p9-vec-length-epil-5.c scan-assembler-times \\\\mlxvl\\\\M 21 < FAIL: gcc.target/powerpc/p9-vec-length-epil-5.c scan-assembler-times \\\\mstxvl\\\\M 21 < FAIL: gcc.target/powerpc/p9-vec-length-epil-5.c scan-assembler-times \\\\mstxvx?\\\\M 21 < FAIL: gcc.target/powerpc/p9-vec-length-epil-6.c scan-assembler-times \\\\mlxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-epil-6.c scan-assembler-times \\\\mlxvx?\\\\M 42 < FAIL: gcc.target/powerpc/p9-vec-length-epil-6.c scan-assembler-times \\\\mstxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-epil-8.c scan-assembler-times \\\\mlxvl\\\\M 16 < FAIL: gcc.target/powerpc/p9-vec-length-epil-8.c scan-assembler-times \\\\mstxvl\\\\M 7 < FAIL: gcc.target/powerpc/p9-vec-length-full-1.c scan-assembler-not \\\\mlxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-1.c scan-assembler-not \\\\mstxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-1.c scan-assembler-times \\\\mlxvl\\\\M 20 < FAIL: gcc.target/powerpc/p9-vec-length-full-1.c scan-assembler-times \\\\mstxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-full-2.c scan-assembler-not \\\\mlxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-2.c scan-assembler-not \\\\mstxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-2.c scan-assembler-times \\\\mlxvl\\\\M 20 < FAIL: gcc.target/powerpc/p9-vec-length-full-2.c scan-assembler-times \\\\mstxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-full-3.c scan-assembler-times \\\\mlxvl\\\\M 14 < FAIL: gcc.target/powerpc/p9-vec-length-full-3.c scan-assembler-times \\\\mstxvl\\\\M 7 < FAIL: gcc.target/powerpc/p9-vec-length-full-4.c scan-assembler-not \\\\mlxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-4.c scan-assembler-not \\\\mstxv\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-4.c scan-assembler-not \\\\mstxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-4.c scan-assembler-times \\\\mlxvl\\\\M 70 < FAIL: gcc.target/powerpc/p9-vec-length-full-4.c scan-assembler-times \\\\mstxvl\\\\M 70 < FAIL: gcc.target/powerpc/p9-vec-length-full-5.c scan-assembler-not \\\\mlxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-5.c scan-assembler-not \\\\mstxv\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-5.c scan-assembler-not \\\\mstxvx\\\\M < FAIL: gcc.target/powerpc/p9-vec-length-full-5.c scan-assembler-times \\\\mlxvl\\\\M 21 < FAIL: gcc.target/powerpc/p9-vec-length-full-5.c scan-assembler-times \\\\mstxvl\\\\M 21 < FAIL: gcc.target/powerpc/p9-vec-length-full-6.c scan-assembler-times \\\\mlxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-full-6.c scan-assembler-times \\\\mstxvl\\\\M 10 < FAIL: gcc.target/powerpc/p9-vec-length-full-6.c scan-assembler-times \\\\mstxvx?\\\\M 6 < FAIL: gcc.target/powerpc/p9-vec-length-full-8.c scan-assembler-times \\\\mlxvl\\\\M 30 < FAIL: gcc.target/powerpc/p9-vec-length-full-8.c scan-assembler-times \\\\mstxvl\\\\M 10 By checking several of them, it's due to that we don't vectorize some loop having float type involved with partial vector any more. As you suggested above, I fixed them with an extra option "-fno-trapping-math" and verified all of them can pass again. I also noticed that the original test case in PR96373 fails on Power10 too, so I added one constructed case pr96373.c into sub bucket gcc.target/powerpc for testing coverage on Power. One re-spin with the attached adjustment shows there is no regression failure any more, and the new test case works well on both ppc64 (P8) and ppc64le (P10) Linux. BR, Kewen ----- --------------qiOJIa0eHVsggX9e1lkYTA6f Content-Type: text/plain; charset=UTF-8; name="0001-rs6000-test-cases-adjustment.patch" Content-Disposition: attachment; filename="0001-rs6000-test-cases-adjustment.patch" Content-Transfer-Encoding: base64 RnJvbSA1MjY3NzMxZDg5NDljMjQyYjYxODhjM2U5ZjdiMGQ1NjFlNmUwOTJkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXdlbiBMaW4gPGxpbmt3QGxpbnV4LmlibS5jb20+ CkRhdGU6IE1vbiwgMTMgRmViIDIwMjMgMTc6MDc6NTAgKzA4MDAKU3ViamVjdDogW1BBVENI XSByczYwMDAgdGVzdCBjYXNlcyBhZGp1c3RtZW50CgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxv ZzoKCgkqIGdjYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtMS5jOiBBZGQg LWZuby10cmFwcGluZy1tYXRoLgoJKiBnY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0 aC1lcGlsLTIuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVu Z3RoLWVwaWwtMy5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1s ZW5ndGgtZXBpbC00LmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVj LWxlbmd0aC1lcGlsLTUuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvcG93ZXJwYy9wOS12 ZWMtbGVuZ3RoLWVwaWwtNi5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9wb3dlcnBjL3A5 LXZlYy1sZW5ndGgtZXBpbC04LmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L3Bvd2VycGMv cDktdmVjLWxlbmd0aC1mdWxsLTEuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvcG93ZXJw Yy9wOS12ZWMtbGVuZ3RoLWZ1bGwtMi5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9wb3dl cnBjL3A5LXZlYy1sZW5ndGgtZnVsbC0zLmM6IExpa2V3aXNlLgoJKiBnY2MudGFyZ2V0L3Bv d2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTQuYzogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQv cG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtNS5jOiBMaWtld2lzZS4KCSogZ2NjLnRhcmdl dC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC02LmM6IExpa2V3aXNlLgoJKiBnY2MudGFy Z2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTguYzogTGlrZXdpc2UuCgkqIGdjYy50 YXJnZXQvcG93ZXJwYy9wcjk2MzczLmM6IE5ldyB0ZXN0LgotLS0KIC4uLi9nY2MudGFyZ2V0 L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTEuYyB8ICAyICstCiAuLi4vZ2NjLnRhcmdl dC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC0yLmMgfCAgMiArLQogLi4uL2djYy50YXJn ZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtMy5jIHwgIDIgKy0KIC4uLi9nY2MudGFy Z2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTQuYyB8ICAyICstCiAuLi4vZ2NjLnRh cmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC01LmMgfCAgMiArLQogLi4uL2djYy50 YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtNi5jIHwgIDIgKy0KIC4uLi9nY2Mu dGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTguYyB8ICAyICstCiAuLi4vZ2Nj LnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC0xLmMgfCAgMiArLQogLi4uL2dj Yy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtMi5jIHwgIDIgKy0KIC4uLi9n Y2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTMuYyB8ICAyICstCiAuLi4v Z2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC00LmMgfCAgMiArLQogLi4u L2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtNS5jIHwgIDIgKy0KIC4u Li9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTYuYyB8ICAyICstCiAu Li4vZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC04LmMgfCAgMiArLQog Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcHI5NjM3My5jICAgIHwgMzEgKysr KysrKysrKysrKysrKysrKwogMTUgZmlsZXMgY2hhbmdlZCwgNDUgaW5zZXJ0aW9ucygrKSwg MTQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Bvd2VycGMvcHI5NjM3My5jCgpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTEuYyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC0xLmMKaW5kZXggZDI0 OGYwOTFiNTIuLmRmY2MwZTk1MzIwIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtMS5jCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC0xLmMKQEAgLTEsNSAr MSw1IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0ICYmIHBvd2VycGNf cDl2ZWN0b3Jfb2sgfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1w b3dlcjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11 bnJvbGwtbG9vcHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dl cjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJv bGwtbG9vcHMgLWZuby10cmFwcGluZy1tYXRoIiB9ICovCiAKIC8qIHsgZGctYWRkaXRpb25h bC1vcHRpb25zICItLXBhcmFtPXZlY3QtcGFydGlhbC12ZWN0b3ItdXNhZ2U9MSIgfSAqLwog CmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMt bGVuZ3RoLWVwaWwtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDkt dmVjLWxlbmd0aC1lcGlsLTIuYwppbmRleCA5Zjc4YTQ0N2VjNy4uZTYzZjFiZjIzNzIgMTAw NjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5n dGgtZXBpbC0yLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDkt dmVjLWxlbmd0aC1lcGlsLTIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGls ZSB7IHRhcmdldCB7IGxwNjQgJiYgcG93ZXJwY19wOXZlY3Rvcl9vayB9IH0gfSAqLwotLyog eyBkZy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6 ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyIgfSAqLworLyogeyBk Zy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAt Zm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyAtZm5vLXRyYXBwaW5nLW1h dGgiIH0gKi8KIAogLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW09dmVjdC1w YXJ0aWFsLXZlY3Rvci11c2FnZT0xIiB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC0zLmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtMy5jCmluZGV4 IGEwODc5N2ZjYmNhLi40YTk5ZTNhMzI2NSAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTMuYworKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtMy5jCkBAIC0x LDUgKzEsNSBAQAogLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCAmJiBwb3dl cnBjX3A5dmVjdG9yX29rIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1j cHU9cG93ZXI5IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1m bm8tdW5yb2xsLWxvb3BzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1jcHU9 cG93ZXI5IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8t dW5yb2xsLWxvb3BzIC1mbm8tdHJhcHBpbmctbWF0aCIgfSAqLwogCiAvKiB7IGRnLWFkZGl0 aW9uYWwtb3B0aW9ucyAiLS1wYXJhbT12ZWN0LXBhcnRpYWwtdmVjdG9yLXVzYWdlPTEiIH0g Ki8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDkt dmVjLWxlbmd0aC1lcGlsLTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBj L3A5LXZlYy1sZW5ndGgtZXBpbC00LmMKaW5kZXggYWQwNTFmYjFjZWYuLjlmYmVlNmE0MzI0 IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMt bGVuZ3RoLWVwaWwtNC5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBj L3A5LXZlYy1sZW5ndGgtZXBpbC00LmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGNv bXBpbGUgeyB0YXJnZXQgeyBscDY0ICYmIHBvd2VycGNfcDl2ZWN0b3Jfb2sgfSB9IH0gKi8K LS8qIHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0 b3JpemUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9vcHMiIH0gKi8KKy8q IHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0b3Jp emUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9vcHMgLWZuby10cmFwcGlu Zy1tYXRoIiB9ICovCiAKIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtPXZl Y3QtcGFydGlhbC12ZWN0b3ItdXNhZ2U9MSIgfSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtNS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTUuYwpp bmRleCBhMjRjMzBmZWViYS4uZDAyM2E5OThjM2IgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC01LmMKKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTUuYwpA QCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgJiYg cG93ZXJwY19wOXZlY3Rvcl9vayB9IH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItbWRlamFn bnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2Rl bCAtZm5vLXVucm9sbC1sb29wcyIgfSAqLworLyogeyBkZy1vcHRpb25zICItbWRlamFnbnUt Y3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAt Zm5vLXVucm9sbC1sb29wcyAtZm5vLXRyYXBwaW5nLW1hdGgiIH0gKi8KIAogLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW09dmVjdC1wYXJ0aWFsLXZlY3Rvci11c2FnZT0x IiB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBj L3A5LXZlYy1sZW5ndGgtZXBpbC02LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtNi5jCmluZGV4IDRlYWViM2IwMDVmLi5kYmNlOTA3 NTdlMyAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDkt dmVjLWxlbmd0aC1lcGlsLTYuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtNi5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1k byBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCAmJiBwb3dlcnBjX3A5dmVjdG9yX29rIH0gfSB9 ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1jcHU9cG93ZXI5IC1PMiAtZnRyZWUt dmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8tdW5yb2xsLWxvb3BzIiB9ICov CisvKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1jcHU9cG93ZXI5IC1PMiAtZnRyZWUtdmVj dG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8tdW5yb2xsLWxvb3BzIC1mbm8tdHJh cHBpbmctbWF0aCIgfSAqLwogCiAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJh bT12ZWN0LXBhcnRpYWwtdmVjdG9yLXVzYWdlPTEiIH0gKi8KIApkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1lcGlsLTguYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC04 LmMKaW5kZXggOGI5YzkxMDc4MTQuLmU1NmZkNTVmNjIzIDEwMDY0NAotLS0gYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWVwaWwtOC5jCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZXBpbC04 LmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0 ICYmIHBvd2VycGNfcDl2ZWN0b3Jfb2sgfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLW1k ZWphZ251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3Qt bW9kZWwgLWZuby11bnJvbGwtbG9vcHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1kZWph Z251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3QtbW9k ZWwgLWZuby11bnJvbGwtbG9vcHMgLWZuby10cmFwcGluZy1tYXRoIiB9ICovCiAKIC8qIHsg ZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtPXZlY3QtcGFydGlhbC12ZWN0b3ItdXNh Z2U9MSIgfSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTEuYwppbmRleCAzMzM2NzUyZWRiYi4uZjAx ZjFjNTRmYTUgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBj L3A5LXZlYy1sZW5ndGgtZnVsbC0xLmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTEuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsg ZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgJiYgcG93ZXJwY19wOXZlY3Rvcl9vayB9 IH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0 cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyIg fSAqLworLyogeyBkZy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVl LXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyAtZm5v LXRyYXBwaW5nLW1hdGgiIH0gKi8KIAogLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0t cGFyYW09dmVjdC1wYXJ0aWFsLXZlY3Rvci11c2FnZT0yIiB9ICovCiAKZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC0y LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1 bGwtMi5jCmluZGV4IDk4YWJmOGIzM2IxLi5mNTQ2ZTk3ZmE3ZCAxMDA2NDQKLS0tIGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTIuYwor KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1 bGwtMi5jCkBAIC0xLDUgKzEsNSBAQAogLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsg bHA2NCAmJiBwb3dlcnBjX3A5dmVjdG9yX29rIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMg Ii1tZGVqYWdudS1jcHU9cG93ZXI5IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1j b3N0LW1vZGVsIC1mbm8tdW5yb2xsLWxvb3BzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1t ZGVqYWdudS1jcHU9cG93ZXI5IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0 LW1vZGVsIC1mbm8tdW5yb2xsLWxvb3BzIC1mbm8tdHJhcHBpbmctbWF0aCIgfSAqLwogCiAv KiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbT12ZWN0LXBhcnRpYWwtdmVjdG9y LXVzYWdlPTIiIH0gKi8KIApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC0zLmMKaW5kZXggMDg4MWQxYTk2MGEu LjY1MTQyYjNmZWNkIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93 ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtMy5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC0zLmMKQEAgLTEsNSArMSw1IEBACiAv KiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBscDY0ICYmIHBvd2VycGNfcDl2ZWN0b3Jf b2sgfSB9IH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8y IC1mdHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9v cHMiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8yIC1m dHJlZS12ZWN0b3JpemUgLWZuby12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9vcHMg LWZuby10cmFwcGluZy1tYXRoIiB9ICovCiAKIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItLXBhcmFtPXZlY3QtcGFydGlhbC12ZWN0b3ItdXNhZ2U9MiIgfSAqLwogCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1 bGwtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0 aC1mdWxsLTQuYwppbmRleCA4Y2UzZGMxOWE2MC4uYTRjYzdhYWZhZWIgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC00 LmMKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0 aC1mdWxsLTQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdl dCB7IGxwNjQgJiYgcG93ZXJwY19wOXZlY3Rvcl9vayB9IH0gfSAqLwotLyogeyBkZy1vcHRp b25zICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZl Y3QtY29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyIgfSAqLworLyogeyBkZy1vcHRpb25z ICItbWRlamFnbnUtY3B1PXBvd2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3Qt Y29zdC1tb2RlbCAtZm5vLXVucm9sbC1sb29wcyAtZm5vLXRyYXBwaW5nLW1hdGgiIH0gKi8K IAogLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi0tcGFyYW09dmVjdC1wYXJ0aWFsLXZl Y3Rvci11c2FnZT0yIiB9ICovCiAKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC01LmMgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtNS5jCmluZGV4IGY5ZjU4YmEx MWY1Li40YjBiOTA3MGM4NCAxMDA2NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTUuYworKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtNS5jCkBAIC0xLDUgKzEsNSBA QAogLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgbHA2NCAmJiBwb3dlcnBjX3A5dmVj dG9yX29rIH0gfSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1jcHU9cG93ZXI5 IC1PMiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8tdW5yb2xs LWxvb3BzIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tZGVqYWdudS1jcHU9cG93ZXI5IC1P MiAtZnRyZWUtdmVjdG9yaXplIC1mbm8tdmVjdC1jb3N0LW1vZGVsIC1mbm8tdW5yb2xsLWxv b3BzIC1mbm8tdHJhcHBpbmctbWF0aCIgfSAqLwogCiAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0 aW9ucyAiLS1wYXJhbT12ZWN0LXBhcnRpYWwtdmVjdG9yLXVzYWdlPTIiIH0gKi8KIApkaWZm IC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0 aC1mdWxsLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1s ZW5ndGgtZnVsbC02LmMKaW5kZXggNWQyMzU3YWFiZmEuLjY1ZGRmMmIwOThhIDEwMDY0NAot LS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1 bGwtNi5jCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3A5LXZlYy1s ZW5ndGgtZnVsbC02LmMKQEAgLTEsNSArMSw1IEBACiAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0 YXJnZXQgeyBscDY0ICYmIHBvd2VycGNfcDl2ZWN0b3Jfb2sgfSB9IH0gKi8KLS8qIHsgZGct b3B0aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZu by12ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9vcHMiIH0gKi8KKy8qIHsgZGctb3B0 aW9ucyAiLW1kZWphZ251LWNwdT1wb3dlcjkgLU8yIC1mdHJlZS12ZWN0b3JpemUgLWZuby12 ZWN0LWNvc3QtbW9kZWwgLWZuby11bnJvbGwtbG9vcHMgLWZuby10cmFwcGluZy1tYXRoIiB9 ICovCiAKIC8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFtPXZlY3QtcGFydGlh bC12ZWN0b3ItdXNhZ2U9MiIgfSAqLwogCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcG93ZXJwYy9wOS12ZWMtbGVuZ3RoLWZ1bGwtOC5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTguYwppbmRleCAxZmMy YWYxZTc1My4uN2ZlMGRkMDA0MzEgMTAwNjQ0Ci0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9wb3dlcnBjL3A5LXZlYy1sZW5ndGgtZnVsbC04LmMKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Bvd2VycGMvcDktdmVjLWxlbmd0aC1mdWxsLTguYwpAQCAtMSw1ICsx LDUgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7IGxwNjQgJiYgcG93ZXJwY19w OXZlY3Rvcl9vayB9IH0gfSAqLwotLyogeyBkZy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBv d2VyOSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVu cm9sbC1sb29wcyIgfSAqLworLyogeyBkZy1vcHRpb25zICItbWRlamFnbnUtY3B1PXBvd2Vy OSAtTzIgLWZ0cmVlLXZlY3Rvcml6ZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXVucm9s bC1sb29wcyAtZm5vLXRyYXBwaW5nLW1hdGgiIH0gKi8KIAogLyogeyBkZy1hZGRpdGlvbmFs LW9wdGlvbnMgIi0tcGFyYW09dmVjdC1wYXJ0aWFsLXZlY3Rvci11c2FnZT0yIiB9ICovCiAK ZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ByOTYzNzMu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL3ByOTYzNzMuYwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjA0NzFiNmY2OGIKLS0tIC9kZXYv bnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcG93ZXJwYy9wcjk2MzczLmMK QEAgLTAsMCArMSwzMSBAQAorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyBwb3dlcnBjKi0q LWxpbnV4KiB9IH0gfSAqLworLyogeyBkZy1vcHRpb25zICItTzIgLWZ0cmVlLXZlY3Rvcml6 ZSIgfSAqLworCisvKiBWZXJpZnkgaXQgY2FuIHJ1biBzdWNjZXNzZnVsbHksIGVzcGVjaWFs bHkgb24gUG93ZXIxMCBhbmQgbGF0ZXIuICAgKi8KKworI2RlZmluZSBfR05VX1NPVVJDRQor I2luY2x1ZGUgPGZlbnYuaD4KKworX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkgdm9pZAorZGl2 IChkb3VibGUgKmQsIGRvdWJsZSAqcywgaW50IG4pCit7CisgIGZvciAoOyBuOyBuLS0sIGQr KywgcysrKQorICAgICpkID0gKmQgLyAqczsKK30KKworaW50IG1haW4oKQoreworICBkb3Vi bGUgZFtdID0gezEsMiwzLDQsNSw2LDcsOCw5LDEwLDExfTsKKyAgZG91YmxlIHNbXSA9IHsx MSwxMCw5LDgsNyw2LDUsNCwzLDIsMX07CisKKyAgZmVlbmFibGVleGNlcHQoRkVfRElWQlla RVJPfEZFX0lOVkFMSUQpOworICBkaXYoZCwgcywgMTEpOworCisgIGludCBpOworICBmb3Ig KGkgPSAwOyBpIDwgMTE7IGkrKykKKyAgICBfX2J1aWx0aW5fcHJpbnRmKCIgJWYiLCBkW2ld KTsKKworICBfX2J1aWx0aW5fcHJpbnRmKCJcbiIpOworCisgIHJldHVybiAwOworfQotLSAK Mi4zOS4xCgo= --------------qiOJIa0eHVsggX9e1lkYTA6f--