From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 6638 invoked by alias); 18 Aug 2010 20:38:00 -0000 Received: (qmail 6602 invoked by uid 22791); 18 Aug 2010 20:37:57 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,TW_BJ,TW_CP,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.35) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Wed, 18 Aug 2010 20:37:49 +0000 Received: from wpaz1.hot.corp.google.com (wpaz1.hot.corp.google.com [172.24.198.65]) by smtp-out.google.com with ESMTP id o7IKbkOR024528 for ; Wed, 18 Aug 2010 13:37:46 -0700 Received: from vws7 (vws7.prod.google.com [10.241.21.135]) by wpaz1.hot.corp.google.com with ESMTP id o7IKbcXF022894 for ; Wed, 18 Aug 2010 13:37:45 -0700 Received: by vws7 with SMTP id 7so1265814vws.41 for ; Wed, 18 Aug 2010 13:37:38 -0700 (PDT) MIME-Version: 1.0 Received: by 10.220.59.10 with SMTP id j10mr474596vch.225.1282163857640; Wed, 18 Aug 2010 13:37:37 -0700 (PDT) Received: by 10.220.83.37 with HTTP; Wed, 18 Aug 2010 13:37:37 -0700 (PDT) In-Reply-To: References: <20100817003114.087EA84B8F@ruffy.mtv.corp.google.com> Date: Wed, 18 Aug 2010 20:38:00 -0000 Message-ID: Subject: Re: [patch] Handle 0 result from sscanf when parsing fp values. From: Doug Evans To: Andreas Schwab Cc: gdb-patches@sourceware.org Content-Type: multipart/mixed; boundary=00235445b896474f80048e1f09e1 X-System-Of-Record: true 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: 2010-08/txt/msg00315.txt.bz2 --00235445b896474f80048e1f09e1 Content-Type: text/plain; charset=ISO-8859-1 Content-length: 933 Here's my new patch. I plan to check this in tomorrow. 2010-08-18 Doug Evans PR exp/11926 * parser-defs.h (parse_float, parse_c_float): Declare. * parse.c (parse_float, parse_c_float): New function. * c-exp.y (parse_number): Call parse_c_float. * objc-exp.y (parse_number): Ditto. * p-exp.y (parse_number): Ditto. Use ANSI/ISO-style definition. * jv-exp.y (parse_number): Call parse_float, fix suffix handling. testsuite/ * gdb.base/printcmds.exp (test_float_accepted): New function. Move existing float tests there. Add tests for floats with suffixes. (test_float_rejected): New function. * gdb.java/jv-print.exp (test_float_accepted): New function. (test_float_rejected): New function. * gdb.objc/print.exp: New file. * gdb.pascal/print.exp: New file. * lib/objc.exp: New file. --00235445b896474f80048e1f09e1 Content-Type: text/plain; charset=US-ASCII; name="gdb-100818-hex-float-crash-2.patch.txt" Content-Disposition: attachment; filename="gdb-100818-hex-float-crash-2.patch.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gd0n65lv0 Content-length: 27528 MjAxMC0wOC0xOCAgRG91ZyBFdmFucyAgPGRqZUBnb29nbGUuY29tPgoKCVBS IGV4cC8xMTkyNgoJKiBwYXJzZXItZGVmcy5oIChwYXJzZV9mbG9hdCwgcGFy c2VfY19mbG9hdCk6IERlY2xhcmUuCgkqIHBhcnNlLmMgKHBhcnNlX2Zsb2F0 LCBwYXJzZV9jX2Zsb2F0KTogTmV3IGZ1bmN0aW9uLgoJKiBjLWV4cC55IChw YXJzZV9udW1iZXIpOiBDYWxsIHBhcnNlX2NfZmxvYXQuCgkqIG9iamMtZXhw LnkgKHBhcnNlX251bWJlcik6IERpdHRvLgoJKiBwLWV4cC55IChwYXJzZV9u dW1iZXIpOiBEaXR0by4gIFVzZSBBTlNJL0lTTy1zdHlsZSBkZWZpbml0aW9u LgoJKiBqdi1leHAueSAocGFyc2VfbnVtYmVyKTogQ2FsbCBwYXJzZV9mbG9h dCwgZml4IHN1ZmZpeCBoYW5kbGluZy4KCgl0ZXN0c3VpdGUvCgkqIGdkYi5i YXNlL3ByaW50Y21kcy5leHAgKHRlc3RfZmxvYXRfYWNjZXB0ZWQpOiBOZXcg ZnVuY3Rpb24uCglNb3ZlIGV4aXN0aW5nIGZsb2F0IHRlc3RzIHRoZXJlLiAg QWRkIHRlc3RzIGZvciBmbG9hdHMgd2l0aCBzdWZmaXhlcy4KCSh0ZXN0X2Zs b2F0X3JlamVjdGVkKTogTmV3IGZ1bmN0aW9uLgoJKiBnZGIuamF2YS9qdi1w cmludC5leHAgKHRlc3RfZmxvYXRfYWNjZXB0ZWQpOiBOZXcgZnVuY3Rpb24u CgkodGVzdF9mbG9hdF9yZWplY3RlZCk6IE5ldyBmdW5jdGlvbi4KCSogZ2Ri Lm9iamMvcHJpbnQuZXhwOiBOZXcgZmlsZS4KCSogZ2RiLnBhc2NhbC9wcmlu dC5leHA6IE5ldyBmaWxlLgoJKiBsaWIvb2JqYy5leHA6IE5ldyBmaWxlLgoK SW5kZXg6IGMtZXhwLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmls ZTogL2N2cy9zcmMvc3JjL2dkYi9jLWV4cC55LHYKcmV0cmlldmluZyByZXZp c2lvbiAxLjc2CmRpZmYgLXUgLXAgLXIxLjc2IGMtZXhwLnkKLS0tIGMtZXhw LnkJMjggSnVuIDIwMTAgMjA6MTg6MjYgLTAwMDAJMS43NgorKysgYy1leHAu eQkxOCBBdWcgMjAxMCAyMDoxNjoyNCAtMDAwMApAQCAtMTMyMywxMCArMTMy Myw4IEBAIHBhcnNlX251bWJlciAoY2hhciAqcCwgaW50IGxlbiwgaW50IHBh cnMKIAogICBpZiAocGFyc2VkX2Zsb2F0KQogICAgIHsKLSAgICAgIC8qIEl0 J3MgYSBmbG9hdCBzaW5jZSBpdCBjb250YWlucyBhIHBvaW50IG9yIGFuIGV4 cG9uZW50LiAgKi8KLSAgICAgIGNoYXIgKnM7Ci0gICAgICBpbnQgbnVtOwkv KiBudW1iZXIgb2YgdG9rZW5zIHNjYW5uZWQgYnkgc2NhbmYgKi8KLSAgICAg IGNoYXIgc2F2ZWRfY2hhcjsKKyAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeDsK KyAgICAgIGludCBzdWZmaXhfbGVuOwogCiAgICAgICAvKiBJZiBpdCBlbmRz IGF0ICJkZiIsICJkZCIgb3IgImRsIiwgdGFrZSBpdCBhcyB0eXBlIG9mIGRl Y2ltYWwgZmxvYXRpbmcKICAgICAgICAgIHBvaW50LiAgUmV0dXJuIERFQ0ZM T0FULiAgKi8KQEAgLTEzNjQsMzUgKzEzNjIsMTAgQEAgcGFyc2VfbnVtYmVy IChjaGFyICpwLCBpbnQgbGVuLCBpbnQgcGFycwogCSAgcmV0dXJuIERFQ0ZM T0FUOwogCX0KIAotICAgICAgcyA9IG1hbGxvYyAobGVuKTsKLSAgICAgIHNh dmVkX2NoYXIgPSBwW2xlbl07Ci0gICAgICBwW2xlbl0gPSAwOwkvKiBudWxs LXRlcm1pbmF0ZSB0aGUgdG9rZW4gKi8KLSAgICAgIG51bSA9IHNzY2FuZiAo cCwgIiUiIERPVUJMRVNUX1NDQU5fRk9STUFUICIlcyIsCi0JCSAgICAmcHV0 aXRoZXJlLT50eXBlZF92YWxfZmxvYXQuZHZhbCwgcyk7Ci0gICAgICBwW2xl bl0gPSBzYXZlZF9jaGFyOwkvKiByZXN0b3JlIHRoZSBpbnB1dCBzdHJlYW0g Ki8KLQotICAgICAgaWYgKG51bSA9PSAxKQotCXB1dGl0aGVyZS0+dHlwZWRf dmFsX2Zsb2F0LnR5cGUgPSAKLQkgIHBhcnNlX3R5cGUtPmJ1aWx0aW5fZG91 YmxlOwotCi0gICAgICBpZiAobnVtID09IDIgKQotCXsKLQkgIC8qIFNlZSBp ZiBpdCBoYXMgYW55IGZsb2F0IHN1ZmZpeDogJ2YnIGZvciBmbG9hdCwgJ2wn IGZvciBsb25nIAotCSAgICAgZG91YmxlLiAgKi8KLQkgIGlmICghc3RyY2Fz ZWNtcCAocywgImYiKSkKLQkgICAgcHV0aXRoZXJlLT50eXBlZF92YWxfZmxv YXQudHlwZSA9IAotCSAgICAgIHBhcnNlX3R5cGUtPmJ1aWx0aW5fZmxvYXQ7 Ci0JICBlbHNlIGlmICghc3RyY2FzZWNtcCAocywgImwiKSkKLQkgICAgcHV0 aXRoZXJlLT50eXBlZF92YWxfZmxvYXQudHlwZSA9IAotCSAgICAgIHBhcnNl X3R5cGUtPmJ1aWx0aW5fbG9uZ19kb3VibGU7Ci0JICBlbHNlCi0JICAgIHsK LQkgICAgICBmcmVlIChzKTsKLQkgICAgICByZXR1cm4gRVJST1I7Ci0JICAg IH0KLQl9Ci0KLSAgICAgIGZyZWUgKHMpOworICAgICAgaWYgKCEgcGFyc2Vf Y19mbG9hdCAocGFyc2VfZ2RiYXJjaCwgcCwgbGVuLAorCQkJICAgJnB1dGl0 aGVyZS0+dHlwZWRfdmFsX2Zsb2F0LmR2YWwsCisJCQkgICAmcHV0aXRoZXJl LT50eXBlZF92YWxfZmxvYXQudHlwZSkpCisJcmV0dXJuIEVSUk9SOwogICAg ICAgcmV0dXJuIEZMT0FUOwogICAgIH0KIApJbmRleDoganYtZXhwLnkKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dk Yi9qdi1leHAueSx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zOQpkaWZmIC11 IC1wIC1yMS4zOSBqdi1leHAueQotLS0ganYtZXhwLnkJNiBNYXkgMjAxMCAw MDowODo0NCAtMDAwMAkxLjM5CisrKyBqdi1leHAueQkxOCBBdWcgMjAxMCAy MDoxNjoyNSAtMDAwMApAQCAtNzAzLDI1ICs3MDMsMjggQEAgcGFyc2VfbnVt YmVyIChjaGFyICpwLCBpbnQgbGVuLCBpbnQgcGFycwogCiAgIGlmIChwYXJz ZWRfZmxvYXQpCiAgICAgewotICAgICAgLyogSXQncyBhIGZsb2F0IHNpbmNl IGl0IGNvbnRhaW5zIGEgcG9pbnQgb3IgYW4gZXhwb25lbnQuICAqLwotICAg ICAgY2hhciBjOwotICAgICAgaW50IG51bSA9IDA7CS8qIG51bWJlciBvZiB0 b2tlbnMgc2Nhbm5lZCBieSBzY2FuZiAqLwotICAgICAgY2hhciBzYXZlZF9j aGFyID0gcFtsZW5dOwotCi0gICAgICBwW2xlbl0gPSAwOwkvKiBudWxsLXRl cm1pbmF0ZSB0aGUgdG9rZW4gKi8KLSAgICAgIG51bSA9IHNzY2FuZiAocCwg IiUiIERPVUJMRVNUX1NDQU5fRk9STUFUICIlYyIsCi0JCSAgICAmcHV0aXRo ZXJlLT50eXBlZF92YWxfZmxvYXQuZHZhbCwgJmMpOwotICAgICAgcFtsZW5d ID0gc2F2ZWRfY2hhcjsJLyogcmVzdG9yZSB0aGUgaW5wdXQgc3RyZWFtICov Ci0gICAgICBpZiAobnVtICE9IDEpIAkJLyogY2hlY2sgc2NhbmYgZm91bmQg T05MWSBhIGZsb2F0IC4uLiAqLworICAgICAgY29uc3QgY2hhciAqc3VmZml4 OworICAgICAgaW50IHN1ZmZpeF9sZW47CisKKyAgICAgIGlmICghIHBhcnNl X2Zsb2F0IChwLCBsZW4sICZwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5k dmFsLCAmc3VmZml4KSkKIAlyZXR1cm4gRVJST1I7Ci0gICAgICAvKiBTZWUg aWYgaXQgaGFzIGBmJyBvciBgZCcgc3VmZml4IChmbG9hdCBvciBkb3VibGUp LiAgKi8KIAotICAgICAgYyA9IHRvbG93ZXIgKHBbbGVuIC0gMV0pOworICAg ICAgc3VmZml4X2xlbiA9IHAgKyBsZW4gLSBzdWZmaXg7CiAKLSAgICAgIGlm IChjID09ICdmJyB8fCBjID09ICdGJykKLQlwdXRpdGhlcmUtPnR5cGVkX3Zh bF9mbG9hdC50eXBlID0gcGFyc2VfdHlwZS0+YnVpbHRpbl9mbG9hdDsKLSAg ICAgIGVsc2UgaWYgKGlzZGlnaXQgKGMpIHx8IGMgPT0gJy4nIHx8IGMgPT0g J2QnIHx8IGMgPT0gJ0QnKQorICAgICAgaWYgKHN1ZmZpeF9sZW4gPT0gMCkK IAlwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC50eXBlID0gcGFyc2VfdHlw ZS0+YnVpbHRpbl9kb3VibGU7CisgICAgICBlbHNlIGlmIChzdWZmaXhfbGVu ID09IDEpCisJeworCSAgLyogU2VlIGlmIGl0IGhhcyBgZicgb3IgYGQnIHN1 ZmZpeCAoZmxvYXQgb3IgZG91YmxlKS4gICovCisJICBpZiAodG9sb3dlciAo KnN1ZmZpeCkgPT0gJ2YnKQorCSAgICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9m bG9hdC50eXBlID0KKwkgICAgICBwYXJzZV90eXBlLT5idWlsdGluX2Zsb2F0 OworCSAgZWxzZSBpZiAodG9sb3dlciAoKnN1ZmZpeCkgPT0gJ2QnKQorCSAg ICBwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC50eXBlID0KKwkgICAgICBw YXJzZV90eXBlLT5idWlsdGluX2RvdWJsZTsKKwkgIGVsc2UKKwkgICAgcmV0 dXJuIEVSUk9SOworCX0KICAgICAgIGVsc2UKIAlyZXR1cm4gRVJST1I7CiAK SW5kZXg6IG9iamMtZXhwLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1Mg ZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9vYmpjLWV4cC55LHYKcmV0cmlldmlu ZyByZXZpc2lvbiAxLjM4CmRpZmYgLXUgLXAgLXIxLjM4IG9iamMtZXhwLnkK LS0tIG9iamMtZXhwLnkJNSBNYXIgMjAxMCAyMDoxODoxNCAtMDAwMAkxLjM4 CisrKyBvYmpjLWV4cC55CTE4IEF1ZyAyMDEwIDIwOjE2OjI1IC0wMDAwCkBA IC0xMDEyLDI2ICsxMDEyLDEwIEBAIHBhcnNlX251bWJlciAocCwgbGVuLCBw YXJzZWRfZmxvYXQsIHB1dGkKIAogICBpZiAocGFyc2VkX2Zsb2F0KQogICAg IHsKLSAgICAgIGNoYXIgYzsKLQotICAgICAgLyogSXQncyBhIGZsb2F0IHNp bmNlIGl0IGNvbnRhaW5zIGEgcG9pbnQgb3IgYW4gZXhwb25lbnQuICAqLwot Ci0gICAgICBzc2NhbmYgKHAsICIlIiBET1VCTEVTVF9TQ0FOX0ZPUk1BVCAi JWMiLAotCSAgICAgICZwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC5kdmFs LCAmYyk7Ci0KLSAgICAgIC8qIFNlZSBpZiBpdCBoYXMgYGYnIG9yIGBsJyBz dWZmaXggKGZsb2F0IG9yIGxvbmcgZG91YmxlKS4gICovCi0KLSAgICAgIGMg PSB0b2xvd2VyIChwW2xlbiAtIDFdKTsKLQotICAgICAgaWYgKGMgPT0gJ2Yn KQotCXB1dGl0aGVyZS0+dHlwZWRfdmFsX2Zsb2F0LnR5cGUgPSBwYXJzZV90 eXBlLT5idWlsdGluX2Zsb2F0OwotICAgICAgZWxzZSBpZiAoYyA9PSAnbCcp Ci0JcHV0aXRoZXJlLT50eXBlZF92YWxfZmxvYXQudHlwZSA9IHBhcnNlX3R5 cGUtPmJ1aWx0aW5fbG9uZ19kb3VibGU7Ci0gICAgICBlbHNlIGlmIChpc2Rp Z2l0IChjKSB8fCBjID09ICcuJykKLQlwdXRpdGhlcmUtPnR5cGVkX3ZhbF9m bG9hdC50eXBlID0gcGFyc2VfdHlwZS0+YnVpbHRpbl9kb3VibGU7Ci0gICAg ICBlbHNlCisgICAgICBpZiAoISBwYXJzZV9jX2Zsb2F0IChwYXJzZV9nZGJh cmNoLCBwLCBsZW4sCisJCQkgICAmcHV0aXRoZXJlLT50eXBlZF92YWxfZmxv YXQuZHZhbCwKKwkJCSAgICZwdXRpdGhlcmUtPnR5cGVkX3ZhbF9mbG9hdC50 eXBlKSkKIAlyZXR1cm4gRVJST1I7Ci0KICAgICAgIHJldHVybiBGTE9BVDsK ICAgICB9CiAKSW5kZXg6IHAtZXhwLnkKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9wLWV4cC55LHYKcmV0cmll dmluZyByZXZpc2lvbiAxLjUwCmRpZmYgLXUgLXAgLXIxLjUwIHAtZXhwLnkK LS0tIHAtZXhwLnkJOCBNYXkgMjAxMCAwOToxODowMiAtMDAwMAkxLjUwCisr KyBwLWV4cC55CTE4IEF1ZyAyMDEwIDIwOjE2OjI1IC0wMDAwCkBAIC03OTEs MTEgKzc5MSw3IEBAIG5hbWVfbm90X3R5cGVuYW1lIDoJTkFNRQogLyoqKiBO ZWVkcyBzb21lIGVycm9yIGNoZWNraW5nIGZvciB0aGUgZmxvYXQgY2FzZSAq KiovCiAKIHN0YXRpYyBpbnQKLXBhcnNlX251bWJlciAocCwgbGVuLCBwYXJz ZWRfZmxvYXQsIHB1dGl0aGVyZSkKLSAgICAgY2hhciAqcDsKLSAgICAgaW50 IGxlbjsKLSAgICAgaW50IHBhcnNlZF9mbG9hdDsKLSAgICAgWVlTVFlQRSAq cHV0aXRoZXJlOworcGFyc2VfbnVtYmVyIChjaGFyICpwLCBpbnQgbGVuLCBp bnQgcGFyc2VkX2Zsb2F0LCBZWVNUWVBFICpwdXRpdGhlcmUpCiB7CiAgIC8q IEZJWE1FOiBTaG91bGRuJ3QgdGhlc2UgYmUgdW5zaWduZWQ/ICBXZSBkb24n dCBkZWFsIHdpdGggbmVnYXRpdmUgdmFsdWVzCiAgICAgIGhlcmUsIGFuZCB3 ZSBkbyBraW5kIG9mIHNpbGx5IHRoaW5ncyBsaWtlIGNhc3QgdG8gdW5zaWdu ZWQuICAqLwpAQCAtODIwLDMwICs4MTYsMTAgQEAgcGFyc2VfbnVtYmVyIChw LCBsZW4sIHBhcnNlZF9mbG9hdCwgcHV0aQogCiAgIGlmIChwYXJzZWRfZmxv YXQpCiAgICAgewotICAgICAgLyogSXQncyBhIGZsb2F0IHNpbmNlIGl0IGNv bnRhaW5zIGEgcG9pbnQgb3IgYW4gZXhwb25lbnQuICAqLwotICAgICAgY2hh ciBjOwotICAgICAgaW50IG51bSA9IDA7CS8qIG51bWJlciBvZiB0b2tlbnMg c2Nhbm5lZCBieSBzY2FuZiAqLwotICAgICAgY2hhciBzYXZlZF9jaGFyID0g cFtsZW5dOwotCi0gICAgICBwW2xlbl0gPSAwOwkvKiBudWxsLXRlcm1pbmF0 ZSB0aGUgdG9rZW4gKi8KLSAgICAgIG51bSA9IHNzY2FuZiAocCwgIiUiIERP VUJMRVNUX1NDQU5fRk9STUFUICIlYyIsCi0JCSAgICAmcHV0aXRoZXJlLT50 eXBlZF92YWxfZmxvYXQuZHZhbCwgJmMpOwotICAgICAgcFtsZW5dID0gc2F2 ZWRfY2hhcjsJLyogcmVzdG9yZSB0aGUgaW5wdXQgc3RyZWFtICovCi0gICAg ICBpZiAobnVtICE9IDEpIAkJLyogY2hlY2sgc2NhbmYgZm91bmQgT05MWSBh IGZsb2F0IC4uLiAqLworICAgICAgaWYgKCEgcGFyc2VfY19mbG9hdCAocGFy c2VfZ2RiYXJjaCwgcCwgbGVuLAorCQkJICAgJnB1dGl0aGVyZS0+dHlwZWRf dmFsX2Zsb2F0LmR2YWwsCisJCQkgICAmcHV0aXRoZXJlLT50eXBlZF92YWxf ZmxvYXQudHlwZSkpCiAJcmV0dXJuIEVSUk9SOwotICAgICAgLyogU2VlIGlm IGl0IGhhcyBgZicgb3IgYGwnIHN1ZmZpeCAoZmxvYXQgb3IgbG9uZyBkb3Vi bGUpLiAgKi8KLQotICAgICAgYyA9IHRvbG93ZXIgKHBbbGVuIC0gMV0pOwot Ci0gICAgICBpZiAoYyA9PSAnZicpCi0JcHV0aXRoZXJlLT50eXBlZF92YWxf ZmxvYXQudHlwZSA9IHBhcnNlX3R5cGUtPmJ1aWx0aW5fZmxvYXQ7Ci0gICAg ICBlbHNlIGlmIChjID09ICdsJykKLQlwdXRpdGhlcmUtPnR5cGVkX3ZhbF9m bG9hdC50eXBlID0gcGFyc2VfdHlwZS0+YnVpbHRpbl9sb25nX2RvdWJsZTsK LSAgICAgIGVsc2UgaWYgKGlzZGlnaXQgKGMpIHx8IGMgPT0gJy4nKQotCXB1 dGl0aGVyZS0+dHlwZWRfdmFsX2Zsb2F0LnR5cGUgPSBwYXJzZV90eXBlLT5i dWlsdGluX2RvdWJsZTsKLSAgICAgIGVsc2UKLQlyZXR1cm4gRVJST1I7Ci0K ICAgICAgIHJldHVybiBGTE9BVDsKICAgICB9CiAKSW5kZXg6IHBhcnNlLmMK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3Jj L2dkYi9wYXJzZS5jLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEwMwpkaWZm IC11IC1wIC1yMS4xMDMgcGFyc2UuYwotLS0gcGFyc2UuYwkxOCBBdWcgMjAx MCAxOTowMjozMiAtMDAwMAkxLjEwMworKysgcGFyc2UuYwkxOCBBdWcgMjAx MCAyMDoxNjoyNSAtMDAwMApAQCAtMTAzOCw4ICsxMDM4LDYgQEAgcHJlZml4 aWZ5X3N1YmV4cCAoc3RydWN0IGV4cHJlc3Npb24gKmluZQogICByZXR1cm4g cmVzdWx0OwogfQogDAotLyogVGhpcyBwYWdlIGNvbnRhaW5zIHRoZSB0d28g ZW50cnkgcG9pbnRzIHRvIHRoaXMgZmlsZS4gICovCi0KIC8qIFJlYWQgYW4g ZXhwcmVzc2lvbiBmcm9tIHRoZSBzdHJpbmcgKlNUUklOR1BUUiBwb2ludHMg dG8sCiAgICBwYXJzZSBpdCwgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gYSAg c3RydWN0IGV4cHJlc3Npb24gIHRoYXQgd2UgbWFsbG9jLgogICAgVXNlIGJs b2NrIEJMT0NLIGFzIHRoZSBsZXhpY2FsIGNvbnRleHQgZm9yIHZhcmlhYmxl IG5hbWVzOwpAQCAtMTI1Miw2ICsxMjUwLDczIEBAIHZvaWQKIG51bGxfcG9z dF9wYXJzZXIgKHN0cnVjdCBleHByZXNzaW9uICoqZXhwLCBpbnQgdm9pZF9j b250ZXh0X3ApCiB7CiB9CisKKy8qIFBhcnNlIGZsb2F0aW5nIHBvaW50IHZh bHVlIFAgb2YgbGVuZ3RoIExFTi4KKyAgIFJldHVybiAwIChmYWxzZSkgaWYg aW52YWxpZCwgMSAodHJ1ZSkgaWYgdmFsaWQuCisgICBUaGUgc3VjY2Vzc2Z1 bGx5IHBhcnNlZCBudW1iZXIgaXMgc3RvcmVkIGluIEQuCisgICAqU1VGRklY IHBvaW50cyB0byB0aGUgc3VmZml4IG9mIHRoZSBudW1iZXIgaW4gUC4KKwor ICAgTk9URTogVGhpcyBhY2NlcHRzIHRoZSBmbG9hdGluZyBwb2ludCBzeW50 YXggdGhhdCBzc2NhbmYgYWNjZXB0cy4gICovCisKK2ludAorcGFyc2VfZmxv YXQgKGNvbnN0IGNoYXIgKnAsIGludCBsZW4sIERPVUJMRVNUICpkLCBjb25z dCBjaGFyICoqc3VmZml4KQoreworICBjaGFyICpjb3B5OworICBjaGFyICpz OworICBpbnQgbiwgbnVtOworCisgIGNvcHkgPSB4bWFsbG9jIChsZW4gKyAx KTsKKyAgbWVtY3B5IChjb3B5LCBwLCBsZW4pOworICBjb3B5W2xlbl0gPSAw OworCisgIG51bSA9IHNzY2FuZiAoY29weSwgIiUiIERPVUJMRVNUX1NDQU5f Rk9STUFUICIlbiIsIGQsICZuKTsKKyAgeGZyZWUgKGNvcHkpOworCisgIC8q IFRoZSBzc2NhbmYgbWFuIHBhZ2Ugc3VnZ2VzdHMgbm90IG1ha2luZyBhbnkg YXNzdW1wdGlvbnMgb24gdGhlIGVmZmVjdAorICAgICBvZiAlbiBvbiB0aGUg cmVzdWx0LCBzbyB3ZSBkb24ndC4KKyAgICAgVGhhdCBpcyB3aHkgd2Ugc2lt cGx5IHRlc3QgbnVtID09IDAuICAqLworICBpZiAobnVtID09IDApCisgICAg cmV0dXJuIDA7CisKKyAgKnN1ZmZpeCA9IHAgKyBuOworICByZXR1cm4gMTsK K30KKworLyogUGFyc2UgZmxvYXRpbmcgcG9pbnQgdmFsdWUgUCBvZiBsZW5n dGggTEVOLCB1c2luZyB0aGUgQyBzeW50YXggZm9yIGZsb2F0cy4KKyAgIFJl dHVybiAwIChmYWxzZSkgaWYgaW52YWxpZCwgMSAodHJ1ZSkgaWYgdmFsaWQu CisgICBUaGUgc3VjY2Vzc2Z1bGx5IHBhcnNlZCBudW1iZXIgaXMgc3RvcmVk IGluICpELgorICAgSXRzIHR5cGUgaXMgdGFrZW4gZnJvbSBidWlsdGluX3R5 cGUgKGdkYmFyY2gpIGFuZCBpcyBzdG9yZWQgaW4gKlQuICAqLworCitpbnQK K3BhcnNlX2NfZmxvYXQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25z dCBjaGFyICpwLCBpbnQgbGVuLAorCSAgICAgICBET1VCTEVTVCAqZCwgc3Ry dWN0IHR5cGUgKip0KQoreworICBjb25zdCBjaGFyICpzdWZmaXg7CisgIGlu dCBzdWZmaXhfbGVuOworICBjb25zdCBzdHJ1Y3QgYnVpbHRpbl90eXBlICpi dWlsdGluX3R5cGVzID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKTsKKworICBp ZiAoISBwYXJzZV9mbG9hdCAocCwgbGVuLCBkLCAmc3VmZml4KSkKKyAgICBy ZXR1cm4gMDsKKworICBzdWZmaXhfbGVuID0gcCArIGxlbiAtIHN1ZmZpeDsK KworICBpZiAoc3VmZml4X2xlbiA9PSAwKQorICAgICp0ID0gYnVpbHRpbl90 eXBlcy0+YnVpbHRpbl9kb3VibGU7CisgIGVsc2UgaWYgKHN1ZmZpeF9sZW4g PT0gMSkKKyAgICB7CisgICAgICAvKiBIYW5kbGUgc3VmZml4ZXM6ICdmJyBm b3IgZmxvYXQsICdsJyBmb3IgbG9uZyBkb3VibGUuICAqLworICAgICAgaWYg KHRvbG93ZXIgKCpzdWZmaXgpID09ICdmJykKKwkqdCA9IGJ1aWx0aW5fdHlw ZXMtPmJ1aWx0aW5fZmxvYXQ7CisgICAgICBlbHNlIGlmICh0b2xvd2VyICgq c3VmZml4KSA9PSAnbCcpCisJKnQgPSBidWlsdGluX3R5cGVzLT5idWlsdGlu X2xvbmdfZG91YmxlOworICAgICAgZWxzZQorCXJldHVybiAwOworICAgIH0K KyAgZWxzZQorICAgIHJldHVybiAwOworCisgIHJldHVybiAxOworfQogDAog LyogU3R1ZmYgZm9yIG1haW50YWluaW5nIGEgc3RhY2sgb2YgdHlwZXMuICBD dXJyZW50bHkganVzdCB1c2VkIGJ5IEMsIGJ1dAogICAgcHJvYmFibHkgdXNl ZnVsIGZvciBhbnkgbGFuZ3VhZ2Ugd2hpY2ggZGVjbGFyZXMgaXRzIHR5cGVz ICJiYWNrd2FyZHMiLiAgKi8KSW5kZXg6IHBhcnNlci1kZWZzLmgKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9zcmMvc3JjL2dkYi9w YXJzZXItZGVmcy5oLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjM2CmRpZmYg LXUgLXAgLXIxLjM2IHBhcnNlci1kZWZzLmgKLS0tIHBhcnNlci1kZWZzLmgJ NCBKdW4gMjAxMCAyMTozOTo0NyAtMDAwMAkxLjM2CisrKyBwYXJzZXItZGVm cy5oCTE4IEF1ZyAyMDEwIDIwOjE2OjI1IC0wMDAwCkBAIC0yMDQsNiArMjA0 LDEyIEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqZm9sbG93X3R5cGVzIChzdHJ1 Y3QKIAogZXh0ZXJuIHZvaWQgbnVsbF9wb3N0X3BhcnNlciAoc3RydWN0IGV4 cHJlc3Npb24gKiosIGludCk7CiAKK2V4dGVybiBpbnQgcGFyc2VfZmxvYXQg KGNvbnN0IGNoYXIgKnAsIGludCBsZW4sIERPVUJMRVNUICpkLAorCQkJY29u c3QgY2hhciAqKnN1ZmZpeCk7CisKK2V4dGVybiBpbnQgcGFyc2VfY19mbG9h dCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnAsIGlu dCBsZW4sCisJCQkgIERPVUJMRVNUICpkLCBzdHJ1Y3QgdHlwZSAqKnQpOwor CiAvKiBEdXJpbmcgcGFyc2luZyBvZiBhIEMgZXhwcmVzc2lvbiwgdGhlIHBv aW50ZXIgdG8gdGhlIG5leHQgY2hhcmFjdGVyCiAgICBpcyBpbiB0aGlzIHZh cmlhYmxlLiAgKi8KIApJbmRleDogdGVzdHN1aXRlL2dkYi5iYXNlL3ByaW50 Y21kcy5leHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2 cy9zcmMvc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnRjbWRzLmV4 cCx2CnJldHJpZXZpbmcgcmV2aXNpb24gMS4zNgpkaWZmIC11IC1wIC1yMS4z NiBwcmludGNtZHMuZXhwCi0tLSB0ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnRj bWRzLmV4cAkxOCBBdWcgMjAxMCAxNjozNzoyMSAtMDAwMAkxLjM2CisrKyB0 ZXN0c3VpdGUvZ2RiLmJhc2UvcHJpbnRjbWRzLmV4cAkxOCBBdWcgMjAxMCAy MDoxNjoyNSAtMDAwMApAQCAtMTAyLDE3ICsxMDIsNiBAQCBwcm9jIHRlc3Rf aW50ZWdlcl9saXRlcmFsc19yZWplY3RlZCB7fSB7CiAKICAgICB0ZXN0X3By aW50X3JlamVjdCAicCBERUFEQkVFRiIKIAotICAgICMgR2RiIGN1cnJlbnRs eSBmYWlscyB0aGlzIHRlc3QgZm9yIGFsbCBjb25maWd1cmF0aW9ucy4gIFRo ZSBDCi0gICAgIyBsZXhlciB0aGlua3MgdGhhdCAxMjNERUFEQkVFRiBpcyBh IGZsb2F0aW5nIHBvaW50IG51bWJlciwgYnV0Ci0gICAgIyB0aGVuIGZhaWxz IHRvIG5vdGljZSB0aGF0IGF0b2YoKSBvbmx5IGVhdHMgdGhlIDEyMyBwYXJ0 LgotICAgICMgRklYTUU6ICBUaGlzIHNob3VsZCBiZSBwdXQgaW50byBQUk1T LgotICAgICMgRml4ZWQsIDQvMjUvOTcsIGJ5IEJvYiBNYW5zb24uCi0KLSAg ICB0ZXN0X3ByaW50X3JlamVjdCAicCAxMjNERUFEQkVFRiIKLSAgICB0ZXN0 X3ByaW50X3JlamVjdCAicCAxMjNmb29iYXIuYmF6Zm9vMyIKLSAgICB0ZXN0 X3ByaW50X3JlamVjdCAicCAxMjNFRUVFRUVFRUVFRUVFRUVFRTMzMzMzazMz MyIKLSAgICBnZGJfdGVzdCAicCAxMjMuNCs1Ni43IiAiMTgwLigwOTlcWzAt OV0qfDEwMFxbMC05XF0qKSIgImNoZWNrIGZvciBmbG9hdGluZyBhZGRpdGlv biIKLQogICAgICMgVGVzdCB2YXJpb3VzIG9jdGFsIHZhbHVlcy4KIAogICAg IHRlc3RfcHJpbnRfcmVqZWN0ICJwIDA5IiAKQEAgLTEyOSw2ICsxMTgsMzYg QEAgcHJvYyB0ZXN0X2ludGVnZXJfbGl0ZXJhbHNfcmVqZWN0ZWQge30gewog ICAgIHRlc3RfcHJpbnRfcmVqZWN0ICJwIDBiMTIiIAogfQogCitwcm9jIHRl c3RfZmxvYXRfYWNjZXB0ZWQge30geworICAgICMgVGhpcyB0ZXN0IGlzIHVz ZWZ1bCB0byBjYXRjaCBzdWNjZXNzZnVsIHBhcnNpbmcgb2YgdGhlIGZpcnN0 IGZwIHZhbHVlLgorICAgIGdkYl90ZXN0ICJwIDEyMy40KzU2LjciICIgPSAx ODAuKDA5OVxbMC05XSp8MTAwXFswLTlcXSopIiAiY2hlY2sgZm9yIGZsb2F0 aW5nIGFkZGl0aW9uIgorCisgICAgIyBUZXN0IGFsbCB0aGUgc3VmZml4ZXMg KGluY2x1ZGluZyBubyBzdWZmaXgpLgorICAgIGdkYl90ZXN0ICJwIDEuIiAi ID0gMSIKKyAgICBnZGJfdGVzdCAicCAxLjUiICIgPSAxLjUiCisgICAgZ2Ri X3Rlc3QgInAgMS5mIiAiID0gMSIKKyAgICBnZGJfdGVzdCAicCAxLjVmIiAi ID0gMS41IgorICAgIGdkYl90ZXN0ICJwIDEubCIgIiA9IDEiCisgICAgZ2Ri X3Rlc3QgInAgMS41bCIgIiA9IDEuNSIKK30KKworcHJvYyB0ZXN0X2Zsb2F0 X3JlamVjdGVkIHt9IHsKKyAgICAjIEdkYiB1c2UgdG8gZmFpbCB0aGlzIHRl c3QgZm9yIGFsbCBjb25maWd1cmF0aW9ucy4gIFRoZSBDCisgICAgIyBsZXhl ciB0aG91Z2h0IHRoYXQgMTIzREVBREJFRUYgd2FzIGEgZmxvYXRpbmcgcG9p bnQgbnVtYmVyLCBidXQKKyAgICAjIHRoZW4gZmFpbGVkIHRvIG5vdGljZSB0 aGF0IGF0b2YoKSBvbmx5IGVhdHMgdGhlIDEyMyBwYXJ0LgorICAgICMgRml4 ZWQsIDQvMjUvOTcsIGJ5IEJvYiBNYW5zb24uCisgICAgdGVzdF9wcmludF9y ZWplY3QgInAgMTIzREVBREJFRUYiCisKKyAgICB0ZXN0X3ByaW50X3JlamVj dCAicCAxMjNmb29iYXIuYmF6Zm9vMyIKKyAgICB0ZXN0X3ByaW50X3JlamVj dCAicCAxMjNFRUVFRUVFRUVFRUVFRUVFRTMzMzMzazMzMyIKKyAgICB0ZXN0 X3ByaW50X3JlamVjdCAicCAweDEuMSIKKworICAgICMgVGVzdCBiYWQgc3Vm Zml4ZXMuCisgICAgdGVzdF9wcmludF9yZWplY3QgInAgMS4xeCIKKyAgICB0 ZXN0X3ByaW50X3JlamVjdCAicCAxLjFmZiIKKyAgICB0ZXN0X3ByaW50X3Jl amVjdCAicCAxLjFsbCIKK30KKwogcHJvYyB0ZXN0X3ByaW50X2FsbF9jaGFy cyB7fSB7CiAgICAgZ2xvYmFsIGdkYl9wcm9tcHQKIApAQCAtNzgxLDYgKzgw MCw4IEBAIGlmICFbcnVudG9fbWFpbl0gdGhlbiB7CiAKIHRlc3RfaW50ZWdl cl9saXRlcmFsc19hY2NlcHRlZAogdGVzdF9pbnRlZ2VyX2xpdGVyYWxzX3Jl amVjdGVkCit0ZXN0X2Zsb2F0X2FjY2VwdGVkCit0ZXN0X2Zsb2F0X3JlamVj dGVkCiB0ZXN0X2NoYXJhY3Rlcl9saXRlcmFsc19hY2NlcHRlZAogdGVzdF9w cmludF9hbGxfY2hhcnMKIHRlc3RfcHJpbnRfcmVwZWF0c18xMApJbmRleDog dGVzdHN1aXRlL2dkYi5qYXZhL2p2LXByaW50LmV4cAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL3Rlc3RzdWl0 ZS9nZGIuamF2YS9qdi1wcmludC5leHAsdgpyZXRyaWV2aW5nIHJldmlzaW9u IDEuMTQKZGlmZiAtdSAtcCAtcjEuMTQganYtcHJpbnQuZXhwCi0tLSB0ZXN0 c3VpdGUvZ2RiLmphdmEvanYtcHJpbnQuZXhwCTE4IEF1ZyAyMDEwIDE2OjM3 OjIxIC0wMDAwCTEuMTQKKysrIHRlc3RzdWl0ZS9nZGIuamF2YS9qdi1wcmlu dC5leHAJMTggQXVnIDIwMTAgMjA6MTY6MjUgLTAwMDAKQEAgLTk3LDYgKzk3 LDI4IEBAIHByb2MgdGVzdF9pbnRlZ2VyX2xpdGVyYWxzX3JlamVjdGVkIHt9 IHsKICAgICB0ZXN0X3ByaW50X3JlamVjdCAicCAweEFHIiAKIH0KIAorcHJv YyB0ZXN0X2Zsb2F0X2FjY2VwdGVkIHt9IHsKKyAgICAjIFRlc3QgcGFyc2lu ZyBvZiBmcCB2YWx1ZSB3aXRoIGxlZ2l0IHRleHQgZm9sbG93aW5nLgorICAg IGdkYl90ZXN0ICJwIDEyMzQuNSsxIiAiID0gMTIzNS41IiAiY2hlY2sgZnAg KyB0ZXh0IgorCisgICAgIyBUZXN0IGFsbCB0aGUgc3VmZml4ZXMgKGluY2x1 ZGluZyBubyBzdWZmaXgpLgorICAgIGdkYl90ZXN0ICJwIDEuIiAiID0gMSIK KyAgICBnZGJfdGVzdCAicCAxLjUiICIgPSAxLjUiCisgICAgZ2RiX3Rlc3Qg InAgMS5mIiAiID0gMSIKKyAgICBnZGJfdGVzdCAicCAxLjVmIiAiID0gMS41 IgorICAgIGdkYl90ZXN0ICJwIDEuZCIgIiA9IDEiCisgICAgZ2RiX3Rlc3Qg InAgMS41ZCIgIiA9IDEuNSIKK30KKworcHJvYyB0ZXN0X2Zsb2F0X3JlamVj dGVkIHt9IHsKKyAgICAjIFRlc3QgaW52YWxpZCBmcCB2YWx1ZXMuCisgICAg dGVzdF9wcmludF9yZWplY3QgInAgMHgxLjEiCisKKyAgICAjIFRlc3QgYmFk IHN1ZmZpeGVzLgorICAgIHRlc3RfcHJpbnRfcmVqZWN0ICJwIDEuMXgiCisg ICAgdGVzdF9wcmludF9yZWplY3QgInAgMS4xZmYiCisgICAgdGVzdF9wcmlu dF9yZWplY3QgInAgMS4xZGQiCit9CiAKIAogIyBTdGFydCB3aXRoIGEgZnJl c2ggZ2RiLgpAQCAtMTE3LDYgKzEzOSw4IEBAIGlmIFtzZXRfbGFuZ19qYXZh XSB0aGVuIHsKICAgICB0ZXN0X2ludGVnZXJfbGl0ZXJhbHNfYWNjZXB0ZWQK ICAgICB0ZXN0X2NoYXJhY3Rlcl9saXRlcmFsc19hY2NlcHRlZAogICAgIHRl c3RfaW50ZWdlcl9saXRlcmFsc19yZWplY3RlZAorICAgIHRlc3RfZmxvYXRf YWNjZXB0ZWQKKyAgICB0ZXN0X2Zsb2F0X3JlamVjdGVkCiB9IGVsc2Ugewog ICAgIHdhcm5pbmcgIkphdmEgcHJpbnQgY29tbWFuZCB0ZXN0cyBzdXBwcmVz c2VkIgogfQpJbmRleDogdGVzdHN1aXRlL2dkYi5vYmpjL3ByaW50LmV4cAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiB0ZXN0c3VpdGUvZ2Ri Lm9iamMvcHJpbnQuZXhwCmRpZmYgLU4gdGVzdHN1aXRlL2dkYi5vYmpjL3By aW50LmV4cAotLS0gL2Rldi9udWxsCTEgSmFuIDE5NzAgMDA6MDA6MDAgLTAw MDAKKysrIHRlc3RzdWl0ZS9nZGIub2JqYy9wcmludC5leHAJMTggQXVnIDIw MTAgMjA6MTY6MjUgLTAwMDAKQEAgLTAsMCArMSw2OCBAQAorIyBUaGlzIHRl c3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgorCisj IENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5 b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorCisjIFBsZWFzZSBlbWFpbCBhbnkgYnVn cywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRv OgorIyBidWctZ2RiQGdudS5vcmcKKworIyBUZXN0IHByaW50aW5nIG9mIHZh cmlvdXMgdmFsdWVzLgorIyBOT1RFOiBUaGUgdGVzdHMgaGVyZSBpbnRlbnRp b25hbGx5IGRvIG5vdCByZXF1aXJlIGFuIG9iamMgY29tcGlsZXIuCisKK2lm ICR0cmFjZWxldmVsIHsKKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKK30KKwor bG9hZF9saWIgIm9iamVjdGl2ZS1jLmV4cCIKKworcHJvYyB0ZXN0X2Zsb2F0 X2FjY2VwdGVkIHt9IHsKKyAgICAjIFRlc3QgcGFyc2luZyBvZiBmcCB2YWx1 ZSB3aXRoIGxlZ2l0IHRleHQgZm9sbG93aW5nLgorICAgIGdkYl90ZXN0ICJw IDEyMzQuNSsxIiAiID0gMTIzNS41IiAiY2hlY2sgZnAgKyB0ZXh0IgorCisg ICAgIyBUZXN0IGFsbCB0aGUgc3VmZml4ZXMgKGluY2x1ZGluZyBubyBzdWZm aXgpLgorICAgIGdkYl90ZXN0ICJwIDEuIiAiID0gMSIKKyAgICBnZGJfdGVz dCAicCAxLjUiICIgPSAxLjUiCisgICAgc2V0dXBfa2ZhaWwgZ2RiLzExOTI1 ICIqLSotKiIKKyAgICBnZGJfdGVzdCAicCAxLmYiICIgPSAxIgorICAgIHNl dHVwX2tmYWlsIGdkYi8xMTkyNSAiKi0qLSoiCisgICAgZ2RiX3Rlc3QgInAg MS41ZiIgIiA9IDEuNSIKKyAgICBzZXR1cF9rZmFpbCBnZGIvMTE5MjUgIiot Ki0qIgorICAgIGdkYl90ZXN0ICJwIDEubCIgIiA9IDEiCisgICAgc2V0dXBf a2ZhaWwgZ2RiLzExOTI1ICIqLSotKiIKKyAgICBnZGJfdGVzdCAicCAxLjVs IiAiID0gMS41IgorfQorCitwcm9jIHRlc3RfZmxvYXRfcmVqZWN0ZWQge30g eworICAgICMgVGVzdCBpbnZhbGlkIGZwIHZhbHVlcy4KKyAgICB0ZXN0X3By aW50X3JlamVjdCAicCAweDEuMSIKKworICAgICMgVGVzdCBiYWQgc3VmZml4 ZXMuCisgICAgdGVzdF9wcmludF9yZWplY3QgInAgMS4xeCIKKyAgICB0ZXN0 X3ByaW50X3JlamVjdCAicCAxLjFmZiIKKyAgICB0ZXN0X3ByaW50X3JlamVj dCAicCAxLjFsbCIKK30KKworIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgor CitnZGJfZXhpdAorZ2RiX3N0YXJ0CitnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKKworaWYgW3NldF9sYW5nX29iamNdIHsKKyAgICB0 ZXN0X2Zsb2F0X2FjY2VwdGVkCisgICAgdGVzdF9mbG9hdF9yZWplY3RlZAor fSBlbHNlIHsKKyAgICB3YXJuaW5nICJPYmplY3RpdmUtYyBwcmludCB0ZXN0 cyBzdXBwcmVzc2VkIgorfQpJbmRleDogdGVzdHN1aXRlL2dkYi5wYXNjYWwv cHJpbnQuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IHRl c3RzdWl0ZS9nZGIucGFzY2FsL3ByaW50LmV4cApkaWZmIC1OIHRlc3RzdWl0 ZS9nZGIucGFzY2FsL3ByaW50LmV4cAotLS0gL2Rldi9udWxsCTEgSmFuIDE5 NzAgMDA6MDA6MDAgLTAwMDAKKysrIHRlc3RzdWl0ZS9nZGIucGFzY2FsL3By aW50LmV4cAkxOCBBdWcgMjAxMCAyMDoxNjoyNSAtMDAwMApAQCAtMCwwICsx LDY0IEBACisjIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBH TlUgZGVidWdnZXIuCisKKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5 IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgUGxl YXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9u cyB0byB0aGlzIGZpbGUgdG86CisjIGJ1Zy1nZGJAZ251Lm9yZworCisjIFRl c3QgcHJpbnRpbmcgb2YgdmFyaW91cyB2YWx1ZXMuCisjIE5PVEU6IFRoZSB0 ZXN0cyBoZXJlIGludGVudGlvbmFsbHkgZG8gbm90IHJlcXVpcmUgYSBwYXNj YWwgY29tcGlsZXIuCisKK2lmICR0cmFjZWxldmVsIHsKKyAgICBzdHJhY2Ug JHRyYWNlbGV2ZWwKK30KKworbG9hZF9saWIgInBhc2NhbC5leHAiCisKK3By b2MgdGVzdF9mbG9hdF9hY2NlcHRlZCB7fSB7CisgICAgIyBUZXN0IHBhcnNp bmcgb2YgZnAgdmFsdWUgd2l0aCBsZWdpdCB0ZXh0IGZvbGxvd2luZy4KKyAg ICBnZGJfdGVzdCAicCAxMjM0LjUrMSIgIiA9IDEyMzUuNSIgImNoZWNrIGZw ICsgdGV4dCIKKworICAgICMgVGVzdCBhbGwgdGhlIHN1ZmZpeGVzIChpbmNs dWRpbmcgbm8gc3VmZml4KS4KKyAgICBnZGJfdGVzdCAicCAxLiIgIiA9IDEi CisgICAgZ2RiX3Rlc3QgInAgMS41IiAiID0gMS41IgorICAgIGdkYl90ZXN0 ICJwIDEuZiIgIiA9IDEiCisgICAgZ2RiX3Rlc3QgInAgMS41ZiIgIiA9IDEu NSIKKyAgICBnZGJfdGVzdCAicCAxLmwiICIgPSAxIgorICAgIGdkYl90ZXN0 ICJwIDEuNWwiICIgPSAxLjUiCit9CisKK3Byb2MgdGVzdF9mbG9hdF9yZWpl Y3RlZCB7fSB7CisgICAgIyBUZXN0IGludmFsaWQgZnAgdmFsdWVzLgorICAg IHRlc3RfcHJpbnRfcmVqZWN0ICJwIDB4MS4xIgorCisgICAgIyBUZXN0IGJh ZCBzdWZmaXhlcy4KKyAgICB0ZXN0X3ByaW50X3JlamVjdCAicCAxLjF4Igor ICAgIHRlc3RfcHJpbnRfcmVqZWN0ICJwIDEuMWZmIgorICAgIHRlc3RfcHJp bnRfcmVqZWN0ICJwIDEuMWxsIgorfQorCisjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCisKK2dkYl9leGl0CitnZGJfc3RhcnQKK2dkYl9yZWluaXRpYWxp emVfZGlyICRzcmNkaXIvJHN1YmRpcgorCitpZiBbc2V0X2xhbmdfcGFzY2Fs XSB7CisgICAgdGVzdF9mbG9hdF9hY2NlcHRlZAorICAgIHRlc3RfZmxvYXRf cmVqZWN0ZWQKK30gZWxzZSB7CisgICAgd2FybmluZyAiUGFzY2FsIHByaW50 IHRlc3RzIHN1cHByZXNzZWQiCit9CkluZGV4OiB0ZXN0c3VpdGUvbGliL29i amVjdGl2ZS1jLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxl OiB0ZXN0c3VpdGUvbGliL29iamVjdGl2ZS1jLmV4cApkaWZmIC1OIHRlc3Rz dWl0ZS9saWIvb2JqZWN0aXZlLWMuZXhwCi0tLSAvZGV2L251bGwJMSBKYW4g MTk3MCAwMDowMDowMCAtMDAwMAorKysgdGVzdHN1aXRlL2xpYi9vYmplY3Rp dmUtYy5leHAJMTggQXVnIDIwMTAgMjA6MTY6MjUgLTAwMDAKQEAgLTAsMCAr MSwzMCBAQAorIyBUaGlzIHRlc3QgY29kZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KKworIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMg QXV4aWxpYXJ5IGZ1bmN0aW9uIHRvIHNldCB0aGUgbGFuZ3VhZ2UgdG8gZm9y dHJhbi4KKyMgVGhlIHJlc3VsdCBpcyAxICh0cnVlKSBmb3Igc3VjY2Vzcywg MCAoZmFsc2UpIGZvciBmYWlsdXJlLgorCitwcm9jIHNldF9sYW5nX29iamMg e30geworICAgIGlmIFtnZGJfdGVzdF9ub19vdXRwdXQgInNldCBsYW5ndWFn ZSBvYmplY3RpdmUtYyJdIHsKKwlyZXR1cm4gMAorICAgIH0KKyAgICBpZiBb Z2RiX3Rlc3QgInNob3cgbGFuZ3VhZ2UiICIuKiBzb3VyY2UgbGFuZ3VhZ2Ug aXMgXCJvYmplY3RpdmUtY1wiLiIgXAorCSAgICJzZXQgbGFuZ3VhZ2UgdG8g XCJvYmplY3RpdmUtY1wiIl0geworCXJldHVybiAwCisgICAgfQorICAgIHJl dHVybiAxOworfQo= --00235445b896474f80048e1f09e1--