From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp1.lauterbach.com (smtp1.lauterbach.com [62.154.241.196]) by sourceware.org (Postfix) with ESMTPS id EA9FC3858296 for ; Thu, 24 Nov 2022 09:54:48 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EA9FC3858296 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=lauterbach.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=lauterbach.com Received: (qmail 24659 invoked by uid 484); 24 Nov 2022 09:54:46 -0000 X-Qmail-Scanner-Diagnostics: from frapc4.intern.lauterbach.com by smtp1.lauterbach.com (envelope-from , uid 484) with qmail-scanner-2.11 (mhr: 1.0. clamdscan: 0.99/21437. spamassassin: 3.4.0. Clear:RC:1(10.2.11.10):. Processed in 0.950759 secs); 24 Nov 2022 09:54:46 -0000 Received: from frapc4.intern.lauterbach.com (HELO [10.2.11.10]) (Authenticated_SSL:fsirl@[10.2.11.10]) (envelope-sender ) by smtp1.lauterbach.com (qmail-ldap-1.03) with TLS_AES_256_GCM_SHA384 encrypted SMTP for ; 24 Nov 2022 09:54:42 -0000 Content-Type: multipart/mixed; boundary="------------jTW0rf6eJG8jfNYewoySBs2p" Message-ID: <2552ab22-916f-d0fe-2c78-d482f6ad8412@lauterbach.com> Date: Thu, 24 Nov 2022 10:54:42 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.5.0 Subject: Re: [PATCH] Make Warray-bounds alias to Warray-bounds= [PR107787] To: Richard Biener , Iskander Shakirzyanov Cc: gcc-patches@gcc.gnu.org References: <9795E6AA-E646-4134-AABE-23F530F5219E@ispras.ru> Content-Language: en-US From: Franz Sirl In-Reply-To: X-Spam-Status: No, score=-10.4 required=5.0 tests=BAYES_00,GIT_PATCH_0,KAM_DMARC_STATUS,KAM_SHORT,NICE_REPLY_A,SPF_HELO_PASS,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. --------------jTW0rf6eJG8jfNYewoySBs2p Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Am 2022-11-23 um 21:11 schrieb Richard Biener via Gcc-patches: > On Wed, Nov 23, 2022 at 3:08 PM Iskander Shakirzyanov via Gcc-patches > wrote: >> >> Hi! >> Sorry for the initially missing description. >> The following patch changes the definition of -Warray-bounds to an Alias to -Warray-bounds=1. This is necessary for the correct use of -Werror=array-bounds=X, for more information see bug report 107787 (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107787) >> As I understand, this happens because -Warray-bounds and -Warray-bounds= are declared as 2 different options in common.opt, so when diagnostic_classify_diagnostic() (opts-common.cc:1880) is called, DK_ERROR is set for the -Warray-bounds= option, but in diagnostic_report_diagnostic() (diagnostic.cc:1446) through warning_at() passes opt_index of -Warray-bounds, so information about DK_ERROR is lost. > > How did you test the patch? If you bootstrapped it and ran the > testsuite then it's OK. Hi, I'm pretty sure the testsuite will have regressions, as I have a very similar patch lying around that needs these testsuite changes. I also added some modified tests that check that -Werror=array-bounds=X works as expected (which it didn't before). This also shows nicely why I don't like warnings with levels, what if I want -Werror=array-bounds=2 + -Warray-bounds=1? The reason (besides lack of time) I didn't submit that patch yet, is that I wanted to check if the tool to process common.opt can be changed to detect warnings with duplicated warning variables. Because I think at least -Wuse-after-free= and Wattributes= have the same problem. BTW, is the duplicated warning description "Warn if an array is accessed out of bounds." needed or not with Alias()? There are examples either way in common.opt. I've attached my patch, feel free to integrate the testsuite changes. Franz --------------jTW0rf6eJG8jfNYewoySBs2p Content-Type: text/plain; charset=UTF-8; name="0008-Unify-Warray-bounds-Warray-bounds-warning-variables.patch" Content-Disposition: attachment; filename*0="0008-Unify-Warray-bounds-Warray-bounds-warning-variables.pat"; filename*1="ch" Content-Transfer-Encoding: base64 RnJvbSA5YmZlZmUyMDgyZjU1ZjJhZDJjZDE5YmVlZGJmZWFmOWJkMjBmYjRhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBGcmFueiBTaXJsIDxmcmFuei5zaXJsLWtlcm5lbEBs YXV0ZXJiYWNoLmNvbT4KRGF0ZTogVGh1LCA4IEp1bCAyMDIxIDEwOjI1OjAwICswMjAwClN1 YmplY3Q6IFtQQVRDSCAwOC8xMV0gVW5pZnkgLVdhcnJheS1ib3VuZHMvLVdhcnJheS1ib3Vu ZHM9IHdhcm5pbmcgdmFyaWFibGVzLgoKLS0tCiBnY2MvYnVpbHRpbnMuY2MgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDYgKy0KIGdjYy9jLWZhbWlseS9jLWNvbW1vbi5jYyAgICAg ICAgICAgICAgICB8ICAgNiArLQogZ2NjL2NvbW1vbi5vcHQgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAzICstCiBnY2MvZGlhZ25vc3RpYy1zcGVjLmNjICAgICAgICAgICAgICAg ICAgfCAgIDEgLQogZ2NjL2dpbXBsZS1hcnJheS1ib3VuZHMuY2MgICAgICAgICAgICAgIHwg IDM4ICsrKy0tLQogZ2NjL2dpbXBsZS1zc2Etd2Fybi1yZXN0cmljdC5jYyAgICAgICAgIHwg ICAyICstCiBnY2MvdGVzdHN1aXRlL2djYy5kZy9XYXJyYXktYm91bmRzLTM0LmMgfCAgIDIg Ky0KIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtNDMuYyB8ICAgNiArLQog Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvV2FycmF5LWJvdW5kcy05My5jIHwgMTAzICsrKysrKysr KysrKysrKysKIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtOTQuYyB8IDE0 OSArKysrKysrKysrKysrKysrKysrKysrKysKIDEwIGZpbGVzIGNoYW5nZWQsIDI4MyBpbnNl cnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVz dHN1aXRlL2djYy5kZy9XYXJyYXktYm91bmRzLTkzLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy5kZy9XYXJyYXktYm91bmRzLTk0LmMKCmRpZmYgLS1naXQgYS9n Y2MvYnVpbHRpbnMuY2MgYi9nY2MvYnVpbHRpbnMuY2MKaW5kZXggNGRjMWNhNjcyYjIuLjAy YzRmZWZhODZmIDEwMDY0NAotLS0gYS9nY2MvYnVpbHRpbnMuY2MKKysrIGIvZ2NjL2J1aWx0 aW5zLmNjCkBAIC02OTYsMTQgKzY5NiwxNCBAQCBjX3N0cmxlbiAodHJlZSBhcmcsIGludCBv bmx5X3ZhbHVlLCBjX3N0cmxlbl9kYXRhICpkYXRhLCB1bnNpZ25lZCBlbHRzaXplKQogICAg IHsKICAgICAgIC8qIFN1cHByZXNzIG11bHRpcGxlIHdhcm5pbmdzIGZvciBwcm9wYWdhdGVk IGNvbnN0YW50IHN0cmluZ3MuICAqLwogICAgICAgaWYgKG9ubHlfdmFsdWUgIT0gMgotCSAg JiYgIXdhcm5pbmdfc3VwcHJlc3NlZF9wIChhcmcsIE9QVF9XYXJyYXlfYm91bmRzKQotCSAg JiYgd2FybmluZ19hdCAobG9jLCBPUFRfV2FycmF5X2JvdW5kcywKKwkgICYmICF3YXJuaW5n X3N1cHByZXNzZWRfcCAoYXJnLCBPUFRfV2FycmF5X2JvdW5kc18pCisJICAmJiB3YXJuaW5n X2F0IChsb2MsIE9QVF9XYXJyYXlfYm91bmRzXywKIAkJCSAib2Zmc2V0ICVxd2kgb3V0c2lk ZSBib3VuZHMgb2YgY29uc3RhbnQgc3RyaW5nIiwKIAkJCSBlbHRvZmYpKQogCXsKIAkgIGlm IChkZWNsKQogCSAgICBpbmZvcm0gKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChkZWNsKSwgIiVx RSBkZWNsYXJlZCBoZXJlIiwgZGVjbCk7Ci0JICBzdXBwcmVzc193YXJuaW5nIChhcmcsIE9Q VF9XYXJyYXlfYm91bmRzKTsKKwkgIHN1cHByZXNzX3dhcm5pbmcgKGFyZywgT1BUX1dhcnJh eV9ib3VuZHNfKTsKIAl9CiAgICAgICByZXR1cm4gTlVMTF9UUkVFOwogICAgIH0KZGlmZiAt LWdpdCBhL2djYy9jLWZhbWlseS9jLWNvbW1vbi5jYyBiL2djYy9jLWZhbWlseS9jLWNvbW1v bi5jYwppbmRleCA3MTUwN2Q0Y2IwYS4uY2Y0MjNkMzg0ZjYgMTAwNjQ0Ci0tLSBhL2djYy9j LWZhbWlseS9jLWNvbW1vbi5jYworKysgYi9nY2MvYy1mYW1pbHkvYy1jb21tb24uY2MKQEAg LTY4MTEsNyArNjgxMSw3IEBAIGZvbGRfb2Zmc2V0b2YgKHRyZWUgZXhwciwgdHJlZSB0eXBl LCBlbnVtIHRyZWVfY29kZSBjdHgpCiAJCSAgICAgZGVmaW5pdGlvbiB0aGVyZW9mLiAgKi8K IAkJICBpZiAoVFJFRV9DT0RFICh2KSA9PSBBUlJBWV9SRUYKIAkJICAgICAgfHwgVFJFRV9D T0RFICh2KSA9PSBDT01QT05FTlRfUkVGKQotCQkgICAgd2FybmluZyAoT1BUX1dhcnJheV9i b3VuZHMsCisJCSAgICB3YXJuaW5nIChPUFRfV2FycmF5X2JvdW5kc18sCiAJCQkgICAgICJp bmRleCAlRSBkZW5vdGVzIGFuIG9mZnNldCAiCiAJCQkgICAgICJncmVhdGVyIHRoYW4gc2l6 ZSBvZiAlcVQiLAogCQkJICAgICB0LCBUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAoZXhwciwg MCkpKTsKQEAgLTg1MzAsOSArODUzMCw5IEBAIGNvbnZlcnRfdmVjdG9yX3RvX2FycmF5X2Zv cl9zdWJzY3JpcHQgKGxvY2F0aW9uX3QgbG9jLAogCiAgICAgICBpbmRleCA9IGZvbGRfZm9y X3dhcm4gKGluZGV4KTsKICAgICAgIGlmIChUUkVFX0NPREUgKGluZGV4KSA9PSBJTlRFR0VS X0NTVCkKLSAgICAgICAgaWYgKCF0cmVlX2ZpdHNfdWh3aV9wIChpbmRleCkKKwlpZiAoIXRy ZWVfZml0c191aHdpX3AgKGluZGV4KQogCSAgICB8fCBtYXliZV9nZSAodHJlZV90b191aHdp IChpbmRleCksIFRZUEVfVkVDVE9SX1NVQlBBUlRTICh0eXBlKSkpCi0gICAgICAgICAgd2Fy bmluZ19hdCAobG9jLCBPUFRfV2FycmF5X2JvdW5kcywgImluZGV4IHZhbHVlIGlzIG91dCBv ZiBib3VuZCIpOworCSAgd2FybmluZ19hdCAobG9jLCBPUFRfV2FycmF5X2JvdW5kc18sICJp bmRleCB2YWx1ZSBpcyBvdXQgb2YgYm91bmQiKTsKIAogICAgICAgLyogV2UgYXJlIGJ1aWxk aW5nIGFuIEFSUkFZX1JFRiBzbyBtYXJrIHRoZSB2ZWN0b3IgYXMgYWRkcmVzc2FibGUKICAg ICAgICAgIHRvIG5vdCBydW4gaW50byB0aGUgZ2ltcGxpZmllcnMgcHJlbWF0dXJlIHNldHRp bmcgb2YgREVDTF9HSU1QTEVfUkVHX1AKZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIv Z2NjL2NvbW1vbi5vcHQKaW5kZXggMjZlOWQxY2M0ZTcuLmMyZWQ5NDRhNTdmIDEwMDY0NAot LS0gYS9nY2MvY29tbW9uLm9wdAorKysgYi9nY2MvY29tbW9uLm9wdApAQCAtNTM5LDggKzUz OSw3IEBAIENvbW1vbiBWYXIod2Fybl9hZ2dyZXNzaXZlX2xvb3Bfb3B0aW1pemF0aW9ucykg SW5pdCgxKSBXYXJuaW5nCiBXYXJuIGlmIGEgbG9vcCB3aXRoIGNvbnN0YW50IG51bWJlciBv ZiBpdGVyYXRpb25zIHRyaWdnZXJzIHVuZGVmaW5lZCBiZWhhdmlvci4KIAogV2FycmF5LWJv dW5kcwotQ29tbW9uIFZhcih3YXJuX2FycmF5X2JvdW5kcykgV2FybmluZwotV2FybiBpZiBh biBhcnJheSBpcyBhY2Nlc3NlZCBvdXQgb2YgYm91bmRzLgorQ29tbW9uIFdhcm5pbmcgQWxp YXMoV2FycmF5LWJvdW5kcz0sMSwwKQogCiBXYXJyYXktYm91bmRzPQogQ29tbW9uIEpvaW5l ZCBSZWplY3ROZWdhdGl2ZSBVSW50ZWdlciBWYXIod2Fybl9hcnJheV9ib3VuZHMpIFdhcm5p bmcgSW50ZWdlclJhbmdlKDAsIDIpCmRpZmYgLS1naXQgYS9nY2MvZGlhZ25vc3RpYy1zcGVj LmNjIGIvZ2NjL2RpYWdub3N0aWMtc3BlYy5jYwppbmRleCBhZWNlODk2MTllNy4uN2EwM2Zj NDkzZTYgMTAwNjQ0Ci0tLSBhL2djYy9kaWFnbm9zdGljLXNwZWMuY2MKKysrIGIvZ2NjL2Rp YWdub3N0aWMtc3BlYy5jYwpAQCAtNzksNyArNzksNiBAQCBub3dhcm5fc3BlY190Ojpub3dh cm5fc3BlY190IChvcHRfY29kZSBvcHQpCiAgICAgICBicmVhazsKIAogICAgICAgLyogQWNj ZXNzIHdhcm5pbmcgZ3JvdXAuICAqLwotICAgIGNhc2UgT1BUX1dhcnJheV9ib3VuZHM6CiAg ICAgY2FzZSBPUFRfV2FycmF5X2JvdW5kc186CiAgICAgY2FzZSBPUFRfV2Zvcm1hdF9vdmVy Zmxvd186CiAgICAgY2FzZSBPUFRfV2Zvcm1hdF90cnVuY2F0aW9uXzoKZGlmZiAtLWdpdCBh L2djYy9naW1wbGUtYXJyYXktYm91bmRzLmNjIGIvZ2NjL2dpbXBsZS1hcnJheS1ib3VuZHMu Y2MKaW5kZXggZmJmNDQ4ZTA0NWQuLjdhZjg1Yjg2Zjc1IDEwMDY0NAotLS0gYS9nY2MvZ2lt cGxlLWFycmF5LWJvdW5kcy5jYworKysgYi9nY2MvZ2ltcGxlLWFycmF5LWJvdW5kcy5jYwpA QCAtMTgyLDcgKzE4Miw3IEBAIGJvb2wKIGFycmF5X2JvdW5kc19jaGVja2VyOjpjaGVja19h cnJheV9yZWYgKGxvY2F0aW9uX3QgbG9jYXRpb24sIHRyZWUgcmVmLAogCQkJCSAgICAgICBn aW1wbGUgKnN0bXQsIGJvb2wgaWdub3JlX29mZl9ieV9vbmUpCiB7Ci0gIGlmICh3YXJuaW5n X3N1cHByZXNzZWRfcCAocmVmLCBPUFRfV2FycmF5X2JvdW5kcykpCisgIGlmICh3YXJuaW5n X3N1cHByZXNzZWRfcCAocmVmLCBPUFRfV2FycmF5X2JvdW5kc18pKQogICAgIC8qIFJldHVy biB0cnVlIHRvIGhhdmUgdGhlIGNhbGxlciBwcmV2ZW50IHdhcm5pbmdzIGZvciBlbmNsb3Np bmcKICAgICAgICByZWZzLiAgKi8KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTI4Nyw3ICsyODcs NyBAQCBhcnJheV9ib3VuZHNfY2hlY2tlcjo6Y2hlY2tfYXJyYXlfcmVmIChsb2NhdGlvbl90 IGxvY2F0aW9uLCB0cmVlIHJlZiwKIAogICAvKiBFbXB0eSBhcnJheS4gICovCiAgIGlmICh1 cF9ib3VuZCAmJiB0cmVlX2ludF9jc3RfZXF1YWwgKGxvd19ib3VuZCwgdXBfYm91bmRfcDEp KQotICAgIHdhcm5lZCA9IHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FycmF5X2JvdW5k cywKKyAgICB3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3Vu ZHNfLAogCQkJICJhcnJheSBzdWJzY3JpcHQgJUUgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMg b2YgJXFUIiwKIAkJCSBsb3dfc3ViLCBhcnR5cGUpOwogCkBAIC0zMTMsNyArMzEzLDcgQEAg YXJyYXlfYm91bmRzX2NoZWNrZXI6OmNoZWNrX2FycmF5X3JlZiAobG9jYXRpb25fdCBsb2Nh dGlvbiwgdHJlZSByZWYsCiAJICAgICAgOiB0cmVlX2ludF9jc3RfbGUgKHVwX2JvdW5kLCB1 cF9zdWIpKQogCSAgJiYgVFJFRV9DT0RFIChsb3dfc3ViKSA9PSBJTlRFR0VSX0NTVAogCSAg JiYgdHJlZV9pbnRfY3N0X2xlIChsb3dfc3ViLCBsb3dfYm91bmQpKQotCXdhcm5lZCA9IHdh cm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FycmF5X2JvdW5kcywKKwl3YXJuZWQgPSB3YXJu aW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHNfLAogCQkJICAgICAiYXJyYXkg c3Vic2NyaXB0IFslRSwgJUVdIGlzIG91dHNpZGUgIgogCQkJICAgICAiYXJyYXkgYm91bmRz IG9mICVxVCIsCiAJCQkgICAgIGxvd19zdWIsIHVwX3N1YiwgYXJ0eXBlKTsKQEAgLTMyMywx MiArMzIzLDEyIEBAIGFycmF5X2JvdW5kc19jaGVja2VyOjpjaGVja19hcnJheV9yZWYgKGxv Y2F0aW9uX3QgbG9jYXRpb24sIHRyZWUgcmVmLAogCSAgICYmIChpZ25vcmVfb2ZmX2J5X29u ZQogCSAgICAgICA/ICF0cmVlX2ludF9jc3RfbGUgKHVwX3N1YiwgdXBfYm91bmRfcDEpCiAJ ICAgICAgIDogIXRyZWVfaW50X2NzdF9sZSAodXBfc3ViLCB1cF9ib3VuZCkpKQotICAgIHdh cm5lZCA9IHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FycmF5X2JvdW5kcywKKyAgICB3 YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHNfLAogCQkJ ICJhcnJheSBzdWJzY3JpcHQgJUUgaXMgYWJvdmUgYXJyYXkgYm91bmRzIG9mICVxVCIsCiAJ CQkgdXBfc3ViLCBhcnR5cGUpOwogICBlbHNlIGlmIChUUkVFX0NPREUgKGxvd19zdWIpID09 IElOVEVHRVJfQ1NUCiAJICAgJiYgdHJlZV9pbnRfY3N0X2x0IChsb3dfc3ViLCBsb3dfYm91 bmQpKQotICAgIHdhcm5lZCA9IHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FycmF5X2Jv dW5kcywKKyAgICB3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9i b3VuZHNfLAogCQkJICJhcnJheSBzdWJzY3JpcHQgJUUgaXMgYmVsb3cgYXJyYXkgYm91bmRz IG9mICVxVCIsCiAJCQkgbG93X3N1YiwgYXJ0eXBlKTsKIApAQCAtMzUzLDcgKzM1Myw3IEBA IGFycmF5X2JvdW5kc19jaGVja2VyOjpjaGVja19hcnJheV9yZWYgKGxvY2F0aW9uX3QgbG9j YXRpb24sIHRyZWUgcmVmLAogICAgICAgLyogQXZvaWQgbW9yZSB3YXJuaW5ncyB3aGVuIGNo ZWNraW5nIG1vcmUgc2lnbmlmaWNhbnQgc3Vic2NyaXB0cwogCSBvZiB0aGUgc2FtZSBleHBy ZXNzaW9uLiAgKi8KICAgICAgIHJlZiA9IFRSRUVfT1BFUkFORCAocmVmLCAwKTsKLSAgICAg IHN1cHByZXNzX3dhcm5pbmcgKHJlZiwgT1BUX1dhcnJheV9ib3VuZHMpOworICAgICAgc3Vw cHJlc3Nfd2FybmluZyAocmVmLCBPUFRfV2FycmF5X2JvdW5kc18pOwogCiAgICAgICBpZiAo ZGVjbCkKIAlyZWYgPSBkZWNsOwpAQCAtMzkzLDcgKzM5Myw3IEBAIGJvb2wKIGFycmF5X2Jv dW5kc19jaGVja2VyOjpjaGVja19tZW1fcmVmIChsb2NhdGlvbl90IGxvY2F0aW9uLCB0cmVl IHJlZiwKIAkJCQkgICAgIGJvb2wgaWdub3JlX29mZl9ieV9vbmUpCiB7Ci0gIGlmICh3YXJu aW5nX3N1cHByZXNzZWRfcCAocmVmLCBPUFRfV2FycmF5X2JvdW5kcykpCisgIGlmICh3YXJu aW5nX3N1cHByZXNzZWRfcCAocmVmLCBPUFRfV2FycmF5X2JvdW5kc18pKQogICAgIHJldHVy biBmYWxzZTsKIAogICAvKiBUaGUgc3RhdGVtZW50IHVzZWQgdG8gYWxsb2NhdGUgdGhlIGFy cmF5IG9yIG51bGwuICAqLwpAQCAtNDkzLDEyICs0OTMsMTIgQEAgYXJyYXlfYm91bmRzX2No ZWNrZXI6OmNoZWNrX21lbV9yZWYgKGxvY2F0aW9uX3QgbG9jYXRpb24sIHRyZWUgcmVmLAog ICBpZiAobGJvb2IpCiAgICAgewogICAgICAgaWYgKG9mZnJhbmdlWzBdID09IG9mZnJhbmdl WzFdKQotCXdhcm5lZCA9IHdhcm5pbmdfYXQgKGxvY2F0aW9uLCBPUFRfV2FycmF5X2JvdW5k cywKKwl3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHNf LAogCQkJICAgICAiYXJyYXkgc3Vic2NyaXB0ICV3aSBpcyBvdXRzaWRlIGFycmF5IGJvdW5k cyAiCiAJCQkgICAgICJvZiAlcVQiLAogCQkJICAgICBvZmZyYW5nZVswXS50b19zaHdpICgp LCByZWZ0eXBlKTsKICAgICAgIGVsc2UKLQl3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlv biwgT1BUX1dhcnJheV9ib3VuZHMsCisJd2FybmVkID0gd2FybmluZ19hdCAobG9jYXRpb24s IE9QVF9XYXJyYXlfYm91bmRzXywKIAkJCSAgICAgImFycmF5IHN1YnNjcmlwdCBbJXdpLCAl d2ldIGlzIG91dHNpZGUgIgogCQkJICAgICAiYXJyYXkgYm91bmRzIG9mICVxVCIsCiAJCQkg ICAgIG9mZnJhbmdlWzBdLnRvX3Nod2kgKCksCkBAIC01MTMsNyArNTEzLDcgQEAgYXJyYXlf Ym91bmRzX2NoZWNrZXI6OmNoZWNrX21lbV9yZWYgKGxvY2F0aW9uX3QgbG9jYXRpb24sIHRy ZWUgcmVmLAogCWJhY2t0eXBlID0gYnVpbGRfYXJyYXlfdHlwZV9uZWx0cyAodW5zaWduZWRf Y2hhcl90eXBlX25vZGUsCiAJCQkJCSAgIGFyZWYuc2l6cm5nWzFdLnRvX3Vod2kgKCkpOwog Ci0gICAgICB3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3Vu ZHMsCisgICAgICB3YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9i b3VuZHNfLAogCQkJICAgImFycmF5IHN1YnNjcmlwdCAlPCVUWyV3aV0lPiBpcyBwYXJ0bHkg IgogCQkJICAgIm91dHNpZGUgYXJyYXkgYm91bmRzIG9mICVxVCIsCiAJCQkgICBheHN0eXBl LCBvZmZyYW5nZVswXS50b19zaHdpICgpLCBiYWNrdHlwZSk7CkBAIC01MjMsNyArNTIzLDcg QEAgYXJyYXlfYm91bmRzX2NoZWNrZXI6OmNoZWNrX21lbV9yZWYgKGxvY2F0aW9uX3QgbG9j YXRpb24sIHRyZWUgcmVmLAogICAgIHsKICAgICAgIC8qIFRPRE86IERldGVybWluZSB0aGUg YWNjZXNzIGZyb20gdGhlIHN0YXRlbWVudCBhbmQgdXNlIGl0LiAgKi8KICAgICAgIGFyZWYu aW5mb3JtX2FjY2VzcyAoYWNjZXNzX25vbmUpOwotICAgICAgc3VwcHJlc3Nfd2FybmluZyAo cmVmLCBPUFRfV2FycmF5X2JvdW5kcyk7CisgICAgICBzdXBwcmVzc193YXJuaW5nIChyZWYs IE9QVF9XYXJyYXlfYm91bmRzXyk7CiAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAg LTUzNiwxMSArNTM2LDExIEBAIGFycmF5X2JvdW5kc19jaGVja2VyOjpjaGVja19tZW1fcmVm IChsb2NhdGlvbl90IGxvY2F0aW9uLCB0cmVlIHJlZiwKICAgICB7CiAgICAgICBIT1NUX1dJ REVfSU5UIHRtcGlkeCA9IChhcmVmLm9mZm1heFtpXSAvIGVsdHNpemUpLnRvX3Nod2kgKCk7 CiAKLSAgICAgIGlmICh3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHMs CisgICAgICBpZiAod2FybmluZ19hdCAobG9jYXRpb24sIE9QVF9XYXJyYXlfYm91bmRzXywK IAkJICAgICAgImludGVybWVkaWF0ZSBhcnJheSBvZmZzZXQgJXdpIGlzIG91dHNpZGUgYXJy YXkgYm91bmRzICIKIAkJICAgICAgIm9mICVxVCIsIHRtcGlkeCwgcmVmdHlwZSkpCiAJewot CSAgc3VwcHJlc3Nfd2FybmluZyAocmVmLCBPUFRfV2FycmF5X2JvdW5kcyk7CisJICBzdXBw cmVzc193YXJuaW5nIChyZWYsIE9QVF9XYXJyYXlfYm91bmRzXyk7CiAJICByZXR1cm4gdHJ1 ZTsKIAl9CiAgICAgfQpAQCAtNTcyLDcgKzU3Miw3IEBAIGFycmF5X2JvdW5kc19jaGVja2Vy OjpjaGVja19hZGRyX2V4cHIgKGxvY2F0aW9uX3QgbG9jYXRpb24sIHRyZWUgdCwKIAl3YXJu ZWQgPSBjaGVja19tZW1fcmVmIChsb2NhdGlvbiwgdCwgaWdub3JlX29mZl9ieV9vbmUpOwog CiAgICAgICBpZiAod2FybmVkKQotCXN1cHByZXNzX3dhcm5pbmcgKHQsIE9QVF9XYXJyYXlf Ym91bmRzKTsKKwlzdXBwcmVzc193YXJuaW5nICh0LCBPUFRfV2FycmF5X2JvdW5kc18pOwog CiAgICAgICB0ID0gVFJFRV9PUEVSQU5EICh0LCAwKTsKICAgICB9CkBAIC01ODAsNyArNTgw LDcgQEAgYXJyYXlfYm91bmRzX2NoZWNrZXI6OmNoZWNrX2FkZHJfZXhwciAobG9jYXRpb25f dCBsb2NhdGlvbiwgdHJlZSB0LAogCiAgIGlmIChUUkVFX0NPREUgKHQpICE9IE1FTV9SRUYK ICAgICAgIHx8IFRSRUVfQ09ERSAoVFJFRV9PUEVSQU5EICh0LCAwKSkgIT0gQUREUl9FWFBS Ci0gICAgICB8fCB3YXJuaW5nX3N1cHByZXNzZWRfcCAodCwgT1BUX1dhcnJheV9ib3VuZHMp KQorICAgICAgfHwgd2FybmluZ19zdXBwcmVzc2VkX3AgKHQsIE9QVF9XYXJyYXlfYm91bmRz XykpCiAgICAgcmV0dXJuOwogCiAgIHRyZWUgdGVtID0gVFJFRV9PUEVSQU5EIChUUkVFX09Q RVJBTkQgKHQsIDApLCAwKTsKQEAgLTYxNSw3ICs2MTUsNyBAQCBhcnJheV9ib3VuZHNfY2hl Y2tlcjo6Y2hlY2tfYWRkcl9leHByIChsb2NhdGlvbl90IGxvY2F0aW9uLCB0cmVlIHQsCiAJ ICBkdW1wX2dlbmVyaWNfZXhwciAoTVNHX05PVEUsIFRERl9TTElNLCB0KTsKIAkgIGZwcmlu dGYgKGR1bXBfZmlsZSwgIlxuIik7CiAJfQotICAgICAgd2FybmVkID0gd2FybmluZ19hdCAo bG9jYXRpb24sIE9QVF9XYXJyYXlfYm91bmRzLAorICAgICAgd2FybmVkID0gd2FybmluZ19h dCAobG9jYXRpb24sIE9QVF9XYXJyYXlfYm91bmRzXywKIAkJCSAgICJhcnJheSBzdWJzY3Jp cHQgJXdpIGlzIGJlbG93ICIKIAkJCSAgICJhcnJheSBib3VuZHMgb2YgJXFUIiwKIAkJCSAg IGlkeC50b19zaHdpICgpLCBUUkVFX1RZUEUgKHRlbSkpOwpAQCAtNjI5LDcgKzYyOSw3IEBA IGFycmF5X2JvdW5kc19jaGVja2VyOjpjaGVja19hZGRyX2V4cHIgKGxvY2F0aW9uX3QgbG9j YXRpb24sIHRyZWUgdCwKIAkgIGR1bXBfZ2VuZXJpY19leHByIChNU0dfTk9URSwgVERGX1NM SU0sIHQpOwogCSAgZnByaW50ZiAoZHVtcF9maWxlLCAiXG4iKTsKIAl9Ci0gICAgICB3YXJu ZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHMsCisgICAgICB3 YXJuZWQgPSB3YXJuaW5nX2F0IChsb2NhdGlvbiwgT1BUX1dhcnJheV9ib3VuZHNfLAogCQkJ ICAgImFycmF5IHN1YnNjcmlwdCAld3UgaXMgYWJvdmUgIgogCQkJICAgImFycmF5IGJvdW5k cyBvZiAlcVQiLAogCQkJICAgaWR4LnRvX3Vod2kgKCksIFRSRUVfVFlQRSAodGVtKSk7CkBA IC02NDAsNyArNjQwLDcgQEAgYXJyYXlfYm91bmRzX2NoZWNrZXI6OmNoZWNrX2FkZHJfZXhw ciAobG9jYXRpb25fdCBsb2NhdGlvbiwgdHJlZSB0LAogICAgICAgaWYgKERFQ0xfUCAodCkp CiAJaW5mb3JtIChERUNMX1NPVVJDRV9MT0NBVElPTiAodCksICJ3aGlsZSByZWZlcmVuY2lu ZyAlcUQiLCB0KTsKIAotICAgICAgc3VwcHJlc3Nfd2FybmluZyAodCwgT1BUX1dhcnJheV9i b3VuZHMpOworICAgICAgc3VwcHJlc3Nfd2FybmluZyAodCwgT1BUX1dhcnJheV9ib3VuZHNf KTsKICAgICB9CiB9CiAKQEAgLTc0MCw3ICs3NDAsNyBAQCBhcnJheV9ib3VuZHNfY2hlY2tl cjo6Y2hlY2tfYXJyYXlfYm91bmRzICh0cmVlICp0cCwgaW50ICp3YWxrX3N1YnRyZWUsCiAg IC8qIFByb3BhZ2F0ZSB0aGUgbm8td2FybmluZyBiaXQgdG8gdGhlIG91dGVyIHN0YXRlbWVu dCB0byBhdm9pZCBhbHNvCiAgICAgIGlzc3VpbmcgLVdzdHJpbmdvcC1vdmVyZmxvdy8tb3Zl cnJlYWQgZm9yIHRoZSBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLiAgKi8KICAgaWYgKHdhcm5l ZCkKLSAgICBzdXBwcmVzc193YXJuaW5nICh3aS0+c3RtdCwgT1BUX1dhcnJheV9ib3VuZHMp OworICAgIHN1cHByZXNzX3dhcm5pbmcgKHdpLT5zdG10LCBPUFRfV2FycmF5X2JvdW5kc18p OwogCiAgIHJldHVybiBOVUxMX1RSRUU7CiB9CmRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLXNz YS13YXJuLXJlc3RyaWN0LmNjIGIvZ2NjL2dpbXBsZS1zc2Etd2Fybi1yZXN0cmljdC5jYwpp bmRleCA4MzI0NTZiYTZmYy4uMTA3YmEyNzg3OTggMTAwNjQ0Ci0tLSBhL2djYy9naW1wbGUt c3NhLXdhcm4tcmVzdHJpY3QuY2MKKysrIGIvZ2NjL2dpbXBsZS1zc2Etd2Fybi1yZXN0cmlj dC5jYwpAQCAtMTczNCw3ICsxNzM0LDcgQEAgbWF5YmVfZGlhZ19hY2Nlc3NfYm91bmRzIChn aW1wbGUgKmNhbGwsIHRyZWUgZnVuYywgaW50IHN0cmljdCwKICAgaWYgKCFvb2JyZWYpCiAg ICAgcmV0dXJuIG5vX3dhcm5pbmc7CiAKLSAgY29uc3Qgb3B0X2NvZGUgb3B0ID0gT1BUX1dh cnJheV9ib3VuZHM7CisgIGNvbnN0IG9wdF9jb2RlIG9wdCA9IE9QVF9XYXJyYXlfYm91bmRz XzsKICAgLyogUmV0dXJuIHRydWUgd2l0aG91dCBpc3N1aW5nIGEgd2FybmluZy4gICovCiAg IGlmICghZG9fd2FybikKICAgICByZXR1cm4gb3B0OwpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MuZGcvV2FycmF5LWJvdW5kcy0zNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv V2FycmF5LWJvdW5kcy0zNC5jCmluZGV4IGNlYTdjNGIzMmEyLi4xYjJhMDk4YWQ4NiAxMDA2 NDQKLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvV2FycmF5LWJvdW5kcy0zNC5jCisrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtMzQuYwpAQCAtNyw3ICs3LDcg QEAgaW50IHg7CiAKIGlubGluZSB2b2lkIGZvbyAoaW50IGkpCiB7Ci0gIGFbaSArIDFdID0g MTIzOyAgIC8qIHsgZGctd2FybmluZyAiXFxcWy1XYXJyYXktYm91bmRzXSIgfSAqLworICBh W2kgKyAxXSA9IDEyMzsgICAvKiB7IGRnLXdhcm5pbmcgIlxcXFstV2FycmF5LWJvdW5kcyIg fSAqLwogfQogCiBpbnQgYmFyICh2b2lkKQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvV2FycmF5LWJvdW5kcy00My5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvV2FycmF5 LWJvdW5kcy00My5jCmluZGV4IDBmNTIxYTcyNTBkLi40M2E4MzMxNTc4NyAxMDA2NDQKLS0t IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvV2FycmF5LWJvdW5kcy00My5jCisrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtNDMuYwpAQCAtMTksNyArMTksNyBAQCBO T0lQQSBpbnQgZzIgKGludCBpKQogCiAgIHNpbmsgKHAwLCBwMSwgcDIpOwogCi0gIHJldHVy biBwMls4XTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XYXJyYXktYm91bmRzXSIgfQor ICByZXR1cm4gcDJbOF07ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV2FycmF5LWJvdW5k cyIgfQogfQogCiBOT0lQQSBpbnQgZzMgKGludCBpKQpAQCAtMzMsNyArMzMsNyBAQCBOT0lQ QSBpbnQgZzMgKGludCBpKQogCiAgIHNpbmsgKHAwLCBwMSwgcDIsIHAzKTsKIAotICByZXR1 cm4gcDNbN107ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV2FycmF5LWJvdW5kc10iIH0K KyAgcmV0dXJuIHAzWzddOyAgICAgLy8geyBkZy13YXJuaW5nICJcXFxbLVdhcnJheS1ib3Vu ZHMiIH0KIH0KIAogTk9JUEEgaW50IGc0IChpbnQgaSkKQEAgLTQ4LDcgKzQ4LDcgQEAgTk9J UEEgaW50IGc0IChpbnQgaSkKIAogICBzaW5rIChwMCwgcDEsIHAyLCBwMywgcDQpOwogCi0g IHJldHVybiBwNFs2XTsgICAgIC8vIHsgZGctd2FybmluZyAiXFxcWy1XYXJyYXktYm91bmRz XSIgfQorICByZXR1cm4gcDRbNl07ICAgICAvLyB7IGRnLXdhcm5pbmcgIlxcXFstV2FycmF5 LWJvdW5kcyIgfQogfQogCiBOT0lQQSBpbnQgZzUgKGludCBpKQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvV2FycmF5LWJvdW5kcy05My5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvV2FycmF5LWJvdW5kcy05My5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4wODIyNDExMTc5YgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtOTMuYwpAQCAtMCwwICsxLDEwMyBAQAorLyogY29w aWVkIGZyb20gZ2NjLmRnL1dhcnJheS1ib3VuZHMuYyB0byB0ZXN0IC1XZXJyb3I9YXJyYXkt Ym91bmRzPTEgZnVuY3Rpb25hbGl0eS4gICovCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwor LyogeyBkZy1vcHRpb25zICItTzIgLVduby1hcnJheS1ib3VuZHMgLVdlcnJvcj1hcnJheS1i b3VuZHM9MSIgfSAqLworCitpbnQgYVsxMF07CisKK3N0YXRpYyBpbmxpbmUgaW50IG4odm9p ZCkgeworICAgIF9fU0laRV9UWVBFX18gc3RybGVuKGNvbnN0IGNoYXIgKnMpOworICAgIHJl dHVybiBzdHJsZW4oIjEyMzQ1Iik7Cit9CisKK3ZvaWQgZyhpbnQgKnApOwordm9pZCBoKGlu dCBwKTsKKwordm9pZCBiYXIgKHZvaWQgKik7CisKK2ludCogZih2b2lkKSB7CisgICAgaW50 IGJbMTBdOworICAgIGludCBpOworICAgIHN0cnVjdCB7CisgICAgICAgaW50IGNbMTBdOwor ICAgIH0gYzsKKworICAgIGFbLTFdID0gMDsgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAi NjphcnJheSBzdWJzY3JpcHQiIH0gKi8KKyAgICBhWyAwXSA9IDA7CisgICAgYVsgMV0gPSAw OworCisKKyAgICBhWyA5XSA9IDA7CisgICAgYVsxMF0gPSAwOyAgICAgICAgICAgICAvKiB7 IGRnLWVycm9yICI2OmFycmF5IHN1YnNjcmlwdCIgfSAqLworICAgIGFbMTFdID0gMDsgICAg ICAgICAgICAgLyogeyBkZy1lcnJvciAiNjphcnJheSBzdWJzY3JpcHQiIH0gKi8KKyAgICBi YXIgKGEpOworICAgIGFbMiAqIG4oKSAtIDExXSA9IDE7ICAgIC8qIHsgZGctZXJyb3IgIjY6 YXJyYXkgc3Vic2NyaXB0IiB9ICovCisgICAgYVsyICogbigpIC0gMTBdID0gMTsKKyAgICBh WzIgKiBuKCkgLSAgMV0gPSAxOworICAgIGFbMiAqIG4oKSAtICAwXSA9IDE7ICAgIC8qIHsg ZGctZXJyb3IgIjY6YXJyYXkgc3Vic2NyaXB0IiB9ICovCisgICAgYmFyIChhKTsKKworICAg IGJbLTFdID0gMDsgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAiNjphcnJheSBzdWJzY3Jp cHQiIH0gKi8KKyAgICBiWyAwXSA9IDA7CisgICAgYlsgMV0gPSAwOworICAgIGJbIDldID0g MDsKKyAgICBiWzEwXSA9IDA7ICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgIjY6YXJyYXkg c3Vic2NyaXB0IiB9ICovCisgICAgYlsxMV0gPSAwOyAgICAgICAgICAgICAvKiB7IGRnLWVy cm9yICI2OmFycmF5IHN1YnNjcmlwdCIgfSAqLworICAgIGJhciAoYik7CisgICAgYlsyICog bigpIC0gMTFdID0gMTsgICAgLyogeyBkZy1lcnJvciAiNjphcnJheSBzdWJzY3JpcHQiIH0g Ki8KKyAgICBiWzIgKiBuKCkgLSAxMF0gPSAxOworICAgIGJbMiAqIG4oKSAtICAxXSA9IDE7 CisgICAgYlsyICogbigpIC0gIDBdID0gMTsgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vi c2NyaXB0IiB9ICovCisKKyAgICBjLmNbLTFdID0gMDsgICAgICAgICAgIC8qIHsgZGctZXJy b3IgIjg6YXJyYXkgc3Vic2NyaXB0IiB9ICovCisgICAgYy5jWyAwXSA9IDA7CisgICAgYy5j WyAxXSA9IDA7CisgICAgYy5jWyA5XSA9IDA7CisgICAgYy5jWzEwXSA9IDA7ICAgICAgICAg ICAvKiB7IGRnLWVycm9yICI4OmFycmF5IHN1YnNjcmlwdCIgfSAqLworICAgIGMuY1sxMV0g PSAwOyAgICAgICAgICAgLyogeyBkZy1lcnJvciAiODphcnJheSBzdWJzY3JpcHQiIH0gKi8K KyAgICBiYXIgKCZjKTsKKyAgICBjLmNbMiAqIG4oKSAtIDExXSA9IDE7ICAvKiB7IGRnLWVy cm9yICI4OmFycmF5IHN1YnNjcmlwdCIgfSAqLworICAgIGMuY1syICogbigpIC0gMTBdID0g MTsKKyAgICBjLmNbMiAqIG4oKSAtICAxXSA9IDE7CisgICAgYy5jWzIgKiBuKCkgLSAgMF0g PSAxOyAgLyogeyBkZy1lcnJvciAiODphcnJheSBzdWJzY3JpcHQiIH0gKi8KKworICAgIGco JmFbOF0pOworICAgIGcoJmFbOV0pOworICAgIGcoJmFbMTBdKTsKKyAgICBnKCZhWzExXSk7 ICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlwdCIgfSAqLworICAg IGcoJmFbLTMwXSsxMCk7ICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNj cmlwdCIgfSAqLworICAgIGcoJmFbLTMwXSszMCk7CisKKyAgICBnKCZiWzEwXSk7CisgICAg ZygmYy5jWzEwXSk7CisgICAgZygmYlsxMV0pOyAgICAgICAgICAgICAvKiB7IGRnLWVycm9y ICJhcnJheSBzdWJzY3JpcHQiIH0gKi8KKyAgICBnKCZjLmNbMTFdKTsgICAgICAgICAgIC8q IHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlwdCIgfSAqLworCisgICAgZygmYVswXSk7Cisg ICAgZygmYlswXSk7CisgICAgZygmYy5jWzBdKTsKKworICAgIGcoJmFbLTFdKTsgICAgICAg ICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IiB9ICovCisgICAgZygmYlst MV0pOyAgICAgICAgICAgICAvKiB7IGRnLWVycm9yICJhcnJheSBzdWJzY3JpcHQiIH0gKi8K KyAgICBoKHNpemVvZiBhWy0xXSk7CisgICAgaChzaXplb2YgYVsxMF0pOworICAgIGgoc2l6 ZW9mIGJbLTFdKTsKKyAgICBoKHNpemVvZiBiWzEwXSk7CisgICAgaChzaXplb2YgYy5jWy0x XSk7CisgICAgaChzaXplb2YgYy5jWzEwXSk7CisKKyAgICBpZiAoMTAgPCAxMCkKKyAgICAg ICBhWzEwXSA9IDA7CisgICAgaWYgKDEwIDwgMTApCisgICAgICAgYlsxMF0gPSAwOworICAg IGlmICgtMSA+PSAwKQorICAgICAgIGMuY1stMV0gPSAwOworCisgICAgZm9yIChpID0gMjA7 IGkgPCAzMDsgKytpKQorICAgICAgICAgICAgIGFbaV0gPSAxOyAgICAgICAvKiB7IGRnLWVy cm9yICIxNTphcnJheSBzdWJzY3JpcHQiIH0gKi8KKworICAgIGJhciAoYik7CisgICAgYmFy ICgmYyk7CisgICAgcmV0dXJuIGE7Cit9CisKKy8qIHsgZGctbWVzc2FnZSAic29tZSB3YXJu aW5ncyBiZWluZyB0cmVhdGVkIGFzIGVycm9ycyIgIiIge3RhcmdldCAiKi0qLSoifSAwIH0g Ki8KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtOTQu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL1dhcnJheS1ib3VuZHMtOTQuYwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTM3ZDJhYWYxMDkKLS0tIC9kZXYvbnVs bAorKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9XYXJyYXktYm91bmRzLTk0LmMKQEAgLTAs MCArMSwxNDkgQEAKKy8qIGNvcGllZCBmcm9tIGdjYy5kZy9XYXJyYXktYm91bmRzLTI5LmMg dG8gdGVzdCAtV2Vycm9yPWFycmF5LWJvdW5kcz0yIGZ1bmN0aW9uYWxpdHkKKyAgIHsgZGct ZG8gY29tcGlsZSB9CisgICB7IGRnLW9wdGlvbnMgIi1PMiAtV25vLWFycmF5LWJvdW5kcyAt V2Vycm9yPWFycmF5LWJvdW5kcz0yIC1mdHJhY2stbWFjcm8tZXhwYW5zaW9uPTAiIH0gKi8K KworI2luY2x1ZGUgInJhbmdlLmgiCisKKyNkZWZpbmUgTUFYIERJRkZfTUFYCisjZGVmaW5l IE1JTiBESUZGX01JTgorCit0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CisKK3Zv aWQgc2luayAoaW50LCAuLi4pOworCisjZGVmaW5lIFQoZXhwcikgICBzaW5rICgwLCBleHBy KQorCit2b2lkIHRlc3RfbmFycm93ICh2b2lkKQoreworICBpbnQgaSA9IFNSICgxLCAyKTsK KworICBjb25zdCBjaGFyICpwMCA9ICIxMiI7CisgIGNvbnN0IGNoYXIgKnAxID0gcDAgKyBp OyAgICAvKiBwb2ludHMgYXQgJzInIG9yIGJleW9uZCAqLworICBjb25zdCBjaGFyICpwMiA9 IHAxICsgaTsgICAgLyogcG9pbnRzIGF0ICdcMCcgb3IgYmV5b25kICovCisgIGNvbnN0IGNo YXIgKnAzID0gcDIgKyBpOyAgICAvKiBwb2ludHMganVzdCBwYXN0IHRoZSBlbmQgKi8KKyAg Y29uc3QgY2hhciAqcDQgPSBwMyArIGk7ICAgIC8qIGludmFsaWQgKi8KKworICBUIChwMFst MV0pOyAgICAgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IFwo LTF8XFswLTlcXSspIGlzIG91dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5jaGFyXFxcWzNdLiIg fSAqLworICBUIChwMFswXSk7CisgIFQgKHAwWzFdKTsKKyAgVCAocDBbMl0pOworICBUIChw MFszXSk7ICAgICAgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0 IDMgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMgb2YgLmNoYXJcXFxbM10uIiB9ICovCisKKyAg VCAoJnAwWy0xXSk7ICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNj cmlwdCBcKC0xfFxbMC05XF0rKSBpcyBcKGFib3ZlfGJlbG93fG91dHNpZGVcKSBhcnJheSBi b3VuZHMgb2YgLmNoYXJcXFxbM10uIiB9ICovCisgIFQgKCZwMFswXSk7CisgIFQgKCZwMFsx XSk7CisgIFQgKCZwMFsyXSk7CisgIFQgKCZwMFszXSk7CisgIFQgKCZwMFs0XSk7ICAgICAg ICAgICAgICAgICAvKiB7IGRnLWVycm9yICJhcnJheSBzdWJzY3JpcHQgNCBpcyBcKGFib3Zl fG91dHNpZGVcKSBhcnJheSBib3VuZHMgb2YgLmNoYXJcXFxbM10uIiB9ICovCisKKyAgVCAo cDFbLTNdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlw dCBcXFxbLTIsIC0xXSBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuY2hhclxcXFszXS4i IH0gKi8KKyAgVCAocDFbLTJdKTsKKyAgVCAocDFbLTFdKTsKKyAgVCAocDFbIDBdKTsKKyAg VCAocDFbIDFdKTsKKyAgVCAocDFbIDJdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJy b3IgImFycmF5IHN1YnNjcmlwdCAzIGlzIG91dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5jaGFy XFxcWzNdLiIgfSAqLworICBUIChwMVsgM10pOyAgICAgICAgICAgICAgICAgLyogeyBkZy1l cnJvciAiYXJyYXkgc3Vic2NyaXB0IFxcXFs0LCA1XSBpcyBvdXRzaWRlIGFycmF5IGJvdW5k cyBvZiAuY2hhclxcXFszXS4iIH0gKi8KKworICBUICgmcDFbLTNdKTsgICAgICAgICAgICAg ICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IFxcXFstMiwgLTFdIGlzIG91dHNp ZGUgYXJyYXkgYm91bmRzIG9mIC5jaGFyXFxcWzNdLiIgImJ1ZyIgeyB4ZmFpbCAqLSotKiB9 IH0gKi8KKyAgVCAoJnAxWy0yXSk7CisgIFQgKCZwMVstMV0pOworICBUICgmcDFbIDBdKTsK KyAgVCAoJnAxWyAxXSk7CisgIFQgKCZwMVsgMl0pOworICBUICgmcDFbIDNdKTsgICAgICAg ICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IFxcXFs0LCA2XSBpcyBv dXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuY2hhclxcXFszXS4iICJidWciIHsgeGZhaWwgKi0q LSogfSB9ICovCisKKyAgVCAocDJbLTRdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJy b3IgInN1YnNjcmlwdCBcXFxbLTIsIC0xXFxcXSBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBv ZiAuY2hhclxcXFszXS4iIH0gKi8KKyAgVCAocDJbLTNdKTsKKyAgVCAocDJbLTJdKTsKKyAg VCAocDJbLTFdKTsKKyAgVCAocDJbIDBdKTsKKworICAvKiBFdmVuIHRob3VnaCB0aGUgbG93 ZXIgYm91bmQgb2YgcDMncyBvZmZzZXRzIGlzIGluIGJvdW5kcywgaW4gb3JkZXIKKyAgICAg dG8gc3VidHJhY3QgNCBmcm9tIHAzIGFuZCBnZXQgYSBkZXJlZmVyZW5jZWFibGUgcG9pbnRl ciBpdHMgdmFsdWUKKyAgICAgd291bGQgaGF2ZSB0byBiZSBvdXQtb2YtYm91bmRzLiAgKi8K KyAgVCAocDNbLTRdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1 YnNjcmlwdCAtMSBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuY2hhclxcXFszXS4iIH0g Ki8KKyAgVCAocDNbLTNdKTsKKyAgVCAocDNbLTJdKTsKKyAgVCAocDNbLTFdKTsKKyAgVCAo cDNbIDBdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlw dCAzIGlzIG91dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5jaGFyXFxcWzNdLiIgfSAqLworCisg IFQgKHA0Wy00XSk7ICAgICAgICAgICAgICAgICAvKiB7IGRnLWVycm9yICJpbnRlcm1lZGlh dGUgYXJyYXkgb2Zmc2V0IDQgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMgb2YgLmNoYXJcXFxb M10uIiB9ICovCisgIFQgKHA0Wy0zXSk7ICAgICAgICAgICAgICAgICAvKiB7IGRnLWVycm9y ICJpbnRlcm1lZGlhdGUgYXJyYXkgb2Zmc2V0IDQgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMg b2YgLmNoYXJcXFxbM10uIiB9ICovCisgIFQgKHA0Wy0yXSk7ICAgICAgICAgICAgICAgICAv KiB7IGRnLWVycm9yICJpbnRlcm1lZGlhdGUgYXJyYXkgb2Zmc2V0IDQgaXMgb3V0c2lkZSBh cnJheSBib3VuZHMgb2YgLmNoYXJcXFxbM10uIiB9ICovCisKKyAgLyogVGhlIGZpbmFsIHN1 YnNjcmlwdHMgYmVsb3cgYXJlIGludmFsaWQuICAqLworICBUIChwNFstMV0pOyAgICAgICAg ICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IDMgaXMgb3V0c2lkZSBh cnJheSBib3VuZHMgb2YgLmNoYXJcXFxbM10uIiB9ICovCisgIFQgKHA0WyAwXSk7ICAgICAg ICAgICAgICAgICAvKiB7IGRnLWVycm9yICJhcnJheSBzdWJzY3JpcHQgXFxcWzQsIDVdIGlz IG91dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5jaGFyXFxcWzNdLiIgfSAqLworfQorCisKK3Zv aWQgdGVzdF9uYXJyb3dfdmZsb3cgKHZvaWQpCit7CisgIGludCBpID0gU1IgKERJRkZfTUFY IC0gMiwgRElGRl9NQVgpOworICBpbnQgaiA9IFNSICgxLCBESUZGX01BWCk7CisKKyAgY29u c3QgY2hhciAqcDAgPSAiMTIzIjsKKyAgY29uc3QgY2hhciAqcDEgPSBwMCArIGk7ICAgIC8q IHBvaW50cyBhdCAnMicgb3IgYmV5b25kICovCisgIGNvbnN0IGNoYXIgKnAyID0gcDEgKyBp OyAgICAvKiBwb2ludHMgYXQgJ1wwJyBvciBiZXlvbmQgKi8KKyAgY29uc3QgY2hhciAqcDMg PSBwMiArIGk7ICAgIC8qIHBvaW50cyBqdXN0IHBhc3QgdGhlIGVuZCAqLworICBjb25zdCBj aGFyICpwNCA9IHAzICsgaTsgICAgLyogaW52YWxpZCAqLworfQorCisKK3ZvaWQgdGVzdF93 aWRlICh2b2lkKQoreworICBpbnQgaSA9IFNSICgxLCAyKTsKKworICBjb25zdCB3Y2hhcl90 ICpwMCA9IEwiMTIzIjsKKyAgY29uc3Qgd2NoYXJfdCAqcDEgPSBwMCArIGk7ICAgIC8qIHBv aW50cyBhdCBMJzInIG9yIGJleW9uZCAqLworICBjb25zdCB3Y2hhcl90ICpwMiA9IHAxICsg aTsgICAgLyogcG9pbnRzIGF0IEwnMycgb3IgYmV5b25kICovCisgIGNvbnN0IHdjaGFyX3Qg KnAzID0gcDIgKyBpOyAgICAvKiBwb2ludHMgYXQgTCdcMCcgb3IgYmV5b25kICovCisgIGNv bnN0IHdjaGFyX3QgKnA0ID0gcDMgKyBpOyAgICAvKiBwb2ludHMganVzdCBwYXN0IHRoZSBl bmQgKi8KKyAgY29uc3Qgd2NoYXJfdCAqcDUgPSBwNCArIGk7ICAgIC8qIGludmFsaWQgKi8K KworICBUIChwMFswXSk7CisgIFQgKHAwWzFdKTsKKyAgVCAocDBbMl0pOworICBUIChwMFsz XSk7CisgIFQgKHAwWzRdKTsgICAgICAgICAgICAgICAgICAvKiB7IGRnLWVycm9yICJhcnJh eSBzdWJzY3JpcHQgNCBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuXFthLXogXF0rXFxc WzRdLiIgfSAqLworCisgIFQgKHAxWy0xXSk7CisgIFQgKHAxWyAwXSk7CisgIFQgKHAxWyAx XSk7CisgIFQgKHAxWyAyXSk7CisgIFQgKHAxWyAzXSk7ICAgICAgICAgICAgICAgICAgLyog eyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IDQgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMg b2YgLlxbYS16IFxdK1xcXFs0XS4iIH0gKi8KKworICBUICgmcDFbLTFdKTsKKyAgVCAoJnAx WyAwXSk7CisgIFQgKCZwMVsgMV0pOworICBUICgmcDFbIDJdKTsKKyAgVCAoJnAxWyAzXSk7 CisgIFQgKCZwMVsgNF0pOyAgICAgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkg c3Vic2NyaXB0IFxcXFs1LCA2XSBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuXFthLXog XF0rXFxcWzRdLiIgImJ1ZyIgeyB4ZmFpbCAqLSotKiB9IH0gKi8KKworICBUIChwMlstNV0p OyAgICAgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAiYXJyYXkgc3Vic2NyaXB0IFxcXFst MywgLTFdIGlzIG91dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5cW2EteiBcXStcXFxbNF0uIiB9 ICovCisgIFQgKHAyWy00XSk7CisgIFQgKHAyWy0zXSk7CisgIFQgKHAyWy0yXSk7CisgIFQg KHAyWy0xXSk7CisgIFQgKHAyWyAwXSk7CisKKyAgLyogRXZlbiB0aG91Z2ggdGhlIGxvd2Vy IGJvdW5kIG9mIHAzJ3Mgb2Zmc2V0cyBpcyBpbiBib3VuZHMsIGluIG9yZGVyCisgICAgIHRv IHN1YnRyYWN0IDUgZnJvbSBwMyBhbmQgZ2V0IGEgZGVyZWZlcmVuY2VhYmxlIHBvaW50ZXIg aXRzIHZhbHVlCisgICAgIHdvdWxkIGhhdmUgdG8gYmUgb3V0LW9mLWJvdW5kcy4gICovCisg IFQgKHAzWy01XSk7ICAgICAgICAgICAgICAgICAvKiB7IGRnLWVycm9yICJhcnJheSBzdWJz Y3JpcHQgXFxcWy0yLCAtMVxcXF0gaXMgb3V0c2lkZSBhcnJheSBib3VuZHMgb2YgLlxbYS16 IFxdK1xcXFs0XS4iIH0gKi8KKyAgVCAocDNbLTRdKTsKKyAgVCAocDNbLTNdKTsKKyAgVCAo cDNbLTJdKTsKKyAgVCAocDNbLTFdKTsKKyAgVCAocDNbIDBdKTsKKyAgVCAocDNbIDFdKTsg ICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlwdCA0IGlzIG91 dHNpZGUgYXJyYXkgYm91bmRzIG9mIC5cW2EteiBcXStcXFxbNF0uIiB9ICovCisKKyAgVCAo cDRbLTVdKTsgICAgICAgICAgICAgICAgIC8qIHsgZGctZXJyb3IgImFycmF5IHN1YnNjcmlw dCAtMSBpcyBvdXRzaWRlIGFycmF5IGJvdW5kcyBvZiAuXFthLXogXF0rXFxcWzRdLiIgfSAq LworICBUIChwNFstNF0pOworICBUIChwNFstM10pOworICBUIChwNFstMl0pOworICBUIChw NFstMV0pOworICBUIChwNFsgMF0pOyAgICAgICAgICAgICAgICAgLyogeyBkZy1lcnJvciAi YXJyYXkgc3Vic2NyaXB0IDQgaXMgb3V0c2lkZSBhcnJheSBib3VuZHMgb2YgLlxbYS16IFxd K1xcXFs0XS4iIH0gKi8KK30KKworLyogeyBkZy1tZXNzYWdlICJzb21lIHdhcm5pbmdzIGJl aW5nIHRyZWF0ZWQgYXMgZXJyb3JzIiAiIiB7dGFyZ2V0ICIqLSotKiJ9IDAgfSAqLwotLSAK Mi4zOC4xCgo= --------------jTW0rf6eJG8jfNYewoySBs2p--