From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31796 invoked by alias); 12 Apr 2013 10:39:31 -0000 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 Received: (qmail 31786 invoked by uid 89); 12 Apr 2013 10:39:30 -0000 X-Spam-SWARE-Status: No, score=-4.7 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,KHOP_RCVD_TRUST,KHOP_THREADED,RCVD_IN_DNSWL_LOW,RCVD_IN_HOSTKARMA_YE,TW_EG autolearn=ham version=3.3.1 Received: from mail-oa0-f43.google.com (HELO mail-oa0-f43.google.com) (209.85.219.43) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Fri, 12 Apr 2013 10:39:28 +0000 Received: by mail-oa0-f43.google.com with SMTP id l10so2397232oag.30 for ; Fri, 12 Apr 2013 03:39:26 -0700 (PDT) X-Received: by 10.182.118.42 with SMTP id kj10mr3638953obb.99.1365763166497; Fri, 12 Apr 2013 03:39:26 -0700 (PDT) MIME-Version: 1.0 Received: by 10.60.13.133 with HTTP; Fri, 12 Apr 2013 03:38:46 -0700 (PDT) In-Reply-To: <51667EDC.9070207@redhat.com> References: <515451EA.1000200@mentor.com> <83y5d7wpvq.fsf@gnu.org> <516454DA.9040109@redhat.com> <51667EDC.9070207@redhat.com> From: Hui Zhu Date: Fri, 12 Apr 2013 14:56:00 -0000 Message-ID: Subject: Re: [PATCH] add -s option to make -break-insert support dprintf To: Pedro Alves Cc: Eli Zaretskii , Hui Zhu , gdb-patches ml , Marc Khouzam Content-Type: multipart/mixed; boundary=f46d0447878d62f7d604da2784cb X-Virus-Found: No X-SW-Source: 2013-04/txt/msg00378.txt.bz2 --f46d0447878d62f7d604da2784cb Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 5884 Hi Pedro, Thanks for your review. On Thu, Apr 11, 2013 at 5:14 PM, Pedro Alves wrote: > On 04/11/2013 03:40 AM, Hui Zhu wrote: > >>> New MI features need a NEWS entry. >> >> This is for NEWS: >> ** The -s of MI command -break-insert can set a dynamic printf. >> > > Please send that as a real patch, so e.g., we can see what section of > NEWS you're proposing adding it to. OK. I add this change to doc patch. > >> >>> >>>> +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" exec= utable {debug}] !=3D "" } { >>>> + untested mi-dprintf.exp >>> >>> http://sourceware.org/gdb/wiki/GDBTestcaseCookbook#A.22untested.22_calls >>> >> >> Looks test doesn't need it now. So I removed it. > > I still see it in the patch. But, you can simplify and > replace that gdb_compile call with a build_executable call, I think? > Then you don't need the untested call. Fixed. > >>> >>>> + set target_can_dprintf 0 >>>> + pass "$msg - cannot do" >>> >>>> + } >>>> + timeout { >>>> + fail "resume all, waiting for program exit (timeout)" >>> >>> Certainly "resume all" is a pasto here. >> >> pasto? > > Typo -> pasto. Pasto is like a typo, but refers to > blindly copy/pasting text from elsewhere. > > "resume all, waiting for program exit" makes no sense here. > It should be $msg, no? Fixed. > >>> Why do I get: >>> >>> PASS: gdb.mi/mi-dprintf.exp: Set dprintf style to agent - cannot do >>> >>> with gdbserver? >> >> Set dprintf style to agent need test with gdbserver. >> I update this pass to unsupported. >> >> And also update this part to make it test OK with gdbserver. > > I still get: > > $ make check gdbserver RUNTESTFLAGS=3D"--target_board=3Dnative-gdbserver = mi-dprintf.exp" This part is really odd. In my part, without "sleep 1" will random get fail with "Set dprintf style to agent ". The reason of fail is test try to check the output before it call send_gdb "set dprintf-style agent\n". This is why I add a "sleep 1" for it. But looks it still not OK in your part, so I change it to: mi_gdb_test "pwd" ".*" If it is still not OK in your part, I suggest remove this part of test because it is not very important for this test. The "set dprintf-style agent" is tested in "dprintf.exp". > ... > FAIL: gdb.mi/mi-dprintf.exp: set dprintf style to agent > > =3D=3D=3D gdb Summary =3D=3D=3D > > # of expected passes 13 > # of unexpected failures 1 > > gdb.log: > > ~"arg=3D1235, g=3D2222\n" > *running,thread-id=3D"1" > =3Dbreakpoint-modified,bkpt=3D{number=3D"5",type=3D"breakpoint",disp=3D"k= eep",enabled=3D"y",addr=3D"0x00000000004006c2",func=3D"foo",file=3D"../../.= ./src/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/home/pedro/gdb/mygit/= src/gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"29",thread-groups=3D["i1"],t= imes=3D"2",original-location=3D"/home/pedro/gdb/mygit/src/gdb/testsuite/gdb= .mi/mi-dprintf.c:29"} > *stopped,reason=3D"breakpoint-hit",disp=3D"keep",bkptno=3D"5",frame=3D{ad= dr=3D"0x00000000004006c2",func=3D"foo",args=3D[{name=3D"arg",value=3D"1235"= }],file=3D"../../../src/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/hom= e/pedro/gdb/mygit/src/gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"29"},threa= d-id=3D"1",stopped-threads=3D"all",core=3D"1" > (gdb) > PASS: gdb.mi/mi-dprintf.exp: gdb: mi 2nd dprintf > &"continue\n" > ~"Continuing.\n" > ^running > *running,thread-id=3D"1" > (gdb) > =3Dbreakpoint-modified,bkpt=3D{number=3D"3",type=3D"dprintf",disp=3D"keep= ",enabled=3D"y",addr=3D"0x00000000004006a3",func=3D"foo",file=3D"../../../s= rc/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/home/pedro/gdb/mygit/src= /gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"27",thread-groups=3D["i1"],time= s=3D"3",script=3D{"printf \\"At foo entry\\\\n\\"","continue"},original-loc= ation=3D"foo"} > *stopped > ~"At foo entry\n" > *running,thread-id=3D"1" > =3Dbreakpoint-modified,bkpt=3D{number=3D"4",type=3D"dprintf",disp=3D"keep= ",enabled=3D"y",addr=3D"0x00000000004006b4",func=3D"foo",file=3D"../../../s= rc/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/home/pedro/gdb/mygit/src= /gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"28",thread-groups=3D["i1"],time= s=3D"3",script=3D{"printf \\"arg=3D%d, g=3D%d\\\\n\\", arg, g","continue"},= original-location=3D"/home/pedro/gdb/mygit/src/gdb/testsuite/gdb.mi/mi-dpri= ntf.c:28"} > *stopped > ~"arg=3D1236, g=3D3013\n" > *running,thread-id=3D"1" > =3Dbreakpoint-modified,bkpt=3D{number=3D"5",type=3D"breakpoint",disp=3D"k= eep",enabled=3D"y",addr=3D"0x00000000004006c2",func=3D"foo",file=3D"../../.= ./src/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/home/pedro/gdb/mygit/= src/gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"29",thread-groups=3D["i1"],t= imes=3D"3",original-location=3D"/home/pedro/gdb/mygit/src/gdb/testsuite/gdb= .mi/mi-dprintf.c:29"} > *stopped,reason=3D"breakpoint-hit",disp=3D"keep",bkptno=3D"5",frame=3D{ad= dr=3D"0x00000000004006c2",func=3D"foo",args=3D[{name=3D"arg",value=3D"1236"= }],file=3D"../../../src/gdb/testsuite/gdb.mi/mi-dprintf.c",fullname=3D"/hom= e/pedro/gdb/mygit/src/gdb/testsuite/gdb.mi/mi-dprintf.c",line=3D"29"},threa= d-id=3D"1",stopped-threads=3D"all",core=3D"0" > (gdb) > FAIL: gdb.mi/mi-dprintf.exp: set dprintf style to agent > > >> +# Sleep 1 second to make sure set dprintf-style agent get right outout. > > s/outout/output/ ? Fixed. > > -- > Pedro Alves > Thanks, Hui 2013-04-12 Hui Zhu * breakpoint.c (dprintf_breakpoint_ops): Remove its static. * breakpoint.h (dprintf_breakpoint_ops): Add extern. * mi/mi-cmd-break.c (mi_cmd_break_insert): Handle the "-s" option. 2013-04-12 Hui Zhu * gdb.texinfo (GDB/MI Breakpoint Commands): Describe the "-s" option. 2013-04-12 Hui Zhu * gdb.mi/Makefile.in (PROGS): Add "mi-dprintf". * gdb.mi/mi-dprintf.exp, gdb.mi/mi-dprintf.c: New. --f46d0447878d62f7d604da2784cb Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf.txt" Content-Disposition: attachment; filename="mi-dprintf.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hff83eyt0 Content-length: 5185 LS0tIGEvYnJlYWtwb2ludC5jCisrKyBiL2JyZWFrcG9pbnQuYwpAQCAtMzA1 LDcgKzMwNSw3IEBAIHN0cnVjdCBicmVha3BvaW50X29wcyBia3B0X2JyZWFr cG9pbnRfb3AKIHN0YXRpYyBzdHJ1Y3QgYnJlYWtwb2ludF9vcHMgYmtwdF9w cm9iZV9icmVha3BvaW50X29wczsKIAogLyogRHluYW1pYyBwcmludGYgY2xh c3MgdHlwZS4gICovCi1zdGF0aWMgc3RydWN0IGJyZWFrcG9pbnRfb3BzIGRw cmludGZfYnJlYWtwb2ludF9vcHM7CitzdHJ1Y3QgYnJlYWtwb2ludF9vcHMg ZHByaW50Zl9icmVha3BvaW50X29wczsKIAogLyogVGhlIHN0eWxlIGluIHdo aWNoIHRvIHBlcmZvcm0gYSBkeW5hbWljIHByaW50Zi4gIFRoaXMgaXMgYSB1 c2VyCiAgICBvcHRpb24gYmVjYXVzZSBkaWZmZXJlbnQgb3V0cHV0IG9wdGlv bnMgaGF2ZSBkaWZmZXJlbnQgdHJhZGVvZmZzOwotLS0gYS9icmVha3BvaW50 LmgKKysrIGIvYnJlYWtwb2ludC5oCkBAIC0xMjEyLDYgKzEyMTIsNyBAQCBl eHRlcm4gdm9pZCB0YnJlYWtfY29tbWFuZCAoY2hhciAqLCBpbnQpCiBleHRl cm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJhc2VfYnJlYWtwb2ludF9vcHM7 CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIGJrcHRfYnJlYWtwb2lu dF9vcHM7CiBleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRfb3BzIHRyYWNlcG9p bnRfYnJlYWtwb2ludF9vcHM7CitleHRlcm4gc3RydWN0IGJyZWFrcG9pbnRf b3BzIGRwcmludGZfYnJlYWtwb2ludF9vcHM7CiAKIGV4dGVybiB2b2lkIGlu aXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpOwogCi0tLSBhL21pL21p LWNtZC1icmVhay5jCisrKyBiL21pL21pLWNtZC1icmVhay5jCkBAIC05OSwx NSArOTksMTcgQEAgbWlfY21kX2JyZWFrX2luc2VydCAoY2hhciAqY29tbWFu ZCwgY2hhcgogICBpbnQgcGVuZGluZyA9IDA7CiAgIGludCBlbmFibGVkID0g MTsKICAgaW50IHRyYWNlcG9pbnQgPSAwOworICBpbnQgZHByaW50ZiA9IDA7 CiAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwogICBlbnVtIGJwdHlwZSB0 eXBlX3dhbnRlZDsKICAgc3RydWN0IGJyZWFrcG9pbnRfb3BzICpvcHM7Cisg IGNoYXIgKmV4dHJhX3N0cmluZyA9IE5VTEw7CiAKICAgZW51bSBvcHQKICAg ICB7CiAgICAgICBIQVJEV0FSRV9PUFQsIFRFTVBfT1BULCBDT05ESVRJT05f T1BULAogICAgICAgSUdOT1JFX0NPVU5UX09QVCwgVEhSRUFEX09QVCwgUEVO RElOR19PUFQsIERJU0FCTEVfT1BULAotICAgICAgVFJBQ0VQT0lOVF9PUFQs CisgICAgICBUUkFDRVBPSU5UX09QVCwgRFBSSU5URl9PUFQsCiAgICAgfTsK ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaV9vcHQgb3B0c1tdID0KICAgewpA QCAtMTE5LDYgKzEyMSw3IEBAIG1pX2NtZF9icmVha19pbnNlcnQgKGNoYXIg KmNvbW1hbmQsIGNoYXIKICAgICB7ImYiLCBQRU5ESU5HX09QVCwgMH0sCiAg ICAgeyJkIiwgRElTQUJMRV9PUFQsIDB9LAogICAgIHsiYSIsIFRSQUNFUE9J TlRfT1BULCAwfSwKKyAgICB7InMiLCBEUFJJTlRGX09QVCwgMX0sCiAgICAg eyAwLCAwLCAwIH0KICAgfTsKIApAQCAtMTU5LDkgKzE2MiwxNSBAQCBtaV9j bWRfYnJlYWtfaW5zZXJ0IChjaGFyICpjb21tYW5kLCBjaGFyCiAJY2FzZSBU UkFDRVBPSU5UX09QVDoKIAkgIHRyYWNlcG9pbnQgPSAxOwogCSAgYnJlYWs7 CisJY2FzZSBEUFJJTlRGX09QVDoKKwkgIGV4dHJhX3N0cmluZyA9IG9hcmc7 CisJICBkcHJpbnRmID0gMTsKKwkgIGJyZWFrOwogCX0KICAgICB9CiAKKyAg aWYgKGhhcmR3YXJlICYmIGRwcmludGYpCisgICAgZXJyb3IgKF8oIi1icmVh ay1pbnNlcnQ6IC1oIGFuZCAtcyBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIp KTsKICAgaWYgKG9pbmQgPj0gYXJnYykKICAgICBlcnJvciAoXygiLWJyZWFr LWluc2VydDogTWlzc2luZyA8bG9jYXRpb24+IikpOwogICBpZiAob2luZCA8 IGFyZ2MgLSAxKQpAQCAtMTcxLDIwICsxODAsMzEgQEAgbWlfY21kX2JyZWFr X2luc2VydCAoY2hhciAqY29tbWFuZCwgY2hhcgogICAvKiBOb3cgd2UgaGF2 ZSB3aGF0IHdlIG5lZWQsIGxldCdzIGluc2VydCB0aGUgYnJlYWtwb2ludCEg ICovCiAgIGJhY2tfdG8gPSBzZXR1cF9icmVha3BvaW50X3JlcG9ydGluZyAo KTsKIAotICAvKiBOb3RlIHRoYXQgdG8gcmVxdWVzdCBhIGZhc3QgdHJhY2Vw b2ludCwgdGhlIGNsaWVudCB1c2VzIHRoZQotICAgICAiaGFyZHdhcmUiIGZs YWcsIGFsdGhvdWdoIHRoZXJlJ3Mgbm90aGluZyBvZiBoYXJkd2FyZSByZWxh dGVkIHRvCi0gICAgIGZhc3QgdHJhY2Vwb2ludHMgLS0gb25lIGNhbiBpbXBs ZW1lbnQgc2xvdyB0cmFjZXBvaW50cyB3aXRoCi0gICAgIGhhcmR3YXJlIGJy ZWFrcG9pbnRzLCBidXQgZmFzdCB0cmFjZXBvaW50cyBhcmUgYWx3YXlzIHNv ZnR3YXJlLgotICAgICAiZmFzdCIgaXMgYSBtaXNub21lciwgYWN0dWFsbHks ICJqdW1wIiB3b3VsZCBiZSBtb3JlIGFwcHJvcHJpYXRlLgotICAgICBBIHNp bXVsYXRvciBvciBhbiBlbXVsYXRvciBjb3VsZCBjb25jZWl2YWJseSBpbXBs ZW1lbnQgZmFzdAotICAgICByZWd1bGFyIG5vbi1qdW1wIGJhc2VkIHRyYWNl cG9pbnRzLiAgKi8KLSAgdHlwZV93YW50ZWQgPSAodHJhY2Vwb2ludAotCQkg PyAoaGFyZHdhcmUgPyBicF9mYXN0X3RyYWNlcG9pbnQgOiBicF90cmFjZXBv aW50KQotCQkgOiAoaGFyZHdhcmUgPyBicF9oYXJkd2FyZV9icmVha3BvaW50 IDogYnBfYnJlYWtwb2ludCkpOwotICBvcHMgPSB0cmFjZXBvaW50ID8gJnRy YWNlcG9pbnRfYnJlYWtwb2ludF9vcHMgOiAmYmtwdF9icmVha3BvaW50X29w czsKKyAgaWYgKHRyYWNlcG9pbnQpCisgICAgeworICAgICAgLyogTm90ZSB0 aGF0IHRvIHJlcXVlc3QgYSBmYXN0IHRyYWNlcG9pbnQsIHRoZSBjbGllbnQg dXNlcyB0aGUKKwkgImhhcmR3YXJlIiBmbGFnLCBhbHRob3VnaCB0aGVyZSdz IG5vdGhpbmcgb2YgaGFyZHdhcmUgcmVsYXRlZCB0bworCSBmYXN0IHRyYWNl cG9pbnRzIC0tIG9uZSBjYW4gaW1wbGVtZW50IHNsb3cgdHJhY2Vwb2ludHMg d2l0aAorCSBoYXJkd2FyZSBicmVha3BvaW50cywgYnV0IGZhc3QgdHJhY2Vw b2ludHMgYXJlIGFsd2F5cyBzb2Z0d2FyZS4KKwkgImZhc3QiIGlzIGEgbWlz bm9tZXIsIGFjdHVhbGx5LCAianVtcCIgd291bGQgYmUgbW9yZSBhcHByb3By aWF0ZS4KKwkgQSBzaW11bGF0b3Igb3IgYW4gZW11bGF0b3IgY291bGQgY29u Y2VpdmFibHkgaW1wbGVtZW50IGZhc3QKKwkgcmVndWxhciBub24tanVtcCBi YXNlZCB0cmFjZXBvaW50cy4gICovCisgICAgICB0eXBlX3dhbnRlZCA9IGhh cmR3YXJlID8gYnBfZmFzdF90cmFjZXBvaW50IDogYnBfdHJhY2Vwb2ludDsK KyAgICAgIG9wcyA9ICZ0cmFjZXBvaW50X2JyZWFrcG9pbnRfb3BzOworICAg IH0KKyAgZWxzZSBpZiAoZHByaW50ZikKKyAgICB7CisgICAgICB0eXBlX3dh bnRlZCA9IGJwX2RwcmludGY7CisgICAgICBvcHMgPSAmZHByaW50Zl9icmVh a3BvaW50X29wczsKKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICB0eXBl X3dhbnRlZCA9IGhhcmR3YXJlID8gYnBfaGFyZHdhcmVfYnJlYWtwb2ludCA6 IGJwX2JyZWFrcG9pbnQ7CisgICAgICBvcHMgPSAmYmtwdF9icmVha3BvaW50 X29wczsKKyAgICB9CiAKICAgY3JlYXRlX2JyZWFrcG9pbnQgKGdldF9jdXJy ZW50X2FyY2ggKCksIGFkZHJlc3MsIGNvbmRpdGlvbiwgdGhyZWFkLAotCQkg ICAgIE5VTEwsCisJCSAgICAgZXh0cmFfc3RyaW5nLAogCQkgICAgIDAgLyog Y29uZGl0aW9uIGFuZCB0aHJlYWQgYXJlIHZhbGlkLiAgKi8sCiAJCSAgICAg dGVtcF9wLCB0eXBlX3dhbnRlZCwKIAkJICAgICBpZ25vcmVfY291bnQsCg== --f46d0447878d62f7d604da2784cb Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-doc.txt" Content-Disposition: attachment; filename="mi-dprintf-doc.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hff83f191 Content-length: 2648 LS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0yNyw2ICsyNyw5IEBAIHNob3cg cmVtb3RlIHRyYWNlLXN0YXR1cy1wYWNrZXQKICAgKiogVGhlIC10cmFjZS1z YXZlIE1JIGNvbW1hbmQgY2FuIG9wdGlvbmFsbHkgc2F2ZSB0cmFjZSBidWZm ZXIgaW4gQ29tbW9uCiAgICAgIFRyYWNlIEZvcm1hdCBub3cuCiAKKyAgKiog VGhlIG5ldyBvcHRpb24gLXMgb2YgdGhlIE1JIGNvbW1hbmQgLWJyZWFrLWlu c2VydCBzZXRzIGEgZHluYW1pYworICAgICBwcmludGYgYnJlYWtwb2ludC4K KwogKioqIENoYW5nZXMgaW4gR0RCIDcuNgogCiAqIFRhcmdldCByZWNvcmQg aGFzIGJlZW4gcmVuYW1lZCB0byByZWNvcmQtZnVsbC4KLS0tIGEvZG9jL2dk Yi50ZXhpbmZvCisrKyBiL2RvYy9nZGIudGV4aW5mbwpAQCAtMjg3NDUsNyAr Mjg3NDUsOSBAQCBOLkEuCiBAc21hbGxleGFtcGxlCiAgLWJyZWFrLWluc2Vy dCBbIC10IF0gWyAtaCBdIFsgLWYgXSBbIC1kIF0gWyAtYSBdCiAgICAgWyAt YyBAdmFye2NvbmRpdGlvbn0gXSBbIC1pIEB2YXJ7aWdub3JlLWNvdW50fSBd Ci0gICAgWyAtcCBAdmFye3RocmVhZC1pZH0gXSBbIEB2YXJ7bG9jYXRpb259 IF0KKyAgICBbIC1wIEB2YXJ7dGhyZWFkLWlkfSBdCisgICAgWyAtcyAiQHZh cnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZhcntleHByZXNzaW9u fUBkb3Rze31dIiBdCisgICAgWyBAdmFye2xvY2F0aW9ufSBdCiBAZW5kIHNt YWxsZXhhbXBsZQogCiBAbm9pbmRlbnQKQEAgLTI4Nzg1LDYgKzI4Nzg3LDI5 IEBAIE1ha2UgdGhlIGJyZWFrcG9pbnQgY29uZGl0aW9uYWwgb24gQHZhcnsK IEluaXRpYWxpemUgdGhlIEB2YXJ7aWdub3JlLWNvdW50fS4KIEBpdGVtIC1w IEB2YXJ7dGhyZWFkLWlkfQogUmVzdHJpY3QgdGhlIGJyZWFrcG9pbnQgdG8g dGhlIHNwZWNpZmllZCBAdmFye3RocmVhZC1pZH0uCitAaXRlbSAtcyAiQHZh cnt0ZW1wbGF0ZX0sQHZhcntleHByZXNzaW9ufVssQHZhcntleHByZXNzaW9u fUBkb3Rze31dIgorU2V0IGEgZHluYW1pYyBwcmludGYgYnJlYWtwb2ludCwg ZGVzY3JpYmVkIGluIEByZWZ7RHluYW1pYyBQcmludGZ9LgorVGhlIEB2YXJ7 dGVtcGxhdGV9IGFuZCBAdmFye2V4cHJlc3Npb259IHNob3VsZCBiZSB3aXRo aW4gZG91YmxlCitxdW90ZXMgYW5kIGJlIGVzY2FwZWQgYnkgYmVpbmcgcHJl Y2VkZWQgd2l0aCBhIGJhY2tzbGFzaC4KKworQHNtYWxsZXhhbXBsZQorKGdk YikKKzQtYnJlYWstaW5zZXJ0IC1zICJcIkF0IGZvbyBlbnRyeVxcblwiIiBm b28KKzReZG9uZSxia3B0PUB7bnVtYmVyPSIxIix0eXBlPSJkcHJpbnRmIixk aXNwPSJrZWVwIixlbmFibGVkPSJ5IiwKK2FkZHI9IjB4MDAwMDAwMDAwMDQw MDYxYiIsZnVuYz0iZm9vIixmaWxlPSJtaS1kcHJpbnRmLmMiLAorZnVsbG5h bWU9Im1pLWRwcmludGYuYyIsbGluZT0iMjUiLHRocmVhZC1ncm91cHM9WyJp MSJdLAordGltZXM9IjAiLHNjcmlwdD1AeyJwcmludGYgXCJBdCBmb28gZW50 cnlcXG5cIiIsImNvbnRpbnVlIkB9LAorb3JpZ2luYWwtbG9jYXRpb249ImZv byJAfQorKGdkYikKKzUtYnJlYWstaW5zZXJ0IC1zICJcImFyZz0lZCwgZz0l ZFxcblwiLCBhcmcsIGciIDI2Cis1XmRvbmUsYmtwdD1Ae251bWJlcj0iMiIs dHlwZT0iZHByaW50ZiIsZGlzcD0ia2VlcCIsZW5hYmxlZD0ieSIsCithZGRy PSIweDAwMDAwMDAwMDA0MDA2MmEiLGZ1bmM9ImZvbyIsZmlsZT0ibWktZHBy aW50Zi5jIiwKK2Z1bGxuYW1lPSJtaS1kcHJpbnRmLmMiLGxpbmU9IjI2Iix0 aHJlYWQtZ3JvdXBzPVsiaTEiXSwKK3RpbWVzPSIwIixzY3JpcHQ9QHsicHJp bnRmIFwiYXJnPSVkLCBnPSVkXFxuXCIsIGFyZywgZyIsImNvbnRpbnVlIkB9 LAorb3JpZ2luYWwtbG9jYXRpb249Im1pLWRwcmludGYuYzoyNiJAfQorKGdk YikKK0BlbmQgc21hbGxleGFtcGxlCisKIEBlbmQgdGFibGUKIAogQHN1YnN1 YmhlYWRpbmcgUmVzdWx0Cg== --f46d0447878d62f7d604da2784cb Content-Type: text/plain; charset=US-ASCII; name="mi-dprintf-test.txt" Content-Disposition: attachment; filename="mi-dprintf-test.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hff83f1d2 Content-length: 9663 LS0tIGEvdGVzdHN1aXRlL2dkYi5taS9NYWtlZmlsZS5pbgorKysgYi90ZXN0 c3VpdGUvZ2RiLm1pL01ha2VmaWxlLmluCkBAIC0zLDcgKzMsNyBAQCBzcmNk aXIgPSBAc3JjZGlyQAogCiBQUk9HUyA9IGJhc2ljcyBjX3ZhcmlhYmxlIGNw cF92YXJpYWJsZSB2YXItY21kIGR3Mi1yZWYtbWlzc2luZy1mcmFtZQlcCiAJ Z2RiNjY5LXB0aHJlYWRzIGdkYjcwMSBnZGI3OTIgbWktYXN5bmMgbWktYmFz aWNzIG1pLWJyZWFrCVwKLQltaS1jbGkgbWktY29uc29sZSBtaS1kaXNhc3Nl bWJsZSBtaS1ldmFsIG1pLWZpbGUJCVwKKwltaS1jbGkgbWktY29uc29sZSBt aS1kaXNhc3NlbWJsZSBtaS1kcHJpbnRmIG1pLWV2YWwgbWktZmlsZQlcCiAJ bWktZmlsZS10cmFuc2ZlciBtaS1ub24tc3RvcCBtaS1ub24tc3RvcC1leGl0 CQkJXAogCW1pLW5zLXN0YWxlLXJlZ2NhY2hlIG1pLW5zaW50cmFsbCBtaS1u c21vcmlidW5kIG1pLW5zdGhyZXhlYwlcCiAJbWktcGVuZGluZyBtaS1wdGhy ZWFkcyBtaS1yZWFkLW1lbW9yeSBtaS1yZWdzIG1pLXJldHVybgkJXAotLS0g L2Rldi9udWxsCisrKyBiL3Rlc3RzdWl0ZS9nZGIubWkvbWktZHByaW50Zi5j CkBAIC0wLDAgKzEsNTkgQEAKKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisKKyAgIENvcHlyaWdodCAoQykg MjAxMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAgIENvbnRy aWJ1dGVkIGJ5IEh1aSBaaHUgIDxodWlAY29kZXNvdXJjZXJ5LmNvbT4KKwor ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk aXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgVGhpcyBwcm9n cmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg U2VlIHRoZQorICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKworI2luY2x1ZGUgPHN0ZGlv Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKK3N0YXRpYyBpbnQgZzsKKwor dm9pZAorZm9vIChpbnQgYXJnKQoreworICBnICs9IGFyZzsKKyAgZyAqPSAy OyAvKiBzZXQgZHByaW50ZiAxIGhlcmUgKi8KKyAgZyAvPSAyLjU7IC8qIHNl dCBicmVha3BvaW50IDEgaGVyZSAqLworfQorCitpbnQKK21haW4gKGludCBh cmdjLCBjaGFyICphcmd2W10pCit7CisgIGludCBsb2MgPSAxMjM0OworCisg IC8qIEVuc3VyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGF2YWlsYWJsZS4gICov CisgIHByaW50ZiAoImtpY2tvZmYgJWRcbiIsIGxvYyk7CisgIGZwcmludGYg KHN0ZGVyciwgImFsc28gdG8gc3RkZXJyICVkXG4iLCBsb2MpOworCisgIGZv byAobG9jKyspOworICBmb28gKGxvYysrKTsKKyAgZm9vIChsb2MrKyk7Cisg IHJldHVybiBnOworfQorCisvKiBNYWtlIHN1cmUgZnVuY3Rpb24gJ21hbGxv YycgaXMgbGlua2VkIGludG8gcHJvZ3JhbS4gIE9uIHNvbWUgYmFyZS1tZXRh bAorICAgcG9ydCwgaWYgd2UgZG9uJ3QgdXNlICdtYWxsb2MnLCBpdCB3aWxs IG5vdCBiZSBsaW5rZWQgaW4gcHJvZ3JhbS4gICdtYWxsb2MnCisgICBpcyBu ZWVkZWQsIG90aGVyd2lzZSB3ZSdsbCBzZWUgc3VjaCBlcnJvciBtZXNzYWdl CisgICBldmFsdWF0aW9uIG9mIHRoaXMgZXhwcmVzc2lvbiByZXF1aXJlcyB0 aGUgcHJvZ3JhbSB0byBoYXZlIGEgZnVuY3Rpb24KKyAgICJtYWxsb2MiLiAg Ki8KKwordm9pZAorYmFyICh2b2lkKQoreworICB2b2lkICpwID0gbWFsbG9j ICgxNik7CisKKyAgZnJlZSAocCk7Cit9Ci0tLSAvZGV2L251bGwKKysrIGIv dGVzdHN1aXRlL2dkYi5taS9taS1kcHJpbnRmLmV4cApAQCAtMCwwICsxLDEy MSBAQAorIyAgIENvcHlyaWdodCAoQykgMjAxMyBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKyMgICBDb250cmlidXRlZCBieSBIdWkgWmh1ICA8 aHVpQGNvZGVzb3VyY2VyeS5jb20+CisKKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKK2xv YWRfbGliIG1pLXN1cHBvcnQuZXhwCitzZXQgTUlGTEFHUyAiLWk9bWkiCisK K2dkYl9leGl0CitpZiBbbWlfZ2RiX3N0YXJ0XSB7CisgICAgY29udGludWUK K30KKworc3RhbmRhcmRfdGVzdGZpbGUKKworaWYge1tidWlsZF9leGVjdXRh YmxlICR0ZXN0ZmlsZS5leHAgJHRlc3RmaWxlICRzcmNmaWxlIHtkZWJ1Z31d ID09IC0xfSB7CisgICAgdW50ZXN0ZWQgImZhaWxlZCB0byBjb21waWxlICR0 ZXN0ZmlsZSIKKyAgICByZXR1cm4gLTEKK30KKworbWlfZGVsZXRlX2JyZWFr cG9pbnRzCisKK3NldCBicF9sb2NhdGlvbjEgW2dkYl9nZXRfbGluZV9udW1i ZXIgInNldCBicmVha3BvaW50IDEgaGVyZSJdCitzZXQgZHBfbG9jYXRpb24x IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJzZXQgZHByaW50ZiAxIGhlcmUiXQor CittaV9ydW5fdG9fbWFpbgorCittaV9nZGJfdGVzdCAiMS1icmVhay1pbnNl cnQgLXMiIFwKKyAgICAiMVxcXmVycm9yLG1zZz1cIi1icmVhay1pbnNlcnQ6 IE9wdGlvbiAtcyByZXF1aXJlcyBhbiBhcmd1bWVudFwiIiAibWkgaW5zZXJ0 IHdpdGhvdXQgbG9jYXRpb24iCisKK21pX2dkYl90ZXN0ICIyLWJyZWFrLWlu c2VydCAtcyBmb28iIFwKKyAgICAiMlxcXmVycm9yLG1zZz1cIi1icmVhay1p bnNlcnQ6IE1pc3NpbmcgPGxvY2F0aW9uPlwiIiAibWkgaW5zZXJ0IGJyZWFr cG9pbnQgd2l0aG91dCBmb3JtYXQgc3RyaW5nIgorCittaV9nZGJfdGVzdCAi My1icmVhay1pbnNlcnQgLXMgMjkiIFwKKyAgICAiM1xcXmVycm9yLG1zZz1c Ii1icmVhay1pbnNlcnQ6IE1pc3NpbmcgPGxvY2F0aW9uPlwiIiAibWkgaW5z ZXJ0IHNlY29uZCBicmVha3BvaW50IHdpdGhvdXQgZm9ybWF0IHN0cmluZyIK KworbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgbWFpbiIgIi4qIiAibWkg aW5zZXJ0IGJyZWFrcG9pbnQgbWFpbiIKK21pX2RlbGV0ZV9icmVha3BvaW50 cworCittaV9nZGJfdGVzdCAiNC1icmVhay1pbnNlcnQgLXMgXCJcXFwiQXQg Zm9vIGVudHJ5XFxcXG5cXFwiXCIgZm9vIiBcCisgICAgIjRcXF5kb25lLGJr cHQ9XHtudW1iZXI9XCIuKlwiLHR5cGU9XCJkcHJpbnRmXCIuKmZ1bmM9XCJm b29cIixmaWxlPVwiLiptaS1kcHJpbnRmLmNcIixmdWxsbmFtZT1cIi4qbWkt ZHByaW50Zi5jXCIsbGluZT1cIi4qXCIuKiIgIm1pIGluc2VydCBkcHJpbnRm IGZvbyIKKworbWlfZ2RiX3Rlc3QgIjUtYnJlYWstaW5zZXJ0IC1zIFwiXFxc ImFyZz0lZCwgZz0lZFxcXFxuXFxcIiwgYXJnLCBnXCIgJGRwX2xvY2F0aW9u MSIgXAorICAgICI1XFxeZG9uZSxia3B0PVx7bnVtYmVyPVwiLipcIix0eXBl PVwiZHByaW50ZlwiLipmdW5jPVwiZm9vXCIsZmlsZT1cIi4qbWktZHByaW50 Zi5jXCIsZnVsbG5hbWU9XCIuKm1pLWRwcmludGYuY1wiLGxpbmU9XCIkZHBf bG9jYXRpb24xXCIuKiIgXAorICAgICJtaSBpbnNlcnQgZHByaW50ZiBkcF9s b2NhdGlvbjEiCisKK21pX2dkYl90ZXN0ICI2LWJyZWFrLWluZm8iIFwKKyAg ICAiNlxcXmRvbmUsQnJlYWtwb2ludFRhYmxlPVx7bnJfcm93cz1cIi5cIixu cl9jb2xzPVwiLlwiLGhkcj1cXFxbXHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50 PVwiLipcIixjb2xfbmFtZT1cIm51bWJlclwiLGNvbGhkcj1cIk51bVwiXH0s XHt3aWR0aD1cIi4qXCIsYWxpZ25tZW50PVwiLipcIixjb2xfbmFtZT1cInR5 cGVcIixjb2xoZHI9XCJUeXBlXCJcfSxce3dpZHRoPVwiLipcIixhbGlnbm1l bnQ9XCIuKlwiLGNvbF9uYW1lPVwiZGlzcFwiLGNvbGhkcj1cIkRpc3BcIlx9 LFx7d2lkdGg9XCIuKlwiLGFsaWdubWVudD1cIi4qXCIsY29sX25hbWU9XCJl bmFibGVkXCIsY29saGRyPVwiRW5iXCJcfSxce3dpZHRoPVwiLipcIixhbGln bm1lbnQ9XCIuKlwiLGNvbF9uYW1lPVwiYWRkclwiLGNvbGhkcj1cIkFkZHJl c3NcIlx9LFx7d2lkdGg9XCIuKlwiLGFsaWdubWVudD1cIi4qXCIsY29sX25h bWU9XCJ3aGF0XCIsY29saGRyPVwiV2hhdFwiXH1cXFxdLGJvZHk9XFxcW2Jr cHQ9XHtudW1iZXI9XCIzXCIsdHlwZT1cImRwcmludGZcIi4qZnVuYz1cImZv b1wiLGZpbGU9XCIuKm1pLWRwcmludGYuY1wiLGZ1bGxuYW1lPVwiLiptaS1k cHJpbnRmLmNcIixsaW5lPVwiLipcIi4qLGJrcHQ9XHtudW1iZXI9XCIuKlwi LHR5cGU9XCJkcHJpbnRmXCIuKmZ1bmM9XCJmb29cIixmaWxlPVwiLiptaS1k cHJpbnRmLmNcIixmdWxsbmFtZT1cIi4qbWktZHByaW50Zi5jXCIsbGluZT1c IiRkcF9sb2NhdGlvbjFcIi4qIiBcCisgICAgIm1pIGluZm8gZHByaW50ZiIK KworbWlfZ2RiX3Rlc3QgIi1icmVhay1pbnNlcnQgJGJwX2xvY2F0aW9uMSIg Ii4qIiAibWkgaW5zZXJ0IGJyZWFrcG9pbnQgYnBfbG9jYXRpb24xIgorCitw cm9jIG1pX2NvbnRpbnVlX2RwcmludGYge2FyZ3N9IHsKKyAgICB3aXRoX3Rl c3RfcHJlZml4ICRhcmdzIHsKKwltaV9ydW5fY21kCisJbWlfZ2RiX3Rlc3Qg ImNvbnRpbnVlIiAiLipBdCBmb28gZW50cnkuKmFyZz0xMjM0LCBnPTEyMzQu KiIgIm1pIDFzdCBkcHJpbnRmIgorCW1pX2dkYl90ZXN0ICJjb250aW51ZSIg Ii4qQXQgZm9vIGVudHJ5Liphcmc9MTIzNSwgZz0yMjIyLioiICJtaSAybmQg ZHByaW50ZiIKKyAgICB9Cit9CisKK21pX2NvbnRpbnVlX2RwcmludGYgImdk YiIKKworIyBUaGUgImNhbGwiIHN0eWxlIGRlcGVuZHMgb24gaGF2aW5nIEkv TyBmdW5jdGlvbnMgYXZhaWxhYmxlLCBzbyB0ZXN0LgorCitpZiAhW3Rhcmdl dF9pbmZvIGV4aXN0cyBnZGIsbm9pbmZlcmlvcmlvXSB7CisKKyAgICAjIE5v dyBzd2l0Y2ggc3R5bGVzIGFuZCByZXJ1bjsgaW4gdGhlIGFic2VuY2Ugb2Yg cmVkaXJlY3Rpb24gdGhlCisgICAgIyBvdXRwdXQgc2hvdWxkIGJlIHRoZSBz YW1lLgorCisgICAgbWlfZ2RiX3Rlc3QgInNldCBkcHJpbnRmLXN0eWxlIGNh bGwiICIuKiIgIm1pIHNldCBkcHJpbnRmIHN0eWxlIHRvIGNhbGwiCisgICAg bWlfY29udGludWVfZHByaW50ZiAiY2FsbCIKKworICAgIG1pX2dkYl90ZXN0 ICJzZXQgZHByaW50Zi1mdW5jdGlvbiBmcHJpbnRmIiAiLioiICJtaSBzZXQg ZHByaW50Zi1jaGFubmVsIHN0ZGVyciIKKyAgICBtaV9nZGJfdGVzdCAic2V0 IGRwcmludGYtY2hhbm5lbCBzdGRlcnIiICIuKiIgIm1pIHNldCBkcHJpbnRm IGNoYW5uZWwiCisgICAgbWlfY29udGludWVfZHByaW50ZiAiZnByaW50ZiIK K30KKworIyBUbyBtYWtlIHN1cmUgc2V0IGRwcmludGYtc3R5bGUgYWdlbnQg Z2V0IHJpZ2h0IG91dHB1dC4KK21pX2dkYl90ZXN0ICJwd2QiICIuKiIKKwor c2V0IHRhcmdldF9jYW5fZHByaW50ZiAwCitzZXQgbXNnICJzZXQgZHByaW50 ZiBzdHlsZSB0byBhZ2VudCIKK3NlbmRfZ2RiICJzZXQgZHByaW50Zi1zdHls ZSBhZ2VudFxuIgorZ2RiX2V4cGVjdCB7CisgICAgLXJlICJ3YXJuaW5nOiBU YXJnZXQgY2Fubm90IHJ1biBkcHJpbnRmIGNvbW1hbmRzLCBmYWxsaW5nIGJh Y2sgdG8gR0RCIHByaW50Zi4qJG1pX2dkYl9wcm9tcHQkIiB7CisJdW5zdXBw b3J0ZWQgIiRtc2ciCisgICAgfQorICAgIC1yZSAiLipkb25lLiokbWlfZ2Ri X3Byb21wdCQiIHsKKwlzZXQgdGFyZ2V0X2Nhbl9kcHJpbnRmIDEKKwlwYXNz ICIkbXNnIgorICAgIH0KKyAgICAtcmUgIi4qJG1pX2dkYl9wcm9tcHQkIiB7 CisJZmFpbCAiJG1zZyIKKyAgICB9CisgICAgdGltZW91dCB7CisJZmFpbCAi JG1zZyIKKyAgICB9Cit9CisKK2lmICR0YXJnZXRfY2FuX2RwcmludGYgewor ICAgIG1pX3J1bl9jbWQKKworICAgIG1pX2dkYl90ZXN0ICJjb250aW51ZSIg Ii4qYnJlYWtwb2ludC1oaXQuKmZ1bmM9XCJmb29cIi4qIiAibWkgMXN0IGRw cmludGYsIGFnZW50IgorCisgICAgbWlfZ2RiX3Rlc3QgImNvbnRpbnVlIiAi LipicmVha3BvaW50LWhpdC4qZnVuYz1cImZvb1wiLioiICJtaSAybmQgZHBy aW50ZiwgYWdlbnQiCisKKyAgICBtaV9nZGJfdGVzdCAiNi1icmVhay1pbmZv IiAiLiptb2RpZmllZC4qIiAibWkgaW5mbyBkcHJpbnRmIHNlY29uZCB0aW1l IgorfQorCittaV9nZGJfdGVzdCAic2V0IGRwcmludGYtc3R5bGUgZm9vYmFy IiAiLiplcnJvci4qIiAibWkgc2V0IGRwcmludGYgc3R5bGUgdG8gYW4gdW5y ZWNvZ25pemVkIHR5cGUiCg== --f46d0447878d62f7d604da2784cb--