From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp-out1.suse.de (smtp-out1.suse.de [IPv6:2001:67c:2178:6::1c]) by sourceware.org (Postfix) with ESMTPS id 60F363856B6E for ; Tue, 13 Dec 2022 21:50:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 60F363856B6E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 9E70B2249B; Tue, 13 Dec 2022 21:50:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1670968257; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=yJftZDusDfRpeYn36GZJoM/V5gP5xPPK0J3kf71jSFk=; b=n4WAieIcWmSlb67bQR5pVMiQtolaJMMSeAb0v/9Bt3KxoqcUkv+DA8nddjaU+eCuXfsXPF qlnxRgNwRryLkW1SG3V8Dvj7OcB+gpOyZpmwPxqY/2srLQDGE/xw3cbhvQ6Fob1kbhfmm7 K1+ar/ZCAyGtoC8YjS9lDX02APnp4pw= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1670968257; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=yJftZDusDfRpeYn36GZJoM/V5gP5xPPK0J3kf71jSFk=; b=/birvNSnkhdlJZyrVvZZkpqhFpyf4g94ZLggEXZWVEBJALlhbnwTOEc6idIbyE/kc2/5PN psZYY9hO0toZOVAw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 83494138EE; Tue, 13 Dec 2022 21:50:57 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id gP7aHsHzmGOPTwAAMHmgww (envelope-from ); Tue, 13 Dec 2022 21:50:57 +0000 Content-Type: multipart/mixed; boundary="------------8WlVtoVfYG0lHeAL0HFcyQ1F" Message-ID: <5db5cb2c-7839-b54e-985b-48618a9a54cb@suse.de> Date: Tue, 13 Dec 2022 22:50:57 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 Subject: Re: [RFC] [gdb/cli] Add maintenance ignore-probes To: Tom Tromey , Tom de Vries via Gdb-patches References: <20221207090020.15890-1-tdevries@suse.de> <874jtzfg7i.fsf@tromey.com> Content-Language: en-US From: Tom de Vries In-Reply-To: <874jtzfg7i.fsf@tromey.com> X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. --------------8WlVtoVfYG0lHeAL0HFcyQ1F Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 12/13/22 16:58, Tom Tromey wrote: >>>>>> "Tom" == Tom de Vries via Gdb-patches writes: > > Tom> There's a command "disable probes", but SystemTap probes cannot be disabled. > Tom> Add a command "maintenance ignore-probes" that ignores probes during > Tom> get_probes, such that we can easily pretend to use a glibc without say, > Tom> the longjmp probe: > > The idea seems sound to me. > > Tom> Note that as with "disable probes", running "maint ignore-probes" without > Tom> arguments ignores all probes. > > I didn't know about "disable probes" but I see now it's a DTrace thing. > > Tom> +/* Implementation of the `maintenance ignore-probes' command. */ > Tom> + > Tom> +static void > Tom> +ignore_probes_command (const char *arg, int from_tty) > Tom> +{ > Tom> + std::string ignore_provider, ignore_probe_name, ignore_objname; > Tom> + > Tom> + parse_probe_linespec ((const char *) arg, &ignore_provider, > Tom> + &ignore_probe_name, &ignore_objname); > > The cast there isn't needed. I'm going to remove the other casts like > this in a second. > Done. > Also, maybe if arg==nullptr, this could set ignore_probes_p = false? > That would give a way to undo the change. > That functionality is sort of already available as "maint ignore-probes foobar foobar foobar", but agreed, having a reliable and concise way to do it is better. I've added that functionality, but as "maint ignore-probes -reset", to not break the similarity in usage with "disable probes" > Tom> + add_cmd ("ignore-probes", class_maintenance, ignore_probes_command, _("\ > Tom> +Ignore probes.\n\ > Tom> +Usage: ignore probes [PROVIDER [NAME [OBJECT]]]\n\ > > Missing the "-" in "ignore-probes". > As well as the "maintenance" prefix, both fixed. > Tom> +all defined probes. Only supported for SystemTap probes"), > > Probably should end with a "." Done. I've also added a -verbose option. If you're ok with the updates, I'll add the docs part and do a proper submission. Thanks, - Tom --------------8WlVtoVfYG0lHeAL0HFcyQ1F Content-Type: text/x-patch; charset=UTF-8; name="0001-gdb-cli-Add-maintenance-ignore-probes.patch" Content-Disposition: attachment; filename="0001-gdb-cli-Add-maintenance-ignore-probes.patch" Content-Transfer-Encoding: base64 RnJvbSA3MWIzMjBhOTE3MjIxMzNkNGIzOWVmNGQ3ZTUzZmNhZWRmNzVlY2I3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb20gZGUgVnJpZXMgPHRkZXZyaWVzQHN1c2UuZGU+ CkRhdGU6IE1vbiwgNSBEZWMgMjAyMiAxNDo0NTo0MiArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IFtnZGIvY2xpXSBBZGQgbWFpbnRlbmFuY2UgaWdub3JlLXByb2JlcwoKVGhlcmUncyBhIGNv bW1hbmQgImRpc2FibGUgcHJvYmVzIiwgYnV0IFN5c3RlbVRhcCBwcm9iZXMgY2Fubm90IGJl IGRpc2FibGVkLgoKQWRkIGEgY29tbWFuZCAibWFpbnRlbmFuY2UgaWdub3JlLXByb2JlcyIg dGhhdCBpZ25vcmVzIHByb2JlcyBkdXJpbmcKZ2V0X3Byb2Jlcywgc3VjaCB0aGF0IHdlIGNh biBlYXNpbHkgcHJldGVuZCB0byB1c2UgYSBnbGliYyB3aXRob3V0IHNheSwKdGhlIGxvbmdq bXAgcHJvYmU6Ci4uLgooZ2RiKSBtYWludCBpZ25vcmUtcHJvYmVzIC12ZXJib3NlIGxpYmMg XmxvbmdqbXAkCmlnbm9yZS1wcm9iZXMgZmlsdGVyIGhhcyBiZWVuIHNldCB0bzoKUFJPVklE RVI6ICdsaWJjJwpQUk9CRV9OQU1FOiAnXmxvbmdqbXAkJwpPQkpOQU1FOiAnJwooZ2RiKSBz dGFydCBeTQpUZW1wb3JhcnkgYnJlYWtwb2ludCAxIGF0IDB4NDAwNWJiOiBmaWxlIGxvbmdq bXAuYywgbGluZSA0Ni4KU3RhcnRpbmcgcHJvZ3JhbTogb3V0cHV0cy9nZGIuYmFzZS9sb25n am1wL2xvbmdqbXAgXk0KSWdub3JpbmcgU3lzdGVtVGFwIHByb2JlIGxpYmMgbG9uZ2ptcCBp biAvbGliNjQvbGliYy5zby42Ll5NCklnbm9yaW5nIFN5c3RlbVRhcCBwcm9iZSBsaWJjIGxv bmdqbXAgaW4gL2xpYjY0L2xpYmMuc28uNi5eTQpJZ25vcmluZyBTeXN0ZW1UYXAgcHJvYmUg bGliYyBsb25nam1wIGluIC9saWI2NC9saWJjLnNvLjYuXk0KXk0KQnJlYWtwb2ludCAxLCBt YWluICgpIGF0IGxvbmdqbXAuYzo0Nl5NCjQ2ICAgICAgICB2b2xhdGlsZSBpbnQgaSA9IDA7 Xk0KKGdkYikKLi4uCgpOb3RlIHRoYXQgYXMgd2l0aCAiZGlzYWJsZSBwcm9iZXMiLCBydW5u aW5nICJtYWludCBpZ25vcmUtcHJvYmVzIiB3aXRob3V0CmFyZ3VtZW50cyBpZ25vcmVzIGFs bCBwcm9iZXMuCgpUaGUgaWdub3JlLXByb2JlcyBmaWx0ZXIgY2FuIGJlIHJlc2V0IGJ5IHVz aW5nOgouLi4KKGdkYikgbWFpbnQgaWdub3JlLXByb2JlcyAtcmVzZXQKaWdub3JlLXByb2Jl cyBmaWx0ZXIgaGFzIGJlZW4gcmVzZXQKLi4uCgpGb3Igbm93LCB0aGUgY29tbWFuZCBpcyBv bmx5IHN1cHBvcnRlZCBmb3IgU3lzdGVtVGFwIHByb2Jlcy4KClBSIGNsaS8yNzE1OQpCdWc6 IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTI3MTU5 Ci0tLQogZ2RiL3Byb2JlLmMgICAgICB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZ2RiL3Byb2JlLmggICAgICB8ICA1ICsrKwogZ2Ri L3N0YXAtcHJvYmUuYyB8ICAzICsrCiAzIGZpbGVzIGNoYW5nZWQsIDkzIGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9nZGIvcHJvYmUuYyBiL2dkYi9wcm9iZS5jCmluZGV4IDQxOTNm OWY5MzZiLi4xODYzY2Q5NmIwMiAxMDA2NDQKLS0tIGEvZ2RiL3Byb2JlLmMKKysrIGIvZ2Ri L3Byb2JlLmMKQEAgLTY4MCw2ICs2ODAsNzkgQEAgZGlzYWJsZV9wcm9iZXNfY29tbWFuZCAo Y29uc3QgY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAgICAgfQogfQogCitzdGF0aWMgYm9v bCBpZ25vcmVfcHJvYmVzX3AgPSBmYWxzZTsKK3N0YXRpYyBib29sIGlnbm9yZV9wcm9iZXNf dmVyYm9zZV9wID0gZmFsc2U7CitzdGF0aWMgZ2RiOjpvcHRpb25hbDxjb21waWxlZF9yZWdl eD4gaWdub3JlX29ial9wYXQ7CitzdGF0aWMgZ2RiOjpvcHRpb25hbDxjb21waWxlZF9yZWdl eD4gaWdub3JlX3Byb3ZfcGF0Oworc3RhdGljIGdkYjo6b3B0aW9uYWw8Y29tcGlsZWRfcmVn ZXg+IGlnbm9yZV9wcm9iZV9wYXQ7CisKKy8qIFNlZSBjb21tZW50cyBpbiBwcm9iZS5oLiAg Ki8KKworYm9vbCBpZ25vcmVfcHJvYmUgKGNvbnN0IGNoYXIgKnByb3ZpZGVyLCBjb25zdCBj aGFyICpuYW1lLAorCQkgICBjb25zdCBjaGFyICpvYmpmaWxlX25hbWUsIGNvbnN0IGNoYXIg KnR5cGUpCit7CisgIGJvb2wgcmVzCisgICAgPSAoaWdub3JlX3Byb2Jlc19wCisgICAgICAg JiYgKCFpZ25vcmVfb2JqX3BhdAorCSAgIHx8IGlnbm9yZV9vYmpfcGF0LT5leGVjIChvYmpm aWxlX25hbWUsIDAsIE5VTEwsIDApID09IDApCisgICAgICAgJiYgKCFpZ25vcmVfcHJvdl9w YXQKKwkgICB8fCBpZ25vcmVfcHJvdl9wYXQtPmV4ZWMgKHByb3ZpZGVyLCAwLCBOVUxMLCAw KSA9PSAwKQorICAgICAgICYmICghaWdub3JlX3Byb2JlX3BhdAorCSAgIHx8IGlnbm9yZV9w cm9iZV9wYXQtPmV4ZWMgKG5hbWUsIDAsIE5VTEwsIDApID09IDApKTsKKworICBpZiAocmVz ICYmIGlnbm9yZV9wcm9iZXNfdmVyYm9zZV9wKQorICAgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csIF8oIklnbm9yaW5nICVzIHByb2JlICVzICVzIGluICVzLlxuIiksCisJCXR5cGUsIHBy b3ZpZGVyLCBuYW1lLCBvYmpmaWxlX25hbWUpOworCisgIHJldHVybiByZXM7Cit9CisKKy8q IEltcGxlbWVudGF0aW9uIG9mIHRoZSBgbWFpbnRlbmFuY2UgaWdub3JlLXByb2JlcycgY29t bWFuZC4gICovCisKK3N0YXRpYyB2b2lkCitpZ25vcmVfcHJvYmVzX2NvbW1hbmQgKGNvbnN0 IGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQoreworICBzdGQ6OnN0cmluZyBpZ25vcmVfcHJv dmlkZXIsIGlnbm9yZV9wcm9iZV9uYW1lLCBpZ25vcmVfb2JqbmFtZTsKKworICBpZiAoYXJn ICE9IG51bGxwdHIgJiYgc3RyY21wIChhcmcsICAiLXJlc2V0IikgPT0gMCkKKyAgICB7Cisg ICAgICBpZ25vcmVfcHJvYmVzX3AgPSBmYWxzZTsKKyAgICAgIGdkYl9wcmludGYgKGdkYl9z dGRvdXQsIF8oImlnbm9yZS1wcm9iZXMgZmlsdGVyIGhhcyBiZWVuIHJlc2V0XG4iKSk7Cisg ICAgICByZXR1cm47CisgICAgfQorCisgIHsKKyAgICBjb25zdCBjaGFyICpzdHIgPSAiLXZl cmJvc2UiOworICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKHN0cik7CisgICAgaWYgKGFyZyAh PSBudWxscHRyCisJJiYgc3RybmNtcCAoYXJnLCBzdHIsIGxlbikgPT0gMAorCSYmIChhcmdb bGVuXSA9PSAnXDAnIHx8IGFyZ1tsZW5dID09ICcgJykpCisgICAgICB7CisJaWdub3JlX3By b2Jlc192ZXJib3NlX3AgPSB0cnVlOworCWlmIChhcmdbbGVuXSA9PSAnXDAnKQorCWFyZyA9 IG51bGxwdHI7CisgICAgICBlbHNlCisJYXJnICs9IChsZW4gKyAxKTsKKyAgICAgIH0KKyAg fQorCisgIHBhcnNlX3Byb2JlX2xpbmVzcGVjIChhcmcsICZpZ25vcmVfcHJvdmlkZXIsICZp Z25vcmVfcHJvYmVfbmFtZSwKKwkJCSZpZ25vcmVfb2JqbmFtZSk7CisKKyAgaWdub3JlX3By b3ZfcGF0LmVtcGxhY2UgKGlnbm9yZV9wcm92aWRlci5jX3N0ciAoKSwgUkVHX05PU1VCLAor CQkJICAgXygiSW52YWxpZCBwcm92aWRlciByZWdleHAiKSk7CisgIGlnbm9yZV9wcm9iZV9w YXQuZW1wbGFjZSAoaWdub3JlX3Byb2JlX25hbWUuY19zdHIgKCksIFJFR19OT1NVQiwKKwkJ CSAgICBfKCJJbnZhbGlkIHByb2JlIHJlZ2V4cCIpKTsKKyAgaWdub3JlX29ial9wYXQuZW1w bGFjZSAoaWdub3JlX29iam5hbWUuY19zdHIgKCksIFJFR19OT1NVQiwKKwkJCSAgXygiSW52 YWxpZCBvYmplY3QgZmlsZSByZWdleHAiKSk7CisKKyAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZG91 dCwgXygiaWdub3JlLXByb2JlcyBmaWx0ZXIgaGFzIGJlZW4gc2V0IHRvOlxuIikpOworICBn ZGJfcHJpbnRmIChnZGJfc3Rkb3V0LCBfKCJQUk9WSURFUjogJyVzJ1xuIiksIGlnbm9yZV9w cm92aWRlci5jX3N0ciAoKSk7CisgIGdkYl9wcmludGYgKGdkYl9zdGRvdXQsIF8oIlBST0JF X05BTUU6ICclcydcbiIpLCBpZ25vcmVfcHJvYmVfbmFtZS5jX3N0ciAoKSk7CisgIGdkYl9w cmludGYgKGdkYl9zdGRvdXQsIF8oIk9CSk5BTUU6ICclcydcbiIpLCBpZ25vcmVfb2JqbmFt ZS5jX3N0ciAoKSk7CisgIGlnbm9yZV9wcm9iZXNfcCA9IHRydWU7Cit9CisKIC8qIFNlZSBj b21tZW50cyBpbiBwcm9iZS5oLiAgKi8KIAogc3RydWN0IHZhbHVlICoKQEAgLTkzMSw0ICsx MDA0LDE2IEBAIElmIHlvdSBkbyBub3Qgc3BlY2lmeSBhbnkgYXJndW1lbnQgdGhlbiB0aGUg Y29tbWFuZCB3aWxsIGRpc2FibGVcblwKIGFsbCBkZWZpbmVkIHByb2Jlcy4iKSwKIAkgICAm ZGlzYWJsZWxpc3QpOwogCisgIGFkZF9jbWQgKCJpZ25vcmUtcHJvYmVzIiwgY2xhc3NfbWFp bnRlbmFuY2UsIGlnbm9yZV9wcm9iZXNfY29tbWFuZCwgXygiXAorSWdub3JlIHByb2Jlcy5c blwKK1VzYWdlOiBtYWludGVuYW5jZSBpZ25vcmUtcHJvYmVzIFtQUk9WSURFUiBbTkFNRSBb T0JKRUNUXV1dXG5cCisgICAgICAgbWFpbnRlbmFuY2UgaWdub3JlLXByb2JlcyAtcmVzZXRc blwKK0VhY2ggYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24sIHVzZWQgdG8gc2Vs ZWN0IHByb2Jlcy5cblwKK1BST1ZJREVSIG1hdGNoZXMgcHJvYmUgcHJvdmlkZXIgbmFtZXMu XG5cCitOQU1FIG1hdGNoZXMgdGhlIHByb2JlIG5hbWVzLlxuXAorT0JKRUNUIG1hdGNoZXMg dGhlIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkgbmFtZS5cblwKK0lmIHlvdSBkbyBu b3Qgc3BlY2lmeSBhbnkgYXJndW1lbnQgdGhlbiB0aGUgY29tbWFuZCB3aWxsIGlnbm9yZVxu XAorYWxsIGRlZmluZWQgcHJvYmVzLiAgVG8gcmVzZXQgdGhlIGlnbm9yZS1wcm9iZXMgZmls dGVyLCB1c2UgdGhlIC1yZXNldCBmb3JtLlxuXAorT25seSBzdXBwb3J0ZWQgZm9yIFN5c3Rl bVRhcCBwcm9iZXMuIiksCisJICAgJm1haW50ZW5hbmNlbGlzdCk7CiB9CmRpZmYgLS1naXQg YS9nZGIvcHJvYmUuaCBiL2dkYi9wcm9iZS5oCmluZGV4IDU5OGY0M2EyMzhlLi43MGZiNzFk NmFlNCAxMDA2NDQKLS0tIGEvZ2RiL3Byb2JlLmgKKysrIGIvZ2RiL3Byb2JlLmgKQEAgLTMw NCw0ICszMDQsOSBAQCBleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKippbmZvX3By b2Jlc19jbWRsaXN0X2dldCAodm9pZCk7CiBleHRlcm4gc3RydWN0IHZhbHVlICpwcm9iZV9z YWZlX2V2YWx1YXRlX2F0X3BjIChmcmFtZV9pbmZvX3B0ciBmcmFtZSwKIAkJCQkJCXVuc2ln bmVkIG4pOwogCisvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgUFJPVklERVIvTkFNRSBwcm9iZSBm cm9tIE9CSkZJTEVfTkFNRSBuZWVkcyB0byBiZQorICAgaWdub3JlZC4gICovCisKK2Jvb2wg aWdub3JlX3Byb2JlIChjb25zdCBjaGFyICpwcm92aWRlciwgY29uc3QgY2hhciAqbmFtZSwK KwkJICAgY29uc3QgY2hhciAqb2JqZmlsZV9uYW1lLCBjb25zdCBjaGFyICpUWVBFKTsKICNl bmRpZiAvKiAhZGVmaW5lZCAoUFJPQkVfSCkgKi8KZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXBy b2JlLmMgYi9nZGIvc3RhcC1wcm9iZS5jCmluZGV4IDZmOTFkODc4NDZhLi5hOGE2MGQ4NWU1 OSAxMDA2NDQKLS0tIGEvZ2RiL3N0YXAtcHJvYmUuYworKysgYi9nZGIvc3RhcC1wcm9iZS5j CkBAIC0xNjE5LDYgKzE2MTksOSBAQCBoYW5kbGVfc3RhcF9wcm9iZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCBzZHRfbm90ZSAqZWwsCiAgICAgICByZXR1cm47CiAgICAg fQogCisgIGlmIChpZ25vcmVfcHJvYmUgKHByb3ZpZGVyLCBuYW1lLCBvYmpmaWxlX25hbWUg KG9iamZpbGUpLCAiU3lzdGVtVGFwIikpCisgICAgcmV0dXJuOworCiAgIHN0YXBfcHJvYmUg KnJldCA9IG5ldyBzdGFwX3Byb2JlIChzdGQ6OnN0cmluZyAobmFtZSksIHN0ZDo6c3RyaW5n IChwcm92aWRlciksCiAJCQkJICAgIGFkZHJlc3MsIGdkYmFyY2gsIHNlbV9hZGRyLCBwcm9i ZV9hcmdzKTsKIAoKYmFzZS1jb21taXQ6IGVhNjkyOWFhYWMzNzBkYWRkZjA5OTlmYWE1NTMy MzFjOGI4MDZiMjAKLS0gCjIuMzUuMwoK --------------8WlVtoVfYG0lHeAL0HFcyQ1F--