From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13316 invoked by alias); 11 Jan 2012 09:48:54 -0000 Received: (qmail 13148 invoked by uid 22791); 11 Jan 2012 09:48:43 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,TW_BJ X-Spam-Check-By: sourceware.org Received: from mail-vw0-f41.google.com (HELO mail-vw0-f41.google.com) (209.85.212.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 11 Jan 2012 09:48:17 +0000 Received: by vbbfn1 with SMTP id fn1so420001vbb.0 for ; Wed, 11 Jan 2012 01:48:16 -0800 (PST) Received: by 10.52.22.193 with SMTP id g1mr10880378vdf.77.1326275296172; Wed, 11 Jan 2012 01:48:16 -0800 (PST) MIME-Version: 1.0 Received: by 10.220.3.130 with HTTP; Wed, 11 Jan 2012 01:47:55 -0800 (PST) In-Reply-To: <83k44zeaui.fsf@gnu.org> References: <83r4z8eqoa.fsf@gnu.org> <83k44zeaui.fsf@gnu.org> From: Kevin Pouget Date: Wed, 11 Jan 2012 10:16:00 -0000 Message-ID: Subject: Re: [PATCH] Add bp_location to Python interface To: Eli Zaretskii Cc: gdb-patches@sourceware.org, pmuldoon@redhat.com Content-Type: multipart/mixed; boundary=20cf307ac3fde7198504b63d8748 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: 2012-01/txt/msg00346.txt.bz2 --20cf307ac3fde7198504b63d8748 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 3248 On Tue, Jan 10, 2012 at 6:17 PM, Eli Zaretskii wrote: >> From: Kevin Pouget >> Date: Tue, 10 Jan 2012 15:50:30 +0100 >> Cc: gdb-patches@sourceware.org, pmuldoon@redhat.com >> >> > In any case, the last 2 sentences sound scary: I could interpret them >> > as meaning I cannot trust the locations at all. =A0If that is indeed s= o, >> > what use are they? >> >> that's already discussed above, but I don't want you to be scared, so >> let me explain what I meant: >> it's not "at any moment", but rather "after any call to GDB's Python >> interface". We may want to say that it's only breakpoint or >> execution-related calls, but _I_ can't ensure that this is true, and >> it 'might' change in the future: >> >> > A @code{gdb.BpLocation} object may be invalidated during >> > any call to @{GDB}'s API for internal reasons (for instance, but not l= imited to, >> > breakpoint or execution-related mechanisms). > > Sounds okay to me. =A0But you don't need "but not limited to", because > "for instance" already says that. > >> +Return a tuple containing a sequence of @code{gdb.BpLocation} objects >> +(see below) associated with this breakpoint. =A0A breakpoint with no lo= cation >> +is a pending breakpoint (@xref{Set Breaks, , pending breakpoints}). > =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0^^^^^ > Still an @xref... sorry, I missed it in the first run ... >> +any call to @{GDB}'s API for internal reasons (for instance, but not li= mited to, > =A0 =A0 =A0 =A0 =A0 =A0 =A0 ^^^^^^ > You already know what to fix here... > > The documentation parts are OK with those changes. Thanks, I've fixed these parts - I've also improved watchpoint handling by adding a regression test (nothing fancy so far, I just ensure that the location object has the right properties. I couldn't find in the documentation any corner cases that worth being tested). I also adapted the BpLocation.address attribute to cast the address to the watchpoint type (value_type (wp->val)) if relevant. Let me know if there are more situations where WP handling can differ from BP handling, regarding their locations at least. Cordially, Kevin Tested with no regression on f15/x64 -- 2012-01-11 Kevin Pouget Add bp_location to Python interface * Makefile.in (SUBDIR_PYTHON_OBS): Add py-bploc.o (SUBDIR_PYTHON_SRCS): Add python/py-bploc.c Add build rule for this file. * breakpoint.h (struct bploc_object): Forward declaration. (struct bp_location): Add py_bploc_obj. * breakpoint.c (free_bp_location): Call gdbpy_bplocation_free. * python/py-bploc.c: New file. * python/py-breakpoint.c (bppy_locations): New function. (breakpoint_object_methods): New method binding: locations(). * python/python-internal.h (bploc_object): New typedef. (bplocation_to_bplocation_object): New prototype. (gdbpy_initialize_bplocation): Likewise. * python/python.c (gdbpy_bplocation_free): New empty stub. (_initialize_python): Call gdbpy_initialize_bplocation. * python/python.h (gdbpy_bplocation_free): New prototype. =09 doc/ * gdb.texinfo (Breakpoints In Python): Document gdb.Breakpoint.locations and gdb.BpLocation. testsuite/ * gdb.python/py-breakpoint.exp: Test gdb.BpLocation. --20cf307ac3fde7198504b63d8748 Content-Type: text/x-patch; charset=US-ASCII; name="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Disposition: attachment; filename="0001-Add-gdb.BpLocation-to-Python-interface.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gxa5hq2j0 Content-length: 33128 RnJvbSBhMzhmZjQ3MTc5NGQ1NDQ4NzE3NzAwMDg0ODkwNTlhNWZkZjc0Yzlm IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBLZXZpbiBQb3VnZXQg PGtldmluLnBvdWdldEBzdC5jb20+CkRhdGU6IFdlZCwgMTggTWF5IDIwMTEg MTA6MDI6MjMgLTA0MDAKU3ViamVjdDogW1BBVENIXSBBZGQgZ2RiLkJwTG9j YXRpb24gdG8gUHl0aG9uIGludGVyZmFjZQoKLS0tCiBnZGIvTWFrZWZpbGUu aW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICsKIGdkYi9O RVdTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDYg KwogZ2RiL2JyZWFrcG9pbnQuYyAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAgMyArCiBnZGIvYnJlYWtwb2ludC5oICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgICA2ICsKIGdkYi9kb2MvZ2RiLnRleGluZm8gICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNTEgKysrKystCiBnZGIvcHl0aG9uL3B5 LWJwbG9jLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMzEyICsrKysrKysr KysrKysrKysrKysrKysrKysrKysKIGdkYi9weXRob24vcHktYnJlYWtwb2lu dC5jICAgICAgICAgICAgICAgICB8ICAgMzkgKysrKwogZ2RiL3B5dGhvbi9w eXRob24taW50ZXJuYWwuaCAgICAgICAgICAgICAgIHwgICAgNiArCiBnZGIv cHl0aG9uL3B5dGhvbi5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA3 ICsKIGdkYi9weXRob24vcHl0aG9uLmggICAgICAgICAgICAgICAgICAgICAg ICB8ICAgIDIgKwogZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWJyZWFr cG9pbnQuZXhwIHwgICA1NyArKysrKwogMTEgZmlsZXMgY2hhbmdlZCwgNDkz IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2RiL3B5dGhvbi9weS1icGxvYy5jCgpkaWZmIC0tZ2l0IGEvZ2Ri L01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCmluZGV4IDI1MDY3ZjEu LjdjOTNmNjUgMTAwNjQ0Ci0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysgYi9n ZGIvTWFrZWZpbGUuaW4KQEAgLTI3Myw2ICsyNzMsNyBAQCBTVUJESVJfUFlU SE9OX09CUyA9IFwKIAlweS1hdXRvLWxvYWQubyBcCiAJcHktYmxvY2subyBc CiAJcHktYnBldmVudC5vIFwKKwlweS1icGxvYy5vIFwKIAlweS1icmVha3Bv aW50Lm8gXAogCXB5LWNtZC5vIFwKIAlweS1jb250aW51ZWV2ZW50Lm8gXApA QCAtMzA1LDYgKzMwNiw3IEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKIAlw eXRob24vcHktYXV0by1sb2FkLmMgXAogCXB5dGhvbi9weS1ibG9jay5jIFwK IAlweXRob24vcHktYnBldmVudC5jIFwKKwlweXRob24vcHktYnBsb2MuYyBc CiAJcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBcCiAJcHl0aG9uL3B5LWNtZC5j IFwKIAlweXRob24vcHktY29udGludWVldmVudC5jIFwKQEAgLTIwMzEsNiAr MjAzMywxMCBAQCBweS1icGV2ZW50Lm86ICQoc3JjZGlyKS9weXRob24vcHkt YnBldmVudC5jCiAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3Jj ZGlyKS9weXRob24vcHktYnBldmVudC5jCiAJJChQT1NUQ09NUElMRSkKIAor cHktYnBsb2MubzogJChzcmNkaXIpL3B5dGhvbi9weS1icGxvYy5jCisJJChD T01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHkt YnBsb2MuYworCSQoUE9TVENPTVBJTEUpCisKIHB5LWJyZWFrcG9pbnQubzog JChzcmNkaXIpL3B5dGhvbi9weS1icmVha3BvaW50LmMKIAkkKENPTVBJTEUp ICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1icmVha3Bv aW50LmMKIAkkKFBPU1RDT01QSUxFKQpkaWZmIC0tZ2l0IGEvZ2RiL05FV1Mg Yi9nZGIvTkVXUwppbmRleCBhOWE3ODU5Li5jNTI5Zjk2IDEwMDY0NAotLS0g YS9nZGIvTkVXUworKysgYi9nZGIvTkVXUwpAQCAtOSw2ICs5LDEyIEBACiAq IFRoZSBiaW5hcnkgImdkYnR1aSIgY2FuIG5vIGxvbmdlciBiZSBidWlsdCBv ciBpbnN0YWxsZWQuCiAgIFVzZSAiZ2RiIC10dWkiIGluc3RlYWQuCiAKKyog UHl0aG9uIHNjcmlwdGluZworCisgICoqIEEgbmV3IG1ldGhvZCAiZ2RiLkJy ZWFrcG9pbnQubG9jYXRpb25zIiBoYXMgYmVlbiBhZGRlZCwgYXMgd2VsbCBh cworICAgICB0aGUgY2xhc3MgZ2RiLkJwTG9jYXRpb24gdG8gcHJvdmlkZSBm dXJ0aGVyIGRldGFpbHMgYWJvdXQgYnJlYWtwb2ludAorICAgICBsb2NhdGlv bnMuCisKICoqKiBDaGFuZ2VzIGluIEdEQiA3LjQKIAogKiBHREIgbm93IGhh bmRsZXMgYW1iaWd1b3VzIGxpbmVzcGVjcyBtb3JlIGNvbnNpc3RlbnRseTsg dGhlIGV4aXN0aW5nCmRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIv Z2RiL2JyZWFrcG9pbnQuYwppbmRleCA3YjhkMTBmLi4yOGI3NTc5IDEwMDY0 NAotLS0gYS9nZGIvYnJlYWtwb2ludC5jCisrKyBiL2dkYi9icmVha3BvaW50 LmMKQEAgLTU2NzgsNiArNTY3OCw5IEBAIHN0YXRpYyB2b2lkCiBmcmVlX2Jw X2xvY2F0aW9uIChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYykKIHsKICAgbG9j LT5vcHMtPmR0b3IgKGxvYyk7CisKKyAgZ2RicHlfYnBsb2NhdGlvbl9mcmVl IChsb2MpOworCiAgIHhmcmVlIChsb2MpOwogfQogCmRpZmYgLS1naXQgYS9n ZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAppbmRleCBjMWQz YmU5Li44ZDZmYTE5IDEwMDY0NAotLS0gYS9nZGIvYnJlYWtwb2ludC5oCisr KyBiL2dkYi9icmVha3BvaW50LmgKQEAgLTI2LDYgKzI2LDcgQEAKIHN0cnVj dCB2YWx1ZTsKIHN0cnVjdCBibG9jazsKIHN0cnVjdCBicmVha3BvaW50X29i amVjdDsKK3N0cnVjdCBicGxvY19vYmplY3Q7CiBzdHJ1Y3QgZ2V0X251bWJl cl9vcl9yYW5nZV9zdGF0ZTsKIHN0cnVjdCB0aHJlYWRfaW5mbzsKIHN0cnVj dCBicHN0YXRzOwpAQCAtNDAzLDYgKzQwNCwxMSBAQCBzdHJ1Y3QgYnBfbG9j YXRpb24KICAgLyogU291cmNlIGZpbGUgbmFtZSBvZiB0aGlzIGFkZHJlc3Mu ICAqLwogCiAgIGNoYXIgKnNvdXJjZV9maWxlOworCisgIC8qIFB5dGhvbiBv YmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbG9jYXRpb24uICBNYXkgYmUg TlVMTCBpZiB0aGUgbG9jYXRpb24KKyAgICAgaXMgbm90IHlldCBleHBvcnRl ZCB0byBQeXRob24uICAqLworCisgIHN0cnVjdCBicGxvY19vYmplY3QgKnB5 X2JwbG9jX29iajsKIH07CiAKIC8qIFRoaXMgc3RydWN0dXJlIGlzIGEgY29s bGVjdGlvbiBvZiBmdW5jdGlvbiBwb2ludGVycyB0aGF0LCBpZiBhdmFpbGFi bGUsCmRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2Rv Yy9nZGIudGV4aW5mbwppbmRleCAyZjRhYTRmLi44OTE2MTQwIDEwMDY0NAot LS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCisrKyBiL2dkYi9kb2MvZ2RiLnRl eGluZm8KQEAgLTI0MzU4LDYgKzI0MzU4LDUzIEBAIGNvbW1hbmRzLCBzZXBh cmF0ZWQgYnkgbmV3bGluZXMuICBJZiB0aGVyZSBhcmUgbm8gY29tbWFuZHMs IHRoaXMKIGF0dHJpYnV0ZSBpcyBAY29kZXtOb25lfS4gIFRoaXMgYXR0cmli dXRlIGlzIG5vdCB3cml0YWJsZS4KIEBlbmQgZGVmdmFyCiAKK0BmaW5kZXgg Z2RiLmxvY2F0aW9ucworQGRlZnVuIGdkYi5sb2NhdGlvbnMgKCkKK1JldHVy biBhIHR1cGxlIGNvbnRhaW5pbmcgYSBzZXF1ZW5jZSBvZiBAY29kZXtnZGIu QnBMb2NhdGlvbn0gb2JqZWN0cyAKKyhzZWUgYmVsb3cpIGFzc29jaWF0ZWQg d2l0aCB0aGlzIGJyZWFrcG9pbnQuICBBIGJyZWFrcG9pbnQgd2l0aCBubyBs b2NhdGlvbgoraXMgYSBwZW5kaW5nIGJyZWFrcG9pbnQgKEB4cmVme1NldCBC cmVha3MsICwgcGVuZGluZyBicmVha3BvaW50c30pLgorQGVuZCBkZWZ1bgor CitBIGJyZWFrcG9pbnQgbG9jYXRpb24gaXMgcmVwcmVzZW50ZWQgYnkgYSBA Y29kZXtnZGIuQnBMb2NhdGlvbn0gb2JqZWN0LAord2hpY2ggb2ZmZXJzIHRo ZSBmb2xsb3dpbmcgYXR0cmlidXRlcyAoYWxsIHJlYWQgb25seSkgYW5kIG1l dGhvZHMuCitQbGVhc2Ugbm90ZSB0aGF0IGJyZWFrcG9pbnQgbG9jYXRpb24g b2JqZWN0cyBhcmUgdmVyeSB2b2xhdGlsZSBlbnRpdGllcyBpbgorQHZhbHVl e0dEQk59LCBzbyBvbmUgc2hvdWxkIGF2b2lkIGtlZXBpbmcgcmVmZXJlbmNl cyB0byB0aGVtLiAgVGhleSBjYW4gYmUgCitkZXN0cnVjdGVkIGFuZCByZWNy ZWF0ZWQgb24gYW55IGJyZWFrcG9pbnQgY3JlYXRpb24gYW5kIGRlbGV0aW9u LCBzaGFyZWQtCitsaWJyYXJ5IGV2ZW50LCBpbmZlcmlvciBmdW5jdGlvbiBj YWxsLCBAZG90c3t9IAorCitAZGVmdmFyIEJwTG9jYXRpb24ub3duZXIKK1Ro aXMgYXR0cmlidXRlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBAY29kZXtn ZGIuQnJlYWtwb2ludH0gb2JqZWN0IHdoaWNoCitvd25zIHRoaXMgbG9jYXRp b24uICBUaGlzIGF0dHJpYnV0ZSBpcyBub3Qgd3JpdGFibGUuICBGcm9tIGFu IGltcGxlbWVudGF0aW9uIAorcG9pbnQgb2YgdmlldywgdGhlcmUgaXMgYSBv bmUtdG8tbWFueSByZWxhdGlvbiBiZXR3ZWVuIGEgYnJlYWtwb2ludCBhbmQK K2l0cyBsb2NhdGlvbnMsIGV2ZW4gaWYgdHdvIGJyZWFrcG9pbnRzIGFyZSBz ZXQgYXQgc2FtZSBhZGRyZXNzLgorIAorQGVuZCBkZWZ2YXIKKworQGRlZnZh ciBCcExvY2F0aW9uLmVuYWJsZWQKK1RoaXMgYXR0cmlidXRlIGluZGljYXRl cyB3aGV0aGVyIHRoaXMgbG9jYXRpb24gaXMgY3VycmVudGx5IGVuYWJsZWQg b3Igbm90LgorVGhpcyBhdHRyaWJ1dGUgaXMgbm90IHdyaXRhYmxlLgorQGVu ZCBkZWZ2YXIKKworQGRlZnZhciBCcExvY2F0aW9uLmluZmVyaW9yCitUaGlz IGF0dHJpYnV0ZSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgQGNvZGV7Z2Ri LkluZmVyaW9yfSBvYmplY3QKK2luIHdoaWNoIHRoaXMgYnJlYWtwb2ludCBs b2NhdGlvbiBoYXMgYmVlbiBpbnNlcnRlZC4gIFRoZSB2YWx1ZSB3aWxsIGJl IAorQGNvZGV7Tm9uZX0gaWYgdGhlcmUgaXMgbm8gaW5mZXJpb3IgYXNzb2Np YXRlZCB3aXRoIHRoaXMgbG9jYXRpb24uICAgVGhpcyAKK2F0dHJpYnV0ZSBp cyBub3Qgd3JpdGFibGUuCitAZW5kIGRlZnZhcgorCitAZGVmdmFyIEJwTG9j YXRpb24uYWRkcmVzcworVGhpcyBhdHRyaWJ1dGUgaG9sZHMgYSBAY29kZXtn ZGIuVmFsdWV9IG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBhZGRyZXNz IAorYXQgd2hpY2ggdGhlIGJyZWFrcG9pbnQgaGFzIGJlZW4gaW5zZXJ0ZWQu ICAgVGhpcyBhdHRyaWJ1dGUgaXMgbm90IHdyaXRhYmxlLgorQGVuZCBkZWZ2 YXIKKworQGRlZnVuIEJwTG9jYXRpb24uaXNfdmFsaWQgKCkKK1JldHVybnMg QGNvZGV7VHJ1ZX0gaWYgdGhlIEBjb2Rle2dkYi5CcExvY2F0aW9ufSBvYmpl Y3QgaXMgdmFsaWQsCitAY29kZXtGYWxzZX0gaWYgbm90LiAgQSBAY29kZXtn ZGIuQnBMb2NhdGlvbn0gb2JqZWN0IG1heSBiZSBpbnZhbGlkYXRlZCBkdXJp bmcKK2FueSBjYWxsIHRvIEB2YWx1ZXtHREJ9J3MgQVBJIGZvciBpbnRlcm5h bCByZWFzb25zIChmb3IgaW5zdGFuY2UsIGJyZWFrcG9pbnQgCitvciBleGVj dXRpb24gcmVsYXRlZCBtZWNoYW5pc21zKS4gIEFsbCBvdGhlciBAY29kZXtn ZGIuQnBMb2NhdGlvbn0gbWV0aG9kcworYW5kIGF0dHJpYnV0ZXMgd2lsbCB0 aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIG9iamVjdCBpcyBpbnZhbGlkLgor QGVuZCBkZWZ1bgorCiBAbm9kZSBGaW5pc2ggQnJlYWtwb2ludHMgaW4gUHl0 aG9uCiBAc3Vic3Vic2VjdGlvbiBGaW5pc2ggQnJlYWtwb2ludHMKIApAQCAt MjQzNzEsMTIgKzI0NDE4LDEyIEBAIGFuZCBkZWxldGVkIHdoZW4gdGhlIGV4 ZWN1dGlvbiB3aWxsIHJ1biBvdXQgb2YgdGhlIGJyZWFrcG9pbnQgc2NvcGUg KGkuZS5AOgogQGNvZGV7QnJlYWtwb2ludC5zdG9wfSBvciBAY29kZXtGaW5p c2hCcmVha3BvaW50Lm91dF9vZl9zY29wZX0gdHJpZ2dlcmVkKS4KIEZpbmlz aCBicmVha3BvaW50cyBhcmUgdGhyZWFkIHNwZWNpZmljIGFuZCBtdXN0IGJl IGNyZWF0ZSB3aXRoIHRoZSByaWdodCAKIHRocmVhZCBzZWxlY3RlZC4gIAot IAorCiBAZGVmdW4gRmluaXNoQnJlYWtwb2ludC5fX2luaXRfXyAoQHJ7W31m cmFtZUBye119IEBye1t9LCBpbnRlcm5hbEBye119KQogQ3JlYXRlIGEgZmlu aXNoIGJyZWFrcG9pbnQgYXQgdGhlIHJldHVybiBhZGRyZXNzIG9mIHRoZSBA Y29kZXtnZGIuRnJhbWV9CiBvYmplY3QgQHZhcntmcmFtZX0uICBJZiBAdmFy e2ZyYW1lfSBpcyBub3QgcHJvdmlkZWQsIHRoaXMgZGVmYXVsdHMgdG8gdGhl CiBuZXdlc3QgZnJhbWUuICBUaGUgb3B0aW9uYWwgQHZhcntpbnRlcm5hbH0g YXJndW1lbnQgYWxsb3dzIHRoZSBicmVha3BvaW50IHRvCi1iZWNvbWUgaW52 aXNpYmxlIHRvIHRoZSB1c2VyLiAgQHhyZWZ7QnJlYWtwb2ludHMgSW4gUHl0 aG9ufSwgZm9yIGZ1cnRoZXIgCitiZWNvbWUgaW52aXNpYmxlIHRvIHRoZSB1 c2VyLiAgQHB4cmVme0JyZWFrcG9pbnRzIEluIFB5dGhvbn0sIGZvciBmdXJ0 aGVyIAogZGV0YWlscyBhYm91dCB0aGlzIGFyZ3VtZW50LgogQGVuZCBkZWZ1 bgogCmRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWJwbG9jLmMgYi9nZGIv cHl0aG9uL3B5LWJwbG9jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uYmVhYjkyNgotLS0gL2Rldi9udWxsCisrKyBiL2dkYi9weXRo b24vcHktYnBsb2MuYwpAQCAtMCwwICsxLDMxMiBAQAorLyogUHl0aG9uIGlu dGVyZmFjZSB0byBicmVha3BvaW50IGxvY2F0aW9ucy4KKworICAgQ29weXJp Z2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor CisgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisKKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor ICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAg IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu CisKKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4gICovCisKKworI2luY2x1ZGUgImRlZnMuaCIKKyNpbmNs dWRlICJpbmZlcmlvci5oIgorI2luY2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5o IgorI2luY2x1ZGUgIm9ic2VydmVyLmgiCisjaW5jbHVkZSAiZ2RiYXJjaC5o IgorCitzdHJ1Y3QgYnBsb2Nfb2JqZWN0Cit7CisgIFB5T2JqZWN0X0hFQUQK KworICAvKiBUaGUgbG9jYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGlzIGdk Yi5CcExvY2F0aW9uIG9iamVjdC4gIEl0J3MgdGhlIHNhbWUKKyAgICAgaWRl YSBhcyBnZGIuQnJlYWtwb2ludCwgaWYgdGhlICdiYWNrZW5kJyBsb2NhdGlv biBpcyBkZWxldGVkLCBMT0MgaXMKKyAgICAgc2V0IHRvIE5VTEwuICBObyBy ZWZlcmVuY2UgdG8gdGhlIGxvY2F0aW9uIGlzIG93bmVkIGhlcmUgKGluIHRl cm1zIG9mCisgICAgIHJlZi4gY291bnRpbmcpIGluIG9yZGVyIG5vdCB0byBj aGFuZ2UgdGhlIGludGVybmFsIGJlaGF2aW9yLiAgKi8KKyAgc3RydWN0IGJw X2xvY2F0aW9uICpsb2M7CisKKyAgLyogMSBpZiB0aGUgb3duZXIgQlAgaGFz IGJlZW4gZGVsZXRlZCwgMCBvdGhlcndpc2UuICAqLworICBpbnQgaW52YWxp ZF9vd25lcjsKK307CisKKy8qIFJlcXVpcmUgdGhhdCBMT0NBVElPTiBiZSBh IHZhbGlkIGJwX2xvY2F0aW9uOyB0aHJvdyBhIFB5dGhvbgorICAgZXhjZXB0 aW9uIGlmIGl0IGlzIGludmFsaWQuICAqLworI2RlZmluZSBCUExPQ1BZX1JF UVVJUkVfVkFMSUQoTG9jYXRpb24pICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg ICAgaWYgKChMb2NhdGlvbiktPmxvYyA9PSBOVUxMKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gUHlF cnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJC cExvY2F0aW9uIGludmFsaWQuIikpOyAgICAgICAgICAgICAgICAgXAorICAg IH0gd2hpbGUgKDApCisKK3N0YXRpYyBQeVR5cGVPYmplY3QgYnBsb2Nfb2Jq ZWN0X3R5cGU7CisKKy8qIENhbGwgYnkgZnJlZV9icF9sb2NhdGlvbiB3aGVu IGxvYyBpcyBhYm91dCB0byBiZSBmcmVlZC4gICovCisKK3ZvaWQKK2dkYnB5 X2JwbG9jYXRpb25fZnJlZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCit7 CisgIGlmIChsb2MtPnB5X2JwbG9jX29iaikKKyAgICB7CisgICAgICBsb2Mt PnB5X2JwbG9jX29iai0+bG9jID0gTlVMTDsKKyAgICAgIFB5X0RFQ1JFRiAo bG9jLT5weV9icGxvY19vYmopOworICAgIH0KK30KKworLyogRGlzc29jaWF0 ZSB0aGUgYnBfbG9jYXRpb24gZnJvbSB0aGUgUHl0aG9uIG9iamVjdC4gICov CisKK3N0YXRpYyB2b2lkCiticGxvY3B5X2RlYWxsb2MgKFB5T2JqZWN0ICpz ZWxmKQoreworICBicGxvY19vYmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nf b2JqZWN0ICopIHNlbGY7CisKKyAgaWYgKHNlbGZfYnBsb2MtPmxvYyAhPSBO VUxMKQorICAgIHNlbGZfYnBsb2MtPmxvYy0+cHlfYnBsb2Nfb2JqID0gTlVM TDsKKworICBzZWxmLT5vYl90eXBlLT50cF9mcmVlIChzZWxmKTsKK30KKwor LyogQ3JlYXRlIG9yIGFjcXVpcmUgYSByZWYgdG8gdGhlIGJwX2xvY2F0aW9u IG9iamVjdCAoZ2RiLkJwTG9jYXRpb24pCisgICB0aGF0IGVuY2Fwc3VsYXRl cyB0aGUgc3RydWN0IGJwX2xvY2F0aW9uIGZyb20gR0RCLiAgKi8KKworUHlP YmplY3QgKgorYnBsb2NhdGlvbl90b19icGxvY2F0aW9uX29iamVjdCAoc3Ry dWN0IGJwX2xvY2F0aW9uICpsb2MpCit7CisgIGJwbG9jX29iamVjdCAqYnBs b2Nfb2JqOworCisgIGdkYl9hc3NlcnQgKGxvYyAhPSBOVUxMKTsKKyAgaWYg KGxvYy0+cHlfYnBsb2Nfb2JqKQorICAgIHsKKyAgICAgIFB5X0lOQ1JFRiAo bG9jLT5weV9icGxvY19vYmopOworICAgICAgcmV0dXJuIChQeU9iamVjdCAq KSBsb2MtPnB5X2JwbG9jX29iajsKKyAgICB9CisKKyAgYnBsb2Nfb2JqID0g UHlPYmplY3RfTmV3IChicGxvY19vYmplY3QsICZicGxvY19vYmplY3RfdHlw ZSk7CisgIGlmICghYnBsb2Nfb2JqKQorICAgIHJldHVybiBOVUxMOworCisg IGJwbG9jX29iai0+bG9jID0gbG9jOworICBicGxvY19vYmotPmludmFsaWRf b3duZXIgPSAwOworICBQeV9JTkNSRUYgKGJwbG9jX29iaik7CisgIGxvYy0+ cHlfYnBsb2Nfb2JqID0gYnBsb2Nfb2JqOworCisgIHJldHVybiAoUHlPYmpl Y3QgKikgYnBsb2Nfb2JqOworfQorCisvKiBQeXRob24gZnVuY3Rpb24gdG8g Z2V0IHRoZSBCUCBvd25pbmcgdGhpcyBsb2NhdGlvbiwgaWYgYW55LiAgKi8K Kworc3RhdGljIFB5T2JqZWN0ICoKK2JwbG9jcHlfZ2V0X293bmVyIChQeU9i amVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKK3sKKyAgYnBsb2Nfb2JqZWN0 ICpzZWxmX2JwbG9jID0gKGJwbG9jX29iamVjdCAqKSBzZWxmOworCisgIEJQ TE9DUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9icGxvYyk7CisKKyAgaWYgKHNl bGZfYnBsb2MtPmludmFsaWRfb3duZXIpCisgICAgUHlfUkVUVVJOX05PTkU7 CisKKyAgaWYgKHNlbGZfYnBsb2MtPmxvYy0+b3duZXIKKyAgICAgICYmIHNl bGZfYnBsb2MtPmxvYy0+b3duZXItPnB5X2JwX29iamVjdCkKKyAgICB7Cisg ICAgICBQeV9JTkNSRUYgKHNlbGZfYnBsb2MtPmxvYy0+b3duZXItPnB5X2Jw X29iamVjdCk7CisgICAgICByZXR1cm4gKFB5T2JqZWN0ICopIHNlbGZfYnBs b2MtPmxvYy0+b3duZXItPnB5X2JwX29iamVjdDsKKyAgICB9CisKKyAgUHlf UkVUVVJOX05PTkU7Cit9CisKKy8qIFB5dGhvbiBmdW5jdGlvbiB0byB0ZXN0 IHdoZXRoZXIgb3Igbm90IHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbiBpcwor ICAgZW5hYmxlZC4gICovCisKK3N0YXRpYyBQeU9iamVjdCAqCiticGxvY3B5 X2dldF9lbmFibGVkIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkK K3sKKyAgYnBsb2Nfb2JqZWN0ICpzZWxmX2JwbG9jID0gKGJwbG9jX29iamVj dCAqKSBzZWxmOworCisgIEJQTE9DUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9i cGxvYyk7CisKKyAgaWYgKHNlbGZfYnBsb2MtPmxvYy0+ZW5hYmxlZCkKKyAg ICBQeV9SRVRVUk5fVFJVRTsKKworICBQeV9SRVRVUk5fRkFMU0U7Cit9CisK Ky8qIFB5dGhvbiBmdW5jdGlvbiB0byBnZXQgdGhlIGFkZHJlc3Mgb2YgdGhp cyBicmVha3BvaW50IGxvY2F0aW9uLiAgVGhlCisgICBnZGIuVmFsdWUgb2Jq ZWN0IHdpbGwgYmUgY2FjaGVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFjY2Vz cy4gIFJldHVybnMKKyAgIE5VTEwgaW4gY2FzZSBvZiBmYWlsdXJlLCB3aXRo IGEgUHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLworCitzdGF0aWMgUHlPYmpl Y3QgKgorYnBsb2NweV9nZXRfYWRkcmVzcyAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCit7CisgIGJwbG9jX29iamVjdCAqc2VsZl9icGxvYyA9 IChicGxvY19vYmplY3QgKikgc2VsZjsKKyAgdm9sYXRpbGUgc3RydWN0IGdk Yl9leGNlcHRpb24gZXhjZXB0OworICBzdHJ1Y3QgdHlwZSAqdmFsX3R5cGUg PSBOVUxMOyAvKiBJbml0aWFsaXplIHRvIGFwcGVhc2UgZ2NjIHdhcm5pbmcu ICAqLworICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7IC8qIEluaXRpYWxp emUgdG8gYXBwZWFzZSBnY2Mgd2FybmluZy4gICovCisgIFB5T2JqZWN0ICpw eV9hZGRyZXNzOworCisgIEJQTE9DUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9i cGxvYyk7CisKKyAgLyogR2V0IHRoZSBhZGRyZXNzIFZhbHVlIG9iamVjdCBh cyBhIHZvaWQgKiB2YWx1ZS4gICovCisgIFRSWV9DQVRDSCAoZXhjZXB0LCBS RVRVUk5fTUFTS19BTEwpCisgICAgeworICAgICAgaWYgKGlzX3dhdGNocG9p bnQgKHNlbGZfYnBsb2MtPmxvYy0+b3duZXIpKQorICAgICAgICB7CisgICAg ICAgICAgc3RydWN0IHdhdGNocG9pbnQgKndwID0gKHN0cnVjdCB3YXRjaHBv aW50ICopIHNlbGZfYnBsb2MtPmxvYy0+b3duZXI7CisKKyAgICAgICAgICBp ZiAod3AtPnZhbCkKKyAgICAgICAgICAgIHZhbF90eXBlID0gdmFsdWVfdHlw ZSAod3AtPnZhbCk7CisgICAgICAgIH0KKworICAgICAgaWYgKCF2YWxfdHlw ZSkKKyAgICAgICAgdmFsX3R5cGUgPSBidWlsdGluX3R5cGUgKHB5dGhvbl9n ZGJhcmNoKS0+YnVpbHRpbl92b2lkOworCisgICAgICB2YWwgPSB2YWx1ZV9m cm9tX3BvaW50ZXIgKGxvb2t1cF9wb2ludGVyX3R5cGUgKHZhbF90eXBlKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZl9icGxvYy0+ bG9jLT5hZGRyZXNzKTsKKyAgICB9CisgIEdEQl9QWV9IQU5ETEVfRVhDRVBU SU9OIChleGNlcHQpOworCisgIHB5X2FkZHJlc3MgPSB2YWx1ZV90b192YWx1 ZV9vYmplY3QgKHZhbCk7CisgIGlmICghcHlfYWRkcmVzcykKKyAgICByZXR1 cm4gTlVMTDsKKworICByZXR1cm4gcHlfYWRkcmVzczsKK30KKworLyogUHl0 aG9uIGZ1bmN0aW9uIHRvIGdldCB0aGUgaW5mZXJpb3IgaG9zdGluZyB0aGlz IGJyZWFrcG9pbnQgbG9jYXRpb24uCisgICBSZXR1cm4gUHlfTm9uZSBpZiB0 aGVyZSBpcyBubyBpbmZlcmlvciBhc3NvY2lhdGVkIHdpdGggdGhlIHByb2dy YW0gc3BhY2Ugb2YKKyAgIHRoaXMgbG9jYXRpb24sIG9yIE5VTEwgaW4gY2Fz ZSBvZiBmYWlsdXJlLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAq LworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9nZXRfaW5mZXJpb3Ig KFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9zdXJlKQoreworICBicGxvY19v YmplY3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7Cisg IHN0cnVjdCBpbmZlcmlvciAqaW5mOworICBQeU9iamVjdCAqaW5mb2JqOwor CisgIEJQTE9DUFlfUkVRVUlSRV9WQUxJRCAoc2VsZl9icGxvYyk7CisKKyAg aW5mID0gZmluZF9pbmZlcmlvcl9mb3JfcHJvZ3JhbV9zcGFjZSAoc2VsZl9i cGxvYy0+bG9jLT5wc3BhY2UpOworICBpZiAoIWluZikKKyAgICBQeV9SRVRV Uk5fTk9ORTsKKworICBpbmZvYmogPSBpbmZlcmlvcl90b19pbmZlcmlvcl9v YmplY3QgKGluZik7CisgIFB5X1hJTkNSRUYgKGluZm9iaik7CisKKyAgcmV0 dXJuIGluZm9iajsKK30KKworLyogUHl0aG9uIGZ1bmN0aW9uIHdoaWNoIGNo ZWNrcyB0aGUgdmFsaWRpdHkgb2YgYSBicCBsb2NhdGlvbiBvYmplY3QuICAq LworCitzdGF0aWMgUHlPYmplY3QgKgorYnBsb2NweV9pc192YWxpZCAoUHlP YmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICBicGxvY19vYmpl Y3QgKnNlbGZfYnBsb2MgPSAoYnBsb2Nfb2JqZWN0ICopIHNlbGY7CisKKyAg aWYgKHNlbGZfYnBsb2MtPmxvYykKKyAgICBQeV9SRVRVUk5fVFJVRTsKKyAg UHlfUkVUVVJOX0ZBTFNFOworfQorCisvKiBDYWxsYmFjayB0cmlnZ2VyZWQg d2hlbiBhIGJyZWFrcG9pbnQgaXMgZGVsZXRlZC4gIFRoaXMgd2lsbCBpbnZh bGlkYXRlCisgICB0aGUgY29ycmVzcG9uZGluZyBicF9sb2NhdGlvbiBQeXRo b24gb2JqZWN0IG93bmVycy4gICovCisKK3N0YXRpYyB2b2lkCiticGxvY3B5 X2JyZWFrcG9pbnRfZGVsZXRlZCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpIHsK KyAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7CisKKyAgZm9yIChsb2MgPSBi LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQorICAgIHsKKyAgICAgIGlm IChsb2MtPnB5X2JwbG9jX29iaikKKyAgICAgICAgbG9jLT5weV9icGxvY19v YmotPmludmFsaWRfb3duZXIgPSAxOworICAgIH0KK30KKworLyogSW5pdGlh bGl6ZSB0aGUgUHl0aG9uIGJwX2xvY2F0aW9uIGNvZGUuICAqLworCit2b2lk CitnZGJweV9pbml0aWFsaXplX2JwbG9jYXRpb24gKHZvaWQpCit7CisgIGlm IChQeVR5cGVfUmVhZHkgKCZicGxvY19vYmplY3RfdHlwZSkgPCAwKQorICAg IHJldHVybjsKKworICBQeV9JTkNSRUYgKCZicGxvY19vYmplY3RfdHlwZSk7 CisgIGlmIChQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJCcExv Y2F0aW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0 ICopICZicGxvY19vYmplY3RfdHlwZSkgPCAwKQorICAgIHJldHVybjsKKwor ICBvYnNlcnZlcl9hdHRhY2hfYnJlYWtwb2ludF9kZWxldGVkIChicGxvY3B5 X2JyZWFrcG9pbnRfZGVsZXRlZCk7Cit9CisKK3N0YXRpYyBQeUdldFNldERl ZiBicGxvY19vYmplY3RfZ2V0c2V0W10gPQoreworICB7ICJvd25lciIsIGJw bG9jcHlfZ2V0X293bmVyLCBOVUxMLAorICAgICJFYWNoIGJyZWFrcG9pbnQg bG9jYXRpb24gbXVzdCBiZWxvbmcgdG8gZXhhY3RseSBvbmUgaGlnaGVyLWxl dmVsIFwKK2JyZWFrcG9pbnQuICBUaGlzIHBvaW50ZXIgaXMgTlVMTCBpZmYg dGhpcyBicF9sb2NhdGlvbiBpcyBubyBcCitsb25nZXIgYXR0YWNoZWQgdG8g YSBicmVha3BvaW50IChyZWFkLW9ubHkpLiIsCisgICAgTlVMTCB9LAorICB7 ICJlbmFibGVkIiwgYnBsb2NweV9nZXRfZW5hYmxlZCwgTlVMTCwKKyAgICAi SXMgdGhpcyBwYXJ0aWN1bGFyIGxvY2F0aW9uIGVuYWJsZWQuIiwgTlVMTCB9 LAorICB7ICJhZGRyZXNzIiwgYnBsb2NweV9nZXRfYWRkcmVzcywgTlVMTCwK KyAgICAiVGhlIGFkZHJlc3MgYXQgd2hpY2ggdGhlIGJyZWFrcG9pbnQgaGFz IGJlZW4gc2V0LiIsIE5VTEwgfSwKKyAgeyAiaW5mZXJpb3IiLCBicGxvY3B5 X2dldF9pbmZlcmlvciwgTlVMTCwKKyAgICAiVGhlIGluZmVyaW9yIGluIHdo aWNoIHRoaXMgYnJlYWtwb2ludCBsb2NhdGlvbiBoYXMgYmVlbiBzZXQuIiwg TlVMTCB9LAorICB7IE5VTEwgfSAgLyogU2VudGluZWwuICAqLworfTsKKwor CitzdGF0aWMgUHlNZXRob2REZWYgYnBsb2Nfb2JqZWN0X21ldGhvZHNbXSA9 Cit7CisgIHsgImlzX3ZhbGlkIiwgYnBsb2NweV9pc192YWxpZCwgTUVUSF9O T0FSR1MsCisgICAgIlJldHVybiB0cnVlIGlmIHRoaXMgYnJlYWtwb2ludCBs b2NhdGlvbiBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LiIgfSwKKyAgeyBOVUxM IH0gLyogU2VudGluZWwuICAqLworfTsKKworc3RhdGljIFB5VHlwZU9iamVj dCBicGxvY19vYmplY3RfdHlwZSA9Cit7CisgIFB5T2JqZWN0X0hFQURfSU5J VCAoTlVMTCkKKyAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAvKiBvYl9zaXplICovCisgICJnZGIuQnBMb2NhdGlvbiIs ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICBz aXplb2YgKGJwbG9jX29iamVjdCksICAgICAgICAgICAgICAgICAgICAgIC8q IHRwX2Jhc2ljc2l6ZSAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgIGJwbG9j cHlfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBf ZGVhbGxvYyAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgIDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAq LworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgMCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgIDAs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyog dHBfcmVwciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3Nl cXVlbmNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAwLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2gg ICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLyogdHBfY2FsbCAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dl dGF0dHJvICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZm ZXIgKi8KKyAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNF VFlQRSwgICAvKiB0cF9mbGFncyAqLworICAiR0RCIGJyZWFrcG9pbnQgbG9j YXRpb24gb2JqZWN0IiwgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRw X3RyYXZlcnNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29t cGFyZSAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgIDAsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRl ciAqLworICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgIGJwbG9jX29iamVjdF9tZXRo b2RzLCAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwor ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIHRwX21lbWJlcnMgKi8KKyAgYnBsb2Nfb2JqZWN0X2dldHNldCwgICAg ICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KKyAgMCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9i YXNlICovCisgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgLyogdHBfZGljdCAqLworICAwLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwor ICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IC8qIHRwX2Rlc2NyX3NldCAqLworICAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAg MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv KiB0cF9pbml0ICovCisgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KK307CmRpZmYgLS1naXQg YS9nZGIvcHl0aG9uL3B5LWJyZWFrcG9pbnQuYyBiL2dkYi9weXRob24vcHkt YnJlYWtwb2ludC5jCmluZGV4IDE5NWVkMmIuLjI1ZWY2MmYgMTAwNjQ0Ci0t LSBhL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCisrKyBiL2dkYi9weXRo b24vcHktYnJlYWtwb2ludC5jCkBAIC01ODQsNiArNTg0LDQzIEBAIGJwcHlf Z2V0X2lnbm9yZV9jb3VudCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1 cmUpCiAgIHJldHVybiBQeUludF9Gcm9tTG9uZyAoc2VsZl9icC0+YnAtPmln bm9yZV9jb3VudCk7CiB9CiAKKworLyogUHl0aG9uIGZ1bmN0aW9uIHdoaWNo IHJldHVybnMgdGhlIEJwTG9jYXRpb24gb2JqZWN0cyBhc3NvY2lhdGVkCisg ICB3aXRoIHRoaXMgYnJlYWtwb2ludC4gICovCisKK3N0YXRpYyBQeU9iamVj dCAqCiticHB5X2xvY2F0aW9ucyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0 ICphcmdzKQoreworICBicmVha3BvaW50X29iamVjdCAqc2VsZl9icCA9IChi cmVha3BvaW50X29iamVjdCAqKSBzZWxmOworICBQeU9iamVjdCAqbGlzdCwg KnR1cGxlOworICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKKyAgaW50IGVy cjsKKworICBCUFBZX1JFUVVJUkVfVkFMSUQgKHNlbGZfYnApOworCisgIGxp c3QgPSBQeUxpc3RfTmV3ICgwKTsKKyAgaWYgKCFsaXN0KQorICAgIHJldHVy biBOVUxMOworCisgIGVyciA9IDA7CisgIGZvciAobG9jID0gc2VsZl9icC0+ YnAtPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCisgICAgeworICAgICAg UHlPYmplY3QgKmxvY19vYmogPSAgYnBsb2NhdGlvbl90b19icGxvY2F0aW9u X29iamVjdCAobG9jKTsKKyAgICAgIGVyciA9IFB5TGlzdF9BcHBlbmQgKGxp c3QsIGxvY19vYmopOworICAgICAgaWYgKGVyciA9PSAtMSkKKyAgICAgICAg eworICAgICAgICAgIFB5X0RFQ1JFRiAobGlzdCk7CisgICAgICAgICAgcmV0 dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgIFB5X0RFQ1JFRiAobG9jX29i aik7CisgICAgfQorCisgIHR1cGxlID0gUHlMaXN0X0FzVHVwbGUgKGxpc3Qp OworICBQeV9ERUNSRUYgKGxpc3QpOworCisgIHJldHVybiB0dXBsZTsKK30K KwogLyogUHl0aG9uIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhIG5ldyBicmVha3Bv aW50LiAgKi8KIHN0YXRpYyBpbnQKIGJwcHlfaW5pdCAoUHlPYmplY3QgKnNl bGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQpAQCAtOTc1 LDYgKzEwMTIsOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgYnJlYWtwb2ludF9v YmplY3RfbWV0aG9kc1tdID0KICAgICAiUmV0dXJuIHRydWUgaWYgdGhpcyBi cmVha3BvaW50IGlzIHZhbGlkLCBmYWxzZSBpZiBub3QuIiB9LAogICB7ICJk ZWxldGUiLCBicHB5X2RlbGV0ZV9icmVha3BvaW50LCBNRVRIX05PQVJHUywK ICAgICAiRGVsZXRlIHRoZSB1bmRlcmx5aW5nIEdEQiBicmVha3BvaW50LiIg fSwKKyAgeyAibG9jYXRpb25zIiwgYnBweV9sb2NhdGlvbnMsIE1FVEhfTk9B UkdTLAorICAgICJHZXQgYSBsaXN0IG9mIGdkYi5CcExvY2F0aW9uIG9iamVj dHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYnJlYWtwb2ludC4iIH0sCiAgIHsg TlVMTCB9IC8qIFNlbnRpbmVsLiAgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2dk Yi9weXRob24vcHl0aG9uLWludGVybmFsLmggYi9nZGIvcHl0aG9uL3B5dGhv bi1pbnRlcm5hbC5oCmluZGV4IDMyOGU1ZDguLjE0NjA4YzIgMTAwNjQ0Ci0t LSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKysrIGIvZ2RiL3B5 dGhvbi9weXRob24taW50ZXJuYWwuaApAQCAtMTY1LDYgKzE2NSw5IEBAIHR5 cGVkZWYgc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0CiBleHRlcm4gYnJlYWtw b2ludF9vYmplY3QgKmJwcHlfcGVuZGluZ19vYmplY3Q7CiAKIAorLyogRGVm aW5lZCBpbiBweS1icGxvYy5jICovCit0eXBlZGVmIHN0cnVjdCBicGxvY19v YmplY3QgYnBsb2Nfb2JqZWN0OworCiB0eXBlZGVmIHN0cnVjdAogewogICBQ eU9iamVjdF9IRUFECkBAIC0yMTcsNiArMjIwLDggQEAgUHlPYmplY3QgKnBz cHlfZ2V0X3ByaW50ZXJzIChQeU9iamVjdCAqLCB2b2lkICopOwogUHlPYmpl Y3QgKm9iamZpbGVfdG9fb2JqZmlsZV9vYmplY3QgKHN0cnVjdCBvYmpmaWxl ICopOwogUHlPYmplY3QgKm9iamZweV9nZXRfcHJpbnRlcnMgKFB5T2JqZWN0 ICosIHZvaWQgKik7CiAKK1B5T2JqZWN0ICpicGxvY2F0aW9uX3RvX2JwbG9j YXRpb25fb2JqZWN0IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYyk7CisKIHRo cmVhZF9vYmplY3QgKmNyZWF0ZV90aHJlYWRfb2JqZWN0IChzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwKTsKIHRocmVhZF9vYmplY3QgKmZpbmRfdGhyZWFkX29i amVjdCAocHRpZF90IHB0aWQpOwogUHlPYmplY3QgKmZpbmRfaW5mZXJpb3Jf b2JqZWN0IChpbnQgcGlkKTsKQEAgLTI0NSw2ICsyNTAsNyBAQCB2b2lkIGdk YnB5X2luaXRpYWxpemVfcHNwYWNlICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5p dGlhbGl6ZV9vYmpmaWxlICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6 ZV9icmVha3BvaW50cyAodm9pZCk7CiB2b2lkIGdkYnB5X2luaXRpYWxpemVf ZmluaXNoYnJlYWtwb2ludHMgKHZvaWQpOwordm9pZCBnZGJweV9pbml0aWFs aXplX2JwbG9jYXRpb24gKHZvaWQpOwogdm9pZCBnZGJweV9pbml0aWFsaXpl X2xhenlfc3RyaW5nICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9w YXJhbWV0ZXJzICh2b2lkKTsKIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV90aHJl YWQgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBi L2dkYi9weXRob24vcHl0aG9uLmMKaW5kZXggNWEwZDc3Ni4uYjk1ODBjZSAx MDA2NDQKLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysgYi9nZGIvcHl0 aG9uL3B5dGhvbi5jCkBAIC0xMTAxLDYgKzExMDEsMTIgQEAgZ2RicHlfYnJl YWtwb2ludF9oYXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0 ICpicF9vYmopCiAJCSAgICAic2NyaXB0aW5nIGlzIG5vdCBzdXBwb3J0ZWQu IikpOwogfQogCit2b2lkCitnZGJweV9icGxvY2F0aW9uX2ZyZWUgKHN0cnVj dCBicmVha3BvaW50X29iamVjdCAqYnBfb2JqKQoreworICByZXR1cm47Cit9 CisKICNlbmRpZiAvKiBIQVZFX1BZVEhPTiAqLwogCiAMCkBAIC0xMjQ0LDYg KzEyNTAsNyBAQCBtZXNzYWdlID09IGFuIGVycm9yIG1lc3NhZ2Ugd2l0aG91 dCBhIHN0YWNrIHdpbGwgYmUgcHJpbnRlZC4iKSwKICAgZ2RicHlfaW5pdGlh bGl6ZV9vYmpmaWxlICgpOwogICBnZGJweV9pbml0aWFsaXplX2JyZWFrcG9p bnRzICgpOwogICBnZGJweV9pbml0aWFsaXplX2ZpbmlzaGJyZWFrcG9pbnRz ICgpOworICBnZGJweV9pbml0aWFsaXplX2JwbG9jYXRpb24gKCk7CiAgIGdk YnB5X2luaXRpYWxpemVfbGF6eV9zdHJpbmcgKCk7CiAgIGdkYnB5X2luaXRp YWxpemVfdGhyZWFkICgpOwogICBnZGJweV9pbml0aWFsaXplX2luZmVyaW9y ICgpOwpkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9w eXRob24vcHl0aG9uLmgKaW5kZXggOWU0NjFmNy4uNTE2YTk0YyAxMDA2NDQK LS0tIGEvZ2RiL3B5dGhvbi9weXRob24uaAorKysgYi9nZGIvcHl0aG9uL3B5 dGhvbi5oCkBAIC00Nyw0ICs0Nyw2IEBAIGludCBnZGJweV9zaG91bGRfc3Rv cCAoc3RydWN0IGJyZWFrcG9pbnRfb2JqZWN0ICpicF9vYmopOwogCiBpbnQg Z2RicHlfYnJlYWtwb2ludF9oYXNfcHlfY29uZCAoc3RydWN0IGJyZWFrcG9p bnRfb2JqZWN0ICpicF9vYmopOwogCit2b2lkIGdkYnB5X2JwbG9jYXRpb25f ZnJlZSAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpOworCiAjZW5kaWYgLyog R0RCX1BZVEhPTl9IICovCmRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktYnJlYWtwb2ludC5leHAgYi9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktYnJlYWtwb2ludC5leHAKaW5kZXggOGVkMzc0Mi4uZTg2 NTYwMyAxMDA2NDQKLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LWJyZWFrcG9pbnQuZXhwCisrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhv bi9weS1icmVha3BvaW50LmV4cApAQCAtMTgyLDYgKzE4MiwxMSBAQCBpZiAh W3J1bnRvX21haW5dIHRoZW4gewogfQogCiBnZGJfcHlfdGVzdF9zaWxlbnRf Y21kICAicHl0aG9uIHdwMSA9IGdkYi5CcmVha3BvaW50IChcInJlc3VsdFwi LCB0eXBlPWdkYi5CUF9XQVRDSFBPSU5ULCB3cF9jbGFzcz1nZGIuV1BfV1JJ VEUgKSIgIlNldCB3YXRjaHBvaW50IiAwCisKK2dkYl90ZXN0ICJweXRob24g cHJpbnQgbGVuKHdwMS5sb2NhdGlvbnMoKSkgPT0gMSIgIlRydWUiICJjaGVj ayB3YXRjaHBvaW50IGxvY2F0aW9uIgorZ2RiX3Rlc3QgInB5dGhvbiBwcmlu dCB3cDEubG9jYXRpb25zKClcWzBcXS5pbmZlcmlvci5udW0iICIxIiAiY2hl Y2sgd2F0Y2hwb2ludCBsb2NhdGlvbidzIGluZmVyaW9yIgorZ2RiX3Rlc3Qg InB5dGhvbiBwcmludCB3cDEubG9jYXRpb25zKClcWzBcXS5hZGRyZXNzID09 IGdkYi5wYXJzZV9hbmRfZXZhbChcIiZyZXN1bHRcIikiICJUcnVlIiAiY2hl Y2sgd2F0Y2hwb2ludCBsb2NhdGlvbidzIGFkZHJlc3MiCisKIGdkYl90ZXN0 ICJjb250aW51ZSIgIi4qXFtXd1xdYXRjaHBvaW50LipyZXN1bHQuKk9sZCB2 YWx1ZSA9IDAuKk5ldyB2YWx1ZSA9IDI1LiptYWluLioiICJUZXN0IHdhdGNo cG9pbnQgd3JpdGUiCiAKICMgSW50ZXJuYWwgYnJlYWtwb2ludHMuCkBAIC0z MDQsMyArMzA5LDU1IEBAIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgICJweXRo b24gd3AxID0gd3BfZXZhbCAoXCJyZXN1bHRcIiwgdHlwZT1nZGIuQlBfV0FU Q0hQT0lOCiBnZGJfdGVzdCAiY29udGludWUiICIuKlxbV3dcXWF0Y2hwb2lu dC4qcmVzdWx0LipPbGQgdmFsdWUgPS4qTmV3IHZhbHVlID0gNzg4LioiICJU ZXN0IHdhdGNocG9pbnQgd3JpdGUiCiBnZGJfdGVzdCAicHl0aG9uIHByaW50 IG5ldmVyX2V2YWxfYnAxLmNvdW50IiAiMCIgXAogICAgICJDaGVjayB0aGF0 IHRoaXMgdW5yZWxhdGVkIGJyZWFrcG9pbnRzIGV2YWwgZnVuY3Rpb24gd2Fz IG5ldmVyIGNhbGxlZC4iCisKKyMgZ2RiLkJwTG9jYXRpb24KKworIyBTdGFy dCB3aXRoIGEgZnJlc2ggZ2RiLgorY2xlYW5fcmVzdGFydCAke3Rlc3RmaWxl fQorCitpZiAhW3J1bnRvX21haW5dIHRoZW4geworICAgIGZhaWwgIkNhbm5v dCBydW4gdG8gbWFpbi4iCisgICAgcmV0dXJuIDAKK30KK2RlbGV0ZV9icmVh a3BvaW50cworZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgZGV0YWNoLW9uLWZv cmsgb2ZmIiAiZG9uJ3QgZGV0YWNoIG9uIGZvcmsiCitnZGJfdGVzdCAiY2Fs bCBmb3JrKCkiICJOZXcgcHJvY2VzcyAuKiIgImNyZWF0ZSBhIHNlY29uZCBp bmZlcmlvciIKKworZ2RiX2JyZWFrcG9pbnQgIm1haW4iCitnZGJfdGVzdCAi cHkgcHJpbnQgbGVuKGdkYi5icmVha3BvaW50cygpKSIgIjEiICJlbnN1cmUg dGhhdCB0aHJlcmUgaXMgb25seSBvbmUgQlAiCitnZGJfdGVzdF9ub19vdXRw dXQge3B5IGJwMCA9IGdkYi5icmVha3BvaW50cygpWzBdfSAic2F2ZSBicmVh a3BvaW50IDAiCitnZGJfdGVzdCAicHkgcHJpbnQgbGVuKGJwMC5sb2NhdGlv bnMoKSkiICIyIiAiZW5zdXJlIHRoYXQgdGhyZXJlIGFyZSAyIGxvY2F0aW9u cyIKKworZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtweSBsb2MwID0gYnAwLmxvY2F0 aW9ucygpWzBdfSAic2F2ZSBsb2NhdGlvbiAwIgorZ2RiX3Rlc3Rfbm9fb3V0 cHV0IHtweSBsb2MxID0gYnAwLmxvY2F0aW9ucygpWzFdfSAic2F2ZSBsb2Nh dGlvbiAxIgorCitnZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5vd25lciA9PSBs b2MxLm93bmVyID09IGJwMCIgIlRydWUiICJ2ZXJpZnkgb3duZXJzaGlwIgor Z2RiX3Rlc3QgInB5IHByaW50IGxvYzAuYWRkcmVzcyA9PSBsb2MxLmFkZHJl c3MgIiAiVHJ1ZSIgInZlcmlmeSBhZGRyZXNzZXMgYXJlIGlkZW50aWNhbCIK KyMgaG93IHRvIGNoZWNrIGFkZHJlc3MgbG9jYXRpb24gPyAhPSBhZGRyZXNz KG1haW4pCisKK2dkYl90ZXN0IHtweSBwcmludCBsb2MwLmluZmVyaW9yID09 IGdkYi5pbmZlcmlvcnMoKVswXX0gIlRydWUiICJ2ZXJpZnkgaW5mZXJpb3Ig Zm9yIGxvYyAwIiAjaW5mIDIKK2dkYl90ZXN0IHtweSBwcmludCBsb2MxLmlu ZmVyaW9yID09IGdkYi5pbmZlcmlvcnMoKVsxXX0gIlRydWUiICJ2ZXJpZnkg aW5mZXJpb3IgZm9yIGxvYyAxIiAjaW5mIDEKKworZ2RiX3Rlc3QgInB5IHBy aW50IGxvYzAuZW5hYmxlZCA9PSBsb2MxLmVuYWJsZWQgPT0gVHJ1ZSIgIlRy dWUiICJ2ZXJpZnkgdGhhdCBsb2NhdGlvbnMgYXJlIGVuYWJsZWQiCisKK2dk Yl90ZXN0ICJweSBwcmludCBsb2MwLmluZmVyaW9yLm51bSIgIjIiICJlbnN1 cmUgdGhhdCBsb2MwIGlzIG9uIGluZmVyaW9yIDIiCisKK2dkYl90ZXN0ICJk ZXRhY2ggaW5mZXJpb3IgMiIgIkRldGFjaGluZyBmcm9tIHByb2dyYW06Lioi ICJkZXRhY2ggaW5mZXJpb3IgMiIKK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAi U3dpdGNoaW5nIHRvIGluZmVyaW9yIC4qIiAic3dpdGNoIHRvIGluZmVyaW9y IDEiCitnZGJfdGVzdF9ub19vdXRwdXQgInJlbW92ZS1pbmZlcmlvcnMgMiIg InJlbW92ZSBpbmZlcmlvciAyIgorZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAu aW5mZXJpb3IiICJOb25lIiAicmVtb3ZlZCBpbmZlcmlvciBzZXQgdG8gTm9u ZSIKKworZGVsZXRlX2JyZWFrcG9pbnRzCitnZGJfdGVzdCAicHkgcHJpbnQg YnAwLmlzX3ZhbGlkKCkiICJGYWxzZSIgInZlcmlmeSB0aGF0IEJQIGhhcyBi ZWVuIGludmFsaWRhdGVkIgorZ2RiX3Rlc3QgInB5IGJwMC5sb2NhdGlvbnMo KSIgIi4qUnVudGltZUVycm9yOiBCcmVha3BvaW50IC4qIGlzIGludmFsaWQu KiJcCisgICAgICAgICAidmVyaWZ5IHRoYXQgbG9jYXRpb25zIGNhbid0IGFj Y2Vzc2VkIG9uIGFuIGludmFsaWQgYnJlYWtwb2ludCIKKyAgICAgICAgIAor Z2RiX3Rlc3QgInB5IHByaW50IGxvYzAuaXNfdmFsaWQoKSIgIkZhbHNlIiAi dmVyaWZ5IHRoYXQgbG9jYXRpb24gaXMgaW52YWxpZCIKK2dkYl90ZXN0ICJw eSBwcmludCBsb2MwLm93bmVyIiAiLipSdW50aW1lRXJyb3I6IEJwTG9jYXRp b24gaW52YWxpZC4qIlwKKyAgICAgICAgICJ2ZXJpZnkgdGhhdCBvd25lciBj YW4ndCBiZSBhY2Nlc3NlZCIKK2dkYl90ZXN0ICJweSBwcmludCBsb2MwLmVu YWJsZWQiICIuKlJ1bnRpbWVFcnJvcjogQnBMb2NhdGlvbiBpbnZhbGlkLioi XAorICAgICAgICAgInZlcmlmeSB0aGF0IGxvY2F0aW9uIGNhbid0IGJlIGFj Y2Vzc2VkIgorZ2RiX3Rlc3QgInB5IHByaW50IGxvYzAuYWRkcmVzcyIgIi4q UnVudGltZUVycm9yOiBCcExvY2F0aW9uIGludmFsaWQuKiJcCisgICAgICAg ICAidmVyaWZ5IHRoYXQgbG9jYXRpb24gY2FuJ3QgYmUgYWNjZXNzZWQiCitn ZGJfdGVzdCAicHkgcHJpbnQgbG9jMC5pbmZlcmlvciIgIi4qUnVudGltZUVy cm9yOiBCcExvY2F0aW9uIGludmFsaWQuKiJcCisgICAgICAgICAidmVyaWZ5 IHRoYXQgaW5mZXJpb3IgY2FuJ3QgYmUgYWNjZXNzZWQiCi0tIAoxLjcuNi41 Cgo= --20cf307ac3fde7198504b63d8748--