From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from xry111.site (xry111.site [89.208.246.23]) by sourceware.org (Postfix) with ESMTPS id 4E7533858C42 for ; Fri, 19 Jan 2024 05:46:46 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4E7533858C42 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=xry111.site Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=xry111.site ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 4E7533858C42 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=89.208.246.23 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705643209; cv=none; b=Ix00oCSjUIuCl3fikrOo01CYJiDeXhUZLM9fOQa/89Z84Dd+36WouMWLyUf3ILNZ6vJdNG+iuaT0qKUAJv/lXo6Yx5NR8majRcuw3uR/qbfmD2Vlod+5xqsbyPtR1pI2+ArEnva7NXYSXDLC9VQwZhY9PwO269QgqBtQ5zyWUyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1705643209; c=relaxed/simple; bh=ypSWfQLXUcU2xnvIAJefLIjVHRY0avMyNJ2zo7WoP3U=; h=DKIM-Signature:Message-ID:Subject:From:To:Date:MIME-Version; b=Jvzm5OkLnmmb/UyFP0mOt70R60j0AllUJPnE+dk5i3WFRC0i9r81yOXMIY5ro5l2DC+u+oKg5wWcPIBRiDLrMsV9yNbs6yRFnjy1DPxF8mlFoIO4d3h5M0hJzWxUj0rVIVi2eWBuqJnSyCi0ytL7XT53UdnOtj3URdhfAi13g5Y= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=xry111.site; s=default; t=1705643203; bh=ypSWfQLXUcU2xnvIAJefLIjVHRY0avMyNJ2zo7WoP3U=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=aoqnDb6LI5UcyWf6hCxMcVxg0SPDb1u+OsTuPpPO6/CeoM6sOjOZEdHjSaCUCg6ml kYKXAPjPN+alM3VOfplYxZdfsQbU8xlKSoNhwKfXp/Z0trhXmKGVx24CH470YkeXI+ 5zbZ2pQa5YmUx0xJI0oi5hI+JB727XAA/8SYTA04= Received: from [127.0.0.1] (unknown [IPv6:2001:470:683e::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature ECDSA (P-384) server-digest SHA384) (Client did not present a certificate) (Authenticated sender: xry111@xry111.site) by xry111.site (Postfix) with ESMTPSA id 6429266FB7; Fri, 19 Jan 2024 00:46:42 -0500 (EST) Message-ID: <1d4d46647c3fff7d3fb6441d039048f52cf88886.camel@xry111.site> Subject: Re: [PATCH v2 2/2] LoongArch: When the code model is extreme, the symbol address is obtained through macro instructions regardless of the value of -mexplicit-relocs. From: Xi Ruoyao To: chenglulu , gcc-patches@gcc.gnu.org Cc: i@xen0n.name, xuchenghua@loongson.cn Date: Fri, 19 Jan 2024 13:46:40 +0800 In-Reply-To: <4f2eb5a0-0791-0df8-d957-9fda9b122c85@loongson.cn> References: <20240105034021.30177-1-chenglulu@loongson.cn> <20240105034021.30177-3-chenglulu@loongson.cn> <0fe0f370-a593-d060-d260-0e190986f833@loongson.cn> <4cdfda6960e75ccc6ccea6263ac02e79c9dba572.camel@xry111.site> <74482b5cbfef5a9d07185cd63430b3907fb389d1.camel@xry111.site> <7808ffa81093a41202b1a5c3cf12b76482741b1e.camel@xry111.site> <16929185-d182-c1d9-ba81-c8ce9dbe7eaf@loongson.cn> <4f2eb5a0-0791-0df8-d957-9fda9b122c85@loongson.cn> Autocrypt: addr=xry111@xry111.site; prefer-encrypt=mutual; keydata=mDMEYnkdPhYJKwYBBAHaRw8BAQdAsY+HvJs3EVKpwIu2gN89cQT/pnrbQtlvd6Yfq7egugi0HlhpIFJ1b3lhbyA8eHJ5MTExQHhyeTExMS5zaXRlPoiTBBMWCgA7FiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwMFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrKrSDhnnEOPHFgD8D9vUToTd1MF5bng9uPJq5y3DfpcxDp+LD3joA3U2TmwA/jZtN9xLH7CGDHeClKZK/ZYELotWfJsqRcthOIGjsdAPuDgEYnkdPhIKKwYBBAGXVQEFAQEHQG+HnNiPZseiBkzYBHwq/nN638o0NPwgYwH70wlKMZhRAwEIB4h4BBgWCgAgFiEEkdD1djAfkk197dzorKrSDhnnEOMFAmJ5HT4CGwwACgkQrKrSDhnnEOPjXgD/euD64cxwqDIqckUaisT3VCst11RcnO5iRHm6meNIwj0BALLmWplyi7beKrOlqKfuZtCLbiAPywGfCNg8LOTt4iMD Content-Type: multipart/mixed; boundary="=-pGhhaGRCFyria+b4sNjv" User-Agent: Evolution 3.50.3 MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,KAM_STOCKGEN,LIKELY_SPAM_FROM,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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: --=-pGhhaGRCFyria+b4sNjv Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 2024-01-17 at 17:57 +0800, chenglulu wrote: > > > Virtual register 1479 will be used in insn 2744, but register 1479 wa= s > > > assigned the REG_UNUSED attribute in the previous instruction. > > >=20 > > > The attached file is the wrong file. > > > The compilation command is as follows: > > >=20 > > > $ ./gcc/cc1 -fpreprocessed regrename.i -quiet -dp -dumpbase regrename= .c > > > -dumpbase-ext .c -mno-relax -mabi=3Dlp64d -march=3Dloongarch64 -mfpu= =3D64 > > > -msimd=3Dlasx -mcmodel=3Dextreme -mtune=3Dloongarch64 -g3 -O2 > > > -Wno-int-conversion -Wno-implicit-int -Wno-implicit-function-declarat= ion > > > -Wno-incompatible-pointer-types -version -o regrename.s > > > -mexplicit-relocs=3Dalways -fdump-rtl-all-all > > I've seen some "guality" test failures in GCC test suite as well. > > Normally I just ignore the guality failures but this time they look ver= y > > suspicious.=C2=A0 I'll investigate these issues... > >=20 > I've also seen this type of failed regression tests and I'll continue to= =20 > look at this issue as well. The guality regression is simple: I didn't call delegitimize_mem_from_attrs (the default TARGET_DELEGITIMIZE_ADDRESS) in the custom implementation. The failure of this test case was because the compiler believes that two (UNSPEC_PCREL_64_PART2 [(symbol)]) instances would always produce the same result, but this isn't true because the result depends on PC. Thus (pc) needed to be included in the RTX, like: [(set (match_operand:DI 0 "register_operand" "=3Dr") (unspec:DI [(match_operand:DI 2 "") (pc)] UNSPEC_LA_PCREL_64_PART1)) (set (match_operand:DI 1 "register_operand" "=3Dr") (unspec:DI [(match_dup 2) (pc)] UNSPEC_LA_PCREL_64_PART2))] With this the buggy REG_UNUSED notes were gone. But it then prevented the CSE when loading the address of __tls_get_addr (i.e. if we address 10 TLE_LD symbols in a function it would emit 10 instances of "la.global __tls_get_addr") so I added an REG_EQUAL note for it. For symbols other than __tls_get_addr such notes are added automatically by optimization passes. Updated patch attached. --=20 Xi Ruoyao School of Aerospace Science and Technology, Xidian University --=-pGhhaGRCFyria+b4sNjv Content-Disposition: attachment; filename*0=v2-0001-LoongArch-Don-t-split-the-instructions-containing.pat; filename*1=ch Content-Type: text/x-patch; name="v2-0001-LoongArch-Don-t-split-the-instructions-containing.patch"; charset="UTF-8" Content-Transfer-Encoding: base64 RnJvbSBlOWQ3ODlmOGRjYjUyOTg0YjBmODk0ZmRlY2M0MDJhNDljNWFkNmQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBYaSBSdW95YW8gPHhyeTExMUB4cnkxMTEuc2l0ZT4KRGF0ZTog RnJpLCA1IEphbiAyMDI0IDE4OjQwOjA2ICswODAwClN1YmplY3Q6IFtQQVRDSCB2Ml0gTG9vbmdB cmNoOiBEb24ndCBzcGxpdCB0aGUgaW5zdHJ1Y3Rpb25zIGNvbnRhaW5pbmcgcmVsb2NzCiBmb3Ig ZXh0cmVtZSBjb2RlIG1vZGVsCgpUaGUgQUJJIG1hbmRhdGVzIHRoZSBwY2FsYXUxMmkvYWRkaS5k L2x1MzJpLmQvbHU1MmkuZCBpbnN0cnVjdGlvbnMgZm9yCmFkZHJlc3NpbmcgYSBzeW1ib2wgdG8g YmUgYWRqYWNlbnQuICBTbyBtb2RlbCB0aGVtIGFzICJvbmUgbGFyZ2UKaW5zdHJ1Y3Rpb24iLCBp LmUuIGRlZmluZV9pbnNuLCB3aXRoIHR3byBvdXRwdXQgcmVnaXN0ZXJzLiAgVGhlIHJlYWwKYWRk cmVzcyBpcyB0aGUgc3VtIG9mIHRoZXNlIHR3byByZWdpc3RlcnMuCgpUaGUgYWR2YW50YWdlIG9m IHRoaXMgYXBwcm9hY2ggaXMgdGhlIFJUTCBwYXNzZXMgY2FuIHN0aWxsIHVzZSBsZHgvc3R4Cmlu c3RydWN0aW9ucyB0byBza2lwIGFuIGFkZGkuZCBpbnN0cnVjdGlvbi4KCmdjYy9DaGFuZ2VMb2c6 CgoJKiBjb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZCAodW5zcGVjKTogQWRkCglVTlNQRUNf TEFfUENSRUxfNjRfUEFSVDEgYW5kIFVOU1BFQ19MQV9QQ1JFTF82NF9QQVJUMi4KCShsYV9wY3Jl bDY0X3R3b19wYXJ0cyk6IE5ldyBkZWZpbmVfaW5zbi4KCSogY29uZmlnL2xvb25nYXJjaC9sb29u Z2FyY2guY2MgKGxvb25nYXJjaF90bHNfc3ltYm9sKTogRml4IGEKCXR5cG8gaW4gdGhlIGNvbW1l bnQuCgkobG9vbmdhcmNoX2NhbGxfdGxzX2dldF9hZGRyKTogSWYgVEFSR0VUX0NNT0RFTF9FWFRS RU1FLCB1c2UKCWxhX3BjcmVsNjRfdHdvX3BhcnRzIGZvciBhZGRyZXNzaW5nIHRoZSBUTFMgc3lt Ym9sIGFuZAoJX190bHNfZ2V0X2FkZHIuICBFbWl0IGFuIFJFR19FUVVBTCBub3RlIHRvIGFsbG93 IENTRSBhZGRyZXNzaW5nCglfX3Rsc19nZXRfYWRkci4KCShsb29uZ2FyY2hfbGVnaXRpbWl6ZV90 bHNfYWRkcmVzcyk6IElmIFRBUkdFVF9DTU9ERUxfRVhUUkVNRSwKCWFkZHJlc3MgVExTIElFIHN5 bWJvbHMgd2l0aCBsYV9wY3JlbDY0X3R3b19wYXJ0cy4KCShsb29uZ2FyY2hfc3BsaXRfc3ltYm9s KTogSWYgVEFSR0VUX0NNT0RFTF9FWFRSRU1FLCBhZGRyZXNzCglzeW1ib2xzIHdpdGggbGFfcGNy ZWw2NF90d29fcGFydHMuCgkoVEFSR0VUX0RFTEVHSVRJTUlaRV9BRERSRVNTKTogRGVmaW5lLgoJ KGxvb25nYXJjaF9kZWxlZ2l0aW1pemVfYWRkcmVzcyk6IEltcGxlbWVudCB0aGUgdGFyZ2V0IGhv b2suCgpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoKCgkqIGdjYy50YXJnZXQvbG9vbmdhcmNoL2Z1 bmMtY2FsbC1leHRyZW1lLTEuYyAoZGctb3B0aW9ucyk6CglVc2UgLU8yIGluc3RlYWQgb2YgLU8w IHRvIGVuc3VyZSB0aGUgcGNhbGF1MTJpL2FkZGkvbHUzMmkvbHU1MmkKCWluc3RydWN0aW9uIHNl cXVlbmNlcyBhcmUgbm90IHJlb3JkZXJlZCBieSB0aGUgY29tcGlsZXIuCgkoTk9JUEEpOiBEaXNh bGxvdyBpbnRlcnByb2NlZHVyYWwgb3B0aW1pemF0aW9ucy4KCSogZ2NjLnRhcmdldC9sb29uZ2Fy Y2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5jOiBSZW1vdmUgdGhlIGNvbnRlbnQKCWR1cGxpY2F0ZWQg ZnJvbSBmdW5jLWNhbGwtZXh0cmVtZS0xLmMsIGluY2x1ZGUgaXQgaW5zdGVhZC4KCShkZy1vcHRp b25zKTogTGlrZXdpc2UuCgkqIGdjYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1l LTMuYyAoZGctb3B0aW9ucyk6CglMaWtld2lzZS4KCSogZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVu Yy1jYWxsLWV4dHJlbWUtNC5jIChkZy1vcHRpb25zKToKCUxpa2V3aXNlLgoJKiBnY2MudGFyZ2V0 L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0xLmM6IE5ldyB0ZXN0LgoJKiBnY2MudGFyZ2V0L2xv b25nYXJjaC9jbW9kZWwtZXh0cmVtZS0yLmM6IE5ldyB0ZXN0LgotLS0KIGdjYy9jb25maWcvbG9v bmdhcmNoL2xvb25nYXJjaC5jYyAgICAgICAgICAgICB8IDEzNSArKysrKysrKysrKy0tLS0tLS0K IGdjYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZCAgICAgICAgICAgICB8ICAyMSArKysK IC4uLi9nY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0xLmMgICB8ICAxOCArKysK IC4uLi9nY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0yLmMgICB8ICAgNyArCiAu Li4vbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTEuYyAgICAgICAgICAgfCAgMTQgKy0KIC4u Li9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5jICAgICAgICAgICB8ICAyOSArLS0tCiAu Li4vbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTMuYyAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtNC5jICAgICAgICAgICB8ICAgMiArLQogOCBm aWxlcyBjaGFuZ2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwgODQgZGVsZXRpb25zKC0pCiBjcmVhdGUg bW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0 cmVtZS0xLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9v bmdhcmNoL2Ntb2RlbC1leHRyZW1lLTIuYwoKZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbG9vbmdh cmNoL2xvb25nYXJjaC5jYyBiL2djYy9jb25maWcvbG9vbmdhcmNoL2xvb25nYXJjaC5jYwppbmRl eCA4MjQ2NzQ3NDI4OC4uMzU4ZDJmOGYzZjUgMTAwNjQ0Ci0tLSBhL2djYy9jb25maWcvbG9vbmdh cmNoL2xvb25nYXJjaC5jYworKysgYi9nY2MvY29uZmlnL2xvb25nYXJjaC9sb29uZ2FyY2guY2MK QEAgLTI3MzMsNyArMjczMyw3IEBAIGxvb25nYXJjaF9hZGRfb2Zmc2V0IChydHggdGVtcCwgcnR4 IHJlZywgSE9TVF9XSURFX0lOVCBvZmZzZXQpCiAgIHJldHVybiBwbHVzX2NvbnN0YW50IChQbW9k ZSwgcmVnLCBvZmZzZXQpOwogfQogCi0vKiBUaGUgX190bHNfZ2V0X2F0dHIgc3ltYm9sLiAgKi8K Ky8qIFRoZSBfX3Rsc19nZXRfYWRkciBzeW1ib2wuICAqLwogc3RhdGljIEdUWSAoKCkpIHJ0eCBs b29uZ2FyY2hfdGxzX3N5bWJvbDsKIAogLyogTG9hZCBhbiBlbnRyeSBmcm9tIHRoZSBHT1QgZm9y IGEgVExTIEdEIGFjY2Vzcy4gICovCkBAIC0yNzkxLDIyICsyNzkxLDIyIEBAIGxvb25nYXJjaF9j YWxsX3Rsc19nZXRfYWRkciAocnR4IHN5bSwgZW51bSBsb29uZ2FyY2hfc3ltYm9sX3R5cGUgdHlw ZSwgcnR4IHYwKQogCiAgIGlmIChsYV9vcHRfZXhwbGljaXRfcmVsb2NzICE9IEVYUExJQ0lUX1JF TE9DU19OT05FKQogICAgIHsKLSAgICAgIC8qIFNwbGl0IHRscyBzeW1ib2wgdG8gaGlnaCBhbmQg bG93LiAgKi8KLSAgICAgIHJ0eCBoaWdoID0gZ2VuX3J0eF9ISUdIIChQbW9kZSwgY29weV9ydHgg KGxvYykpOwotICAgICAgaGlnaCA9IGxvb25nYXJjaF9mb3JjZV90ZW1wb3JhcnkgKHRtcCwgaGln aCk7Ci0KICAgICAgIGlmIChUQVJHRVRfQ01PREVMX0VYVFJFTUUpCiAJewotCSAgZ2NjX2Fzc2Vy dCAoVEFSR0VUX0VYUExJQ0lUX1JFTE9DUyk7CisJICBydHggcGFydDEgPSBnZW5fcmVnX3J0eCAo UG1vZGUpOworCSAgcnR4IHBhcnQyID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsKIAotCSAgcnR4IHRt cDEgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCSAgZW1pdF9pbnNuIChnZW5fdGxzX2xvdyAoUG1v ZGUsIHRtcDEsIGdlbl9ydHhfUkVHIChQbW9kZSwgMCksIGxvYykpOwotCSAgZW1pdF9pbnNuIChn ZW5fbHVpX2hfbG8yMCAodG1wMSwgdG1wMSwgbG9jKSk7Ci0JICBlbWl0X2luc24gKGdlbl9sdWlf aF9oaTEyICh0bXAxLCB0bXAxLCBsb2MpKTsKLQkgIGVtaXRfbW92ZV9pbnNuIChhMCwgZ2VuX3J0 eF9QTFVTIChQbW9kZSwgaGlnaCwgdG1wMSkpOworCSAgZW1pdF9pbnNuIChnZW5fbGFfcGNyZWw2 NF90d29fcGFydHMgKHBhcnQxLCBwYXJ0MiwgbG9jKSk7CisJICBlbWl0X21vdmVfaW5zbiAoYTAs IGdlbl9ydHhfUExVUyAoUG1vZGUsIHBhcnQxLCBwYXJ0MikpOwogCX0KICAgICAgIGVsc2UKLQll bWl0X2luc24gKGdlbl90bHNfbG93IChQbW9kZSwgYTAsIGhpZ2gsIGxvYykpOworCXsKKwkgIC8q IFNwbGl0IHRscyBzeW1ib2wgdG8gaGlnaCBhbmQgbG93LiAgKi8KKwkgIHJ0eCBoaWdoID0gZ2Vu X3J0eF9ISUdIIChQbW9kZSwgY29weV9ydHggKGxvYykpOworCisJICBoaWdoID0gbG9vbmdhcmNo X2ZvcmNlX3RlbXBvcmFyeSAodG1wLCBoaWdoKTsKKwkgIGVtaXRfaW5zbiAoZ2VuX3Rsc19sb3cg KFBtb2RlLCBhMCwgaGlnaCwgbG9jKSk7CisJfQogICAgIH0KICAgZWxzZQogICAgIHsKQEAgLTI4 ODMsMjIgKzI4ODMsMjcgQEAgbG9vbmdhcmNoX2NhbGxfdGxzX2dldF9hZGRyIChydHggc3ltLCBl bnVtIGxvb25nYXJjaF9zeW1ib2xfdHlwZSB0eXBlLCBydHggdjApCiAKIAljYXNlIENNT0RFTF9F WFRSRU1FOgogCSAgICB7Ci0JICAgICAgZ2NjX2Fzc2VydCAoVEFSR0VUX0VYUExJQ0lUX1JFTE9D Uyk7Ci0KLQkgICAgICBydHggdG1wMSA9IGdlbl9yZWdfcnR4IChQbW9kZSk7Ci0JICAgICAgcnR4 IGhpZ2ggPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCi0JICAgICAgbG9vbmdhcmNoX2VtaXRfbW92 ZSAoaGlnaCwKLQkJCQkgICBnZW5fcnR4X0hJR0ggKFBtb2RlLCBsb29uZ2FyY2hfdGxzX3N5bWJv bCkpOwotCSAgICAgIGxvb25nYXJjaF9lbWl0X21vdmUgKHRtcDEsIGdlbl9ydHhfTE9fU1VNIChQ bW9kZSwKLQkJCQkJCQkgZ2VuX3J0eF9SRUcgKFBtb2RlLCAwKSwKLQkJCQkJCQkgbG9vbmdhcmNo X3Rsc19zeW1ib2wpKTsKLQkgICAgICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAxLCB0 bXAxLCBsb29uZ2FyY2hfdGxzX3N5bWJvbCkpOwotCSAgICAgIGVtaXRfaW5zbiAoZ2VuX2x1aV9o X2hpMTIgKHRtcDEsIHRtcDEsIGxvb25nYXJjaF90bHNfc3ltYm9sKSk7CisJICAgICAgZ2NjX2Fz c2VydCAobGFfb3B0X2V4cGxpY2l0X3JlbG9jcyAhPSBFWFBMSUNJVF9SRUxPQ1NfTk9ORSk7CisK KwkgICAgICBydHggcGFydDEgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOworCSAgICAgIHJ0eCBwYXJ0 MiA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CisKKwkgICAgICBlbWl0X2luc24gKGdlbl9sYV9wY3Jl bDY0X3R3b19wYXJ0cyAocGFydDEsIHBhcnQyLAorCQkJCQkJICAgbG9vbmdhcmNoX3Rsc19zeW1i b2wpKTsKIAkgICAgICBsb29uZ2FyY2hfZW1pdF9tb3ZlIChkZXN0LAogCQkJCSAgIGdlbl9ydHhf TUVNIChQbW9kZSwKIAkJCQkJCWdlbl9ydHhfUExVUyAoUG1vZGUsCi0JCQkJCQkJICAgICAgaGln aCwgdG1wMSkpKTsKKwkJCQkJCQkgICAgICBwYXJ0MSwKKwkJCQkJCQkgICAgICBwYXJ0MikpKTsK KworCSAgICAgIC8qIFB1dCBhbiBSRUdfRVFVQUwgbm90ZSBoZXJlIHRvIGFsbG93IENTRSAoc3Rv cmluZworCQkgcGFydDEgKyBwYXJ0MiwgaS5lLiB0aGUgYWRkcmVzcyBvZiB0bHNfZ2V0X2FkZHIg aW50byBhCisJCSBzYXZlZCByZWdpc3RlciBhbmQgdXNlIGl0IGZvciBtdWx0aXBsZSBUTFMgYWNj ZXNzZXMpLiAgKi8KKwkgICAgICBydHggc3VtID0gZ2VuX3J0eF9VTlNQRUMgKAorCQlQbW9kZSwg Z2VuX3J0dmVjICgxLCBsb29uZ2FyY2hfdGxzX3N5bWJvbCksCisJCVVOU1BFQ19BRERSRVNTX0ZJ UlNUCisJCSsgbG9vbmdhcmNoX2NsYXNzaWZ5X3N5bWJvbCAobG9vbmdhcmNoX3Rsc19zeW1ib2wp KTsKKwkgICAgICBzZXRfdW5pcXVlX3JlZ19ub3RlIChnZXRfbGFzdF9pbnNuICgpLCBSRUdfRVFV QUwsIHN1bSk7CiAJICAgIH0KIAkgIGJyZWFrOwogCkBAIC0yOTU3LDI2ICsyOTYyLDMxIEBAIGxv b25nYXJjaF9sZWdpdGltaXplX3Rsc19hZGRyZXNzIChydHggbG9jKQogCSAgaWYgKGxhX29wdF9l eHBsaWNpdF9yZWxvY3MgIT0gRVhQTElDSVRfUkVMT0NTX05PTkUpCiAJICAgIHsKIAkgICAgICB0 bXAyID0gbG9vbmdhcmNoX3Vuc3BlY19hZGRyZXNzIChsb2MsIFNZTUJPTF9UTFNfSUUpOwotCSAg ICAgIHRtcDMgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCSAgICAgIHJ0eCBoaWdoID0gZ2VuX3J0 eF9ISUdIIChQbW9kZSwgY29weV9ydHggKHRtcDIpKTsKLQkgICAgICBoaWdoID0gbG9vbmdhcmNo X2ZvcmNlX3RlbXBvcmFyeSAodG1wMywgaGlnaCk7CiAKIAkgICAgICBpZiAoVEFSR0VUX0NNT0RF TF9FWFRSRU1FKQogCQl7Ci0JCSAgZ2NjX2Fzc2VydCAoVEFSR0VUX0VYUExJQ0lUX1JFTE9DUyk7 CisJCSAgZ2NjX2Fzc2VydCAobGFfb3B0X2V4cGxpY2l0X3JlbG9jcworCQkJICAgICAgIT0gRVhQ TElDSVRfUkVMT0NTX05PTkUpOworCisJCSAgcnR4IHBhcnQxID0gZ2VuX3JlZ19ydHggKFBtb2Rl KTsKKwkJICBydHggcGFydDIgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwogCi0JCSAgcnR4IHRtcDMg PSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotCQkgIGVtaXRfaW5zbiAoZ2VuX3Rsc19sb3cgKFBtb2Rl LCB0bXAzLAotCQkJCQkgIGdlbl9ydHhfUkVHIChQbW9kZSwgMCksIHRtcDIpKTsKLQkJICBlbWl0 X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAzLCB0bXAzLCB0bXAyKSk7Ci0JCSAgZW1pdF9pbnNu IChnZW5fbHVpX2hfaGkxMiAodG1wMywgdG1wMywgdG1wMikpOworCQkgIGVtaXRfaW5zbiAoZ2Vu X2xhX3BjcmVsNjRfdHdvX3BhcnRzIChwYXJ0MSwgcGFydDIsCisJCQkJCQkgICAgICAgdG1wMikp OwogCQkgIGVtaXRfbW92ZV9pbnNuICh0bXAxLAogCQkJCSAgZ2VuX3J0eF9NRU0gKFBtb2RlLAog CQkJCQkgICAgICAgZ2VuX3J0eF9QTFVTIChQbW9kZSwKLQkJCQkJCQkgICAgIGhpZ2gsIHRtcDMp KSk7CisJCQkJCQkJICAgICBwYXJ0MSwKKwkJCQkJCQkgICAgIHBhcnQyKSkpOwogCQl9CiAJICAg ICAgZWxzZQotCQllbWl0X2luc24gKGdlbl9sZF9mcm9tX2dvdCAoUG1vZGUsIHRtcDEsIGhpZ2gs IHRtcDIpKTsKKwkJeworCQkgIHRtcDMgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOworCQkgIHJ0eCBo aWdoID0gZ2VuX3J0eF9ISUdIIChQbW9kZSwgY29weV9ydHggKHRtcDIpKTsKKworCQkgIGhpZ2gg PSBsb29uZ2FyY2hfZm9yY2VfdGVtcG9yYXJ5ICh0bXAzLCBoaWdoKTsKKwkJICBlbWl0X2luc24g KGdlbl9sZF9mcm9tX2dvdCAoUG1vZGUsIHRtcDEsIGhpZ2gsIHRtcDIpKTsKKwkJfQogCSAgICB9 CiAJICBlbHNlCiAJICAgIGVtaXRfaW5zbiAobG9vbmdhcmNoX2dvdF9sb2FkX3Rsc19pZSAodG1w MSwgbG9jKSk7CkBAIC0zMDM2LDcgKzMwNDYsOCBAQCBsb29uZ2FyY2hfbGVnaXRpbWl6ZV90bHNf YWRkcmVzcyAocnR4IGxvYykKIAogCSAgICAgIGlmIChUQVJHRVRfQ01PREVMX0VYVFJFTUUpCiAJ CXsKLQkJICBnY2NfYXNzZXJ0IChUQVJHRVRfRVhQTElDSVRfUkVMT0NTKTsKKwkJICBnY2NfYXNz ZXJ0IChsYV9vcHRfZXhwbGljaXRfcmVsb2NzCisJCQkgICAgICAhPSBFWFBMSUNJVF9SRUxPQ1Nf Tk9ORSk7CiAKIAkJICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0bXAxLCB0bXAxLCB0bXAy KSk7CiAJCSAgZW1pdF9pbnNuIChnZW5fbHVpX2hfaGkxMiAodG1wMSwgdG1wMSwgdG1wMikpOwpA QCAtMzE1NywyNCArMzE2OCwyMyBAQCBsb29uZ2FyY2hfc3BsaXRfc3ltYm9sIChydHggdGVtcCwg cnR4IGFkZHIsIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggKmxvd19vdXQpCiAgICAgICB8fCAhbG9v bmdhcmNoX3NwbGl0X3N5bWJvbF90eXBlIChzeW1ib2xfdHlwZSkpCiAgICAgcmV0dXJuIGZhbHNl OwogCi0gIHJ0eCBoaWdoLCB0ZW1wMSA9IE5VTEw7CisgIHJ0eCBoaWdoOwogCiAgIGlmICh0ZW1w ID09IE5VTEwpCiAgICAgdGVtcCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CiAKLSAgLyogR2V0IHRo ZSAxMi0zMSBiaXRzIG9mIHRoZSBhZGRyZXNzLiAgKi8KLSAgaGlnaCA9IGdlbl9ydHhfSElHSCAo UG1vZGUsIGNvcHlfcnR4IChhZGRyKSk7Ci0gIGhpZ2ggPSBsb29uZ2FyY2hfZm9yY2VfdGVtcG9y YXJ5ICh0ZW1wLCBoaWdoKTsKLQogICBpZiAobG9vbmdhcmNoX3N5bWJvbF9leHRyZW1lX3AgKHN5 bWJvbF90eXBlKSAmJiBjYW5fY3JlYXRlX3BzZXVkb19wICgpKQogICAgIHsKICAgICAgIGdjY19h c3NlcnQgKGxhX29wdF9leHBsaWNpdF9yZWxvY3MgIT0gRVhQTElDSVRfUkVMT0NTX05PTkUpOwog Ci0gICAgICB0ZW1wMSA9IGdlbl9yZWdfcnR4IChQbW9kZSk7Ci0gICAgICBlbWl0X21vdmVfaW5z biAodGVtcDEsIGdlbl9ydHhfTE9fU1VNIChQbW9kZSwgZ2VuX3J0eF9SRUcgKFBtb2RlLCAwKSwK LQkJCQkJICAgICBhZGRyKSk7Ci0gICAgICBlbWl0X2luc24gKGdlbl9sdWlfaF9sbzIwICh0ZW1w MSwgdGVtcDEsIGFkZHIpKTsKLSAgICAgIGVtaXRfaW5zbiAoZ2VuX2x1aV9oX2hpMTIgKHRlbXAx LCB0ZW1wMSwgYWRkcikpOworICAgICAgaGlnaCA9IGdlbl9yZWdfcnR4IChQbW9kZSk7CisgICAg ICBlbWl0X2luc24gKGdlbl9sYV9wY3JlbDY0X3R3b19wYXJ0cyAoaGlnaCwgdGVtcCwgYWRkcikp OworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIEdldCB0aGUgMTItMzEgYml0cyBvZiB0 aGUgYWRkcmVzcy4gICovCisgICAgICBoaWdoID0gZ2VuX3J0eF9ISUdIIChQbW9kZSwgY29weV9y dHggKGFkZHIpKTsKKyAgICAgIGhpZ2ggPSBsb29uZ2FyY2hfZm9yY2VfdGVtcG9yYXJ5ICh0ZW1w LCBoaWdoKTsKICAgICB9CiAKICAgaWYgKGxvd19vdXQpCkBAIC0zMTgzLDcgKzMxOTMsNyBAQCBs b29uZ2FyY2hfc3BsaXRfc3ltYm9sIChydHggdGVtcCwgcnR4IGFkZHIsIG1hY2hpbmVfbW9kZSBt b2RlLCBydHggKmxvd19vdXQpCiAgICAgICBjYXNlIFNZTUJPTF9QQ1JFTDY0OgogCWlmIChjYW5f Y3JlYXRlX3BzZXVkb19wICgpKQogCSAgewotCSAgICAqbG93X291dCA9IGdlbl9ydHhfUExVUyAo UG1vZGUsIGhpZ2gsIHRlbXAxKTsKKwkgICAgKmxvd19vdXQgPSBnZW5fcnR4X1BMVVMgKFBtb2Rl LCBoaWdoLCB0ZW1wKTsKIAkgICAgYnJlYWs7CiAJICB9CiAJLyogZmFsbCB0aHJvdWdoICovCkBA IC0zMTk1LDcgKzMyMDUsOCBAQCBsb29uZ2FyY2hfc3BsaXRfc3ltYm9sIChydHggdGVtcCwgcnR4 IGFkZHIsIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggKmxvd19vdXQpCiAJLyogU1lNQk9MX0dPVF9E SVNQIHN5bWJvbHMgYXJlIGxvYWRlZCBmcm9tIHRoZSBHT1QuICAqLwogCXsKIAkgIGlmIChUQVJH RVRfQ01PREVMX0VYVFJFTUUgJiYgY2FuX2NyZWF0ZV9wc2V1ZG9fcCAoKSkKLQkgICAgKmxvd19v dXQgPSBnZW5fcnR4X01FTSAoUG1vZGUsIGdlbl9ydHhfUExVUyAoUG1vZGUsIGhpZ2gsIHRlbXAx KSk7CisJICAgICpsb3dfb3V0ID0gZ2VuX3J0eF9NRU0gKFBtb2RlLCBnZW5fcnR4X1BMVVMgKFBt b2RlLCBoaWdoLAorCQkJCQkJCSB0ZW1wKSk7CiAJICBlbHNlCiAJICAgIHsKIAkgICAgICBydHgg bG93ID0gZ2VuX3J0eF9MT19TVU0gKFBtb2RlLCBoaWdoLCBhZGRyKTsKQEAgLTEwOTMyLDYgKzEw OTQzLDI4IEBAIGxvb25nYXJjaF9hc21fY29kZV9lbmQgKHZvaWQpCiAjdW5kZWYgRFVNUF9GRUFU VVJFCiB9CiAKK3N0YXRpYyBydHgKK2xvb25nYXJjaF9kZWxlZ2l0aW1pemVfYWRkcmVzcyAocnR4 IG9wKQoreworICAvKiBDYWxsIHRoZSBkZWZhdWx0IGFkZHJlc3MgZGVsZWdpdGltaXplciBmaXJz dC4gICovCisgIG9wID0gZGVsZWdpdGltaXplX21lbV9mcm9tX2F0dHJzIChvcCk7CisKKyAgaWYg KEdFVF9DT0RFIChvcCkgPT0gVU5TUEVDKQorICB7CisgICAgaW50IHVuc3BlYyA9IFhJTlQgKG9w LCAxKTsKKyAgICBzd2l0Y2ggKHVuc3BlYykKKyAgICAgIHsKKyAgICAgIGNhc2UgVU5TUEVDX0xB X1BDUkVMXzY0X1BBUlQxOgorICAgICAgY2FzZSBVTlNQRUNfTEFfUENSRUxfNjRfUEFSVDI6CisJ cmV0dXJuIFhWRUNFWFAgKG9wLCAwLCAwKTsKKyAgICAgIGRlZmF1bHQ6CisJcmV0dXJuIG9wOwor ICAgICAgfQorICB9CisKKyAgcmV0dXJuIG9wOworfQorCiAvKiBJbml0aWFsaXplIHRoZSBHQ0Mg dGFyZ2V0IHN0cnVjdHVyZS4gICovCiAjdW5kZWYgVEFSR0VUX0FTTV9BTElHTkVEX0hJX09QCiAj ZGVmaW5lIFRBUkdFVF9BU01fQUxJR05FRF9ISV9PUCAiXHQuaGFsZlx0IgpAQCAtMTExOTcsNiAr MTEyMzAsMTAgQEAgbG9vbmdhcmNoX2FzbV9jb2RlX2VuZCAodm9pZCkKICNkZWZpbmUgVEFSR0VU X1ZFQ1RPUklaRV9TVVBQT1JUX1ZFQ1RPUl9NSVNBTElHTk1FTlQgXAogICBsb29uZ2FyY2hfYnVp bHRpbl9zdXBwb3J0X3ZlY3Rvcl9taXNhbGlnbm1lbnQKIAorI3VuZGVmIFRBUkdFVF9ERUxFR0lU SU1JWkVfQUREUkVTUworI2RlZmluZSBUQVJHRVRfREVMRUdJVElNSVpFX0FERFJFU1MgXAorICBs b29uZ2FyY2hfZGVsZWdpdGltaXplX2FkZHJlc3MKKwogc3RydWN0IGdjY190YXJnZXQgdGFyZ2V0 bSA9IFRBUkdFVF9JTklUSUFMSVpFUjsKIAogI2luY2x1ZGUgImd0LWxvb25nYXJjaC5oIgpkaWZm IC0tZ2l0IGEvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kIGIvZ2NjL2NvbmZpZy9s b29uZ2FyY2gvbG9vbmdhcmNoLm1kCmluZGV4IGRkYTNjZGY4YmU1Li42ZDhlZGE0ZGZmNCAxMDA2 NDQKLS0tIGEvZ2NjL2NvbmZpZy9sb29uZ2FyY2gvbG9vbmdhcmNoLm1kCisrKyBiL2djYy9jb25m aWcvbG9vbmdhcmNoL2xvb25nYXJjaC5tZApAQCAtODUsNiArODUsOSBAQCAoZGVmaW5lX2NfZW51 bSAidW5zcGVjIiBbCiAKICAgVU5TUEVDX1NJQkNBTExfVkFMVUVfTVVMVElQTEVfSU5URVJOQUxf MQogICBVTlNQRUNfQ0FMTF9WQUxVRV9NVUxUSVBMRV9JTlRFUk5BTF8xCisKKyAgVU5TUEVDX0xB X1BDUkVMXzY0X1BBUlQxCisgIFVOU1BFQ19MQV9QQ1JFTF82NF9QQVJUMgogXSkKIAogKGRlZmlu ZV9jX2VudW0gInVuc3BlY3YiIFsKQEAgLTIxODUsNiArMjE4OCwyNCBAQCAoZGVmaW5lX2luc25f YW5kX3NwbGl0ICIqbW92ZGlfNjRiaXQiCiAgIFsoc2V0X2F0dHIgIm1vdmVfdHlwZSIgIm1vdmUs Y29uc3QsbG9hZCxzdG9yZSxtZ3RmLGZwbG9hZCxtZnRnLGZwc3RvcmUiKQogICAgKHNldF9hdHRy ICJtb2RlIiAiREkiKV0pCiAKKzs7IFRoZSA2NC1iaXQgUEMtcmVsYXRpdmUgcGFydCBvZiBhZGRy ZXNzIGxvYWRpbmcuCis7OyBOb3RlIHRoYXQgdGhlIHBzQUJJIGRvZXMgbm90IGFsbG93IHNwbGl0 dGluZyBpdC4KKyhkZWZpbmVfaW5zbiAibGFfcGNyZWw2NF90d29fcGFydHMiCisgIFsoc2V0ICht YXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCisJKHVuc3BlYzpESSBb KG1hdGNoX29wZXJhbmQ6REkgMiAiIikgKHBjKV0gVU5TUEVDX0xBX1BDUkVMXzY0X1BBUlQxKSkK KyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6REkgMSAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKKwko dW5zcGVjOkRJIFsobWF0Y2hfZHVwIDIpIChwYyldIFVOU1BFQ19MQV9QQ1JFTF82NF9QQVJUMikp XQorICAiVEFSR0VUX0FCSV9MUDY0ICYmIGxhX29wdF9leHBsaWNpdF9yZWxvY3MgIT0gRVhQTElD SVRfUkVMT0NTX05PTkUiCisgIHsKKyAgICByZXR1cm4gInBjYWxhdTEyaVx0JTAsJXIyXG5cdCIK KwkgICAiYWRkaS5kXHQlMSwkcjAsJUwyXG5cdCIKKwkgICAibHUzMmkuZFx0JTEsJVIyXG5cdCIK KwkgICAibHU1MmkuZFx0JTEsJTEsJUgyIjsKKyAgfQorICBbKHNldF9hdHRyICJtb3ZlX3R5cGUi ICJtb3ZlIikKKyAgIChzZXRfYXR0ciAibW9kZSIgIkRJIikKKyAgIChzZXRfYXR0ciAibGVuZ3Ro IiAiMTYiKV0pCisKIDs7IDMyLWJpdCBJbnRlZ2VyIG1vdmVzCiAKIChkZWZpbmVfZXhwYW5kICJt b3ZzaSIKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvY21v ZGVsLWV4dHJlbWUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9jbW9k ZWwtZXh0cmVtZS0xLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU2 NGVlNDAxN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xv b25nYXJjaC9jbW9kZWwtZXh0cmVtZS0xLmMKQEAgLTAsMCArMSwxOCBAQAorLyogeyBkZy1kbyBj b21waWxlIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPWxvb25nYXJjaDY0IC1tYWJpPWxw NjRkIC1PMiAtbWNtb2RlbD1leHRyZW1lIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzPWFsd2F5 cyAtZmR1bXAtcnRsLWZpbmFsIiB9ICovCisKK2ludCBhOworZXh0ZXJuIGludCBiOworX190aHJl YWQgaW50IGMgX19hdHRyaWJ1dGVfXyAoKHRsc19tb2RlbCAoImxvY2FsLWV4ZWMiKSkpOworX190 aHJlYWQgaW50IGQgX19hdHRyaWJ1dGVfXyAoKHRsc19tb2RlbCAoImluaXRpYWwtZXhlYyIpKSk7 CitfX3RocmVhZCBpbnQgZSBfX2F0dHJpYnV0ZV9fICgodGxzX21vZGVsICgibG9jYWwtZHluYW1p YyIpKSk7CitfX3RocmVhZCBpbnQgZiBfX2F0dHJpYnV0ZV9fICgodGxzX21vZGVsICgiZ2xvYmFs LWR5bmFtaWMiKSkpOworCit2b2lkCit0ZXN0ICh2b2lkKQoreworICBhID0gYiArIGMgKyBkICsg ZSArIGY7Cit9CisKKy8qIGEsIGIsIGQsIGUsIGYsIGFuZCBfX3Rsc19nZXRfYWRkci4gICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAibGFfcGNyZWw2NF90d29fcGFydHMi IDYgImZpbmFsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9s b29uZ2FyY2gvY21vZGVsLWV4dHJlbWUtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xv b25nYXJjaC9jbW9kZWwtZXh0cmVtZS0yLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLmNlODM0ODA1ZjM4Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L2xvb25nYXJjaC9jbW9kZWwtZXh0cmVtZS0yLmMKQEAgLTAsMCArMSw3IEBACisv KiB7IGRnLWRvIGNvbXBpbGUgfSAqLworLyogeyBkZy1vcHRpb25zICItbWFyY2g9bG9vbmdhcmNo NjQgLW1hYmk9bHA2NGQgLU8yIC1tY21vZGVsPWV4dHJlbWUgLWZuby1wbHQgLW1leHBsaWNpdC1y ZWxvY3M9YXV0byAtZmR1bXAtcnRsLWZpbmFsIiB9ICovCisKKyNpbmNsdWRlICJjbW9kZWwtZXh0 cmVtZS0xLmMiCisKKy8qIGEsIGIsIGQsIGUsIGYsIGFuZCBfX3Rsc19nZXRfYWRkci4gICovCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1ydGwtZHVtcC10aW1lcyAibGFfcGNyZWw2NF90d29fcGFydHMi IDYgImZpbmFsIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9s b29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS0xLmMKaW5kZXggZGIxZTBmODUzOTYuLmZkYjRj ZjFmZjdmIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1 bmMtY2FsbC1leHRyZW1lLTEuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdh cmNoL2Z1bmMtY2FsbC1leHRyZW1lLTEuYwpAQCAtMSwzMSArMSwzMyBAQAogLyogeyBkZy1kbyBj b21waWxlIH0gKi8KLS8qIHsgZGctb3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8wIC1mbm8tcGljIC1m bm8tcGx0IC1tZXhwbGljaXQtcmVsb2NzIC1tY21vZGVsPWV4dHJlbWUiIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8yIC1mbm8tcGljIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVs b2NzIC1tY21vZGVsPWV4dHJlbWUiIH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAidGVzdDouKnBjYWxhdTEyaS4qJWdvdF9wY19oaTIwLipcblx0YWRkaVwuZC4qJWdvdF9wY19s bzEyLipcblx0bHUzMmlcLmQuKiVnb3Q2NF9wY19sbzIwLipcblx0bHU1MmlcLmQuKiVnb3Q2NF9w Y19oaTEyLipcblx0bGR4XC5kIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ciAidGVzdDE6LipwY2FsYXUxMmkuKiVwY19oaTIwLipcblx0YWRkaVwuZC4qJXBjX2xvMTIuKlxu XHRsdTMyaVwuZC4qJXBjNjRfbG8yMC4qXG5cdGx1NTJpXC5kLipwYzY0X2hpMTIuKlxuXHRhZGRc LmQiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0MjouKnBjYWxh dTEyaS4qJXBjX2hpMjAuKlxuXHRhZGRpXC5kLiolcGNfbG8xMi4qXG5cdGx1MzJpXC5kLiolcGM2 NF9sbzIwLipcblx0bHU1MmlcLmQuKnBjNjRfaGkxMi4qXG5cdGFkZFwuZCIgfSB9ICovCiAKKyNk ZWZpbmUgTk9JUEEgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkKKwogZXh0ZXJuIHZvaWQgZyAodm9p ZCk7Ci12b2lkCitOT0lQQSB2b2lkCiBmICh2b2lkKQoge30KIAotc3RhdGljIHZvaWQKK05PSVBB IHN0YXRpYyB2b2lkCiBsICh2b2lkKQoge30KIAotdm9pZAorTk9JUEEgdm9pZAogdGVzdCAodm9p ZCkKIHsKICAgZyAoKTsKIH0KIAotdm9pZAorTk9JUEEgdm9pZAogdGVzdDEgKHZvaWQpCiB7CiAg IGYgKCk7CiB9CiAKLXZvaWQKK05PSVBBIHZvaWQKIHRlc3QyICh2b2lkKQogewogICBsICgpOwpk aWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9mdW5jLWNhbGwt ZXh0cmVtZS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2Fs bC1leHRyZW1lLTIuYwppbmRleCAyMWJmODFhZTgzNy4uZGZiYTM4ODJiOTcgMTAwNjQ0Ci0tLSBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMi5j CisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJl bWUtMi5jCkBAIC0xLDMyICsxLDcgQEAKIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRn LW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1PMCAtZnBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9j cyAtbWNtb2RlbD1leHRyZW1lIiB9ICovCisvKiB7IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1P MiAtZnBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9jcyAtbWNtb2RlbD1leHRyZW1lIiB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRlc3Q6LipwY2FsYXUxMmkuKiVnb3Rf cGNfaGkyMC4qXG5cdGFkZGlcLmQuKiVnb3RfcGNfbG8xMi4qXG5cdGx1MzJpXC5kLiolZ290NjRf cGNfbG8yMC4qXG5cdGx1NTJpXC5kLiolZ290NjRfcGNfaGkxMi4qXG5cdGxkeFwuZCIgfSB9ICov CiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXIgInRlc3QxOi4qcGNhbGF1MTJpLiolZ290 X3BjX2hpMjAuKlxuXHRhZGRpXC5kLiolZ290X3BjX2xvMTIuKlxuXHRsdTMyaVwuZC4qJWdvdDY0 X3BjX2xvMjAuKlxuXHRsdTUyaVwuZC4qJWdvdDY0X3BjX2hpMTIuKlxuXHRsZHhcLmQiIH0gfSAq LwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0MjouKnBjYWxhdTEyaS4qJXBj X2hpMjAuKlxuXHRhZGRpXC5kLiolcGNfbG8xMi4qXG5cdGx1MzJpXC5kLiolcGM2NF9sbzIwLipc blx0bHU1MmlcLmQuKnBjNjRfaGkxMi4qXG5cdGFkZFwuZCIgfSB9ICovCiAKLWV4dGVybiB2b2lk IGcgKHZvaWQpOwotdm9pZAotZiAodm9pZCkKLXt9Ci0KLXN0YXRpYyB2b2lkCi1sICh2b2lkKQot e30KLQotdm9pZAotdGVzdCAodm9pZCkKLXsKLSAgZyAoKTsKLX0KLQotdm9pZAotdGVzdDEgKHZv aWQpCi17Ci0gIGYgKCk7Ci19Ci0KLXZvaWQKLXRlc3QyICh2b2lkKQotewotICBsICgpOwotfQor I2luY2x1ZGUgImZ1bmMtY2FsbC1leHRyZW1lLTEuYyIKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9sb29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtMy5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS0zLmMKaW5kZXggYTRk YTQ0YjRhM2QuLjFmNTIzNGY4M2QxIDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTMuYworKysgYi9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvbG9vbmdhcmNoL2Z1bmMtY2FsbC1leHRyZW1lLTMuYwpAQCAtMSw1ICsxLDUgQEAK IC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1P MCAtZm5vLXBpYyAtZm5vLXBsdCAtbWV4cGxpY2l0LXJlbG9jcz1hdXRvIC1tY21vZGVsPWV4dHJl bWUiIH0gKi8KKy8qIHsgZGctb3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8yIC1mbm8tcGljIC1mbm8t cGx0IC1tZXhwbGljaXQtcmVsb2NzPWF1dG8gLW1jbW9kZWw9ZXh0cmVtZSIgfSAqLwogLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0Oi4qcGNhbGF1MTJpLiolZ290X3BjX2hpMjAu KlxuXHRhZGRpXC5kLiolZ290X3BjX2xvMTIuKlxuXHRsdTMyaVwuZC4qJWdvdDY0X3BjX2xvMjAu KlxuXHRsdTUyaVwuZC4qJWdvdDY0X3BjX2hpMTIuKlxuXHRsZHhcLmQiIH0gfSAqLwogLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJ0ZXN0MTouKnBjYWxhdTEyaS4qJXBjX2hpMjAuKlxu XHRhZGRpXC5kLiolcGNfbG8xMi4qXG5cdGx1MzJpXC5kLiolcGM2NF9sbzIwLipcblx0bHU1Mmlc LmQuKnBjNjRfaGkxMi4qXG5cdGFkZFwuZCIgfSB9ICovCiAvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXIgInRlc3QyOi4qcGNhbGF1MTJpLiolcGNfaGkyMC4qXG5cdGFkZGlcLmQuKiVwY19s bzEyLipcblx0bHUzMmlcLmQuKiVwYzY0X2xvMjAuKlxuXHRsdTUyaVwuZC4qcGM2NF9oaTEyLipc blx0YWRkXC5kIiB9IH0gKi8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9s b29uZ2FyY2gvZnVuYy1jYWxsLWV4dHJlbWUtNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L2xvb25nYXJjaC9mdW5jLWNhbGwtZXh0cmVtZS00LmMKaW5kZXggMTZiMDBmNGM1ZjIuLmM0MjI4 NTAwNjM1IDEwMDY0NAotLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdhcmNoL2Z1 bmMtY2FsbC1leHRyZW1lLTQuYworKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvbG9vbmdh cmNoL2Z1bmMtY2FsbC1leHRyZW1lLTQuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHsgZGctZG8gY29t cGlsZSB9ICovCi0vKiB7IGRnLW9wdGlvbnMgIi1tYWJpPWxwNjRkIC1PMCAtZnBpYyAtZm5vLXBs dCAtbWV4cGxpY2l0LXJlbG9jcz1hdXRvIC1tY21vZGVsPWV4dHJlbWUiIH0gKi8KKy8qIHsgZGct b3B0aW9ucyAiLW1hYmk9bHA2NGQgLU8yIC1mcGljIC1mbm8tcGx0IC1tZXhwbGljaXQtcmVsb2Nz PWF1dG8gLW1jbW9kZWw9ZXh0cmVtZSIgfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ0ZXN0Oi4qcGNhbGF1MTJpLiolZ290X3BjX2hpMjAuKlxuXHRhZGRpXC5kLiolZ290X3Bj X2xvMTIuKlxuXHRsdTMyaVwuZC4qJWdvdDY0X3BjX2xvMjAuKlxuXHRsdTUyaVwuZC4qJWdvdDY0 X3BjX2hpMTIuKlxuXHRsZHhcLmQiIH0gfSAqLwogLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyICJ0ZXN0MTouKnBjYWxhdTEyaS4qJWdvdF9wY19oaTIwLipcblx0YWRkaVwuZC4qJWdvdF9w Y19sbzEyLipcblx0bHUzMmlcLmQuKiVnb3Q2NF9wY19sbzIwLipcblx0bHU1MmlcLmQuKiVnb3Q2 NF9wY19oaTEyLipcblx0bGR4XC5kIiB9IH0gKi8KIC8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt YmxlciAidGVzdDI6LipwY2FsYXUxMmkuKiVwY19oaTIwLipcblx0YWRkaVwuZC4qJXBjX2xvMTIu KlxuXHRsdTMyaVwuZC4qJXBjNjRfbG8yMC4qXG5cdGx1NTJpXC5kLipwYzY0X2hpMTIuKlxuXHRh ZGRcLmQiIH0gfSAqLwotLSAKMi40My4wCgo= --=-pGhhaGRCFyria+b4sNjv--