From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 25892 invoked by alias); 21 Mar 2012 12:35:16 -0000 Received: (qmail 24515 invoked by uid 22791); 21 Mar 2012 12:35:04 -0000 X-SWARE-Spam-Status: No, hits=-2.1 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_DNSWL_LOW,TW_BJ,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail-qc0-f169.google.com (HELO mail-qc0-f169.google.com) (209.85.216.169) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 21 Mar 2012 12:34:32 +0000 Received: by qcsd16 with SMTP id d16so692445qcs.0 for ; Wed, 21 Mar 2012 05:34:31 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-system-of-record:x-gm-message-state; bh=qSKLKedA7Q7FIDgbhxNP1c80xqDXOI0XK5tYijNUrT0=; b=OPTuLFslqA9bZCZbFgaSDYgi90uj7lky08av+Q/02662bZOmPh//uT5NZUoVzDwFUq 9mNxI7oH+eXHBBeyLegPawJQm1GTDVbPwUqAJJesefqLkwpZDMYLdUtx1dW9SFpUfIDz X1/3IVUMPcVT7qdyiKFCBA6AjKjCEATA6w7AMr3nNrOQPkyC7EvD636cT1ACndugoVQ4 FdcJCaE5km6JootKgJ+8c40PnRQs32c1+oMe8D/fC89Kbhoa+N6ybDFzebuGT63/iP6m i52SOCEab5HcbRgstDEWezqhGA17oULwQeifvu2eTnMqTfA6migAUrXDsZ4Uy4veK/sJ NYRg== Received: by 10.229.78.135 with SMTP id l7mr1373654qck.113.1332333271758; Wed, 21 Mar 2012 05:34:31 -0700 (PDT) MIME-Version: 1.0 Received: by 10.229.78.135 with SMTP id l7mr1373647qck.113.1332333271562; Wed, 21 Mar 2012 05:34:31 -0700 (PDT) Received: by 10.224.182.136 with HTTP; Wed, 21 Mar 2012 05:34:31 -0700 (PDT) In-Reply-To: <837gyu17am.fsf@gnu.org> References: <837gyu17am.fsf@gnu.org> Date: Wed, 21 Mar 2012 12:35:00 -0000 Message-ID: Subject: Re: [patch 2/2] New 'explore' command Python implementation (with docs) From: Siva Chandra To: gdb-patches@sourceware.org Cc: Eli Zaretskii Content-Type: multipart/mixed; boundary=002354332aca5fbb9e04bbc003f5 X-System-Of-Record: true X-Gm-Message-State: ALoCoQlDn/tQqh2oCmHc+gmJEHhvRcH6Giu3QtQ/8+C675AR2k2OnDCrhWBrIxjbxd6VVt1jWX8D8dO/1TH+opPjcRkGrmsAw4nIZSkf12VzkDJirS+qpXx3r4kzZ4/WnLa3T7RpyKXvgPJEM+wkwmLgX1kR3NSu4g== 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-03/txt/msg00779.txt.bz2 --002354332aca5fbb9e04bbc003f5 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 1702 Hello, I was hoping to submit the other patch on Value.referenced_value before sending this one over. Since I could not yet submit (though approved), I am sending over the 'explore' command patch with suggested changes. Thanks to Eli for reviewing. I have modified according to your suggestions. However, since there is a lot of new material, it will require another close review. Docs ChangeLog: 2012-03-21 Siva Chandra * gdb.texinfo (Examining Data): Document the 'explore' command. Code ChangeLog: 2012-03-21 Siva Chandra New command 'explore' which helps explore values and types in scope. * NEWS: Add an entry about the new 'explore' command. * data-directory/Makefile.in: Add gdb/command/explore.py * python/lib/gdb/command/explore.py: Implemention of the 'explore' command using the GDB Python API. Testsuite ChangeLog: 2012-03-21 Siva Chandra * gdb.python/Makefile.in: Add py-explore to EXECUTABLES * gdb.python/py-explore.c: C program used for testing the new 'explore' command. * gdb-python/py-explore.exp: Tests for the new 'explore' command. Thanks, Siva Chandra On Fri, Mar 9, 2012 at 2:26 PM, Eli Zaretskii wrote: >> Date: Wed, 7 Mar 2012 16:58:29 +0530 >> From: Siva Chandra >> >> +Another way of examining values of expressions and type information is >> +through the Python extension (hence only available if GDB build is > > @value{GDBN} instead of a literal "GDB". > > The rest of the documentation text is identical to what I already > reviewed. > > Thanks. --002354332aca5fbb9e04bbc003f5 Content-Type: text/plain; charset=US-ASCII; name="python_explore_command_patch_v3.txt" Content-Disposition: attachment; filename="python_explore_command_patch_v3.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h02cob1k0 Content-length: 76743 ZGlmZiAtcnVwTiBzcmMvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmlu IHNyY19leHBsb3JlX3B5dGhvbi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZp bGUuaW4KLS0tIHNyYy9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4J MjAxMi0wMS0wNCAxMzo0NzoxOS4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19l eHBsb3JlX3B5dGhvbi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4J MjAxMi0wMi0xOSAxNzo1OTo1NC4yODE4MDY1MjEgKzA1MzAKQEAgLTU4LDcg KzU4LDggQEAgUFlUSE9OX0ZJTEVTID0gXAogCWdkYi9wcm9tcHQucHkgXAog CWdkYi9jb21tYW5kL19faW5pdF9fLnB5IFwKIAlnZGIvY29tbWFuZC9wcmV0 dHlfcHJpbnRlcnMucHkgXAotCWdkYi9jb21tYW5kL3Byb21wdC5weQorCWdk Yi9jb21tYW5kL3Byb21wdC5weSBcCisJZ2RiL2NvbW1hbmQvZXhwbG9yZS5w eQogCiBGTEFHU19UT19QQVNTID0gXAogCSJwcmVmaXg9JChwcmVmaXgpIiBc CmRpZmYgLXJ1cE4gc3JjL2dkYi9kb2MvZ2RiLnRleGluZm8gc3JjX2V4cGxv cmVfcHl0aG9uL2dkYi9kb2MvZ2RiLnRleGluZm8KLS0tIHNyYy9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTItMDItMTAgMDY6NTQ6NTguMDAwMDAwMDAwICsw NTMwCisrKyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL2RvYy9nZGIudGV4aW5m bwkyMDEyLTAzLTIxIDE2OjIxOjM5LjI4OTI1NDE1NSArMDUzMApAQCAtNzA5 Myw2ICs3MDkzLDE1MyBAQCBmaWVsZHMgb2YgYSBzdHJ1Y3Qgb3IgYSBjbGFz cyBhcmUgZGVjbGFyCiBjb21tYW5kIHJhdGhlciB0aGFuIEBjb2Rle3ByaW50 fS4gIEB4cmVme1N5bWJvbHMsICxFeGFtaW5pbmcgdGhlIFN5bWJvbAogVGFi bGV9LgogCitAY2luZGV4IGV4cGxvcmluZyBoaWVyYXJjaGljYWwgZGF0YSBz dHJ1Y3R1cmVzCitAa2luZGV4IGV4cGxvcmUKK0Fub3RoZXIgd2F5IG9mIGV4 YW1pbmluZyB2YWx1ZXMgb2YgZXhwcmVzc2lvbnMgYW5kIHR5cGUgaW5mb3Jt YXRpb24gaXMKK3Rocm91Z2ggdGhlIFB5dGhvbiBleHRlbnNpb24gY29tbWFu ZCBAY29kZXtleHBsb3JlfSAoYXZhaWxhYmxlIG9ubHkgaWYKK3RoZSBAdmFs dWV7R0RCTn0gYnVpbGQgaXMgY29uZmlndXJlZCB3aXRoIEBjb2Rley0td2l0 aC1weXRob259KS4gIEl0CitvZmZlcnMgYW4gaW50ZXJhY3RpdmUgd2F5IHRv IHN0YXJ0IGF0IHRoZSBoaWdoZXN0IGxldmVsIChvciwgdGhlIG1vc3QKK2Fi c3RyYWN0IGxldmVsKSBvZiB0aGUgZGF0YSB0eXBlIG9mIGFuIGV4cHJlc3Np b24gKG9yLCB0aGUgZGF0YSB0eXBlCitpdHNlbGYpIGFuZCBleHBsb3JlIGFs bCB0aGUgd2F5IGRvd24gdG8gbGVhZiBzY2FsYXIgdmFsdWVzL2ZpZWxkcwor ZW1iZWRkZWQgaW4gdGhlIGhpZ2hlciBsZXZlbCBkYXRhIHR5cGVzLgorCitA dGFibGUgQGNvZGUKK0BpdGVtIGV4cGxvcmUgQHZhcnthcmd9CitAdmFye2Fy Z30gaXMgZWl0aGVyIGFuIGV4cHJlc3Npb24gKGluIHRoZSBzb3VyY2UgbGFu Z3VhZ2UpLCBvciBhIHR5cGUKK3Zpc2libGUgaW4gdGhlIGN1cnJlbnQgY29u dGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZC4KK0BlbmQgdGFi bGUKKworVGhlIHdvcmtpbmcgb2YgdGhlIEBjb2Rle2V4cGxvcmV9IGNvbW1h bmQgY2FuIGJlIGlsbHVzdHJhdGVkIHdpdGggYW4KK2V4YW1wbGUuICBJZiBh IGRhdGEgdHlwZSBAY29kZXtzdHJ1Y3QgQ29tcGxleFN0cnVjdH0gaXMgZGVm aW5lZCBpbiB5b3VyCitDIHByb2dyYW0gYXMKKworQHNtYWxsZXhhbXBsZQor c3RydWN0IFNpbXBsZVN0cnVjdAorQHsKKyAgaW50IGk7CisgIGRvdWJsZSBk OworQH07CisKK3N0cnVjdCBDb21wbGV4U3RydWN0CitAeworICBzdHJ1Y3Qg U2ltcGxlU3RydWN0ICpzc19wOworICBpbnQgYXJyWzEwXTsKK0B9OworQGVu ZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50Citmb2xsb3dlZCBieSB2YXJp YWJsZSBkZWNsYXJhdGlvbnMgYXMKKworQHNtYWxsZXhhbXBsZQorc3RydWN0 IFNpbXBsZVN0cnVjdCBzcyA9IEB7IDEwLCAxLjExIEB9Oworc3RydWN0IENv bXBsZXhTdHJ1Y3QgY3MgPSBAeyAmc3MsIEB7IDAsIDEsIDIsIDMsIDQsIDUs IDYsIDcsIDgsIDkgQH0gQH07CitAZW5kIHNtYWxsZXhhbXBsZQorCitAbm9p bmRlbnQKK3RoZW4sIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgQGNvZGV7 Y3N9IGNhbiBiZSBleHBsb3JlZCB1c2luZyB0aGUKK0Bjb2Rle2V4cGxvcmV9 IGNvbW1hbmQgYXMgZm9sbG93cy4KKworQHNtYWxsZXhhbXBsZQorKGdkYikg ZXhwbG9yZSBjcworVGhlIHZhbHVlIG9mIGBjcycgaXMgYSBzdHJ1Y3QvY2xh c3Mgb2YgdHlwZSBgc3RydWN0IENvbXBsZXhTdHJ1Y3QnIHdpdGgKK3RoZSBm b2xsb3dpbmcgZmllbGRzOgorCisgIHNzX3AgPSA8RW50ZXIgMCB0byBleHBs b3JlIHRoaXMgZmllbGQgb2YgdHlwZSBgc3RydWN0IFNpbXBsZVN0cnVjdCAq Jz4KKyAgIGFyciA9IDxFbnRlciAxIHRvIGV4cGxvcmUgdGhpcyBmaWVsZCBv ZiB0eXBlIGBpbnQgWzEwXSc+CisKK0VudGVyIHRoZSBmaWVsZCBudW1iZXIg b2YgY2hvaWNlOgorQGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitT aW5jZSB0aGUgZmllbGRzIG9mIEBjb2Rle2NzfSBhcmUgbm90IHNjYWxhciB2 YWx1ZXMsIHlvdSBhcmUgYmVpbmcKK3Byb21wdGVkIHRvIGNob3NlIHRoZSBm aWVsZCB5b3Ugd2FudCB0byBleHBsb3JlLiAgTGV0cyBzYXkgeW91IGNob29z ZQordGhlIGZpZWxkIEBjb2Rle3NzX3B9IGJ5IGVudGVyaW5nIEBjb2RlezB9 LiAgVGhlbiwgc2luY2UgdGhpcyBmaWVsZCBpcyBhCitwb2ludGVyLCB5b3Ug d2lsbCBiZSBhc2tlZCBpZiBpdCBpcyBwb2ludGluZyB0byBhIHNpbmdsZSB2 YWx1ZS4gIEZyb20KK3RoZSBkZWNsYXJhdGlvbiBvZiBAY29kZXtjc30gYWJv dmUsIGl0IGlzIGluZGVlZCBwb2ludGluZyB0byBhIHNpbmdsZQordmFsdWUs IGhlbmNlIHlvdSBlbnRlciBAY29kZXt5fS4gIElmIHlvdSBlbnRlciBAY29k ZXtufSwgdGhlbiB5b3Ugd2lsbAorYmUgYXNrZWQgaWYgaXQgd2VyZSBwb2lu dGluZyB0byBhbiBhcnJheSBvZiB2YWx1ZXMsIGluIHdoaWNoIGNhc2UgdGhp cworZmllbGQgd2lsbCBiZSBleHBsb3JlZCBhcyBpZiBpdCB3ZXJlIGFuIGFy cmF5LgorCitAc21hbGxleGFtcGxlCitgY3Muc3NfcCcgaXMgYSBwb2ludGVy IHRvIGEgdmFsdWUgb2YgdHlwZSBgc3RydWN0IFNpbXBsZVN0cnVjdCcKK0Nv bnRpbnVlIGV4cGxvcmluZyBpdCBhcyBhIHBvaW50ZXIgdG8gYSBzaW5nbGUg dmFsdWUgW3kvbl06IHkKK1RoZSB2YWx1ZSBvZiBgKihjcy5zc19wKScgaXMg YSBzdHJ1Y3QvY2xhc3Mgb2YgdHlwZSBgc3RydWN0CitTaW1wbGVTdHJ1Y3Qn IHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6CisKKyAgaSA9IDEwIC4uIChW YWx1ZSBvZiB0eXBlIGBpbnQnKQorICBkID0gMS4xMTAwMDAwMDAwMDAwMDAx IC4uIChWYWx1ZSBvZiB0eXBlIGBkb3VibGUnKQorCitQcmVzcyBlbnRlciB0 byByZXR1cm4gdG8gcGFyZW50IHZhbHVlOgorQGVuZCBzbWFsbGV4YW1wbGUK KworQG5vaW5kZW50CitJZiB0aGUgZmllbGQgQGNvZGV7YXJyfSBvZiBAY29k ZXtjc30gd2FzIGNob3NlbiBmb3IgZXhwbG9yYXRpb24gYnkKK2VudGVyaW5n IEBjb2RlezF9IGVhcmxpZXIsIHRoZW4gc2luY2UgaXQgaXMgYXMgYXJyYXks IHlvdSB3aWxsIGJlCitwcm9tcHRlZCB0byBlbnRlciB0aGUgaW5kZXggb2Yg dGhlIGVsZW1lbnQgaW4gdGhlIGFycmF5IHRoYXQgeW91IHdhbnQKK3RvIGV4 cGxvcmUuCisKK0BzbWFsbGV4YW1wbGUKK2Bjcy5hcnInIGlzIGFuIGFycmF5 IG9mIGBpbnQnLgorRW50ZXIgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50IHlv dSB3YW50IHRvIGV4cGxvcmUgaW4gYGNzLmFycic6IDUKKworYChjcy5hcnIp WzVdJyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBlIGBpbnQnLgorCisoY3Mu YXJyKVs1XSA9IDQKKworUHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVu dCB2YWx1ZTogCitAZW5kIHNtYWxsZXhhbXBsZQorCitJbiBnZW5lcmFsLCBh dCBhbnkgc3RhZ2Ugb2YgZXhwbG9yYXRpb24sIHlvdSBjYW4gZ28gZGVlcGVy IHRvd2FyZHMgdGhlCitsZWFmIHZhbHVlcyBieSByZXNwb25kaW5nIHRvIHRo ZSBwcm9tcHRzIGFwcHJvcHJpYXRlbHksIG9yIGhpdCB0aGUKK3JldHVybiBr ZXkgdG8gcmV0dXJuIHRvIHRoZSBlbmNsb3NpbmcgZGF0YSBzdHJ1Y3R1cmUg KHRoZSBAaXtoaWdoZXJ9CitsZXZlbCBkYXRhIHN0cnVjdHVyZSkuCisKK1Np bWlsYXIgdG8gZXhwbG9yaW5nIHZhbHVlcywgeW91IGNhbiB1c2UgdGhlIEBj b2Rle2V4cGxvcmV9IGNvbW1hbmQgdG8KK2V4cGxvcmUgdHlwZXMuICBJbnN0 ZWFkIG9mIHNwZWNpZnlpbmcgYSB2YWx1ZSAod2hpY2ggaXMgdHlwaWNhbGx5 IGEKK3ZhcmlhYmxlIG5hbWUgb3IgYW4gZXhwcmVzc2lvbiB2YWxpZCBpbiB0 aGUgY3VycmVudCBjb250ZXh0IG9mIHRoZQorcHJvZ3JhbSBiZWluZyBkZWJ1 Z2dlZCksIHlvdSBzcGVjaWZ5IGEgdHlwZSBuYW1lLiAgSWYgeW91IGNvbnNp ZGVyIHRoZQorc2FtZSBleGFtcGxlIGFzIGFib3ZlLCB5b3VyIGNhbiBleHBs b3JlIHRoZSB0eXBlCitAY29kZXtzdHJ1Y3QgQ29tcGxleFN0cnVjdH0gYnkg cGFzc2luZyB0aGUgYXJndW1lbnQKK0Bjb2Rle3N0cnVjdCBDb21wbGV4U3Ry dWN0fSB0byB0aGUgQGNvZGV7ZXhwbG9yZX0gY29tbWFuZC4KKworQHNtYWxs ZXhhbXBsZQorKGdkYikgZXhwbG9yZSBzdHJ1Y3QgQ29tcGxleFN0cnVjdAor QGVuZCBzbWFsbGV4YW1wbGUKKworQG5vaW5kZW50CitCeSByZXNwb25kaW5n IHRvIHRoZSBwcm9tcHRzIGFwcHJvcHJpYXRlbHkgaW4gdGhlIHN1YnNlcXVl bnQgaW50ZXJhY3RpdmUKK3Nlc3Npb24sIHlvdSBjYW4gZXhwbG9yZSB0aGUg dHlwZSBAY29kZXtzdHJ1Y3QgQ29tcGxleFN0cnVjdH0gaW4gYQorbWFubmVy IHNpbWlsYXIgdG8gaG93IHRoZSB2YWx1ZSBAY29kZXtjc30gd2FzIGV4cGxv cmVkIGluIHRoZSBhYm92ZQorZXhhbXBsZS4KKworVGhlIEBjb2Rle2V4cGxv cmV9IGNvbW1hbmQgYWxzbyBoYXMgdHdvIHN1Yi1jb21tYW5kcywKK0Bjb2Rl e2V4cGxvcmUgdmFsdWV9IGFuZCBAY29kZXtleHBsb3JlIHR5cGV9LiBUaGUg Zm9ybWVyIHN1Yi1jb21tYW5kIGlzCithIHdheSB0byBleHBsaWNpdGx5IHNw ZWNpZnkgdGhhdCB2YWx1ZSBleHBsb3JhdGlvbiBvZiB0aGUgYXJndW1lbnQg aXMKK2JlaW5nIGludm9rZWQsIHdoaWxlIHRoZSBsYXR0ZXIgaXMgYSB3YXkg dG8gZXhwbGljaXRseSBzcGVjaWZ5IHRoYXQgdHlwZQorZXhwbG9yYXRpb24g b2YgdGhlIGFyZ3VtZW50IGlzIGJlaW5nIGludm9rZWQuCisKK0B0YWJsZSBA Y29kZQorQGl0ZW0gZXhwbG9yZSB2YWx1ZSBAdmFye2V4cHJ9CitAY2luZGV4 IGV4cGxvcmUgdmFsdWUKK1RoaXMgc3ViLWNvbW1hbmQgb2YgQGNvZGV7ZXhw bG9yZX0gZXhwbG9yZXMgdGhlIHZhbHVlIG9mIHRoZQorZXhwcmVzc2lvbiBA dmFye2V4cHJ9IChpZiBAdmFye2V4cHJ9IGlzIGFuIGV4cHJlc3Npb24gdmFs aWQgaW4gdGhlCitjdXJyZW50IGNvbnRleHQgb2YgdGhlIHByb2dyYW0gYmVp bmcgZGVidWdnZWQpLiAgVGhlIGJlaGF2aW9yIG9mIHRoaXMKK2NvbW1hbmQg aXMgaWRlbnRpY2FsIHRvIHRoYXQgb2YgdGhlIGJlaGF2aW9yIG9mIHRoZSBA Y29kZXtleHBsb3JlfQorY29tbWFuZCBiZWluZyBwYXNzZWQgdGhlIGFyZ3Vt ZW50IEB2YXJ7ZXhwcn0uCisKK0BpdGVtIGV4cGxvcmUgdHlwZSBAdmFye2Fy Z30KK0BjaW5kZXggZXhwbG9yZSB0eXBlCitUaGlzIHN1Yi1jb21tYW5kIG9m IEBjb2Rle2V4cGxvcmV9IGV4cGxvcmVzIHRoZSB0eXBlIG9mIEB2YXJ7YXJn fSAoaWYKK0B2YXJ7YXJnfSBpcyBhIHR5cGUgdmlzaWJsZSBpbiB0aGUgY3Vy cmVudCBjb250ZXh0IG9mIHByb2dyYW0gYmVpbmcKK2RlYnVnZ2VkKSwgb3Ig dGhlIHR5cGUgb2YgdGhlIHZhbHVlL2V4cHJlc3Npb24gQHZhcnthcmd9IChp ZiBAdmFye2FyZ30KK2lzIGFuIGV4cHJlc3Npb24gdmFsaWQgaW4gdGhlIGN1 cnJlbnQgY29udGV4dCBvZiB0aGUgcHJvZ3JhbSBiZWluZworZGVidWdnZWQp LiAgSWYgQHZhcnthcmd9IGlzIGEgdHlwZSwgdGhlbiB0aGUgYmVoYXZpb3Ig b2YgdGhpcyBjb21tYW5kIGlzCitpZGVudGljYWwgdG8gdGhhdCBvZiB0aGUg QGNvZGV7ZXhwbG9yZX0gY29tbWFuZCBiZWluZyBwYXNzZWQgdGhlCithcmd1 bWVudCBAdmFye2FyZ30uICBJZiBAdmFye2FyZ30gaXMgYW4gZXhwcmVzc2lv biwgdGhlbiB0aGUgYmVoYXZpb3Igb2YKK3RoaXMgY29tbWFuZCB3aWxsIGJl IGlkZW50aWNhbCB0byB0aGF0IG9mIHRoZSBAY29kZXtleHBsb3JlfSBjb21t YW5kCitiZWluZyBwYXNzZWQgdGhlIHR5cGUgb2YgQHZhcnthcmd9IGFzIHRo ZSBhcmd1bWVudC4KK0BlbmQgdGFibGUKKwogQG1lbnUKICogRXhwcmVzc2lv bnM6OiAgICAgICAgICAgICAgICAgRXhwcmVzc2lvbnMKICogQW1iaWd1b3Vz IEV4cHJlc3Npb25zOjogICAgICAgQW1iaWd1b3VzIEV4cHJlc3Npb25zCmRp ZmYgLXJ1cE4gc3JjL2dkYi9ORVdTIHNyY19leHBsb3JlX3B5dGhvbi9nZGIv TkVXUwotLS0gc3JjL2dkYi9ORVdTCTIwMTItMDMtMDUgMTY6NTU6MzYuNjUy MzQyMTg5ICswNTMwCisrKyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL05FV1MJ MjAxMi0wMy0yMSAxNzoyNjoxNS40ODU2OTc1NDQgKzA1MzAKQEAgLTQ5LDYg KzQ5LDExIEBACiAgICoqICJjYXRjaCBsb2FkIiBhbmQgImNhdGNoIHVubG9h ZCIgY2FuIGJlIHVzZWQgdG8gc3RvcCB3aGVuIGEgc2hhcmVkCiAgICAgIGxp YnJhcnkgaXMgbG9hZGVkIG9yIHVubG9hZGVkLCByZXNwZWN0aXZlbHkuCiAK KyAgKiogImV4cGxvcmUiIGFuZCBpdHMgc3ViIGNvbW1hbmRzICJleHBsb3Jl IHZhbHVlIiBhbmQgImV4cGxvcmUgdHlwZSIKKyAgICAgY2FuIGJlIHVzZWQg dG8gcmVjdXJyc2l2ZWx5IGV4cGxvcmUgdmFsdWVzIGFuZCB0eXBlcyBvZgor ICAgICBleHByZXNzaW9ucy4gIFRoZXNlIGNvbW1hbmRzIGFyZSBhdmFpbGFi bGUgb25seSBpZiBHREIgaXMKKyAgICAgY29uZmlndXJlZCB3aXRoICctLXdp dGgtcHl0aG9uJy4KKwogKioqIENoYW5nZXMgaW4gR0RCIDcuNAogCiAqIEdE QiBub3cgaGFuZGxlcyBhbWJpZ3VvdXMgbGluZXNwZWNzIG1vcmUgY29uc2lz dGVudGx5OyB0aGUgZXhpc3RpbmcKZGlmZiAtcnVwTiBzcmMvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvZXhwbG9yZS5weSBzcmNfZXhwbG9yZV9weXRo b24vZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvZXhwbG9yZS5weQotLS0g c3JjL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2V4cGxvcmUucHkJMTk3 MC0wMS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19leHBs b3JlX3B5dGhvbi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9leHBsb3Jl LnB5CTIwMTItMDMtMjEgMTE6MTY6NDEuOTM4MTQ2MDQ2ICswNTMwCkBAIC0w LDAgKzEsNjk0IEBACisjIEdEQiAnZXhwbG9yZScgY29tbWFuZC4KKyMgQ29w eXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisiIiJJbXBsZW1lbnRhdGlvbiBvZiB0 aGUgR0RCICdleHBsb3JlJyBjb21tYW5kIHVzaW5nIHRoZSBHREIgUHl0aG9u IEFQSS4iIiIKKworaW1wb3J0IGdkYgorCitjbGFzcyBFeHBsb3JlcihvYmpl Y3QpOgorICAgICIiIkludGVybmFsIGNsYXNzIHdoaWNoIGludm9rZXMgb3Ro ZXIgZXhwbG9yZXJzLiIiIgorCisgICAgIyBUaGlzIG1hcCBpcyBmaWxsZWQg YnkgdGhlIEV4cGxvcmVyLmluaXRfZW52KCkgZnVuY3Rpb24KKyAgICB0eXBl X2NvZGVfdG9fZXhwbG9yZXJfbWFwID0geyB9CisKKyAgICBfU0NBTEFSX1RZ UEVfTElTVCA9ICgKKyAgICAgICAgZ2RiLlRZUEVfQ09ERV9DSEFSLAorICAg ICAgICBnZGIuVFlQRV9DT0RFX0lOVCwKKyAgICAgICAgZ2RiLlRZUEVfQ09E RV9CT09MLAorICAgICAgICBnZGIuVFlQRV9DT0RFX0ZMVCwKKyAgICAgICAg Z2RiLlRZUEVfQ09ERV9WT0lELAorICAgICAgICBnZGIuVFlQRV9DT0RFX0VO VU0sCisgICAgKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBndWFy ZF9leHByKGV4cHIpOgorICAgICAgICBsZW5ndGggPSBsZW4oZXhwcikKKyAg ICAgICAgZ3VhcmQgPSBGYWxzZQorCisgICAgICAgIGlmIGV4cHJbMF0gPT0g JygnIGFuZCBleHByW2xlbmd0aC0xXSA9PSAnKSc6CisgICAgICAgICAgICBw YXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpID0gMAorICAgICAg ICAgICAgd2hpbGUgaSA8IGxlbmd0aDoKKyAgICAgICAgICAgICAgICBjID0g ZXhwcltpXQorICAgICAgICAgICAgICAgIGlmIChjID09ICdfJyBvciAoJ2En IDw9IGMgYW5kIGMgPD0gJ3onKSBvcgorICAgICAgICAgICAgICAgICAgICAo J0EnIDw9IGMgYW5kIGMgPD0gJ1onKSBvciAoJzAnIDw9IGMgYW5kIGMgPD0g JzknKSk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBndWFyZCA9IFRydWUK KyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBp ICs9IDEKKworICAgICAgICBpZiBndWFyZDoKKyAgICAgICAgICAgIHJldHVy biAiKCIgKyBleHByICsgIikiCisgICAgICAgIGVsc2U6CisgICAgICAgICAg ICByZXR1cm4gZXhwcgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBl eHBsb3JlX2V4cHIoZXhwciwgdmFsdWUsIGlzX2NoaWxkKToKKyAgICAgICAg IiIiTWFpbiBmdW5jdGlvbiB0byBleHBsb3JlIGFuIGV4cHJlc3Npb24gdmFs dWUuCisKKyAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAgZXhwcjog VGhlIGV4cHJlc3Npb24gc3RyaW5nIHRoYXQgaXMgYmVpbmcgZXhwbG9yZWQu CisgICAgICAgICAgICB2YWx1ZTogVGhlIGdkYi5WYWx1ZSB2YWx1ZSBvZiB0 aGUgZXhwcmVzc2lvbi4KKyAgICAgICAgICAgIGlzX2NoaWxkOiBCb29sZWFu IHZhbHVlIHRvIGluZGljYXRlIGlmIHRoZSBleHByZXNzaW9uIGlzIGEgY2hp bGQuCisgICAgICAgICAgICAgICAgICAgICAgQW4gZXhwcmVzc2lvbiBpcyBh IGNoaWxkIGlmIGl0IGlzIGRlcml2ZWQgZnJvbSB0aGUgbWFpbgorICAgICAg ICAgICAgICAgICAgICAgIGV4cHJlc3Npb24gZW50ZXJlZCBieSB0aGUgdXNl ci4gRm9yIGV4YW1wbGUsIGlmIHRoZSB1c2VyCisgICAgICAgICAgICAgICAg ICAgICAgZW50ZXJlZCBhbiBleHByZXNzaW9uIHdoaWNoIGV2YWx1YXRlcyB0 byBhIHN0cnVjdCwgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIHdoZW4g ZXhwbG9yaW5nIHRoZSBmaWVsZHMgb2YgdGhlIHN0cnVjdCwgaXNfY2hpbGQg aXMgc2V0CisgICAgICAgICAgICAgICAgICAgICAgdG8gVHJ1ZSBpbnRlcm5h bGx5LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBObyByZXR1 cm4gdmFsdWUuCisgICAgICAgICIiIgorICAgICAgICB0eXBlX2NvZGUgPSB2 YWx1ZS50eXBlLmNvZGUKKyAgICAgICAgaWYgdHlwZV9jb2RlIGluIEV4cGxv cmVyLnR5cGVfY29kZV90b19leHBsb3Jlcl9tYXA6CisgICAgICAgICAgICBl eHBsb3Jlcl9jbGFzcyA9IEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBsb3Jl cl9tYXBbdHlwZV9jb2RlXQorICAgICAgICAgICAgd2hpbGUgZXhwbG9yZXJf Y2xhc3MuZXhwbG9yZV9leHByKGV4cHIsIHZhbHVlLCBpc19jaGlsZCk6Cisg ICAgICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAg ICAgcHJpbnQgKCJFeHBsb3JlciBmb3IgdHlwZSAnJXMnIG5vdCB5ZXQgYXZh aWxhYmxlLlxuIiAlCisgICAgICAgICAgICAgICAgICAgc3RyKHZhbHVlLnR5 cGUpKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBleHBsb3JlX3R5 cGUobmFtZSwgZGF0YXR5cGUsIGlzX2NoaWxkKToKKyAgICAgICAgIiIiTWFp biBmdW5jdGlvbiB0byBleHBsb3JlIGEgZGF0YSB0eXBlLgorCisgICAgICAg IEFyZ3VtZW50czoKKyAgICAgICAgICAgIG5hbWU6IFRoZSBzdHJpbmcgcmVw cmVzZW50aW5nIHRoZSBwYXRoIHRvIHRoZSBkYXRhIHR5cGUgYmVpbmcKKyAg ICAgICAgICAgICAgICAgIGV4cGxvcmVkLgorICAgICAgICAgICAgZGF0YXR5 cGU6IFRoZSBnZGIuVHlwZSB2YWx1ZSBvZiB0aGUgZGF0YSB0eXBlIGJlaW5n IGV4cGxvcmVkLgorICAgICAgICAgICAgaXNfY2hpbGQ6IEJvb2xlYW4gdmFs dWUgdG8gaW5kaWNhdGUgaWYgdGhlIG5hbWUgaXMgYSBjaGlsZC4KKyAgICAg ICAgICAgICAgICAgICAgICBBIG5hbWUgaXMgYSBjaGlsZCBpZiBpdCBpcyBk ZXJpdmVkIGZyb20gdGhlIG1haW4gbmFtZQorICAgICAgICAgICAgICAgICAg ICAgIGVudGVyZWQgYnkgdGhlIHVzZXIuIEZvciBleGFtcGxlLCBpZiB0aGUg dXNlciBlbnRlcmVkIHRoZQorICAgICAgICAgICAgICAgICAgICAgIG5hbWUg b2Ygc3RydWN0IHR5cGUsIHRoZW4gd2hlbiBleHBsb3JpbmcgdGhlIGZpZWxk cyBvZgorICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdHJ1Y3QsIGlzX2No aWxkIGlzIHNldCB0byBUcnVlIGludGVybmFsbHkuCisKKyAgICAgICAgUmV0 dXJuczoKKyAgICAgICAgICAgIE5vIHJldHVybiB2YWx1ZS4KKyAgICAgICAg IiIiCisgICAgICAgIHR5cGVfY29kZSA9IGRhdGF0eXBlLmNvZGUKKyAgICAg ICAgaWYgdHlwZV9jb2RlIGluIEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBs b3Jlcl9tYXA6CisgICAgICAgICAgICBleHBsb3Jlcl9jbGFzcyA9IEV4cGxv cmVyLnR5cGVfY29kZV90b19leHBsb3Jlcl9tYXBbdHlwZV9jb2RlXQorICAg ICAgICAgICAgd2hpbGUgZXhwbG9yZXJfY2xhc3MuZXhwbG9yZV90eXBlKG5h bWUsIGRhdGF0eXBlLCBpc19jaGlsZCk6CisgICAgICAgICAgICAgICAgcGFz cworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgKCJFeHBsb3Jl ciBmb3IgdHlwZSAnJXMnIG5vdCB5ZXQgYXZhaWxhYmxlLlxuIiAlCisgICAg ICAgICAgICAgICAgICAgc3RyKGRhdGF0eXBlKSkKKworICAgIEBzdGF0aWNt ZXRob2QKKyAgICBkZWYgaW5pdF9lbnYoKToKKyAgICAgICAgIiIiSW5pdGlh bGl6ZXMgdGhlIEV4cGxvcmVyIGVudmlyb25tZW50LgorICAgICAgICBUaGlz IGZ1bmN0aW9uIHNob3VsZCBiZSBpbnZva2VkIGJlZm9yZSBzdGFydGluZyBh bnkgZXhwbG9yYXRpb24uIElmCisgICAgICAgIGludm9rZWQgYmVmb3JlIGFu IGV4cGxvcmF0aW9uLCBpdCBuZWVkIG5vdCBiZSBpbnZva2VkIGZvciBzdWJz ZXF1ZW50CisgICAgICAgIGV4cGxvcmF0aW9ucy4KKyAgICAgICAgIiIiCisg ICAgICAgIEV4cGxvcmVyLnR5cGVfY29kZV90b19leHBsb3Jlcl9tYXAgPSB7 CisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0NIQVIgOiBTY2FsYXJFeHBs b3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfSU5UIDogU2NhbGFy RXhwbG9yZXIsCisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0JPT0wgOiBT Y2FsYXJFeHBsb3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfRkxU IDogU2NhbGFyRXhwbG9yZXIsCisgICAgICAgICAgICBnZGIuVFlQRV9DT0RF X1ZPSUQgOiBTY2FsYXJFeHBsb3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBF X0NPREVfRU5VTSA6IFNjYWxhckV4cGxvcmVyLAorICAgICAgICAgICAgZ2Ri LlRZUEVfQ09ERV9TVFJVQ1QgOiBDb21wb3VuZEV4cGxvcmVyLAorICAgICAg ICAgICAgZ2RiLlRZUEVfQ09ERV9VTklPTiA6IENvbXBvdW5kRXhwbG9yZXIs CisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX1BUUiA6IFBvaW50ZXJFeHBs b3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfVFlQRURFRiA6IFR5 cGVkZWZFeHBsb3JlciwKKyAgICAgICAgICAgIGdkYi5UWVBFX0NPREVfQVJS QVkgOiBBcnJheUV4cGxvcmVyCisgICAgICAgIH0KKworICAgIEBzdGF0aWNt ZXRob2QKKyAgICBkZWYgaXNfc2NhbGFyX3R5cGUodHlwZSk6CisgICAgICAg ICIiIkNoZWNrcyB3aGV0aGVyIGEgdHlwZSBpcyBhIHNjYWxhciB0eXBlLgor ICAgICAgICBBIHR5cGUgaXMgYSBzY2FsYXIgdHlwZSBvZiBpdHMgdHlwZSBp cworICAgICAgICAgICAgZ2RiLlRZUEVfQ09ERV9DSEFSIG9yCisgICAgICAg ICAgICBnZGIuVFlQRV9DT0RFX0lOVCBvcgorICAgICAgICAgICAgZ2RiLlRZ UEVfQ09ERV9CT09MIG9yCisgICAgICAgICAgICBnZGIuVFlQRV9DT0RFX0ZM VCBvcgorICAgICAgICAgICAgZ2RiLlRZUEVfQ09ERV9WT0lEIG9yCisgICAg ICAgICAgICBnZGIuVFlQRV9DT0RFX0VOVU0uCisKKyAgICAgICAgQXJndW1l bnRzOgorICAgICAgICAgICAgdHlwZTogVGhlIHR5cGUgdG8gYmUgY2hlY2tl ZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgJ1RydWUnIGlm ICd0eXBlJyBpcyBhIHNjYWxhciB0eXBlLiAnRmFsc2UnIG90aGVyd2lzZS4K KyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB0eXBlLmNvZGUgaW4gRXhw bG9yZXIuX1NDQUxBUl9UWVBFX0xJU1QKKworICAgIEBzdGF0aWNtZXRob2QK KyAgICBkZWYgcmV0dXJuX3RvX3BhcmVudF92YWx1ZSgpOgorICAgICAgICAi IiJBIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2ggcHJpbnRzIHRoYXQgdGhlIGN1 cnJlbnQgZXhwbG9yYXRpb24gc2Vzc2lvbgorICAgICAgICBpcyByZXR1cm5p bmcgdG8gdGhlIHBhcmVudCB2YWx1ZS4gVXNlZnVsIHdoZW4gZXhwbG9yaW5n IHZhbHVlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHByaW50ICJcblJldHVy bmluZyB0byBwYXJlbnQgdmFsdWUuLi5cbiIKKyAgICAgICAgCisgICAgQHN0 YXRpY21ldGhvZAorICAgIGRlZiByZXR1cm5fdG9fcGFyZW50X3ZhbHVlX3By b21wdCgpOgorICAgICAgICAiIiJBIHV0aWxpdHkgZnVuY3Rpb24gd2hpY2gg cHJvbXB0cyB0aGUgdXNlciB0byBwcmVzcyB0aGUgJ2VudGVyJyBrZXkKKyAg ICAgICAgc28gdGhhdCB0aGUgZXhwbG9yYXRpb24gc2Vzc2lvbiBjYW4gc2hp ZnQgYmFjayB0byB0aGUgcGFyZW50IHZhbHVlLgorICAgICAgICBVc2VmdWwg d2hlbiBleHBsb3JpbmcgdmFsdWVzLgorICAgICAgICAiIiIKKyAgICAgICAg cmF3X2lucHV0KCJcblByZXNzIGVudGVyIHRvIHJldHVybiB0byBwYXJlbnQg dmFsdWU6ICIpCisgICAgICAgIAorICAgIEBzdGF0aWNtZXRob2QKKyAgICBk ZWYgcmV0dXJuX3RvX2VuY2xvc2luZ190eXBlKCk6CisgICAgICAgICIiIkEg dXRpbGl0eSBmdW5jdGlvbiB3aGljaCBwcmludHMgdGhhdCB0aGUgY3VycmVu dCBleHBsb3JhdGlvbiBzZXNzaW9uCisgICAgICAgIGlzIHJldHVybmluZyB0 byB0aGUgZW5jbG9zaW5nIHR5cGUuIFVzZWZ1bCB3aGVuIGV4cGxvcmluZyB0 eXBlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHByaW50ICJcblJldHVybmlu ZyB0byBlbmNsb3NpbmcgdHlwZS4uLlxuIgorICAgICAgICAKKyAgICBAc3Rh dGljbWV0aG9kCisgICAgZGVmIHJldHVybl90b19lbmNsb3NpbmdfdHlwZV9w cm9tcHQoKToKKyAgICAgICAgIiIiQSB1dGlsaXR5IGZ1bmN0aW9uIHdoaWNo IHByb21wdHMgdGhlIHVzZXIgdG8gcHJlc3MgdGhlICdlbnRlcicga2V5Cisg ICAgICAgIHNvIHRoYXQgdGhlIGV4cGxvcmF0aW9uIHNlc3Npb24gY2FuIHNo aWZ0IGJhY2sgdG8gdGhlIGVuY2xvc2luZyB0eXBlLgorICAgICAgICBVc2Vm dWwgd2hlbiBleHBsb3JpbmcgdHlwZXMuCisgICAgICAgICIiIgorICAgICAg ICByYXdfaW5wdXQoIlxuUHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIGVuY2xv c2luZyB0eXBlOiAiKQorCisKK2NsYXNzIFNjYWxhckV4cGxvcmVyKG9iamVj dCk6CisgICAgIiIiSW50ZXJuYWwgY2xhc3MgdXNlZCB0byBleHBsb3JlIHNj YWxhciB2YWx1ZXMuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVm IGV4cGxvcmVfZXhwcihleHByLCB2YWx1ZSwgaXNfY2hpbGQpOgorICAgICAg ICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIHNjYWxhciB2YWx1ZXMuCisgICAg ICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX2V4cHIgYW5kIEV4cGxvcmVyLmlz X3NjYWxhcl90eXBlIGZvciBtb3JlCisgICAgICAgIGluZm9ybWF0aW9uLgor ICAgICAgICAiIiIKKyAgICAgICAgcHJpbnQgKCInJXMnIGlzIGEgc2NhbGFy IHZhbHVlIG9mIHR5cGUgJyVzJy5cbiIgJQorICAgICAgICAgICAgICAgKGV4 cHIsIHZhbHVlLnR5cGUpKQorICAgICAgICBwcmludCAiJXMgPSAlcyIgJSAo ZXhwciwgc3RyKHZhbHVlKSkKKworICAgICAgICBpZiBpc19jaGlsZDoKKyAg ICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19wYXJlbnRfdmFsdWVfcHJv bXB0KCkKKyAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19wYXJlbnRf dmFsdWUoKQorCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgQHN0YXRp Y21ldGhvZAorICAgIGRlZiBleHBsb3JlX3R5cGUobmFtZSwgZGF0YXR5cGUs IGlzX2NoaWxkKToKKyAgICAgICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSBz Y2FsYXIgdHlwZXMuCisgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX3R5 cGUgYW5kIEV4cGxvcmVyLmlzX3NjYWxhcl90eXBlIGZvciBtb3JlCisgICAg ICAgIGluZm9ybWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgZGF0 YXR5cGUuY29kZSA9PSBnZGIuVFlQRV9DT0RFX0VOVU06CisgICAgICAgICAg ICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgICAgICBwcmludCAoIiVzIGlz IG9mIGFuIGVudW1lcmF0ZWQgdHlwZSAnJXMnLiIgJQorICAgICAgICAgICAg ICAgICAgICAgICAobmFtZSwgc3RyKGRhdGF0eXBlKSkpCisgICAgICAgICAg ICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50ICInJXMnIGlzIGFuIGVu dW1lcmF0ZWQgdHlwZS4iICUgbmFtZQorICAgICAgICBlbHNlOgorICAgICAg ICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAgcHJpbnQgKCIl cyBpcyBvZiBhIHNjYWxhciB0eXBlICclcycuIiAlCisgICAgICAgICAgICAg ICAgICAgICAgIChuYW1lLCBzdHIoZGF0YXR5cGUpKSkKKyAgICAgICAgICAg IGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQgIiclcycgaXMgYSBzY2Fs YXIgdHlwZS4iICUgbmFtZQorCisgICAgICAgIGlmIGlzX2NoaWxkOgorICAg ICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX2VuY2xvc2luZ190eXBlX3By b21wdCgpCisgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fZW5jbG9z aW5nX3R5cGUoKQorCisgICAgICAgIHJldHVybiBGYWxzZQorCisKK2NsYXNz IFBvaW50ZXJFeHBsb3JlcihvYmplY3QpOgorICAgICIiIkludGVybmFsIGNs YXNzIHVzZWQgdG8gZXhwbG9yZSBwb2ludGVyIHZhbHVlcy4iIiIKKworICAg IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgZXhwbG9yZV9leHByKGV4cHIsIHZh bHVlLCBpc19jaGlsZCk6CisgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxv cmUgcG9pbnRlciB2YWx1ZXMuCisgICAgICAgIFNlZSBFeHBsb3Jlci5leHBs b3JlX2V4cHIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICIiIgor ICAgICAgICBwcmludCAoIlxuJyVzJyBpcyBhIHBvaW50ZXIgdG8gYSB2YWx1 ZSBvZiB0eXBlICclcyciICUKKyAgICAgICAgICAgICAgIChleHByLCBzdHIo dmFsdWUudHlwZS50YXJnZXQoKSkpKQorICAgICAgICBvcHRpb24gID0gcmF3 X2lucHV0KCJDb250aW51ZSBleHBsb3JpbmcgaXQgYXMgYSBwb2ludGVyIHRv IGEgc2luZ2xlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFs dWUgW3kvbl06ICIpCisgICAgICAgIGlmIG9wdGlvbiA9PSAieSI6CisgICAg ICAgICAgICBkZXJlZl92YWx1ZSA9IE5vbmUKKyAgICAgICAgICAgIHRyeToK KyAgICAgICAgICAgICAgICBkZXJlZl92YWx1ZSA9IHZhbHVlLmRlcmVmZXJl bmNlKCkKKyAgICAgICAgICAgICAgICBzdHIoZGVyZWZfdmFsdWUpCisgICAg ICAgICAgICBleGNlcHQgZ2RiLk1lbW9yeUVycm9yOgorICAgICAgICAgICAg ICAgIHByaW50ICgiJyVzJyBhIHBvaW50ZXIgcG9pbnRpbmcgdG8gYW4gaW52 YWxpZCBtZW1vcnkgIgorICAgICAgICAgICAgICAgICAgICAgICAibG9jYXRp b24uIiAlIGV4cHIpCisgICAgICAgICAgICAgICAgaWYgaXNfY2hpbGQ6Cisg ICAgICAgICAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19wYXJlbnRf dmFsdWVfcHJvbXB0KCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UK KyAgICAgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfZXhwcigiKiVzIiAlIEV4 cGxvcmVyLmd1YXJkX2V4cHIoZXhwciksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVyZWZfdmFsdWUsIGlzX2NoaWxkKQorICAgICAg ICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIAorICAgICAgICBvcHRpb24g ID0gcmF3X2lucHV0KCJDb250aW51ZSBleHBsb3JpbmcgaXQgYXMgYSBwb2lu dGVyIHRvIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJy YXkgW3kvbl06ICIpCisgICAgICAgIGlmIG9wdGlvbiA9PSAieSI6CisgICAg ICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgIGluZGV4ID0g MAorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAg aW5kZXggPSBpbnQocmF3X2lucHV0KCJFbnRlciB0aGUgaW5kZXggb2YgdGhl IGVsZW1lbnQgeW91ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ3YW50IHRvIGV4cGxvcmUgaW4gJyVzJzogIiAlIGV4 cHIpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAg ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGVsZW1l bnRfZXhwciA9ICIlc1slZF0iICUgKEV4cGxvcmVyLmd1YXJkX2V4cHIoZXhw ciksIGluZGV4KQorICAgICAgICAgICAgICAgIGVsZW1lbnQgPSB2YWx1ZVtp bmRleF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg ICAgIHN0cihlbGVtZW50KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBnZGIu TWVtb3J5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICJDYW5u b3QgcmVhZCB2YWx1ZSBhdCBpbmRleCAlZC4iICUgaW5kZXgKKyAgICAgICAg ICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBFeHBsb3Jl ci5leHBsb3JlX2V4cHIoZWxlbWVudF9leHByLCBlbGVtZW50LCBUcnVlKQor ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgaXNfY2hp bGQ6CisgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fcGFyZW50X3Zh bHVlKCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAc3RhdGljbWV0 aG9kCisgICAgZGVmIGV4cGxvcmVfdHlwZShuYW1lLCBkYXRhdHlwZSwgaXNf Y2hpbGQpOgorICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3JlIHBvaW50 ZXIgdHlwZXMuCisgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX3R5cGUg Zm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICIiIgorICAgICAgICB0 YXJnZXRfdHlwZSA9IGRhdGF0eXBlLnRhcmdldCgpCisgICAgICAgIHByaW50 ICgiXG4lcyBpcyBhIHBvaW50ZXIgdG8gYSB2YWx1ZSBvZiB0eXBlICclcycu IiAlCisgICAgICAgICAgICAgICAobmFtZSwgc3RyKHRhcmdldF90eXBlKSkp CisKKyAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBlKCJ0aGUgcG9pbnRl ZSB0eXBlIG9mICVzIiAlIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0YXJnZXRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGlzX2NoaWxkKQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitj bGFzcyBBcnJheUV4cGxvcmVyKG9iamVjdCk6CisgICAgIiIiSW50ZXJuYWwg Y2xhc3MgdXNlZCB0byBleHBsb3JlIGFycmF5cy4iIiIKKworICAgIEBzdGF0 aWNtZXRob2QKKyAgICBkZWYgZXhwbG9yZV9leHByKGV4cHIsIHZhbHVlLCBp c19jaGlsZCk6CisgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgYXJy YXkgdmFsdWVzLgorICAgICAgICBTZWUgRXhwbG9yZXIuZXhwbG9yZV9leHBy IGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAg dGFyZ2V0X3R5cGUgPSB2YWx1ZS50eXBlLnRhcmdldCgpCisgICAgICAgIHBy aW50ICgiJyVzJyBpcyBhbiBhcnJheSBvZiAnJXMnLiIgJSAoZXhwciwgc3Ry KHRhcmdldF90eXBlKSkpCisgICAgICAgIGluZGV4ID0gMAorICAgICAgICB0 cnk6CisgICAgICAgICAgICBpbmRleCA9IGludChyYXdfaW5wdXQoIkVudGVy IHRoZSBpbmRleCBvZiB0aGUgZWxlbWVudCB5b3Ugd2FudCB0byAiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGxvcmUgaW4gJyVz JzogIiAlIGV4cHIpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAg ICAgICAgICAgIGlmIGlzX2NoaWxkOgorICAgICAgICAgICAgICAgIEV4cGxv cmVyLnJldHVybl90b19wYXJlbnRfdmFsdWUoKQorICAgICAgICAgICAgcmV0 dXJuIEZhbHNlCisKKyAgICAgICAgZWxlbWVudCA9IE5vbmUKKyAgICAgICAg dHJ5OgorICAgICAgICAgICAgZWxlbWVudCA9IHZhbHVlW2luZGV4XQorICAg ICAgICAgICAgc3RyKGVsZW1lbnQpCisgICAgICAgIGV4Y2VwdCBnZGIuTWVt b3J5RXJyb3I6CisgICAgICAgICAgICBwcmludCAiQ2Fubm90IHJlYWQgdmFs dWUgYXQgaW5kZXggJWQuIiAlIGluZGV4CisgICAgICAgICAgICByYXdfaW5w dXQoIlByZXNzIGVudGVyIHRvIGNvbnRpbnVlLi4uICIpCisgICAgICAgICAg ICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgCisgICAgICAgIEV4cGxvcmVy LmV4cGxvcmVfZXhwcigiJXNbJWRdIiAlIChFeHBsb3Jlci5ndWFyZF9leHBy KGV4cHIpLCBpbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBlbGVtZW50LCBUcnVlKQorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAg QHN0YXRpY21ldGhvZAorICAgIGRlZiBleHBsb3JlX3R5cGUobmFtZSwgZGF0 YXR5cGUsIGlzX2NoaWxkKToKKyAgICAgICAgIiIiRnVuY3Rpb24gdG8gZXhw bG9yZSBhcnJheSB0eXBlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxv cmVfdHlwZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgIiIiCisg ICAgICAgIHRhcmdldF90eXBlID0gZGF0YXR5cGUudGFyZ2V0KCkKKyAgICAg ICAgcHJpbnQgIiVzIGlzIGFuIGFycmF5IG9mICclcycuIiAlIChuYW1lLCBz dHIodGFyZ2V0X3R5cGUpKQorCisgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVf dHlwZSgidGhlIGFycmF5IGVsZW1lbnQgb2YgJXMiICUgbmFtZSwgdGFyZ2V0 X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19jaGls ZCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworY2xhc3MgQ29tcG91bmRF eHBsb3JlcihvYmplY3QpOgorICAgICIiIkludGVybmFsIGNsYXNzIHVzZWQg dG8gZXhwbG9yZSBzdHJ1Y3QsIGNsYXNzZXMgYW5kIHVuaW9ucy4iIiIKKwor ICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX3ByaW50X2ZpZWxkcyhwcmlu dF9saXN0KToKKyAgICAgICAgIiIiSW50ZXJuYWwgZnVuY3Rpb24gd2hpY2gg cHJpbnRzIHRoZSBmaWVsZHMgb2YgYSBzdHJ1Y3QvY2xhc3MvdW5pb24uCisg ICAgICAgICIiIgorICAgICAgICBtYXhfZmllbGRfbmFtZV9sZW5ndGggPSAw CisgICAgICAgIGZvciBwYWlyIGluIHByaW50X2xpc3Q6CisgICAgICAgICAg ICBpZiBtYXhfZmllbGRfbmFtZV9sZW5ndGggPCBsZW4ocGFpclswXSk6Cisg ICAgICAgICAgICAgICAgbWF4X2ZpZWxkX25hbWVfbGVuZ3RoID0gbGVuKHBh aXJbMF0pCisKKyAgICAgICAgZm9ybWF0X3N0ciA9ICIgIHswOj4lZH0gPSB7 MX0iICUgbWF4X2ZpZWxkX25hbWVfbGVuZ3RoCisgICAgICAgIGZvciBwYWly IGluIHByaW50X2xpc3Q6CisgICAgICAgICAgICBwcmludCBmb3JtYXRfc3Ry LmZvcm1hdChwYWlyWzBdLCBwYWlyWzFdKQorCisgICAgQHN0YXRpY21ldGhv ZAorICAgIGRlZiBleHBsb3JlX2V4cHIoZXhwciwgdmFsdWUsIGlzX2NoaWxk KToKKyAgICAgICAgIiIiRnVuY3Rpb24gdG8gZXhwbG9yZSBzdHJ1Y3RzL2Ns YXNzZXMgYW5kIHVuaW9uIHZhbHVlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVy LmV4cGxvcmVfZXhwciBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAg IiIiCisgICAgICAgIHR5cGVfY29kZSA9IHZhbHVlLnR5cGUuY29kZQorICAg ICAgICB0eXBlX2Rlc2MgPSAiIgorICAgICAgICBpZiB0eXBlX2NvZGUgPT0g Z2RiLlRZUEVfQ09ERV9TVFJVQ1Q6CisgICAgICAgICAgICB0eXBlX2Rlc2Mg PSAic3RydWN0L2NsYXNzIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAg dHlwZV9kZXNjID0gInVuaW9uIgorICAgICAgICBwcmludCgiVGhlIHZhbHVl IG9mICclcycgaXMgYSAlcyBvZiB0eXBlICclcycgd2l0aCB0aGUgZm9sbG93 aW5nICIKKyAgICAgICAgICAgICAgImZpZWxkczpcbiIgJSAoZXhwciwgdHlw ZV9kZXNjLCBzdHIodmFsdWUudHlwZSkpKQorCisgICAgICAgIGZpZWxkcyA9 IHZhbHVlLnR5cGUuZmllbGRzKCkKKyAgICAgICAgaGFzX2V4cGxvcmFibGVf ZmllbGRzID0gRmFsc2UKKyAgICAgICAgY2hvaWNlX3RvX2NvbXBvdW5kX2Zp ZWxkX21hcCA9IHsgfQorICAgICAgICBjdXJyZW50X2Nob2ljZSA9IDAKKyAg ICAgICAgcHJpbnRfbGlzdCA9IFsgXQorICAgICAgICBmb3IgZmllbGQgaW4g ZmllbGRzOgorICAgICAgICAgICAgZmllbGRfZnVsbF9uYW1lID0gRXhwbG9y ZXIuZ3VhcmRfZXhwcihleHByKSArICIuIiArIGZpZWxkLm5hbWUKKyAgICAg ICAgICAgIGZpZWxkX3ZhbHVlID0gdmFsdWVbZmllbGQubmFtZV0KKyAgICAg ICAgICAgIGxpdGVyYWxfdmFsdWUgPSAiIgorICAgICAgICAgICAgaWYgdHlw ZV9jb2RlID09IGdkYi5UWVBFX0NPREVfVU5JT046CisgICAgICAgICAgICAg ICAgbGl0ZXJhbF92YWx1ZSA9ICgiPEVudGVyICVkIHRvIGV4cGxvcmUgdGhp cyBmaWVsZCBvZiB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICInJXMnPiIgJSAoY3VycmVudF9jaG9pY2UsIHN0cihmaWVsZC50 eXBlKSkpCisgICAgICAgICAgICAgICAgaGFzX2V4cGxvcmFibGVfZmllbGRz ID0gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBp ZiBFeHBsb3Jlci5pc19zY2FsYXJfdHlwZShmaWVsZC50eXBlKToKKyAgICAg ICAgICAgICAgICAgICAgbGl0ZXJhbF92YWx1ZSA9ICgiJXMgLi4gKFZhbHVl IG9mIHR5cGUgJyVzJykiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3RyKGZpZWxkX3ZhbHVlKSwgc3RyKGZpZWxkLnR5cGUp KSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAg ICBpZiBmaWVsZC5pc19iYXNlX2NsYXNzOgorICAgICAgICAgICAgICAgICAg ICAgICAgZmllbGRfZGVzYyA9ICJiYXNlIGNsYXNzIgorICAgICAgICAgICAg ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRf ZGVzYyA9ICJmaWVsZCIKKyAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF92 YWx1ZSA9ICgiPEVudGVyICVkIHRvIGV4cGxvcmUgdGhpcyAlcyBvZiB0eXBl ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVz Jz4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo Y3VycmVudF9jaG9pY2UsIGZpZWxkX2Rlc2MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cihmaWVsZC50eXBlKSkpCisgICAg ICAgICAgICAgICAgICAgIGhhc19leHBsb3JhYmxlX2ZpZWxkcyA9IFRydWUK KworICAgICAgICAgICAgY2hvaWNlX3RvX2NvbXBvdW5kX2ZpZWxkX21hcFtz dHIoY3VycmVudF9jaG9pY2UpXSA9ICgKKyAgICAgICAgICAgICAgICBmaWVs ZF9mdWxsX25hbWUsIGZpZWxkX3ZhbHVlKQorICAgICAgICAgICAgY3VycmVu dF9jaG9pY2UgPSBjdXJyZW50X2Nob2ljZSArIDEKKworICAgICAgICAgICAg cHJpbnRfbGlzdC5hcHBlbmQoKGZpZWxkLm5hbWUsIGxpdGVyYWxfdmFsdWUp KQorCisgICAgICAgIENvbXBvdW5kRXhwbG9yZXIuX3ByaW50X2ZpZWxkcyhw cmludF9saXN0KQorICAgICAgICBwcmludCAiIgorCisgICAgICAgIGlmIGhh c19leHBsb3JhYmxlX2ZpZWxkczoKKyAgICAgICAgICAgIGNob2ljZSA9IHJh d19pbnB1dCgiRW50ZXIgdGhlIGZpZWxkIG51bWJlciBvZiBjaG9pY2U6ICIp CisgICAgICAgICAgICBpZiBjaG9pY2UgaW4gY2hvaWNlX3RvX2NvbXBvdW5k X2ZpZWxkX21hcDoKKyAgICAgICAgICAgICAgICBFeHBsb3Jlci5leHBsb3Jl X2V4cHIoY2hvaWNlX3RvX2NvbXBvdW5kX2ZpZWxkX21hcFtjaG9pY2VdWzBd LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaG9p Y2VfdG9fY29tcG91bmRfZmllbGRfbWFwW2Nob2ljZV1bMV0sCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCisgICAgICAg ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGVsc2U6CisgICAg ICAgICAgICAgICAgaWYgaXNfY2hpbGQ6CisgICAgICAgICAgICAgICAgICAg IEV4cGxvcmVyLnJldHVybmluZ190b19wYXJlbnRfdmFsdWVfbWVzc2FnZSgp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBpc19jaGlsZDoKKyAg ICAgICAgICAgICAgICBFeHBsb3Jlci5yZXR1cm5fdG9fcGFyZW50X3ZhbHVl X3Byb21wdCgpCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBAc3Rh dGljbWV0aG9kCisgICAgZGVmIGV4cGxvcmVfdHlwZShuYW1lLCBkYXRhdHlw ZSwgaXNfY2hpbGQpOgorICAgICAgICAiIiJGdW5jdGlvbiB0byBleHBsb3Jl IHN0cnVjdC9jbGFzcyBhbmQgdW5pb24gdHlwZXMuCisgICAgICAgIFNlZSBF eHBsb3Jlci5leHBsb3JlX3R5cGUgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisg ICAgICAgICIiIgorICAgICAgICB0eXBlX2NvZGUgPSBkYXRhdHlwZS5jb2Rl CisgICAgICAgIHR5cGVfZGVzYyA9ICIiCisgICAgICAgIGlmIHR5cGVfY29k ZSA9PSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKyAgICAgICAgICAgIHR5cGVf ZGVzYyA9ICJzdHJ1Y3QvY2xhc3MiCisgICAgICAgIGVsc2U6CisgICAgICAg ICAgICB0eXBlX2Rlc2MgPSAidW5pb24iCisKKyAgICAgICAgaWYgaXNfY2hp bGQ6CisgICAgICAgICAgICBwcmludCAoIlxuJXMgaXMgYSAlcyBvZiB0eXBl ICclcycgIgorICAgICAgICAgICAgICAgICAgICJ3aXRoIHRoZSBmb2xsb3dp bmcgZmllbGRzOlxuIiAlCisgICAgICAgICAgICAgICAgICAgKG5hbWUsIHR5 cGVfZGVzYywgc3RyKGRhdGF0eXBlKSkpCisgICAgICAgIGVsc2U6CisgICAg ICAgICAgICBwcmludCAoIlxuJyVzJyBpcyBhICVzIHdpdGggdGhlIGZvbGxv d2luZyAiCisgICAgICAgICAgICAgICAgICAgImZpZWxkczpcbiIgJQorICAg ICAgICAgICAgICAgICAgIChuYW1lLCB0eXBlX2Rlc2MpKQorCisgICAgICAg IGZpZWxkcyA9IGRhdGF0eXBlLmZpZWxkcygpCisgICAgICAgIGhhc19leHBs b3JhYmxlX2ZpZWxkcyA9IEZhbHNlCisgICAgICAgIGN1cnJlbnRfY2hvaWNl ID0gMAorICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwID0g eyB9CisgICAgICAgIHByaW50X2xpc3QgPSBbIF0KKyAgICAgICAgZm9yIGZp ZWxkIGluIGZpZWxkczoKKyAgICAgICAgICAgIHJocyA9ICgiPEVudGVyICVk IHRvIGV4cGxvcmUgdGhpcyBmaWVsZCBvZiB0eXBlICclcyc+IiAlCisgICAg ICAgICAgICAgICAgICAgKGN1cnJlbnRfY2hvaWNlLCBzdHIoZmllbGQudHlw ZSkpKQorICAgICAgICAgICAgcHJpbnRfbGlzdC5hcHBlbmQoKGZpZWxkLm5h bWUsIHJocykpCisgICAgICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmll bGRfbWFwW3N0cihjdXJyZW50X2Nob2ljZSldID0gKAorICAgICAgICAgICAg ICAgIGZpZWxkLm5hbWUsIGZpZWxkLnR5cGUpCisgICAgICAgICAgICBjdXJy ZW50X2Nob2ljZSA9IGN1cnJlbnRfY2hvaWNlICsgMQorCisgICAgICAgIENv bXBvdW5kRXhwbG9yZXIuX3ByaW50X2ZpZWxkcyhwcmludF9saXN0KQorICAg ICAgICBwcmludCAiIgorCisgICAgICAgIGlmIGxlbihjaG9pY2VfdG9fY29t cG91bmRfZmllbGRfbWFwKSA+IDA6CisgICAgICAgICAgICBjaG9pY2UgPSBy YXdfaW5wdXQoIkVudGVyIHRoZSBmaWVsZCBudW1iZXIgb2YgY2hvaWNlIDog IikKKyAgICAgICAgICAgIGlmIGNob2ljZSBpbiBjaG9pY2VfdG9fY29tcG91 bmRfZmllbGRfbWFwOgorICAgICAgICAgICAgICAgIGlmIGlzX2NoaWxkOgor ICAgICAgICAgICAgICAgICAgICBFeHBsb3Jlci5leHBsb3JlX3R5cGUoCisg ICAgICAgICAgICAgICAgICAgICAgICAoImZpZWxkICclcycgb2YgJXMiICUK KyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hvaWNlX3RvX2NvbXBvdW5k X2ZpZWxkX21hcFtjaG9pY2VdWzBdLCBuYW1lKSksCisgICAgICAgICAgICAg ICAgICAgICAgICBjaG9pY2VfdG9fY29tcG91bmRfZmllbGRfbWFwW2Nob2lj ZV1bMV0sCisgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQorICAgICAg ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIEV4cGxvcmVy LmV4cGxvcmVfdHlwZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICgiZmll bGQgJyVzJyBvZiAnJXMnIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAg KGNob2ljZV90b19jb21wb3VuZF9maWVsZF9tYXBbY2hvaWNlXVswXSwgbmFt ZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgY2hvaWNlX3RvX2NvbXBv dW5kX2ZpZWxkX21hcFtjaG9pY2VdWzFdLAorICAgICAgICAgICAgICAgICAg ICAgICAgVHJ1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAg ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBpc19jaGlsZDoK KyAgICAgICAgICAgICAgICAgICAgRXhwbG9yZXIucmV0dXJuX3RvX2VuY2xv c2luZ190eXBlKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGlmIGlz X2NoaWxkOgorICAgICAgICAgICAgICAgIEV4cGxvcmVyLnJldHVybl90b19l bmNsb3NpbmdfdHlwZV9wcm9tcHQoKQorCisgICAgICAgIHJldHVybiBGYWxz ZQorICAgICAgICAgICAKKworY2xhc3MgVHlwZWRlZkV4cGxvcmVyKG9iamVj dCk6CisgICAgIiIiSW50ZXJuYWwgY2xhc3MgdXNlZCB0byBleHBsb3JlIHZh bHVlcyB3aG9zZSB0eXBlIGlzIGEgdHlwZWRlZi4iIiIKKworICAgIEBzdGF0 aWNtZXRob2QKKyAgICBkZWYgZXhwbG9yZV9leHByKGV4cHIsIHZhbHVlLCBp c19jaGlsZCk6CisgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxvcmUgdHlw ZWRlZiB2YWx1ZXMuCisgICAgICAgIFNlZSBFeHBsb3Jlci5leHBsb3JlX2V4 cHIgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICAgICIiIgorICAgICAg ICBhY3R1YWxfdHlwZSA9IHZhbHVlLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQor ICAgICAgICBwcmludCAoIlxuVGhlIHZhbHVlIG9mICclcycgaXMgb2YgdHlw ZSAnJXMnICIKKyAgICAgICAgICAgICAgICJ3aGljaCBpcyBhIHR5cGVkZWYg b2YgdHlwZSAnJXMnIiAlCisgICAgICAgICAgICAgICAoZXhwciwgc3RyKHZh bHVlLnR5cGUpLCBzdHIoYWN0dWFsX3R5cGUpKSkKKworICAgICAgICBFeHBs b3Jlci5leHBsb3JlX2V4cHIoZXhwciwgdmFsdWUuY2FzdChhY3R1YWxfdHlw ZSksIGlzX2NoaWxkKQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIEBz dGF0aWNtZXRob2QKKyAgICBkZWYgZXhwbG9yZV90eXBlKG5hbWUsIGRhdGF0 eXBlLCBpc19jaGlsZCk6CisgICAgICAgICIiIkZ1bmN0aW9uIHRvIGV4cGxv cmUgdHlwZWRlZiB0eXBlcy4KKyAgICAgICAgU2VlIEV4cGxvcmVyLmV4cGxv cmVfdHlwZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgIiIiCisg ICAgICAgIGFjdHVhbF90eXBlID0gZGF0YXR5cGUuc3RyaXBfdHlwZWRlZnMo KQorICAgICAgICBpZiBpc19jaGlsZDoKKyAgICAgICAgICAgIHByaW50KCJc blRoZSB0eXBlIG9mICVzIGlzIGEgdHlwZWRlZiBvZiB0eXBlICclcycuIiAl CisgICAgICAgICAgICAgICAgICAobmFtZSwgc3RyKGFjdHVhbF90eXBlKSkp CisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBwcmludCgiXG5UaGUgdHlw ZSAnJXMnIGlzIGEgdHlwZWRlZiBvZiB0eXBlICclcycuIiAlCisgICAgICAg ICAgICAgICAgICAobmFtZSwgc3RyKGFjdHVhbF90eXBlKSkpCisKKyAgICAg ICAgRXhwbG9yZXIuZXhwbG9yZV90eXBlKG5hbWUsIGFjdHVhbF90eXBlLCBp c19jaGlsZCkKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworY2xhc3MgRXhw bG9yZVV0aWxzKG9iamVjdCk6CisgICAgIiIiSW50ZXJuYWwgY2xhc3Mgd2hp Y2ggcHJvdmlkZXMgdXRpbGl0aWVzIGZvciB0aGUgbWFpbiBjb21tYW5kIGNs YXNzZXMuIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIGNoZWNr X2FyZ3MobmFtZSwgYXJnX3N0cik6CisgICAgICAgICIiIlV0aWxpdHkgdG8g Y2hlY2sgaWYgYWRlcXVhdGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhcmUgcGFz c2VkIHRvIGFuCisgICAgICAgIGV4cGxvcmUgY29tbWFuZC4KKworICAgICAg ICBBcmd1bWVudHM6CisgICAgICAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0 aGUgZXhwbG9yZSBjb21tYW5kLgorICAgICAgICAgICAgYXJnX3N0cjogVGhl IGFyZ3VtZW50IHN0cmluZyBwYXNzZWQgdG8gdGhlIGV4cGxvcmUgY29tbWFu ZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAgVHJ1ZSBpZiBh ZGVxdWF0ZSBhcmd1bWVudHMgYXJlIHBhc3NlZCwgZmFsc2Ugb3RoZXJ3aXNl LgorCisgICAgICAgIFJhaXNlczoKKyAgICAgICAgICAgIGdkYi5HZGJFcnJv ciBpZiBhZGVxdWF0ZSBhcmd1bWVudHMgYXJlIG5vdCBwYXNzZWQuCisgICAg ICAgICIiIgorICAgICAgICBpZiBsZW4oYXJnX3N0cikgPCAxOgorICAgICAg ICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKCJFUlJPUjogJyVzJyByZXF1aXJl cyBhbiBhcmd1bWVudC4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJSBuYW1lKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAg IGVsc2U6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgQHN0YXRp Y21ldGhvZAorICAgIGRlZiBnZXRfdHlwZV9mcm9tX3N0cih0eXBlX3N0cik6 CisgICAgICAgICIiIkEgdXRpbGl0eSBmdW5jdGlvbiB0byBkZWR1Y2UgdGhl IGdkYi5UeXBlIHZhbHVlIGZyb20gYSBzdHJpbmcKKyAgICAgICAgcmVwcmVz ZW50aW5nIHRoZSB0eXBlLgorCisgICAgICAgIEFyZ3VtZW50czoKKyAgICAg ICAgICAgIHR5cGVfc3RyOiBUaGUgdHlwZSBzdHJpbmcgZnJvbSB3aGljaCB0 aGUgZ2RiLlR5cGUgdmFsdWUgc2hvdWxkIGJlCisgICAgICAgICAgICAgICAg ICAgICAgZGVkdWNlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAg ICAgVGhlIGRlZHVjZWQgZ2RiLlR5cGUgdmFsdWUgaWYgcG9zc2libGUsIE5v bmUgb3RoZXJ3aXNlLgorICAgICAgICAiIiIKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgIyBBc3N1bWUgdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgdG8gYmUg Qy9DKysgYW5kIG1ha2UgYSB0cnkuCisgICAgICAgICAgICByZXR1cm4gZ2Ri LnBhcnNlX2FuZF9ldmFsKCIoJXMgKikwIiAlIHR5cGVfc3RyKS50eXBlLnRh cmdldCgpCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAg ICAgICAjIElmIGFzc3VtcHRpb24gb2YgY3VycmVudCBsYW5ndWFnZSB0byBi ZSBDL0MrKyB3YXMgd3JvbmcsIHRoZW4KKyAgICAgICAgICAgICMgbG9va3Vw IHRoZSB0eXBlIHVzaW5nIHRoZSBBUEkuCisgICAgICAgICAgICB0cnk6Cisg ICAgICAgICAgICAgICAgcmV0dXJuIGdkYi5sb29rdXBfdHlwZSh0eXBlX3N0 cikKKyAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6CisgICAgICAg ICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIEBzdGF0aWNtZXRob2QKKyAg ICBkZWYgZ2V0X3ZhbHVlX2Zyb21fc3RyKHZhbHVlX3N0cik6CisgICAgICAg ICIiIkEgdXRpbGl0eSBmdW5jdGlvbiB0byBkZWR1Y2UgdGhlIGdkYi5WYWx1 ZSB2YWx1ZSBmcm9tIGEgc3RyaW5nCisgICAgICAgIHJlcHJlc2VudGluZyB0 aGUgdmFsdWUuCisKKyAgICAgICAgQXJndW1lbnRzOgorICAgICAgICAgICAg dmFsdWVfc3RyOiBUaGUgdmFsdWUgc3RyaW5nIGZyb20gd2hpY2ggdGhlIGdk Yi5WYWx1ZSB2YWx1ZSBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgICAg YmUgZGVkdWNlZC4KKworICAgICAgICBSZXR1cm5zOgorICAgICAgICAgICAg VGhlIGRlZHVjZWQgZ2RiLlZhbHVlIHZhbHVlIGlmIHBvc3NpYmxlLCBOb25l IG90aGVyd2lzZS4KKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAg ICAgICAgIHJldHVybiBnZGIucGFyc2VfYW5kX2V2YWwodmFsdWVfc3RyKQor ICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgcmV0 dXJuIE5vbmUKKworCitjbGFzcyBFeHBsb3JlQ29tbWFuZChnZGIuQ29tbWFu ZCk6CisgICAgIiIiRXhwbG9yZSBhIHZhbHVlIG9yIGEgdHlwZSB2YWxpZCBp biB0aGUgY3VycmVudCBjb250ZXh0LgorCisgICAgICAgVXNhZ2U6CisKKyAg ICAgICAgIGV4cGxvcmUgQVJHCisKKyAgICAgICAgIC0gQVJHIGlzIGVpdGhl ciBhIHZhbGlkIGV4cHJlc3Npb24gb3IgYSB0eXBlIG5hbWUuCisgICAgICAg ICAtIEF0IGFueSBzdGFnZSBvZiBleHBsb3JhdGlvbiwgaGl0IHRoZSByZXR1 cm4ga2V5IChpbnN0ZWFkIG9mIGEKKyAgICAgICAgICAgY2hvaWNlLCBpZiBh bnkpIHRvIHJldHVybiB0byB0aGUgZW5jbG9zaW5nIHR5cGUgb3IgdmFsdWUu CisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAg IHN1cGVyKEV4cGxvcmVDb21tYW5kLCBzZWxmKS5fX2luaXRfXyhuYW1lID0g ImV4cGxvcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tbWFuZF9jbGFzcyA9IGdkYi5DT01NQU5EX0RBVEEs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcmVmaXggPSBUcnVlKQorCisgICAgZGVmIGludm9rZShzZWxmLCBhcmdf c3RyLCBmcm9tX3R0eSk6CisgICAgICAgIGlmIEV4cGxvcmVVdGlscy5jaGVj a19hcmdzKCJleHBsb3JlIiwgYXJnX3N0cikgPT0gRmFsc2U6CisgICAgICAg ICAgICByZXR1cm4KKworICAgICAgICAjIENoZWNrIGlmIGl0IGlzIGEgdmFs dWUKKyAgICAgICAgdmFsdWUgPSBFeHBsb3JlVXRpbHMuZ2V0X3ZhbHVlX2Zy b21fc3RyKGFyZ19zdHIpCisgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25l OgorICAgICAgICAgICAgRXhwbG9yZXIuZXhwbG9yZV9leHByKGFyZ19zdHIs IHZhbHVlLCBGYWxzZSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAg ICMgSWYgaXQgaXMgbm90IGEgdmFsdWUsIGNoZWNrIGlmIGl0IGlzIGEgdHlw ZQorICAgICAgICBkYXRhdHlwZSA9IEV4cGxvcmVVdGlscy5nZXRfdHlwZV9m cm9tX3N0cihhcmdfc3RyKQorICAgICAgICBpZiBkYXRhdHlwZSBpcyBub3Qg Tm9uZToKKyAgICAgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfdHlwZShhcmdf c3RyLCBkYXRhdHlwZSwgRmFsc2UpCisgICAgICAgICAgICByZXR1cm4KKwor ICAgICAgICAjIElmIGl0IGlzIG5laXRoZXIgYSB2YWx1ZSBub3IgYSB0eXBl LCByYWlzZSBhbiBlcnJvci4KKyAgICAgICAgcmFpc2UgZ2RiLkdkYkVycm9y KAorICAgICAgICAgICAgKCInJXMnIG5laXRoZXIgZXZhbHVhdGVzIHRvIGEg dmFsdWUgbm9yIGlzIGEgdHlwZSAiCisgICAgICAgICAgICAgImluIHRoZSBj dXJyZW50IGNvbnRleHQuIiAlCisgICAgICAgICAgICAgYXJnX3N0cikpCisK KworY2xhc3MgRXhwbG9yZVZhbHVlQ29tbWFuZChnZGIuQ29tbWFuZCk6Cisg ICAgIiIiRXhwbG9yZSB2YWx1ZSBvZiBhbiBleHByZXNzaW9uIHZhbGlkIGlu IHRoZSBjdXJyZW50IGNvbnRleHQuCisKKyAgICAgICBVc2FnZToKKworICAg ICAgICAgZXhwbG9yZSB2YWx1ZSBBUkcKKworICAgICAgICAgLSBBUkcgaXMg YSB2YWxpZCBleHByZXNzaW9uLgorICAgICAgICAgLSBBdCBhbnkgc3RhZ2Ug b2YgZXhwbG9yYXRpb24sIGhpdCB0aGUgcmV0dXJuIGtleSAoaW5zdGVhZCBv ZiBhCisgICAgICAgICAgIGNob2ljZSwgaWYgYW55KSB0byByZXR1cm4gdG8g dGhlIGVuY2xvc2luZyB2YWx1ZS4KKyAgICAiIiIKKyAKKyAgICBkZWYgX19p bml0X18oc2VsZik6CisgICAgICAgIHN1cGVyKEV4cGxvcmVWYWx1ZUNvbW1h bmQsIHNlbGYpLl9faW5pdF9fKAorICAgICAgICAgICAgbmFtZSA9ICJleHBs b3JlIHZhbHVlIiwgY29tbWFuZF9jbGFzcyA9IGdkYi5DT01NQU5EX0RBVEEp CisKKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ19zdHIsIGZyb21fdHR5KToK KyAgICAgICAgaWYgRXhwbG9yZVV0aWxzLmNoZWNrX2FyZ3MoImV4cGxvcmUg dmFsdWUiLCBhcmdfc3RyKSA9PSBGYWxzZToKKyAgICAgICAgICAgIHJldHVy bgorCisgICAgICAgIHZhbHVlID0gRXhwbG9yZVV0aWxzLmdldF92YWx1ZV9m cm9tX3N0cihhcmdfc3RyKQorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgor ICAgICAgICAgICAgcmFpc2UgZ2RiLkdkYkVycm9yKAorICAgICAgICAgICAg ICAgICgiICclcycgZG9lcyBub3QgZXZhbHVhdGUgdG8gYSB2YWx1ZSBpbiB0 aGUgY3VycmVudCAiCisgICAgICAgICAgICAgICAgICJjb250ZXh0LiIgJQor ICAgICAgICAgICAgICAgICBhcmdfc3RyKSkKKyAgICAgICAgICAgIHJldHVy bgorCisgICAgICAgIEV4cGxvcmVyLmV4cGxvcmVfZXhwcihhcmdfc3RyLCB2 YWx1ZSwgRmFsc2UpCisKKworY2xhc3MgRXhwbG9yZVR5cGVDb21tYW5kKGdk Yi5Db21tYW5kKTogICAgICAgICAgICAKKyAgICAiIiJFeHBsb3JlIGEgdHlw ZSBvciB0aGUgdHlwZSBvZiBhbiBleHByZXNzaW9uIHZhbGlkIGluIHRoZSBj dXJyZW50CisgICAgICAgY29udGV4dC4KKworICAgICAgIFVzYWdlOgorCisg ICAgICAgICBleHBsb3JlIHR5cGUgQVJHCisKKyAgICAgICAgIC0gQVJHIGlz IGEgdmFsaWQgZXhwcmVzc2lvbiBvciBhIHR5cGUgbmFtZS4KKyAgICAgICAg IC0gQXQgYW55IHN0YWdlIG9mIGV4cGxvcmF0aW9uLCBoaXQgdGhlIHJldHVy biBrZXkgKGluc3RlYWQgb2YgYQorICAgICAgICAgICBjaG9pY2UsIGlmIGFu eSkgdG8gcmV0dXJuIHRvIHRoZSBlbmNsb3NpbmcgdHlwZS4KKyAgICAiIiIK KworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgc3VwZXIoRXhw bG9yZVR5cGVDb21tYW5kLCBzZWxmKS5fX2luaXRfXygKKyAgICAgICAgICAg IG5hbWUgPSAiZXhwbG9yZSB0eXBlIiwgY29tbWFuZF9jbGFzcyA9IGdkYi5D T01NQU5EX0RBVEEpCisKKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ19zdHIs IGZyb21fdHR5KToKKyAgICAgICAgaWYgRXhwbG9yZVV0aWxzLmNoZWNrX2Fy Z3MoImV4cGxvcmUgdHlwZSIsIGFyZ19zdHIpID09IEZhbHNlOgorICAgICAg ICAgICAgcmV0dXJuCisKKyAgICAgICAgZGF0YXR5cGUgPSBFeHBsb3JlVXRp bHMuZ2V0X3R5cGVfZnJvbV9zdHIoYXJnX3N0cikKKyAgICAgICAgaWYgZGF0 YXR5cGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBFeHBsb3Jlci5leHBs b3JlX3R5cGUoYXJnX3N0ciwgZGF0YXR5cGUsIEZhbHNlKQorICAgICAgICAg ICAgcmV0dXJuCisKKyAgICAgICAgdmFsdWUgPSBFeHBsb3JlVXRpbHMuZ2V0 X3ZhbHVlX2Zyb21fc3RyKGFyZ19zdHIpCisgICAgICAgIGlmIHZhbHVlIGlz IG5vdCBOb25lOgorICAgICAgICAgICAgcHJpbnQgIiclcycgaXMgb2YgdHlw ZSAnJXMnLiIgJSAoYXJnX3N0ciwgc3RyKHZhbHVlLnR5cGUpKQorICAgICAg ICAgICAgRXhwbG9yZXIuZXhwbG9yZV90eXBlKHN0cih2YWx1ZS50eXBlKSwg dmFsdWUudHlwZSwgRmFsc2UpCisKKyAgICAgICAgcmFpc2UgZ2RiLkdkYkVy cm9yKCgiJyVzJyBpcyBub3QgYSB0eXBlIG9yIHZhbHVlIGluIHRoZSBjdXJy ZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGV4dC4i ICUgYXJnX3N0cikpCisKKworRXhwbG9yZXIuaW5pdF9lbnYoKQorCitFeHBs b3JlQ29tbWFuZCgpCitFeHBsb3JlVmFsdWVDb21tYW5kKCkKK0V4cGxvcmVU eXBlQ29tbWFuZCgpCmRpZmYgLXJ1cE4gc3JjL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9NYWtlZmlsZS5pbiBzcmNfZXhwbG9yZV9weXRob24vZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCi0tLSBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCTIwMTEtMTItMjMgMjI6 MzY6MTYuMDAwMDAwMDAwICswNTMwCisrKyBzcmNfZXhwbG9yZV9weXRob24v Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL01ha2VmaWxlLmluCTIwMTItMDIt MTkgMTc6NTE6MjguNzgzMDU1NTI1ICswNTMwCkBAIC01LDcgKzUsNyBAQCBF WEVDVVRBQkxFUyA9IHB5LXR5cGUgcHktdmFsdWUgcHktcHJldHR5CiAJcHkt c3ltYm9sIHB5LW1pIHB5LWJyZWFrcG9pbnQgcHktaW5mZXJpb3IgcHktaW5m dGhyZWFkIFwKIAlweS1zaGFyZWQgcHl0aG9uIGxpYi10eXBlcyBweS1ldmVu dHMgcHktZXZ0aHJlYWRzIHB5LWZyYW1lIFwKIAlweS1taSBweS1wcC1tYWlu dCBweS1wcm9nc3BhY2UgcHktc2VjdGlvbi1zY3JpcHQgcHktb2JqZmlsZSBc Ci0JcHktZmluaXNoLWJyZWFrcG9pbnQgcHktZmluaXNoLWJyZWFrcG9pbnQy CisJcHktZmluaXNoLWJyZWFrcG9pbnQgcHktZmluaXNoLWJyZWFrcG9pbnQy IHB5LWV4cGxvcmUKIAogTUlTQ0VMTEFORU9VUyA9IHB5LXNoYXJlZC1zbC5z bCBweS1ldmVudHMtc2hsaWIuc28gcHktZXZlbnRzLXNobGliLW5vZGVidWcu c28gCiAKZGlmZiAtcnVwTiBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3B5LWV4cGxvcmUuYyBzcmNfZXhwbG9yZV9weXRob24vZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuYwotLS0gc3JjL2dkYi90ZXN0c3Vp dGUvZ2RiLnB5dGhvbi9weS1leHBsb3JlLmMJMTk3MC0wMS0wMSAwNTozMDow MC4wMDAwMDAwMDAgKzA1MzAKKysrIHNyY19leHBsb3JlX3B5dGhvbi9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhwbG9yZS5jCTIwMTItMDItMjAg MTg6MTc6MTguNTM0ODI4OTAxICswNTMwCkBAIC0wLDAgKzEsODIgQEAKKy8q IFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCisKKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorCisgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAgIHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor CisgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisgICBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgICBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSAgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKi8KKwor I2RlZmluZSBBUlJBWV9TSVpFIDEwCisKK3N0cnVjdCBTaW1wbGVTdHJ1Y3QK K3sKKyAgaW50IGE7CisgIGRvdWJsZSBkOworfTsKKwordW5pb24gU2ltcGxl VW5pb24KK3sKKyAgaW50IGk7CisgIGNoYXIgYzsKKyAgZmxvYXQgZjsKKyAg ZG91YmxlIGQ7Cit9OworCit0eXBlZGVmIHN0cnVjdCBTaW1wbGVTdHJ1Y3Qg U1M7CisKK3N0cnVjdCBDb21wbGV4U3RydWN0Cit7CisgIHN0cnVjdCBTaW1w bGVTdHJ1Y3QgczsKKyAgdW5pb24gU2ltcGxlVW5pb24gdTsKKyAgU1Mgc2Fb QVJSQVlfU0laRV07Cit9OworCit1bmlvbiBDb21wbGV4VW5pb24KK3sKKyAg U1MgczsKKyAgc3RydWN0IFNpbXBsZVN0cnVjdCBzYVtBUlJBWV9TSVpFXTsK K307CisKK2ludAorbWFpbiAodm9pZCkKK3sKKyAgc3RydWN0IFNpbXBsZVN0 cnVjdCBzczsKKyAgc3RydWN0IFNpbXBsZVN0cnVjdCogc3NfcHRyID0gJnNz OworICBTUyBzc190OworCisgIHVuaW9uIFNpbXBsZVVuaW9uIHN1OworICBz dHJ1Y3QgQ29tcGxleFN0cnVjdCBjczsKKyAgc3RydWN0IENvbXBsZXhTdHJ1 Y3QqIGNzX3B0ciA9ICZjczsKKyAgdW5pb24gQ29tcGxleFVuaW9uIGN1Owor ICBpbnQgaTsKKyAgZG91YmxlIGRhcnJheVs1XSA9IHswLjEsIDAuMiwgMC4z LCAwLjQsIDAuNX07CisgIGRvdWJsZSAqZGFycmF5X3JlZiA9IGRhcnJheTsK KworICBzcy5hID0gMTA7CisgIHNzLmQgPSAxMDAuMDE7CisgIHNzX3QgPSBz czsKKyAgCisgIHN1LmQgPSAxMDAuMTsKKworICBjcy5zID0gc3M7CisgIGNz LnUgPSBzdTsKKyAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkU7IGkrKykK KyAgICB7CisgICAgICBjcy5zYVtpXS5hID0gaTsKKyAgICAgIGNzLnNhW2ld LmQgPSAxMC4xMCArIGk7CisgICAgICBjdS5zYVtpXS5hID0gaTsKKyAgICAg IGN1LnNhW2ldLmQgPSAxMDAuMTAgKyBpOworICAgIH0KKworICByZXR1cm4g MDsgLyogQnJlYWsgaGVyZS4gKi8KK30KZGlmZiAtcnVwTiBzcmMvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LWV4cGxvcmUuZXhwIHNyY19leHBsb3Jl X3B5dGhvbi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhwbG9yZS5l eHAKLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXhwbG9y ZS5leHAJMTk3MC0wMS0wMSAwNTozMDowMC4wMDAwMDAwMDAgKzA1MzAKKysr IHNyY19leHBsb3JlX3B5dGhvbi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHktZXhwbG9yZS5leHAJMjAxMi0wMy0xOCAxMjo1MDozNC4yMTIxMzE4MjAg KzA1MzAKQEAgLTAsMCArMSw0NjkgQEAKKyMgQ29weXJpZ2h0IDIwMTIgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4u CisKK3NldCB0ZXN0ZmlsZSAicHktZXhwbG9yZSIKK3NldCBzcmNmaWxlICR7 dGVzdGZpbGV9LmMKK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KK2lmIHsgW3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX1dIH0geworICAgIHJl dHVybiAtMQorfQorCisjIFNraXAgYWxsIHRlc3RzIGlmIFB5dGhvbiBzY3Jp cHRpbmcgaXMgbm90IGVuYWJsZWQuCitpZiB7IFtza2lwX3B5dGhvbl90ZXN0 c10gfSB7IGNvbnRpbnVlIH0KKworc2V0IFNTICJzdHJ1Y3QgU2ltcGxlU3Ry dWN0Igorc2V0IFNVICJ1bmlvbiBTaW1wbGVVbmlvbiIKK3NldCBDUyAic3Ry dWN0IENvbXBsZXhTdHJ1Y3QiCitzZXQgQ1UgInVuaW9uIENvbXBsZXhVbmlv biIKK3NldCBlbnRlcl9maWVsZF9udW1iZXJfcHJvbXB0ICB7RW50ZXIgdGhl IGZpZWxkIG51bWJlciBvZiBjaG9pY2U6IH0KK3NldCByZXR1cm5fdG9fcGFy ZW50X3Byb21wdCB7UHJlc3MgZW50ZXIgdG8gcmV0dXJuIHRvIHBhcmVudCB2 YWx1ZTogfQorc2V0IGFycmF5X2luZGV4X3Byb21wdCB7RW50ZXIgdGhlIGlu ZGV4IG9mIHRoZSBlbGVtZW50IHlvdSB3YW50IHRvIGV4cGxvcmUgaW4gLio6 IH0KKworcHJvYyBjb21wb3VuZF9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUg dHlwZV9kZXNjIHR5cGVfbmFtZSB9IHsKKyAgICByZXR1cm4gIlRoZSB2YWx1 ZSBvZiAnJHZhbHVlX25hbWUnIGlzIGEgJHR5cGVfZGVzYyBvZiB0eXBlICck dHlwZV9uYW1lJyB3aXRoIHRoZSBmb2xsb3dpbmcgZmllbGRzOlxbXHJcblxd KyIKK30KKworcHJvYyB0eXBlZGVmX2Rlc2NyaXB0aW9uIHsgdmFsdWVfbmFt ZSB0eXBlZGVmX25hbWUgdHlwZV9uYW1lIH0geworICAgIHJldHVybiAiVGhl IHZhbHVlIG9mICckdmFsdWVfbmFtZScgaXMgb2YgdHlwZSAnJHR5cGVkZWZf bmFtZScgd2hpY2ggaXMgYSB0eXBlZGVmIG9mIHR5cGUgJyR0eXBlX25hbWUn XC5cW1xyXG5cXSsiCit9CisKK3Byb2Mgc2NhbGFyX2Rlc2NyaXB0aW9uIHsg dmFsdWVfbmFtZSB0eXBlIH0geworICAgIHJldHVybiAiJyR2YWx1ZV9uYW1l JyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBlICckdHlwZSdcLlxbXHJcblxd KyIKK30KKworcHJvYyBhcnJheV9kZXNjcmlwdGlvbiB7IHZhbHVlX25hbWUg dHlwZSB9IHsKKyAgICByZXR1cm4gIickdmFsdWVfbmFtZScgaXMgYW4gYXJy YXkgb2YgJyR0eXBlJ1wuXFtcclxuXF0rIgorfQorCitwcm9jIHBvaW50ZXJf ZGVzY3JpcHRpb24geyB2YWx1ZV9uYW1lIHR5cGVfbmFtZSB9IHsKKyAgICBz ZXQgdHlwZV9kZXNjcmlwdGlvbiAiJyR2YWx1ZV9uYW1lJyBpcyBhIHBvaW50 ZXIgdG8gYSB2YWx1ZSBvZiB0eXBlICckdHlwZV9uYW1lJ1wuXFtcclxuXF0r IgorICAgIHNldCBwcm9tcHQgIkNvbnRpbnVlIGV4cGxvcmluZyBpdCBhcyBh IHBvaW50ZXIgdG8gYSBzaW5nbGUgdmFsdWUgXFtcW1xdeS9uXFtcXVxdOiAi IAorICAgIHJldHVybiAiJHR5cGVfZGVzY3JpcHRpb24kcHJvbXB0IgorfQor Citwcm9jIGZpZWxkX3ZhbHVlcyB7IGFyZ3MgfSB7CisgICAgc2V0IHJlc3Vs dCAiIgorICAgIGZvcmVhY2ggZmllbGQgJGFyZ3MgeworICAgICAgICBzZXQg cmVzdWx0ICIkcmVzdWx0XFsgXF0qJGZpZWxkIFxbXC5cXVxbXC5cXSBcW1wo XF1WYWx1ZSBvZiB0eXBlIC4qXFtcKVxdXFtcclxuXF0rIgorICAgIH0KKyAg ICByZXR1cm4gJHJlc3VsdAorfQorCitwcm9jIGZpZWxkX2Nob2ljZXMgeyBh cmdzIH0geworICAgIHNldCByZXN1bHQgIiIKKyAgICBzZXQgZmllbGRfbnVt IDAKKyAgICBmb3JlYWNoIGZpZWxkICRhcmdzIHsKKyAgICAgICAgc2V0IHJl c3VsdCAiJHJlc3VsdCRmaWVsZFxbIFxdKz1cWyBcXSs8RW50ZXIgJGZpZWxk X251bSB0byBleHBsb3JlIHRoaXMgZmllbGQgb2YgdHlwZSAuKiIKKyAgICAg ICAgaW5jciBmaWVsZF9udW0KKyAgICB9CisgICAgcmV0dXJuICRyZXN1bHQK K30KKworcHJvYyBzY2FsYXJfdmFsdWUgeyB2YWx1ZV9uYW1lIHZhbHVlIH0g eworICAgIHJldHVybiAiJHZhbHVlX25hbWUgPSAkdmFsdWVcW3JcblxdKyIK K30KKworc2V0IFNTX2ZpZWxkcyBbZmllbGRfdmFsdWVzIHthID0gMTB9IHtk ID0gMTAwWy5dLip9XQorCitpZiAhW3J1bnRvX21haW5dIHsKKyAgIHJldHVy biAtMQorfQorCitnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiQnJlYWsgaGVyZS4iXQorZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQg IkJyZWFrIGhlcmUiICIuKkJyZWFrIGhlcmUuKiIKKworIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIworIyBWYWx1ZSBleHBsb3JhdGlvbiB0ZXN0cworIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitnZGJfdGVzdCAiZXhwbG9yZSBp IiAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7aX0ge2ludH1dLippID0gLioiCitn ZGJfdGVzdCAiZXhwbG9yZSBzcyIgIltjb21wb3VuZF9kZXNjcmlwdGlvbiB7 c3N9IHtzdHJ1Y3QvY2xhc3N9ICRTU10uKiRTU19maWVsZHMiCitnZGJfdGVz dCAiZXhwbG9yZSAqc3NfcHRyIiAiW2NvbXBvdW5kX2Rlc2NyaXB0aW9uIHtc KnNzX3B0cn0ge3N0cnVjdC9jbGFzc30gJFNTXS4qJFNTX2ZpZWxkcyIKK2dk Yl90ZXN0ICJleHBsb3JlIHNzX3QiICJbdHlwZWRlZl9kZXNjcmlwdGlvbiB7 c3NfdH0ge1NTfSAkU1NdLipbY29tcG91bmRfZGVzY3JpcHRpb24ge3NzX3R9 IHtzdHJ1Y3QvY2xhc3N9ICRTU10uKiRTU19maWVsZHMiCisKK2dkYl90ZXN0 X211bHRpcGxlICJleHBsb3JlIHNzX3B0ciIgIiIgeworICAgIC1yZSAiW3Bv aW50ZXJfZGVzY3JpcHRpb24ge3NzX3B0cn0gJFNTXS4qIiB7CisgICAgICAg IHBhc3MgImV4cGxvcmUgc3NfcHRyIgorICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAieSIgImV4cGxvcmVfYXNfc2luZ2xlX3ZhbHVlX3BvaW50ZXIiIHsK KyAgICAgICAgICAgIC1yZSAiJFNTX2ZpZWxkcyIgeworICAgICAgICAgICAg ICAgIHBhc3MgImV4cGxvcmUgc3NfcHRyIGFzIHNpbmdsZSB2YWx1ZSBwb2lu dGVyIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitn ZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSBkYXJyYXlfcmVmIiAiIiB7Cisg ICAgLXJlICJbcG9pbnRlcl9kZXNjcmlwdGlvbiB7ZGFycmF5X3JlZn0ge2Rv dWJsZX1dLioiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBkYXJyYXlfcmVm IgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAibiIgIm5vX3RvX2V4cGxv cmVfYXNfcG9pbnRlciIgeworICAgICAgICAgICAgLXJlICJDb250aW51ZSBl eHBsb3JpbmcgaXQgYXMgYSBwb2ludGVyIHRvIGFuIGFycmF5IFxbXFtcXXkv blxbXF1cXTogIiB7CisgICAgICAgICAgICAgICAgcGFzcyAibm9fdG9fZXhw bG9yZV9hc19wb2ludGVyIgorICAgICAgICAgICAgICAgIGdkYl90ZXN0X211 bHRpcGxlICJ5IiAiZXhwbG9yZV9hc19hcnJheSIgeworICAgICAgICAgICAg ICAgICAgICAtcmUgIi4qRW50ZXIgdGhlIGluZGV4IG9mIHRoZSBlbGVtZW50 IHlvdSB3YW50IHRvIGV4cGxvcmUgaW4gJ2RhcnJheV9yZWYnOi4qIiAgewor ICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZV9hc19hcnJh eSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxl ICIyIiAiZXhwbG9yZV9hc19hcnJheV9pbmRleF8yIiB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgLXJlICIuKidkYXJyYXlfcmVmXFxcWzJcXFxd JyBpcyBhIHNjYWxhciB2YWx1ZSBvZiB0eXBlICdkb3VibGUnXC4uKmRhcnJh eV9yZWZcXFxbMlxcXF0gPSAwLioiIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGFzcyAiZXhwbG9yZV9hc19hcnJheV9pbmRleF8yIgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiXDAiICJlbmQgZXhwbG9yZV9hc19hcnJheV9pbmRleF8yIiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtcmUgIi4qUmV0 dXJuaW5nIHRvIHBhcmVudCB2YWx1ZS4qRW50ZXIgdGhlIGluZGV4IG9mIHRo ZSBlbGVtZW50IHlvdSB3YW50IHRvIGV4cGxvcmUgaW4gJ2RhcnJheV9yZWYn Oi4qIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcGFzcyAiZW5kIGV4cGxvcmVfYXNfYXJyYXlfaW5kZXhfMiIKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfdGVzdF9t dWx0aXBsZSAiXDAiICJlbmQgZXhwbG9yZV9hc19hcnJheSIgeworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtcmUgIlxb XG5cclxdKyIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcGFzcyAiZW5kIGV4cGxvcmVfYXNfYXJyYXkiCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IAorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCitnZGJfdGVzdF9tdWx0 aXBsZSAiZXhwbG9yZSBzdSIgIiIgeworICAgIC1yZSAiW2NvbXBvdW5kX2Rl c2NyaXB0aW9uIHtzdX0ge3VuaW9ufSB7dW5pb24gU2ltcGxlVW5pb259XS4q W2ZpZWxkX2Nob2ljZXMge2l9IHtjfSB7Zn0ge2R9XS4qJGVudGVyX2ZpZWxk X251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFzcyAiZXhwbG9yZSBzdSIK KyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjMiICJleHBsb3JlIHN1LmQi IHsKKyAgICAgICAgICAgIC1yZSAiW3NjYWxhcl9kZXNjcmlwdGlvbiB7c3Uu ZH0ge2RvdWJsZX1dLipbc2NhbGFyX3ZhbHVlIHtzdS5kfSB7MTAwWy5dLip9 XS4qJHJldHVybl90b19wYXJlbnRfcHJvbXB0IiB7CisgICAgICAgICAgICAg ICAgcGFzcyAiZXhwbG9yZSBzdS5kIgorICAgICAgICAgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICIgIiAiZW5kIHN1LmQgZXhwbG9yYXRpb24iIHsKKyAg ICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF9kZXNjcmlwdGlv biB7c3V9IHt1bmlvbn0ge3VuaW9uIFNpbXBsZVVuaW9ufV0uKltmaWVsZF9j aG9pY2VzIHtpfSB7Y30ge2Z9IHtkfV0uKiRlbnRlcl9maWVsZF9udW1iZXJf cHJvbXB0IiB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQg c3UuZCBleHBsb3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdk Yl90ZXN0X211bHRpcGxlICJcMCIgImVuZCBzdSBleHBsb3JhdGlvbiIgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1yZSAiJGdkYl9wcm9tcHQi IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAiZW5k IHN1IGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg ICAgICAgfQorICAgIH0KK30KKworZ2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxv cmUgY3MiICIiIHsKKyAgICAtcmUgIltjb21wb3VuZF9kZXNjcmlwdGlvbiB7 Y3N9IHtzdHJ1Y3QvY2xhc3N9IHtzdHJ1Y3QgQ29tcGxleFN0cnVjdH1dLipb ZmllbGRfY2hvaWNlcyB7c30ge3V9IHtzYX1dLiokZW50ZXJfZmllbGRfbnVt YmVyX3Byb21wdCIgeworICAgICAgICBwYXNzICJleHBsb3JlIGNzIgorICAg ICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgY3MucyIgewor ICAgICAgICAgICAgLXJlICJbY29tcG91bmRfZGVzY3JpcHRpb24ge2NzLnN9 IHtzdHJ1Y3QvY2xhc3N9IHtzdHJ1Y3QgU2ltcGxlU3RydWN0fV0uKltmaWVs ZF92YWx1ZXMge2EgPSAxMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3Rv X3BhcmVudF9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBs b3JlIGNzLnMiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUg IiAiICJlbmQgY3MucyBleHBsb3JhdGlvbiIgeworICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImVuZCBjcy5zIGV4cGxvcmF0 aW9uIgorICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlw bGUgIlwwIiAiZW5kIGNzIGV4cGxvcmF0aW9uIiB7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3MgZXhwbG9yYXRp b24iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg fQorfQorCitnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9yZSBjdSIgIiIgewor ICAgIC1yZSAiW2NvbXBvdW5kX2Rlc2NyaXB0aW9uIHtjdX0ge3VuaW9ufSB7 dW5pb24gQ29tcGxleFVuaW9ufV0uKltmaWVsZF9jaG9pY2VzIHtzfSB7c2F9 XS4qJGVudGVyX2ZpZWxkX251bWJlcl9wcm9tcHQiIHsKKyAgICAgICAgcGFz cyAiZXhwbG9yZSBjdSIKKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEi ICJleHBsb3JlIGN1LnNhIiB7CisgICAgICAgICAgICAtcmUgIi4qW2FycmF5 X2Rlc2NyaXB0aW9uIHtjdS5zYX0gJFNTXS4qJGFycmF5X2luZGV4X3Byb21w dCIgeworICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgY3Uuc2EiCisg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjAiICJleHBsb3Jl IGN1LnNhXFswXF0iIHsKKyAgICAgICAgICAgICAgICAgICAgLXJlICJbY29t cG91bmRfZGVzY3JpcHRpb24ge1woY3Uuc2FcKVxbMFxdfSB7c3RydWN0L2Ns YXNzfSB7c3RydWN0IFNpbXBsZVN0cnVjdH1dLipbZmllbGRfdmFsdWVzIHth ID0gMH0ge2QgPSAxMDBbLl0uKn1dLiokcmV0dXJuX3RvX3BhcmVudF9wcm9t cHQiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUg Y3Uuc2FcWzBcXSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGdkYl90ZXN0 X211bHRpcGxlICJcMCIgImVuZCBjdS5zYVxbMFxdIGV4cGxvcmF0aW9uIiB7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICJbYXJyYXlfZGVz Y3JpcHRpb24ge2N1LnNhfSAkU1NdJGFycmF5X2luZGV4X3Byb21wdCIgewor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJlbmQgY3Uu c2FcWzBcXSBleHBsb3JhdGlvbiIKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGN1LnNhIGV4cGxvcmF0 aW9uIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLiokZW50ZXJfZmll bGRfbnVtYmVyX3Byb21wdCIgeworICAgICAgICAgICAgICAgICAgICAgICAg cGFzcyAiZW5kIGN1LnNhIGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAiZW5kIGN1IGV4cGxv cmF0aW9uIiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLXJlICIk Z2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwYXNzICJlbmQgY3UgZXhwbG9yYXRpb24iCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKKyMgVHlwZSBleHBsb3JhdGlvbiB0ZXN0cworIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjCisKK3Byb2Mgc2NhbGFyX3R5cGVfZGVjc3Jp cHRpb24ge3R5cGV9IHsKKyAgICByZXR1cm4gIickdHlwZScgaXMgYSBzY2Fs YXIgdHlwZVwuIgorfQorCitwcm9jIGNoaWxkX3NjYWxhcl90eXBlX2Rlc2Ny aXB0aW9uIHtwYXRoIHR5cGV9IHsKKyAgICByZXR1cm4gIiRwYXRoIGlzIG9m IGEgc2NhbGFyIHR5cGUgJyR0eXBlJ1wuIgorfQorCitwcm9jIGNvbXBvdW5k X3R5cGVfZGVzY3JpcHRpb24geyB0eXBlX25hbWUgdHlwZV9kZXNjIH0gewor ICAgIHJldHVybiAiJyR0eXBlX25hbWUnIGlzIGEgJHR5cGVfZGVzYyB3aXRo IHRoZSBmb2xsb3dpbmcgZmllbGRzOiIKK30KKworcHJvYyBjaGlsZF9jb21w b3VuZF90eXBlX2Rlc2NyaXB0aW9uIHsgcGF0aCB0eXBlX25hbWUgdHlwZV9k ZXNjIH0geworICAgIHJldHVybiAiJHBhdGggaXMgYSAkdHlwZV9kZXNjIG9m IHR5cGUgJyR0eXBlX25hbWUnIHdpdGggdGhlIGZvbGxvd2luZyBmaWVsZHM6 IgorfQorCitwcm9jIGNoaWxkX2FycmF5X3R5cGVfZGVzY3JpcHRpb24geyBw YXRoIHRhcmdldF90eXBlX25hbWUgfSB7CisgICAgcmV0dXJuICIkcGF0aCBp cyBhbiBhcnJheSBvZiAnJHRhcmdldF90eXBlX25hbWUnXC4iCit9CisKK3By b2MgdHlwZWRlZl90eXBlX2Rlc2NyaXB0aW9uIHsgdHlwZV9uYW1lIHRhcmdl dF9uYW1lIH0geworICAgIHJldHVybiAiVGhlIHR5cGUgJyR0eXBlX25hbWUn IGlzIGEgdHlwZWRlZiBvZiB0eXBlICckdGFyZ2V0X25hbWUnXC4iCit9CisK K3NldCBTU19maWVsZHNfdHlwZXMgW2ZpZWxkX2Nob2ljZXMge2F9IHtkfV0K K3NldCBTVV9maWVsZHNfdHlwZXMgW2ZpZWxkX2Nob2ljZXMge2l9IHtjfSB7 Zn0ge2R9XQorc2V0IENTX2ZpZWxkc190eXBlcyBbZmllbGRfY2hvaWNlcyB7 c30ge3V9IHtzYX1dCitzZXQgQ1VfZmllbGRzX3R5cGVzIFtmaWVsZF9jaG9p Y2VzIHtzfSB7c2F9XQorCitzZXQgQ1NfZmllbGRfMCAiZmllbGQgJ3MnIG9m ICdzdHJ1Y3QgQ29tcGxleFN0cnVjdCciCitzZXQgQ1NfZmllbGRfMSAiZmll bGQgJ3UnIG9mICdzdHJ1Y3QgQ29tcGxleFN0cnVjdCciCitzZXQgQ1NfZmll bGRfMiAiZmllbGQgJ3NhJyBvZiAnc3RydWN0IENvbXBsZXhTdHJ1Y3QnIgor c2V0IENTX2ZpZWxkXzJfYXJyYXlfZWxlbWVudCAiYW4gYXJyYXkgZWxlbWVu dCBvZiAkQ1NfZmllbGRfMiIKKworc2V0IENVX2ZpZWxkXzAgImZpZWxkICdz JyBvZiAndW5pb24gQ29tcGxleFVuaW9uJyIKK3NldCBDVV9maWVsZF8xICJm aWVsZCAnc2EnIG9mICd1bmlvbiBDb21wbGV4VW5pb24nIgorc2V0IENVX2Zp ZWxkXzFfYXJyYXlfZWxlbWVudCAiYW4gYXJyYXkgZWxlbWVudCBvZiAkQ1Vf ZmllbGRfMSIKKworZ2RiX3Rlc3QgImV4cGxvcmUgaW50IiAiLipbc2NhbGFy X3R5cGVfZGVjc3JpcHRpb24ge2ludH1dLioiCisKK2dkYl90ZXN0X211bHRp cGxlICJleHBsb3JlIHN0cnVjdCBTaW1wbGVTdHJ1Y3QiICIiIHsKKyAgICAt cmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJFNTIHtzdHJ1Y3Qv Y2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgIHBhc3Mg ImV4cGxvcmUgc3RydWN0IFNpbXBsZVN0cnVjdCIKKyAgICAgICAgZ2RiX3Rl c3RfbXVsdGlwbGUgIjAiICJleHBsb3JlIHR5cGUgc3RydWN0IFNpbXBsZVN0 cnVjdCBmZWlsZCAwIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3Nj YWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAnYScgb2YgJ3N0cnVjdCBT aW1wbGVTdHJ1Y3QnfSB7aW50fV0uKiIgeworICAgICAgICAgICAgICAgIHBh c3MgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZlaWxkIDAi CisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0 dXJuIHRvIHN0cnVjdCBTaW1wbGVTdHJ1Y3QgZnJvbSBmaWVsZCAwIiB7Cisg ICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNj cmlwdGlvbiAkU1Mge3N0cnVjdC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVz LioiIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0 byBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZyb20gZmllbGQgMCIKKyAgICAgICAg ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg IH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIg ImV4cGxvcmUgdHlwZSBzdHJ1Y3QgU2ltcGxlU3RydWN0IGZlaWxkIDEiIHsK KyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfc2NhbGFyX3R5cGVfZGVzY3Jp cHRpb24ge2ZpZWxkICdkJyBvZiAnc3RydWN0IFNpbXBsZVN0cnVjdCd9IHtk b3VibGV9XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0 eXBlIHN0cnVjdCBTaW1wbGVTdHJ1Y3QgZmVpbGQgMSIKKyAgICAgICAgICAg ICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gc3RydWN0 IFNpbXBsZVN0cnVjdCBmcm9tIGZpZWxkIDEiIHsKKyAgICAgICAgICAgICAg ICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRTUyB7 c3RydWN0L2NsYXNzfV0uKiRTU19maWVsZHNfdHlwZXMuKiIgeworICAgICAg ICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIHN0cnVjdCBTaW1w bGVTdHJ1Y3QgZnJvbSBmaWVsZCAxIgorICAgICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9 CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBH REIgcHJvbXB0IGZyb20gc3RydWN0IFNpbXBsZVN0cnVjdCIgeworICAgICAg ICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAgICAgICAgIHBh c3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20gc3RydWN0IFNpbXBsZVN0 cnVjdCIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwor Z2RiX3Rlc3RfbXVsdGlwbGUgImV4cGxvcmUgdW5pb24gU2ltcGxlVW5pb24i ICIiIHsKKyAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRT VSB7dW5pb259XS4qJFNVX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICBwYXNz ICJleHBsb3JlIHVuaW9uIFNpbXBsZVVuaW9uIgorICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiMCIgImV4cGxvcmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlv biBmZWlsZCAwIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxh cl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAnaScgb2YgJ3VuaW9uIFNpbXBs ZVVuaW9uJ30ge2ludH1dLioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJl eHBsb3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMCIKKyAgICAg ICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8g dW5pb24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAg ICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAk U1Uge3VuaW9ufV0uKiRTVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAg ICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVu aW9uIGZyb20gZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg ICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlwZSB1bmlv biBTaW1wbGVVbmlvbiBmZWlsZCAxIiB7CisgICAgICAgICAgICAtcmUgIi4q W2NoaWxkX3NjYWxhcl90eXBlX2Rlc2NyaXB0aW9uIHtmaWVsZCAnYycgb2Yg J3VuaW9uIFNpbXBsZVVuaW9uJ30ge2NoYXJ9XS4qIiB7CisgICAgICAgICAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIFNpbXBsZVVuaW9uIGZl aWxkIDEiCisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlww IiAicmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMSIg eworICAgICAgICAgICAgICAgICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVf ZGVzY3JpcHRpb24gJFNVIHt1bmlvbn1dLiokU1VfZmllbGRzX3R5cGVzLioi IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byB1 bmlvbiBTaW1wbGVVbmlvbiBmcm9tIGZpZWxkIDEiCisgICAgICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg ICAgICAgIH0KKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjIiICJleHBs b3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMiIgeworICAgICAg ICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7 ZmllbGQgJ2YnIG9mICd1bmlvbiBTaW1wbGVVbmlvbid9IHtmbG9hdH1dLioi IHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUgdW5pb24g U2ltcGxlVW5pb24gZmVpbGQgMiIKKyAgICAgICAgICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gdW5pb24gU2ltcGxlVW5pb24g ZnJvbSBmaWVsZCAyIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipb Y29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Uge3VuaW9ufV0uKiRTVV9m aWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFz cyAicmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9uIGZyb20gZmllbGQgMiIK KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAg ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVzdF9tdWx0 aXBsZSAiMyIgImV4cGxvcmUgdHlwZSB1bmlvbiBTaW1wbGVVbmlvbiBmZWls ZCAzIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxkX3NjYWxhcl90eXBl X2Rlc2NyaXB0aW9uIHtmaWVsZCAnZCcgb2YgJ3VuaW9uIFNpbXBsZVVuaW9u J30ge2RvdWJsZX1dLioiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJleHBs b3JlIHR5cGUgdW5pb24gU2ltcGxlVW5pb24gZmVpbGQgMyIKKyAgICAgICAg ICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gdW5p b24gU2ltcGxlVW5pb24gZnJvbSBmaWVsZCAzIiB7CisgICAgICAgICAgICAg ICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkU1Ug e3VuaW9ufV0uKiRTVV9maWVsZHNfdHlwZXMuKiIgeworICAgICAgICAgICAg ICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRvIHVuaW9uIFNpbXBsZVVuaW9u IGZyb20gZmllbGQgMyIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg ICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gR0RCIHByb21w dCBmcm9tIHVuaW9uIFNpbXBsZVVuaW9uIiB7CisgICAgICAgICAgICAtcmUg IiRnZGJfcHJvbXB0IiB7CisgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJu IHRvIEdEQiBwcm9tcHQgZnJvbSB1bmlvbiBTaW1wbGVVbmlvbiIKKyAgICAg ICAgICAgIH0KKyAgICAgICAgfQorICB9Cit9CisKK2dkYl90ZXN0X211bHRp cGxlICJleHBsb3JlIFNTIiAiIiB7CisgICAgLXJlICIuKlt0eXBlZGVmX3R5 cGVfZGVzY3JpcHRpb24ge1NTfSAkU1NdLipbY29tcG91bmRfdHlwZV9kZXNj cmlwdGlvbiB7U1N9IHtzdHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190eXBl cy4qIiB7CisgICAgICAgIHBhc3MgImV4cGxvcmUgU1MiCisgICAgICAgIGdk Yl90ZXN0X211bHRpcGxlICIwIiAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDAi IHsKKyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfc2NhbGFyX3R5cGVfZGVz Y3JpcHRpb24ge2ZpZWxkICdhJyBvZiAnU1MnfSB7aW50fV0uKiIgeworICAg ICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgdHlwZSBTUyBmZWlsZCAwIgor ICAgICAgICAgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICJcMCIgInJldHVy biB0byBTUyBmcm9tIGZpZWxkIDAiIHsKKyAgICAgICAgICAgICAgICAgICAg LXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uIHtTU30ge3N0cnVj dC9jbGFzc31dLiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAg ICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBTUyBmcm9tIGZpZWxkIDAi CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgIjEiICJleHBsb3JlIHR5cGUgU1MgZmVpbGQgMSIgeworICAgICAg ICAgICAgLXJlICIuKltjaGlsZF9zY2FsYXJfdHlwZV9kZXNjcmlwdGlvbiB7 ZmllbGQgJ2QnIG9mICdTUyd9IHtkb3VibGV9XS4qIiB7CisgICAgICAgICAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIFNTIGZlaWxkIDEiCisgICAgICAg ICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIHN0 cnVjdCBTaW1wbGVTdHJ1Y3QgZnJvbSBmaWVsZCAxIiB7CisgICAgICAgICAg ICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiB7 U1N9IHtzdHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4qIiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gU1MgZmll bGQgMSIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIFNT IiB7CisgICAgICAgICAgICAtcmUgIiRnZGJfcHJvbXB0IiB7CisgICAgICAg ICAgICAgICAgcGFzcyAicmV0dXJuIHRvIEdEQiBwcm9tcHQgZnJvbSBTUyIK KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworZ2RiX3Rl c3RfbXVsdGlwbGUgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgQ29tcGxleFN0cnVj dCIgIiIgeworICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlv biAkQ1Mge3N0cnVjdC9jbGFzc31dLiokQ1NfZmllbGRzX3R5cGVzLioiIHsK KyAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4U3Ry dWN0IgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiMCIgImV4cGxvcmUg dHlwZSBzdHJ1Y3QgQ29tcGxleFN0cnVjdCBmaWVsZCAwIiB7CisgICAgICAg ICAgICAtcmUgIi4qW2NoaWxkX2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24g JENTX2ZpZWxkXzAgJFNTIHtzdHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190 eXBlcy4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBl IHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDAiCisgICAgICAgICAgICAg ICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJuIHRvIENvbXBsZXhT dHJ1Y3QgZnJvbSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAgIC1y ZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Mge3N0cnVjdC9j bGFzc31dLiokQ1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3MgInJldHVybiB0byBDb21wbGV4U3RydWN0IGZyb20g ZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBnZGJf dGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlwZSBzdHJ1Y3QgQ29tcGxl eFN0cnVjdCBmaWVsZCAxIiB7CisgICAgICAgICAgICAtcmUgIi4qW2NoaWxk X2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENTX2ZpZWxkXzEgJFNVIHt1 bmlvbn1dLiokU1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAg ICBwYXNzICJleHBsb3JlIHR5cGUgc3RydWN0IENvbXBsZXhTdHJ1Y3QgZmll bGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAi ICJyZXR1cm4gdG8gQ29tcGxleFN0cnVjdCBmcm9tIGZpZWxkIDEiIHsKKyAg ICAgICAgICAgICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2Ny aXB0aW9uICRDUyB7c3RydWN0L2NsYXNzfV0uKiRDU19maWVsZHNfdHlwZXMu KiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRv IENvbXBsZXhTdHJ1Y3QgZnJvbSBmaWVsZCAxIgorICAgICAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgICAgIGdkYl90ZXN0X211bHRpcGxlICIyIiAiZXhwbG9y ZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDIiIHsKKyAgICAg ICAgICAgIC1yZSAiLipbY2hpbGRfYXJyYXlfdHlwZV9kZXNjcmlwdGlvbiAk Q1NfZmllbGRfMiB7U1N9XS4qIiB7CisgICAgICAgICAgICAgICAgcGFzcyAi ZXhwbG9yZSB0eXBlIHN0cnVjdCBDb21wbGV4U3RydWN0IGZpZWxkIDIiCisg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJu IHRvIENvbXBsZXhTdHJ1Y3QgZnJvbSBmaWVsZCAyIiB7CisgICAgICAgICAg ICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAk Q1Mge3N0cnVjdC9jbGFzc31dLiokQ1NfZmllbGRzX3R5cGVzLioiIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBDb21wbGV4 U3RydWN0IGZyb20gZmllbGQgMiIKKyAgICAgICAgICAgICAgICAgICAgfQor ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor ICAgICAgICBnZGJfdGVzdF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gR0RC IHByb21wdCBmcm9tIENvbXBsZXhTdHJ1Y3QgdHlwZSBleHBsb3JhdGlvbiIg eworICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAgICAgICAg ICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20gQ29tcGxl eFN0cnVjdCB0eXBlIGV4cGxvcmF0aW9uIgorICAgICAgICAgICAgfQorICAg ICAgICB9CisgICAgfQorfQorCitnZGJfdGVzdF9tdWx0aXBsZSAiZXhwbG9y ZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIgIiIgeworICAgIC1yZSAiLipb Y29tcG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Uge3VuaW9ufV0uKiRDVV9m aWVsZHNfdHlwZXMuKiIgeworICAgICAgICBwYXNzICJleHBsb3JlIHR5cGUg dW5pb24gQ29tcGxleFVuaW9uIgorICAgICAgICBnZGJfdGVzdF9tdWx0aXBs ZSAiMCIgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21wbGV4U3RydWN0IGZpZWxk IDAiIHsKKyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfY29tcG91bmRfdHlw ZV9kZXNjcmlwdGlvbiAkQ1VfZmllbGRfMCAkU1Mge3N0cnVjdC9jbGFzc31d LiokU1NfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAgICBwYXNz ICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFVuaW9uIGZpZWxkIDAiCisg ICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJu IHRvIENvbXBsZXhVbmlvbiBmcm9tIGZpZWxkIDAiIHsKKyAgICAgICAgICAg ICAgICAgICAgLXJlICIuKltjb21wb3VuZF90eXBlX2Rlc2NyaXB0aW9uICRD VSB7dW5pb259XS4qJENVX2ZpZWxkc190eXBlcy4qIiB7CisgICAgICAgICAg ICAgICAgICAgICAgICBwYXNzICJyZXR1cm4gdG8gQ29tcGxleFVuaW9uIGZy b20gZmllbGQgMCIKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBn ZGJfdGVzdF9tdWx0aXBsZSAiMSIgImV4cGxvcmUgdHlwZSB1bmlvbiBDb21w bGV4VW5pb24gZmllbGQgMSIgeworICAgICAgICAgICAgLXJlICIuKltjaGls ZF9hcnJheV90eXBlX2Rlc2NyaXB0aW9uICRDVV9maWVsZF8xICRTU10uKiIg eworICAgICAgICAgICAgICAgIHBhc3MgImV4cGxvcmUgdHlwZSB1bmlvbiBD b21wbGV4VW5pb24gZmllbGQgMSIKKyAgICAgICAgICAgICAgICBnZGJfdGVz dF9tdWx0aXBsZSAiXDAiICJyZXR1cm4gdG8gQ29tcGxleFVuaW9uIGFycmF5 IiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29tcG91bmRfdHlw ZV9kZXNjcmlwdGlvbiAkQ1Uge3VuaW9ufV0uKiRDVV9maWVsZHNfdHlwZXMu KiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAicmV0dXJuIHRv IENvbXBsZXhVbmlvbiBmcm9tIGZpZWxkIDEiCisgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg ICAgIH0KKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0dXJu IHRvIEdEQiBwcm9tcHQgZnJvbSBDb21wbGV4VW5pb24gdHlwZSBleHBsb3Jh dGlvbiIgeworICAgICAgICAgICAgLXJlICIkZ2RiX3Byb21wdCIgeworICAg ICAgICAgICAgICAgIHBhc3MgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20g Q29tcGxleFVuaW9uIHR5cGUgZXhwbG9yYXRpb24iCisgICAgICAgICAgICB9 CisgICAgICAgIH0KKyAgICB9Cit9CisKK2dkYl90ZXN0X211bHRpcGxlICJl eHBsb3JlIHR5cGUgY3UiICIiIHsKKyAgICAtcmUgIidjdScgaXMgb2YgdHlw ZSAndW5pb24gQ29tcGxleFVuaW9uJy4qW2NvbXBvdW5kX3R5cGVfZGVzY3Jp cHRpb24gJENVIHt1bmlvbn1dLiokQ1VfZmllbGRzX3R5cGVzLioiIHsKKyAg ICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9uIENvbXBsZXhVbmlvbiIK KyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjAiICJleHBsb3JlIHR5cGUg dW5pb24gQ29tcGxleFN0cnVjdCBmaWVsZCAwIiB7CisgICAgICAgICAgICAt cmUgIi4qW2NoaWxkX2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENVX2Zp ZWxkXzAgJFNTIHtzdHJ1Y3QvY2xhc3N9XS4qJFNTX2ZpZWxkc190eXBlcy4q IiB7CisgICAgICAgICAgICAgICAgcGFzcyAiZXhwbG9yZSB0eXBlIHVuaW9u IENvbXBsZXhVbmlvbiBmaWVsZCAwIgorICAgICAgICAgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBDb21wbGV4VW5pb24gZnJv bSBmaWVsZCAwIiB7CisgICAgICAgICAgICAgICAgICAgIC1yZSAiLipbY29t cG91bmRfdHlwZV9kZXNjcmlwdGlvbiAkQ1Uge3VuaW9ufV0uKiRDVV9maWVs ZHNfdHlwZXMuKiIgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFzcyAi cmV0dXJuIHRvIENvbXBsZXhVbmlvbiBmcm9tIGZpZWxkIDAiCisgICAgICAg ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg ICB9CisgICAgICAgIH0KKyAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIjEi ICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFVuaW9uIGZpZWxkIDEiIHsK KyAgICAgICAgICAgIC1yZSAiLipbY2hpbGRfYXJyYXlfdHlwZV9kZXNjcmlw dGlvbiAkQ1VfZmllbGRfMSAkU1NdLioiIHsKKyAgICAgICAgICAgICAgICBw YXNzICJleHBsb3JlIHR5cGUgdW5pb24gQ29tcGxleFVuaW9uIGZpZWxkIDEi CisgICAgICAgICAgICAgICAgZ2RiX3Rlc3RfbXVsdGlwbGUgIlwwIiAicmV0 dXJuIHRvIENvbXBsZXhVbmlvbiBhcnJheSIgeworICAgICAgICAgICAgICAg ICAgICAtcmUgIi4qW2NvbXBvdW5kX3R5cGVfZGVzY3JpcHRpb24gJENVIHt1 bmlvbn1dLiokQ1VfZmllbGRzX3R5cGVzLioiIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHBhc3MgInJldHVybiB0byBDb21wbGV4VW5pb24gZnJvbSBm aWVsZCAxIgorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGdkYl90 ZXN0X211bHRpcGxlICJcMCIgInJldHVybiB0byBHREIgcHJvbXB0IGZyb20g Q29tcGxleFVuaW9uIHR5cGUgZXhwbG9yYXRpb24iIHsKKyAgICAgICAgICAg IC1yZSAiJGdkYl9wcm9tcHQiIHsKKyAgICAgICAgICAgICAgICBwYXNzICJy ZXR1cm4gdG8gR0RCIHByb21wdCBmcm9tIENvbXBsZXhVbmlvbiB0eXBlIGV4 cGxvcmF0aW9uIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor fQo= --002354332aca5fbb9e04bbc003f5--