From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 61758 invoked by alias); 2 Aug 2019 12:02:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 61745 invoked by uid 89); 2 Aug 2019 12:02:59 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-11.8 required=5.0 tests=AWL,BAYES_00,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_ASCII_DIVIDERS,SPF_HELO_PASS autolearn=ham version=3.3.1 spammy=communicating, UD:cp-tree.h, cptreeh, cp-tree.h X-HELO: userp2120.oracle.com Received: from userp2120.oracle.com (HELO userp2120.oracle.com) (156.151.31.85) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 02 Aug 2019 12:02:55 +0000 Received: from pps.filterd (userp2120.oracle.com [127.0.0.1]) by userp2120.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x72BxGgP184918; Fri, 2 Aug 2019 12:02:52 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : to : references : from : message-id : date : mime-version : in-reply-to : content-type; s=corp-2018-07-02; bh=WoepbQBYjNaeuPn14vvL7Vp8uZhDR7uaTpAkuaFWD4A=; b=SdKflqaGJ6dQwQhsuGsVmYvj+U0Oc40dMkaDuBPPCSPDbH1JLfAvuIidFh3+erAWIys8 Q9ByW6rvKYX7Vg17laVkOF/GV4dB/VVY5R4z8uskZdyoiupU93qSqF5i7Fp5WEqqp7Oz r/U8J28t+bvCJPJI7v786Pp6kzx5kwgIRCjD/NXa42W7kFo//de72ctVh35ZcQb0R/ri /I59OWpKAmhwIIpTxMza2DVZ5jArHsS/pMDmLj+n1shoDdGCbroZ/MheUkMRkgDxdAZX bnHyF+IMWXc+s9btBwhWKZPVocUN9cSou7qhAAdIASt/IC5ADmpGBcIot8gK7FpV2Umq SQ== Received: from aserp3030.oracle.com (aserp3030.oracle.com [141.146.126.71]) by userp2120.oracle.com with ESMTP id 2u0f8rhq70-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 02 Aug 2019 12:02:52 +0000 Received: from pps.filterd (aserp3030.oracle.com [127.0.0.1]) by aserp3030.oracle.com (8.16.0.27/8.16.0.27) with SMTP id x72BwArq012417; Fri, 2 Aug 2019 12:02:51 GMT Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by aserp3030.oracle.com with ESMTP id 2u349exm5y-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 02 Aug 2019 12:02:51 +0000 Received: from abhmp0003.oracle.com (abhmp0003.oracle.com [141.146.116.9]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id x72C2mSA026684; Fri, 2 Aug 2019 12:02:48 GMT Received: from [192.168.1.4] (/95.247.231.7) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Fri, 02 Aug 2019 05:02:48 -0700 Subject: Re: [C++ Patch] Improve delete_sanity locations To: David Malcolm , Jason Merrill , "gcc-patches@gcc.gnu.org" References: <5b89d4fe-88b7-b51b-fc0e-11833bde2c34@oracle.com> <4d895279-d74e-7437-7d7c-30c2bd0927b6@redhat.com> <1564601975.9730.30.camel@redhat.com> From: Paolo Carlini Message-ID: <299893a2-2683-24de-4cf9-f1d3c9421f06@oracle.com> Date: Fri, 02 Aug 2019 12:02:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0 MIME-Version: 1.0 In-Reply-To: <1564601975.9730.30.camel@redhat.com> Content-Type: multipart/mixed; boundary="------------4848BEBBA2608150E87453FD" X-IsSubscribed: yes X-SW-Source: 2019-08/txt/msg00142.txt.bz2 This is a multi-part message in MIME format. --------------4848BEBBA2608150E87453FD Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-length: 545 Hi, On 31/07/19 21:39, David Malcolm wrote: [snip] > I don't care for "cp_expr_loc_or_loc". > > By "_or_here" do you mean "or input_location"? > > Calling it "cp_expr_loc_or_input_location" would spell out what it > does, but would be rather long. Thanks for your feedback. At this point I don't feel very strongly about the issue, and, well, hopefully it's just temporary material, but I tested the below which proposes the name cp_expr_loc_or_input_loc. Seems a good balance to me. What do you think? Cheers, Paolo. ///////////////// --------------4848BEBBA2608150E87453FD Content-Type: text/plain; charset=UTF-8; name="patch_cp_expr_loc_or_input_loc" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="patch_cp_expr_loc_or_input_loc" Content-length: 37170 SW5kZXg6IGNhbGwuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjYWxs LmMJKHJldmlzaW9uIDI3NDAwMSkKKysrIGNhbGwuYwkod29ya2luZyBjb3B5 KQpAQCAtNDE4NCw3ICs0MTg0LDcgQEAgYnVpbGRfY29udmVydGVkX2NvbnN0 YW50X2V4cHJfaW50ZXJuYWwgKHRyZWUgdHlwZSwKICAgY29udmVyc2lvbiAq Y29udjsKICAgdm9pZCAqcDsKICAgdHJlZSB0OwotICBsb2NhdGlvbl90IGxv YyA9IGNwX2V4cHJfbG9jX29yX2xvYyAoZXhwciwgaW5wdXRfbG9jYXRpb24p OworICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xv YyAoZXhwcik7CiAKICAgaWYgKGVycm9yX29wZXJhbmRfcCAoZXhwcikpCiAg ICAgcmV0dXJuIGVycm9yX21hcmtfbm9kZTsKQEAgLTY5NjEsNyArNjk2MSw3 IEBAIGNvbnZlcnRfbGlrZV9yZWFsIChjb252ZXJzaW9uICpjb252cywgdHJl ZSBleHByLCB0CiAgIHRyZWUgdG90eXBlID0gY29udnMtPnR5cGU7CiAgIGRp YWdub3N0aWNfdCBkaWFnX2tpbmQ7CiAgIGludCBmbGFnczsKLSAgbG9jYXRp b25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0X2xv Y2F0aW9uKTsKKyAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9p bnB1dF9sb2MgKGV4cHIpOwogCiAgIGlmIChjb252cy0+YmFkX3AgJiYgIShj b21wbGFpbiAmIHRmX2Vycm9yKSkKICAgICByZXR1cm4gZXJyb3JfbWFya19u b2RlOwpAQCAtNzQ4MSw3ICs3NDgxLDcgQEAgdHJlZQogY29udmVydF9hcmdf dG9fZWxsaXBzaXMgKHRyZWUgYXJnLCB0c3Vic3RfZmxhZ3NfdCBjb21wbGFp bikKIHsKICAgdHJlZSBhcmdfdHlwZTsKLSAgbG9jYXRpb25fdCBsb2MgPSBj cF9leHByX2xvY19vcl9sb2MgKGFyZywgaW5wdXRfbG9jYXRpb24pOworICBs b2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoYXJn KTsKIAogICAvKiBbZXhwci5jYWxsXQogCkBAIC03Nzg5LDcgKzc3ODksNyBA QCBjb252ZXJ0X2Zvcl9hcmdfcGFzc2luZyAodHJlZSB0eXBlLCB0cmVlIHZh bCwgdHN1YgogCQkgICAgICJhcmd1bWVudCBvZiBmdW5jdGlvbiBjYWxsIG1p Z2h0IGJlIGEgY2FuZGlkYXRlICIKIAkJICAgICAiZm9yIGEgZm9ybWF0IGF0 dHJpYnV0ZSIpOwogCX0KLSAgICAgIG1heWJlX3dhcm5fcGFybV9hYmkgKHR5 cGUsIGNwX2V4cHJfbG9jX29yX2xvYyAodmFsLCBpbnB1dF9sb2NhdGlvbikp OworICAgICAgbWF5YmVfd2Fybl9wYXJtX2FiaSAodHlwZSwgY3BfZXhwcl9s b2Nfb3JfaW5wdXRfbG9jICh2YWwpKTsKICAgICB9CiAKICAgaWYgKGNvbXBs YWluICYgdGZfd2FybmluZykKQEAgLTg1OTUsNyArODU5NSw3IEBAIGJ1aWxk X292ZXJfY2FsbCAoc3RydWN0IHpfY2FuZGlkYXRlICpjYW5kLCBpbnQgZmxh CiAgICAgICB0cmVlIHR5cGUgPSBUUkVFX1RZUEUgKHRvKTsKICAgICAgIHRy ZWUgYXNfYmFzZSA9IENMQVNTVFlQRV9BU19CQVNFICh0eXBlKTsKICAgICAg IHRyZWUgYXJnID0gYXJnYXJyYXlbMV07Ci0gICAgICBsb2NhdGlvbl90IGxv YyA9IGNwX2V4cHJfbG9jX29yX2xvYyAoYXJnLCBpbnB1dF9sb2NhdGlvbik7 CisgICAgICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0 X2xvYyAoYXJnKTsKIAogICAgICAgaWYgKGlzX3JlYWxseV9lbXB0eV9jbGFz cyAodHlwZSwgLyppZ25vcmVfdnB0ciovdHJ1ZSkpCiAJewpAQCAtOTE0Myw3 ICs5MTQzLDcgQEAgYnVpbGRfY3h4X2NhbGwgKHRyZWUgZm4sIGludCBuYXJn cywgdHJlZSAqYXJnYXJyYXkKICAgdHJlZSBmbmRlY2w7CiAKICAgLyogUmVt ZW1iZXIgcm91Z2hseSB3aGVyZSB0aGlzIGNhbGwgaXMuICAqLwotICBsb2Nh dGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2xvYyAoZm4sIGlucHV0X2xv Y2F0aW9uKTsKKyAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9p bnB1dF9sb2MgKGZuKTsKICAgZm4gPSBidWlsZF9jYWxsX2EgKGZuLCBuYXJn cywgYXJnYXJyYXkpOwogICBTRVRfRVhQUl9MT0NBVElPTiAoZm4sIGxvYyk7 CiAKQEAgLTExMTgzLDcgKzExMTgzLDcgQEAgcGVyZm9ybV9pbXBsaWNpdF9j b252ZXJzaW9uX2ZsYWdzICh0cmVlIHR5cGUsIHRyZWUKIHsKICAgY29udmVy c2lvbiAqY29udjsKICAgdm9pZCAqcDsKLSAgbG9jYXRpb25fdCBsb2MgPSBj cF9leHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0X2xvY2F0aW9uKTsKKyAg bG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4 cHIpOwogCiAgIGlmIChUWVBFX1JFRl9QICh0eXBlKSkKICAgICBleHByID0g bWFya19sdmFsdWVfdXNlIChleHByKTsKQEAgLTExNTMyLDcgKzExNTMyLDcg QEAgaW5pdGlhbGl6ZV9yZWZlcmVuY2UgKHRyZWUgdHlwZSwgdHJlZSBleHBy LAogewogICBjb252ZXJzaW9uICpjb252OwogICB2b2lkICpwOwotICBsb2Nh dGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2xvYyAoZXhwciwgaW5wdXRf bG9jYXRpb24pOworICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29y X2lucHV0X2xvYyAoZXhwcik7CiAKICAgaWYgKHR5cGUgPT0gZXJyb3JfbWFy a19ub2RlIHx8IGVycm9yX29wZXJhbmRfcCAoZXhwcikpCiAgICAgcmV0dXJu IGVycm9yX21hcmtfbm9kZTsKSW5kZXg6IGNvbnN0ZXhwci5jCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tIGNvbnN0ZXhwci5jCShyZXZpc2lvbiAyNzQw MDEpCisrKyBjb25zdGV4cHIuYwkod29ya2luZyBjb3B5KQpAQCAtMTUyNyw3 ICsxNTI3LDcgQEAgY3h4X2V2YWxfaW50ZXJuYWxfZnVuY3Rpb24gKGNvbnN0 IGNvbnN0ZXhwcl9jdHggKmMKIAogICAgIGRlZmF1bHQ6CiAgICAgICBpZiAo IWN0eC0+cXVpZXQpCi0JZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAo dCwgaW5wdXRfbG9jYXRpb24pLAorCWVycm9yX2F0IChjcF9leHByX2xvY19v cl9pbnB1dF9sb2MgKHQpLAogCQkgICJjYWxsIHRvIGludGVybmFsIGZ1bmN0 aW9uICVxRSIsIHQpOwogICAgICAgKm5vbl9jb25zdGFudF9wID0gdHJ1ZTsK ICAgICAgIHJldHVybiB0OwpAQCAtMTU0Miw3ICsxNTQyLDcgQEAgY3h4X2V2 YWxfaW50ZXJuYWxfZnVuY3Rpb24gKGNvbnN0IGNvbnN0ZXhwcl9jdHggKmMK IAogICBpZiAoVFJFRV9DT0RFIChhcmcwKSA9PSBJTlRFR0VSX0NTVCAmJiBU UkVFX0NPREUgKGFyZzEpID09IElOVEVHRVJfQ1NUKQogICAgIHsKLSAgICAg IGxvY2F0aW9uX3QgbG9jID0gY3BfZXhwcl9sb2Nfb3JfbG9jICh0LCBpbnB1 dF9sb2NhdGlvbik7CisgICAgICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJf bG9jX29yX2lucHV0X2xvYyAodCk7CiAgICAgICB0cmVlIHR5cGUgPSBUUkVF X1RZUEUgKFRSRUVfVFlQRSAodCkpOwogICAgICAgdHJlZSByZXN1bHQgPSBm b2xkX2JpbmFyeV9sb2MgKGxvYywgb3Bjb2RlLCB0eXBlLAogCQkJCSAgICAg Zm9sZF9jb252ZXJ0X2xvYyAobG9jLCB0eXBlLCBhcmcwKSwKQEAgLTE1ODQs NyArMTU4NCw3IEBAIGN4eF9ldmFsX2NhbGxfZXhwcmVzc2lvbiAoY29uc3Qg Y29uc3RleHByX2N0eCAqY3R4CiAJCQkgIGJvb2wgbHZhbCwKIAkJCSAgYm9v bCAqbm9uX2NvbnN0YW50X3AsIGJvb2wgKm92ZXJmbG93X3ApCiB7Ci0gIGxv Y2F0aW9uX3QgbG9jID0gY3BfZXhwcl9sb2Nfb3JfbG9jICh0LCBpbnB1dF9s b2NhdGlvbik7CisgIGxvY2F0aW9uX3QgbG9jID0gY3BfZXhwcl9sb2Nfb3Jf aW5wdXRfbG9jICh0KTsKICAgdHJlZSBmdW4gPSBnZXRfZnVuY3Rpb25fbmFt ZWRfaW5fY2FsbCAodCk7CiAgIGNvbnN0ZXhwcl9jYWxsIG5ld19jYWxsCiAg ICAgPSB7IE5VTEwsIE5VTEwsIE5VTEwsIDAsIGN0eC0+bWFuaWZlc3RseV9j b25zdF9ldmFsIH07CkBAIC0yNTgwLDcgKzI1ODAsNyBAQCBldmFsX2FuZF9j aGVja19hcnJheV9pbmRleCAoY29uc3QgY29uc3RleHByX2N0eCAqYwogCQkJ ICAgIHRyZWUgdCwgYm9vbCBhbGxvd19vbmVfcGFzdCwKIAkJCSAgICBib29s ICpub25fY29uc3RhbnRfcCwgYm9vbCAqb3ZlcmZsb3dfcCkKIHsKLSAgbG9j YXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9sb2MgKHQsIGlucHV0X2xv Y2F0aW9uKTsKKyAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9p bnB1dF9sb2MgKHQpOwogICB0cmVlIGFyeSA9IFRSRUVfT1BFUkFORCAodCwg MCk7CiAgIHQgPSBUUkVFX09QRVJBTkQgKHQsIDEpOwogICB0cmVlIGluZGV4 ID0gY3h4X2V2YWxfY29uc3RhbnRfZXhwcmVzc2lvbiAoY3R4LCB0LCBmYWxz ZSwKQEAgLTM5MDksNyArMzkwOSw3IEBAIGN4eF9ldmFsX3N0b3JlX2V4cHJl c3Npb24gKGNvbnN0IGNvbnN0ZXhwcl9jdHggKmN0CiAJICAgICAgaWYgKGN4 eF9kaWFsZWN0IDwgY3h4MmEpCiAJCXsKIAkJICBpZiAoIWN0eC0+cXVpZXQp Ci0JCSAgICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3JfbG9jICh0LCBpbnB1 dF9sb2NhdGlvbiksCisJCSAgICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3Jf aW5wdXRfbG9jICh0KSwKIAkJCSAgICAgICJjaGFuZ2Ugb2YgdGhlIGFjdGl2 ZSBtZW1iZXIgb2YgYSB1bmlvbiAiCiAJCQkgICAgICAiZnJvbSAlcUQgdG8g JXFEIiwKIAkJCSAgICAgIENPTlNUUlVDVE9SX0VMVCAoKnZhbHAsIDApLT5p bmRleCwKQEAgLTQyMjAsNyArNDIyMCw3IEBAIGN4eF9ldmFsX3N0YXRlbWVu dF9saXN0IChjb25zdCBjb25zdGV4cHJfY3R4ICpjdHgsCiAgICAgICAvKiBX ZSBhcmVuJ3QgY29tbXVuaWNhdGluZyB0aGUganVtcCB0byBvdXIgY2FsbGVy LCBzbyBnaXZlIHVwLiAgV2UgZG9uJ3QKIAkgbmVlZCB0byBzdXBwb3J0IGV2 YWx1YXRpb24gb2YganVtcHMgb3V0IG9mIHN0YXRlbWVudC1leHBycy4gICov CiAgICAgICBpZiAoIWN0eC0+cXVpZXQpCi0JZXJyb3JfYXQgKGNwX2V4cHJf bG9jX29yX2xvYyAociwgaW5wdXRfbG9jYXRpb24pLAorCWVycm9yX2F0IChj cF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHIpLAogCQkgICJzdGF0ZW1lbnQg aXMgbm90IGEgY29uc3RhbnQgZXhwcmVzc2lvbiIpOwogICAgICAgKm5vbl9j b25zdGFudF9wID0gdHJ1ZTsKICAgICB9CkBAIC00MzIwLDcgKzQzMjAsNyBA QCBjeHhfZXZhbF9sb29wX2V4cHIgKGNvbnN0IGNvbnN0ZXhwcl9jdHggKmN0 eCwgdHJlZQogICAgICAgaWYgKCsrY291bnQgPj0gY29uc3RleHByX2xvb3Bf bGltaXQpCiAJewogCSAgaWYgKCFjdHgtPnF1aWV0KQotCSAgICBlcnJvcl9h dCAoY3BfZXhwcl9sb2Nfb3JfbG9jICh0LCBpbnB1dF9sb2NhdGlvbiksCisJ ICAgIGVycm9yX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHQpLAog CQkgICAgICAiJTxjb25zdGV4cHIlPiBsb29wIGl0ZXJhdGlvbiBjb3VudCBl eGNlZWRzIGxpbWl0IG9mICVkICIKIAkJICAgICAgIih1c2UgJTwtZmNvbnN0 ZXhwci1sb29wLWxpbWl0PSU+IHRvIGluY3JlYXNlIHRoZSBsaW1pdCkiLAog CQkgICAgICBjb25zdGV4cHJfbG9vcF9saW1pdCk7CkBAIC00NDgyLDcgKzQ0 ODIsNyBAQCBjeHhfZXZhbF9jb25zdGFudF9leHByZXNzaW9uIChjb25zdCBj b25zdGV4cHJfY3R4CiAgIGlmICgrKypjdHgtPmNvbnN0ZXhwcl9vcHNfY291 bnQgPj0gY29uc3RleHByX29wc19saW1pdCkKICAgICB7CiAgICAgICBpZiAo IWN0eC0+cXVpZXQpCi0JZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAo dCwgaW5wdXRfbG9jYXRpb24pLAorCWVycm9yX2F0IChjcF9leHByX2xvY19v cl9pbnB1dF9sb2MgKHQpLAogCQkgICIlPGNvbnN0ZXhwciU+IGV2YWx1YXRp b24gb3BlcmF0aW9uIGNvdW50IGV4Y2VlZHMgbGltaXQgb2YgIgogCQkgICIl d2QgKHVzZSAlPC1mY29uc3RleHByLW9wcy1saW1pdD0lPiB0byBpbmNyZWFz ZSB0aGUgbGltaXQpIiwKIAkJICBjb25zdGV4cHJfb3BzX2xpbWl0KTsKQEAg LTUwMzYsNyArNTAzNiw3IEBAIGN4eF9ldmFsX2NvbnN0YW50X2V4cHJlc3Np b24gKGNvbnN0IGNvbnN0ZXhwcl9jdHgKICAgICAgIGlmIChSRUlOVEVSUFJF VF9DQVNUX1AgKHQpKQogCXsKIAkgIGlmICghY3R4LT5xdWlldCkKLQkgICAg ZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAodCwgaW5wdXRfbG9jYXRp b24pLAorCSAgICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9j ICh0KSwKIAkJICAgICAgIiU8cmVpbnRlcnByZXRfY2FzdCU+IGlzIG5vdCBh IGNvbnN0YW50IGV4cHJlc3Npb24iKTsKIAkgICpub25fY29uc3RhbnRfcCA9 IHRydWU7CiAJICByZXR1cm4gdDsKQEAgLTUwNzcsNyArNTA3Nyw3IEBAIGN4 eF9ldmFsX2NvbnN0YW50X2V4cHJlc3Npb24gKGNvbnN0IGNvbnN0ZXhwcl9j dHgKIAkJaWYgKFRZUEVfUkVGX1AgKHR5cGUpKQogCQkgIHsKIAkJICAgIGlm ICghY3R4LT5xdWlldCkKLQkJICAgICAgZXJyb3JfYXQgKGNwX2V4cHJfbG9j X29yX2xvYyAodCwgaW5wdXRfbG9jYXRpb24pLAorCQkgICAgICBlcnJvcl9h dCAoY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9jICh0KSwKIAkJCQkiZGVyZWZl cmVuY2luZyBhIG51bGwgcG9pbnRlciIpOwogCQkgICAgKm5vbl9jb25zdGFu dF9wID0gdHJ1ZTsKIAkJICAgIHJldHVybiB0OwpAQCAtNTA4OSw3ICs1MDg5 LDcgQEAgY3h4X2V2YWxfY29uc3RhbnRfZXhwcmVzc2lvbiAoY29uc3QgY29u c3RleHByX2N0eAogCQkgICAgaWYgKCFjYW5fY29udmVydCAodHlwZSwgZnJv bSwgdGZfbm9uZSkpCiAJCSAgICAgIHsKIAkJCWlmICghY3R4LT5xdWlldCkK LQkJCSAgZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAodCwgaW5wdXRf bG9jYXRpb24pLAorCQkJICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3JfaW5w dXRfbG9jICh0KSwKIAkJCQkgICAgImNvbnZlcnNpb24gb2YgJXFUIG51bGwg cG9pbnRlciB0byAlcVQgIgogCQkJCSAgICAiaXMgbm90IGEgY29uc3RhbnQg ZXhwcmVzc2lvbiIsCiAJCQkJICAgIGZyb20sIHR5cGUpOwpAQCAtNTEwNCw3 ICs1MTA0LDcgQEAgY3h4X2V2YWxfY29uc3RhbnRfZXhwcmVzc2lvbiAoY29u c3QgY29uc3RleHByX2N0eAogCQkgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p ZCo+KHNpemVvZiAwKQogCQkqLwogCQlpZiAoIWN0eC0+cXVpZXQpCi0JCSAg ZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAodCwgaW5wdXRfbG9jYXRp b24pLAorCQkgIGVycm9yX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2Mg KHQpLAogCQkJICAgICIlPHJlaW50ZXJwcmV0X2Nhc3Q8JVQ+KCVFKSU+IGlz IG5vdCAiCiAJCQkgICAgImEgY29uc3RhbnQgZXhwcmVzc2lvbiIsCiAJCQkg ICAgdHlwZSwgb3ApOwpAQCAtNTE3OCw3ICs1MTc4LDcgQEAgY3h4X2V2YWxf Y29uc3RhbnRfZXhwcmVzc2lvbiAoY29uc3QgY29uc3RleHByX2N0eAogICAg IGNhc2UgQkFTRUxJTks6CiAgICAgY2FzZSBPRkZTRVRfUkVGOgogICAgICAg aWYgKCFjdHgtPnF1aWV0KQotICAgICAgICBlcnJvcl9hdCAoY3BfZXhwcl9s b2Nfb3JfbG9jICh0LCBpbnB1dF9sb2NhdGlvbiksCisgICAgICAgIGVycm9y X2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHQpLAogCQkgICJleHBy ZXNzaW9uICVxRSBpcyBub3QgYSBjb25zdGFudCBleHByZXNzaW9uIiwgdCk7 CiAgICAgICAqbm9uX2NvbnN0YW50X3AgPSB0cnVlOwogICAgICAgYnJlYWs7 CkBAIC01MTk2LDcgKzUxOTYsNyBAQCBjeHhfZXZhbF9jb25zdGFudF9leHBy ZXNzaW9uIChjb25zdCBjb25zdGV4cHJfY3R4CiAJICAgIHx8ICFERUNMX1Ag KGdldF9iYXNlX2FkZHJlc3MgKFRSRUVfT1BFUkFORCAob2JqLCAwKSkpKQog CSAgewogCSAgICBpZiAoIWN0eC0+cXVpZXQpCi0JICAgICAgZXJyb3JfYXQg KGNwX2V4cHJfbG9jX29yX2xvYyAodCwgaW5wdXRfbG9jYXRpb24pLAorCSAg ICAgIGVycm9yX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHQpLAog CQkJImV4cHJlc3Npb24gJXFFIGlzIG5vdCBhIGNvbnN0YW50IGV4cHJlc3Np b24iLCB0KTsKIAkgICAgKm5vbl9jb25zdGFudF9wID0gdHJ1ZTsKIAkgICAg cmV0dXJuIHQ7CkBAIC01OTYwLDcgKzU5NjAsNyBAQCBwb3RlbnRpYWxfY29u c3RhbnRfZXhwcmVzc2lvbl8xICh0cmVlIHQsIGJvb2wgd2FudAogICAgIHJl dHVybiBmYWxzZTsKICAgaWYgKHQgPT0gTlVMTF9UUkVFKQogICAgIHJldHVy biB0cnVlOwotICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2xv YyAodCwgaW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90IGxvYyA9IGNw X2V4cHJfbG9jX29yX2lucHV0X2xvYyAodCk7CiAKICAgaWYgKCpqdW1wX3Rh cmdldCkKICAgICAvKiBJZiB3ZSBhcmUganVtcGluZywgaWdub3JlIGV2ZXJ5 dGhpbmcuICBUaGlzIGlzIHNpbXBsZXIgdGhhbiB0aGUKSW5kZXg6IGNvbnN0 cmFpbnQuY2MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY29uc3RyYWlu dC5jYwkocmV2aXNpb24gMjc0MDAxKQorKysgY29uc3RyYWludC5jYwkod29y a2luZyBjb3B5KQpAQCAtODA1LDcgKzgwNSw3IEBAIGNoZWNrX2Zvcl9sb2dp Y2FsX292ZXJsb2FkcyAodHJlZSB0KQogCiAgIGlmIChERUNMX09WRVJMT0FE RURfT1BFUkFUT1JfUCAoZm4pKQogICAgIHsKLSAgICAgIGxvY2F0aW9uX3Qg bG9jID0gY3BfZXhwcl9sb2Nfb3JfbG9jICh0LCBpbnB1dF9sb2NhdGlvbik7 CisgICAgICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0 X2xvYyAodCk7CiAgICAgICBlcnJvcl9hdCAobG9jLCAiY29uc3RyYWludCAl cUUsIHVzZXMgb3ZlcmxvYWRlZCBvcGVyYXRvciIsIHQpOwogICAgICAgcmV0 dXJuIHRydWU7CiAgICAgfQpAQCAtMjAxNiw3ICsyMDE2LDcgQEAgc2F0aXNm eV9wcmVkaWNhdGVfY29uc3RyYWludCAodHJlZSB0LCB0cmVlIGFyZ3MsCiAg IHRyZWUgdHlwZSA9IGN2X3VucXVhbGlmaWVkIChUUkVFX1RZUEUgKGV4cHIp KTsKICAgaWYgKCFzYW1lX3R5cGVfcCAodHlwZSwgYm9vbGVhbl90eXBlX25v ZGUpKQogICAgIHsKLSAgICAgIGVycm9yX2F0IChjcF9leHByX2xvY19vcl9s b2MgKGV4cHIsIGlucHV0X2xvY2F0aW9uKSwKKyAgICAgIGVycm9yX2F0IChj cF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4cHIpLAogICAgICAgICAgICAg ICAgICJjb25zdHJhaW50ICVxRSBkb2VzIG5vdCBoYXZlIHR5cGUgJXFUIiwK ICAgICAgICAgICAgICAgICBleHByLCBib29sZWFuX3R5cGVfbm9kZSk7CiAg ICAgICByZXR1cm4gYm9vbGVhbl9mYWxzZV9ub2RlOwpJbmRleDogY3AtZ2lt cGxpZnkuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjcC1naW1wbGlm eS5jCShyZXZpc2lvbiAyNzQwMDEpCisrKyBjcC1naW1wbGlmeS5jCSh3b3Jr aW5nIGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAgaW50CiBjcF9naW1wbGlm eV9leHByICh0cmVlICpleHByX3AsIGdpbXBsZV9zZXEgKnByZV9wLCBnaW1w bGVfc2VxICpwb3N0X3ApCiB7CiAgIGludCBzYXZlZF9zdG10c19hcmVfZnVs bF9leHByc19wID0gMDsKLSAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xv Y19vcl9sb2MgKCpleHByX3AsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9jYXRp b25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKCpleHByX3Ap OwogICBlbnVtIHRyZWVfY29kZSBjb2RlID0gVFJFRV9DT0RFICgqZXhwcl9w KTsKICAgZW51bSBnaW1wbGlmeV9zdGF0dXMgcmV0OwogCkluZGV4OiBjcC10 cmVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY3AtdHJlZS5oCShy ZXZpc2lvbiAyNzQwMDEpCisrKyBjcC10cmVlLmgJKHdvcmtpbmcgY29weSkK QEAgLTc1MDksMTEgKzc1MDksMTcgQEAgY3BfZXhwcl9sb2Nfb3JfbG9jIChj b25zdF90cmVlIHQsIGxvY2F0aW9uX3Qgb3JfbG8KICAgcmV0dXJuIGxvYzsK IH0KIAoraW5saW5lIGxvY2F0aW9uX3QKK2NwX2V4cHJfbG9jX29yX2lucHV0 X2xvYyAoY29uc3RfdHJlZSB0KQoreworICByZXR1cm4gY3BfZXhwcl9sb2Nf b3JfbG9jICh0LCBpbnB1dF9sb2NhdGlvbik7Cit9CisKIGlubGluZSB2b2lk CiBjeHhfaW5jb21wbGV0ZV90eXBlX2RpYWdub3N0aWMgKGNvbnN0X3RyZWUg dmFsdWUsIGNvbnN0X3RyZWUgdHlwZSwKIAkJCQlkaWFnbm9zdGljX3QgZGlh Z19raW5kKQogewotICBjeHhfaW5jb21wbGV0ZV90eXBlX2RpYWdub3N0aWMg KGNwX2V4cHJfbG9jX29yX2xvYyAodmFsdWUsIGlucHV0X2xvY2F0aW9uKSwK KyAgY3h4X2luY29tcGxldGVfdHlwZV9kaWFnbm9zdGljIChjcF9leHByX2xv Y19vcl9pbnB1dF9sb2MgKHZhbHVlKSwKIAkJCQkgIHZhbHVlLCB0eXBlLCBk aWFnX2tpbmQpOwogfQogCkluZGV4OiBjdnQuYwo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBjdnQuYwkocmV2aXNpb24gMjc0MDAxKQorKysgY3Z0LmMJ KHdvcmtpbmcgY29weSkKQEAgLTc3LDcgKzc3LDcgQEAgY3BfY29udmVydF90 b19wb2ludGVyICh0cmVlIHR5cGUsIHRyZWUgZXhwciwgYm9vbAogICB0cmVl IGludHlwZSA9IFRSRUVfVFlQRSAoZXhwcik7CiAgIGVudW0gdHJlZV9jb2Rl IGZvcm07CiAgIHRyZWUgcnZhbDsKLSAgbG9jYXRpb25fdCBsb2MgPSBjcF9l eHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9j YXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4cHIp OwogCiAgIGlmIChpbnR5cGUgPT0gZXJyb3JfbWFya19ub2RlKQogICAgIHJl dHVybiBlcnJvcl9tYXJrX25vZGU7CkBAIC00MTksNyArNDE5LDcgQEAgY29u dmVydF90b19yZWZlcmVuY2UgKHRyZWUgcmVmdHlwZSwgdHJlZSBleHByLCBp bnQKICAgdHJlZSBydmFsID0gTlVMTF9UUkVFOwogICB0cmVlIHJ2YWxfYXNf Y29udmVyc2lvbiA9IE5VTExfVFJFRTsKICAgYm9vbCBjYW5fY29udmVydF9p bnR5cGVfdG9fdHlwZTsKLSAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xv Y19vcl9sb2MgKGV4cHIsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9jYXRpb25f dCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4cHIpOwogCiAg IGlmIChUUkVFX0NPREUgKHR5cGUpID09IEZVTkNUSU9OX1RZUEUKICAgICAg ICYmIFRSRUVfVFlQRSAoZXhwcikgPT0gdW5rbm93bl90eXBlX25vZGUpCkBA IC02NzEsNyArNjcxLDcgQEAgY3BfY29udmVydF9hbmRfY2hlY2sgKHRyZWUg dHlwZSwgdHJlZSBleHByLCB0c3Vic3QKICAgICAgIGZvbGRlZF9yZXN1bHQg PSBmb2xkX3NpbXBsZSAoZm9sZGVkX3Jlc3VsdCk7CiAgICAgICBpZiAoIVRS RUVfT1ZFUkZMT1dfUCAoZm9sZGVkKQogCSAgJiYgZm9sZGVkX3Jlc3VsdCAh PSBlcnJvcl9tYXJrX25vZGUpCi0Jd2FybmluZ3NfZm9yX2NvbnZlcnRfYW5k X2NoZWNrIChjcF9leHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0X2xvY2F0 aW9uKSwKKwl3YXJuaW5nc19mb3JfY29udmVydF9hbmRfY2hlY2sgKGNwX2V4 cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwciksCiAJCQkJCXR5cGUsIGZvbGRl ZCwgZm9sZGVkX3Jlc3VsdCk7CiAgICAgfQogCkBAIC02OTAsNyArNjkwLDcg QEAgb2NwX2NvbnZlcnQgKHRyZWUgdHlwZSwgdHJlZSBleHByLCBpbnQgY29u dnR5cGUsIGkKICAgZW51bSB0cmVlX2NvZGUgY29kZSA9IFRSRUVfQ09ERSAo dHlwZSk7CiAgIGNvbnN0IGNoYXIgKmludmFsaWRfY29udl9kaWFnOwogICB0 cmVlIGUxOwotICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2xv YyAoZXhwciwgaW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90IGxvYyA9 IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwcik7CiAgIGJvb2wgZG9m b2xkID0gKGNvbnZ0eXBlICYgQ09OVl9GT0xEKTsKIAogICBpZiAoZXJyb3Jf b3BlcmFuZF9wIChlKSB8fCB0eXBlID09IGVycm9yX21hcmtfbm9kZSkKQEAg LTEwMTMsNyArMTAxMyw3IEBAIG1heWJlX3dhcm5fbm9kaXNjYXJkICh0cmVl IGV4cHIsIGltcGxfY29udl92b2lkIGltCiAgIHRyZWUgY2FsbCA9IGV4cHI7 CiAgIGlmIChUUkVFX0NPREUgKGV4cHIpID09IFRBUkdFVF9FWFBSKQogICAg IGNhbGwgPSBUQVJHRVRfRVhQUl9JTklUSUFMIChleHByKTsKLSAgbG9jYXRp b25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9sb2MgKGNhbGwsIGlucHV0X2xv Y2F0aW9uKTsKKyAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9p bnB1dF9sb2MgKGNhbGwpOwogICB0cmVlIGNhbGxlZSA9IGNwX2dldF9jYWxs ZWUgKGNhbGwpOwogICBpZiAoIWNhbGxlZSkKICAgICByZXR1cm47CkBAIC0x MDkzLDcgKzEwOTMsNyBAQCBtYXliZV93YXJuX25vZGlzY2FyZCAodHJlZSBl eHByLCBpbXBsX2NvbnZfdm9pZCBpbQogdHJlZQogY29udmVydF90b192b2lk ICh0cmVlIGV4cHIsIGltcGxfY29udl92b2lkIGltcGxpY2l0LCB0c3Vic3Rf ZmxhZ3NfdCBjb21wbGFpbikKIHsKLSAgbG9jYXRpb25fdCBsb2MgPSBjcF9l eHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9j YXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4cHIp OwogCiAgIGlmIChleHByID09IGVycm9yX21hcmtfbm9kZQogICAgICAgfHwg VFJFRV9UWVBFIChleHByKSA9PSBlcnJvcl9tYXJrX25vZGUpCkluZGV4OiBk ZWNsLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZGVjbC5jCShyZXZp c2lvbiAyNzQwMDEpCisrKyBkZWNsLmMJKHdvcmtpbmcgY29weSkKQEAgLTM1 NjAsNyArMzU2MCw3IEBAIHBvcF9zd2l0Y2ggKHZvaWQpCiAgIGxvY2F0aW9u X3Qgc3dpdGNoX2xvY2F0aW9uOwogCiAgIC8qIEVtaXQgd2FybmluZ3MgYXMg bmVlZGVkLiAgKi8KLSAgc3dpdGNoX2xvY2F0aW9uID0gY3BfZXhwcl9sb2Nf b3JfbG9jIChjcy0+c3dpdGNoX3N0bXQsIGlucHV0X2xvY2F0aW9uKTsKKyAg c3dpdGNoX2xvY2F0aW9uID0gY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9jIChj cy0+c3dpdGNoX3N0bXQpOwogICBjb25zdCBib29sIGJvb2xfY29uZF9wCiAg ICAgPSAoU1dJVENIX1NUTVRfVFlQRSAoY3MtPnN3aXRjaF9zdG10KQogICAg ICAgICYmIFRSRUVfQ09ERSAoU1dJVENIX1NUTVRfVFlQRSAoY3MtPnN3aXRj aF9zdG10KSkgPT0gQk9PTEVBTl9UWVBFKTsKSW5kZXg6IGRlY2wyLmMKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0gZGVjbDIuYwkocmV2aXNpb24gMjc0 MDAxKQorKysgZGVjbDIuYwkod29ya2luZyBjb3B5KQpAQCAtNDg5LDcgKzQ4 OSw3IEBAIGRlbGV0ZV9zYW5pdHkgKHRyZWUgZXhwLCB0cmVlIHNpemUsIGJv b2wgZG9pbmdfdmVjCiAgIC8qIEFuIGFycmF5IGNhbid0IGhhdmUgYmVlbiBh bGxvY2F0ZWQgYnkgbmV3LCBzbyBjb21wbGFpbi4gICovCiAgIGlmIChUUkVF X0NPREUgKFRSRUVfVFlQRSAoZXhwKSkgPT0gQVJSQVlfVFlQRQogICAgICAg JiYgKGNvbXBsYWluICYgdGZfd2FybmluZykpCi0gICAgd2FybmluZ19hdCAo Y3BfZXhwcl9sb2Nfb3JfbG9jIChleHAsIGlucHV0X2xvY2F0aW9uKSwgMCwK KyAgICB3YXJuaW5nX2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGV4 cCksIDAsCiAJCSJkZWxldGluZyBhcnJheSAlcSNFIiwgZXhwKTsKIAogICB0 ID0gYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24gKFdBTlRfUE9JTlRFUiwg ZXhwLCB0cnVlKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCBkZWxldGVfc2FuaXR5 ICh0cmVlIGV4cCwgdHJlZSBzaXplLCBib29sIGRvaW5nX3ZlYwogICBpZiAo dCA9PSBOVUxMX1RSRUUgfHwgdCA9PSBlcnJvcl9tYXJrX25vZGUpCiAgICAg ewogICAgICAgaWYgKGNvbXBsYWluICYgdGZfZXJyb3IpCi0JZXJyb3JfYXQg KGNwX2V4cHJfbG9jX29yX2xvYyAoZXhwLCBpbnB1dF9sb2NhdGlvbiksCisJ ZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwKSwKIAkJ ICAidHlwZSAlcSNUIGFyZ3VtZW50IGdpdmVuIHRvICU8ZGVsZXRlJT4sIGV4 cGVjdGVkIHBvaW50ZXIiLAogCQkgIFRSRUVfVFlQRSAoZXhwKSk7CiAgICAg ICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwpAQCAtNTExLDcgKzUxMSw3IEBA IGRlbGV0ZV9zYW5pdHkgKHRyZWUgZXhwLCB0cmVlIHNpemUsIGJvb2wgZG9p bmdfdmVjCiAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodHlwZSkpID09 IEZVTkNUSU9OX1RZUEUpCiAgICAgewogICAgICAgaWYgKGNvbXBsYWluICYg dGZfZXJyb3IpCi0JZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29yX2xvYyAoZXhw LCBpbnB1dF9sb2NhdGlvbiksCisJZXJyb3JfYXQgKGNwX2V4cHJfbG9jX29y X2lucHV0X2xvYyAoZXhwKSwKIAkJICAiY2Fubm90IGRlbGV0ZSBhIGZ1bmN0 aW9uLiAgT25seSBwb2ludGVyLXRvLW9iamVjdHMgYXJlICIKIAkJICAidmFs aWQgYXJndW1lbnRzIHRvICU8ZGVsZXRlJT4iKTsKICAgICAgIHJldHVybiBl cnJvcl9tYXJrX25vZGU7CkBAIC01MjEsOCArNTIxLDcgQEAgZGVsZXRlX3Nh bml0eSAodHJlZSBleHAsIHRyZWUgc2l6ZSwgYm9vbCBkb2luZ192ZWMKICAg aWYgKFZPSURfVFlQRV9QIChUUkVFX1RZUEUgKHR5cGUpKSkKICAgICB7CiAg ICAgICBpZiAoY29tcGxhaW4gJiB0Zl93YXJuaW5nKQotCXdhcm5pbmdfYXQg KGNwX2V4cHJfbG9jX29yX2xvYyAoZXhwLCBpbnB1dF9sb2NhdGlvbiksCi0J CSAgICBPUFRfV2RlbGV0ZV9pbmNvbXBsZXRlLAorCXdhcm5pbmdfYXQgKGNw X2V4cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwKSwgT1BUX1dkZWxldGVfaW5j b21wbGV0ZSwKIAkJICAgICJkZWxldGluZyAlcVQgaXMgdW5kZWZpbmVkIiwg dHlwZSk7CiAgICAgICBkb2luZ192ZWMgPSAwOwogICAgIH0KSW5kZXg6IGVy cm9yLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZXJyb3IuYwkocmV2 aXNpb24gMjc0MDAxKQorKysgZXJyb3IuYwkod29ya2luZyBjb3B5KQpAQCAt MzA1Myw3ICszMDUzLDcgQEAgbG9jYXRpb25fb2YgKHRyZWUgdCkKICAgICBy ZXR1cm4gREVDTF9TT1VSQ0VfTE9DQVRJT04gKHQpOwogICBpZiAoVFJFRV9D T0RFICh0KSA9PSBERUZFUlJFRF9QQVJTRSkKICAgICByZXR1cm4gZGVmcGFy c2VfbG9jYXRpb24gKHQpOwotICByZXR1cm4gY3BfZXhwcl9sb2Nfb3JfbG9j ICh0LCBpbnB1dF9sb2NhdGlvbik7CisgIHJldHVybiBjcF9leHByX2xvY19v cl9pbnB1dF9sb2MgKHQpOwogfQogCiAvKiBOb3cgdGhlIGludGVyZmFjZXMg ZnJvbSBlcnJvciBldCBhbCB0byBkdW1wX3R5cGUgZXQgYWwuIEVhY2ggdGFr ZXMgYW4KSW5kZXg6IGluaXQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LSBpbml0LmMJKHJldmlzaW9uIDI3NDAwMSkKKysrIGluaXQuYwkod29ya2lu ZyBjb3B5KQpAQCAtNzQ5LDcgKzc0OSw3IEBAIG1heWJlX3dhcm5fbGlzdF9j dG9yICh0cmVlIG1lbWJlciwgdHJlZSBpbml0KQogICBpZiAoIWJlZ2luKQog ICAgIHJldHVybjsKIAotICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9j X29yX2xvYyAoaW5pdCwgaW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90 IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoaW5pdCk7CiAgIHdh cm5pbmdfYXQgKGxvYywgT1BUX1dpbml0X2xpc3RfbGlmZXRpbWUsCiAJICAg ICAiaW5pdGlhbGl6aW5nICVxRCBmcm9tICVxRSBkb2VzIG5vdCBleHRlbmQg dGhlIGxpZmV0aW1lICIKIAkgICAgICJvZiB0aGUgdW5kZXJseWluZyBhcnJh eSIsIG1lbWJlciwgYmVnaW4pOwpAQCAtMTc0OSw3ICsxNzQ5LDcgQEAgYnVp bGRfYWdncl9pbml0ICh0cmVlIGV4cCwgdHJlZSBpbml0LCBpbnQgZmxhZ3Ms IHQKICAgICByZXR1cm4gZXJyb3JfbWFya19ub2RlOwogCiAgIGxvY2F0aW9u X3QgaW5pdF9sb2MgPSAoaW5pdAotCQkJID8gY3BfZXhwcl9sb2Nfb3JfbG9j IChpbml0LCBpbnB1dF9sb2NhdGlvbikKKwkJCSA/IGNwX2V4cHJfbG9jX29y X2lucHV0X2xvYyAoaW5pdCkKIAkJCSA6IGxvY2F0aW9uX29mIChleHApKTsK IAogICBUUkVFX1JFQURPTkxZIChleHApID0gMDsKQEAgLTI1NzgsNyArMjU3 OCw3IEBAIGZpbmRfZmxleGFycmF5X2luaXQgKHRyZWUgdCwgdHJlZSBpbml0 KQogc3RhdGljIHZvaWQKIHdhcm5fcGxhY2VtZW50X25ld190b29fc21hbGwg KHRyZWUgdHlwZSwgdHJlZSBuZWx0cywgdHJlZSBzaXplLCB0cmVlIG9wZXIp CiB7Ci0gIGxvY2F0aW9uX3QgbG9jID0gY3BfZXhwcl9sb2Nfb3JfbG9jIChv cGVyLCBpbnB1dF9sb2NhdGlvbik7CisgIGxvY2F0aW9uX3QgbG9jID0gY3Bf ZXhwcl9sb2Nfb3JfaW5wdXRfbG9jIChvcGVyKTsKIAogICAvKiBUaGUgbnVt YmVyIG9mIGJ5dGVzIHRvIGFkZCB0byBvciBzdWJ0cmFjdCBmcm9tIHRoZSBz aXplIG9mIHRoZSBwcm92aWRlZAogICAgICBidWZmZXIgYmFzZWQgb24gYW4g b2Zmc2V0IGludG8gYW4gYXJyYXkgb3IgYW4gYXJyYXkgZWxlbWVudCByZWZl cmVuY2UuCkBAIC0yOTc1LDcgKzI5NzUsNyBAQCBidWlsZF9uZXdfMSAodmVj PHRyZWUsIHZhX2djPiAqKnBsYWNlbWVudCwgdHJlZSB0eQogCXsKIAkgIGlm IChjb21wbGFpbiAmIHRmX2Vycm9yKQogCSAgICB7Ci0JICAgICAgZXJyb3Jf YXQgKGNwX2V4cHJfbG9jX29yX2xvYyAoaW5uZXJfbmVsdHMsIGlucHV0X2xv Y2F0aW9uKSwKKwkgICAgICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3JfaW5w dXRfbG9jIChpbm5lcl9uZWx0cyksCiAJCQkiYXJyYXkgc2l6ZSBpbiBuZXct ZXhwcmVzc2lvbiBtdXN0IGJlIGNvbnN0YW50Iik7CiAJICAgICAgY3h4X2Nv bnN0YW50X3ZhbHVlKGlubmVyX25lbHRzKTsKIAkgICAgfQpAQCAtMzAwNCw3 ICszMDA0LDcgQEAgYnVpbGRfbmV3XzEgKHZlYzx0cmVlLCB2YV9nYz4gKipw bGFjZW1lbnQsIHRyZWUgdHkKICAgICB7CiAgICAgICBpZiAoY29tcGxhaW4g JiB0Zl93YXJuaW5nX29yX2Vycm9yKQogCXsKLQkgIHBlZHdhcm4gKGNwX2V4 cHJfbG9jX29yX2xvYyAob3V0ZXJfbmVsdHMsIGlucHV0X2xvY2F0aW9uKSwg T1BUX1d2bGEsCisJICBwZWR3YXJuIChjcF9leHByX2xvY19vcl9pbnB1dF9s b2MgKG91dGVyX25lbHRzKSwgT1BUX1d2bGEsCiAJCSAgIHR5cGVkZWZfdmFy aWFudF9wIChvcmlnX3R5cGUpCiAJCSAgID8gR18oIm5vbi1jb25zdGFudCBh cnJheSBuZXcgbGVuZ3RoIG11c3QgYmUgc3BlY2lmaWVkICIKIAkJCSJkaXJl Y3RseSwgbm90IGJ5ICU8dHlwZWRlZiU+IikKQEAgLTQxNDAsNyArNDE0MCw3 IEBAIGJ1aWxkX3ZlY19pbml0ICh0cmVlIGJhc2UsIHRyZWUgbWF4aW5kZXgs IHRyZWUgaW5pCiAgIHRyZWUgb2Jhc2UgPSBiYXNlOwogICBib29sIHh2YWx1 ZSA9IGZhbHNlOwogICBib29sIGVycm9ycyA9IGZhbHNlOwotICBsb2NhdGlv bl90IGxvYyA9IChpbml0ID8gY3BfZXhwcl9sb2Nfb3JfbG9jIChpbml0LCBp bnB1dF9sb2NhdGlvbikKKyAgbG9jYXRpb25fdCBsb2MgPSAoaW5pdCA/IGNw X2V4cHJfbG9jX29yX2lucHV0X2xvYyAoaW5pdCkKIAkJICAgIDogbG9jYXRp b25fb2YgKGJhc2UpKTsKIAogICBpZiAoVFJFRV9DT0RFIChhdHlwZSkgPT0g QVJSQVlfVFlQRSAmJiBUWVBFX0RPTUFJTiAoYXR5cGUpKQpJbmRleDogbGV4 LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gbGV4LmMJKHJldmlzaW9u IDI3NDAwMSkKKysrIGxleC5jCSh3b3JraW5nIGNvcHkpCkBAIC01MDIsNyAr NTAyLDcgQEAgdHJlZQogdW5xdWFsaWZpZWRfbmFtZV9sb29rdXBfZXJyb3Ig KHRyZWUgbmFtZSwgbG9jYXRpb25fdCBsb2MpCiB7CiAgIGlmIChsb2MgPT0g VU5LTk9XTl9MT0NBVElPTikKLSAgICBsb2MgPSBjcF9leHByX2xvY19vcl9s b2MgKG5hbWUsIGlucHV0X2xvY2F0aW9uKTsKKyAgICBsb2MgPSBjcF9leHBy X2xvY19vcl9pbnB1dF9sb2MgKG5hbWUpOwogCiAgIGlmIChJREVOVElGSUVS X0FOWV9PUF9QIChuYW1lKSkKICAgICBlcnJvcl9hdCAobG9jLCAiJXFEIG5v dCBkZWZpbmVkIiwgbmFtZSk7CkluZGV4OiBwYXJzZXIuYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSBwYXJzZXIuYwkocmV2aXNpb24gMjc0MDAxKQor KysgcGFyc2VyLmMJKHdvcmtpbmcgY29weSkKQEAgLTIzMTIyLDcgKzIzMTIy LDcgQEAgY3BfcGFyc2VyX2luaXRpYWxpemVyX2xpc3QgKGNwX3BhcnNlciog cGFyc2VyLCBib28KIAkgIHsKIAkgICAgaWYgKElERU5USUZJRVJfTUFSS0VE IChkZXNpZ25hdG9yKSkKIAkgICAgICB7Ci0JCWVycm9yX2F0IChjcF9leHBy X2xvY19vcl9sb2MgKHZhbCwgaW5wdXRfbG9jYXRpb24pLAorCQllcnJvcl9h dCAoY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9jICh2YWwpLAogCQkJICAiJTwu JXMlPiBkZXNpZ25hdG9yIHVzZWQgbXVsdGlwbGUgdGltZXMgaW4gIgogCQkJ ICAidGhlIHNhbWUgaW5pdGlhbGl6ZXIgbGlzdCIsCiAJCQkgIElERU5USUZJ RVJfUE9JTlRFUiAoZGVzaWduYXRvcikpOwpAQCAtMzY2MzIsNyArMzY2MzIs NyBAQCBjcF9wYXJzZXJfb21wX2Zvcl9jb25kIChjcF9wYXJzZXIgKnBhcnNl ciwgdHJlZSBkZQogCSAgfHwgQ0xBU1NfVFlQRV9QIChUUkVFX1RZUEUgKGRl Y2wpKSkpCiAgICAgcmV0dXJuIGNvbmQ7CiAKLSAgcmV0dXJuIGJ1aWxkX3hf YmluYXJ5X29wIChjcF9leHByX2xvY19vcl9sb2MgKGNvbmQsIGlucHV0X2xv Y2F0aW9uKSwKKyAgcmV0dXJuIGJ1aWxkX3hfYmluYXJ5X29wIChjcF9leHBy X2xvY19vcl9pbnB1dF9sb2MgKGNvbmQpLAogCQkJICAgIFRSRUVfQ09ERSAo Y29uZCksCiAJCQkgICAgVFJFRV9PUEVSQU5EIChjb25kLCAwKSwgRVJST1Jf TUFSSywKIAkJCSAgICBUUkVFX09QRVJBTkQgKGNvbmQsIDEpLCBFUlJPUl9N QVJLLApJbmRleDogcHQuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBw dC5jCShyZXZpc2lvbiAyNzQwMDEpCisrKyBwdC5jCSh3b3JraW5nIGNvcHkp CkBAIC00MDU5LDcgKzQwNTksNyBAQCBjaGVja19mb3JfYmFyZV9wYXJhbWV0 ZXJfcGFja3MgKHRyZWUgdCwgbG9jYXRpb25fdAogICBpZiAocGFyYW1ldGVy X3BhY2tzKQogICAgIHsKICAgICAgIGlmIChsb2MgPT0gVU5LTk9XTl9MT0NB VElPTikKLQlsb2MgPSBjcF9leHByX2xvY19vcl9sb2MgKHQsIGlucHV0X2xv Y2F0aW9uKTsKKwlsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHQp OwogICAgICAgZXJyb3JfYXQgKGxvYywgInBhcmFtZXRlciBwYWNrcyBub3Qg ZXhwYW5kZWQgd2l0aCAlPC4uLiU+OiIpOwogICAgICAgd2hpbGUgKHBhcmFt ZXRlcl9wYWNrcykKICAgICAgICAgewpAQCAtNjMwNiw3ICs2MzA2LDcgQEAg c3RhdGljIGJvb2wKIGNoZWNrX3ZhbGlkX3B0cm1lbV9jc3RfZXhwciAodHJl ZSB0eXBlLCB0cmVlIGV4cHIsCiAJCQkgICAgIHRzdWJzdF9mbGFnc190IGNv bXBsYWluKQogewotICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29y X2xvYyAoZXhwciwgaW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90IGxv YyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwcik7CiAgIHRyZWUg b3JpZ19leHByID0gZXhwcjsKICAgU1RSSVBfTk9QUyAoZXhwcik7CiAgIGlm IChudWxsX3B0cl9jc3RfcCAoZXhwcikpCkBAIC02NTI1LDcgKzY1MjUsNyBA QCB1bmlmeV9hcmdfY29udmVyc2lvbiAoYm9vbCBleHBsYWluX3AsIHRyZWUg dG9fdHlwZQogCQkgICAgICB0cmVlIGZyb21fdHlwZSwgdHJlZSBhcmcpCiB7 CiAgIGlmIChleHBsYWluX3ApCi0gICAgaW5mb3JtIChjcF9leHByX2xvY19v cl9sb2MgKGFyZywgaW5wdXRfbG9jYXRpb24pLAorICAgIGluZm9ybSAoY3Bf ZXhwcl9sb2Nfb3JfaW5wdXRfbG9jIChhcmcpLAogCSAgICAiICBjYW5ub3Qg Y29udmVydCAlcUUgKHR5cGUgJXFUKSB0byB0eXBlICVxVCIsCiAJICAgIGFy ZywgZnJvbV90eXBlLCB0b190eXBlKTsKICAgcmV0dXJuIHVuaWZ5X2ludmFs aWQgKGV4cGxhaW5fcCk7CkBAIC02NzY1LDcgKzY3NjUsNyBAQCBzdGF0aWMg dHJlZQogY29udmVydF9ub250eXBlX2FyZ3VtZW50ICh0cmVlIHR5cGUsIHRy ZWUgZXhwciwgdHN1YnN0X2ZsYWdzX3QgY29tcGxhaW4pCiB7CiAgIHRyZWUg ZXhwcl90eXBlOwotICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29y X2xvYyAoZXhwciwgaW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90IGxv YyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoZXhwcik7CiAKICAgLyog RGV0ZWN0IGltbWVkaWF0ZWx5IHN0cmluZyBsaXRlcmFscyBhcyBpbnZhbGlk IG5vbi10eXBlIGFyZ3VtZW50LgogICAgICBUaGlzIHNwZWNpYWwtY2FzZSBp cyBub3QgbmVlZGVkIGZvciBjb3JyZWN0bmVzcyAod2Ugd291bGQgZWFzaWx5 CkBAIC0xODk2NSwxMCArMTg5NjUsMTAgQEAgdHN1YnN0X2NvcHlfYW5kX2J1 aWxkICh0cmVlIHQsCiAKIAkJICAgIGJvb2wgZGlhZyA9IHRydWU7CiAJCSAg ICBpZiAoaW5fbGFtYmRhKQotCQkgICAgICBlcnJvcl9hdCAoY3BfZXhwcl9s b2Nfb3JfbG9jICh0LCBpbnB1dF9sb2NhdGlvbiksCisJCSAgICAgIGVycm9y X2F0IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKHQpLAogCQkJCW1zZywg ZnVuY3Rpb24pOwogCQkgICAgZWxzZQotCQkgICAgICBkaWFnID0gcGVybWVy cm9yIChjcF9leHByX2xvY19vcl9sb2MgKHQsIGlucHV0X2xvY2F0aW9uKSwK KwkJICAgICAgZGlhZyA9IHBlcm1lcnJvciAoY3BfZXhwcl9sb2Nfb3JfaW5w dXRfbG9jICh0KSwKIAkJCQkJbXNnLCBmdW5jdGlvbik7CiAJCSAgICBpZiAo ZGlhZykKIAkJICAgICAgewpAQCAtMTg5ODMsOCArMTg5ODMsNyBAQCB0c3Vi c3RfY29weV9hbmRfYnVpbGQgKHRyZWUgdCwKIAkJCSAgLyogQ2FuJ3Qgc2F5 IGFueXRoaW5nIG1vcmUuICAqLzsKIAkJCWVsc2UgaWYgKERFQ0xfQ0xBU1Nf U0NPUEVfUCAoZm4pKQogCQkJICB7Ci0JCQkgICAgbG9jYXRpb25fdCBsb2Mg PSBjcF9leHByX2xvY19vcl9sb2MgKHQsCi0JCQkJCQkJICAgICAgaW5wdXRf bG9jYXRpb24pOworCQkJICAgIGxvY2F0aW9uX3QgbG9jID0gY3BfZXhwcl9s b2Nfb3JfaW5wdXRfbG9jICh0KTsKIAkJCSAgICBpbmZvcm0gKGxvYywKIAkJ CQkgICAgImRlY2xhcmF0aW9ucyBpbiBkZXBlbmRlbnQgYmFzZSAlcVQgYXJl ICIKIAkJCQkgICAgIm5vdCBmb3VuZCBieSB1bnF1YWxpZmllZCBsb29rdXAi LApAQCAtMTkwMzIsMTQgKzE5MDMxLDEzIEBAIHRzdWJzdF9jb3B5X2FuZF9i dWlsZCAodHJlZSB0LAogCSAgICAgIGdjY19hc3NlcnQgKG5hcmdzID09IDEp OwogCSAgICAgIGlmICh2ZWNfc2FmZV9sZW5ndGggKGNhbGxfYXJncykgIT0g MSkKIAkJewotCQkgIGVycm9yX2F0IChjcF9leHByX2xvY19vcl9sb2MgKHQs IGlucHV0X2xvY2F0aW9uKSwKKwkJICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nf b3JfaW5wdXRfbG9jICh0KSwKIAkJCSAgICAid3JvbmcgbnVtYmVyIG9mIGFy Z3VtZW50cyB0byAiCiAJCQkgICAgIiU8X19idWlsdGluX2xhdW5kZXIlPiIp OwogCQkgIHJldCA9IGVycm9yX21hcmtfbm9kZTsKIAkJfQogCSAgICAgIGVs c2UKLQkJcmV0ID0gZmluaXNoX2J1aWx0aW5fbGF1bmRlciAoY3BfZXhwcl9s b2Nfb3JfbG9jICh0LAotCQkJCQkJCSAgICAgICBpbnB1dF9sb2NhdGlvbiks CisJCXJldCA9IGZpbmlzaF9idWlsdGluX2xhdW5kZXIgKGNwX2V4cHJfbG9j X29yX2lucHV0X2xvYyAodCksCiAJCQkJCSAgICAgICgqY2FsbF9hcmdzKVsw XSwgY29tcGxhaW4pOwogCSAgICAgIGJyZWFrOwogCkBAIC0xOTA0Nyw3ICsx OTA0NSw3IEBAIHRzdWJzdF9jb3B5X2FuZF9idWlsZCAodHJlZSB0LAogCSAg ICAgIGdjY19hc3NlcnQgKG5hcmdzID09IDEpOwogCSAgICAgIGlmICh2ZWNf c2FmZV9sZW5ndGggKGNhbGxfYXJncykgIT0gMSkKIAkJewotCQkgIGVycm9y X2F0IChjcF9leHByX2xvY19vcl9sb2MgKHQsIGlucHV0X2xvY2F0aW9uKSwK KwkJICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9jICh0KSwK IAkJCSAgICAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byAiCiAJCQkg ICAgIiU8X19idWlsdGluX2NvbnZlcnR2ZWN0b3IlPiIpOwogCQkgIHJldCA9 IGVycm9yX21hcmtfbm9kZTsKQEAgLTI2NTk1LDcgKzI2NTkzLDcgQEAgcmVz b2x2ZV90eXBlbmFtZV90eXBlICh0cmVlIHR5cGUsIGJvb2wgb25seV9jdXJy ZW4KIAogCSAgICAgW3RlbXAubmFtZXNdOiBJbiBhIHF1YWxpZmllZC1pZCBv ZiBhIGRlY2xhcmF0b3ItaWQsIHRoZSBrZXl3b3JkCiAJICAgICB0ZW1wbGF0 ZSBzaGFsbCBub3QgYXBwZWFyIGF0IHRoZSB0b3AgbGV2ZWwuICAqLwotCSAg cGVkd2FybiAoY3BfZXhwcl9sb2Nfb3JfbG9jIChmdWxsbmFtZSwgaW5wdXRf bG9jYXRpb24pLCBPUFRfV3BlZGFudGljLAorCSAgcGVkd2FybiAoY3BfZXhw cl9sb2Nfb3JfaW5wdXRfbG9jIChmdWxsbmFtZSksIE9QVF9XcGVkYW50aWMs CiAJCSAgICJrZXl3b3JkICU8dGVtcGxhdGUlPiBub3QgYWxsb3dlZCBpbiBk ZWNsYXJhdG9yLWlkIik7CiAJICB0bXBsID0gZGVjbDsKIAl9CkluZGV4OiBz ZW1hbnRpY3MuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzZW1hbnRp Y3MuYwkocmV2aXNpb24gMjc0MDAxKQorKysgc2VtYW50aWNzLmMJKHdvcmtp bmcgY29weSkKQEAgLTY1OCw3ICs2NTgsNyBAQCBtYXliZV9jb252ZXJ0X2Nv bmQgKHRyZWUgY29uZCkKICAgaWYgKFRSRUVfQ09ERSAoY29uZCkgPT0gTU9E SUZZX0VYUFIKICAgICAgICYmICFUUkVFX05PX1dBUk5JTkcgKGNvbmQpCiAg ICAgICAmJiB3YXJuX3BhcmVudGhlc2VzCi0gICAgICAmJiB3YXJuaW5nX2F0 IChjcF9leHByX2xvY19vcl9sb2MgKGNvbmQsIGlucHV0X2xvY2F0aW9uKSwK KyAgICAgICYmIHdhcm5pbmdfYXQgKGNwX2V4cHJfbG9jX29yX2lucHV0X2xv YyAoY29uZCksCiAJCSAgICAgT1BUX1dwYXJlbnRoZXNlcywgInN1Z2dlc3Qg cGFyZW50aGVzZXMgYXJvdW5kICIKIAkJCQkgICAgICAgImFzc2lnbm1lbnQg dXNlZCBhcyB0cnV0aCB2YWx1ZSIpKQogICAgIFRSRUVfTk9fV0FSTklORyAo Y29uZCkgPSAxOwpAQCAtMjQyNiw3ICsyNDI2LDcgQEAgZmluaXNoX2NhbGxf ZXhwciAodHJlZSBmbiwgdmVjPHRyZWUsIHZhX2djPiAqKmFyZ3MKIAkgIHx8 IGFueV90eXBlX2RlcGVuZGVudF9hcmd1bWVudHNfcCAoKmFyZ3MpKQogCXsK IAkgIHJlc3VsdCA9IGJ1aWxkX21pbl9udF9jYWxsX3ZlYyAob3JpZ19mbiwg KmFyZ3MpOwotCSAgU0VUX0VYUFJfTE9DQVRJT04gKHJlc3VsdCwgY3BfZXhw cl9sb2Nfb3JfbG9jIChmbiwgaW5wdXRfbG9jYXRpb24pKTsKKwkgIFNFVF9F WFBSX0xPQ0FUSU9OIChyZXN1bHQsIGNwX2V4cHJfbG9jX29yX2lucHV0X2xv YyAoZm4pKTsKIAkgIEtPRU5JR19MT09LVVBfUCAocmVzdWx0KSA9IGtvZW5p Z19wOwogCSAgaWYgKGlzX292ZXJsb2FkZWRfZm4gKGZuKSkKIAkgICAgZm4g PSBnZXRfZm5zIChmbik7CkBAIC0xMDEwMiw3ICsxMDEwMiw3IEBAIGNwX2J1 aWxkX3ZlY19jb252ZXJ0ICh0cmVlIGFyZywgbG9jYXRpb25fdCBsb2MsIHRy CiAKICAgdHJlZSByZXQgPSBOVUxMX1RSRUU7CiAgIGlmICghdHlwZV9kZXBl bmRlbnRfZXhwcmVzc2lvbl9wIChhcmcpICYmICFkZXBlbmRlbnRfdHlwZV9w ICh0eXBlKSkKLSAgICByZXQgPSBjX2J1aWxkX3ZlY19jb252ZXJ0IChjcF9l eHByX2xvY19vcl9sb2MgKGFyZywgaW5wdXRfbG9jYXRpb24pLCBhcmcsCisg ICAgcmV0ID0gY19idWlsZF92ZWNfY29udmVydCAoY3BfZXhwcl9sb2Nfb3Jf aW5wdXRfbG9jIChhcmcpLCBhcmcsCiAJCQkgICAgICAgbG9jLCB0eXBlLCAo Y29tcGxhaW4gJiB0Zl9lcnJvcikgIT0gMCk7CiAKICAgaWYgKCFwcm9jZXNz aW5nX3RlbXBsYXRlX2RlY2wpCkluZGV4OiB0eXBlY2suYwo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB0eXBlY2suYwkocmV2aXNpb24gMjc0MDAxKQor KysgdHlwZWNrLmMJKHdvcmtpbmcgY29weSkKQEAgLTIwMjAsNyArMjAyMCw3 IEBAIGRlY2F5X2NvbnZlcnNpb24gKHRyZWUgZXhwLAogewogICB0cmVlIHR5 cGU7CiAgIGVudW0gdHJlZV9jb2RlIGNvZGU7Ci0gIGxvY2F0aW9uX3QgbG9j ID0gY3BfZXhwcl9sb2Nfb3JfbG9jIChleHAsIGlucHV0X2xvY2F0aW9uKTsK KyAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2Mg KGV4cCk7CiAKICAgdHlwZSA9IFRSRUVfVFlQRSAoZXhwKTsKICAgaWYgKHR5 cGUgPT0gZXJyb3JfbWFya19ub2RlKQpAQCAtMjI4MSw3ICsyMjgxLDcgQEAg c3RhdGljIHRyZWUKIHJhdGlvbmFsaXplX2NvbmRpdGlvbmFsX2V4cHIgKGVu dW0gdHJlZV9jb2RlIGNvZGUsIHRyZWUgdCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHRzdWJzdF9mbGFnc190IGNvbXBsYWluKQogewotICBs b2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2xvYyAodCwgaW5wdXRf bG9jYXRpb24pOworICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29y X2lucHV0X2xvYyAodCk7CiAKICAgLyogRm9yIE1JTl9FWFBSIG9yIE1BWF9F WFBSLCBmb2xkLWNvbnN0LmMgaGFzIGFycmFuZ2VkIHRoaW5ncyBzbyB0aGF0 CiAgICAgIHRoZSBmaXJzdCBvcGVyYW5kIGlzIGFsd2F5cyB0aGUgb25lIHRv IGJlIHVzZWQgaWYgYm90aCBvcGVyYW5kcwpAQCAtNjIwNiw3ICs2MjA2LDcg QEAgY3BfYnVpbGRfdW5hcnlfb3AgKGVudW0gdHJlZV9jb2RlIGNvZGUsIHRy ZWUgeGFyZywKIHsKICAgLyogTm8gZGVmYXVsdF9jb252ZXJzaW9uIGhlcmUu ICBJdCBjYXVzZXMgdHJvdWJsZSBmb3IgQUREUl9FWFBSLiAgKi8KICAgdHJl ZSBhcmcgPSB4YXJnOwotICBsb2NhdGlvbl90IGxvY2F0aW9uID0gY3BfZXhw cl9sb2Nfb3JfbG9jIChhcmcsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9jYXRp b25fdCBsb2NhdGlvbiA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xvYyAoYXJn KTsKICAgdHJlZSBhcmd0eXBlID0gMDsKICAgY29uc3QgY2hhciAqZXJyc3Ry aW5nID0gTlVMTDsKICAgdHJlZSB2YWw7CkBAIC02NzYwLDcgKzY3NjAsNyBA QCBidWlsZF94X2NvbXBvdW5kX2V4cHJfZnJvbV9saXN0ICh0cmVlIGxpc3Qs IGV4cHJfbAogICAgICAgJiYgIUNPTlNUUlVDVE9SX0lTX0RJUkVDVF9JTklU IChleHByKSkKICAgICB7CiAgICAgICBpZiAoY29tcGxhaW4gJiB0Zl9lcnJv cikKLQlwZWR3YXJuIChjcF9leHByX2xvY19vcl9sb2MgKGV4cHIsIGlucHV0 X2xvY2F0aW9uKSwgMCwKKwlwZWR3YXJuIChjcF9leHByX2xvY19vcl9pbnB1 dF9sb2MgKGV4cHIpLCAwLAogCQkgImxpc3QtaW5pdGlhbGl6ZXIgZm9yIG5v bi1jbGFzcyB0eXBlIG11c3Qgbm90ICIKIAkJICJiZSBwYXJlbnRoZXNpemVk Iik7CiAgICAgICBlbHNlCkBAIC05MjEwLDcgKzkyMTAsNyBAQCBtYXliZV93 YXJuX2Fib3V0X3JldHVybmluZ19hZGRyZXNzX29mX2xvY2FsICh0cmVlCiB7 CiAgIHRyZWUgdmFsdHlwZSA9IFRSRUVfVFlQRSAoREVDTF9SRVNVTFQgKGN1 cnJlbnRfZnVuY3Rpb25fZGVjbCkpOwogICB0cmVlIHdoYXRzX3JldHVybmVk ID0gZm9sZF9mb3Jfd2FybiAocmV0dmFsKTsKLSAgbG9jYXRpb25fdCBsb2Mg PSBjcF9leHByX2xvY19vcl9sb2MgKHJldHZhbCwgaW5wdXRfbG9jYXRpb24p OworICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJfbG9jX29yX2lucHV0X2xv YyAocmV0dmFsKTsKIAogICBmb3IgKDs7KQogICAgIHsKQEAgLTk0MjAsNyAr OTQyMCw3IEBAIG1heWJlX3dhcm5fcGVzc2ltaXppbmdfbW92ZSAodHJlZSBy ZXR2YWwsIHRyZWUgZnVuCiAgIGlmICghKHdhcm5fcGVzc2ltaXppbmdfbW92 ZSB8fCB3YXJuX3JlZHVuZGFudF9tb3ZlKSkKICAgICByZXR1cm47CiAKLSAg bG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xvY19vcl9sb2MgKHJldHZhbCwg aW5wdXRfbG9jYXRpb24pOworICBsb2NhdGlvbl90IGxvYyA9IGNwX2V4cHJf bG9jX29yX2lucHV0X2xvYyAocmV0dmFsKTsKIAogICAvKiBDKys5OCBkb2Vz bid0IGtub3cgbW92ZS4gICovCiAgIGlmIChjeHhfZGlhbGVjdCA8IGN4eDEx KQpJbmRleDogdHlwZWNrMi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t IHR5cGVjazIuYwkocmV2aXNpb24gMjc0MDAxKQorKysgdHlwZWNrMi5jCSh3 b3JraW5nIGNvcHkpCkBAIC0xMDA2LDcgKzEwMDYsNyBAQCBjaGVja19uYXJy b3dpbmcgKHRyZWUgdHlwZSwgdHJlZSBpbml0LCB0c3Vic3RfZmxhZwogCiAg IGlmICghb2spCiAgICAgewotICAgICAgbG9jYXRpb25fdCBsb2MgPSBjcF9l eHByX2xvY19vcl9sb2MgKGluaXQsIGlucHV0X2xvY2F0aW9uKTsKKyAgICAg IGxvY2F0aW9uX3QgbG9jID0gY3BfZXhwcl9sb2Nfb3JfaW5wdXRfbG9jIChp bml0KTsKICAgICAgIGlmIChjeHhfZGlhbGVjdCA9PSBjeHg5OCkKIAl7CiAJ ICBpZiAoY29tcGxhaW4gJiB0Zl93YXJuaW5nKQpAQCAtMTA4NSw3ICsxMDg1 LDcgQEAgZGlnZXN0X2luaXRfciAodHJlZSB0eXBlLCB0cmVlIGluaXQsIGlu dCBuZXN0ZWQsIGkKIAkJCQkJY29tcGxhaW4pKQogICAgIHJldHVybiBlcnJv cl9tYXJrX25vZGU7CiAKLSAgbG9jYXRpb25fdCBsb2MgPSBjcF9leHByX2xv Y19vcl9sb2MgKGluaXQsIGlucHV0X2xvY2F0aW9uKTsKKyAgbG9jYXRpb25f dCBsb2MgPSBjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGluaXQpOwogCiAg IHRyZWUgc3RyaXBwZWRfaW5pdCA9IGluaXQ7CiAKQEAgLTE0MDIsNyArMTQw Miw3IEBAIHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcl9hcnJheSAodHJlZSB0 eXBlLCB0cmVlIGluCiAgICAgICBpZiAobmVzdGVkID09IDIgJiYgIWRvbWFp biAmJiAhdmVjX3NhZmVfaXNfZW1wdHkgKHYpKQogCXsKIAkgIGlmIChjb21w bGFpbiAmIHRmX2Vycm9yKQotCSAgICBlcnJvcl9hdCAoY3BfZXhwcl9sb2Nf b3JfbG9jIChpbml0LCBpbnB1dF9sb2NhdGlvbiksCisJICAgIGVycm9yX2F0 IChjcF9leHByX2xvY19vcl9pbnB1dF9sb2MgKGluaXQpLAogCQkgICAgICAi aW5pdGlhbGl6YXRpb24gb2YgZmxleGlibGUgYXJyYXkgbWVtYmVyICIKIAkJ ICAgICAgImluIGEgbmVzdGVkIGNvbnRleHQiKTsKIAkgIHJldHVybiBQSUNG TEFHX0VSUk9ORU9VUzsK --------------4848BEBBA2608150E87453FD--