From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14987 invoked by alias); 14 Dec 2015 22:08:34 -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 14974 invoked by uid 89); 14 Dec 2015 22:08:33 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.2 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-ob0-f179.google.com Received: from mail-ob0-f179.google.com (HELO mail-ob0-f179.google.com) (209.85.214.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Mon, 14 Dec 2015 22:08:28 +0000 Received: by obbsd4 with SMTP id sd4so94512083obb.0 for ; Mon, 14 Dec 2015 14:08:26 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.182.19.131 with SMTP id f3mr28336489obe.26.1450130906105; Mon, 14 Dec 2015 14:08:26 -0800 (PST) Received: by 10.76.77.99 with HTTP; Mon, 14 Dec 2015 14:08:25 -0800 (PST) In-Reply-To: <566F2A0B.4010102@redhat.com> References: <20151209213118.GC317@x4> <566C346B.8030601@redhat.com> <20151212152731.GB18720@tucnak.redhat.com> <566F23AE.6070604@redhat.com> <566F2A0B.4010102@redhat.com> Date: Mon, 14 Dec 2015 22:08:00 -0000 Message-ID: Subject: Re: PING^1: [PATCH] Add TYPE_EMPTY_RECORD for C++ empty class From: "H.J. Lu" To: Jason Merrill Cc: GCC Patches , Jakub Jelinek , Richard Biener , Markus Trippelsdorf Content-Type: multipart/mixed; boundary=001a11c213cc898cba0526e2e9a0 X-IsSubscribed: yes X-SW-Source: 2015-12/txt/msg01444.txt.bz2 --001a11c213cc898cba0526e2e9a0 Content-Type: text/plain; charset=UTF-8 Content-length: 3006 On Mon, Dec 14, 2015 at 12:43 PM, Jason Merrill wrote: > On 12/14/2015 03:39 PM, H.J. Lu wrote: >> >> On Mon, Dec 14, 2015 at 12:16 PM, Jason Merrill wrote: >>> >>> On 12/12/2015 01:42 PM, Marc Glisse wrote: >>>> >>>> >>>> On Sat, 12 Dec 2015, Jakub Jelinek wrote: >>>> >>>>> On Sat, Dec 12, 2015 at 09:51:23AM -0500, Jason Merrill wrote: >>>>>> >>>>>> >>>>>> On 12/11/2015 06:52 PM, H.J. Lu wrote: >>>>>>> >>>>>>> >>>>>>> On Thu, Dec 10, 2015 at 3:24 AM, Richard Biener >>>>>>> wrote: >>>>>>>> >>>>>>>> >>>>>>>> On Wed, Dec 9, 2015 at 10:31 PM, Markus Trippelsdorf >>>>>>>> wrote: >>>>>>>>> >>>>>>>>> >>>>>>>>> On 2015.12.09 at 10:53 -0800, H.J. Lu wrote: >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Empty C++ class is a corner case which isn't covered in psABI nor >>>>>>>>>> C++ ABI. >>>>>>>>>> There is no mention of "empty record" in GCC documentation. But >>>>>>>>>> there are >>>>>>>>>> plenty of "empty class" in gcc/cp. This change affects all >>>>>>>>>> targets. C++ ABI >>>>>>>>>> should specify how it should be passed. >>>> >>>> >>>> >>>> >>>> About this patch, aren't we supposed to enable new C++ ABIs with >>>> -fabi-version=42 (or whatever the next number is)? >>> >>> >>> >>> Yes, the patch should definitely make this conditional on >>> abi_version_at_least. >>> >>>>>>>>> There is a C++ ABI mailinglist, where you could discuss this issue: >>>>>>>>> http://sourcerytools.com/cgi-bin/mailman/listinfo/cxx-abi-dev >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Yep. As long as the ABI doesn't state how to pass those I'd rather >>>>>>>> _not_ change GCCs way. >>>>>>> >>>>>>> >>>>>>> >>>>>>> It is agreed that GCC is wrong on this: >>>>>>> >>>>>>> >>>>>>> >>>>>>> http://sourcerytools.com/pipermail/cxx-abi-dev/2015-December/002876.html >>>>>>> >>>>>> >>>>>> Yes, I think this is just a (nasty) bug on some GCC targets. >>>>> >>>>> >>>>> >>>>> Well, the argument in that thread is weird, because C and C++ empty >>>>> structs >>>>> are different, so it isn't surprising they are passed differently. >>>>> C++ makes those sizeof == 1, while C has them sizeof == 0. >>>> >>>> >>>> >>>> Maybe it isn't surprising, but it isn't particularly helpful either. It >>>> increases the number of places where the 2 are incompatible. >>>> (I personally don't care about empty C structs) >>> >>> >>> >>> Yep. The C standard doesn't have empty structs; it's a GNU extension. >>> But >>> in any case argument passing can be compatible between C and C++, so it >>> really should be. >>> >>> >> >> Before I make any changes, I'd like to ask if we should make >> argument passing can be compatible between C and C++ for >> all targets GCC support or just x86. > > > All. Here is the patch to guard this ABI change with the ABI level 10, which is updated in GCC 6. OK for master if there is no regression on x86? The patch for non-x86 targets is at https://gcc.gnu.org/ml/gcc-patches/2015-12/msg01063.html -- H.J. --001a11c213cc898cba0526e2e9a0 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-TYPE_EMPTY_RECORD-for-C-empty-class.patch" Content-Disposition: attachment; filename="0001-Add-TYPE_EMPTY_RECORD-for-C-empty-class.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_ii6iew8r0 Content-length: 54392 RnJvbSBmY2NkNDQ5YTA5MTU4OWZlZGFmNmVlNDk5ODI3MWExNmQ5MzE0N2Zj IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhq bC50b29sc0BnbWFpbC5jb20+CkRhdGU6IFN1biwgMTUgTm92IDIwMTUgMTM6 MTk6MDUgLTA4MDAKU3ViamVjdDogW1BBVENIXSBBZGQgVFlQRV9FTVBUWV9S RUNPUkQgZm9yIEMrKyBlbXB0eSBjbGFzcwoKRW1wdHkgcmVjb3JkIHNob3Vs ZCBiZSByZXR1cm5lZCBhbmQgcGFzc2VkIHRoZSBzYW1lIHdheSBpbiBDIGFu ZCBDKysuClRoaXMgcGF0Y2ggb3ZlcmxvYWRzIGEgYml0LCBzaWRlX2VmZmVj dHNfZmxhZywgaW4gdHJlZV9iYXNlIGZvciBDKysKZW1wdHkgY2xhc3MuICBN aWRkbGUtZW5kIGFuZCB4ODYgYmFja2VuZCBhcmUgdXBkYXRlZCB0byBpZ25v cmUgZW1wdHkKcmVjb3JkcyBmb3IgcGFyYW1ldGVyIHBhc3NpbmcgYW5kIGZ1 bmN0aW9uIHZhbHVlIHJldHVybi4gIE90aGVyIHRhcmdldHMKbWF5IG5lZWQg c2ltaWxhciBjaGFuZ2VzLgoKZ2V0X3JlZl9iYXNlX2FuZF9leHRlbnQgaXMg Y2hhbmdlZCB0byBzZXQgYml0c2l6ZSB0byAwIGZvciBlbXB0eSByZWNvcmRz CnNvIHRoYXQgd2hlbiByZWZfbWF5YmVfdXNlZF9ieV9jYWxsX3BfMSBjYWxs cyBnZXRfcmVmX2Jhc2VfYW5kX2V4dGVudCB0bwpnZXQgMCBhcyB0aGUgbWF4 aW11bSBzaXplIG9uIGVtcHR5IHJlY29yZC4gIE90aGVyd2lzZSwgZmluZF90 YWlsX2NhbGxzCndvbid0IHBlcmZvcm0gdGFpbCBjYWxsIG9wdGltaXphdGlv biBmb3IgZnVuY3Rpb25zIHdpdGggZW1wdHkgcmVjb3JkCnBhcmFtZXRlcnMs IGFzIHNob3duIGluIGcrKy5kZy9wcjYwMzM2LTEuQyBhbmQgZysrLmRnL3By NjAzMzYtMi5DLgoKVGhpcyBBQkkgY2hhbmdlIGlzIGVuYWJsZWQgb25seSBp ZiB0aGUgQUJJIGxldmVsIGlzIGF0IGxlYXN0IDEwLCB3aGljaAppcyB1cGRh dGVkIGluIEdDQyA2LgoKZ2NjLwoKCVBSIGMrKy82MDMzNgoJUFIgbWlkZGxl LWVuZC82NzIzOQoJUFIgdGFyZ2V0LzY4MzU1CgkqIGNhbGxzLmMgKGluaXRp YWxpemVfYXJndW1lbnRfaW5mb3JtYXRpb24pOiBXYXJuIGVtcHR5IHJlY29y ZAoJaWYgdGhleSBhcmUgdXNlZCBpbiBhIHZhcmlhYmxlIGFyZ3VtZW50IGxp c3Qgb3IgYXJlbid0IHRoZSBsYXN0Cglhcmd1bWVudHMuICBSZXBsYWNlIHRh cmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnLAoJdGFyZ2V0bS5jYWxscy5mdW5j dGlvbl9pbmNvbWluZ19hcmcgYW5kCgl0YXJnZXRtLmNhbGxzLmZ1bmN0aW9u X2FyZ19hZHZhbmNlIHdpdGggZnVuY3Rpb25fYXJnLAoJZnVuY3Rpb25faW5j b21pbmdfYXJnIGFuZCBmdW5jdGlvbl9hcmdfYWR2YW5jZS4KCShleHBhbmRf Y2FsbCk6IFJlcGxhY2UgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmcsCgl0 YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2luY29taW5nX2FyZyBhbmQKCXRhcmdl dG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFuY2Ugd2l0aCBmdW5jdGlvbl9h cmcsCglmdW5jdGlvbl9pbmNvbWluZ19hcmcgYW5kIGZ1bmN0aW9uX2FyZ19h ZHZhbmNlLgoJKGVtaXRfbGlicmFyeV9jYWxsX3ZhbHVlXzEpOiBMaWtld2lz ZS4KCShzdG9yZV9vbmVfYXJnKTogVXNlIDAgZm9yIGVtcHR5IHJlY29yZCBz aXplLiAgRG9uJ3QKCXB1c2ggMCBzaXplIGFyZ3VtZW50IG9udG8gc3RhY2su CgkobXVzdF9wYXNzX2luX3N0YWNrX3Zhcl9zaXplX29yX3BhZCk6IFJldHVy biBmYWxzZSBmb3IgZW1wdHkKCXJlY29yZC4KCSogZHNlLmMgKGdldF9jYWxs X2FyZ3MpOiBSZXBsYWNlIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnCglh bmQgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSB3aXRoIGZ1 bmN0aW9uX2FyZyBhbmQKCWZ1bmN0aW9uX2FyZ19hZHZhbmNlLgoJKiBleHBy LmMgKGJsb2NrX21vdmVfbGliY2FsbF9zYWZlX2Zvcl9jYWxsX3Bhcm0pOiBM aWtld2lzZS4KCSogZnVuY3Rpb24uYyAoYWdncmVnYXRlX3ZhbHVlX3ApOiBS ZXBsYWNlCgl0YXJnZXRtLmNhbGxzLnJldHVybl9pbl9tZW1vcnkgd2l0aCBy ZXR1cm5faW5fbWVtb3J5LgoJKGFzc2lnbl9wYXJtX2RhdGFfYWxsKTogQWRk IHdhcm5fZW1wdHlfcmVjb3JkLgoJKGFzc2lnbl9wYXJtc19hdWdtZW50ZWRf YXJnX2xpc3QpOiBTZXQgd2Fybl9lbXB0eV9yZWNvcmQgaWYKCWVtcHR5IHJl Y29yZHMgYXJlIHVzZWQgaW4gYSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0IG9y IGFyZW4ndAoJdGhlIGxhc3QgYXJndW1lbnRzLgoJKGFzc2lnbl9wYXJtX2Zp bmRfZW50cnlfcnRsKTogV2FybiBlbXB0eSByZWNvcmQgaWYKCXdhcm5fZW1w dHlfcmVjb3JkIGlzIHNldC4gIFJlcGxhY2UKCXRhcmdldG0uY2FsbHMuZnVu Y3Rpb25faW5jb21pbmdfYXJnIHdpdGggZnVuY3Rpb25faW5jb21pbmdfYXJn LgoJKGFzc2lnbl9wYXJtcyk6IE9ubHkgd2FybiBlbXB0eSByZWNvcmQgb25j ZS4gIFJlcGxhY2UKCXRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFu Y2Ugd2l0aCBmdW5jdGlvbl9hcmdfYWR2YW5jZS4KCShnaW1wbGlmeV9wYXJh bWV0ZXJzKTogUmVwbGFjZSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19h ZHZhbmNlCgl3aXRoIGZ1bmN0aW9uX2FyZ19hZHZhbmNlLgoJKGxvY2F0ZV9h bmRfcGFkX3Bhcm0pOiBVc2UgMCBmb3IgZW1wdHkgcmVjb3JkIHNpemUuCgko d2Fybl9lbXB0eV9yZWNvcmQpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3Rpb25f YXJnX2FkdmFuY2UpOiBOZXcgd3JhcHBlciBmdW5jdGlvbi4KCShmdW5jdGlv bl9hcmcpOiBMaWtld2lzZS4KCShmdW5jdGlvbl9pbmNvbWluZ19hcmcpOiBM aWtld2lzZS4KCShyZXR1cm5faW5fbWVtb3J5KTogTGlrZXdpc2UuCgkqIGx0 by1zdHJlYW1lci1vdXQuYyAoaGFzaF90cmVlKTogQ2FsbCBoc3RhdGUuYWRk X2ZsYWcgd2l0aAoJVFlQRV9FTVBUWV9SRUNPUkQgZm9yIHR5cGVzLgoJKiBw cmludC10cmVlLmMgKHByaW50X25vZGUpOiBBbHNvIGhhbmRsZSBUWVBFX0VN UFRZX1JFQ09SRC4KCSogdWJzYW4uYyAodWJzYW5fdHlwZV9kZXNjcmlwdG9y KTogTGlrZXdpc2UuCgkqIHRhcmdldC5oIChmdW5jdGlvbl9hcmdfYWR2YW5j ZSk6IE5ldyBwcm90b3R5cGUuCgkoZnVuY3Rpb25fYXJnKTogTGlrZXdpc2Uu CgkoZnVuY3Rpb25faW5jb21pbmdfYXJnKTogTGlrZXdpc2UuCgkocmV0dXJu X2luX21lbW9yeSk6IExpa2V3aXNlLgoJKiB0YXJnaG9va3MuYyAoc3RkX2dp bXBsaWZ5X3ZhX2FyZ19leHByKTogVXNlIDAgZm9yIGVtcHR5IHJlY29yZAoJ c2l6ZS4KCSogdHJlZS1kZmEuYyAoZ2V0X3JlZl9iYXNlX2FuZF9leHRlbnQp OiBMaWtld2lzZS4KCSogdHJlZS1jb3JlLmggKHRyZWVfYmFzZSk6IE1lbnRp b24gVFlQRV9FTVBUWV9SRUNPUkQgaW4gY29tbWVudHMKCWZvciBzaWRlX2Vm ZmVjdHNfZmxhZy4KCSogdHJlZS1zdHJlYW1lci1pbi5jICh1bnBhY2tfdHNf YmFzZV92YWx1ZV9maWVsZHMpOiBTdHJlYW0gaW4KCVRZUEVfRU1QVFlfUkVD T1JEIGZvciB0eXBlcy4KCSogdHJlZS1zdHJlYW1lci1vdXQuYyAocGFja190 c19iYXNlX3ZhbHVlX2ZpZWxkcyk6IFN0cmVhbSBvdXQKCVRZUEVfRU1QVFlf UkVDT1JEIGZvciB0eXBlcy4KCSogdHJlZS5oIChUWVBFX0VNUFRZX1JFQ09S RCk6IE5ldy4KCSh0eXBlX2lzX2VtcHR5X3JlY29yZF9wKTogTmV3IHN0YXRp YyBpbmxpbmUgZnVuY3Rpb24uCgkqIHZhci10cmFja2luZy5jIChwcmVwYXJl X2NhbGxfYXJndW1lbnRzKTogUmVwbGFjZQoJdGFyZ2V0bS5jYWxscy5mdW5j dGlvbl9hcmcgYW5kIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2FkdmFu Y2UKCXdpdGggZnVuY3Rpb25fYXJnIGFuZCBmdW5jdGlvbl9hcmdfYWR2YW5j ZS4KCSogY29uZmlnL2kzODYvaTM4Ni5jIChpeDg2X2dpbXBsaWZ5X3ZhX2Fy Zyk6IFVzZSAwIGZvciBlbXB0eQoJcmVjb3JkIHNpemUuCgpnY2MvYwoKCVBS IGMrKy82MDMzNgoJUFIgbWlkZGxlLWVuZC82NzIzOQoJUFIgdGFyZ2V0LzY4 MzU1CgkqIGMtYXV4LWluZm8uYyAoZ2VuX3R5cGUpOiBBZGQgVFlQRV9FTVBU WV9SRUNPUkQgY2hlY2suCgpnY2MvY3AvCgoJUFIgYysrLzYwMzM2CglQUiBt aWRkbGUtZW5kLzY3MjM5CglQUiB0YXJnZXQvNjgzNTUKCSogY2xhc3MuYyAo ZmluaXNoX3N0cnVjdF8xKTogU2V0IFRZUEVfRU1QVFlfUkVDT1JEIHdpdGgg cmV0dXJuCgl2YWx1ZSBmcm9tIGlzX3JlYWxseV9lbXB0eV9jbGFzcyAoKSBp ZiB0aGUgQUJJIGxldmVsIGlzIGF0IGxlYXN0CgkxMC4KCmdjYy9sdG8vCgoJ UFIgYysrLzYwMzM2CglQUiBtaWRkbGUtZW5kLzY3MjM5CglQUiB0YXJnZXQv NjgzNTUKCSogbHRvLmMgKGNvbXBhcmVfdHJlZV9zY2NzXzEpOiBDYWxsIGNv bXBhcmVfdmFsdWVzIHdpdGgKCVRZUEVfRU1QVFlfUkVDT1JEIGZvciB0eXBl cy4KCmdjYy90ZXN0c3VpdGUvCgoJUFIgYysrLzYwMzM2CglQUiBtaWRkbGUt ZW5kLzY3MjM5CglQUiB0YXJnZXQvNjgzNTUKCSogZysrLmRnL2FiaS9lbXB0 eTEyLkM6IE5ldyB0ZXN0LgoJKiBnKysuZGcvYWJpL2VtcHR5MTIuaDogTGlr ZXdpc2UuCgkqIGcrKy5kZy9hYmkvZW1wdHkxMmEuYzogTGlrZXdpc2UuCgkq IGcrKy5kZy9hYmkvZW1wdHkxMy5DOiBMaWtld2lzZS4KCSogZysrLmRnL2Fi aS9lbXB0eTEzLmg6IExpa2V3aXNlLgoJKiBnKysuZGcvYWJpL2VtcHR5MTNh LmM6IExpa2V3aXNlLgoJKiBnKysuZGcvcHI2MDMzNi0xLkM6IExpa2V3aXNl LgoJKiBnKysuZGcvcHI2MDMzNi0yLkM6IExpa2V3aXNlLgoJKiBnKysuZGcv cHI2MDMzNi0zLkM6IExpa2V3aXNlLgoJKiBnKysuZGcvcHI2MDMzNi00LkM6 IExpa2V3aXNlLgoJKiBnKysuZGcvcHI2ODM1NS5DOiBMaWtld2lzZS4KLS0t CiBnY2MvYy9jLWF1eC1pbmZvLmMgICAgICAgICAgICAgICAgICB8ICAgMiAr CiBnY2MvY2FsbHMuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5OSAr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogZ2NjL2NvbmZpZy9pMzg2 L2kzODYuYyAgICAgICAgICAgICAgfCAgIDMgKy0KIGdjYy9jcC9jbGFzcy5j ICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsKIGdjYy9kc2UuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICA0ICstCiBnY2MvZXhwci5jICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQogZ2NjL2Z1bmN0aW9u LmMgICAgICAgICAgICAgICAgICAgICAgfCAxMjMgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystLS0tCiBnY2MvbHRvLXN0cmVhbWVyLW91dC5j ICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvbHRvL2x0by5jICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvcHJpbnQtdHJlZS5jICAgICAg ICAgICAgICAgICAgICB8ICAgMyArCiBnY2MvdGFyZ2V0LmggICAgICAgICAg ICAgICAgICAgICAgICB8ICAgOCArKysKIGdjYy90YXJnaG9va3MuYyAgICAg ICAgICAgICAgICAgICAgIHwgICA1ICstCiBnY2MvdGVzdHN1aXRlL2crKy5k Zy9hYmkvZW1wdHkxMi5DICB8ICAxNyArKysrKwogZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvYWJpL2VtcHR5MTIuaCAgfCAgIDkgKysrCiBnY2MvdGVzdHN1aXRl L2crKy5kZy9hYmkvZW1wdHkxMmEuYyB8ICAgNiArKwogZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvYWJpL2VtcHR5MTMuQyAgfCAgMTcgKysrKysKIGdjYy90ZXN0 c3VpdGUvZysrLmRnL2FiaS9lbXB0eTEzLmggIHwgICA5ICsrKwogZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTNhLmMgfCAgIDYgKysKIGdjYy90 ZXN0c3VpdGUvZysrLmRnL3ByNjAzMzYtMS5DICAgIHwgIDE3ICsrKysrCiBn Y2MvdGVzdHN1aXRlL2crKy5kZy9wcjYwMzM2LTIuQyAgICB8ICA0OCArKysr KysrKysrKysrKwogZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0zLkMg ICAgfCAgMTUgKysrKysKIGdjYy90ZXN0c3VpdGUvZysrLmRnL3ByNjAzMzYt NC5DICAgIHwgIDQ4ICsrKysrKysrKysrKysrCiBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9wcjY4MzU1LkMgICAgICB8ICAyNCArKysrKysrCiBnY2MvdHJlZS1j b3JlLmggICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBnY2MvdHJlZS1k ZmEuYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCiBnY2MvdHJlZS1z dHJlYW1lci1pbi5jICAgICAgICAgICAgICB8ICAgNSArLQogZ2NjL3RyZWUt c3RyZWFtZXItb3V0LmMgICAgICAgICAgICAgfCAgIDUgKy0KIGdjYy90cmVl LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEyICsrKysKIGdjYy91 YnNhbi5jICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICstCiBnY2Mv dmFyLXRyYWNraW5nLmMgICAgICAgICAgICAgICAgICB8ICAxOCArKystLS0K IDMwIGZpbGVzIGNoYW5nZWQsIDQ1NiBpbnNlcnRpb25zKCspLCA2NyBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2cr Ky5kZy9hYmkvZW1wdHkxMi5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuaAogY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0eTEyYS5jCiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5 MTMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRn L2FiaS9lbXB0eTEzLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2crKy5kZy9hYmkvZW1wdHkxM2EuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IGdjYy90ZXN0c3VpdGUvZysrLmRnL3ByNjAzMzYtMS5DCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0yLkMKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2crKy5kZy9wcjYwMzM2 LTMuQwogY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRn L3ByNjAzMzYtNC5DCiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvcHI2ODM1NS5DCgpkaWZmIC0tZ2l0IGEvZ2NjL2MvYy1hdXgt aW5mby5jIGIvZ2NjL2MvYy1hdXgtaW5mby5jCmluZGV4IDc5ZDk4NTEuLjkz YjAwMWIgMTAwNjQ0Ci0tLSBhL2djYy9jL2MtYXV4LWluZm8uYworKysgYi9n Y2MvYy9jLWF1eC1pbmZvLmMKQEAgLTQzMyw2ICs0MzMsOCBAQCBnZW5fdHlw ZSAoY29uc3QgY2hhciAqcmV0X3ZhbCwgdHJlZSB0LCBmb3JtYWxzX3N0eWxl IHN0eWxlKQogICAgIHJldF92YWwgPSBjb25jYXQgKCJ2b2xhdGlsZSAiLCBy ZXRfdmFsLCBOVUxMKTsKICAgaWYgKFRZUEVfUkVTVFJJQ1QgKHQpKQogICAg IHJldF92YWwgPSBjb25jYXQgKCJyZXN0cmljdCAiLCByZXRfdmFsLCBOVUxM KTsKKyAgaWYgKFRZUEVfRU1QVFlfUkVDT1JEICh0KSkKKyAgICByZXRfdmFs ID0gY29uY2F0ICgiZW1wdHktcmVjb3JkICIsIHJldF92YWwsIE5VTEwpOwog ICByZXR1cm4gcmV0X3ZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvZ2NjL2NhbGxz LmMgYi9nY2MvY2FsbHMuYwppbmRleCAxZWI0ZWM3Li45YzBlNTdkIDEwMDY0 NAotLS0gYS9nY2MvY2FsbHMuYworKysgYi9nY2MvY2FsbHMuYwpAQCAtMTE1 Miw3ICsxMTUyLDEzIEBAIGluaXRpYWxpemVfYXJndW1lbnRfaW5mb3JtYXRp b24gKGludCBudW1fYWN0dWFscyBBVFRSSUJVVEVfVU5VU0VELAogICBiaXRt YXBfb2JzdGFja19pbml0aWFsaXplIChOVUxMKTsKIAogICAvKiBJbiB0aGlz IGxvb3AsIHdlIGNvbnNpZGVyIGFyZ3MgaW4gdGhlIG9yZGVyIHRoZXkgYXJl IHdyaXR0ZW4uCi0gICAgIFdlIGZpbGwgdXAgQVJHUyBmcm9tIHRoZSBiYWNr LiAgKi8KKyAgICAgV2UgZmlsbCB1cCBBUkdTIGZyb20gdGhlIGJhY2suICBX YXJuIGVtcHR5IHJlY29yZCBpZiB0aGV5IGFyZSB1c2VkCisgICAgIGluIGEg dmFyaWFibGUgYXJndW1lbnQgbGlzdCBvciB0aGV5IGFyZW4ndCB0aGUgbGFz dCBhcmd1bWVudHMuCisgICAgIFNldCB3YXJuX2VtcHR5X3JlY29yZCB0byB0 cnVlIGlmIHdlIGRvbid0IHdhcm4gZW1wdHkgcmVjb3JkIHRvCisgICAgIGF2 b2lkIHdhbGtpbmcgYXJndW1lbnRzLiAgKi8KKyAgYm9vbCBzZWVuX2VtcHR5 X3JlY29yZCA9IGZhbHNlOworICBib29sIHdhcm5fZW1wdHlfcmVjb3JkCisg ICAgPSAoIXdhcm5fcHNhYmkgfHwgc3RkYXJnX3AgKGZuZGVjbCA/IFRSRUVf VFlQRSAoZm5kZWNsKSA6IGZudHlwZSkpOwogCiAgIGkgPSBudW1fYWN0dWFs cyAtIDE7CiAgIHsKQEAgLTExODUsNiArMTE5MSwxNSBAQCBpbml0aWFsaXpl X2FyZ3VtZW50X2luZm9ybWF0aW9uIChpbnQgbnVtX2FjdHVhbHMgQVRUUklC VVRFX1VOVVNFRCwKICAgICAgIHsKIAl0cmVlIGFyZ3R5cGUgPSBUUkVFX1RZ UEUgKGFyZyk7CiAKKwlpZiAoIXdhcm5fZW1wdHlfcmVjb3JkKQorCSAgewor CSAgICBpZiAoYXJndHlwZSAhPSBlcnJvcl9tYXJrX25vZGUKKwkJJiYgdHlw ZV9pc19lbXB0eV9yZWNvcmRfcCAoYXJndHlwZSkpCisJICAgICAgc2Vlbl9l bXB0eV9yZWNvcmQgPSB0cnVlOworCSAgICBlbHNlIGlmIChzZWVuX2VtcHR5 X3JlY29yZCkKKwkgICAgICB3YXJuX2VtcHR5X3JlY29yZCA9IHRydWU7CisJ ICB9CisKIAkvKiBSZW1lbWJlciBsYXN0IHBhcmFtIHdpdGggcG9pbnRlciBh bmQgYXNzb2NpYXRlIGl0CiAJICAgd2l0aCBmb2xsb3dpbmcgcG9pbnRlciBi b3VuZHMuICAqLwogCWlmIChDQUxMX1dJVEhfQk9VTkRTX1AgKGV4cCkKQEAg LTEzOTksOCArMTQxNCwxMyBAQCBpbml0aWFsaXplX2FyZ3VtZW50X2luZm9y bWF0aW9uIChpbnQgbnVtX2FjdHVhbHMgQVRUUklCVVRFX1VOVVNFRCwKICAg ICAgIGFyZ3NbaV0udW5zaWduZWRwID0gdW5zaWduZWRwOwogICAgICAgYXJn c1tpXS5tb2RlID0gbW9kZTsKIAotICAgICAgYXJnc1tpXS5yZWcgPSB0YXJn ZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIG1vZGUsIHR5 cGUsCi0JCQkJCQlhcmdwb3MgPCBuX25hbWVkX2FyZ3MpOworICAgICAgYXJn c1tpXS5yZWcgPSBmdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBtb2RlLCB0 eXBlLAorCQkJCSAgYXJncG9zIDwgbl9uYW1lZF9hcmdzLAorCQkJCSAgd2Fy bl9lbXB0eV9yZWNvcmQpOworCisgICAgICAvKiBPbmx5IHdhcm4gZW1wdHkg cmVjb3JkIG9uY2UuICAqLworICAgICAgaWYgKHR5cGVfaXNfZW1wdHlfcmVj b3JkX3AgKHR5cGUpKQorCXdhcm5fZW1wdHlfcmVjb3JkID0gZmFsc2U7CiAK ICAgICAgIGlmIChhcmdzW2ldLnJlZyAmJiBDT05TVF9JTlRfUCAoYXJnc1tp XS5yZWcpKQogCXsKQEAgLTE0MTMsOCArMTQzMyw4IEBAIGluaXRpYWxpemVf YXJndW1lbnRfaW5mb3JtYXRpb24gKGludCBudW1fYWN0dWFscyBBVFRSSUJV VEVfVU5VU0VELAogCSBhcmd1bWVudHMgaGF2ZSB0byBnbyBpbnRvIHRoZSBp bmNvbWluZyByZWdpc3RlcnMuICAqLwogICAgICAgaWYgKHRhcmdldG0uY2Fs bHMuZnVuY3Rpb25faW5jb21pbmdfYXJnICE9IHRhcmdldG0uY2FsbHMuZnVu Y3Rpb25fYXJnKQogCWFyZ3NbaV0udGFpbF9jYWxsX3JlZwotCSAgPSB0YXJn ZXRtLmNhbGxzLmZ1bmN0aW9uX2luY29taW5nX2FyZyAoYXJnc19zb19mYXIs IG1vZGUsIHR5cGUsCi0JCQkJCQkgYXJncG9zIDwgbl9uYW1lZF9hcmdzKTsK KwkgID0gZnVuY3Rpb25faW5jb21pbmdfYXJnIChhcmdzX3NvX2ZhciwgbW9k ZSwgdHlwZSwKKwkJCQkgICBhcmdwb3MgPCBuX25hbWVkX2FyZ3MpOwogICAg ICAgZWxzZQogCWFyZ3NbaV0udGFpbF9jYWxsX3JlZyA9IGFyZ3NbaV0ucmVn OwogCkBAIC0xNDc1LDggKzE0OTUsOCBAQCBpbml0aWFsaXplX2FyZ3VtZW50 X2luZm9ybWF0aW9uIChpbnQgbnVtX2FjdHVhbHMgQVRUUklCVVRFX1VOVVNF RCwKICAgICAgIC8qIEluY3JlbWVudCBBUkdTX1NPX0ZBUiwgd2hpY2ggaGFz IGluZm8gYWJvdXQgd2hpY2ggYXJnLXJlZ2lzdGVycwogCSBoYXZlIGJlZW4g dXNlZCwgZXRjLiAgKi8KIAotICAgICAgdGFyZ2V0bS5jYWxscy5mdW5jdGlv bl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIFRZUEVfTU9ERSAodHlwZSks Ci0JCQkJCSAgdHlwZSwgYXJncG9zIDwgbl9uYW1lZF9hcmdzKTsKKyAgICAg IGZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2ZhciwgVFlQRV9NT0RF ICh0eXBlKSwgdHlwZSwKKwkJCSAgICBhcmdwb3MgPCBuX25hbWVkX2FyZ3Mp OwogICAgIH0KIH0KIApAQCAtMzMyOCwxNCArMzM0OCwxMSBAQCBleHBhbmRf Y2FsbCAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIGludCBpZ25vcmUpCiAgICAg ICAvKiBTZXQgdXAgbmV4dCBhcmd1bWVudCByZWdpc3Rlci4gIEZvciBzaWJs aW5nIGNhbGxzIG9uIG1hY2hpbmVzCiAJIHdpdGggcmVnaXN0ZXIgd2luZG93 cyB0aGlzIHNob3VsZCBiZSB0aGUgaW5jb21pbmcgcmVnaXN0ZXIuICAqLwog ICAgICAgaWYgKHBhc3MgPT0gMCkKLQluZXh0X2FyZ19yZWcgPSB0YXJnZXRt LmNhbGxzLmZ1bmN0aW9uX2luY29taW5nX2FyZyAoYXJnc19zb19mYXIsCi0J CQkJCQkJICAgIFZPSURtb2RlLAotCQkJCQkJCSAgICB2b2lkX3R5cGVfbm9k ZSwKLQkJCQkJCQkgICAgdHJ1ZSk7CisJbmV4dF9hcmdfcmVnID0gZnVuY3Rp b25faW5jb21pbmdfYXJnIChhcmdzX3NvX2ZhciwgVk9JRG1vZGUsCisJCQkJ CSAgICAgIHZvaWRfdHlwZV9ub2RlLCB0cnVlKTsKICAgICAgIGVsc2UKLQlu ZXh0X2FyZ19yZWcgPSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZyAoYXJn c19zb19mYXIsCi0JCQkJCQkgICBWT0lEbW9kZSwgdm9pZF90eXBlX25vZGUs Ci0JCQkJCQkgICB0cnVlKTsKKwluZXh0X2FyZ19yZWcgPSBmdW5jdGlvbl9h cmcgKGFyZ3Nfc29fZmFyLCBWT0lEbW9kZSwKKwkJCQkgICAgIHZvaWRfdHlw ZV9ub2RlLCB0cnVlKTsKIAogICAgICAgaWYgKHBhc3MgPT0gMSAmJiAocmV0 dXJuX2ZsYWdzICYgRVJGX1JFVFVSTlNfQVJHKSkKIAl7CkBAIC0zOTQ3LDgg KzM5NjQsOCBAQCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xIChpbnQgcmV0 dmFsLCBydHggb3JnZnVuLCBydHggdmFsdWUsCiAgICAgICBhcmd2ZWNbY291 bnRdLm1vZGUgPSBQbW9kZTsKICAgICAgIGFyZ3ZlY1tjb3VudF0ucGFydGlh bCA9IDA7CiAKLSAgICAgIGFyZ3ZlY1tjb3VudF0ucmVnID0gdGFyZ2V0bS5j YWxscy5mdW5jdGlvbl9hcmcgKGFyZ3Nfc29fZmFyLAotCQkJCQkJICAgICAg UG1vZGUsIE5VTExfVFJFRSwgdHJ1ZSk7CisgICAgICBhcmd2ZWNbY291bnRd LnJlZyA9IGZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIFBtb2RlLCBOVUxM X1RSRUUsCisJCQkJCXRydWUpOwogICAgICAgZ2NjX2Fzc2VydCAodGFyZ2V0 bS5jYWxscy5hcmdfcGFydGlhbF9ieXRlcyAoYXJnc19zb19mYXIsIFBtb2Rl LAogCQkJCQkJICAgTlVMTF9UUkVFLCAxKSA9PSAwKTsKIApAQCAtMzk2NSw3 ICszOTgyLDcgQEAgZW1pdF9saWJyYXJ5X2NhbGxfdmFsdWVfMSAoaW50IHJl dHZhbCwgcnR4IG9yZ2Z1biwgcnR4IHZhbHVlLAogCSAgfHwgcmVnX3Bhcm1f c3RhY2tfc3BhY2UgPiAwKQogCWFyZ3Nfc2l6ZS5jb25zdGFudCArPSBhcmd2 ZWNbY291bnRdLmxvY2F0ZS5zaXplLmNvbnN0YW50OwogCi0gICAgICB0YXJn ZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zhciwg UG1vZGUsICh0cmVlKSAwLCB0cnVlKTsKKyAgICAgIGZ1bmN0aW9uX2FyZ19h ZHZhbmNlIChhcmdzX3NvX2ZhciwgUG1vZGUsICh0cmVlKSAwLCB0cnVlKTsK IAogICAgICAgY291bnQrKzsKICAgICB9CkBAIC00MDMwLDggKzQwNDcsNyBA QCBlbWl0X2xpYnJhcnlfY2FsbF92YWx1ZV8xIChpbnQgcmV0dmFsLCBydHgg b3JnZnVuLCBydHggdmFsdWUsCiAgICAgICBtb2RlID0gcHJvbW90ZV9mdW5j dGlvbl9tb2RlIChOVUxMX1RSRUUsIG1vZGUsICZ1bnNpZ25lZF9wLCBOVUxM X1RSRUUsIDApOwogICAgICAgYXJndmVjW2NvdW50XS5tb2RlID0gbW9kZTsK ICAgICAgIGFyZ3ZlY1tjb3VudF0udmFsdWUgPSBjb252ZXJ0X21vZGVzICht b2RlLCBHRVRfTU9ERSAodmFsKSwgdmFsLCB1bnNpZ25lZF9wKTsKLSAgICAg IGFyZ3ZlY1tjb3VudF0ucmVnID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9h cmcgKGFyZ3Nfc29fZmFyLCBtb2RlLAotCQkJCQkJICAgICAgTlVMTF9UUkVF LCB0cnVlKTsKKyAgICAgIGFyZ3ZlY1tjb3VudF0ucmVnID0gZnVuY3Rpb25f YXJnIChhcmdzX3NvX2ZhciwgbW9kZSwgTlVMTF9UUkVFLCB0cnVlKTsKIAog ICAgICAgYXJndmVjW2NvdW50XS5wYXJ0aWFsCiAJPSB0YXJnZXRtLmNhbGxz LmFyZ19wYXJ0aWFsX2J5dGVzIChhcmdzX3NvX2ZhciwgbW9kZSwgTlVMTF9U UkVFLCAxKTsKQEAgLTQwNjAsNyArNDA3Niw3IEBAIGVtaXRfbGlicmFyeV9j YWxsX3ZhbHVlXzEgKGludCByZXR2YWwsIHJ0eCBvcmdmdW4sIHJ0eCB2YWx1 ZSwKIAkJCSAgICAgR0VUX01PREVfU0laRSAobW9kZSkgPD0gVU5JVFNfUEVS X1dPUkQpOwogI2VuZGlmCiAKLSAgICAgIHRhcmdldG0uY2FsbHMuZnVuY3Rp b25fYXJnX2FkdmFuY2UgKGFyZ3Nfc29fZmFyLCBtb2RlLCAodHJlZSkgMCwg dHJ1ZSk7CisgICAgICBmdW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19m YXIsIG1vZGUsICh0cmVlKSAwLCB0cnVlKTsKICAgICB9CiAKICAgLyogSWYg dGhpcyBtYWNoaW5lIHJlcXVpcmVzIGFuIGV4dGVybmFsIGRlZmluaXRpb24g Zm9yIGxpYnJhcnkKQEAgLTQ0MDcsOCArNDQyMyw3IEBAIGVtaXRfbGlicmFy eV9jYWxsX3ZhbHVlXzEgKGludCByZXR2YWwsIHJ0eCBvcmdmdW4sIHJ0eCB2 YWx1ZSwKIAkgICAgICAgYnVpbGRfZnVuY3Rpb25fdHlwZSAodGZvbSwgTlVM TF9UUkVFKSwKIAkgICAgICAgb3JpZ2luYWxfYXJnc19zaXplLmNvbnN0YW50 LCBhcmdzX3NpemUuY29uc3RhbnQsCiAJICAgICAgIHN0cnVjdF92YWx1ZV9z aXplLAotCSAgICAgICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZyAoYXJn c19zb19mYXIsCi0JCQkJCSAgIFZPSURtb2RlLCB2b2lkX3R5cGVfbm9kZSwg dHJ1ZSksCisJICAgICAgIGZ1bmN0aW9uX2FyZyAoYXJnc19zb19mYXIsIFZP SURtb2RlLCB2b2lkX3R5cGVfbm9kZSwgdHJ1ZSksCiAJICAgICAgIHZhbHJl ZywKIAkgICAgICAgb2xkX2luaGliaXRfZGVmZXJfcG9wICsgMSwgY2FsbF9m dXNhZ2UsIGZsYWdzLCBhcmdzX3NvX2Zhcik7CiAKQEAgLTQ4NDMsNyArNDg1 OCwxMCBAQCBzdG9yZV9vbmVfYXJnIChzdHJ1Y3QgYXJnX2RhdGEgKmFyZywg cnR4IGFyZ2Jsb2NrLCBpbnQgZmxhZ3MsCiAJIE5vdGUgdGhhdCBpbiBDIHRo ZSBkZWZhdWx0IGFyZ3VtZW50IHByb21vdGlvbnMKIAkgd2lsbCBwcmV2ZW50 IHN1Y2ggbWlzbWF0Y2hlcy4gICovCiAKLSAgICAgIHNpemUgPSBHRVRfTU9E RV9TSVpFIChhcmctPm1vZGUpOworICAgICAgaWYgKHR5cGVfaXNfZW1wdHlf cmVjb3JkX3AgKFRSRUVfVFlQRSAocHZhbCkpKQorCXNpemUgPSAwOworICAg ICAgZWxzZQorCXNpemUgPSBHRVRfTU9ERV9TSVpFIChhcmctPm1vZGUpOwog ICAgICAgLyogQ29tcHV0ZSBob3cgbXVjaCBzcGFjZSB0aGUgcHVzaCBpbnN0 cnVjdGlvbiB3aWxsIHB1c2guCiAJIE9uIG1hbnkgbWFjaGluZXMsIHB1c2hp bmcgYSBieXRlIHdpbGwgYWR2YW5jZSB0aGUgc3RhY2sKIAkgcG9pbnRlciBi eSBhIGhhbGZ3b3JkLiAgKi8KQEAgLTQ4NzMsMTAgKzQ4OTEsMTQgQEAgc3Rv cmVfb25lX2FyZyAoc3RydWN0IGFyZ19kYXRhICphcmcsIHJ0eCBhcmdibG9j aywgaW50IGZsYWdzLAogCiAgICAgICAvKiBUaGlzIGlzbid0IGFscmVhZHkg d2hlcmUgd2Ugd2FudCBpdCBvbiB0aGUgc3RhY2ssIHNvIHB1dCBpdCB0aGVy ZS4KIAkgVGhpcyBjYW4gZWl0aGVyIGJlIGRvbmUgd2l0aCBwdXNoIG9yIGNv cHkgaW5zbnMuICAqLwotICAgICAgaWYgKCFlbWl0X3B1c2hfaW5zbiAoYXJn LT52YWx1ZSwgYXJnLT5tb2RlLCBUUkVFX1RZUEUgKHB2YWwpLCBOVUxMX1JU WCwKLQkJICAgICAgcGFybV9hbGlnbiwgcGFydGlhbCwgcmVnLCB1c2VkIC0g c2l6ZSwgYXJnYmxvY2ssCi0JCSAgICAgIEFSR1NfU0laRV9SVFggKGFyZy0+ bG9jYXRlLm9mZnNldCksIHJlZ19wYXJtX3N0YWNrX3NwYWNlLAotCQkgICAg ICBBUkdTX1NJWkVfUlRYIChhcmctPmxvY2F0ZS5hbGlnbm1lbnRfcGFkKSwg dHJ1ZSkpCisgICAgICBpZiAodXNlZAorCSAgJiYgIWVtaXRfcHVzaF9pbnNu IChhcmctPnZhbHVlLCBhcmctPm1vZGUsIFRSRUVfVFlQRSAocHZhbCksCisJ CQkgICAgICBOVUxMX1JUWCwgcGFybV9hbGlnbiwgcGFydGlhbCwgcmVnLAor CQkJICAgICAgdXNlZCAtIHNpemUsIGFyZ2Jsb2NrLAorCQkJICAgICAgQVJH U19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwKKwkJCSAgICAgIHJl Z19wYXJtX3N0YWNrX3NwYWNlLAorCQkJICAgICAgQVJHU19TSVpFX1JUWCAo YXJnLT5sb2NhdGUuYWxpZ25tZW50X3BhZCksCisJCQkgICAgICB0cnVlKSkK IAlzaWJjYWxsX2ZhaWx1cmUgPSAxOwogCiAgICAgICAvKiBVbmxlc3MgdGhp cyBpcyBhIHBhcnRpYWxseS1pbi1yZWdpc3RlciBhcmd1bWVudCwgdGhlIGFy Z3VtZW50IGlzIG5vdwpAQCAtNDkwOCwxMCArNDkzMCwxNSBAQCBzdG9yZV9v bmVfYXJnIChzdHJ1Y3QgYXJnX2RhdGEgKmFyZywgcnR4IGFyZ2Jsb2NrLCBp bnQgZmxhZ3MsCiAJewogCSAgLyogUFVTSF9ST1VORElORyBoYXMgbm8gZWZm ZWN0IG9uIHVzLCBiZWNhdXNlIGVtaXRfcHVzaF9pbnNuCiAJICAgICBmb3Ig QkxLbW9kZSBpcyBjYXJlZnVsIHRvIGF2b2lkIGl0LiAgKi8KKwkgIGJvb2wg ZW1wdHlfcmVjb3JkID0gdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAoVFJFRV9U WVBFIChwdmFsKSk7CiAJICBleGNlc3MgPSAoYXJnLT5sb2NhdGUuc2l6ZS5j b25zdGFudAotCQkgICAgLSBpbnRfc2l6ZV9pbl9ieXRlcyAoVFJFRV9UWVBF IChwdmFsKSkKKwkJICAgIC0gKGVtcHR5X3JlY29yZAorCQkgICAgICAgPyAw CisJCSAgICAgICA6IGludF9zaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKHB2 YWwpKSkKIAkJICAgICsgcGFydGlhbCk7Ci0JICBzaXplX3J0eCA9IGV4cGFu ZF9leHByIChzaXplX2luX2J5dGVzIChUUkVFX1RZUEUgKHB2YWwpKSwKKwkg IHNpemVfcnR4ID0gZXhwYW5kX2V4cHIgKChlbXB0eV9yZWNvcmQKKwkJCQkg ICA/IHNpemVfemVyb19ub2RlCisJCQkJICAgOiBzaXplX2luX2J5dGVzIChU UkVFX1RZUEUgKHB2YWwpKSksCiAJCQkJICBOVUxMX1JUWCwgVFlQRV9NT0RF IChzaXpldHlwZSksCiAJCQkJICBFWFBBTkRfTk9STUFMKTsKIAl9CkBAIC00 OTg2LDEwICs1MDEzLDEzIEBAIHN0b3JlX29uZV9hcmcgKHN0cnVjdCBhcmdf ZGF0YSAqYXJnLCBydHggYXJnYmxvY2ssIGludCBmbGFncywKIAkgICAgfQog CX0KIAotICAgICAgZW1pdF9wdXNoX2luc24gKGFyZy0+dmFsdWUsIGFyZy0+ bW9kZSwgVFJFRV9UWVBFIChwdmFsKSwgc2l6ZV9ydHgsCi0JCSAgICAgIHBh cm1fYWxpZ24sIHBhcnRpYWwsIHJlZywgZXhjZXNzLCBhcmdibG9jaywKLQkJ ICAgICAgQVJHU19TSVpFX1JUWCAoYXJnLT5sb2NhdGUub2Zmc2V0KSwgcmVn X3Bhcm1fc3RhY2tfc3BhY2UsCi0JCSAgICAgIEFSR1NfU0laRV9SVFggKGFy Zy0+bG9jYXRlLmFsaWdubWVudF9wYWQpLCBmYWxzZSk7CisgICAgICBpZiAo IUNPTlNUX0lOVF9QIChzaXplX3J0eCkgfHwgSU5UVkFMIChzaXplX3J0eCkg IT0gMCkKKwllbWl0X3B1c2hfaW5zbiAoYXJnLT52YWx1ZSwgYXJnLT5tb2Rl LCBUUkVFX1RZUEUgKHB2YWwpLAorCQkJc2l6ZV9ydHgsIHBhcm1fYWxpZ24s IHBhcnRpYWwsIHJlZywgZXhjZXNzLAorCQkJYXJnYmxvY2ssIEFSR1NfU0la RV9SVFggKGFyZy0+bG9jYXRlLm9mZnNldCksCisJCQlyZWdfcGFybV9zdGFj a19zcGFjZSwKKwkJCUFSR1NfU0laRV9SVFggKGFyZy0+bG9jYXRlLmFsaWdu bWVudF9wYWQpLAorCQkJZmFsc2UpOwogCiAgICAgICAvKiBVbmxlc3MgdGhp cyBpcyBhIHBhcnRpYWxseS1pbi1yZWdpc3RlciBhcmd1bWVudCwgdGhlIGFy Z3VtZW50IGlzIG5vdwogCSBpbiB0aGUgc3RhY2suCkBAIC01MDY3LDYgKzUw OTcsOSBAQCBtdXN0X3Bhc3NfaW5fc3RhY2tfdmFyX3NpemVfb3JfcGFkICht YWNoaW5lX21vZGUgbW9kZSwgY29uc3RfdHJlZSB0eXBlKQogICBpZiAoVFJF RV9BRERSRVNTQUJMRSAodHlwZSkpCiAgICAgcmV0dXJuIHRydWU7CiAKKyAg aWYgKHR5cGVfaXNfZW1wdHlfcmVjb3JkX3AgKHR5cGUpKQorICAgIHJldHVy biBmYWxzZTsKKwogICAvKiBJZiB0aGUgcGFkZGluZyBhbmQgbW9kZSBvZiB0 aGUgdHlwZSBpcyBzdWNoIHRoYXQgYSBjb3B5IGludG8KICAgICAgYSByZWdp c3RlciB3b3VsZCBwdXQgaXQgaW50byB0aGUgd3JvbmcgcGFydCBvZiB0aGUg cmVnaXN0ZXIuICAqLwogICBpZiAobW9kZSA9PSBCTEttb2RlCmRpZmYgLS1n aXQgYS9nY2MvY29uZmlnL2kzODYvaTM4Ni5jIGIvZ2NjL2NvbmZpZy9pMzg2 L2kzODYuYwppbmRleCBjZWNlYTI0Li4wZTZmYWM0IDEwMDY0NAotLS0gYS9n Y2MvY29uZmlnL2kzODYvaTM4Ni5jCisrKyBiL2djYy9jb25maWcvaTM4Ni9p Mzg2LmMKQEAgLTEwMjkzLDcgKzEwMjkzLDggQEAgaXg4Nl9naW1wbGlmeV92 YV9hcmcgKHRyZWUgdmFsaXN0LCB0cmVlIHR5cGUsIGdpbXBsZV9zZXEgKnBy ZV9wLAogICBpbmRpcmVjdF9wID0gcGFzc19ieV9yZWZlcmVuY2UgKE5VTEws IFRZUEVfTU9ERSAodHlwZSksIHR5cGUsIGZhbHNlKTsKICAgaWYgKGluZGly ZWN0X3ApCiAgICAgdHlwZSA9IGJ1aWxkX3BvaW50ZXJfdHlwZSAodHlwZSk7 Ci0gIHNpemUgPSBpbnRfc2l6ZV9pbl9ieXRlcyAodHlwZSk7CisgIGJvb2wg ZW1wdHlfcmVjb3JkID0gdHlwZSAmJiB0eXBlX2lzX2VtcHR5X3JlY29yZF9w ICh0eXBlKTsKKyAgc2l6ZSA9IGVtcHR5X3JlY29yZCA/IDAgOiBpbnRfc2l6 ZV9pbl9ieXRlcyAodHlwZSk7CiAgIHJzaXplID0gQ0VJTCAoc2l6ZSwgVU5J VFNfUEVSX1dPUkQpOwogCiAgIG5hdF9tb2RlID0gdHlwZV9uYXR1cmFsX21v ZGUgKHR5cGUsIE5VTEwsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL2djYy9jcC9j bGFzcy5jIGIvZ2NjL2NwL2NsYXNzLmMKaW5kZXggMjE2YTMwMS4uZTUwZmI3 MCAxMDA2NDQKLS0tIGEvZ2NjL2NwL2NsYXNzLmMKKysrIGIvZ2NjL2NwL2Ns YXNzLmMKQEAgLTY4MDIsNiArNjgwMiw5IEBAIGZpbmlzaF9zdHJ1Y3RfMSAo dHJlZSB0KQogCSAgVFlQRV9UUkFOU1BBUkVOVF9BR0dSICh0KSA9IDA7CiAJ fQogICAgIH0KKworICBpZiAoYWJpX3ZlcnNpb25fYXRfbGVhc3QgKDEwKSkK KyAgICBUWVBFX0VNUFRZX1JFQ09SRCAodCkgPSBpc19yZWFsbHlfZW1wdHlf Y2xhc3MgKHQpOwogfQogCiAvKiBJbnNlcnQgRklFTERTIGludG8gVCBmb3Ig dGhlIHNvcnRlZCBjYXNlIGlmIHRoZSBGSUVMRFMgY291bnQgaXMKZGlmZiAt LWdpdCBhL2djYy9kc2UuYyBiL2djYy9kc2UuYwppbmRleCAzNWVlZjcxLi41 OTQxMDZmIDEwMDY0NAotLS0gYS9nY2MvZHNlLmMKKysrIGIvZ2NjL2RzZS5j CkBAIC0yMzY2LDcgKzIzNjYsNyBAQCBnZXRfY2FsbF9hcmdzIChydHggY2Fs bF9pbnNuLCB0cmVlIGZuLCBydHggKmFyZ3MsIGludCBuYXJncykKICAgICB7 CiAgICAgICBtYWNoaW5lX21vZGUgbW9kZSA9IFRZUEVfTU9ERSAoVFJFRV9W QUxVRSAoYXJnKSk7CiAgICAgICBydHggcmVnLCBsaW5rLCB0bXA7Ci0gICAg ICByZWcgPSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZyAoYXJnc19zb19m YXIsIG1vZGUsIE5VTExfVFJFRSwgdHJ1ZSk7CisgICAgICByZWcgPSBmdW5j dGlvbl9hcmcgKGFyZ3Nfc29fZmFyLCBtb2RlLCBOVUxMX1RSRUUsIHRydWUp OwogICAgICAgaWYgKCFyZWcgfHwgIVJFR19QIChyZWcpIHx8IEdFVF9NT0RF IChyZWcpICE9IG1vZGUKIAkgIHx8IEdFVF9NT0RFX0NMQVNTIChtb2RlKSAh PSBNT0RFX0lOVCkKIAlyZXR1cm4gZmFsc2U7CkBAIC0yNDAwLDcgKzI0MDAs NyBAQCBnZXRfY2FsbF9hcmdzIChydHggY2FsbF9pbnNuLCB0cmVlIGZuLCBy dHggKmFyZ3MsIGludCBuYXJncykKICAgICAgIGlmICh0bXApCiAJYXJnc1tp ZHhdID0gdG1wOwogCi0gICAgICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2Fy Z19hZHZhbmNlIChhcmdzX3NvX2ZhciwgbW9kZSwgTlVMTF9UUkVFLCB0cnVl KTsKKyAgICAgIGZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zhciwg bW9kZSwgTlVMTF9UUkVFLCB0cnVlKTsKICAgICB9CiAgIGlmIChhcmcgIT0g dm9pZF9saXN0X25vZGUgfHwgaWR4ICE9IG5hcmdzKQogICAgIHJldHVybiBm YWxzZTsKZGlmZiAtLWdpdCBhL2djYy9leHByLmMgYi9nY2MvZXhwci5jCmlu ZGV4IGJkNDNkYzQuLjM4NDU4MWEgMTAwNjQ0Ci0tLSBhL2djYy9leHByLmMK KysrIGIvZ2NjL2V4cHIuYwpAQCAtMTE5OCwxMyArMTE5OCwxMiBAQCBibG9j a19tb3ZlX2xpYmNhbGxfc2FmZV9mb3JfY2FsbF9wYXJtICh2b2lkKQogICAg IGZvciAoIDsgYXJnICE9IHZvaWRfbGlzdF9ub2RlIDsgYXJnID0gVFJFRV9D SEFJTiAoYXJnKSkKICAgICAgIHsKIAltYWNoaW5lX21vZGUgbW9kZSA9IFRZ UEVfTU9ERSAoVFJFRV9WQUxVRSAoYXJnKSk7Ci0JcnR4IHRtcCA9IHRhcmdl dG0uY2FsbHMuZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwKLQkJ CQkJICAgICAgTlVMTF9UUkVFLCB0cnVlKTsKKwlydHggdG1wID0gZnVuY3Rp b25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwgTlVMTF9UUkVFLCB0cnVlKTsK IAlpZiAoIXRtcCB8fCAhUkVHX1AgKHRtcCkpCiAJICByZXR1cm4gZmFsc2U7 CiAJaWYgKHRhcmdldG0uY2FsbHMuYXJnX3BhcnRpYWxfYnl0ZXMgKGFyZ3Nf c29fZmFyLCBtb2RlLCBOVUxMLCAxKSkKIAkgIHJldHVybiBmYWxzZTsKLQl0 YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zh ciwgbW9kZSwKKwlmdW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIs IG1vZGUsCiAJCQkJCSAgICBOVUxMX1RSRUUsIHRydWUpOwogICAgICAgfQog ICB9CmRpZmYgLS1naXQgYS9nY2MvZnVuY3Rpb24uYyBiL2djYy9mdW5jdGlv bi5jCmluZGV4IDAzNWE0OWUuLjVlOTU1NjMgMTAwNjQ0Ci0tLSBhL2djYy9m dW5jdGlvbi5jCisrKyBiL2djYy9mdW5jdGlvbi5jCkBAIC0yMDc0LDcgKzIw NzQsNyBAQCBhZ2dyZWdhdGVfdmFsdWVfcCAoY29uc3RfdHJlZSBleHAsIGNv bnN0X3RyZWUgZm50eXBlKQogICBpZiAoZmxhZ19wY2Nfc3RydWN0X3JldHVy biAmJiBBR0dSRUdBVEVfVFlQRV9QICh0eXBlKSkKICAgICByZXR1cm4gMTsK IAotICBpZiAodGFyZ2V0bS5jYWxscy5yZXR1cm5faW5fbWVtb3J5ICh0eXBl LCBmbnR5cGUpKQorICBpZiAocmV0dXJuX2luX21lbW9yeSAodHlwZSwgZm50 eXBlKSkKICAgICByZXR1cm4gMTsKIAogICAvKiBNYWtlIHN1cmUgd2UgaGF2 ZSBzdWl0YWJsZSBjYWxsLWNsb2JiZXJlZCByZWdzIHRvIHJldHVybgpAQCAt MjI0Myw2ICsyMjQzLDcgQEAgc3RydWN0IGFzc2lnbl9wYXJtX2RhdGFfYWxs CiAgIEhPU1RfV0lERV9JTlQgcHJldGVuZF9hcmdzX3NpemU7CiAgIEhPU1Rf V0lERV9JTlQgZXh0cmFfcHJldGVuZF9ieXRlczsKICAgaW50IHJlZ19wYXJt X3N0YWNrX3NwYWNlOworICBib29sIHdhcm5fZW1wdHlfcmVjb3JkOwogfTsK IAogc3RydWN0IGFzc2lnbl9wYXJtX2RhdGFfb25lCkBAIC0yNDA4LDYgKzI0 MDksMjggQEAgYXNzaWduX3Bhcm1zX2F1Z21lbnRlZF9hcmdfbGlzdCAoc3Ry dWN0IGFzc2lnbl9wYXJtX2RhdGFfYWxsICphbGwpCiAgIGlmICh0YXJnZXRt LmNhbGxzLnNwbGl0X2NvbXBsZXhfYXJnKQogICAgIHNwbGl0X2NvbXBsZXhf YXJncyAoJmZuYXJncyk7CiAKKyAgLyogV2FybiBlbXB0eSByZWNvcmQgaWYg dGhleSBhcmUgdXNlZCBpbiBhIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3Qgb3IK KyAgICAgdGhleSBhcmVuJ3QgdGhlIGxhc3QgYXJndW1lbnRzLiAgU2V0IHdh cm5fZW1wdHlfcmVjb3JkIHRvIHRydWUgaWYKKyAgICAgd2UgZG9uJ3Qgd2Fy biBlbXB0eSByZWNvcmQgdG8gYXZvaWQgd2Fsa2luZyBhcmd1bWVudHMuICAq LworICBib29sIHdhcm5fZW1wdHlfcmVjb3JkID0gIXdhcm5fcHNhYmkgfHwg c3RkYXJnX3AgKGZudHlwZSk7CisgIGlmICghd2Fybl9lbXB0eV9yZWNvcmQp CisgICAgeworICAgICAgdW5zaWduZWQgaW50IGk7CisgICAgICBib29sIHNl ZW5fZW1wdHlfcmVjb3JkID0gZmFsc2U7CisgICAgICBGT1JfRUFDSF9WRUNf RUxUIChmbmFyZ3MsIGksIGFyZykKKwl7CisJICB0cmVlIHR5cGUgPSBUUkVF X1RZUEUgKGFyZyk7CisJICBpZiAodHlwZSAhPSBlcnJvcl9tYXJrX25vZGUg JiYgdHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSkpCisJICAgIHNlZW5f ZW1wdHlfcmVjb3JkID0gdHJ1ZTsKKwkgIGVsc2UgaWYgKHNlZW5fZW1wdHlf cmVjb3JkKQorCSAgICB7CisJICAgICAgd2Fybl9lbXB0eV9yZWNvcmQgPSB0 cnVlOworCSAgICAgIGJyZWFrOworCSAgICB9CisJfQorICAgIH0KKyAgYWxs LT53YXJuX2VtcHR5X3JlY29yZCA9IHdhcm5fZW1wdHlfcmVjb3JkOworCiAg IHJldHVybiBmbmFyZ3M7CiB9CiAKQEAgLTI1MjQsMTAgKzI1NDcsMTEgQEAg YXNzaWduX3Bhcm1fZmluZF9lbnRyeV9ydGwgKHN0cnVjdCBhc3NpZ25fcGFy bV9kYXRhX2FsbCAqYWxsLAogICAgICAgcmV0dXJuOwogICAgIH0KIAotICBl bnRyeV9wYXJtID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNvbWluZ19h cmcgKGFsbC0+YXJnc19zb19mYXIsCi0JCQkJCQkgICAgZGF0YS0+cHJvbW90 ZWRfbW9kZSwKLQkJCQkJCSAgICBkYXRhLT5wYXNzZWRfdHlwZSwKLQkJCQkJ CSAgICBkYXRhLT5uYW1lZF9hcmcpOworICBlbnRyeV9wYXJtID0gZnVuY3Rp b25faW5jb21pbmdfYXJnIChhbGwtPmFyZ3Nfc29fZmFyLAorCQkJCSAgICAg IGRhdGEtPnByb21vdGVkX21vZGUsCisJCQkJICAgICAgZGF0YS0+cGFzc2Vk X3R5cGUsCisJCQkJICAgICAgZGF0YS0+bmFtZWRfYXJnLAorCQkJCSAgICAg IGFsbC0+d2Fybl9lbXB0eV9yZWNvcmQpOwogCiAgIGlmIChlbnRyeV9wYXJt ID09IDApCiAgICAgZGF0YS0+cHJvbW90ZWRfbW9kZSA9IGRhdGEtPnBhc3Nl ZF9tb2RlOwpAQCAtMjU1MSw5ICsyNTc1LDkgQEAgYXNzaWduX3Bhcm1fZmlu ZF9lbnRyeV9ydGwgKHN0cnVjdCBhc3NpZ25fcGFybV9kYXRhX2FsbCAqYWxs LAogICAgICAgaWYgKHRhcmdldG0uY2FsbHMucHJldGVuZF9vdXRnb2luZ192 YXJhcmdzX25hbWVkIChhbGwtPmFyZ3Nfc29fZmFyKSkKIAl7CiAJICBydHgg dGVtOwotCSAgdGVtID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9pbmNvbWlu Z19hcmcgKGFsbC0+YXJnc19zb19mYXIsCi0JCQkJCQkgICAgIGRhdGEtPnBy b21vdGVkX21vZGUsCi0JCQkJCQkgICAgIGRhdGEtPnBhc3NlZF90eXBlLCB0 cnVlKTsKKwkgIHRlbSA9IGZ1bmN0aW9uX2luY29taW5nX2FyZyAoYWxsLT5h cmdzX3NvX2ZhciwKKwkJCQkgICAgICAgZGF0YS0+cHJvbW90ZWRfbW9kZSwK KwkJCQkgICAgICAgZGF0YS0+cGFzc2VkX3R5cGUsIHRydWUpOwogCSAgaW5f cmVncyA9IHRlbSAhPSBOVUxMOwogCX0KICAgICB9CkBAIC0zNzE1LDYgKzM3 MzksMTAgQEAgYXNzaWduX3Bhcm1zICh0cmVlIGZuZGVjbCkKICAgICAgIC8q IEZpbmQgb3V0IHdoZXJlIHRoZSBwYXJhbWV0ZXIgYXJyaXZlcyBpbiB0aGlz IGZ1bmN0aW9uLiAgKi8KICAgICAgIGFzc2lnbl9wYXJtX2ZpbmRfZW50cnlf cnRsICgmYWxsLCAmZGF0YSk7CiAKKyAgICAgIC8qIE9ubHkgd2FybiBlbXB0 eSByZWNvcmQgb25jZS4gICovCisgICAgICBpZiAodHlwZV9pc19lbXB0eV9y ZWNvcmRfcCAoZGF0YS5wYXNzZWRfdHlwZSkpCisJYWxsLndhcm5fZW1wdHlf cmVjb3JkID0gZmFsc2U7CisKICAgICAgIC8qIEZpbmQgb3V0IHdoZXJlIHN0 YWNrIHNwYWNlIGZvciB0aGlzIHBhcmFtZXRlciBtaWdodCBiZS4gICovCiAg ICAgICBpZiAoYXNzaWduX3Bhcm1faXNfc3RhY2tfcGFybSAoJmFsbCwgJmRh dGEpKQogCXsKQEAgLTM3OTEsOCArMzgxOSw4IEBAIGFzc2lnbl9wYXJtcyAo dHJlZSBmbmRlY2wpCiAJfQogCiAgICAgICAvKiBVcGRhdGUgaW5mbyBvbiB3 aGVyZSBuZXh0IGFyZyBhcnJpdmVzIGluIHJlZ2lzdGVycy4gICovCi0gICAg ICB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhbGwuYXJn c19zb19mYXIsIGRhdGEucHJvbW90ZWRfbW9kZSwKLQkJCQkJICBkYXRhLnBh c3NlZF90eXBlLCBkYXRhLm5hbWVkX2FyZyk7CisgICAgICBmdW5jdGlvbl9h cmdfYWR2YW5jZSAoYWxsLmFyZ3Nfc29fZmFyLCBkYXRhLnByb21vdGVkX21v ZGUsCisJCQkgICAgZGF0YS5wYXNzZWRfdHlwZSwgZGF0YS5uYW1lZF9hcmcp OwogCiAgICAgICBpZiAoUE9JTlRFUl9CT1VORFNfVFlQRV9QIChkYXRhLnBh c3NlZF90eXBlKSkKIAlib3VuZF9ubysrOwpAQCAtMzk4OCw4ICs0MDE2LDgg QEAgZ2ltcGxpZnlfcGFyYW1ldGVycyAodm9pZCkKIAljb250aW51ZTsKIAog ICAgICAgLyogVXBkYXRlIGluZm8gb24gd2hlcmUgbmV4dCBhcmcgYXJyaXZl cyBpbiByZWdpc3RlcnMuICAqLwotICAgICAgdGFyZ2V0bS5jYWxscy5mdW5j dGlvbl9hcmdfYWR2YW5jZSAoYWxsLmFyZ3Nfc29fZmFyLCBkYXRhLnByb21v dGVkX21vZGUsCi0JCQkJCSAgZGF0YS5wYXNzZWRfdHlwZSwgZGF0YS5uYW1l ZF9hcmcpOworICAgICAgZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFsbC5hcmdz X3NvX2ZhciwgZGF0YS5wcm9tb3RlZF9tb2RlLAorCQkJICAgIGRhdGEucGFz c2VkX3R5cGUsIGRhdGEubmFtZWRfYXJnKTsKIAogICAgICAgLyogPz8/IE9u Y2UgdXBvbiBhIHRpbWUgdmFyaWFibGVfc2l6ZSBzdHVmZmVkIHBhcmFtZXRl ciBsaXN0CiAJIFNBVkVfRVhQUnMgKGFtb25nc3Qgb3RoZXJzKSBvbnRvIGEg cGVuZGluZyBzaXplcyBsaXN0LiAgVGhpcwpAQCAtNDEzMiw4ICs0MTYwLDEx IEBAIGxvY2F0ZV9hbmRfcGFkX3Bhcm0gKG1hY2hpbmVfbW9kZSBwYXNzZWRf bW9kZSwgdHJlZSB0eXBlLCBpbnQgaW5fcmVncywKIAogICBwYXJ0X3NpemVf aW5fcmVncyA9IChyZWdfcGFybV9zdGFja19zcGFjZSA9PSAwID8gcGFydGlh bCA6IDApOwogCi0gIHNpemV0cmVlCi0gICAgPSB0eXBlID8gc2l6ZV9pbl9i eXRlcyAodHlwZSkgOiBzaXplX2ludCAoR0VUX01PREVfU0laRSAocGFzc2Vk X21vZGUpKTsKKyAgaWYgKHR5cGUpCisgICAgc2l6ZXRyZWUgPSAodHlwZV9p c19lbXB0eV9yZWNvcmRfcCAodHlwZSkKKwkJPyBzaXplX3plcm9fbm9kZSA6 IHNpemVfaW5fYnl0ZXMgKHR5cGUpKTsKKyAgZWxzZQorICAgIHNpemV0cmVl ID0gc2l6ZV9pbnQgKEdFVF9NT0RFX1NJWkUgKHBhc3NlZF9tb2RlKSk7CiAg IHdoZXJlX3BhZCA9IEZVTkNUSU9OX0FSR19QQURESU5HIChwYXNzZWRfbW9k ZSwgdHlwZSk7CiAgIGJvdW5kYXJ5ID0gdGFyZ2V0bS5jYWxscy5mdW5jdGlv bl9hcmdfYm91bmRhcnkgKHBhc3NlZF9tb2RlLCB0eXBlKTsKICAgcm91bmRf Ym91bmRhcnkgPSB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19yb3VuZF9i b3VuZGFyeSAocGFzc2VkX21vZGUsCkBAIC02ODYyLDUgKzY4OTMsNjkgQEAg bWFrZV9wYXNzX21hdGNoX2FzbV9jb25zdHJhaW50cyAoZ2NjOjpjb250ZXh0 ICpjdHh0KQogICByZXR1cm4gbmV3IHBhc3NfbWF0Y2hfYXNtX2NvbnN0cmFp bnRzIChjdHh0KTsKIH0KIAorc3RhdGljIHZvaWQKK3dhcm5fZW1wdHlfcmVj b3JkICh2b2lkKQoreworICBpZiAod2Fybl9wc2FiaSkKKyAgICBpbmZvcm0g KGlucHV0X2xvY2F0aW9uLCAidGhlIEFCSSBvZiBwYXNzaW5nIGVtcHR5IHJl Y29yZCBoYXMiCisJICAgICIgY2hhbmdlZCBpbiBHQ0MgNiIpOworfQorCisv KiBXcmFwcGVyIGZvciB0YXJnZXRtLmNhbGxzLmZ1bmN0aW9uX2FyZ19hZHZh bmNlLiAgKi8KKwordm9pZAorZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGN1bXVs YXRpdmVfYXJnc190IGNhLCBtYWNoaW5lX21vZGUgbW9kZSwKKwkJICAgICAg Y29uc3RfdHJlZSB0eXBlLCBib29sIG5hbWVkKQoreworICBpZiAodHlwZSAm JiB0eXBlX2lzX2VtcHR5X3JlY29yZF9wICh0eXBlKSkKKyAgICByZXR1cm47 CisKKyAgdGFyZ2V0bS5jYWxscy5mdW5jdGlvbl9hcmdfYWR2YW5jZSAoY2Es IG1vZGUsIHR5cGUsIG5hbWVkKTsKK30KKworLyogV3JhcHBlciBmb3IgdGFy Z2V0bS5jYWxscy5mdW5jdGlvbl9hcmcuICAqLworCitydHgKK2Z1bmN0aW9u X2FyZyAoY3VtdWxhdGl2ZV9hcmdzX3QgY2EsIG1hY2hpbmVfbW9kZSBtb2Rl LCBjb25zdF90cmVlIHR5cGUsCisJICAgICAgYm9vbCBuYW1lZCwgYm9vbCB3 YXJuX2VtcHR5X3JlY29yZF9wKQoreworICBpZiAodHlwZSAmJiB0eXBlX2lz X2VtcHR5X3JlY29yZF9wICh0eXBlKSkKKyAgICB7CisgICAgICBpZiAod2Fy bl9lbXB0eV9yZWNvcmRfcCkKKwl3YXJuX2VtcHR5X3JlY29yZCAoKTsKKyAg ICAgIHJldHVybiBOVUxMOworICAgIH0KKworICByZXR1cm4gdGFyZ2V0bS5j YWxscy5mdW5jdGlvbl9hcmcgKGNhLCBtb2RlLCB0eXBlLCBuYW1lZCk7Cit9 CisKKy8qIFdyYXBwZXIgZm9yIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25faW5j b21pbmdfYXJnLiAgKi8KKworcnR4CitmdW5jdGlvbl9pbmNvbWluZ19hcmcg KGN1bXVsYXRpdmVfYXJnc190IGNhLCBtYWNoaW5lX21vZGUgbW9kZSwKKwkJ ICAgICAgIGNvbnN0X3RyZWUgdHlwZSwgYm9vbCBuYW1lZCwKKwkJICAgICAg IGJvb2wgd2Fybl9lbXB0eV9yZWNvcmRfcCkKK3sKKyAgaWYgKHR5cGUgJiYg dHlwZV9pc19lbXB0eV9yZWNvcmRfcCAodHlwZSkpCisgICAgeworICAgICAg aWYgKHdhcm5fZW1wdHlfcmVjb3JkX3ApCisJd2Fybl9lbXB0eV9yZWNvcmQg KCk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgcmV0dXJuIHRh cmdldG0uY2FsbHMuZnVuY3Rpb25faW5jb21pbmdfYXJnIChjYSwgbW9kZSwg dHlwZSwgbmFtZWQpOworfQorCisvKiBXcmFwcGVyIGZvciB0YXJnZXRtLmNh bGxzLnJldHVybl9pbl9tZW1vcnkuICAqLworCitib29sCityZXR1cm5faW5f bWVtb3J5IChjb25zdF90cmVlIHR5cGUsIGNvbnN0X3RyZWUgZm50eXBlKQor eworICBpZiAodHlwZSAmJiB0eXBlX2lzX2VtcHR5X3JlY29yZF9wICh0eXBl KSkKKyAgICByZXR1cm4gZmFsc2U7CisKKyAgcmV0dXJuIHRhcmdldG0uY2Fs bHMucmV0dXJuX2luX21lbW9yeSAodHlwZSwgZm50eXBlKTsKK30KKwogCiAj aW5jbHVkZSAiZ3QtZnVuY3Rpb24uaCIKZGlmZiAtLWdpdCBhL2djYy9sdG8t c3RyZWFtZXItb3V0LmMgYi9nY2MvbHRvLXN0cmVhbWVyLW91dC5jCmluZGV4 IDA0OTMxM2QuLjIxMzJhYTMgMTAwNjQ0Ci0tLSBhL2djYy9sdG8tc3RyZWFt ZXItb3V0LmMKKysrIGIvZ2NjL2x0by1zdHJlYW1lci1vdXQuYwpAQCAtOTQ0 LDYgKzk0NCw4IEBAIGhhc2hfdHJlZSAoc3RydWN0IHN0cmVhbWVyX3RyZWVf Y2FjaGVfZCAqY2FjaGUsIGhhc2hfbWFwPHRyZWUsIGhhc2h2YWxfdD4gKm1h cCwKICAgICAgIGhzdGF0ZS5hZGRfZmxhZyAoVFJFRV9SRUFET05MWSAodCkp OwogICAgICAgaHN0YXRlLmFkZF9mbGFnIChUUkVFX1BVQkxJQyAodCkpOwog ICAgIH0KKyAgZWxzZQorICAgIGhzdGF0ZS5hZGRfZmxhZyAoVFlQRV9FTVBU WV9SRUNPUkQgKHQpKTsKICAgaHN0YXRlLmFkZF9mbGFnIChUUkVFX0FERFJF U1NBQkxFICh0KSk7CiAgIGhzdGF0ZS5hZGRfZmxhZyAoVFJFRV9USElTX1ZP TEFUSUxFICh0KSk7CiAgIGlmIChERUNMX1AgKHQpKQpkaWZmIC0tZ2l0IGEv Z2NjL2x0by9sdG8uYyBiL2djYy9sdG8vbHRvLmMKaW5kZXggZmNmN2NhZi4u MDNmYTg3NyAxMDA2NDQKLS0tIGEvZ2NjL2x0by9sdG8uYworKysgYi9nY2Mv bHRvL2x0by5jCkBAIC0xMDA0LDYgKzEwMDQsOCBAQCBjb21wYXJlX3RyZWVf c2Njc18xICh0cmVlIHQxLCB0cmVlIHQyLCB0cmVlICoqbWFwKQogICAgICAg Y29tcGFyZV92YWx1ZXMgKFRSRUVfUkVBRE9OTFkpOwogICAgICAgY29tcGFy ZV92YWx1ZXMgKFRSRUVfUFVCTElDKTsKICAgICB9CisgIGVsc2UKKyAgICBj b21wYXJlX3ZhbHVlcyAoVFlQRV9FTVBUWV9SRUNPUkQpOwogICBjb21wYXJl X3ZhbHVlcyAoVFJFRV9BRERSRVNTQUJMRSk7CiAgIGNvbXBhcmVfdmFsdWVz IChUUkVFX1RISVNfVk9MQVRJTEUpOwogICBpZiAoREVDTF9QICh0MSkpCmRp ZmYgLS1naXQgYS9nY2MvcHJpbnQtdHJlZS5jIGIvZ2NjL3ByaW50LXRyZWUu YwppbmRleCBjYjBmMWZkLi5iYjQ4OWZmIDEwMDY0NAotLS0gYS9nY2MvcHJp bnQtdHJlZS5jCisrKyBiL2djYy9wcmludC10cmVlLmMKQEAgLTU4Nyw2ICs1 ODcsOSBAQCBwcmludF9ub2RlIChGSUxFICpmaWxlLCBjb25zdCBjaGFyICpw cmVmaXgsIHRyZWUgbm9kZSwgaW50IGluZGVudCkKICAgICAgIGlmIChUWVBF X1JFU1RSSUNUIChub2RlKSkKIAlmcHV0cyAoIiByZXN0cmljdCIsIGZpbGUp OwogCisgICAgICBpZiAoVFlQRV9FTVBUWV9SRUNPUkQgKG5vZGUpKQorCWZw dXRzICgiIGVtcHR5LXJlY29yZCIsIGZpbGUpOworCiAgICAgICBpZiAoVFlQ RV9MQU5HX0ZMQUdfMCAobm9kZSkpCiAJZnB1dHMgKCIgdHlwZV8wIiwgZmls ZSk7CiAgICAgICBpZiAoVFlQRV9MQU5HX0ZMQUdfMSAobm9kZSkpCmRpZmYg LS1naXQgYS9nY2MvdGFyZ2V0LmggYi9nY2MvdGFyZ2V0LmgKaW5kZXggZmZj NGQ2YS4uNGYyNWE1NCAxMDA2NDQKLS0tIGEvZ2NjL3RhcmdldC5oCisrKyBi L2djYy90YXJnZXQuaApAQCAtMTA0LDYgKzEwNCwxNCBAQCBleHRlcm4gYm9v bCB0YXJnZXRfZGVmYXVsdF9wb2ludGVyX2FkZHJlc3NfbW9kZXNfcCAodm9p ZCk7CiAgICBiZWhhdmlvdXIuICAqLwogZXh0ZXJuIHVuc2lnbmVkIGludCBn ZXRfbW92ZV9yYXRpbyAoYm9vbCk7CiAKK2V4dGVybiB2b2lkIGZ1bmN0aW9u X2FyZ19hZHZhbmNlIChjdW11bGF0aXZlX2FyZ3NfdCwgbWFjaGluZV9tb2Rl LAorCQkJCSAgY29uc3RfdHJlZSwgYm9vbCk7CitleHRlcm4gcnR4IGZ1bmN0 aW9uX2FyZyAoY3VtdWxhdGl2ZV9hcmdzX3QsIG1hY2hpbmVfbW9kZSwgY29u c3RfdHJlZSwKKwkJCSBib29sLCBib29sID0gZmFsc2UpOworZXh0ZXJuIHJ0 eCBmdW5jdGlvbl9pbmNvbWluZ19hcmcgKGN1bXVsYXRpdmVfYXJnc190LCBt YWNoaW5lX21vZGUsCisJCQkJICBjb25zdF90cmVlLCBib29sLCBib29sID0g ZmFsc2UpOworZXh0ZXJuIGJvb2wgcmV0dXJuX2luX21lbW9yeSAoY29uc3Rf dHJlZSwgY29uc3RfdHJlZSk7CisKIHN0cnVjdCBzdGRhcmdfaW5mbzsKIHN0 cnVjdCBzcGVjX2luZm9fZGVmOwogc3RydWN0IGhhcmRfcmVnX3NldF9jb250 YWluZXI7CmRpZmYgLS1naXQgYS9nY2MvdGFyZ2hvb2tzLmMgYi9nY2MvdGFy Z2hvb2tzLmMKaW5kZXggZGNmMDg2My4uN2E4ZDFlOCAxMDA2NDQKLS0tIGEv Z2NjL3Rhcmdob29rcy5jCisrKyBiL2djYy90YXJnaG9va3MuYwpAQCAtMTgy Nyw5ICsxODI3LDEyIEBAIHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwciAodHJl ZSB2YWxpc3QsIHRyZWUgdHlwZSwgZ2ltcGxlX3NlcSAqcHJlX3AsCiAgIC8q IEhvaXN0IHRoZSB2YWxpc3QgdmFsdWUgaW50byBhIHRlbXBvcmFyeSBmb3Ig dGhlIG1vbWVudC4gICovCiAgIHZhbGlzdF90bXAgPSBnZXRfaW5pdGlhbGl6 ZWRfdG1wX3ZhciAodmFsaXN0LCBwcmVfcCwgTlVMTCk7CiAKKyAgYm9vbCBl bXB0eV9yZWNvcmQgPSB0eXBlX2lzX2VtcHR5X3JlY29yZF9wICh0eXBlKTsK KwogICAvKiB2YV9saXN0IHBvaW50ZXIgaXMgYWxpZ25lZCB0byBQQVJNX0JP VU5EQVJZLiAgSWYgYXJndW1lbnQgYWN0dWFsbHkKICAgICAgcmVxdWlyZXMg Z3JlYXRlciBhbGlnbm1lbnQsIHdlIG11c3QgcGVyZm9ybSBkeW5hbWljIGFs aWdubWVudC4gICovCiAgIGlmIChib3VuZGFyeSA+IGFsaWduCisgICAgICAm JiAhZW1wdHlfcmVjb3JkCiAgICAgICAmJiAhaW50ZWdlcl96ZXJvcCAoVFlQ RV9TSVpFICh0eXBlKSkpCiAgICAgewogICAgICAgdCA9IGJ1aWxkMiAoTU9E SUZZX0VYUFIsIFRSRUVfVFlQRSAodmFsaXN0KSwgdmFsaXN0X3RtcCwKQEAg LTE4NTYsNyArMTg1OSw3IEBAIHN0ZF9naW1wbGlmeV92YV9hcmdfZXhwciAo dHJlZSB2YWxpc3QsIHRyZWUgdHlwZSwgZ2ltcGxlX3NlcSAqcHJlX3AsCiAg ICAgfQogCiAgIC8qIENvbXB1dGUgdGhlIHJvdW5kZWQgc2l6ZSBvZiB0aGUg dHlwZS4gICovCi0gIHR5cGVfc2l6ZSA9IHNpemVfaW5fYnl0ZXMgKHR5cGUp OworICB0eXBlX3NpemUgPSBlbXB0eV9yZWNvcmQgPyBzaXplX3plcm9fbm9k ZSA6IHNpemVfaW5fYnl0ZXMgKHR5cGUpOwogICByb3VuZGVkX3NpemUgPSBy b3VuZF91cCAodHlwZV9zaXplLCBhbGlnbik7CiAKICAgLyogUmVkdWNlIHJv dW5kZWRfc2l6ZSBzbyBpdCdzIHNoYXJhYmxlIHdpdGggdGhlIHBvc3RxdWV1 ZS4gICovCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkv ZW1wdHkxMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIu QwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjJmZDI0 Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJp L2VtcHR5MTIuQwpAQCAtMCwwICsxLDE3IEBACisvLyBQUiBjKysvNjAzMzYK Ky8vIHsgZGctZG8gcnVuIH0KKy8vIHsgZGctb3B0aW9ucyAiLXggYyIgfQor Ly8geyBkZy1hZGRpdGlvbmFsLXNvdXJjZXMgImVtcHR5MTJhLmMiIH0KKy8v IHsgZGctcHJ1bmUtb3V0cHV0ICJjb21tYW5kIGxpbmUgb3B0aW9uIiB9CisK KyNpbmNsdWRlICJlbXB0eTEyLmgiCitleHRlcm4gIkMiIHZvaWQgZnVuKHN0 cnVjdCBkdW1teSwgc3RydWN0IGZvbyk7CisKK2ludCBtYWluKCkKK3sKKyAg c3RydWN0IGR1bW15IGQ7CisgIHN0cnVjdCBmb28gZiA9IHsgLTEsIC0yLCAt MywgLTQsIC01IH07CisKKyAgZnVuKGQsIGYpOyAvLyB7IGRnLW1lc3NhZ2Ug Im5vdGU6IHRoZSBBQkkgb2YgcGFzc2luZyBlbXB0eSByZWNvcmQgaGFzIGNo YW5nZWQgaW4gR0NDIDYiIH0KKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvZW1wdHkxMi5oIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi5jNjFhZmNkCi0tLSAvZGV2L251bGwKKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2VtcHR5MTIuaApAQCAtMCww ICsxLDkgQEAKK3N0cnVjdCBkdW1teSB7IH07CitzdHJ1Y3QgZm9vCit7Cisg IGludCBpMTsKKyAgaW50IGkyOworICBpbnQgaTM7CisgIGludCBpNDsKKyAg aW50IGk1OworfTsKZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRn L2FiaS9lbXB0eTEyYS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvYWJpL2Vt cHR5MTJhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MzRhMjViYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL2FiaS9lbXB0eTEyYS5jCkBAIC0wLDAgKzEsNiBAQAorI2luY2x1ZGUg ImVtcHR5MTIuaCIKK3ZvaWQgZnVuKHN0cnVjdCBkdW1teSBkLCBzdHJ1Y3Qg Zm9vIGYpCit7CisgIGlmIChmLmkxICE9IC0xKQorICAgIF9fYnVpbHRpbl9h Ym9ydCgpOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv YWJpL2VtcHR5MTMuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0 eTEzLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDFl MDk0NgotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRn L2FiaS9lbXB0eTEzLkMKQEAgLTAsMCArMSwxNyBAQAorLy8gUFIgYysrLzYw MzM2CisvLyB7IGRnLWRvIHJ1biB9CisvLyB7IGRnLW9wdGlvbnMgIi14IGMg LWZhYmktdmVyc2lvbj05IiB9CisvLyB7IGRnLWFkZGl0aW9uYWwtc291cmNl cyAiZW1wdHkxM2EuYyIgfQorLy8geyBkZy1wcnVuZS1vdXRwdXQgImNvbW1h bmQgbGluZSBvcHRpb24iIH0KKworI2luY2x1ZGUgImVtcHR5MTMuaCIKK2V4 dGVybiAiQyIgdm9pZCBmdW4oc3RydWN0IGR1bW15LCBzdHJ1Y3QgZm9vKTsK KworaW50IG1haW4oKQoreworICBzdHJ1Y3QgZHVtbXkgZDsKKyAgc3RydWN0 IGZvbyBmID0geyAtMSwgLTIsIC0zLCAtNCwgLTUgfTsKKworICBmdW4oZCwg Zik7CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvYWJpL2VtcHR5MTMuaCBiL2djYy90ZXN0c3VpdGUvZysrLmRn L2FiaS9lbXB0eTEzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYzYxYWZjZAotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3Vp dGUvZysrLmRnL2FiaS9lbXB0eTEzLmgKQEAgLTAsMCArMSw5IEBACitzdHJ1 Y3QgZHVtbXkgeyB9Oworc3RydWN0IGZvbworeworICBpbnQgaTE7CisgIGlu dCBpMjsKKyAgaW50IGkzOworICBpbnQgaTQ7CisgIGludCBpNTsKK307CmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvZW1wdHkxM2Eu YyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL2FiaS9lbXB0eTEzYS5jCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MzAzYTYKLS0tIC9k ZXYvbnVsbAorKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9hYmkvZW1wdHkx M2EuYwpAQCAtMCwwICsxLDYgQEAKKyNpbmNsdWRlICJlbXB0eTEzLmgiCit2 b2lkIGZ1bihzdHJ1Y3QgZHVtbXkgZCwgc3RydWN0IGZvbyBmKQoreworICBp ZiAoZi5pMSA9PSAtMSkKKyAgICBfX2J1aWx0aW5fYWJvcnQoKTsKK30KZGlm ZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3ByNjAzMzYtMS5DIGIv Z2NjL3Rlc3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0xLkMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwODYzOAotLS0gL2Rldi9udWxs CisrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3ByNjAzMzYtMS5DCkBAIC0w LDAgKzEsMTcgQEAKKy8vIHsgZGctZG8gY29tcGlsZSB9CisvLyB7IGRnLW9w dGlvbnMgIi1PMiAtc3RkPWMrKzExIC1mbm8tcGljIiB9CisvLyB7IGRnLXJl cXVpcmUtZWZmZWN0aXZlLXRhcmdldCBmcGljIH0KKworc3RydWN0IGR1bW15 IHsgfTsKK3N0cnVjdCB0cnVlX3R5cGUgeyBzdHJ1Y3QgZHVtbXkgaTsgfTsK KworZXh0ZXJuIHRydWVfdHlwZSB5OworZXh0ZXJuIHZvaWQgeHh4ICh0cnVl X3R5cGUgYyk7CisKK3ZvaWQKK3l5eSAodm9pZCkKK3sKKyAgeHh4ICh5KTsK K30KKworLy8geyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyICJqbXBcW1x0 IFxdK1xbXlwkXF0qP19aM3h4eDl0cnVlX3R5cGUiIHsgdGFyZ2V0IGk/ODYt Ki0qIHg4Nl82NC0qLSogfSB9IH0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3Vp dGUvZysrLmRnL3ByNjAzMzYtMi5DIGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcv cHI2MDMzNi0yLkMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uMzg2YzgyYQotLS0gL2Rldi9udWxsCisrKyBiL2djYy90ZXN0c3VpdGUv ZysrLmRnL3ByNjAzMzYtMi5DCkBAIC0wLDAgKzEsNDggQEAKKy8vIHsgZGct ZG8gcnVuIH0KKy8vIHsgZGctb3B0aW9ucyAiLU8yIiB9CisKKyNpbmNsdWRl IDxzdGRhcmcuaD4KKworc3RydWN0IGR1bW15IHsgfTsKKwordm9pZAordGVz dCAoc3RydWN0IGR1bW15IGEsIGludCBtLCAuLi4pIC8vIHsgZGctbWVzc2Fn ZSAibm90ZTogdGhlIEFCSSBvZiBwYXNzaW5nIGVtcHR5IHJlY29yZCBoYXMg Y2hhbmdlZCBpbiBHQ0MgNiIgfQoreworICB2YV9saXN0IHZhX2FyZ2xpc3Q7 CisgIGludCBpOworICBpbnQgY291bnQgPSAwOworCisgIGlmIChtID09IDAp CisgICAgY291bnQrKzsKKyAgdmFfc3RhcnQgKHZhX2FyZ2xpc3QsIG0pOwor ICBpID0gdmFfYXJnICh2YV9hcmdsaXN0LCBpbnQpOworICBpZiAoaSA9PSAx KQorICAgIGNvdW50Kys7CisgIGkgPSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGlu dCk7CisgIGlmIChpID09IDIpCisgIGkgPSB2YV9hcmcgKHZhX2FyZ2xpc3Qs IGludCk7CisgICAgY291bnQrKzsKKyAgaWYgKGkgPT0gMykKKyAgICBjb3Vu dCsrOworICBpID0gdmFfYXJnICh2YV9hcmdsaXN0LCBpbnQpOworICBpZiAo aSA9PSA0KQorICAgIGNvdW50Kys7CisgIGkgPSB2YV9hcmcgKHZhX2FyZ2xp c3QsIGludCk7CisgIGlmIChpID09IDUpCisgICAgY291bnQrKzsKKyAgaSA9 IHZhX2FyZyAodmFfYXJnbGlzdCwgaW50KTsKKyAgaWYgKGkgPT0gNikKKyAg ICBjb3VudCsrOworICB2YV9lbmQgKHZhX2FyZ2xpc3QpOworICBpZiAoY291 bnQgIT0gNykKKyAgICBfX2J1aWx0aW5fYWJvcnQgKCk7Cit9CisKK3N0cnVj dCBkdW1teSBhMDsKKworaW50CittYWluICgpCit7CisgIHRlc3QgKGEwLCAw LCAxLCAyLCAzLCA0LCA1LCA2KTsgLy8geyBkZy1tZXNzYWdlICJub3RlOiB0 aGUgQUJJIG9mIHBhc3NpbmcgZW1wdHkgcmVjb3JkIGhhcyBjaGFuZ2VkIGlu IEdDQyA2IiB9CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvcHI2MDMzNi0zLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9wcjYwMzM2LTMuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwLi4zYWZkYzhkCi0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nKysuZGcvcHI2MDMzNi0zLkMKQEAgLTAsMCArMSwxNSBAQAorLy8g eyBkZy1kbyBjb21waWxlIH0KKy8vIHsgZGctb3B0aW9ucyAiLU8yIiB9CisK K3N0cnVjdCBkdW1teSB7IHN0cnVjdHt9X19hdHRyaWJ1dGVfXygoYWxpZ25l ZCAoNCkpKSBhWzddOyB9OworCitleHRlcm4gdm9pZCB0ZXN0MSAoc3RydWN0 IGR1bW15LCAuLi4pOworZXh0ZXJuIHZvaWQgKCp0ZXN0MikgKHN0cnVjdCBk dW1teSwgLi4uKTsKKwordm9pZAorZm9vICgpCit7CisgIHN0cnVjdCBkdW1t eSBhMDsKKyAgdGVzdDEgKGEwKTsgLy8geyBkZy1tZXNzYWdlICJub3RlOiB0 aGUgQUJJIG9mIHBhc3NpbmcgZW1wdHkgcmVjb3JkIGhhcyBjaGFuZ2VkIGlu IEdDQyA2IiB9CisgIHRlc3QyIChhMCk7IC8vIHsgZGctbWVzc2FnZSAibm90 ZTogdGhlIEFCSSBvZiBwYXNzaW5nIGVtcHR5IHJlY29yZCBoYXMgY2hhbmdl ZCBpbiBHQ0MgNiIgfQorfQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n KysuZGcvcHI2MDMzNi00LkMgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9wcjYw MzM2LTQuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44 NzkwYTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nKysu ZGcvcHI2MDMzNi00LkMKQEAgLTAsMCArMSw0OCBAQAorLy8geyBkZy1kbyBy dW4geyB0YXJnZXQgeyB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSAmJiB7ICEg eyBpYTMyIH0gfSB9IH0gfQorLy8geyBkZy1vcHRpb25zICItTzIgLWZhYmkt dmVyc2lvbj05IiB9CisKKyNpbmNsdWRlIDxzdGRhcmcuaD4KKworc3RydWN0 IGR1bW15IHsgfTsKKwordm9pZAordGVzdCAoc3RydWN0IGR1bW15IGEsIGlu dCBtLCAuLi4pCit7CisgIHZhX2xpc3QgdmFfYXJnbGlzdDsKKyAgaW50IGk7 CisgIGludCBjb3VudCA9IDA7CisKKyAgaWYgKG0gPT0gMCkKKyAgICBjb3Vu dCsrOworICB2YV9zdGFydCAodmFfYXJnbGlzdCwgbSk7CisgIGkgPSB2YV9h cmcgKHZhX2FyZ2xpc3QsIGludCk7CisgIGlmIChpID09IDEpCisgICAgY291 bnQrKzsKKyAgaSA9IHZhX2FyZyAodmFfYXJnbGlzdCwgaW50KTsKKyAgaWYg KGkgPT0gMikKKyAgaSA9IHZhX2FyZyAodmFfYXJnbGlzdCwgaW50KTsKKyAg ICBjb3VudCsrOworICBpZiAoaSA9PSAzKQorICAgIGNvdW50Kys7CisgIGkg PSB2YV9hcmcgKHZhX2FyZ2xpc3QsIGludCk7CisgIGlmIChpID09IDQpCisg ICAgY291bnQrKzsKKyAgaSA9IHZhX2FyZyAodmFfYXJnbGlzdCwgaW50KTsK KyAgaWYgKGkgPT0gNSkKKyAgICBjb3VudCsrOworICBpID0gdmFfYXJnICh2 YV9hcmdsaXN0LCBpbnQpOworICBpZiAoaSA9PSA2KQorICAgIGNvdW50Kys7 CisgIHZhX2VuZCAodmFfYXJnbGlzdCk7CisgIGlmIChjb3VudCA9PSA3KQor ICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsKK30KKworc3RydWN0IGR1bW15IGEw OworCitpbnQKK21haW4gKCkKK3sKKyAgdGVzdCAoYTAsIDAsIDEsIDIsIDMs IDQsIDUsIDYpOworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2djYy90 ZXN0c3VpdGUvZysrLmRnL3ByNjgzNTUuQyBiL2djYy90ZXN0c3VpdGUvZysr LmRnL3ByNjgzNTUuQwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4xMzU0ZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nKysuZGcvcHI2ODM1NS5DCkBAIC0wLDAgKzEsMjQgQEAKKy8vIHsgZGct ZG8gY29tcGlsZSB9CisvLyB7IGRnLW9wdGlvbnMgIi1PMiAtc3RkPWMrKzEx IC1mbm8tcGljIiB9CisvLyB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdl dCBmcGljIH0KKwordGVtcGxhdGU8dHlwZW5hbWUgX1RwLCBfVHAgX192Pgor c3RydWN0IGludGVncmFsX2NvbnN0YW50Cit7CisgIHN0YXRpYyBjb25zdGV4 cHIgX1RwIHZhbHVlID0gX192OworICB0eXBlZGVmIF9UcCB2YWx1ZV90eXBl OworICB0eXBlZGVmIGludGVncmFsX2NvbnN0YW50PF9UcCwgX192PiB0eXBl OworICBjb25zdGV4cHIgb3BlcmF0b3IgdmFsdWVfdHlwZSgpIGNvbnN0IHsg cmV0dXJuIHZhbHVlOyB9Cit9OworCit0eXBlZGVmIGludGVncmFsX2NvbnN0 YW50PGJvb2wsIHRydWU+IHRydWVfdHlwZTsKK2V4dGVybiB2b2lkIHh4eCAo dHJ1ZV90eXBlIGMpOworCit2b2lkCit5eXkgKHZvaWQpCit7CisgIHRydWVf dHlwZSB5OworICB4eHggKHkpOworfQorCisvLyB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXIgImptcFxbXHQgXF0rXFteXCRcXSo/X1ozeHh4MTdpbnRl Z3JhbF9jb25zdGFudEliTGIxRUUiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82 NC0qLSogfSB9IH0KZGlmZiAtLWdpdCBhL2djYy90cmVlLWNvcmUuaCBiL2dj Yy90cmVlLWNvcmUuaAppbmRleCA5Y2M2NGQ5Li42N2JmZmE0IDEwMDY0NAot LS0gYS9nY2MvdHJlZS1jb3JlLmgKKysrIGIvZ2NjL3RyZWUtY29yZS5oCkBA IC0xMDg2LDYgKzEwODYsOSBAQCBzdHJ1Y3QgR1RZKCgpKSB0cmVlX2Jhc2Ug ewogICAgICAgIEZPUkNFRF9MQUJFTCBpbgogICAgICAgICAgICBMQUJFTF9E RUNMCiAKKyAgICAgICBUWVBFX0VNUFRZX1JFQ09SRCBpbgorICAgICAgICAg ICBhbGwgdHlwZXMKKwogICAgdm9sYXRpbGVfZmxhZzoKIAogICAgICAgIFRS RUVfVEhJU19WT0xBVElMRSBpbgpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtZGZh LmMgYi9nY2MvdHJlZS1kZmEuYwppbmRleCBiYjVjZDQ5Li4xNjM0ZWQ2IDEw MDY0NAotLS0gYS9nY2MvdHJlZS1kZmEuYworKysgYi9nY2MvdHJlZS1kZmEu YwpAQCAtMzk0LDYgKzM5NCw4IEBAIGdldF9yZWZfYmFzZV9hbmRfZXh0ZW50 ICh0cmVlIGV4cCwgSE9TVF9XSURFX0lOVCAqcG9mZnNldCwKICAgICAgIG1h Y2hpbmVfbW9kZSBtb2RlID0gVFlQRV9NT0RFIChUUkVFX1RZUEUgKGV4cCkp OwogICAgICAgaWYgKG1vZGUgPT0gQkxLbW9kZSkKIAlzaXplX3RyZWUgPSBU WVBFX1NJWkUgKFRSRUVfVFlQRSAoZXhwKSk7CisgICAgICBlbHNlIGlmICh0 eXBlX2lzX2VtcHR5X3JlY29yZF9wIChUUkVFX1RZUEUgKGV4cCkpKQorCWJp dHNpemUgPSAwOwogICAgICAgZWxzZQogCWJpdHNpemUgPSBpbnQgKEdFVF9N T0RFX1BSRUNJU0lPTiAobW9kZSkpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXN0cmVhbWVyLWluLmMgYi9nY2MvdHJlZS1zdHJlYW1lci1pbi5j CmluZGV4IDMxNjJkMWEuLjJhZWU3YWQgMTAwNjQ0Ci0tLSBhL2djYy90cmVl LXN0cmVhbWVyLWluLmMKKysrIGIvZ2NjL3RyZWUtc3RyZWFtZXItaW4uYwpA QCAtMTEyLDcgKzExMiwxMCBAQCB1bnBhY2tfdHNfYmFzZV92YWx1ZV9maWVs ZHMgKHN0cnVjdCBiaXRwYWNrX2QgKmJwLCB0cmVlIGV4cHIpCiAgICAgICBU UkVFX1BVQkxJQyAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1 ZSAoYnAsIDEpOwogICAgIH0KICAgZWxzZQotICAgIGJwX3VucGFja192YWx1 ZSAoYnAsIDQpOworICAgIHsKKyAgICAgIFRZUEVfRU1QVFlfUkVDT1JEIChl eHByKSA9ICh1bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7Cisg ICAgICBicF91bnBhY2tfdmFsdWUgKGJwLCAzKTsKKyAgICB9CiAgIFRSRUVf QUREUkVTU0FCTEUgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91bnBhY2tfdmFs dWUgKGJwLCAxKTsKICAgVFJFRV9USElTX1ZPTEFUSUxFIChleHByKSA9ICh1 bnNpZ25lZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7CiAgIGlmIChERUNM X1AgKGV4cHIpKQpkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3RyZWFtZXItb3V0 LmMgYi9nY2MvdHJlZS1zdHJlYW1lci1vdXQuYwppbmRleCBiZmQwNjQ0Li40 MzA2ZmNjIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1zdHJlYW1lci1vdXQuYwor KysgYi9nY2MvdHJlZS1zdHJlYW1lci1vdXQuYwpAQCAtODMsNyArODMsMTAg QEAgcGFja190c19iYXNlX3ZhbHVlX2ZpZWxkcyAoc3RydWN0IGJpdHBhY2tf ZCAqYnAsIHRyZWUgZXhwcikKICAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBU UkVFX1BVQkxJQyAoZXhwciksIDEpOwogICAgIH0KICAgZWxzZQotICAgIGJw X3BhY2tfdmFsdWUgKGJwLCAwLCA0KTsKKyAgICB7CisgICAgICBicF9wYWNr X3ZhbHVlIChicCwgVFlQRV9FTVBUWV9SRUNPUkQgKGV4cHIpLCAxKTsKKyAg ICAgIGJwX3BhY2tfdmFsdWUgKGJwLCAwLCAzKTsKKyAgICB9CiAgIGJwX3Bh Y2tfdmFsdWUgKGJwLCBUUkVFX0FERFJFU1NBQkxFIChleHByKSwgMSk7CiAg IGJwX3BhY2tfdmFsdWUgKGJwLCBUUkVFX1RISVNfVk9MQVRJTEUgKGV4cHIp LCAxKTsKICAgaWYgKERFQ0xfUCAoZXhwcikpCmRpZmYgLS1naXQgYS9nY2Mv dHJlZS5oIGIvZ2NjL3RyZWUuaAppbmRleCA5NmZmYTgzLi44YWY3NDVmIDEw MDY0NAotLS0gYS9nY2MvdHJlZS5oCisrKyBiL2djYy90cmVlLmgKQEAgLTc2 Niw2ICs3NjYsMTAgQEAgZXh0ZXJuIHZvaWQgb21wX2NsYXVzZV9yYW5nZV9j aGVja19mYWlsZWQgKGNvbnN0X3RyZWUsIGNvbnN0IGNoYXIgKiwgaW50LAog ICAgY29tcHV0ZWQgZ290b3MuICAqLwogI2RlZmluZSBGT1JDRURfTEFCRUwo Tk9ERSkgKExBQkVMX0RFQ0xfQ0hFQ0sgKE5PREUpLT5iYXNlLnNpZGVfZWZm ZWN0c19mbGFnKQogCisvKiBOb256ZXJvIGluIGEgdHlwZSBjb25zaWRlcmVk IGFuIGVtcHR5IHJlY29yZC4gICovCisjZGVmaW5lIFRZUEVfRU1QVFlfUkVD T1JEKE5PREUpIFwKKyAgKFRZUEVfQ0hFQ0sgKE5PREUpLT5iYXNlLnNpZGVf ZWZmZWN0c19mbGFnKQorCiAvKiBOb256ZXJvIG1lYW5zIHRoaXMgZXhwcmVz c2lvbiBpcyB2b2xhdGlsZSBpbiB0aGUgQyBzZW5zZToKICAgIGl0cyBhZGRy ZXNzIHNob3VsZCBiZSBvZiB0eXBlIGB2b2xhdGlsZSBXSEFURVZFUiAqJy4K ICAgIEluIG90aGVyIHdvcmRzLCB0aGUgZGVjbGFyZWQgaXRlbSBpcyB2b2xh dGlsZSBxdWFsaWZpZWQuCkBAIC01Mzc5LDYgKzUzODMsMTQgQEAgZ2V0X2Zp bmlzaCAobG9jYXRpb25fdCBsb2MpCiAgIHJldHVybiBnZXRfcmFuZ2VfZnJv bV9sb2MgKGxpbmVfdGFibGUsIGxvYykubV9maW5pc2g7CiB9CiAKKy8qIFJl dHVybiB0cnVlIGlmIHR5cGUgVCBpcyBhbiBlbXB0eSByZWNvcmQuICAqLwor CitzdGF0aWMgaW5saW5lIGJvb2wKK3R5cGVfaXNfZW1wdHlfcmVjb3JkX3Ag KGNvbnN0X3RyZWUgdCkKK3sKKyAgcmV0dXJuIFRZUEVfRU1QVFlfUkVDT1JE IChUWVBFX01BSU5fVkFSSUFOVCAodCkpOworfQorCiBleHRlcm4gbG9jYXRp b25fdCBzZXRfYmxvY2sgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIGJsb2NrKTsK IAogZXh0ZXJuIHZvaWQgZ3RfZ2djX214ICh0cmVlICYpOwpkaWZmIC0tZ2l0 IGEvZ2NjL3Vic2FuLmMgYi9nY2MvdWJzYW4uYwppbmRleCA2ZmM2MjMzLi42 ZGFmYzkwIDEwMDY0NAotLS0gYS9nY2MvdWJzYW4uYworKysgYi9nY2MvdWJz YW4uYwpAQCAtMzc5LDEwICszNzksMTEgQEAgdWJzYW5fdHlwZV9kZXNjcmlw dG9yICh0cmVlIHR5cGUsIGVudW0gdWJzYW5fcHJpbnRfc3R5bGUgcHN0eWxl KQogCiAgIGlmIChwc3R5bGUgPT0gVUJTQU5fUFJJTlRfUE9JTlRFUikKICAg ICB7Ci0gICAgICBwcF9wcmludGYgKCZwcmV0dHlfbmFtZSwgIiclcyVzJXMl cyVzJXMlcyIsCisgICAgICBwcF9wcmludGYgKCZwcmV0dHlfbmFtZSwgIicl cyVzJXMlcyVzJXMlcyVzIiwKIAkJIFRZUEVfVk9MQVRJTEUgKHR5cGUyKSA/ ICJ2b2xhdGlsZSAiIDogIiIsCiAJCSBUWVBFX1JFQURPTkxZICh0eXBlMikg PyAiY29uc3QgIiA6ICIiLAogCQkgVFlQRV9SRVNUUklDVCAodHlwZTIpID8g InJlc3RyaWN0ICIgOiAiIiwKKwkJIFRZUEVfRU1QVFlfUkVDT1JEICh0eXBl MikgPyAiZW1wdHktcmVjb3JkICIgOiAiIiwKIAkJIFRZUEVfQVRPTUlDICh0 eXBlMikgPyAiX0F0b21pYyAiIDogIiIsCiAJCSBUUkVFX0NPREUgKHR5cGUy KSA9PSBSRUNPUkRfVFlQRQogCQkgPyAic3RydWN0ICIKZGlmZiAtLWdpdCBh L2djYy92YXItdHJhY2tpbmcuYyBiL2djYy92YXItdHJhY2tpbmcuYwppbmRl eCAwN2VlYTg0Li42NzBiNDc1IDEwMDY0NAotLS0gYS9nY2MvdmFyLXRyYWNr aW5nLmMKKysrIGIvZ2NjL3Zhci10cmFja2luZy5jCkBAIC02MTM1LDEwICs2 MTM1LDEwIEBAIHByZXBhcmVfY2FsbF9hcmd1bWVudHMgKGJhc2ljX2Jsb2Nr IGJiLCBydHhfaW5zbiAqaW5zbikKIAkJICBydHggcmVnOwogCQkgIElOSVRf Q1VNVUxBVElWRV9BUkdTIChhcmdzX3NvX2Zhcl92LCB0eXBlLCBOVUxMX1JU WCwgZm5kZWNsLAogCQkJCQluYXJncyArIDEpOwotCQkgIHJlZyA9IHRhcmdl dG0uY2FsbHMuZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwKLQkJ CQkJCSAgICBzdHJ1Y3RfYWRkciwgdHJ1ZSk7Ci0JCSAgdGFyZ2V0bS5jYWxs cy5mdW5jdGlvbl9hcmdfYWR2YW5jZSAoYXJnc19zb19mYXIsIG1vZGUsCi0J CQkJCQkgICAgICBzdHJ1Y3RfYWRkciwgdHJ1ZSk7CisJCSAgcmVnID0gZnVu Y3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwgc3RydWN0X2FkZHIsCisJ CQkJICAgICAgdHJ1ZSk7CisJCSAgZnVuY3Rpb25fYXJnX2FkdmFuY2UgKGFy Z3Nfc29fZmFyLCBtb2RlLCBzdHJ1Y3RfYWRkciwKKwkJCQkJdHJ1ZSk7CiAJ CSAgaWYgKHJlZyA9PSBOVUxMX1JUWCkKIAkJICAgIHsKIAkJICAgICAgZm9y ICg7IGxpbms7IGxpbmsgPSBYRVhQIChsaW5rLCAxKSkKQEAgLTYxNTksOCAr NjE1OSw4IEBAIHByZXBhcmVfY2FsbF9hcmd1bWVudHMgKGJhc2ljX2Jsb2Nr IGJiLCBydHhfaW5zbiAqaW5zbikKIAkJICBtYWNoaW5lX21vZGUgbW9kZTsK IAkJICB0ID0gVFlQRV9BUkdfVFlQRVMgKHR5cGUpOwogCQkgIG1vZGUgPSBU WVBFX01PREUgKFRSRUVfVkFMVUUgKHQpKTsKLQkJICB0aGlzX2FyZyA9IHRh cmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwK LQkJCQkJCQkgVFJFRV9WQUxVRSAodCksIHRydWUpOworCQkgIHRoaXNfYXJn ID0gZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwKKwkJCQkJICAg VFJFRV9WQUxVRSAodCksIHRydWUpOwogCQkgIGlmICh0aGlzX2FyZyAmJiAh UkVHX1AgKHRoaXNfYXJnKSkKIAkJICAgIHRoaXNfYXJnID0gTlVMTF9SVFg7 CiAJCSAgZWxzZSBpZiAodGhpc19hcmcgPT0gTlVMTF9SVFgpCkBAIC02Mjc1 LDggKzYyNzUsNyBAQCBwcmVwYXJlX2NhbGxfYXJndW1lbnRzIChiYXNpY19i bG9jayBiYiwgcnR4X2luc24gKmluc24pCiAJCWFyZ3R5cGUgPSBidWlsZF9w b2ludGVyX3R5cGUgKGFyZ3R5cGUpOwogCQltb2RlID0gVFlQRV9NT0RFIChh cmd0eXBlKTsKIAkgICAgICB9Ci0JICAgIHJlZyA9IHRhcmdldG0uY2FsbHMu ZnVuY3Rpb25fYXJnIChhcmdzX3NvX2ZhciwgbW9kZSwKLQkJCQkJICAgICAg YXJndHlwZSwgdHJ1ZSk7CisJICAgIHJlZyA9IGZ1bmN0aW9uX2FyZyAoYXJn c19zb19mYXIsIG1vZGUsIGFyZ3R5cGUsIHRydWUpOwogCSAgICBpZiAoVFJF RV9DT0RFIChhcmd0eXBlKSA9PSBSRUZFUkVOQ0VfVFlQRQogCQkmJiBJTlRF R1JBTF9UWVBFX1AgKFRSRUVfVFlQRSAoYXJndHlwZSkpCiAJCSYmIHJlZwpA QCAtNjMzMCw4ICs2MzI5LDcgQEAgcHJlcGFyZV9jYWxsX2FyZ3VtZW50cyAo YmFzaWNfYmxvY2sgYmIsIHJ0eF9pbnNuICppbnNuKQogCQkJfQogCQkgIH0K IAkgICAgICB9Ci0JICAgIHRhcmdldG0uY2FsbHMuZnVuY3Rpb25fYXJnX2Fk dmFuY2UgKGFyZ3Nfc29fZmFyLCBtb2RlLAotCQkJCQkJYXJndHlwZSwgdHJ1 ZSk7CisJICAgIGZ1bmN0aW9uX2FyZ19hZHZhbmNlIChhcmdzX3NvX2Zhciwg bW9kZSwgYXJndHlwZSwgdHJ1ZSk7CiAJICAgIHQgPSBUUkVFX0NIQUlOICh0 KTsKIAkgIH0KICAgICAgIH0KLS0gCjIuNS4wCgo= --001a11c213cc898cba0526e2e9a0--