From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5272 invoked by alias); 11 Oct 2011 21:34:59 -0000 Received: (qmail 3823 invoked by uid 22791); 11 Oct 2011 21:34:50 -0000 X-SWARE-Spam-Status: No, hits=2.4 required=5.0 tests=AWL,BAYES_50,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,KAM_STOCKTIP,RCVD_IN_DNSWL_LOW,TW_BJ,TW_GB,TW_YM X-Spam-Check-By: sourceware.org Received: from mail-bw0-f41.google.com (HELO mail-bw0-f41.google.com) (209.85.214.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 11 Oct 2011 21:34:23 +0000 Received: by bkbzs2 with SMTP id zs2so82640bkb.0 for ; Tue, 11 Oct 2011 14:34:21 -0700 (PDT) Received: by 10.223.7.14 with SMTP id b14mr16484816fab.10.1318368861377; Tue, 11 Oct 2011 14:34:21 -0700 (PDT) MIME-Version: 1.0 Received: by 10.152.3.193 with HTTP; Tue, 11 Oct 2011 14:34:01 -0700 (PDT) In-Reply-To: <4E92E639.7000402@earthlink.net> References: <4E8DCE67.80507@earthlink.net> <4E92E639.7000402@earthlink.net> From: Justin Lebar Date: Tue, 11 Oct 2011 21:34:00 -0000 Message-ID: Subject: Re: Status of 'blacklist' patch? To: Stan Shebs Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=001517473782aa55eb04af0cab42 X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-10/txt/msg00333.txt.bz2 --001517473782aa55eb04af0cab42 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-length: 2448 Thanks a lot for the review, Stan. On Mon, Oct 10, 2011 at 8:34 AM, Stan Shebs wrote: > On 10/6/11 4:15 PM, Justin Lebar wrote: > + =C2=A0 =C2=A0* stack.h (clear_last_displayed_symtab_and_line, > + =C2=A0 =C2=A0last_displayed_symtab_and_line_is_valid, get_last_displaye= d_pspace, > + =C2=A0 =C2=A0get_last_displayed_addr, get_last_displayed_symtab, > + =C2=A0 =C2=A0get_last_displayed_line, get_last_displayed_symtab_and_lin= e): Added > + > > This is why we like periods at the end of each ChangeLog bit - this looks > like > it got cut off... plus it's good to say as "Declare." as reminder that it= 's > not a code bit that was added. This ChangeLog process seems really archaic to me. git log --stat gives me much of this information already, and git blame gives me the rest. Keeping the ChangeLog in sync with my patch takes a significant amount of work! But anyway, I've fixed it up. > +@kindex skip delete > +@item skip delete @var{n} > +Delete the skip with identifier @var{n}. > > > No mass-delete by omitting the argument?? I've added mass- enable, disable, and delete. > + =C2=A0/* Architecture we used to create the skiplist entry. May be null > + =C2=A0 =C2=A0 if the entry is pending a shared library load. */ > + =C2=A0struct gdbarch *gdbarch; > > > I'm not clear on why we need gdbarch, since CORE_ADDR should always be lo= ng > enough? > > Ah, for address printing. =C2=A0My inclination is to say to drop this adm= irable > goal and make a separate patch that attempts to be smart for address > printing in breakpoint and skip lists in general. =C2=A0It seems like a n= ice > design might look at actual values in the list and only use wide space if > all addresses are large, sort of like how html table layout works. What I have is, insofar as I can tell, exactly what we currently do for breakpoints. I can fake the length, but what about the call to ui_out_field_core_addr? > Also, in thumbing back through old discussion, I notice that the last sta= te > was that you had submitted paperwork for copyright assignment, but not > received anything, and I don't remember getting any email adding you to t= he > "has assignments" list. =C2=A0Did you ever get the confirmation from the = FSF? Yes, this is (finally) taken care of. The attached patch addresses everything except this issue with gdbarch. I didn't rebase, so you should be able to use interdiff to view the changes. -Justin --001517473782aa55eb04af0cab42 Content-Type: text/x-patch; charset=US-ASCII; name="skip-v2.diff" Content-Disposition: attachment; filename="skip-v2.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gtnepmue0 Content-length: 72456 ZGlmZiAtLWdpdCBhL2dkYi9DaGFuZ2VMb2cgYi9nZGIvQ2hhbmdlTG9nCmlu ZGV4IGExNjZkMTQuLmUwNzkxNTUgMTAwNjQ0Ci0tLSBhL2dkYi9DaGFuZ2VM b2cKKysrIGIvZ2RiL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDEx LTEwLTA2ICBKdXN0aW4gTGViYXIgIDxqdXN0aW4ubGViYXJAZ21haWwuY29t PgorCisJKiBNYWtlZmlsZS5pbjogKFNGSUxFUyk6IEFkZCBza2lwLmMuCisJ KEhGSUxFU19OT19TUkNESVIpOiBBZGQgc2tpcC5oLgorCShDT01NT05fT0JT KTogQWRkIHNraXAuby4KKwkqIHNraXAuaCwgc2tpcC5jOiBOZXcuCisJKiBi cmVha3BvaW50LmggKHNldF9kZWZhdWx0X2JyZWFrcG9pbnQpOiBSZW1vdmUu CisJKiBicmVha3BvaW50LmM6IFJlbW92ZSBkZWZhdWx0X2JyZWFrcG9pbnRf dmFsaWQsCisJZGVmYXVsdF9icmVha3BvaW50X2FkZHJlc3MsIGRlZmF1bHRf YnJlYWtwb2ludF9zeW10YWIsCisJZGVmYXVsdF9icmVha3BvaW50X2xpbmUs IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2UgdmFyaWFibGVzLgorCShzZXRf ZGVmYXVsdF9icmVha3BvaW50KTogUmVtb3ZlLgorCShwYXJzZV9icmVha3Bv aW50X3NhbHMsIGNyZWF0ZV9icmVha3BvaW50LCBjbGVhcl9jb21tYW5kLAor CWRlY29kZV9saW5lX3NwZWNfMSk6IFJlbW92ZSB1c2VzIG9mIGRlZmF1bHRf YnJlYWtwb2ludCB2YXJpYWJsZXM7CisJcmVwbGFjZWQgd2l0aCBmdW5jdGlv biBjYWxscyBpbnRvIHN0YWNrLmMuCisJKiBjbGkvY2xpLWNtZHMuaDogQWRk IGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0LgorCSogY2xpL2NsaS1jbWRz LmM6IEFkZCBza2lwbGlzdC4KKwkoaW5pdF9jbWRfbGlzdHMpOiBJbml0aWFs aXplIHNraXBsaXN0LgorCShpbml0X2NsaV9jbWRzKTogRml4IGNvbW1lbnQg KGNsYXNzZXMgb2YgY29tbWFuZHMgYXBwZWFyIGluCisJYWxwaGFiZXRpY2Fs IG9yZGVyKS4KKwkqIGluZnJ1bi5jIChoYW5kbGVfaW5mZXJpb3JfZXZlbnQp OiBBZGQgY2hlY2sgdGhhdCB3ZSBkb24ndCBzdGVwIGludG8KKwlhIGZ1bmN0 aW9uIHdob3NlIHBjIGlzIG1hcmtlZCBmb3Igc2tpcC4KKwkqIHN0YWNrLmM6 IERlY2xhcmUgbGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkLCBsYXN0X2Rpc3Bs YXllZF9wc3BhY2UsCisJbGFzdF9kaXNwbGF5ZWRfYWRkciwgbGFzdF9kaXNw bGF5ZWRfc3ltdGFiLCBsYXN0X2Rpc3BsYXllZF9saW5lCisJdmFyaWFibGVz LgorCShzZXRfbGFzdF9kaXNwbGF5ZWRfc2FsKTogTmV3IHN0YXRpYyBmdW5j dGlvbi4KKwkocHJpbnRfZnJhbWVfaW5mbyk6IFN3aXRjaCBjYWxsIHRvIHNl dF9kZWZhdWx0X2JyZWFrcG9pbnQgdG8gY2FsbCB0bworCXNldF9sYXN0X2Rp c3BsYXllZF9zYWwuCisJKGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCwgbGFz dF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkLAorCWdldF9sYXN0X2Rpc3BsYXll ZF9wc3BhY2UsIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyLAorCWdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIsIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lLAor CWdldF9sYXN0X2Rpc3BsYXllZF9zYWwpOiBOZXcgcHVibGljIGZ1bmN0aW9u cy4KKwkqIHN0YWNrLmggKGNsZWFyX2xhc3RfZGlzcGxheWVkX3NhbCwgbGFz dF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkLAorCWdldF9sYXN0X2Rpc3BsYXll ZF9wc3BhY2UsIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyLAorCWdldF9sYXN0 X2Rpc3BsYXllZF9zeW10YWIsIGdldF9sYXN0X2Rpc3BsYXllZF9saW5lLAor CWdldF9sYXN0X2Rpc3BsYXllZF9zYWwpOiBEZWNsYXJlLgorCiAyMDExLTEw LTA1ICBUcmlzdGFuIEdpbmdvbGQgIDxnaW5nb2xkQGFkYWNvcmUuY29tPgog CiAJKiBhZGEtdGFza3MuYyAocmVhZF9hdGNiKTogTWFrZSByYXZlbnNjYXJf dGFza19uYW1lIHN0YXRpYy4KQEAgLTQ3MzMsNiArNDc2OSw3IEBACiAJKHN5 bWJvbF9maWxlX2FkZCk6IFBhc3MgTlVMTCB0byB0aGUgbmV3IHBhcmFtZXRl ciBwYXJlbnQuCiAJKiBzeW1maWxlLmggKHN5bWJvbF9maWxlX2FkZF9mcm9t X2JmZCk6IE5ldyBwYXJhbWV0ZXIgcGFyZW50LgogCis8PDw8PDw8IEhFQUQK IDIwMTEtMDQtMTcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KIAogCSogZWxmcmVhZC5jIChlbGZfc3ltdGFiX3JlYWQp OiBEbyBub3QgaWdub3JlIC5MIHN5bWJvbHMgaWYgdGhleSBhcmUKZGlmZiAt LWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgppbmRl eCA4MjZkMzM5Li5kNmIwMDRiIDEwMDY0NAotLS0gYS9nZGIvTWFrZWZpbGUu aW4KKysrIGIvZ2RiL01ha2VmaWxlLmluCkBAIC03MTksNyArNzE5LDcgQEAg U0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcmludC5j IGFkYS12YWxwcmludC5jIGFkYS10YXNrcy5jIFwKIAlwcm9sb2d1ZS12YWx1 ZS5jIHBzeW10YWIuYyBcCiAJcmVnY2FjaGUuYyByZWdncm91cHMuYyByZW1v dGUuYyByZW1vdGUtZmlsZWlvLmMgcmV2ZXJzZS5jIFwKIAlzZW50aW5lbC1m cmFtZS5jIFwKLQlzZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgXAor CXNlcmlhbC5jIHNlci1iYXNlLmMgc2VyLXVuaXguYyBza2lwLmMgXAogCXNv bGliLmMgc29saWItdGFyZ2V0LmMgc291cmNlLmMgXAogCXN0YWJzcmVhZC5j IHN0YWNrLmMgc3RkLXJlZ3MuYyBzeW1maWxlLmMgc3ltZmlsZS1tZW0uYyBz eW1taXNjLmMgXAogCXN5bXRhYi5jIFwKQEAgLTgxOSw3ICs4MTksNyBAQCBv c2RhdGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRob24vcHkt ZXZlbnRzLmggcHl0aG9uL3B5LXN0b3BldmVudC5oIFwKIHB5dGhvbi9weXRo b24taW50ZXJuYWwuaCBweXRob24vcHl0aG9uLmggcmF2ZW5zY2FyLXRocmVh ZC5oIHJlY29yZC5oIFwKIHNvbGliLWRhcndpbi5oIHNvbGliLWlhNjQtaHB1 eC5oIHNvbGliLXNwdS5oIHdpbmRvd3MtbmF0LmggeGNvZmZyZWFkLmggXAog Z251bGliL2V4dHJhL2FyZy1ub25udWxsLmggZ251bGliL2V4dHJhL2MrK2Rl ZnMuaCBnbnVsaWIvZXh0cmEvd2Fybi1vbi11c2UuaCBcCi1nbnVsaWIvc3Rk ZGVmLmluLmggaW5saW5lLWZyYW1lLmggXAorZ251bGliL3N0ZGRlZi5pbi5o IGlubGluZS1mcmFtZS5oIHNraXAuaCBcCiBjb21tb24vY29tbW9uLXV0aWxz LmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21tb24v cHRpZC5oIFwKIGNvbW1vbi9saW51eC1vc2RhdGEuaAogCkBAIC05MDcsNyAr OTA3LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQRklMRVMpICQoQ09ORklHX09C UykgJChZWU9CSikgXAogCXhtbC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyB4 bWwtdXRpbHMubyBcCiAJdGFyZ2V0LWRlc2NyaXB0aW9ucy5vIHRhcmdldC1t ZW1vcnkubyB4bWwtdGRlc2MubyB4bWwtYnVpbHRpbi5vIFwKIAlpbmZlcmlv ci5vIG9zZGF0YS5vIGdkYl91c2xlZXAubyByZWNvcmQubyBnY29yZS5vIFwK LQlqaXQubyBwcm9nc3BhY2UubyBcCisJaml0Lm8gcHJvZ3NwYWNlLm8gc2tp cC5vIFwKIAljb21tb24tdXRpbHMubyBidWZmZXIubyBwdGlkLm8KIAogVFNP QlMgPSBpbmZsb3cubwpkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBi L2dkYi9icmVha3BvaW50LmMKaW5kZXggMDhmZjY5Yi4uZDY2ZDQyYiAxMDA2 NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYworKysgYi9nZGIvYnJlYWtwb2lu dC5jCkBAIC02NSw2ICs2NSw4IEBACiAjaW5jbHVkZSAicGFyc2VyLWRlZnMu aCIKICNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCiAjaW5jbHVkZSAiY29u dGludWF0aW9ucy5oIgorI2luY2x1ZGUgInN0YWNrLmgiCisjaW5jbHVkZSAi c2tpcC5oIgogCiAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCiAjaW5j bHVkZSAicmVhZGxpbmUvcmVhZGxpbmUuaCIKQEAgLTU3MiwxOSArNTc0LDYg QEAgbWFrZV9jbGVhbnVwX2RlY3JlZl9jb3VudGVkX2NvbW1hbmRfbGluZSAo c3RydWN0IGNvdW50ZWRfY29tbWFuZF9saW5lICoqY21kcCkKICAgcmV0dXJu IG1ha2VfY2xlYW51cCAoZG9fY2xlYW51cF9jb3VudGVkX2NvbW1hbmRfbGlu ZSwgY21kcCk7CiB9CiAKLS8qIERlZmF1bHQgYWRkcmVzcywgc3ltdGFiIGFu ZCBsaW5lIHRvIHB1dCBhIGJyZWFrcG9pbnQgYXQKLSAgIGZvciAiYnJlYWsi IGNvbW1hbmQgd2l0aCBubyBhcmcuCi0gICBJZiBkZWZhdWx0X2JyZWFrcG9p bnRfdmFsaWQgaXMgemVybywgdGhlIG90aGVyIHRocmVlIGFyZQotICAgbm90 IHZhbGlkLCBhbmQgImJyZWFrIiB3aXRoIG5vIGFyZyBpcyBhbiBlcnJvci4K LQotICAgVGhpcyBzZXQgYnkgcHJpbnRfc3RhY2tfZnJhbWUsIHdoaWNoIGNh bGxzIHNldF9kZWZhdWx0X2JyZWFrcG9pbnQuICAqLwotCi1pbnQgZGVmYXVs dF9icmVha3BvaW50X3ZhbGlkOwotQ09SRV9BRERSIGRlZmF1bHRfYnJlYWtw b2ludF9hZGRyZXNzOwotc3RydWN0IHN5bXRhYiAqZGVmYXVsdF9icmVha3Bv aW50X3N5bXRhYjsKLWludCBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZTsKLXN0 cnVjdCBwcm9ncmFtX3NwYWNlICpkZWZhdWx0X2JyZWFrcG9pbnRfcHNwYWNl OwotCiAMCiAvKiBSZXR1cm4gdGhlIGJyZWFrcG9pbnQgd2l0aCB0aGUgc3Bl Y2lmaWVkIG51bWJlciwgb3IgTlVMTAogICAgaWYgdGhlIG51bWJlciBkb2Vz IG5vdCByZWZlciB0byBhbiBleGlzdGluZyBicmVha3BvaW50LiAgKi8KQEAg LTUzMzksMjAgKzUzMjgsNiBAQCBkZXNjcmliZV9vdGhlcl9icmVha3BvaW50 cyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICAgfQogfQogDAotLyog U2V0IHRoZSBkZWZhdWx0IHBsYWNlIHRvIHB1dCBhIGJyZWFrcG9pbnQKLSAg IGZvciB0aGUgYGJyZWFrJyBjb21tYW5kIHdpdGggbm8gYXJndW1lbnRzLiAg Ki8KLQotdm9pZAotc2V0X2RlZmF1bHRfYnJlYWtwb2ludCAoaW50IHZhbGlk LCBzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLAotCQkJQ09SRV9BRERS IGFkZHIsIHN0cnVjdCBzeW10YWIgKnN5bXRhYiwKLQkJCWludCBsaW5lKQot ewotICBkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQgPSB2YWxpZDsKLSAgZGVm YXVsdF9icmVha3BvaW50X3BzcGFjZSA9IHBzcGFjZTsKLSAgZGVmYXVsdF9i cmVha3BvaW50X2FkZHJlc3MgPSBhZGRyOwotICBkZWZhdWx0X2JyZWFrcG9p bnRfc3ltdGFiID0gc3ltdGFiOwotICBkZWZhdWx0X2JyZWFrcG9pbnRfbGlu ZSA9IGxpbmU7Ci19CiAKIC8qIFJldHVybiB0cnVlIGlmZiBpdCBpcyBtZWFu aW5nZnVsIHRvIHVzZSB0aGUgYWRkcmVzcyBtZW1iZXIgb2YKICAgIEJQVC4g IEZvciBzb21lIGJyZWFrcG9pbnQgdHlwZXMsIHRoZSBhZGRyZXNzIG1lbWJl ciBpcyBpcnJlbGV2YW50CkBAIC03NTQzLDI0ICs3NTE4LDI2IEBAIHBhcnNl X2JyZWFrcG9pbnRfc2FscyAoY2hhciAqKmFkZHJlc3MsCiAgIGlmICgoKmFk ZHJlc3MpID09IE5VTEwKICAgICAgIHx8IChzdHJuY21wICgoKmFkZHJlc3Mp LCAiaWYiLCAyKSA9PSAwICYmIGlzc3BhY2UgKCgqYWRkcmVzcylbMl0pKSkK ICAgICB7Ci0gICAgICBpZiAoZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkKQor ICAgICAgLyogVGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCwgaWYgaXQn cyB2YWxpZCwgaXMgb3VyIGRlZmF1bHQgYnJlYWtwb2ludAorICAgICAgICAg YWRkcmVzcy4gKi8KKyAgICAgIGlmIChsYXN0X2Rpc3BsYXllZF9zYWxfaXNf dmFsaWQgKCkpCiAJewogCSAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7 CiAKIAkgIGluaXRfc2FsICgmc2FsKTsJCS8qIEluaXRpYWxpemUgdG8gemVy b2VzLiAgKi8KIAkgIHNhbHMtPnNhbHMgPSAoc3RydWN0IHN5bXRhYl9hbmRf bGluZSAqKQogCSAgICB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBzeW10YWJf YW5kX2xpbmUpKTsKLQkgIHNhbC5wYyA9IGRlZmF1bHRfYnJlYWtwb2ludF9h ZGRyZXNzOwotCSAgc2FsLmxpbmUgPSBkZWZhdWx0X2JyZWFrcG9pbnRfbGlu ZTsKLQkgIHNhbC5zeW10YWIgPSBkZWZhdWx0X2JyZWFrcG9pbnRfc3ltdGFi OwotCSAgc2FsLnBzcGFjZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2U7 Ci0JICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsK KworCSAgLyogU2V0IHNhbCdzIHBzcGFjZSwgcGMsIHN5bXRhYiwgYW5kIGxp bmUgdG8gdGhlIHZhbHVlcworCSAgICAgY29ycmVzcG9uZGluZyB0byB0aGUg bGFzdCBjYWxsIHRvIHByaW50X2ZyYW1lX2luZm8uICovCisJICBnZXRfbGFz dF9kaXNwbGF5ZWRfc2FsICgmc2FsKTsKKyAgICAgICAgICBzYWwuc2VjdGlv biA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBjKTsKIAogCSAgLyogImJyZWFr IiB3aXRob3V0IGFyZ3VtZW50cyBpcyBlcXVpdmFsZW50IHRvICJicmVhayAq UEMiCi0JICAgICB3aGVyZSBQQyBpcyB0aGUgZGVmYXVsdF9icmVha3BvaW50 X2FkZHJlc3MuICBTbyBtYWtlIHN1cmUKLQkgICAgIHRvIHNldCBzYWwuZXhw bGljaXRfcGMgdG8gcHJldmVudCBHREIgZnJvbSB0cnlpbmcgdG8KLQkgICAg IGV4cGFuZCB0aGUgbGlzdCBvZiBzYWxzIHRvIGluY2x1ZGUgYWxsIG90aGVy IGluc3RhbmNlcwotCSAgICAgd2l0aCB0aGUgc2FtZSBzeW10YWIgYW5kIGxp bmUuICAqLworCSAgICAgd2hlcmUgUEMgaXMgdGhlIGxhc3QgZGlzcGxheWVk IGNvZGVwb2ludCdzIGFkZHJlc3MuICBTbworCSAgICAgbWFrZSBzdXJlIHRv IHNldCBzYWwuZXhwbGljaXRfcGMgdG8gcHJldmVudCBHREIgZnJvbQorCSAg ICAgdHJ5aW5nIHRvIGV4cGFuZCB0aGUgbGlzdCBvZiBzYWxzIHRvIGluY2x1 ZGUgYWxsIG90aGVyCisJICAgICBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBz eW10YWIgYW5kIGxpbmUuICAqLwogCSAgc2FsLmV4cGxpY2l0X3BjID0gMTsK IAogCSAgc2Fscy0+c2Fsc1swXSA9IHNhbDsKQEAgLTc1NzQsMTkgKzc1NTEs MjIgQEAgcGFyc2VfYnJlYWtwb2ludF9zYWxzIChjaGFyICoqYWRkcmVzcywK ICAgICAgIC8qIEZvcmNlIGFsbW9zdCBhbGwgYnJlYWtwb2ludHMgdG8gYmUg aW4gdGVybXMgb2YgdGhlCiAgICAgICAgICBjdXJyZW50X3NvdXJjZV9zeW10 YWIgKHdoaWNoIGlzIGRlY29kZV9saW5lXzEncyBkZWZhdWx0KS4KICAgICAg ICAgIFRoaXMgc2hvdWxkIHByb2R1Y2UgdGhlIHJlc3VsdHMgd2Ugd2FudCBh bG1vc3QgYWxsIG9mIHRoZQotICAgICAgICAgdGltZSB3aGlsZSBsZWF2aW5n IGRlZmF1bHRfYnJlYWtwb2ludF8qIGFsb25lLgorCSB0aW1lIHdoaWxlIGxl YXZpbmcgdGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCBwb2ludGVycwor CSBhbG9uZS4KIAogICAgICAgICAgT2JqQzogSG93ZXZlciwgZG9uJ3QgbWF0 Y2ggYW4gT2JqZWN0aXZlLUMgbWV0aG9kIG5hbWUgd2hpY2gKICAgICAgICAg IG1heSBoYXZlIGEgJysnIG9yICctJyBzdWNjZWVkZWQgYnkgYSAnWycgKi8K IAkgCiAgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIGN1cnNhbCA9IGdl dF9jdXJyZW50X3NvdXJjZV9zeW10YWJfYW5kX2xpbmUgKCk7CiAJCQkKLSAg ICAgIGlmIChkZWZhdWx0X2JyZWFrcG9pbnRfdmFsaWQKKyAgICAgIGlmIChs YXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkKIAkgICYmICghY3Vyc2Fs LnN5bXRhYgogIAkgICAgICB8fCAoKHN0cmNociAoIistIiwgKCphZGRyZXNz KVswXSkgIT0gTlVMTCkKICAJCSAgJiYgKCgqYWRkcmVzcylbMV0gIT0gJ1sn KSkpKQotCSpzYWxzID0gZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwgZGVm YXVsdF9icmVha3BvaW50X3N5bXRhYiwKLQkJCSAgICAgICBkZWZhdWx0X2Jy ZWFrcG9pbnRfbGluZSwgY2Fub25pY2FsKTsKKwkqc2FscyA9IGRlY29kZV9s aW5lXzEgKGFkZHJlc3MsIDEsCisJCQkgICAgICAgZ2V0X2xhc3RfZGlzcGxh eWVkX3N5bXRhYiAoKSwKKwkJCSAgICAgICBnZXRfbGFzdF9kaXNwbGF5ZWRf bGluZSAoKSwKKwkJCSAgICAgICBjYW5vbmljYWwpOwogICAgICAgZWxzZQog CSpzYWxzID0gZGVjb2RlX2xpbmVfMSAoYWRkcmVzcywgMSwgKHN0cnVjdCBz eW10YWIgKikgTlVMTCwgMCwKIAkJICAgICAgICAgICAgICAgY2Fub25pY2Fs KTsKQEAgLTk2MTEsOSArOTU5MSwxMSBAQCB1bnRpbF9icmVha19jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSwgaW50IGFueXdoZXJlKQogICAv KiBTZXQgYSBicmVha3BvaW50IHdoZXJlIHRoZSB1c2VyIHdhbnRzIGl0IGFu ZCBhdCByZXR1cm4gZnJvbQogICAgICB0aGlzIGZ1bmN0aW9uLiAgKi8KIAot ICBpZiAoZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkKQotICAgIHNhbHMgPSBk ZWNvZGVfbGluZV8xICgmYXJnLCAxLCBkZWZhdWx0X2JyZWFrcG9pbnRfc3lt dGFiLAotCQkJICBkZWZhdWx0X2JyZWFrcG9pbnRfbGluZSwgTlVMTCk7Cisg IGlmIChsYXN0X2Rpc3BsYXllZF9zYWxfaXNfdmFsaWQgKCkpCisgICAgc2Fs cyA9IGRlY29kZV9saW5lXzEgKCZhcmcsIDEsCisJCQkgIGdldF9sYXN0X2Rp c3BsYXllZF9zeW10YWIgKCksCisJCQkgIGdldF9sYXN0X2Rpc3BsYXllZF9s aW5lICgpLAorCQkJICBOVUxMKTsKICAgZWxzZQogICAgIHNhbHMgPSBkZWNv ZGVfbGluZV8xICgmYXJnLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAw LCBOVUxMKTsKIApAQCAtMTAxMzUsMTAgKzEwMTE3LDExIEBAIGNsZWFyX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogCXhtYWxsb2MgKHNp emVvZiAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSkpOwogICAgICAgbWFrZV9j bGVhbnVwICh4ZnJlZSwgc2Fscy5zYWxzKTsKICAgICAgIGluaXRfc2FsICgm c2FsKTsJCS8qIEluaXRpYWxpemUgdG8gemVyb2VzLiAgKi8KLSAgICAgIHNh bC5saW5lID0gZGVmYXVsdF9icmVha3BvaW50X2xpbmU7Ci0gICAgICBzYWwu c3ltdGFiID0gZGVmYXVsdF9icmVha3BvaW50X3N5bXRhYjsKLSAgICAgIHNh bC5wYyA9IGRlZmF1bHRfYnJlYWtwb2ludF9hZGRyZXNzOwotICAgICAgc2Fs LnBzcGFjZSA9IGRlZmF1bHRfYnJlYWtwb2ludF9wc3BhY2U7CisKKyAgICAg IC8qIFNldCBzYWwncyBsaW5lLCBzeW10YWIsIHBjLCBhbmQgcHNwYWNlIHRv IHRoZSB2YWx1ZXMKKwkgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdCBjYWxs IHRvIHByaW50X2ZyYW1lX2luZm8uICBJZiB0aGUKKwkgY29kZXBvaW50IGlz IG5vdCB2YWxpZCwgdGhpcyB3aWxsIHNldCBhbGwgdGhlIGZpZWxkcyB0byAw LiAqLworICAgICAgZ2V0X2xhc3RfZGlzcGxheWVkX3NhbCAoJnNhbCk7CiAg ICAgICBpZiAoc2FsLnN5bXRhYiA9PSAwKQogCWVycm9yIChfKCJObyBzb3Vy Y2UgZmlsZSBzcGVjaWZpZWQuIikpOwogCkBAIC0xMTk4Niw2ICsxMTk2OSw5 IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2b2lkKQogICBjcmVhdGVfbG9uZ2pt cF9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKICAgY3JlYXRlX3N0ZF90ZXJtaW5h dGVfbWFzdGVyX2JyZWFrcG9pbnQgKCk7CiAgIGNyZWF0ZV9leGNlcHRpb25f bWFzdGVyX2JyZWFrcG9pbnQgKCk7CisKKyAgLyogV2hpbGUgd2UncmUgYXQg aXQsIHJlc2V0IHRoZSBza2lwIGxpc3QgdG9vLiAqLworICBza2lwX3JlX3Nl dCAoKTsKIH0KIAwKIC8qIFJlc2V0IHRoZSB0aHJlYWQgbnVtYmVyIG9mIHRo aXMgYnJlYWtwb2ludDoKQEAgLTEyNDM1LDcgKzEyNDIxLDggQEAgaW52YWxp ZGF0ZV9icF92YWx1ZV9vbl9tZW1vcnlfY2hhbmdlIChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwKICAgICAgIH0KIH0KIAotLyogVXNlIGRlZmF1bHRfYnJl YWtwb2ludF8ncywgb3Igbm90aGluZyBpZiB0aGV5IGFyZW4ndCB2YWxpZC4g ICovCisvKiBVc2UgdGhlIGxhc3QgZGlzcGxheWVkIGNvZGVwb2ludCdzIHZh bHVlcywgb3Igbm90aGluZworICAgaWYgdGhleSBhcmVuJ3QgdmFsaWQuICov CiAKIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogZGVjb2RlX2xpbmVfc3Bl Y18xIChjaGFyICpzdHJpbmcsIGludCBmdW5maXJzdGxpbmUpCkBAIC0xMjQ0 NCwxMCArMTI0MzEsMTAgQEAgZGVjb2RlX2xpbmVfc3BlY18xIChjaGFyICpz dHJpbmcsIGludCBmdW5maXJzdGxpbmUpCiAKICAgaWYgKHN0cmluZyA9PSAw KQogICAgIGVycm9yIChfKCJFbXB0eSBsaW5lIHNwZWNpZmljYXRpb24uIikp OwotICBpZiAoZGVmYXVsdF9icmVha3BvaW50X3ZhbGlkKQorICBpZiAobGFz dF9kaXNwbGF5ZWRfc2FsX2lzX3ZhbGlkICgpKQogICAgIHNhbHMgPSBkZWNv ZGVfbGluZV8xICgmc3RyaW5nLCBmdW5maXJzdGxpbmUsCi0JCQkgIGRlZmF1 bHRfYnJlYWtwb2ludF9zeW10YWIsCi0JCQkgIGRlZmF1bHRfYnJlYWtwb2lu dF9saW5lLAorCQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfc3ltdGFiICgpLAor CQkJICBnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKSwKIAkJCSAgTlVMTCk7 CiAgIGVsc2UKICAgICBzYWxzID0gZGVjb2RlX2xpbmVfMSAoJnN0cmluZywg ZnVuZmlyc3RsaW5lLApkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBi L2dkYi9icmVha3BvaW50LmgKaW5kZXggNWU1ZDFiOS4uZDdlMzc5OSAxMDA2 NDQKLS0tIGEvZ2RiL2JyZWFrcG9pbnQuaAorKysgYi9nZGIvYnJlYWtwb2lu dC5oCkBAIC0xMDMzLDkgKzEwMzMsNiBAQCBleHRlcm4gc3RydWN0IGJyZWFr cG9pbnQgKmNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJl YWtwb2ludCAqYnBrdCk7CiAKIGV4dGVybiB2b2lkIHNldF9pZ25vcmVfY291 bnQgKGludCwgaW50LCBpbnQpOwogCi1leHRlcm4gdm9pZCBzZXRfZGVmYXVs dF9icmVha3BvaW50IChpbnQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICosCi0J CQkJICAgIENPUkVfQUREUiwgc3RydWN0IHN5bXRhYiAqLCBpbnQpOwotCiBl eHRlcm4gdm9pZCBicmVha3BvaW50X2luaXRfaW5mZXJpb3IgKGVudW0gaW5m X2NvbnRleHQpOwogCiBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xl YW51cF9kZWxldGVfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKik7 CmRpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS1jbWRzLmMgYi9nZGIvY2xpL2Ns aS1jbWRzLmMKaW5kZXggY2NmNmVhNi4uZGFiM2ExMiAxMDA2NDQKLS0tIGEv Z2RiL2NsaS9jbGktY21kcy5jCisrKyBiL2dkYi9jbGkvY2xpLWNtZHMuYwpA QCAtMTg1LDYgKzE4NSw4IEBAIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpz ZXRjaGVja2xpc3Q7CiAKIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93 Y2hlY2tsaXN0OwogCitzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2tpcGxp c3Q7CisKIC8qIENvbW1hbmQgdHJhY2luZyBzdGF0ZS4gICovCiAKIGludCBz b3VyY2VfdmVyYm9zZSA9IDA7CkBAIC0xMzI5LDYgKzEzMzEsNyBAQCBpbml0 X2NtZF9saXN0cyAodm9pZCkKICAgc2hvd3ByaW50bGlzdCA9IE5VTEw7CiAg IHNldGNoZWNrbGlzdCA9IE5VTEw7CiAgIHNob3djaGVja2xpc3QgPSBOVUxM OworICBza2lwbGlzdCA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0x Mzk0LDcgKzEzOTcsNyBAQCBpbml0X2NsaV9jbWRzICh2b2lkKQogICBjaGFy ICpzb3VyY2VfaGVscF90ZXh0OwogCiAgIC8qIERlZmluZSB0aGUgY2xhc3Nl cyBvZiBjb21tYW5kcy4KLSAgICAgVGhleSB3aWxsIGFwcGVhciBpbiB0aGUg aGVscCBsaXN0IGluIHRoZSByZXZlcnNlIG9mIHRoaXMgb3JkZXIuICAqLwor ICAgICBUaGV5IHdpbGwgYXBwZWFyIGluIHRoZSBoZWxwIGxpc3QgaW4gYWxw aGFiZXRpY2FsIG9yZGVyLiAgKi8KIAogICBhZGRfY21kICgiaW50ZXJuYWxz IiwgY2xhc3NfbWFpbnRlbmFuY2UsIE5VTEwsIF8oIlwKIE1haW50ZW5hbmNl IGNvbW1hbmRzLlxuXApkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktY21kcy5o IGIvZ2RiL2NsaS9jbGktY21kcy5oCmluZGV4IGU3OWRjZjAuLjczY2NkZDIg MTAwNjQ0Ci0tLSBhL2dkYi9jbGkvY2xpLWNtZHMuaAorKysgYi9nZGIvY2xp L2NsaS1jbWRzLmgKQEAgLTEwNiw2ICsxMDYsOCBAQCBleHRlcm4gc3RydWN0 IGNtZF9saXN0X2VsZW1lbnQgKnNldGNoZWNrbGlzdDsKIAogZXh0ZXJuIHN0 cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0OwogCitleHRl cm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNraXBsaXN0OworCiAvKiBF eHBvcnRlZCB0byBnZGIvdG9wLmMgKi8KIAogdm9pZCBpbml0X2NtZF9saXN0 cyAodm9pZCk7CmRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIv Z2RiL2RvYy9nZGIudGV4aW5mbwppbmRleCBkZDBmN2Y2Li5hN2E3ZTljIDEw MDY0NAotLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2dkYi9kb2Mv Z2RiLnRleGluZm8KQEAgLTQ4NTQsNiArNDg1NCwxMDkgQEAgcHJvY2VlZCB1 bnRpbCB0aGUgZnVuY3Rpb24gcmV0dXJucy4KIEFuIGFyZ3VtZW50IGlzIGEg cmVwZWF0IGNvdW50LCBhcyBpbiBAY29kZXtuZXh0fS4KIEBlbmQgdGFibGUK IAorQG5vZGUgU2tpcHBpbmcgT3ZlciBGdW5jdGlvbnMgYW5kIEZpbGVzCitA c3Vic2VjdGlvbiBTa2lwcGluZyBPdmVyIEZ1bmN0aW9ucyBhbmQgRmlsZXMK K0BjaW5kZXggc2tpcAorCitUaGUgcHJvZ3JhbSB5b3UgYXJlIGRlYnVnZ2lu ZyBtYXkgY29udGFpbiBzb21lIGZ1bmN0aW9ucyB3aGljaCBhcmUKK3VuaW50 ZXJlc3RpbmcgdG8gZGVidWcuICBUaGUgQGNvZGV7c2tpcH0gY29tYW5kIGxl dHMgeW91IHRlbGwgQHZhbHVle0dEQk59IHRvCitza2lwIG92ZXIgYSBmaWxl IG9yIGZ1bmN0aW9uIHdoZW4gc3RlcHBpbmcuCisKK0ZvciBleGFtcGxlLCBj b25zaWRlciB0aGUgZm9sbG93aW5nIEMgZnVuY3Rpb246CisKK0BzbWFsbGV4 YW1wbGUKKzEwMSAgICAgaW50IGZ1bmMoKQorMTAyICAgICBAeworMTAzICAg ICAgICAgZm9vKGJvcmluZygpKTsKKzEwNCAgICAgICAgIGJhcihib3Jpbmco KSk7CisxMDUgICAgIEB9CitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9pbmRl bnQKK1N1cHBvc2UgeW91IHdpc2ggdG8gc3RlcCBpbnRvIHRoZSBmdW5jdGlv bnMgQGNvZGV7Zm9vfSBhbmQgQGNvZGV7YmFyfSwgYnV0IHlvdQorYXJlIG5v dCBpbnRlcmVzdGVkIGluIHN0ZXBwaW5nIHRocm91Z2ggQGNvZGV7Ym9yaW5n fS4gIElmIHlvdSBydW4gQGNvZGV7c3RlcH0KK2F0IGxpbmUgMTAzLCB5b3Un bGwgZW50ZXIgQGNvZGV7Ym9yaW5nKCl9LCBidXQgaWYgeW91IHJ1biBAY29k ZXtuZXh0fSwgeW91J2xsCitzdGVwIG92ZXIgYm90aCBAY29kZXtmb299IGFu ZCBAY29kZXtib3Jpbmd9IQorCitPbmUgc29sdXRpb24gaXMgdG8gQGNvZGV7 c3RlcH0gaW50byBAY29kZXtib3Jpbmd9IGFuZCB1c2UgdGhlIEBjb2Rle2Zp bmlzaH0KK2NvbW1hbmQgdG8gaW1tZWRpYXRlbHkgZXhpdCBpdC4gIEJ1dCB0 aGlzIGNhbiBiZWNvbWUgdGVkaW91cyBpZiBAY29kZXtib3Jpbmd9CitpcyBj YWxsZWQgZnJvbSBtYW55IHBsYWNlcy4KKworQSBtb3JlIGZsZXhpYmxlIHNv bHV0aW9uIGlzIHRvIGV4ZWN1dGUgQGNvZGV7c2tpcCBib3Jpbmd9LiAgVGhp cyBpbnN0cnVjdHMKK0B2YWx1ZXtHREJOfSBuZXZlciB0byBzdGVwIGludG8g QGNvZGV7Ym9yaW5nfS4gIE5vdyB3aGVuIHlvdSBleGVjdXRlCitAY29kZXtz dGVwfSBhdCBsaW5lIDEwMywgeW91J2xsIHN0ZXAgb3ZlciBAY29kZXtib3Jp bmd9IGFuZCBkaXJlY3RseSBpbnRvCitAY29kZXtmb299LgorCitZb3UgY2Fu IGFsc28gaW5zdHJ1Y3QgQHZhbHVle0dEQk59IHRvIHNraXAgYWxsIGZ1bmN0 aW9ucyBpbiBhIGZpbGUsIHdpdGgsIGZvcgorZXhhbXBsZSwgQGNvZGV7c2tp cCBmaWxlIGJvcmluZy5jfS4KKworQHRhYmxlIEBjb2RlCitAa2luZGV4IHNr aXAKK0BraW5kZXggc2tpcCBmdW5jdGlvbgorQGl0ZW0gc2tpcCBAcntbfUB2 YXJ7bGluZXNwZWN9QHJ7XX0KK0BpdGVteCBza2lwIGZ1bmN0aW9uIEBye1t9 QHZhcntsaW5lc3BlY31AcntdfQorQWZ0ZXIgcnVubmluZyB0aGlzIGNvbW1h bmQsIHRoZSBmdW5jdGlvbiBuYW1lZCBieSBAdmFye2xpbmVzcGVjfSBvciB0 aGUKK2Z1bmN0aW9uIGNvbnRhaW5pbmcgdGhlIGxpbmUgbmFtZWQgYnkgQHZh cntsaW5lc3BlY30gd2lsbCBiZSBza2lwcGVkIG92ZXIgd2hlbgorc3RlcHBp bmcuICAoQHB4cmVme1NwZWNpZnkgTG9jYXRpb259KSAKKworSWYgeW91IGRv IG5vdCBzcGVjaWZ5IEB2YXJ7bGluZXNwZWN9LCB0aGUgZnVuY3Rpb24geW91 J3JlIGN1cnJlbnRseSBkZWJ1Z2dpbmcKK3dpbGwgYmUgc2tpcHBlZC4KKwor QGtpbmRleCBza2lwIGZpbGUKK0BpdGVtIHNraXAgZmlsZSBAcntbfUB2YXJ7 ZmlsZW5hbWV9QHJ7XX0KK0FmdGVyIHJ1bm5pbmcgdGhpcyBjb21tYW5kLCBh bnkgZnVuY3Rpb24gd2hvc2Ugc291cmNlIGxpdmVzIGluIEB2YXJ7ZmlsZW5h bWV9Cit3aWxsIGJlIHNraXBwZWQgb3ZlciB3aGVuIHN0ZXBwaW5nLgorCitJ ZiB5b3UgZG8gbm90IHNwZWNpZnkgQHZhcntmaWxlbmFtZX0sIGZ1bmN0aW9u cyB3aG9zZSBzb3VyY2UgbGl2ZXMgaW4gdGhlIGZpbGUKK3lvdSdyZSBjdXJy ZW50bHkgZGVidWdnaW5nIHdpbGwgYmUgc2tpcHBlZC4KK0BlbmQgdGFibGUK KworU2tpcHMgY2FuIGJlIGxpc3RlZCwgZGVsZXRlZCwgZGlzYWJsZWQsIGFu ZCBlbmFibGVkLCBtdWNoIGxpa2UgYnJlYWtwb2ludHMuCitUaGVzZSBhcmUg dGhlIGNvbW1hbmRzIGZvciBtYW5hZ2luZyB5b3VyIGxpc3Qgb2Ygc2tpcHM6 CisKK0B0YWJsZSBAY29kZQorQGtpbmRleCBpbmZvIHNraXAKK0BpdGVtIGlu Zm8gc2tpcCBAcntbfUB2YXJ7bn1AcntdfQorUHJpbnQgZGV0YWlscyBhYm91 dCB0aGUgc2tpcCB3aXRoIGlkZW50aWZpZXIgQHZhcntufS4gIElmIEB2YXJ7 bn0gaXMgbm90CitzcGVjaWZpZWQsIHByaW50IGEgdGFibGUgd2l0aCBkZXRh aWxzIGFib3V0IGFsbCBmdW5jdGlvbnMgYW5kIGZpbGVzIG1hcmtlZCBmb3IK K3NraXBwaW5nLiAgQGNvZGV7aW5mbyBza2lwfSBwcmludHMgdGhlIGZvbGxv d2luZyBpbmZvcm1hdGlvbjoKKworQHRhYmxlIEBlbXBoCitAaXRlbSBJZGVu dGlmaWVyCitBIG51bWJlciBpZGVudGlmeWluZyB0aGlzIHNraXAuCitAaXRl bSBUeXBlCitAc2FtcHtmdW5jdGlvbn0gb3IgQHNhbXB7ZmlsZX0KK0BpdGVt IEVuYWJsZWQgb3IgRGlzYWJsZWQKK0VuYWJsZWQgc2tpcHMgYXJlIG1hcmtl ZCB3aXRoIEBzYW1we3l9LiAgRGlzYWJsZWQgc2tpcHMgYXJlIG1hcmtlZCB3 aXRoIEBzYW1we259LgorQGl0ZW0gQWRkcmVzcworRm9yIGZ1bmN0aW9uIHNr aXBzLCB0aGlzIGNvbHVtbiBpbmRpY2F0ZXMgdGhlIGFkZHJlc3MgaW4gbWVt b3J5IG9mIHRoZSBmdW5jdGlvbgorYmVpbmcgc2tpcHBlZC4gIElmIHlvdSd2 ZSBzZXQgYSBmdW5jdGlvbiBza2lwIG9uIGEgZnVuY3Rpb24gd2hpY2ggaGFz IG5vdCB5ZXQKK2JlZW4gbG9hZGVkLCB0aGlzIGZpZWxkIHdpbGwgY29udGFp biBAc2FtcHs8UEVORElORz59LiAgT25jZSBhIHNoYXJlZCBsaWJyYXJ5Cit3 aGljaCBoYXMgdGhlIGZ1bmN0aW9uIGlzIGxvYWRlZCwgQGNvZGV7aW5mbyBi cmVha30gd2lsbCBzaG93IHRoZSBmdW5jdGlvbidzCithZGRyZXNzIGhlcmUu CitAaXRlbSBXaGF0CitGb3IgZmlsZSBza2lwcywgdGhpcyBmaWVsZCBjb250 YWlucyB0aGUgZmlsZW5hbWUgYmVpbmcgc2tpcHBlZC4gIEZvciBmdW5jdGlv bnMKK3NraXBzLCB0aGlzIGZpZWxkIGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBu YW1lIGFuZCBpdHMgbGluZSBudW1iZXIgaW4gdGhlIGZpbGUKK3doZXJlIGl0 IGlzIGRlZmluZWQuCitAZW5kIHRhYmxlCisKK0BraW5kZXggc2tpcCBkZWxl dGUKK0BpdGVtIHNraXAgZGVsZXRlIEBye1t9QHZhcntufUBye119CitEZWxl dGUgdGhlIHNraXAgd2l0aCBpZGVudGlmaWVyIEB2YXJ7bn0uICBJZiBAdmFy e259IGlzIG5vdCBzcGVjaWZpZWQsIGRlbGV0ZQorYWxsIHNraXBzLgorCitA a2luZGV4IHNraXAgZW5hYmxlCitAaXRlbSBza2lwIGVuYWJsZSBAcntbfUB2 YXJ7bn1AcntdfQorRW5hYmxlIHRoZSBza2lwIHdpdGggaWRlbnRpZmllciBA dmFye259LiAgSWYgQHZhcntufSBpcyBub3Qgc3BlY2lmaWVkLCBlbmFibGUK K2FsbCBza2lwcy4KKworQGtpbmRleCBza2lwIGRpc2FibGUKK0BpdGVtIHNr aXAgZGlzYWJsZSBAcntbfUB2YXJ7bn1AcntdfQorRGlzYWJsZSB0aGUgc2tp cCB3aXRoIGlkZW50aWZpZXIgQHZhcntufS4gIElmIEB2YXJ7bn0gaXMgbm90 IHNwZWNpZmllZCwgZGlzYWJsZQorYWxsIHNraXBzLgorCitAZW5kIHRhYmxl CisKIEBub2RlIFNpZ25hbHMKIEBzZWN0aW9uIFNpZ25hbHMKIEBjaW5kZXgg c2lnbmFscwpkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNtZC5oIGIvZ2RiL2dkYmNt ZC5oCmluZGV4IGMwMmNlNjkuLjYwNmI4MTIgMTAwNjQ0Ci0tLSBhL2dkYi9n ZGJjbWQuaAorKysgYi9nZGIvZ2RiY21kLmgKQEAgLTEyNCw2ICsxMjQsOCBA QCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNldGNoZWNrbGlz dDsKIAogZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hl Y2tsaXN0OwogCitleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNr aXBsaXN0OworCiAvKiBDaGFpbiBjb250YWluaW5nIGFsbCBkZWZpbmVkICJz YXZlIiBzdWJjb21tYW5kcy4gICovCiAKIGV4dGVybiBzdHJ1Y3QgY21kX2xp c3RfZWxlbWVudCAqc2F2ZV9jbWRsaXN0OwpkaWZmIC0tZ2l0IGEvZ2RiL2lu ZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCmluZGV4IDIyNTAzNGMuLmU4YmUxMjEg MTAwNjQ0Ci0tLSBhL2dkYi9pbmZydW4uYworKysgYi9nZGIvaW5mcnVuLmMK QEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCiAj aW5jbHVkZSAiY29udGludWF0aW9ucy5oIgogI2luY2x1ZGUgImludGVycHMu aCIKKyNpbmNsdWRlICJza2lwLmgiCiAKIC8qIFByb3RvdHlwZXMgZm9yIGxv Y2FsIGZ1bmN0aW9ucyAqLwogCkBAIC00ODI5LDcgKzQ4MzAsOCBAQCBwcm9j ZXNzX2V2ZW50X3N0b3BfdGVzdDoKIAl9CiAKICAgICAgIC8qIElmIHdlIGhh dmUgbGluZSBudW1iZXIgaW5mb3JtYXRpb24gZm9yIHRoZSBmdW5jdGlvbiB3 ZSBhcmUKLSAgICAgICAgIHRoaW5raW5nIG9mIHN0ZXBwaW5nIGludG8sIHN0 ZXAgaW50byBpdC4KKwkgdGhpbmtpbmcgb2Ygc3RlcHBpbmcgaW50byBhbmQg dGhlIGZ1bmN0aW9uIGlzbid0IG9uIHRoZSBza2lwCisJIGxpc3QsIHN0ZXAg aW50byBpdC4KIAogICAgICAgICAgSWYgdGhlcmUgYXJlIHNldmVyYWwgc3lt dGFicyBhdCB0aGF0IFBDIChlLmcuIHdpdGggaW5jbHVkZQogICAgICAgICAg ZmlsZXMpLCBqdXN0IHdhbnQgdG8ga25vdyB3aGV0aGVyICphbnkqIG9mIHRo ZW0gaGF2ZSBsaW5lCkBAIC00ODM4LDcgKzQ4NDAsOCBAQCBwcm9jZXNzX2V2 ZW50X3N0b3BfdGVzdDoKIAlzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHRtcF9z YWw7CiAKIAl0bXBfc2FsID0gZmluZF9wY19saW5lIChlY3MtPnN0b3BfZnVu Y19zdGFydCwgMCk7Ci0JaWYgKHRtcF9zYWwubGluZSAhPSAwKQorCWlmICh0 bXBfc2FsLmxpbmUgIT0gMCAmJgorCSAgICAhZnVuY3Rpb25fcGNfaXNfbWFy a2VkX2Zvcl9za2lwIChlY3MtPnN0b3BfZnVuY19zdGFydCkpCiAJICB7CiAJ ICAgIGlmIChleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVWRVJTRSkK IAkgICAgICBoYW5kbGVfc3RlcF9pbnRvX2Z1bmN0aW9uX2JhY2t3YXJkIChn ZGJhcmNoLCBlY3MpOwpkaWZmIC0tZ2l0IGEvZ2RiL3NraXAuYyBiL2dkYi9z a2lwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAw OThiZgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9za2lwLmMKQEAgLTAsMCAr MSw2MDkgQEAKKy8qIFNraXBwaW5nIG92ZXIgdW5pbnRlcmVzdGluZyBmaWxl cyBhbmQgZnVuY3Rpb25zIHdoZW4gZGVidWdnaW5nLgorCisgICBDb3B5cmln aHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisK KyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisKKyNpbmNsdWRlICJkZWZz LmgiCisjaW5jbHVkZSAic2tpcC5oIgorI2luY2x1ZGUgInZhbHVlLmgiCisj aW5jbHVkZSAidmFscHJpbnQuaCIKKyNpbmNsdWRlICJ1aS1vdXQuaCIKKyNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCisjaW5jbHVkZSAic3ltdGFiLmgiCisj aW5jbHVkZSAiZ2RiY21kLmgiCisjaW5jbHVkZSAiY29tbWFuZC5oIgorI2lu Y2x1ZGUgImNvbXBsZXRlci5oIgorI2luY2x1ZGUgInN0YWNrLmgiCisjaW5j bHVkZSAiYXJjaC11dGlscy5oIgorI2luY2x1ZGUgImxpbmVzcGVjLmgiCisj aW5jbHVkZSAib2JqZmlsZXMuaCIKKyNpbmNsdWRlICJleGNlcHRpb25zLmgi CisKK3N0cnVjdCBza2lwbGlzdF9lbnRyeQoreworICBpbnQgbnVtYmVyOwor CisgIC8qIG51bGwgaWYgdGhpcyBpc24ndCBhIHNraXBsaXN0IGVudHJ5IGZv ciBhbiBlbnRpcmUgZmlsZS4KKyAgICAgVGhlIHNraXBsaXN0IGVudHJ5IG93 bnMgdGhpcyBwb2ludGVyLiAqLworICBjaGFyICpmaWxlbmFtZTsKKworICAv KiBUaGUgbmFtZSBvZiB0aGUgbWFya2VkLWZvci1za2lwIGZ1bmN0aW9uLCBp ZiB0aGlzIGlzIGEgc2tpcGxpc3QKKyAgICAgZW50cnkgZm9yIGEgZnVuY3Rp b24uICBOb3RlIHRoYXQgdGhpcyBtaWdodCBiZSBub24tbnVsbCBldmVuIGlm CisgICAgIHRoZSBwYyBpcyAwIGlmIHRoZSBlbnRyeSBpcyBwZW5kaW5nIGEg c2hhcmVkIGxpYnJhcnkgbG9hZC4KKworICAgICBUaGUgc2tpcGxpc3QgZW50 cnkgb3ducyB0aGlzIHBvaW50ZXIuICovCisgIGNoYXIgKmZ1bmN0aW9uX25h bWU7CisKKyAgLyogMCBpZiB0aGlzIGlzIGEgc2tpcGxpc3QgZW50cnkgZm9y IGFuIGVudGlyZSBmaWxlLCBvciBpZiB0aGlzCisgICAgIGVudHJ5IHdpbGwg YmUgb24gYSBmdW5jdGlvbiwgcGVuZGluZyBhIHNoYXJlZCBsaWJyYXJ5IGxv YWQuICovCisgIENPUkVfQUREUiBwYzsKKworICAvKiBBcmNoaXRlY3R1cmUg d2UgdXNlZCB0byBjcmVhdGUgdGhlIHNraXBsaXN0IGVudHJ5LiBNYXkgYmUg bnVsbAorICAgICBpZiB0aGUgZW50cnkgaXMgcGVuZGluZyBhIHNoYXJlZCBs aWJyYXJ5IGxvYWQuICovCisgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwor CisgIGludCBlbmFibGVkOworICBpbnQgcGVuZGluZzsKKworICBzdHJ1Y3Qg c2tpcGxpc3RfZW50cnkgKm5leHQ7Cit9OworCitzdGF0aWMgdm9pZCBza2lw X2Z1bmN0aW9uX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KTsK K3N0YXRpYyB2b2lkIHNraXBfZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSk7CitzdGF0aWMgdm9pZCBza2lwX2luZm8gKGNoYXIgKmFy ZywgaW50IGZyb21fdHR5KTsKKworc3RhdGljIHZvaWQgYWRkX3NraXBsaXN0 X2VudHJ5IChzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUpOworc3RhdGljIHZv aWQgc2tpcF9mdW5jdGlvbl9wYyAoQ09SRV9BRERSIHBjLCBjaGFyICpuYW1l LAorCQkJICAgICAgc3RydWN0IGdkYmFyY2ggKmFyY2gsCisJCQkgICAgICBp bnQgcGVuZGluZyk7CisvL3N0YXRpYyB2b2lkIHRyeV9yZXNvbHZlX3BlbmRp bmdfZW50cnkgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSk7CitzdGF0aWMg c3RydWN0IGdkYmFyY2ggKmdldF9zYWxfYXJjaCAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSAqc2FsKTsKKworc3RhdGljIHN0cnVjdCBza2lwbGlzdF9lbnRy eSAqc2tpcGxpc3RfZW50cnlfY2hhaW47CitzdGF0aWMgaW50IHNraXBsaXN0 X2VudHJ5X2NvdW50OworCisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVT KEUpIFwKKyAgZm9yIChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47IEU7IEUg PSBFLT5uZXh0KQorCisjZGVmaW5lIEFMTF9TS0lQTElTVF9FTlRSSUVTX1NB RkUoRSxUTVApIFwKKyAgZm9yIChFID0gc2tpcGxpc3RfZW50cnlfY2hhaW47 ICAgICAgICAgXAorICAgICAgIEUgPyAoVE1QID0gRS0+bmV4dCwgMSkgOiAw OyAgICAgICBcCisgICAgICAgRSA9IFRNUCkKKworc3RhdGljIHZvaWQKK3Nr aXBfZmlsZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sK KyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOworICBzdHJ1Y3Qgc3ltdGFi ICpzeW10YWI7CisgIGludCBwZW5kaW5nID0gMDsKKyAgY2hhciAqZmlsZW5h bWUgPSAwOworCisgIC8qIElmIG5vIGFyZ3VtZW50IHdhcyBnaXZlbiwgdHJ5 IHRvIGRlZmF1bHQgdG8gdGhlIGxhc3QKKyAgICAgZGlzcGxheWVkIGNvZGVw b2ludC4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAgIHsKKyAgICAgIHN5bXRh YiA9IGdldF9sYXN0X2Rpc3BsYXllZF9zeW10YWIgKCk7CisgICAgICBpZiAo c3ltdGFiID09IDApCisJZXJyb3IgKF8oIk5vIGRlZmF1bHQgZmlsZSBub3cu IikpOworICAgICAgZWxzZQorCWZpbGVuYW1lID0gc3ltdGFiLT5maWxlbmFt ZTsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBzeW10YWIgPSBsb29r dXBfc3ltdGFiIChhcmcpOworICAgICAgaWYgKHN5bXRhYiA9PSAwKQorCXsK KwkgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9zdGRlcnIsIF8oIk5vIHNvdXJj ZSBmaWxlIG5hbWVkICVzLlxuIiksIGFyZyk7CisJICBpZiAoIW5xdWVyeSAo XygiXAorSWdub3JlIGZpbGUgcGVuZGluZyBmdXR1cmUgc2hhcmVkIGxpYnJh cnkgbG9hZD8gIikpKQorCSAgICByZXR1cm47CisKKwkgIHBlbmRpbmcgPSAx OworCSAgZmlsZW5hbWUgPSBhcmc7CisJfQorICAgICAgZWxzZQorCWZpbGVu YW1lID0gc3ltdGFiLT5maWxlbmFtZTsKKyAgICB9CisKKyAgZSA9IFhaQUxM T0MgKHN0cnVjdCBza2lwbGlzdF9lbnRyeSk7CisgIGUtPmZpbGVuYW1lID0g eHN0cmR1cCAoZmlsZW5hbWUpOworICBlLT5lbmFibGVkID0gMTsKKyAgZS0+ cGVuZGluZyA9IHBlbmRpbmc7CisgIGlmIChzeW10YWIgIT0gMCkKKyAgICBl LT5nZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAoc3ltdGFiLT5vYmpmaWxl KTsKKworICBhZGRfc2tpcGxpc3RfZW50cnkgKGUpOworCisgIHByaW50Zl9m aWx0ZXJlZCAoXygiRmlsZSAlcyB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVw cGluZy5cbiIpLCBmaWxlbmFtZSk7Cit9CisKK3N0YXRpYyB2b2lkCitza2lw X2Z1bmN0aW9uX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor eworICBDT1JFX0FERFIgZnVuY19wYzsKKyAgY2hhciAqbmFtZSA9IE5VTEw7 CisKKyAgLyogRGVmYXVsdCB0byB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBu byBhcmd1bWVudCBpcyBnaXZlbi4gKi8KKyAgaWYgKGFyZyA9PSAwKQorICAg IHsKKyAgICAgIENPUkVfQUREUiBwYzsKKyAgICAgIGlmICghbGFzdF9kaXNw bGF5ZWRfc2FsX2lzX3ZhbGlkICgpKQorCWVycm9yIChfKCJObyBkZWZhdWx0 IGZ1bmN0aW9uIG5vdy4iKSk7CisKKyAgICAgIHBjID0gZ2V0X2xhc3RfZGlz cGxheWVkX2FkZHIgKCk7CisgICAgICBpZiAoIWZpbmRfcGNfcGFydGlhbF9m dW5jdGlvbiAocGMsICZuYW1lLCAmZnVuY19wYywgMCkpCisJeworCSAgZXJy b3IgKF8oIk5vIGZ1bmN0aW9uIGZvdW5kIGNvbnRhaW5pbmcgY3VycmVudCBw cm9ncmFtIHBvaW50ICVzLiIpLAorCQkgIHBhZGRyZXNzIChnZXRfY3VycmVu dF9hcmNoICgpLCBwYykpOworCX0KKyAgICAgIHNraXBfZnVuY3Rpb25fcGMg KGZ1bmNfcGMsIG5hbWUsIGdldF9jdXJyZW50X2FyY2ggKCksIDApOworICAg IH0KKyAgZWxzZQorICAgIHsKKyAgICAgIC8qIERlY29kZSBhcmcuICBXZSBz ZXQgZnVuZmlyc3RsaW5lPTEgc28gZGVjb2RlX2xpbmVfMSB3aWxsIGdpdmUg dXMgdGhlCisJIGZpcnN0IGxpbmUgb2YgdGhlIGZ1bmN0aW9uIHNwZWNpZmll ZCwgaWYgaXQgY2FuLCBhbmQgc28gdGhhdCB3ZSdsbAorCSByZWplY3QgdmFy aWFibGUgbmFtZXMgYW5kIHRoZSBsaWtlLiAqLworCisgICAgICBpbnQgaTsK KyAgICAgIGludCBwZW5kaW5nID0gMDsKKyAgICAgIGNoYXIgKm9yaWdfYXJn ID0gYXJnOyAvKiBkZWNvZGVfbGluZV8xIG1vZGlmaWVzIHRoZSBhcmcgcG9p bnRlci4gKi8KKyAgICAgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGRlY29kZV9leGNlcHRpb247CisgICAgICBzdHJ1Y3Qgc3ltdGFic19hbmRf bGluZXMgc2FsczsKKworICAgICAgVFJZX0NBVENIKGRlY29kZV9leGNlcHRp b24sIE5PVF9GT1VORF9FUlJPUikKKwl7CisJICBzYWxzID0gZGVjb2RlX2xp bmVfMSAoJmFyZywgMSwgMCwgMCwgMCk7CisJfQorCisgICAgICBpZiAoZGVj b2RlX2V4Y2VwdGlvbi5yZWFzb24gPCAwKQorICAgICAgICB7CisJICBmcHJp bnRmX2ZpbHRlcmVkIChnZGJfc3RkZXJyLAorCQkJICAgIF8oIk5vIGZ1bmN0 aW9uIGZvdW5kIG5hbWVkICVzLlxuIiksIG9yaWdfYXJnKTsKKworCSAgaWYg KG5xdWVyeSAoXygiXAorSWdub3JlIGZ1bmN0aW9uIHBlbmRpbmcgZnV0dXJl IHNoYXJlZCBsaWJyYXJ5IGxvYWQ/ICIpKSkKKwkgICAgeworCSAgICAgIC8q IEFkZCB0aGUgcGVuZGluZyBza2lwbGlzdCBlbnRyeS4gKi8KKwkgICAgICBz a2lwX2Z1bmN0aW9uX3BjICgwLCBvcmlnX2FyZywgMCwgMSk7CisJICAgIH0K KworCSAgcmV0dXJuOworCX0KKworICAgICAgaWYgKHNhbHMubmVsdHMgPiAx KQorCWVycm9yIChfKCJTcGVjaWZ5IGp1c3Qgb25lIGZ1bmN0aW9uIGF0IGEg dGltZS4iKSk7CisgICAgICBpZiAoc3RybGVuIChhcmcpICE9IDApCisJZXJy b3IgKF8oIkp1bmsgYXQgZW5kIG9mIGFyZ3VtZW50cy4iKSk7CisKKyAgICAg IC8qIFRoZSBwYyBkZWNvZGVfbGluZV8xIGdpdmVzIHVzIGlzIHRoZSBmaXJz dCBsaW5lIG9mIHRoZSBmdW5jdGlvbiwKKwkgYnV0IHdlIGFjdHVhbGx5IHdh bnQgdGhlIGxpbmUgYmVmb3JlIHRoYXQuICBUaGUgY2FsbCB0bworCSBmaW5k X3BjX3BhcnRpYWxfZnVuY3Rpb24gZ2V0cyB1cyB0aGUgdmFsdWUgd2UgYWN0 dWFsbHkgd2FudC4gKi8KKyAgICAgIHsKKwlzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lICpzYWwgPSAmc2Fscy5zYWxzWzBdOworCUNPUkVfQUREUiBwYyA9IHNh bC0+cGM7CisJQ09SRV9BRERSIGZ1bmNfc3RhcnQgPSAwOworCXN0cnVjdCBn ZGJhcmNoICphcmNoID0gZ2V0X3NhbF9hcmNoIChzYWwpOworCisJaWYgKCFm aW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgJmZ1bmNfc3Rh cnQsIDApKQorCSAgeworCSAgICBlcnJvciAoXygiTm8gZnVuY3Rpb24gZm91 bmQgY29udGFpbmluZyBwcm9ncmFtIHBvaW50ICVzLiIpLAorCQkgICAgIHBh ZGRyZXNzIChhcmNoLCBwYykpOworCSAgfQorCisJc2tpcF9mdW5jdGlvbl9w YyAoZnVuY19zdGFydCwgbmFtZSwgYXJjaCwgMCk7CisgICAgICB9CisgICAg fQorfQorCitzdGF0aWMgdm9pZAorc2tpcF9pbmZvIChjaGFyICphcmcsIGlu dCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5ICplOwor ICBpbnQgbnVtX3ByaW50YWJsZV9lbnRyaWVzID0gMDsKKyAgaW50IGVudHJ5 X251bSA9IC0xOworICBpbnQgYWRkcmVzc193aWR0aCA9IDEwOworICBzdHJ1 Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworICBzdHJ1Y3QgY2xlYW51 cCAqdGJsX2NoYWluOworCisgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZv cHRzKTsKKworICBpZiAoYXJnICE9IDApCisgICAgeworICAgICAgZW50cnlf bnVtID0gcGFyc2VfYW5kX2V2YWxfbG9uZyAoYXJnKTsKKyAgICB9CisKKyAg LyogQ291bnQgdGhlIG51bWJlciBvZiByb3dzIGluIHRoZSB0YWJsZSBhbmQg c2VlIGlmIHdlIG5lZWQgc3BhY2UgZm9yIGEKKyAgICAgNjQtYml0IGFkZHJl c3MgYW55d2hlcmUuICovCisgIEFMTF9TS0lQTElTVF9FTlRSSUVTIChlKQor ICAgIGlmIChlbnRyeV9udW0gPT0gLTEgfHwgZS0+bnVtYmVyID09IGVudHJ5 X251bSkKKyAgICAgIHsKKwludW1fcHJpbnRhYmxlX2VudHJpZXMrKzsKKwlp ZiAoZS0+Z2RiYXJjaCAmJiBnZGJhcmNoX2FkZHJfYml0IChlLT5nZGJhcmNo KSA+IDMyKQorCSAgYWRkcmVzc193aWR0aCA9IDE4OworICAgICAgfQorCisg IGlmIChudW1fcHJpbnRhYmxlX2VudHJpZXMgPT0gMCkKKyAgICB7CisgICAg ICBpZiAoZW50cnlfbnVtID09IC0xKQorCXVpX291dF9tZXNzYWdlIChjdXJy ZW50X3Vpb3V0LCAwLCBfKCJOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1 bmN0aW9ucy5cbiIpKTsKKyAgICAgIGVsc2UKKwl1aV9vdXRfbWVzc2FnZSAo Y3VycmVudF91aW91dCwgMCwKKwkJCV8oIk5vIHNraXBsaXN0IGVudHJ5IG51 bWJlcmVkICVkLlxuIiksIGVudHJ5X251bSk7CisKKyAgICAgIHJldHVybjsK KyAgICB9CisKKyAgaWYgKG9wdHMuYWRkcmVzc3ByaW50KQorICAgIHRibF9j aGFpbgorICAgICAgID0gbWFrZV9jbGVhbnVwX3VpX291dF90YWJsZV9iZWdp bl9lbmQgKGN1cnJlbnRfdWlvdXQsIDUsIG51bV9wcmludGFibGVfZW50cmll cywKKwkJCQkJICAgICAgIlNraXBsaXN0VGFibGUiKTsKKyAgZWxzZQorICAg IHRibF9jaGFpbgorICAgICAgID0gbWFrZV9jbGVhbnVwX3VpX291dF90YWJs ZV9iZWdpbl9lbmQgKGN1cnJlbnRfdWlvdXQsIDQsIG51bV9wcmludGFibGVf ZW50cmllcywKKwkJCQkJICAgICAgIlNraXBsaXN0VGFibGUiKTsKKworICB1 aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCA3LCB1aV9sZWZ0 LCAibnVtYmVyIiwgIk51bSIpOyAgICAgICAgICAgICAgLyogMSAqLworICB1 aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxNCwgdWlfbGVm dCwgInR5cGUiLCAiVHlwZSIpOyAgICAgICAgICAgICAgLyogMiAqLworICB1 aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAzLCB1aV9sZWZ0 LCAiZW5hYmxlZCIsICJFbmIiKTsgICAgICAgICAgICAgLyogMyAqLworICBp ZiAob3B0cy5hZGRyZXNzcHJpbnQpCisgICAgeworICAgICAgdWlfb3V0X3Rh YmxlX2hlYWRlciAoY3VycmVudF91aW91dCwgYWRkcmVzc193aWR0aCwgdWlf bGVmdCwKKwkJCSAgICJhZGRyIiwgIkFkZHJlc3MiKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAvKiA0ICovCisgICAgfQorICB1aV9vdXRfdGFibGVf aGVhZGVyIChjdXJyZW50X3Vpb3V0LCA0MCwgdWlfbm9hbGlnbiwgIndoYXQi LCAiV2hhdCIpOyAgICAgICAgICAgLyogNSAqLworICB1aV9vdXRfdGFibGVf Ym9keSAoY3VycmVudF91aW91dCk7CisKKyAgQUxMX1NLSVBMSVNUX0VOVFJJ RVMgKGUpCisgICAgeworICAgICAgc3RydWN0IGNsZWFudXAgKmVudHJ5X2No YWluOworCisgICAgICBRVUlUOworICAgICAgaWYgKGVudHJ5X251bSAhPSAt MSAmJiBlbnRyeV9udW0gIT0gZS0+bnVtYmVyKQorCWNvbnRpbnVlOworCisg ICAgICBlbnRyeV9jaGFpbiA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVf YmVnaW5fZW5kIChjdXJyZW50X3Vpb3V0LCAiYmxrbHN0LWVudHJ5Iik7Cisg ICAgICB1aV9vdXRfZmllbGRfaW50IChjdXJyZW50X3Vpb3V0LCAibnVtYmVy IiwgZS0+bnVtYmVyKTsgICAgICAgICAgICAgICAgICAgICAvKiAxICovCisK KyAgICAgIGlmIChlLT5mdW5jdGlvbl9uYW1lICE9IDApCisJdWlfb3V0X2Zp ZWxkX3N0cmluZyAoY3VycmVudF91aW91dCwgInR5cGUiLCAiZnVuY3Rpb24i KTsgICAgICAgICAgICAgICAgIC8qIDIgKi8KKyAgICAgIGVsc2UgaWYgKGUt PmZpbGVuYW1lICE9IDApCisJdWlfb3V0X2ZpZWxkX3N0cmluZyAoY3VycmVu dF91aW91dCwgInR5cGUiLCAiZmlsZSIpOyAgICAgICAgICAgICAgICAgICAg IC8qIDIgKi8KKyAgICAgIGVsc2UKKwlpbnRlcm5hbF9lcnJvciAoX19GSUxF X18sIF9fTElORV9fLCBfKCJcCitTa2lwbGlzdCBlbnRyeSBzaG91bGQgaGF2 ZSBlaXRoZXIgYSBmaWxlbmFtZSBvciBhIGZ1bmN0aW9uIG5hbWUuIikpOwor CisgICAgICBpZiAoZS0+ZW5hYmxlZCkKKwl1aV9vdXRfZmllbGRfc3RyaW5n IChjdXJyZW50X3Vpb3V0LCAiZW5hYmxlZCIsICJ5Iik7ICAgICAgICAgICAg ICAgICAgICAgLyogMyAqLworICAgICAgZWxzZQorCXVpX291dF9maWVsZF9z dHJpbmcgKGN1cnJlbnRfdWlvdXQsICJlbmFibGVkIiwgIm4iKTsgICAgICAg ICAgICAgICAgICAgICAvKiAzICovCisKKyAgICAgIGlmIChvcHRzLmFkZHJl c3NwcmludCkKKwl7CisJICBpZiAoZS0+cGMgIT0gMCkKKwkgICAgdWlfb3V0 X2ZpZWxkX2NvcmVfYWRkciAoY3VycmVudF91aW91dCwgImFkZHIiLCBlLT5n ZGJhcmNoLCBlLT5wYyk7ICAgLyogNCAqLworCSAgZWxzZQorCSAgICB1aV9v dXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAiYWRkciIsICIiKTsg ICAgICAgICAgICAgICAgICAgICAvKiA0ICovCisJfQorCisgICAgICBpZiAo IWUtPnBlbmRpbmcgJiYgZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorCXsKKwkg ICBzdHJ1Y3Qgc3ltYm9sICpzeW07CisJICAgZ2RiX2Fzc2VydCAoZS0+cGMg IT0gMCk7CisJICAgc3ltID0gZmluZF9wY19mdW5jdGlvbiAoZS0+cGMpOwor CSAgIGlmIChzeW0pCisJICAgICB1aV9vdXRfZmllbGRfZm10IChjdXJyZW50 X3Vpb3V0LCAid2hhdCIsICIlcyBhdCAlczolZCIsCisJCQkgICAgICAgc3lt LT5naW5mby5uYW1lLAorCQkJICAgICAgIHN5bS0+c3ltdGFiLT5maWxlbmFt ZSwKKwkJCSAgICAgICBzeW0tPmxpbmUpOworCSAgIGVsc2UKKwkgICAgIHVp X291dF9maWVsZF9zdHJpbmcgKGN1cnJlbnRfdWlvdXQsICJ3aGF0IiwgIj8i KTsKKwl9CisgICAgICBlbHNlIGlmIChlLT5wZW5kaW5nICYmIGUtPmZ1bmN0 aW9uX25hbWUgIT0gMCkKKwl7CisJICB1aV9vdXRfZmllbGRfZm10IChjdXJy ZW50X3Vpb3V0LCAid2hhdCIsICIlcyAoUEVORElORykiLAorCQkJICAgIGUt PmZ1bmN0aW9uX25hbWUpOworCX0KKyAgICAgIGVsc2UgaWYgKCFlLT5wZW5k aW5nICYmIGUtPmZpbGVuYW1lICE9IDApCisJdWlfb3V0X2ZpZWxkX3N0cmlu ZyAoY3VycmVudF91aW91dCwgIndoYXQiLCBlLT5maWxlbmFtZSk7CisgICAg ICBlbHNlIGlmIChlLT5wZW5kaW5nICYmIGUtPmZpbGVuYW1lICE9IDApCisJ dWlfb3V0X2ZpZWxkX2ZtdCAoY3VycmVudF91aW91dCwgIndoYXQiLCAiJXMg KFBFTkRJTkcpIiwKKwkJCSAgZS0+ZmlsZW5hbWUpOworCisgICAgICB1aV9v dXRfdGV4dCAoY3VycmVudF91aW91dCwgIlxuIik7CisgICAgICBkb19jbGVh bnVwcyAoZW50cnlfY2hhaW4pOworICAgIH0KKworICBkb19jbGVhbnVwcyAo dGJsX2NoYWluKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZW5hYmxlX2Nv bW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdHJ1Y3Qg c2tpcGxpc3RfZW50cnkgKmU7CisgIGludCBlbnRyeV9udW07CisgIGlmIChh cmcgPT0gMCkKKyAgICB7CisgICAgICBBTExfU0tJUExJU1RfRU5UUklFUyAo ZSkKKyAgICAgICAgZS0+ZW5hYmxlZCA9IDE7CisgICAgICByZXR1cm47Cisg ICAgfQorCisgIGVudHJ5X251bSA9IHBhcnNlX2FuZF9ldmFsX2xvbmcgKGFy Zyk7CisgIEFMTF9TS0lQTElTVF9FTlRSSUVTIChlKQorICAgIGlmIChlLT5u dW1iZXIgPT0gZW50cnlfbnVtKQorICAgICAgeworICAgICAgICBlLT5lbmFi bGVkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgICAgfQorCisgIGVycm9y IChfKCJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCAlZC4iKSwgZW50cnlf bnVtKTsKK30KKworc3RhdGljIHZvaWQKK3NraXBfZGlzYWJsZV9jb21tYW5k IChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKK3sKKyAgc3RydWN0IHNraXBs aXN0X2VudHJ5ICplOworICBpbnQgZW50cnlfbnVtOworICBpZiAoYXJnID09 IDApCisgICAgeworICAgICAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisg ICAgICAgIGUtPmVuYWJsZWQgPSAwOworICAgICAgcmV0dXJuOworICAgIH0K KworICBlbnRyeV9udW0gPSBwYXJzZV9hbmRfZXZhbF9sb25nIChhcmcpOwor ICBBTExfU0tJUExJU1RfRU5UUklFUyAoZSkKKyAgICBpZiAoZS0+bnVtYmVy ID09IGVudHJ5X251bSkKKyAgICAgIHsKKwllLT5lbmFibGVkID0gMDsKKwly ZXR1cm47CisgICAgICB9CisKKyAgZXJyb3IgKF8oIk5vIHNraXBsaXN0IGVu dHJ5IG51bWJlcmVkICVkLiIpLCBlbnRyeV9udW0pOworfQorCitzdGF0aWMg dm9pZAorc2tpcF9kZWxldGVfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJv bV90dHkpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAqZSwgKnRlbXAs ICpiX3ByZXY7CisgIGludCBlbnRyeV9udW07CisKKyAgaWYgKGFyZyA9PSAw KQorICAgIHsKKyAgICAgIEFMTF9TS0lQTElTVF9FTlRSSUVTX1NBRkUoZSwg dGVtcCkKKyAgICAgICAgeworICAgICAgICAgIHhmcmVlIChlLT5mdW5jdGlv bl9uYW1lKTsKKyAgICAgICAgICB4ZnJlZSAoZS0+ZmlsZW5hbWUpOworICAg ICAgICAgIHhmcmVlIChlKTsKKyAgICAgICAgfQorICAgICAgc2tpcGxpc3Rf ZW50cnlfY2hhaW4gPSAwOworICAgICAgcmV0dXJuOworICAgIH0KKworICAv KiBXZSBkb24ndCBuZWVkIHRvIHVzZSBhIFNBRkUgbWFjcm8gaGVyZSBzaW5j ZSB3ZSByZXR1cm4gYXMgc29vbiBhcyB3ZQorICAgICByZW1vdmUgYW4gZWxl bWVudCBmcm9tIHRoZSBsaXN0LiAqLworICBlbnRyeV9udW0gPSBwYXJzZV9h bmRfZXZhbF9sb25nIChhcmcpOworICBiX3ByZXYgPSAwOworICBBTExfU0tJ UExJU1RfRU5UUklFUyAoZSkKKyAgICBpZiAoZS0+bnVtYmVyID09IGVudHJ5 X251bSkKKyAgICAgIHsKKwlpZiAoYl9wcmV2ICE9IDApCisJICBiX3ByZXYt Pm5leHQgPSBlLT5uZXh0OworCWVsc2UKKwkgIHNraXBsaXN0X2VudHJ5X2No YWluID0gZS0+bmV4dDsKKworCXhmcmVlIChlLT5mdW5jdGlvbl9uYW1lKTsK Kwl4ZnJlZSAoZS0+ZmlsZW5hbWUpOworCXhmcmVlIChlKTsKKwlyZXR1cm47 CisgICAgICB9CisgICAgZWxzZQorICAgICAgeworCWJfcHJldiA9IGU7Cisg ICAgICB9CisKKyAgZXJyb3IgKF8oIk5vIHNraXBsaXN0IGVudHJ5IG51bWJl cmVkICVkLiIpLCBlbnRyeV9udW0pOworfQorCisvKiBDcmVhdGUgYSBza2lw bGlzdCBlbnRyeSBmb3IgdGhlIGdpdmVuIHBjIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuCisgICBmdW5jdGlvbiBuYW1lIGFuZCBhZGQgaXQgdG8gdGhl IGxpc3QuICovCitzdGF0aWMgdm9pZAorc2tpcF9mdW5jdGlvbl9wYyAoQ09S RV9BRERSIHBjLCBjaGFyICpuYW1lLCBzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwK KwkJICBpbnQgcGVuZGluZykKK3sKKyAgc3RydWN0IHNraXBsaXN0X2VudHJ5 ICplID0gWFpBTExPQyAoc3RydWN0IHNraXBsaXN0X2VudHJ5KTsKKyAgZS0+ cGMgPSBwYzsKKyAgZS0+Z2RiYXJjaCA9IGFyY2g7CisgIGUtPmVuYWJsZWQg PSAxOworICBlLT5wZW5kaW5nID0gcGVuZGluZzsKKyAgZS0+ZnVuY3Rpb25f bmFtZSA9IHhzdHJkdXAgKG5hbWUpOworCisgIGFkZF9za2lwbGlzdF9lbnRy eSAoZSk7CisKKyAgaWYgKCFwZW5kaW5nKQorICAgIHByaW50Zl9maWx0ZXJl ZCAoXygiRnVuY3Rpb24gJXMgYXQgJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4g c3RlcHBpbmcuXG4iKSwKKwkJICAgICBuYW1lLCBwYWRkcmVzcyAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSwgcGMpKTsKKyAgZWxzZQorICAgIHByaW50Zl9maWx0 ZXJlZCAoXygiRnVuY3Rpb24gJXMgd2lsbCBiZSBza2lwcGVkIHdoZW4gc3Rl cHBpbmcsICIKKwkJICAgICAgICJwZW5kaW5nIHNoYXJlZCBsaWJyYXJ5IGxv YWQuXG4iKSwKKwkJICAgICBuYW1lKTsKK30KKworLyogQWRkIHRoZSBnaXZl biBza2lwbGlzdCBlbnRyeSB0byBvdXIgbGlzdCwgYW5kIHNldCB0aGUgZW50 cnkncyBudW1iZXIuICovCitzdGF0aWMgdm9pZAorYWRkX3NraXBsaXN0X2Vu dHJ5IChzdHJ1Y3Qgc2tpcGxpc3RfZW50cnkgKmUpCit7CisgIHN0cnVjdCBz a2lwbGlzdF9lbnRyeSAqZTE7CisKKyAgZS0+bnVtYmVyID0gKytza2lwbGlz dF9lbnRyeV9jb3VudDsKKworICAvKiBBZGQgdG8gdGhlIGVuZCBvZiB0aGUg Y2hhaW4gc28gdGhhdCB0aGUgbGlzdCBvZgorICAgICBza2lwbGlzdCBlbnRy aWVzIHdpbGwgYmUgaW4gbnVtZXJpY2FsIG9yZGVyLiAqLworCisgIGUxID0g c2tpcGxpc3RfZW50cnlfY2hhaW47CisgIGlmIChlMSA9PSAwKQorICAgIHNr aXBsaXN0X2VudHJ5X2NoYWluID0gZTsKKyAgZWxzZQorICAgIHsKKyAgICAg IHdoaWxlIChlMS0+bmV4dCkKKwllMSA9IGUxLT5uZXh0OworICAgICAgZTEt Pm5leHQgPSBlOworICAgIH0KK30KKworLyogRG9lcyB0aGUgZ2l2ZW4gcGMg Y29ycmVzcG9uZCB0byB0aGUgYmVnaW5uaW5nIG9mIGEgc2tpcHBlZCBmdW5j dGlvbj8gKi8KK2ludAorZnVuY3Rpb25fcGNfaXNfbWFya2VkX2Zvcl9za2lw IChDT1JFX0FERFIgcGMpCit7CisgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUg c2FsOworICBjaGFyICpmaWxlbmFtZTsKKyAgc3RydWN0IHNraXBsaXN0X2Vu dHJ5ICplOworCisgIHNhbCA9IGZpbmRfcGNfbGluZSAocGMsIDApOworICBm aWxlbmFtZSA9IHNhbC5zeW10YWItPmZpbGVuYW1lOworCisgIEFMTF9TS0lQ TElTVF9FTlRSSUVTIChlKQorICAgIHsKKyAgICAgIGludCBwY19tYXRjaCA9 IGUtPnBjICE9IDAgJiYgcGMgPT0gZS0+cGM7CisgICAgICBpbnQgZmlsZW5h bWVfbWF0Y2ggPSBlLT5maWxlbmFtZSAhPSAwICYmIGZpbGVuYW1lICE9IDAg JiYKKwkJCSAgIHN0cmNtcCAoZmlsZW5hbWUsIGUtPmZpbGVuYW1lKSA9PSAw OworICAgICAgaWYgKGUtPmVuYWJsZWQgJiYgIWUtPnBlbmRpbmcgJiYgKHBj X21hdGNoIHx8IGZpbGVuYW1lX21hdGNoKSkKKwlyZXR1cm4gMTsKKyAgICB9 CisKKyAgcmV0dXJuIDA7Cit9CisKKy8qIFJlLXNldCB0aGUgc2tpcCBsaXN0 IGFmdGVyIHN5bWJvbHMgaGF2ZSBiZWVuIHJlLWxvYWRlZC4gKi8KK3ZvaWQK K3NraXBfcmVfc2V0ICgpCit7CisgIHN0cnVjdCBza2lwbGlzdF9lbnRyeSAq ZTsKKyAgQUxMX1NLSVBMSVNUX0VOVFJJRVMgKGUpCisgICAgeworICAgICAg aWYgKGUtPmZpbGVuYW1lICE9IDApCisJeworCSAgLyogSWYgaXQncyBhbiBl bnRyeSB0ZWxsaW5nIHVzIHRvIHNraXAgYSBmaWxlLCBidXQgdGhlIGVudHJ5 IGlzCisJICAgICBjdXJyZW50bHkgcGVuZGluZyBhIHNvbGliIGxvYWQsIGxl dCdzIHNlZSBpZiB3ZSBub3cga25vdworCSAgICAgYWJvdXQgdGhlIGZpbGUu ICovCisJICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWIgPSBsb29rdXBfc3ltdGFi IChlLT5maWxlbmFtZSk7CisJICBpZiAoc3ltdGFiICE9IDApCisJICAgIHsK KwkgICAgICB4ZnJlZSAoZS0+ZmlsZW5hbWUpOworCSAgICAgIGUtPmZpbGVu YW1lID0geHN0cmR1cCAoc3ltdGFiLT5maWxlbmFtZSk7CisJICAgICAgZS0+ Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKHN5bXRhYi0+b2JqZmlsZSk7 CisJICAgICAgZS0+cGVuZGluZyA9IDA7CisJICAgIH0KKwkgIGVsc2UKKwkg ICAgeworCSAgICAgIGUtPnBlbmRpbmcgPSAxOworCSAgICB9CisJfQorICAg ICAgZWxzZSBpZiAoZS0+ZnVuY3Rpb25fbmFtZSAhPSAwKQorICAgICAgICB7 CisJICBjaGFyICpmdW5jX25hbWUgPSBlLT5mdW5jdGlvbl9uYW1lOworCSAg c3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHNhbHM7CisJICB2b2xhdGlsZSBz dHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBkZWNvZGVfZXhjZXB0aW9uOworCisJICBU UllfQ0FUQ0goZGVjb2RlX2V4Y2VwdGlvbiwgTk9UX0ZPVU5EX0VSUk9SKQor CSAgICB7CisJICAgICAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZmdW5jX25h bWUsIDEsIDAsIDAsIDApOworCSAgICB9CisKKwkgIGlmIChkZWNvZGVfZXhj ZXB0aW9uLnJlYXNvbiA+PSAwICYmCisJICAgICAgc2Fscy5uZWx0cyA9PSAx ICYmIHN0cmxlbiAoZnVuY19uYW1lKSA9PSAwKQorCSAgICB7CisJICAgICAg c3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsID0gJnNhbHMuc2Fsc1swXTsK KwkgICAgICBDT1JFX0FERFIgcGMgPSBzYWwtPnBjOworCSAgICAgIENPUkVf QUREUiBmdW5jX3N0YXJ0ID0gMDsKKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAq YXJjaCA9IGdldF9zYWxfYXJjaCAoc2FsKTsKKyAgICAgICAgICAgICAgY2hh ciAqZnVuY19uYW1lOworCisJICAgICAgaWYgKGZpbmRfcGNfcGFydGlhbF9m dW5jdGlvbiAocGMsICZmdW5jX25hbWUsICZmdW5jX3N0YXJ0LCAwKSkKKwkJ eworCQkgIGUtPnBlbmRpbmcgPSAwOworICAgICAgICAgICAgICAgICAgZS0+ ZnVuY3Rpb25fbmFtZSA9IHhzdHJkdXAoZnVuY19uYW1lKTsKKwkJICBlLT5w YyA9IGZ1bmNfc3RhcnQ7CisJCSAgZS0+Z2RiYXJjaCA9IGFyY2g7CisJCX0K KwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgZS0+cGVuZGluZyA9 IDE7CisJICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLyogSGVscGVy IGZ1bmN0aW9uIHRvIGdldCBhIGdkYmFyY2ggZnJvbSBhIHN5bXRhYl9hbmRf bGluZS4gKi8KK3N0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCoKK2dldF9zYWxfYXJj aCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQoreworICBpZiAoc2Fs LT5zZWN0aW9uKQorICAgIHJldHVybiBnZXRfb2JqZmlsZV9hcmNoIChzYWwt PnNlY3Rpb24tPm9iamZpbGUpOworICBpZiAoc2FsLT5zeW10YWIpCisgICAg cmV0dXJuIGdldF9vYmpmaWxlX2FyY2ggKHNhbC0+c3ltdGFiLT5vYmpmaWxl KTsKKyAgcmV0dXJuIGdldF9jdXJyZW50X2FyY2ggKCk7Cit9CisKK3ZvaWQK K19pbml0aWFsaXplX3N0ZXBfc2tpcCAodm9pZCkKK3sKKyAgc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmM7CisKKyAgc2tpcGxpc3RfZW50cnlfY2hhaW4g PSAwOworICBza2lwbGlzdF9lbnRyeV9jb3VudCA9IDA7CisKKyAgYWRkX3By ZWZpeF9jbWQgKCJza2lwIiwgY2xhc3NfYnJlYWtwb2ludCwgc2tpcF9mdW5j dGlvbl9jb21tYW5kLCBfKCJcCitJZ25vcmUgYSBmdW5jdGlvbiB3aGlsZSBz dGVwcGluZy5cblwKK3NraXAgW0ZVTkNUSU9OIE5BTUVdXG5cCitJZiBubyBm dW5jdGlvbiBuYW1lIGlzIGdpdmVuLCBpZ25vcmUgdGhlIGN1cnJlbnQgZnVu Y3Rpb24uIiksCisgICAgICAgICAgICAgICAgICAmc2tpcGxpc3QsICJza2lw ICIsIDEsICZjbWRsaXN0KTsKKworICBjID0gYWRkX2NtZCAoImZpbGUiLCBj bGFzc19icmVha3BvaW50LCBza2lwX2ZpbGVfY29tbWFuZCwgXygiXAorSWdu b3JlIGEgZmlsZSB3aGlsZSBzdGVwcGluZy5cblwKK3NraXAgZmlsZSBbRklM RU5BTUVdXG5cCitJZiBubyBmaWxlbmFtZSBpcyBnaXZlbiwgaWdub3JlIHRo ZSBjdXJyZW50IGZpbGUuIiksCisJICAgICAgICZza2lwbGlzdCk7CisgIHNl dF9jbWRfY29tcGxldGVyIChjLCBmaWxlbmFtZV9jb21wbGV0ZXIpOworCisg IGMgPSBhZGRfY21kICgiZnVuY3Rpb24iLCBjbGFzc19icmVha3BvaW50LCBz a2lwX2Z1bmN0aW9uX2NvbW1hbmQsIF8oIlwKK0lnbm9yZSBhIGZ1bmN0aW9u IHdoaWxlIHN0ZXBwaW5nLlxuXAorc2tpcCBmdW5jdGlvbiBbRlVOQ1RJT04g TkFNRV1cblwKK0lmIG5vIGZ1bmN0aW9uIG5hbWUgaXMgZ2l2ZW4sIHNraXAg dGhlIGN1cnJlbnQgZnVuY3Rpb24uIiksCisJICAgICAgICZza2lwbGlzdCk7 CisgIHNldF9jbWRfY29tcGxldGVyIChjLCBsb2NhdGlvbl9jb21wbGV0ZXIp OworCisgIGFkZF9jbWQgKCJlbmFibGUiLCBjbGFzc19icmVha3BvaW50LCBz a2lwX2VuYWJsZV9jb21tYW5kLCBfKCJcCitFbmFibGUgYSBza2lwIGVudHJ5 LlxuXAorc2tpcCBlbmFibGUgW05VTUJFUl0iKSwKKwkgICAmc2tpcGxpc3Qp OworCisgIGFkZF9jbWQgKCJkaXNhYmxlIiwgY2xhc3NfYnJlYWtwb2ludCwg c2tpcF9kaXNhYmxlX2NvbW1hbmQsIF8oIlwKK0Rpc2FibGUgYSBza2lwIGVu dHJ5LlxuXAorc2tpcCBkaXNhYmxlIFtOVU1CRVJdIiksCisJICAgJnNraXBs aXN0KTsKKworICBhZGRfY21kICgiZGVsZXRlIiwgY2xhc3NfYnJlYWtwb2lu dCwgc2tpcF9kZWxldGVfY29tbWFuZCwgXygiXAorRGVsZXRlIGEgc2tpcCBl bnRyeS5cblwKK3NraXAgZGVsZXRlIFtOVU1CRVJdIiksCisgICAgICAgICAg ICZza2lwbGlzdCk7CisKKyAgYWRkX2luZm8gKCJza2lwIiwgc2tpcF9pbmZv LCBfKCJcCitTdGF0dXMgb2YgYWxsIHNraXBzLCBvciBvZiBza2lwIE5VTUJF Ui5cblwKK1RoZSBcIlR5cGVcIiBjb2x1bW4gaW5kaWNhdGVzIG9uZSBvZjpc blwKK1x0ZmlsZSAgICAgICAgLSBpZ25vcmVkIGZpbGVcblwKK1x0ZnVuY3Rp b24gICAgLSBpZ25vcmVkIGZ1bmN0aW9uIikpOworfQpkaWZmIC0tZ2l0IGEv Z2RiL3NraXAuaCBiL2dkYi9za2lwLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uYzYxMTU1NQotLS0gL2Rldi9udWxsCisrKyBiL2dk Yi9za2lwLmgKQEAgLTAsMCArMSwyOCBAQAorLyogSGVhZGVyIGZvciBza2lw cGluZyBvdmVyIHVuaW50ZXJlc3RpbmcgZmlsZXMgYW5kIGZ1bmN0aW9ucyB3 aGVuIGRlYnVnZ2luZy4KKworICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQorICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorCisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1 dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworCisjaWYgIWRlZmluZWQgKFNLSVBfSCkKKyNkZWZpbmUg U0tJUF9ICisKKy8qIFJldHVybnMgMSBpZiB0aGUgZ2l2ZW4gcGMgaXMgbWFy a2VkIGZvciBza2lwIGFuZCBzaG91bGRuJ3QgYmUKKyAgIHN0ZXBwZWQgaW50 by4gIE90aGVyd2lzZSwgcmV0dXJucyAwLiAqLworaW50IGZ1bmN0aW9uX3Bj X2lzX21hcmtlZF9mb3Jfc2tpcCAoQ09SRV9BRERSIHBjKTsKKworLyogUmUt c2V0IHRoZSBza2lwIGxpc3QgYWZ0ZXIgc3ltYm9scyBoYXZlIGJlZW4gcmVs b2FkZWQuICovCit2b2lkIHNraXBfcmVfc2V0ICgpOworCisjZW5kaWYgLyog IWRlZmluZWQgKFNLSVBfSCkgKi8KZGlmZiAtLWdpdCBhL2dkYi9zdGFjay5j IGIvZ2RiL3N0YWNrLmMKaW5kZXggMTU2NjZlZS4uZWVkZmQxYiAxMDA2NDQK LS0tIGEvZ2RiL3N0YWNrLmMKKysrIGIvZ2RiL3N0YWNrLmMKQEAgLTczLDYg KzczLDEyIEBAIHN0YXRpYyB2b2lkIHByaW50X2ZyYW1lIChzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsIGludCBwcmludF9sZXZlbCwKIAkJCSBlbnVtIHBy aW50X3doYXQgcHJpbnRfd2hhdCwgIGludCBwcmludF9hcmdzLAogCQkJIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKTsKIAorc3RhdGljIHZvaWQgc2V0 X2xhc3RfZGlzcGxheWVkX3NhbCAoaW50IHZhbGlkLAorCQkJCSAgICBzdHJ1 Y3QgcHJvZ3JhbV9zcGFjZSAqcHNwYWNlLAorCQkJCSAgICBDT1JFX0FERFIg YWRkciwKKwkJCQkgICAgc3RydWN0IHN5bXRhYiAqc3ltdGFiLAorCQkJCSAg ICBpbnQgbGluZSk7CisKIC8qIFplcm8gbWVhbnMgZG8gdGhpbmdzIG5vcm1h bGx5OyB3ZSBhcmUgaW50ZXJhY3RpbmcgZGlyZWN0bHkgd2l0aCB0aGUKICAg IHVzZXIuICBPbmUgbWVhbnMgcHJpbnQgdGhlIGZ1bGwgZmlsZW5hbWUgYW5k IGxpbmVudW1iZXIgd2hlbiBhCiAgICBmcmFtZSBpcyBwcmludGVkLCBhbmQg ZG8gc28gaW4gYSBmb3JtYXQgZW1hY3MxOC9lbWFjczE5LjIyIGNhbgpAQCAt ODAsNiArODYsMTQgQEAgc3RhdGljIHZvaWQgcHJpbnRfZnJhbWUgKHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSwgaW50IHByaW50X2xldmVsLAogICAgY2Fz ZXMgYW5kIGluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHN5bnRheC4gICovCiAK IGludCBhbm5vdGF0aW9uX2xldmVsID0gMDsKKworLyogVGhlc2UgdmFyaWFi bGVzIGhvbGQgdGhlIGxhc3Qgc3ltdGFiIGFuZCBsaW5lIHdlIGRpc3BsYXll ZCB0byB0aGUgdXNlci4KKyAqIFRoaXMgaXMgd2hlcmUgd2UgaW5zZXJ0IGEg YnJlYWtwb2ludCBvciBhIHNraXBsaXN0IGVudHJ5IGJ5IGRlZmF1bHQuICov CitzdGF0aWMgaW50IGxhc3RfZGlzcGxheWVkX3NhbF92YWxpZCA9IDA7Citz dGF0aWMgc3RydWN0IHByb2dyYW1fc3BhY2UgKmxhc3RfZGlzcGxheWVkX3Bz cGFjZSA9IDA7CitzdGF0aWMgQ09SRV9BRERSIGxhc3RfZGlzcGxheWVkX2Fk ZHIgPSAwOworc3RhdGljIHN0cnVjdCBzeW10YWIgKmxhc3RfZGlzcGxheWVk X3N5bXRhYiA9IDA7CitzdGF0aWMgaW50IGxhc3RfZGlzcGxheWVkX2xpbmUg PSAwOwogDAogCiAvKiBSZXR1cm4gMSBpZiB3ZSBzaG91bGQgZGlzcGxheSB0 aGUgYWRkcmVzcyBpbiBhZGRpdGlvbiB0byB0aGUgbG9jYXRpb24sCkBAIC01 OTksOSArNjEzLDkgQEAgcHJpbnRfZnJhbWVfaW5mbyAoc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2ZWwsCiAgICAgICBDT1JFX0FE RFIgcGM7CiAKICAgICAgIGlmIChnZXRfZnJhbWVfcGNfaWZfYXZhaWxhYmxl IChmcmFtZSwgJnBjKSkKLQlzZXRfZGVmYXVsdF9icmVha3BvaW50ICgxLCBz YWwucHNwYWNlLCBwYywgc2FsLnN5bXRhYiwgc2FsLmxpbmUpOworCXNldF9s YXN0X2Rpc3BsYXllZF9zYWwgKDEsIHNhbC5wc3BhY2UsIHBjLCBzYWwuc3lt dGFiLCBzYWwubGluZSk7CiAgICAgICBlbHNlCi0Jc2V0X2RlZmF1bHRfYnJl YWtwb2ludCAoMCwgMCwgMCwgMCwgMCk7CisJc2V0X2xhc3RfZGlzcGxheWVk X3NhbCAoMCwgMCwgMCwgMCwgMCk7CiAgICAgfQogCiAgIGFubm90YXRlX2Zy YW1lX2VuZCAoKTsKQEAgLTYwOSw2ICs2MjMsODggQEAgcHJpbnRfZnJhbWVf aW5mbyAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgcHJpbnRfbGV2 ZWwsCiAgIGdkYl9mbHVzaCAoZ2RiX3N0ZG91dCk7CiB9CiAKKy8qIFJlbWVt YmVyIHRoZSBsYXN0IGNvZGVwb2ludCB3ZSBkaXNwbGF5ZWQsIHdoaWNoIHdl IHVzZSBlLmcuIGFzIHRoZSBwbGFjZSB0bworICAgcHV0IGEgYnJlYWtwb2lu dCB3aGVuIHRoZSBgYnJlYWsnIGNvbW1hbmQgaXMgaW52b2tlZCB3aXRoIG5v IGFyZ3VtZW50cy4gKi8KK3N0YXRpYyB2b2lkCitzZXRfbGFzdF9kaXNwbGF5 ZWRfc2FsIChpbnQgdmFsaWQsIHN0cnVjdCBwcm9ncmFtX3NwYWNlICpwc3Bh Y2UsCisJCQlDT1JFX0FERFIgYWRkciwgc3RydWN0IHN5bXRhYiAqc3ltdGFi LAorCQkJaW50IGxpbmUpCit7CisgIGxhc3RfZGlzcGxheWVkX3NhbF92YWxp ZCA9IHZhbGlkOworICBsYXN0X2Rpc3BsYXllZF9wc3BhY2UgPSBwc3BhY2U7 CisgIGxhc3RfZGlzcGxheWVkX2FkZHIgPSBhZGRyOworICBsYXN0X2Rpc3Bs YXllZF9zeW10YWIgPSBzeW10YWI7CisgIGxhc3RfZGlzcGxheWVkX2xpbmUg PSBsaW5lOworfQorCit2b2lkCitjbGVhcl9sYXN0X2Rpc3BsYXllZF9zYWwg KCkKK3sKKyAgbGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkID0gMDsKKyAgbGFz dF9kaXNwbGF5ZWRfcHNwYWNlID0gMDsKKyAgbGFzdF9kaXNwbGF5ZWRfYWRk ciA9IDA7CisgIGxhc3RfZGlzcGxheWVkX3N5bXRhYiA9IDA7CisgIGxhc3Rf ZGlzcGxheWVkX2xpbmUgPSAwOworfQorCitpbnQKK2xhc3RfZGlzcGxheWVk X3NhbF9pc192YWxpZCAoKQoreworICByZXR1cm4gbGFzdF9kaXNwbGF5ZWRf c2FsX3ZhbGlkOworfQorCitzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSoKK2dldF9s YXN0X2Rpc3BsYXllZF9wc3BhY2UgKCkKK3sKKyAgaWYgKGxhc3RfZGlzcGxh eWVkX3NhbF92YWxpZCkKKyAgICByZXR1cm4gbGFzdF9kaXNwbGF5ZWRfcHNw YWNlOworICByZXR1cm4gMDsKK30KKworQ09SRV9BRERSCitnZXRfbGFzdF9k aXNwbGF5ZWRfYWRkciAoKQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2Fs X3ZhbGlkKQorICAgIHJldHVybiBsYXN0X2Rpc3BsYXllZF9hZGRyOworICBy ZXR1cm4gMDsKK30KKworc3RydWN0IHN5bXRhYioKK2dldF9sYXN0X2Rpc3Bs YXllZF9zeW10YWIgKCkKK3sKKyAgaWYgKGxhc3RfZGlzcGxheWVkX3NhbF92 YWxpZCkKKyAgICByZXR1cm4gbGFzdF9kaXNwbGF5ZWRfc3ltdGFiOworICBy ZXR1cm4gMDsKK30KKworaW50CitnZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAo KQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3ZhbGlkKQorICAgIHJl dHVybiBsYXN0X2Rpc3BsYXllZF9saW5lOworICByZXR1cm4gMDsKK30KKwor dm9pZAorZ2V0X2xhc3RfZGlzcGxheWVkX3NhbCAoc3RydWN0IHN5bXRhYl9h bmRfbGluZSAqc2FsKQoreworICBpZiAobGFzdF9kaXNwbGF5ZWRfc2FsX3Zh bGlkKQorICAgIHsKKyAgICAgIHNhbC0+cHNwYWNlID0gbGFzdF9kaXNwbGF5 ZWRfcHNwYWNlOworICAgICAgc2FsLT5wYyA9IGxhc3RfZGlzcGxheWVkX2Fk ZHI7CisgICAgICBzYWwtPnN5bXRhYiA9IGxhc3RfZGlzcGxheWVkX3N5bXRh YjsKKyAgICAgIHNhbC0+bGluZSA9IGxhc3RfZGlzcGxheWVkX2xpbmU7Cisg ICAgfQorICBlbHNlCisgICAgeworICAgICAgc2FsLT5wc3BhY2UgPSAwOwor ICAgICAgc2FsLT5wYyA9IDA7CisgICAgICBzYWwtPnN5bXRhYiA9IDA7Cisg ICAgICBzYWwtPmxpbmUgPSAwOworICAgIH0KK30KKworCiAvKiBBdHRlbXB0 IHRvIG9idGFpbiB0aGUgRlVOTkFNRSwgRlVOTEFORyBhbmQgb3B0aW9uYWxs eSBGVU5DUCBvZiB0aGUgZnVuY3Rpb24KICAgIGNvcnJlc3BvbmRpbmcgdG8g RlJBTUUuICAqLwogCmRpZmYgLS1naXQgYS9nZGIvc3RhY2suaCBiL2dkYi9z dGFjay5oCmluZGV4IDNjY2U2MjMuLjYyMDBmNTIgMTAwNjQ0Ci0tLSBhL2dk Yi9zdGFjay5oCisrKyBiL2dkYi9zdGFjay5oCkBAIC0zOCw0ICszOCwxNCBA QCB2b2lkIGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbF92YXJzIChzdHJ1Y3Qg YmxvY2sgKmJsb2NrLAogCQkJCSAgICBpdGVyYXRlX292ZXJfYmxvY2tfYXJn X2xvY2FsX3ZhcnNfY2IgY2IsCiAJCQkJICAgIHZvaWQgKmNiX2RhdGEpOwog CisvKiBHZXQgb3Igc2V0IHRoZSBsYXN0IGRpc3BsYXllZCBzeW10YWIgYW5k IGxpbmUsIHdoaWNoIGlzLCBlLmcuIHdoZXJlIHdlIHNldCBhCisgKiBicmVh a3BvaW50IHdoZW4gYGJyZWFrJyBpcyBzdXBwbGllZCB3aXRoIG5vIGFyZ3Vt ZW50cy4gKi8KK3ZvaWQgY2xlYXJfbGFzdF9kaXNwbGF5ZWRfc2FsICgpOwor aW50IGxhc3RfZGlzcGxheWVkX3NhbF9pc192YWxpZCAoKTsKK3N0cnVjdCBw cm9ncmFtX3NwYWNlKiBnZXRfbGFzdF9kaXNwbGF5ZWRfcHNwYWNlICgpOwor Q09SRV9BRERSIGdldF9sYXN0X2Rpc3BsYXllZF9hZGRyICgpOworc3RydWN0 IHN5bXRhYiogZ2V0X2xhc3RfZGlzcGxheWVkX3N5bXRhYiAoKTsKK2ludCBn ZXRfbGFzdF9kaXNwbGF5ZWRfbGluZSAoKTsKK3ZvaWQgZ2V0X2xhc3RfZGlz cGxheWVkX3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKKwog I2VuZGlmIC8qICNpZm5kZWYgU1RBQ0tfSCAqLwpkaWZmIC0tZ2l0IGEvZ2Ri L3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKaW5kZXggMTU0MGNiNy4uMWM0 ZDBjOSAxMDA2NDQKLS0tIGEvZ2RiL3N5bWZpbGUuYworKysgYi9nZGIvc3lt ZmlsZS5jCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVkZSAiZWxmLWJmZC5o IgogI2luY2x1ZGUgInNvbGliLmgiCiAjaW5jbHVkZSAicmVtb3RlLmgiCisj aW5jbHVkZSAic3RhY2suaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgog I2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0yNzgwLDcgKzI3ODEsNyBAQCBjbGVh cl9zeW10YWJfdXNlcnMgKGludCBhZGRfZmxhZ3MpCiAgIGNsZWFyX2Rpc3Bs YXlzICgpOwogICBpZiAoKGFkZF9mbGFncyAmIFNZTUZJTEVfREVGRVJfQlBf UkVTRVQpID09IDApCiAgICAgYnJlYWtwb2ludF9yZV9zZXQgKCk7Ci0gIHNl dF9kZWZhdWx0X2JyZWFrcG9pbnQgKDAsIE5VTEwsIDAsIDAsIDApOworICBj bGVhcl9sYXN0X2Rpc3BsYXllZF9zYWwgKCk7CiAgIGNsZWFyX3BjX2Z1bmN0 aW9uX2NhY2hlICgpOwogICBvYnNlcnZlcl9ub3RpZnlfbmV3X29iamZpbGUg KE5VTEwpOwogCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCmluZGV4IDhmOWVmZDEuLjdk ZWVhM2UgMTAwNjQ0Ci0tLSBhL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCisr KyBiL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK KzIwMTEtMTAtMDYgIEp1c3RpbiBMZWJhciA8anVzdGluLmxlYmFyQGdtYWls LmNvbT4KKworCUFkZCB0ZXN0cyBmb3Igc2tpcCBjb21tYW5kLgorCSogdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGliLmM6IE5ldworCSogdGVz dHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbWFpbi5jOiBOZXcKKwkqIHRl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLmV4cDogTmV3CisJKiB0ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2tpcC5jOiBOZXcKKwkqIHRlc3RzdWl0ZS9nZGIu YmFzZS9za2lwLmV4cDogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cDEuYzogTmV3CisJKiB0ZXN0c3VpdGUvZ2RiLmJhc2UvTWFrZWZpbGUuaW46 IEFkZGluZyBuZXcgZmlsZXMuCisKIDIwMTEtMTAtMDUgIFBpZXJyZSBNdWxs ZXIgIDxtdWxsZXJAaWNzLnUtc3RyYXNiZy5mcj4KIAogCUFkZCB0ZXN0cyBm b3IgcGFzc2luZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gaW5mZXJp b3IuCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL01ha2Vm aWxlLmluIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9NYWtlZmlsZS5pbgpp bmRleCA3MmYxYmE0Li43Y2ViMTIxIDEwMDY0NAotLS0gYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL01ha2VmaWxlLmluCisrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvTWFrZWZpbGUuaW4KQEAgLTMwLDggKzMwLDggQEAgRVhFQ1VU QUJMRVMgPSBhMi1ydW4gYWR2YW5jZSBhbGwtdHlwZXMgYW5ub3RhMSBhbm5v dGExLXdhdGNoX3RocmVhZF9udW0gXAogCXNlcHN5bXRhYi5kZWJ1ZyBzZXBz eW10YWIuc3RyaXBwZWQgc2V0c2hvdyBzZXR2YXIgc2htYWluIHNocmVsb2Mg XAogCXNpZ2FsbCBzaWdhbHRzdGFjayBzaWdicHQgc2lnY2hsZCBzaWdpbmZv IHNpZ2luZm8tYWRkciBcCiAJc2lnaW5mby1pbmZjYWxsIHNpZ2luZm8tb2Jq IHNpZ25hbHMgc2lnbnVsbCBzaWdyZXBlYXQgc2lnc3RlcCBcCi0Jc2l6ZW9m IHNvbGliIHNvbGliLWNvcnJ1cHRlZCBzb2xpYi1kaXNwbGF5LW1haW4gc29s aWItbm9kaXIgXAotCXNvbGliLW92ZXJsYXAtbWFpbi0weDQwMDAwMDAwIHNv bGliLXN5bWJvbC1tYWluIHNvbGliLXdlYWsgXAorCXNpemVvZiBza2lwIHNr aXAtc29saWIgc29saWIgc29saWItY29ycnVwdGVkIHNvbGliLWRpc3BsYXkt bWFpbgorCXNvbGliLW5vZGlyIHNvbGliLW92ZXJsYXAtbWFpbi0weDQwMDAw MDAwIHNvbGliLXN5bWJvbC1tYWluIHNvbGliLXdlYWsgXAogCXNvbGliLXdl YWstbGliMiBzb2xpYl9zbCBzby1pbXBsLWxkIHNvLWluZHItY2wgXAogCXN0 YWNrLWNoZWNraW5nIHN0YXJ0IHN0ZXAtYnJlYWsgc3RlcC1idCBzdGVwLWxp bmUgc3RlcC1yZXN1bWUtaW5mY2FsbCBcCiAJc3RlcC10ZXN0IHN0b3JlIHN0 cnVjdHMtdCogc3RydWN0czIgc3RydWN0czMgXApkaWZmIC0tZ2l0IGEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLWxpYi5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MmNkMDEKLS0tIC9kZXYvbnVs bAorKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWItbGli LmMKQEAgLTAsMCArMSwxMSBAQAorLyogU2ltcGxlIHNoYXJlZCBsaWJyYXJ5 ICovCisKK2ludCBzcXVhcmUoaW50IG51bSkKK3sKKyAgcmV0dXJuIG11bHRp cGx5KG51bSwgbnVtKTsKK30KKworaW50IG11bHRpcGx5KGludCBhLCBpbnQg YikKK3sKKyAgcmV0dXJuIGEgKiBiOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLW1haW4uYyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWluLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ2YmI1ZgotLS0gL2Rldi9udWxs CisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcC1zb2xpYi1tYWlu LmMKQEAgLTAsMCArMSw2IEBACitpbnQgc3F1YXJlKGludCBudW0pOworCitp bnQgbWFpbigpCit7CisgIHJldHVybiBzcXVhcmUoMCk7Cit9CmRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NraXAtc29saWIuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGliLmV4cApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Zjg4MzhkCi0tLSAvZGV2 L251bGwKKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwLXNvbGli LmV4cApAQCAtMCwwICsxLDEyOSBAQAorIyAgIENvcHlyaWdodCAyMDExIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQg V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorCisjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBKdXN0aW4gTGViYXIu IChqdXN0aW4ubGViYXJAZ21haWwuY29tKQorCisjCisjIFRlc3RzIHNraXBw aW5nIHNoYXJlZCBsaWJyYXJpZXMuCisjCisKKyMgVGhpcyBvbmx5IHdvcmtz IG9uIEdOVS9MaW51eC4KK2lmIHsgIVtpc25hdGl2ZV0gfHwgW2lzX3JlbW90 ZSBob3N0XSB8fCAhW2lzdGFyZ2V0ICotbGludXgqXSB8fCBbc2tpcF9zaGxp Yl90ZXN0c119IHsKKyAgICBjb250aW51ZQorfQorCitzZXQgdGVzdCAic2tp cC1zb2xpYiIKK3NldCBzcmNmaWxlX21haW4gIiR7dGVzdH0tbWFpbi5jIgor c2V0IGJpbmZpbGVfbWFpbiAiJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3R9 LXRlc3QiCitzZXQgc3JjZmlsZV9saWIgIiR7dGVzdH0tbGliLmMiCitzZXQg bGlibmFtZSAibGliJHt0ZXN0fSIKK3NldCBiaW5maWxlX2xpYiAke29iamRp cn0vJHtzdWJkaXJ9LyR7bGlibmFtZX0uc28KKworIworIyBDb21waWxlIG91 ciBwcm9ncmFtIHVuZGVyIHRlc3QuICBUaGUgbWFpbiBwcm9ncmFtIHJlZmVy ZW5jZXMgYSBzaGFyZWQgbGlicmFyeQorIyBsaWJza2lwLXNvbGliLnNvLCB3 aGljaCBjb250YWlucyB0d28gZnVuY3Rpb25zLCBzcXVhcmUoKSwgd2hpY2gg aXMKKyMgcmVmZXJlbmNlZCBieSB0aGUgbWFpbiBwcm9ncmFtLCBhbmQgbXVs dGlwbHkoKSwgd2hpY2ggaXMgbm90IHJlZmVyZW5jZWQgYnkKKyMgdGhlIG1h aW4gcHJvZ3JhbS4KKyMKKworaWYge1tnZGJfY29tcGlsZV9zaGxpYiAke3Ny Y2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9 IFtsaXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LWZQSUMgLVdsLC1zb25h bWUsJHtsaWJuYW1lfS5zb11dICE9ICIifSB7CisgICAgcmV0dXJuIC0xCit9 CisKK2lmIHtbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlX21haW59IiAiJHtiaW5maWxlX21haW59Lm8iIG9iamVjdCBkZWJ1 Z10gIT0gIiJ9IHsKKyAgICByZXR1cm4gLTEKK30KKworaWYge1tnZGJfY29t cGlsZSAiJHtiaW5maWxlX21haW59Lm8iICIke2JpbmZpbGVfbWFpbn0iIGV4 ZWN1dGFibGUgXAorICAgICAgICAgICAgICAgICBbbGlzdCBkZWJ1ZyAiYWRk aXRpb25hbF9mbGFncz0tTCR7b2JqZGlyfS8ke3N1YmRpcn0gLWwke3Rlc3R9 IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLVdsLC1ycGF0aD0ke29iamRpcn0vJHtzdWJkaXJ9Il1dICE9ICIi fSB7CisgICAgcmV0dXJuIC0xCit9CisKK2dkYl9zdGFydAorZ2RiX2xvYWQg JHtiaW5maWxlX21haW59CisKKyMKKyMgQXQgdGhpcyBwb2ludCwgaWYgd2Ug dHJ5IHRvIHNraXAgdGhlIGZpbGUgJHtzcmNmaWxlX2xpYn0gb3IgdGhlIGZ1 bmN0aW9uCisjIG11bHRpcGx5KCksIHdlIHNob3VsZCBnZXQgYSBwcm9tcHQg YXNraW5nIHVzIGlmIHdlIHdhbnQgdG8gZW5hYmxlIHRoZQorIyBza2lwIGVu dHJ5IHBlbmRpbmcgYSBzaGFyZWQgbGlicmFyeSBsb2FkLgorIworCitnZGJf dGVzdCAic2tpcCBmaWxlICR7c3JjZmlsZV9saWJ9IiBcCisiRmlsZSAke3Ny Y2ZpbGVfbGlifSB3aWxsIGJlIHNraXBwZWQgd2hlbiBzdGVwcGluZy4iIFwK KyJpZ25vcmluZyBmaWxlIGluIHNvbGliIiBcCisiTm8gc291cmNlIGZpbGUg bmFtZWQgJHtzcmNmaWxlX2xpYn0uKgorSWdub3JlIGZpbGUgcGVuZGluZyBm dXR1cmUgc2hhcmVkIGxpYnJhcnkgbG9hZC4qIlwKKyJ5IgorCisjCisjIERv ZXMgaW5mbyBza2lwIGxpc3QgdGhpcyBlbnRyeSBhcyBwZW5kaW5nPworIwor Z2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxc cytBZGRyZXNzXFxzK1doYXRcXHMqCisxXFxzK2ZpbGVcXHMreVxccytcXHMr JHtzcmNmaWxlX2xpYn0gXFwoUEVORElOR1xcKVxccyoiIFwKKyJpbmZvIHNr aXAgd2l0aCBwZW5kaW5nIGZpbGUiCisKK2lmICFbcnVudG9fbWFpbl0geyBm YWlsICJza2lwIHRlc3RzIHN1cHByZXNzZWQiIH0KKworIworIyBXZSBzaG91 bGRuJ3Qgc3RlcCBpbnRvIHNxdWFyZSgpLCBzaW5jZSB3ZSBza2lwcGVkIHNr aXAtc29saWItbGliLmMuCisjCitnZGJfdGVzdCAic3RlcCIgIiIKK2dkYl90 ZXN0ICJidCIgIiMwXFxzK21haW4uKiIgInN0ZXAgYWZ0ZXIgaWdub3Jpbmcg c29saWIgZmlsZS4iCisKKyMKKyMgT3VyIGVudHJ5IHNob3VsZCBubyBsb25n ZXIgYmUgcGVuZGluZy4gIE5vdGUgdGhhdCB3ZSB1bmZvcnR1bmF0ZWx5IG5l ZWQgdG8gZG8KKyMgYXQgbGVhc3Qgb25lIHN0ZXAgYmVmb3JlIHRoZSBlbnRy eSB3aWxsIGJlIHVubWFya2VkIGFzIHBlbmRpbmcuCisjCitnZGJfdGVzdCAi aW5mbyBza2lwIiBcCisiTnVtXFxzK1R5cGVcXHMrRW5iXFxzK0FkZHJlc3Nc XHMrV2hhdFxccyoKKzFcXHMrZmlsZVxccyt5XFxzK1xccysuKiR7c3JjZmls ZV9saWJ9XFxzKiIgXAorImluZm8gc2tpcCB3aXRoIHBlbmRpbmcgZmlsZSIK KworIworIyBOb3cgcmVzdGFydCBnZGIgYW5kIHRlc3RpbmcgaWdub3Jpbmcg b2YgYSBmdW5jdGlvbiBpbnNpZGUgYSBzb2xpYi4KKyMKK2dkYl9leGl0Citn ZGJfc3RhcnQKK2dkYl9sb2FkICR7YmluZmlsZV9tYWlufQorCitnZGJfdGVz dCAic2tpcCBmdW5jdGlvbiBtdWx0aXBseSIgXAorIkZ1bmN0aW9uIG11bHRp cGx5IHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBwaW5nLCBwZW5kaW5nIHNo YXJlZCBsaWJyYXJ5IGxvYWQuIiBcCisiaWdub3JpbmcgZnVuY3Rpb24gaW4g c29saWIiIFwKKyJObyBmdW5jdGlvbiBmb3VuZCBuYW1lZCBtdWx0aXBseS4u KgorSWdub3JlIGZ1bmN0aW9uIHBlbmRpbmcgZnV0dXJlIHNoYXJlZCBsaWJy YXJ5IGxvYWQuKiJcCisieSIKKworaWYgIVtydW50b19tYWluXSB7IGZhaWwg InNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorCisjCisjIE91ciBmaXJzdCBz dGVwIHNob3VsZCB0YWtlIHVzIGludG8gc3F1YXJlLgorIworZ2RiX3Rlc3Qg InN0ZXAiICJzcXVhcmUuKiIKKworIworIyBOb3cgb3VyIGVudHJ5IHNob3Vs ZCBubyBsb25nZXIgYmUgcGVuZGluZy4KKyMKK2dkYl90ZXN0ICJpbmZvIHNr aXAiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0 XFxzKgorMVxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXStcXHMr bXVsdGlwbHkgYXQgLioke3NyY2ZpbGVfbGlifTouKlxccyoiIFwKKworIwor IyBUaGlzIHN0ZXAgc2hvdWxkbid0IGdvIGludG8gbXVsdGlwbHkgLS0gd2Ug c2hvdWxkIHNraXAgaXQgYW5kIGdvIG9uIHRvIHRoZQorIyBsYXN0IGxpbmUg b2Ygc3F1YXJlLgorIworZ2RiX3Rlc3QgInN0ZXAiICIiCitnZGJfdGVzdCAi YnQiICIjMFxccytzcXVhcmUuKiIKZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2Uvc2tpcC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9z a2lwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1 YmE5MwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcC5jCkBAIC0wLDAgKzEsMTMgQEAKK2ludCBmb28oKTsKK2ludCBi YXIoKTsKK2ludCBiYXooaW50LCBpbnQpOworCitpbnQgbWFpbigpCit7Cisg IHJldHVybiBiYXooZm9vKCksIGJhcigpKTsKK30KKworaW50IGZvbygpCit7 CisgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9za2lwLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tp cC5leHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVj YzE5NwotLS0gL2Rldi9udWxsCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2Uvc2tpcC5leHAKQEAgLTAsMCArMSwxNTEgQEAKKyMgICBDb3B5cmlnaHQg MjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor IworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGlj ZW5zZXMvPi4KKworIyBUaGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgSnVzdGlu IExlYmFyLiAoanVzdGluLmxlYmFyQGdtYWlsLmNvbSkKKworaWYgeyBbcHJl cGFyZV9mb3JfdGVzdGluZyBza2lwLmV4cCAic2tpcCIgXAorICAgICAgICAg ICAgICAgICAgICAgICAgICB7c2tpcC5jIHNraXAxLmMgfSBcCisgICAgICAg ICAgICAgICAgICAgICAgICAgIHtkZWJ1ZyBub3dhcm5pbmdzfV0gfSB7Cisg ICAgcmV0dXJuIC0xCit9CisKK3NldCBzcmNmaWxlIHNraXAuYworc2V0IHNy Y2ZpbGUxIHNraXAxLmMKKworIworIyBSaWdodCBhZnRlciB3ZSBzdGFydCBn ZGIsIHRoZXJlJ3Mgbm8gZGVmYXVsdCBmaWxlIG9yIGZ1bmN0aW9uIHRvIHNr aXAuCisjCitnZGJfdGVzdCAic2tpcCBmaWxlIiAiTm8gZGVmYXVsdCBmaWxl IG5vdy4iCitnZGJfdGVzdCAic2tpcCBmdW5jdGlvbiIgIk5vIGRlZmF1bHQg ZnVuY3Rpb24gbm93LiIKK2dkYl90ZXN0ICJza2lwIiAiTm8gZGVmYXVsdCBm dW5jdGlvbiBub3cuIgorCitpZiAhW3J1bnRvX21haW5dIHsgZmFpbCAic2tp cCB0ZXN0cyBzdXBwcmVzc2VkIiB9CisKKyMKKyMgVGVzdCB8aW5mbyBza2lw fCB3aXRoIGFuIGVtcHR5IHNraXBsaXN0LgorIworZ2RiX3Rlc3QgImluZm8g c2tpcCIgIk5vdCBza2lwcGluZyBhbnkgZmlsZXMgb3IgZnVuY3Rpb25zXC4i ICJpbmZvIHNraXAgZW1wdHkiCisKKyMKKyMgQ3JlYXRlIGEgc2tpcGxpc3Qg ZW50cnkgZm9yIHRoZSBjdXJyZW50IGZpbGUgYW5kIGZ1bmN0aW9uLgorIwor Z2RiX3Rlc3QgInNraXAgZmlsZSIgIkZpbGUgLiokc3JjZmlsZSB3aWxsIGJl IHNraXBwZWQgd2hlbiBzdGVwcGluZ1wuIgorZ2RiX3Rlc3QgInNraXAiICJG dW5jdGlvbiBtYWluIGF0IC4qIHdpbGwgYmUgc2tpcHBlZCB3aGVuIHN0ZXBw aW5nXC4iCisKKyMKKyMgQ3JlYXRlIGEgc2tpcGxpc3QgZW50cnkgZm9yIGEg c3BlY2lmaWVkIGZpbGUgYW5kIGZ1bmN0aW9uLgorIworZ2RiX3Rlc3QgInNr aXAgZmlsZSBza2lwMS5jIiAiRmlsZSAuKiRzcmNmaWxlMSB3aWxsIGJlIHNr aXBwZWQgd2hlbiBzdGVwcGluZ1wuIgorZ2RiX3Rlc3QgInNraXAgZnVuY3Rp b24gYmF6IiAiRnVuY3Rpb24gYmF6IGF0IC4qIHdpbGwgYmUgc2tpcHBlZCB3 aGVuIHN0ZXBwaW5nXC4iCisKKyMKKyMgVGVzdCBiYWQgc2tpcGxpc3QgZW50 cnkgbW9kaWZpY2F0aW9uIGNvbW1hbmRzCisjCitnZGJfdGVzdCAic2tpcCBl bmFibGUgOTk5IiAiTm8gc2tpcGxpc3QgZW50cnkgbnVtYmVyZWQgOTk5LiIK K2dkYl90ZXN0ICJza2lwIGRpc2FibGUgOTk5IiAiTm8gc2tpcGxpc3QgZW50 cnkgbnVtYmVyZWQgOTk5LiIKK2dkYl90ZXN0ICJza2lwIGRlbGV0ZSA5OTki ICJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCA5OTkuIgorZ2RiX3Rlc3Qg InNraXAgZW5hYmxlIGEiICJObyBzeW1ib2wgXCJhXCIgaW4gY3VycmVudCBj b250ZXh0LiIKK2dkYl90ZXN0ICJza2lwIGRpc2FibGUgYSIgIk5vIHN5bWJv bCBcImFcIiBpbiBjdXJyZW50IGNvbnRleHQuIgorZ2RiX3Rlc3QgInNraXAg ZGVsZXRlIGEiICJObyBzeW1ib2wgXCJhXCIgaW4gY3VycmVudCBjb250ZXh0 LiIKKworIworIyBBc2sgZm9yIGluZm8gb24gYSBza2lwbGlzdCBlbnRyeSB3 aGljaCBkb2Vzbid0IGV4aXN0LgorIworZ2RiX3Rlc3QgImluZm8gc2tpcCA5 OTkiICJObyBza2lwbGlzdCBlbnRyeSBudW1iZXJlZCA5OTkuIgorCisjCisj IERvZXMgfGluZm8gc2tpcHwgbG9vayByaWdodD8KKyMKK2dkYl90ZXN0ICJp bmZvIHNraXAiIFwKKyJOdW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xc cytXaGF0XFxzKgorMVxccytmaWxlXFxzK3lcXHMrLiokc3JjZmlsZVxccyoK KzJcXHMrZnVuY3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIG1haW4gYXQg Liokc3JjZmlsZTpcWzAtOVxdK1xccyoKKzNcXHMrZmlsZVxccyt5XFxzKy4q JHNyY2ZpbGUxXFxzKgorNFxccytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlh LWZcXSsgYmF6IGF0IC4qJHNyY2ZpbGUxOlxbMC05XF0rXFxzKiIKKworIwor IyBSaWdodCBub3csIHdlIGhhdmUgYW4gb3V0c3RhbmRpbmcgc2tpcGxpc3Qg ZW50cnkgb24gYm90aCBzb3VyY2UKKyMgZmlsZXMsIHNvIHdoZW4gd2Ugc3Rl cCBpbnRvIHRoZSBmaXJzdCBsaW5lIGluIG1haW4oKSwgd2Ugc2hvdWxkIHN0 ZXAKKyMgcmlnaHQgb3ZlciBpdCBhbmQgZ28gdG8gdGhlIHNlY29uZCBsaW5l IG9mIG1haW4oKS4KKyMKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lw IHRlc3RzIHN1cHByZXNzZWQiIH0KK3NlbmRfZ2RiICJzdGVwXG4iCitnZGJf dGVzdCAiYnQiICIjMFxccyttYWluLioiICJzdGVwIGFmdGVyIGFsbCBpZ25v cmVkIgorCisjCisjIE5vdyByZW1vdmUgc2tpcC5jIGZyb20gdGhlIHNraXBs aXN0LiAgT3VyIGZpcnN0IHN0ZXAgc2hvdWxkIHRha2UgdXMKKyMgaW50byBm b28oKSwgYW5kIG91ciBzZWNvbmQgc3RlcCBzaG91bGQgdGFrZSB1cyB0byB0 aGUgbmV4dCBsaW5lIGluCisjIG1haW4oKS4KKyMKK3NlbmRfZ2RiICJza2lw IGRlbGV0ZSAxXG4iCisjIENoZWNrIHRoYXQgZW50cnkgMSBpcyBtaXNzaW5n IGZyb20gfGluZm8gc2tpcHwKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJO dW1cXHMrVHlwZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxc cytmdW5jdGlvblxccyt5XFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRz cmNmaWxlOlxbMC05XF0rXFxzKgorM1xccytmaWxlXFxzK3lcXHMrLiokc3Jj ZmlsZTFcXHMqCis0XFxzK2Z1bmN0aW9uXFxzK3lcXHMrMHhcWzAtOWEtZlxd KyBiYXogYXQgLiokc3JjZmlsZTE6XFswLTlcXStcXHMqIgorCitpZiAhW3J1 bnRvX21haW5dIHsgZmFpbCAic2tpcCB0ZXN0cyBzdXBwcmVzc2VkIiB9Citn ZGJfdGVzdCAic3RlcCIgImZvbyBcXChcXCkgYXQuKiIgInN0ZXAgYWZ0ZXIg ZGVsZXRpbmcgMSAoMSkiCitzZW5kX2dkYiAic3RlcFxuIjsgIyBSZXR1cm4g ZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAiICJtYWluIFxcKFxcKSBhdC4q IiAic3RlcCBhZnRlciBkZWxldGluZyAxICgyKSIKKworIworIyBOb3cgZGlz YWJsZSB0aGUgc2tpcGxpc3QgZW50cnkgZm9yICBza2lwMS5jLiAgV2Ugc2hv dWxkIG5vdworIyBzdGVwIGludG8gZm9vKCksIHRoZW4gaW50byBiYXIoKSwg YnV0IG5vdCBpbnRvIGJheigpLgorIworc2VuZF9nZGIgInNraXAgZGlzYWJs ZSAzXG4iCisjIElzIGVudHJ5IDMgZGlzYWJsZWQgaW4gfGluZm8gc2tpcHw/ CitnZGJfdGVzdCAiaW5mbyBza2lwIDMiICIuKlxcbjNcXHMrZmlsZVxccytu LioiIFwKKyAgICAgICAgICJpbmZvIHNraXAgc2hvd3MgZW50cnkgYXMgZGlz YWJsZWQiCisKK2lmICFbcnVudG9fbWFpbl0geyBmYWlsICJza2lwIHRlc3Rz IHN1cHByZXNzZWQiIH0KK2dkYl90ZXN0ICJzdGVwIiAiYmFyIFxcKFxcKSBh dC4qIiAic3RlcCBhZnRlciBkaXNhYmxpbmcgMyAoMSkiCitzZW5kX2dkYiAi c3RlcFxuIjsgIyBSZXR1cm4gZnJvbSBmb28oKQorZ2RiX3Rlc3QgInN0ZXAi ICJmb28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRpc2FibGluZyAzICgy KSIKK3NlbmRfZ2RiICJzdGVwXG4iOyAjIFJldHVybiBmcm9tIGJhcigpCitn ZGJfdGVzdCAic3RlcCIgIm1haW4gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVy IGRpc2FibGluZyAzICgzKSIKKworIworIyBFbmFibGUgc2tpcGxpc3QgZW50 cnkgMyBhbmQgbWFrZSBzdXJlIHdlIHN0ZXAgb3ZlciBpdCBsaWtlIGJlZm9y ZS4KKyMKK3NlbmRfZ2RiICJza2lwIGVuYWJsZSAzXG4iCisjIElzIGVudHJ5 IDMgZW5hYmxlZCBpbiB8aW5mbyBza2lwfD8KK2dkYl90ZXN0ICJpbmZvIHNr aXAgMyIgIi4qXFxuM1xccytmaWxlXFxzK3kuKiIgXAorICAgICAgICAgImlu Zm8gc2tpcCBzaG93cyBlbnRyeSBhcyBlbmFibGVkIgoraWYgIVtydW50b19t YWluXSB7IGZhaWwgInNraXAgdGVzdHMgc3VwcHJlc3NlZCIgfQorZ2RiX3Rl c3QgInN0ZXAiICJmb28gXFwoXFwpIGF0LioiICJzdGVwIGFmdGVyIGRlbGV0 aW5nIDEgKDEpIgorc2VuZF9nZGIgInN0ZXBcbiI7ICMgUmV0dXJuIGZyb20g Zm9vKCkKK2dkYl90ZXN0ICJzdGVwIiAibWFpbiBcXChcXCkgYXQuKiIgInN0 ZXAgYWZ0ZXIgZGVsZXRpbmcgMSAoMikiCisKK3NlbmRfZ2RiICJza2lwIGRp c2FibGVcbiIKK2dkYl90ZXN0ICJpbmZvIHNraXAiIFwKKyJOdW1cXHMrVHlw ZVxccytFbmJcXHMrQWRkcmVzc1xccytXaGF0XFxzKgorMlxccytmdW5jdGlv blxccytuXFxzKzB4XFswLTlhLWZcXSsgbWFpbiBhdCAuKiRzcmNmaWxlOlxb MC05XF0rXFxzKgorM1xccytmaWxlXFxzK25cXHMrLiokc3JjZmlsZTFcXHMq Cis0XFxzK2Z1bmN0aW9uXFxzK25cXHMrMHhcWzAtOWEtZlxdKyBiYXogYXQg Liokc3JjZmlsZTE6XFswLTlcXStcXHMqIiBcCisiaW5mbyBza2lwIGFmdGVy IGRpc2FibGluZyBhbGwiCisKK3NlbmRfZ2RiICJza2lwIGVuYWJsZVxuIgor Z2RiX3Rlc3QgImluZm8gc2tpcCIgXAorIk51bVxccytUeXBlXFxzK0VuYlxc cytBZGRyZXNzXFxzK1doYXRcXHMqCisyXFxzK2Z1bmN0aW9uXFxzK3lcXHMr MHhcWzAtOWEtZlxdKyBtYWluIGF0IC4qJHNyY2ZpbGU6XFswLTlcXStcXHMq CiszXFxzK2ZpbGVcXHMreVxccysuKiRzcmNmaWxlMVxccyoKKzRcXHMrZnVu Y3Rpb25cXHMreVxccysweFxbMC05YS1mXF0rIGJheiBhdCAuKiRzcmNmaWxl MTpcWzAtOVxdK1xccyoiIFwKKyJpbmZvIHNraXAgYWZ0ZXIgZW5hYmxpbmcg YWxsIgorCitzZW5kX2dkYiAic2tpcCBkZWxldGVcbiIKK2dkYl90ZXN0ICJp bmZvIHNraXAiICJOb3Qgc2tpcHBpbmcgYW55IGZpbGVzIG9yIGZ1bmN0aW9u c1wuIiBcCisiaW5mbyBza2lwIGFmdGVyIGRlbGV0aW5nIGFsbCIKZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc2tpcDEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4yZGFiNWMzCi0tLSAvZGV2L251bGwKKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9za2lwMS5jCkBAIC0wLDAgKzEsOSBA QAoraW50IGJhcigpCit7CisgIHJldHVybiAxOworfQorCitpbnQgYmF6KGlu dCBhLCBpbnQgYikKK3sKKyAgcmV0dXJuIGEgKyBiOworfQo= --001517473782aa55eb04af0cab42--