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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 91AC2C352A1 for ; Wed, 7 Dec 2022 08:51:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:References: CC:To:From:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=f57HhdFgwH6c+04yjuE65bk6SBweOWH7M6qBrlk2gUw=; b=SKNjzrhngyRUZRSZQ0LOYVAk8B b6JlXKfI5w5moYiJiARiryvXyCSqsRkvfHSGqbUt/lbrYjEZKFYB+MFsbiCMwV+/B7tzlGNoUubu6 ilNtFZYfU7f7+zSqOAxBUknygJ9EivoJrMrShGD0gkc5T0xXmgJh2ik6Ojgy5dfH5FHVxmY7pRjnh VQep7Bcqtkh6d7Amf9l58twdp9yfIw5u2Htx813jEOkNpfXfNztxXgtffJKzhuj0WvfjbFNuylDvb /unA6+aADIipUAR/3J0yC9gWu3VpCK+VMm8F3NXlHOtaEgffog3OJvpATjo4vyYJgizF0z2wsB66v iWTk1oDw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p2q84-00FWYg-24; Wed, 07 Dec 2022 08:50:12 +0000 Received: from szxga01-in.huawei.com ([45.249.212.187]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p2q7f-00FW4r-Uq for linux-arm-kernel@lists.infradead.org; Wed, 07 Dec 2022 08:49:51 +0000 Received: from kwepemm600003.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4NRrYD0kp8zmWM7; Wed, 7 Dec 2022 16:48:48 +0800 (CST) Received: from [10.67.111.205] (10.67.111.205) by kwepemm600003.china.huawei.com (7.193.23.202) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Wed, 7 Dec 2022 16:49:36 +0800 Subject: Re: [PATCH bpf-next v3 1/4] bpf: Adapt 32-bit return value kfunc for 32-bit ARM when zext extension From: Yang Jihong To: Alexei Starovoitov , Yonghong Song , CC: Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh , Stanislav Fomichev , Hao Luo , Jiri Olsa , Shubham Bansal , Russell King , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Mykola Lysenko , Shuah Khan , Benjamin Tissoires , Kumar Kartikeya Dwivedi , , Artem Savkov , Delyan Kratunov , bpf , linux-arm-kernel , LKML , Network Development , "open list:KERNEL SELFTEST FRAMEWORK" References: <20221126094530.226629-1-yangjihong1@huawei.com> <20221126094530.226629-2-yangjihong1@huawei.com> <20221128015758.aekybr3qlahfopwq@MacBook-Pro-5.local> <8cb54255-4dce-6d50-d6f0-ac9af0e56f37@huawei.com> <4a2b8cd5-78c4-360a-6eb0-33fcf689d26a@huawei.com> Message-ID: <2543b57d-d7a2-19a0-e532-0d5e3b04a45e@huawei.com> Date: Wed, 7 Dec 2022 16:49:36 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.1 MIME-Version: 1.0 In-Reply-To: <4a2b8cd5-78c4-360a-6eb0-33fcf689d26a@huawei.com> Content-Language: en-US X-Originating-IP: [10.67.111.205] X-ClientProxiedBy: dggems704-chm.china.huawei.com (10.3.19.181) To kwepemm600003.china.huawei.com (7.193.23.202) X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221207_004948_389123_9A9AB518 X-CRM114-Status: GOOD ( 25.99 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGVsbG8sCgpPbiAyMDIyLzEyLzUgOToxOSwgWWFuZyBKaWhvbmcgd3JvdGU6Cj4gCj4gCj4gT24g MjAyMi8xMi80IDA6NDAsIEFsZXhlaSBTdGFyb3ZvaXRvdiB3cm90ZToKPj4gT24gRnJpLCBEZWMg MiwgMjAyMiBhdCA2OjU4IFBNIFlhbmcgSmlob25nIDx5YW5namlob25nMUBodWF3ZWkuY29tPiAK Pj4gd3JvdGU6Cj4+Pgo+Pj4KPj4+Cj4+PiBPbiAyMDIyLzExLzI5IDA6NDEsIEFsZXhlaSBTdGFy b3ZvaXRvdiB3cm90ZToKPj4+PiBPbiBNb24sIE5vdiAyOCwgMjAyMiBhdCA0OjQwIEFNIFlhbmcg Smlob25nIDx5YW5namlob25nMUBodWF3ZWkuY29tPiAKPj4+PiB3cm90ZToKPj4+Pj4KPj4+Pj4K Pj4+Pj4KPj4+Pj4gT24gMjAyMi8xMS8yOCA5OjU3LCBBbGV4ZWkgU3Rhcm92b2l0b3Ygd3JvdGU6 Cj4+Pj4+PiBPbiBTYXQsIE5vdiAyNiwgMjAyMiBhdCAwNTo0NToyN1BNICswODAwLCBZYW5nIEpp aG9uZyB3cm90ZToKPj4+Pj4+PiBGb3IgQVJNMzIgYXJjaGl0ZWN0dXJlLCBpZiBkYXRhIHdpZHRo IG9mIGtmdW5jIHJldHVybiB2YWx1ZSBpcyAzMiAKPj4+Pj4+PiBiaXRzLAo+Pj4+Pj4+IG5lZWQg dG8gZG8gZXhwbGljaXQgemVybyBleHRlbnNpb24gZm9yIGhpZ2ggMzItYml0LCAKPj4+Pj4+PiBp bnNuX2RlZl9yZWdubyBzaG91bGQKPj4+Pj4+PiByZXR1cm4gZHN0X3JlZyBmb3IgQlBGX0pNUCB0 eXBlIG9mIEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTC4gT3RoZXJ3aXNlLAo+Pj4+Pj4+IG9wdF9zdWJy ZWdfemV4dF9sbzMyX3JuZF9oaTMyIHJldHVybnMgLUVGQVVMVCwgcmVzdWx0aW5nIGluIEJQRiAK Pj4+Pj4+PiBmYWlsdXJlLgo+Pj4+Pj4+Cj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogWWFuZyBKaWhv bmcgPHlhbmdqaWhvbmcxQGh1YXdlaS5jb20+Cj4+Pj4+Pj4gLS0tCj4+Pj4+Pj4gwqDCoMKgIGtl cm5lbC9icGYvdmVyaWZpZXIuYyB8IDQ0IAo+Pj4+Pj4+ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0KPj4+Pj4+PiDCoMKgwqAgMSBmaWxlIGNoYW5nZWQsIDQxIGlu c2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCj4+Pj4+Pj4KPj4+Pj4+PiBkaWZmIC0tZ2l0IGEv a2VybmVsL2JwZi92ZXJpZmllci5jIGIva2VybmVsL2JwZi92ZXJpZmllci5jCj4+Pj4+Pj4gaW5k ZXggMjY0YjNkYzcxNGNjLi4xOTNlYTkyN2FhNjkgMTAwNjQ0Cj4+Pj4+Pj4gLS0tIGEva2VybmVs L2JwZi92ZXJpZmllci5jCj4+Pj4+Pj4gKysrIGIva2VybmVsL2JwZi92ZXJpZmllci5jCj4+Pj4+ Pj4gQEAgLTE5MjcsNiArMTkyNywyMSBAQCBmaW5kX2tmdW5jX2Rlc2MoY29uc3Qgc3RydWN0IGJw Zl9wcm9nIAo+Pj4+Pj4+ICpwcm9nLCB1MzIgZnVuY19pZCwgdTE2IG9mZnNldCkKPj4+Pj4+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2l6ZW9mKHRhYi0+ZGVz Y3NbMF0pLCAKPj4+Pj4+PiBrZnVuY19kZXNjX2NtcF9ieV9pZF9vZmYpOwo+Pj4+Pj4+IMKgwqDC oCB9Cj4+Pj4+Pj4KPj4+Pj4+PiArc3RhdGljIGludCBrZnVuY19kZXNjX2NtcF9ieV9pbW0oY29u c3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYik7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGJwZl9rZnVuY19kZXNjICoKPj4+Pj4+PiArZmluZF9rZnVuY19kZXNjX2J5X2lt bShjb25zdCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csIHMzMiBpbW0pCj4+Pj4+Pj4gK3sKPj4+Pj4+ PiArwqDCoMKgIHN0cnVjdCBicGZfa2Z1bmNfZGVzYyBkZXNjID0gewo+Pj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC5pbW0gPSBpbW0sCj4+Pj4+Pj4gK8KgwqDCoCB9Owo+Pj4+Pj4+ICvC oMKgwqAgc3RydWN0IGJwZl9rZnVuY19kZXNjX3RhYiAqdGFiOwo+Pj4+Pj4+ICsKPj4+Pj4+PiAr wqDCoMKgIHRhYiA9IHByb2ctPmF1eC0+a2Z1bmNfdGFiOwo+Pj4+Pj4+ICvCoMKgwqAgcmV0dXJu IGJzZWFyY2goJmRlc2MsIHRhYi0+ZGVzY3MsIHRhYi0+bnJfZGVzY3MsCj4+Pj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzaXplb2YodGFiLT5kZXNjc1swXSksIGtm dW5jX2Rlc2NfY21wX2J5X2ltbSk7Cj4+Pj4+Pj4gK30KPj4+Pj4+PiArCj4+Pj4+Pj4gwqDCoMKg IHN0YXRpYyBzdHJ1Y3QgYnRmICpfX2ZpbmRfa2Z1bmNfZGVzY19idGYoc3RydWN0IAo+Pj4+Pj4+ IGJwZl92ZXJpZmllcl9lbnYgKmVudiwKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgczE2 IG9mZnNldCkKPj4+Pj4+PiDCoMKgwqAgewo+Pj4+Pj4+IEBAIC0yMzQyLDYgKzIzNTcsMTMgQEAg c3RhdGljIGJvb2wgaXNfcmVnNjQoc3RydWN0IAo+Pj4+Pj4+IGJwZl92ZXJpZmllcl9lbnYgKmVu diwgc3RydWN0IGJwZl9pbnNuICppbnNuLAo+Pj4+Pj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaW5zbi0+c3JjX3JlZyA9PSBCUEZfUFNFVURPX0NB TEwpCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBmYWxzZTsKPj4+Pj4+PiArCj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEtmdW5jIGNhbGwgd2lsbCByZWFjaCBo ZXJlIGJlY2F1c2Ugb2YgCj4+Pj4+Pj4gaW5zbl9oYXNfZGVmMzIsCj4+Pj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBjb25zZXJ2YXRpdmVseSByZXR1cm4g VFJVRS4KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq Lwo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaW5z bi0+c3JjX3JlZyA9PSBCUEZfUFNFVURPX0tGVU5DX0NBTEwpCj4+Pj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gdHJ1ZTsK Pj4+Pj4+PiArCj4+Pj4+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLyogSGVscGVyIGNhbGwgd2lsbCByZWFjaCBoZXJlIGJlY2F1c2Ugb2YgCj4+Pj4+Pj4g YXJnIHR5cGUKPj4+Pj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgICogY2hlY2ssIGNvbnNlcnZhdGl2ZWx5IHJldHVybiBUUlVFLgo+Pj4+Pj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8KPj4+Pj4+PiBAQCAt MjQwNSwxMCArMjQyNywyNiBAQCBzdGF0aWMgYm9vbCBpc19yZWc2NChzdHJ1Y3QgCj4+Pj4+Pj4g YnBmX3ZlcmlmaWVyX2VudiAqZW52LCBzdHJ1Y3QgYnBmX2luc24gKmluc24sCj4+Pj4+Pj4gwqDC oMKgIH0KPj4+Pj4+Pgo+Pj4+Pj4+IMKgwqDCoCAvKiBSZXR1cm4gdGhlIHJlZ25vIGRlZmluZWQg YnkgdGhlIGluc24sIG9yIC0xLiAqLwo+Pj4+Pj4+IC1zdGF0aWMgaW50IGluc25fZGVmX3JlZ25v KGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbikKPj4+Pj4+PiArc3RhdGljIGludCBpbnNuX2Rl Zl9yZWdubyhzdHJ1Y3QgYnBmX3ZlcmlmaWVyX2VudiAqZW52LCBjb25zdCAKPj4+Pj4+PiBzdHJ1 Y3QgYnBmX2luc24gKmluc24pCj4+Pj4+Pj4gwqDCoMKgIHsKPj4+Pj4+PiDCoMKgwqDCoMKgwqAg c3dpdGNoIChCUEZfQ0xBU1MoaW5zbi0+Y29kZSkpIHsKPj4+Pj4+PiDCoMKgwqDCoMKgwqAgY2Fz ZSBCUEZfSk1QOgo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpbnNuLT5zcmNf cmVnID09IEJQRl9QU0VVRE9fS0ZVTkNfQ0FMTCkgewo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgYnBmX2tmdW5jX2Rlc2MgKmRlc2M7 Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAvKiBUaGUgdmFsdWUgb2YgZGVzYyBjYW5ub3QgYmUgTlVMTCAqLwo+Pj4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXNjID0gZmluZF9rZnVuY19kZXNjX2J5 X2ltbShlbnYtPnByb2csIAo+Pj4+Pj4+IGluc24tPmltbSk7Cj4+Pj4+Pj4gKwo+Pj4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiBBIGtmdW5jIGNhbiByZXR1 cm4gdm9pZC4KPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqIFRoZSBidGYgdHlwZSBvZiB0aGUga2Z1bmMncyByZXR1cm4gdmFsdWUgCj4+Pj4+Pj4gbmVl ZHMKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHRv IGJlIGNoZWNrZWQgYWdhaW5zdCAidm9pZCIgZmlyc3QKPj4+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLwo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZGVzYy0+ZnVuY19tb2RlbC5yZXRfc2l6ZSA9PSAwKQo+ Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIC0xOwo+Pj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBlbHNlCj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gaW5zbi0+ZHN0X3JlZzsKPj4+Pj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB9Cj4+Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsbHRo cm91Z2g7Cj4+Pj4+Pgo+Pj4+Pj4gSSBjYW5ub3QgbWFrZSBhbnkgc2Vuc2Ugb2YgdGhpcyBwYXRj aC4KPj4+Pj4+IGluc24tPmRzdF9yZWcgYWJvdmUgaXMgMC4KPj4+Pj4+IFRoZSBrZnVuYyBjYWxs IGRvZXNuJ3QgZGVmaW5lIGEgcmVnaXN0ZXIgZnJvbSBpbnNuX2RlZl9yZWdubygpIHBvdi4KPj4+ Pj4+Cj4+Pj4+PiBBcmUgeW91IGhhY2tpbmcgaW5zbl9kZWZfcmVnbm8oKSB0byByZXR1cm4gMCBz byB0aGF0Cj4+Pj4+PiBpZiAoV0FSTl9PTihsb2FkX3JlZyA9PSAtMSkpIHsKPj4+Pj4+IMKgwqDC oMKgIHZlcmJvc2UoZW52LCAidmVyaWZpZXIgYnVnLiB6ZXh0X2RzdCBpcyBzZXQsIGJ1dCBubyBy ZWcgaXMgCj4+Pj4+PiBkZWZpbmVkXG4iKTsKPj4+Pj4+IMKgwqDCoMKgIHJldHVybiAtRUZBVUxU Owo+Pj4+Pj4gfQo+Pj4+Pj4gaW4gb3B0X3N1YnJlZ196ZXh0X2xvMzJfcm5kX2hpMzIoKSBkb2Vz bid0IHRyaWdnZXIgPwo+Pj4+Pj4KPj4+Pj4+IEJ1dCB0aGlzIHZlcmlmaWVyIG1lc3NhZ2Ugc2hv dWxkIGhhdmUgYmVlbiBhIGhpbnQgdGhhdCB5b3UgbmVlZAo+Pj4+Pj4gdG8gYW5hbHl6ZSB3aHkg emV4dF9kc3QgaXMgc2V0IG9uIHRoaXMga2Z1bmMgY2FsbC4KPj4+Pj4+IE1heWJlIGl0IHNob3Vs ZG4ndCA/Cj4+Pj4+PiBEaWQgeW91IGFuYWx5emUgdGhlIGxvZ2ljIG9mIG1hcmtfYnRmX2Z1bmNf cmVnX3NpemUoKSA/Cj4+Pj4+IG1ha2UgcjAgemV4dCBpcyBub3QgY2F1c2VkIGJ5IG1hcmtfYnRm X2Z1bmNfcmVnX3NpemUuCj4+Pj4+Cj4+Pj4+IFRoaXMgcHJvYmxlbSBvY2N1cnMgd2hlbiBydW5u aW5nIHRoZSBrZnVuY19jYWxsX3Rlc3RfcmVmX2J0Zl9pZCB0ZXN0Cj4+Pj4+IGNhc2UgaW4gdGhl IDMyLWJpdCBBUk0gZW52aXJvbm1lbnQuCj4+Pj4KPj4+PiBXaHkgaXMgaXQgbm90IGZhaWxpbmcg b24geDg2LTMyID8KPj4+IFVzZSB0aGUgbGF0ZXN0IG1haW5saW5lIGtlcm5lbCBjb2RlIHRvIHRl c3Qgb24gdGhlIHg4Nl8zMiBtYWNoaW5lLiBUaGUKPj4+IHRlc3QgYWxzbyBmYWlsczoKPj4+Cj4+ PiDCoMKgwqAgIyAuL3Rlc3RfcHJvZ3MgLXQga2Z1bmNfY2FsbC9rZnVuY19jYWxsX3Rlc3RfcmVm X2J0Zl9pZAo+Pj4gwqDCoMKgIEZhaWxlZCB0byBsb2FkIGJwZl90ZXN0bW9kLmtvIGludG8gdGhl IGtlcm5lbDogLTgKPj4+IMKgwqDCoCBXQVJOSU5HISBTZWxmdGVzdHMgcmVseWluZyBvbiBicGZf dGVzdG1vZC5rbyB3aWxsIGJlIHNraXBwZWQuCj4+PiDCoMKgwqAgbGliYnBmOiBwcm9nICdrZnVu Y19jYWxsX3Rlc3RfcmVmX2J0Zl9pZCc6IEJQRiBwcm9ncmFtIGxvYWQgZmFpbGVkOgo+Pj4gQmFk IGFkZHJlc3MKPj4+IMKgwqDCoCBsaWJicGY6IHByb2cgJ2tmdW5jX2NhbGxfdGVzdF9yZWZfYnRm X2lkJzogLS0gQkVHSU4gUFJPRyBMT0FEIExPRyAtLQo+Pj4gwqDCoMKgIHByb2Nlc3NlZCAyNSBp bnNucyAobGltaXQgMTAwMDAwMCkgbWF4X3N0YXRlc19wZXJfaW5zbiAwIAo+Pj4gdG90YWxfc3Rh dGVzCj4+PiAyIHBlYWtfc3RhdGVzIDIgbWFya19yZWFkIDEKPj4+IMKgwqDCoCAtLSBFTkQgUFJP RyBMT0FEIExPRyAtLQo+Pj4gwqDCoMKgIGxpYmJwZjogcHJvZyAna2Z1bmNfY2FsbF90ZXN0X3Jl Zl9idGZfaWQnOiBmYWlsZWQgdG8gbG9hZDogLTE0Cj4+PiDCoMKgwqAgbGliYnBmOiBmYWlsZWQg dG8gbG9hZCBvYmplY3QgJ2tmdW5jX2NhbGxfdGVzdCcKPj4+IMKgwqDCoCBsaWJicGY6IGZhaWxl ZCB0byBsb2FkIEJQRiBza2VsZXRvbiAna2Z1bmNfY2FsbF90ZXN0JzogLTE0Cj4+PiDCoMKgwqAg dmVyaWZ5X3N1Y2Nlc3M6RkFJTDpza2VsIHVuZXhwZWN0ZWQgZXJyb3I6IC0xNAo+Pj4KPj4+IFRo ZXJlZm9yZSwgdGhpcyBwcm9ibGVtIGFsc28gZXhpc3RzIG9uIHg4Nl8zMjoKPj4+ICJ2ZXJpZmll ciBidWcuIHpleHRfZHN0IGlzIHNldCwgYnV0IG5vIHJlZyBpcyBkZWZpbmVkIgo+Pgo+PiBUaGUg a2VybmVsIHJldHVybnMgLTE0ID09IEVGQVVMVC4KPj4gVGhhdCdzIGEgY29tcGxldGVseSBkaWZm ZXJlbnQgaXNzdWUuCj4gSXQncyB0aGUgc2FtZSBwcm9ibGVtLiBUaGUgb3B0X3N1YnJlZ196ZXh0 X2xvMzJfcm5kX2hpMzIgZnVuY3Rpb24gZmFpbHMgCj4gdG8gY2hlY2sgaGVyZSBhbmQgcmV0dXJu cyAtRUZBVUxUCj4gCj4gb3B0X3N1YnJlZ196ZXh0X2xvMzJfcm5kX2hpMzIgewo+ICDCoCAuLi4K PiAgwqDCoCBpZiAoV0FSTl9PTihsb2FkX3JlZyA9PSAtMSkpIHsKPiAgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdmVyYm9zZShlbnYsICJ2ZXJpZmllciBidWcuIHpleHRfZHN0IGlzIHNldCwgYnV0IG5v IHJlZyBpcyAKPiBkZWZpbmVkXG4iKTsKPiAgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1F RkFVTFQ7Cj4gIMKgwqAgfQo+ICDCoCAuLi4KPiB9Cj4+IC4KSSBzZWUgdGhhdCB0aGVyZSBhcmUg ZW1haWxzIGZyb20gdGhlIGNvbW11bml0eSB0YWxraW5nIGFib3V0IHRoZSBzYW1lIApwcm9ibGVt LCBhbmQgY29tZSB1cCB3aXRoIGEgc29sdXRpb246Cmh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL2Jw Zi8yMDIyMTIwMjEwMzYyMC4xOTE1Njc5LTEtYmpvcm5Aa2VybmVsLm9yZy9ULwoKd2lsbCByZW1v dmUgdGhpcyBwYXRjaCBiYXNlZCBvbiB0aGF0IHBhdGNoLgoKVGhhbmtzLApZYW5nCj4+Cj4gCj4g LgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgt YXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQu b3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJt LWtlcm5lbAo=