Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWjtc-0005Hx-2a for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Feb 2023 20:14:52 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pWjta-0000sZ-0r for pgsql-hackers@arkaria.postgresql.org; Mon, 27 Feb 2023 20:14:50 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pWjtZ-0000sP-8O for pgsql-hackers@lists.postgresql.org; Mon, 27 Feb 2023 20:14:49 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pWjtV-0008WT-5W for pgsql-hackers@lists.postgresql.org; Mon, 27 Feb 2023 20:14:47 +0000 Received: from [192.168.0.104] (unknown [62.217.188.29]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mail.postgrespro.ru (Postfix) with ESMTPSA id 45BC521CC2F5; Mon, 27 Feb 2023 23:14:42 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mail; t=1677528882; bh=WwmQG+LR1ymZJ0a4zJINQKsVpCZIKKskRfT6qyxGj98=; h=Date:Subject:To:Cc:References:From:In-Reply-To; b=dVe7H8LFZiqNpYw30HBLImrzYfn34Uk1zxrhZIdT66Ov1xtLjqEnlgTdfnz7VzTFx wu4OHcPABVeXDxFBDkC9gWGfx7+vmfvNOX9zrjbsRFAaqNA5/89pd9HSWZPR9F6LsM C08WOHTbyfoVpk5h3n39mTDo/6+n0xXvQN/5e+VE= Content-Type: multipart/mixed; boundary="------------rxA6CQv5ehxGHZKiJig20KwE" Message-ID: <22110b1f-dac6-d812-1742-7e915b60f893@postgrespro.ru> Date: Mon, 27 Feb 2023 23:14:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: psql: Add role's membership options to the \du+ command Content-Language: en-US To: "David G. Johnston" Cc: David Zhang , "pgsql-hackers@lists.postgresql.org" References: <01620d6b-9efe-b199-b619-8450d865ec83@postgrespro.ru> <94ce7392-fa90-bc1c-4dc2-677161bbff58@postgrespro.ru> From: Pavel Luzanov In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------rxA6CQv5ehxGHZKiJig20KwE Content-Type: multipart/alternative; boundary="------------Svgvgx50BWoEGRI0H76U3prI" --------------Svgvgx50BWoEGRI0H76U3prI Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 22.02.2023 00:34, David G. Johnston wrote: > This is the format I've gone for (more-or-less) in my RoleGraph view > (I'll be sharing it publicly in the near future). > > bob from grantor (a, s, i) \n > adam from postgres (a, s, i) \n > emily from postgres (empty) I think this is a good compromise. > Based upon prior comments going for something like the following is > undesirable: bob=asi/grantor Agree. Membership options are not the ACL (although they have similarities). Therefore, showing them as a ACL-like column will be confusing. So, please find attached the second version of the patch. It implements suggested display format and small refactoring of existing code for \du command. As a non-native writer, I have doubts about the documentation part. -- Pavel Luzanov Postgres Professional:https://postgrespro.com --------------Svgvgx50BWoEGRI0H76U3prI Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit On 22.02.2023 00:34, David G. Johnston wrote:
This is the format I've gone for (more-or-less) in my RoleGraph view (I'll be sharing it publicly in the near future).

bob from grantor (a, s, i) \n
adam from postgres (a, s, i) \n
emily from postgres (empty)

I think this is a good compromise.

Based upon prior comments going for something like the following is undesirable:  bob=asi/grantor

Agree. Membership options are not the ACL (although they have similarities). Therefore, showing them as a ACL-like column will be confusing.

So, please find attached the second version of the patch. It implements suggested display format and small refactoring of existing code for \du command.
As a non-native writer, I have doubts about the documentation part.
-- 
Pavel Luzanov
Postgres Professional: https://postgrespro.com
--------------Svgvgx50BWoEGRI0H76U3prI-- --------------rxA6CQv5ehxGHZKiJig20KwE Content-Type: text/x-patch; charset=UTF-8; name="v2-0001-psql-du-shows-membership-options.patch" Content-Disposition: attachment; filename="v2-0001-psql-du-shows-membership-options.patch" Content-Transfer-Encoding: base64 RnJvbSA3MDQ4OWE2MDU2ODdhMzI1Mjg3YmFkMTA5ZTI3NDFkZDdkMDhjZWEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXZlbCBMdXphbm92IDxwLmx1emFub3ZAcG9zdGdy ZXNwcm8ucnU+CkRhdGU6IE1vbiwgMjcgRmViIDIwMjMgMjI6MzU6MjkgKzAzMDAKU3ViamVj dDogW1BBVENIIHYyXSBwc3FsOiBcZHUgc2hvd3MgbWVtYmVyc2hpcCBvcHRpb25zCgotLS0K IGRvYy9zcmMvc2dtbC9yZWYvcHNxbC1yZWYuc2dtbCAgICAgfCAxMiArKysrKysrKwogc3Jj L2Jpbi9wc3FsL2Rlc2NyaWJlLmMgICAgICAgICAgICB8IDQ1ICsrKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wc3FsLm91dCB8IDQ1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHNxbC5zcWwgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQs IDExMSBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcmVmL3BzcWwtcmVmLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BzcWwtcmVm LnNnbWwKaW5kZXggZGM2NTI4ZGMxMS4uYzk0YTIyODdmMCAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9wc3FsLXJlZi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcHNxbC1y ZWYuc2dtbApAQCAtMTcyNCw2ICsxNzI0LDEyIEBAIElOU0VSVCBJTlRPIHRibDEgVkFMVUVT ICgkMSwgJDIpIFxiaW5kICdmaXJzdCB2YWx1ZScgJ3NlY29uZCB2YWx1ZScgXGcKICAgICAg ICAgPGxpdGVyYWw+UzwvbGl0ZXJhbD4gbW9kaWZpZXIgdG8gaW5jbHVkZSBzeXN0ZW0gcm9s ZXMuCiAgICAgICAgIElmIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXR0ZXJu PC9yZXBsYWNlYWJsZT4gaXMgc3BlY2lmaWVkLAogICAgICAgICBvbmx5IHRob3NlIHJvbGVz IHdob3NlIG5hbWVzIG1hdGNoIHRoZSBwYXR0ZXJuIGFyZSBsaXN0ZWQuCisgICAgICAgIEZv ciBlYWNoIG1lbWJlcnNoaXAgaW4gdGhlIHJvbGUsIHRoZSBtZW1iZXJzaGlwIG9wdGlvbnMg YW5kCisgICAgICAgIHRoZSByb2xlIHRoYXQgZ3JhbnRlZCB0aGUgbWVtYmVyc2hpcCBhcmUg ZGlzcGxheWVkLgorICAgICAgICDQnm5lLWxldHRlciBhYmJyZXZpYXRpb25zIGFyZSB1c2Vk IGZvciBtZW1iZXJzaGlwIG9wdGlvbnM6CisgICAgICAgIDxsaXRlcmFsPmE8L2xpdGVyYWw+ ICZtZGFzaDsgYWRtaW4gb3B0aW9uLCA8bGl0ZXJhbD5pPC9saXRlcmFsPiAmbWRhc2g7IGlu aGVyaXQgb3B0aW9uLAorICAgICAgICA8bGl0ZXJhbD5zPC9saXRlcmFsPiAmbWRhc2g7IHNl dCBvcHRpb24gYW5kIDxsaXRlcmFsPmVtcHR5PC9saXRlcmFsPiBpZiBubyBvbmUgaXMgc2V0 LgorICAgICAgICBTZWUgPGxpbmsgbGlua2VuZD0ic3FsLWdyYW50Ij48Y29tbWFuZD5HUkFO VDwvY29tbWFuZD48L2xpbms+IGNvbW1hbmQgZm9yIHRoZWlyIG1lYW5pbmcuCiAgICAgICAg IElmIHRoZSBmb3JtIDxsaXRlcmFsPlxkZys8L2xpdGVyYWw+IGlzIHVzZWQsIGFkZGl0aW9u YWwgaW5mb3JtYXRpb24KICAgICAgICAgaXMgc2hvd24gYWJvdXQgZWFjaCByb2xlOyBjdXJy ZW50bHkgdGhpcyBhZGRzIHRoZSBjb21tZW50IGZvciBlYWNoCiAgICAgICAgIHJvbGUuCkBA IC0xOTY2LDYgKzE5NzIsMTIgQEAgSU5TRVJUIElOVE8gdGJsMSBWQUxVRVMgKCQxLCAkMikg XGJpbmQgJ2ZpcnN0IHZhbHVlJyAnc2Vjb25kIHZhbHVlJyBcZwogICAgICAgICA8bGl0ZXJh bD5TPC9saXRlcmFsPiBtb2RpZmllciB0byBpbmNsdWRlIHN5c3RlbSByb2xlcy4KICAgICAg ICAgSWYgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm48L3JlcGxhY2Vh YmxlPiBpcyBzcGVjaWZpZWQsCiAgICAgICAgIG9ubHkgdGhvc2Ugcm9sZXMgd2hvc2UgbmFt ZXMgbWF0Y2ggdGhlIHBhdHRlcm4gYXJlIGxpc3RlZC4KKyAgICAgICAgRm9yIGVhY2ggbWVt YmVyc2hpcCBpbiB0aGUgcm9sZSwgdGhlIG1lbWJlcnNoaXAgb3B0aW9ucyBhbmQKKyAgICAg ICAgdGhlIHJvbGUgdGhhdCBncmFudGVkIHRoZSBtZW1iZXJzaGlwIGFyZSBkaXNwbGF5ZWQu CisgICAgICAgINCebmUtbGV0dGVyIGFiYnJldmlhdGlvbnMgYXJlIHVzZWQgZm9yIG1lbWJl cnNoaXAgb3B0aW9uczoKKyAgICAgICAgPGxpdGVyYWw+YTwvbGl0ZXJhbD4gJm1kYXNoOyBh ZG1pbiBvcHRpb24sIDxsaXRlcmFsPmk8L2xpdGVyYWw+ICZtZGFzaDsgaW5oZXJpdCBvcHRp b24sCisgICAgICAgIDxsaXRlcmFsPnM8L2xpdGVyYWw+ICZtZGFzaDsgc2V0IG9wdGlvbiBh bmQgPGxpdGVyYWw+ZW1wdHk8L2xpdGVyYWw+IGlmIG5vIG9uZSBpcyBzZXQuCisgICAgICAg IFNlZSA8bGluayBsaW5rZW5kPSJzcWwtZ3JhbnQiPjxjb21tYW5kPkdSQU5UPC9jb21tYW5k PjwvbGluaz4gY29tbWFuZCBmb3IgdGhlaXIgbWVhbmluZy4KICAgICAgICAgSWYgdGhlIGZv cm0gPGxpdGVyYWw+XGR1KzwvbGl0ZXJhbD4gaXMgdXNlZCwgYWRkaXRpb25hbCBpbmZvcm1h dGlvbgogICAgICAgICBpcyBzaG93biBhYm91dCBlYWNoIHJvbGU7IGN1cnJlbnRseSB0aGlz IGFkZHMgdGhlIGNvbW1lbnQgZm9yIGVhY2gKICAgICAgICAgcm9sZS4KZGlmZiAtLWdpdCBh L3NyYy9iaW4vcHNxbC9kZXNjcmliZS5jIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKaW5k ZXggYzhhMGJiN2IzYS4uMjdhODY4MGRkZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL2Rl c2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAgLTM2MjMsMjIgKzM2 MjMsMzYgQEAgZGVzY3JpYmVSb2xlcyhjb25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJv c2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJCQkJICAiU0VMRUNUIHIucm9sbmFtZSwgci5yb2xz dXBlciwgci5yb2xpbmhlcml0LFxuIgogCQkJCQkgICIgIHIucm9sY3JlYXRlcm9sZSwgci5y b2xjcmVhdGVkYiwgci5yb2xjYW5sb2dpbixcbiIKIAkJCQkJICAiICByLnJvbGNvbm5saW1p dCwgci5yb2x2YWxpZHVudGlsLFxuIgotCQkJCQkgICIgIEFSUkFZKFNFTEVDVCBiLnJvbG5h bWVcbiIKLQkJCQkJICAiICAgICAgICBGUk9NIHBnX2NhdGFsb2cucGdfYXV0aF9tZW1iZXJz IG1cbiIKLQkJCQkJICAiICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcm9sZXMgYiBPTiAo bS5yb2xlaWQgPSBiLm9pZClcbiIKLQkJCQkJICAiICAgICAgICBXSEVSRSBtLm1lbWJlciA9 IHIub2lkKSBhcyBtZW1iZXJvZiIpOworCQkJCQkgICIgIHIucm9scmVwbGljYXRpb24sIHIu cm9sYnlwYXNzcmxzLFxuIik7CisKKwlpZiAocHNldC5zdmVyc2lvbiA+PSAxNjAwMDApCisJ CWFwcGVuZFBRRXhwQnVmZmVyU3RyKCZidWYsCisJCQkJCQkJICIgIChTRUxFQ1QgcGdfY2F0 YWxvZy5zdHJpbmdfYWdnKFxuIgorCQkJCQkJCSAiICAgIHBnX2NhdGFsb2cuZm9ybWF0KCcl SSBmcm9tICVJICglcyknLFxuIgorCQkJCQkJCSAiICAgICAgYi5yb2xuYW1lLCBtLmdyYW50 b3I6OnBnX2NhdGFsb2cucmVncm9sZTo6cGdfY2F0YWxvZy50ZXh0LFxuIgorCQkJCQkJCSAi ICAgICAgcGdfY2F0YWxvZy5yZWdleHBfcmVwbGFjZShcbiIKKwkJCQkJCQkgIiAgICAgICAg cGdfY2F0YWxvZy5jb25jYXRfd3MoJywgJyxcbiIKKwkJCQkJCQkgIiAgICAgICAgICBDQVNF IFdIRU4gbS5hZG1pbl9vcHRpb24gVEhFTiAnYScgRU5ELFxuIgorCQkJCQkJCSAiICAgICAg ICAgIENBU0UgV0hFTiBtLmluaGVyaXRfb3B0aW9uIFRIRU4gJ2knIEVORCxcbiIKKwkJCQkJ CQkgIiAgICAgICAgICBDQVNFIFdIRU4gbS5zZXRfb3B0aW9uIFRIRU4gJ3MnIEVORCksXG4i CisJCQkJCQkJICIgICAgICAnXiQnLCAnZW1wdHknKVxuIgorCQkJCQkJCSAiICAgICksIEUn XFxuJ1xuIgorCQkJCQkJCSAiICAgIE9SREVSIEJZIGIucm9sbmFtZSwgbS5ncmFudG9yOjpw Z19jYXRhbG9nLnJlZ3JvbGU6OnBnX2NhdGFsb2cudGV4dClcbiIKKwkJCQkJCQkgIiAgRlJP TSBwZ19jYXRhbG9nLnBnX2F1dGhfbWVtYmVycyBtXG4iCisJCQkJCQkJICIgICAgICAgSk9J TiBwZ19jYXRhbG9nLnBnX3JvbGVzIGIgT04gKG0ucm9sZWlkID0gYi5vaWQpXG4iCisJCQkJ CQkJICIgIFdIRVJFIG0ubWVtYmVyID0gci5vaWQpIGFzIG1lbWJlcm9mIik7CisJZWxzZQor CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLAorCQkJCQkJCSAiICBBUlJBWShTRUxFQ1Qg Yi5yb2xuYW1lXG4iCisJCQkJCQkJICIgICAgICAgIEZST00gcGdfY2F0YWxvZy5wZ19hdXRo X21lbWJlcnMgbVxuIgorCQkJCQkJCSAiICAgICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcm9s ZXMgYiBPTiAobS5yb2xlaWQgPSBiLm9pZClcbiIKKwkJCQkJCQkgIiAgICAgICAgV0hFUkUg bS5tZW1iZXIgPSByLm9pZCkgYXMgbWVtYmVyb2YiKTsKIAogCWlmICh2ZXJib3NlKQogCXsK IAkJYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxuLCBwZ19jYXRhbG9nLnNob2JqX2Rl c2NyaXB0aW9uKHIub2lkLCAncGdfYXV0aGlkJykgQVMgZGVzY3JpcHRpb24iKTsKIAkJbmNv bHMrKzsKIAl9Ci0JYXBwZW5kUFFFeHBCdWZmZXJTdHIoJmJ1ZiwgIlxuLCByLnJvbHJlcGxp Y2F0aW9uIik7Ci0KLQlpZiAocHNldC5zdmVyc2lvbiA+PSA5MDUwMCkKLQl7Ci0JCWFwcGVu ZFBRRXhwQnVmZmVyU3RyKCZidWYsICJcbiwgci5yb2xieXBhc3NybHMiKTsKLQl9CiAKIAlh cHBlbmRQUUV4cEJ1ZmZlclN0cigmYnVmLCAiXG5GUk9NIHBnX2NhdGFsb2cucGdfcm9sZXMg clxuIik7CiAKQEAgLTM2OTIsMTIgKzM3MDYsMTEgQEAgZGVzY3JpYmVSb2xlcyhjb25zdCBj aGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAkJaWYgKHN0 cmNtcChQUWdldHZhbHVlKHJlcywgaSwgNSksICJ0IikgIT0gMCkKIAkJCWFkZF9yb2xlX2F0 dHJpYnV0ZSgmYnVmLCBfKCJDYW5ub3QgbG9naW4iKSk7CiAKLQkJaWYgKHN0cmNtcChQUWdl dHZhbHVlKHJlcywgaSwgKHZlcmJvc2UgPyAxMCA6IDkpKSwgInQiKSA9PSAwKQorCQlpZiAo c3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCA4KSwgInQiKSA9PSAwKQogCQkJYWRkX3JvbGVf YXR0cmlidXRlKCZidWYsIF8oIlJlcGxpY2F0aW9uIikpOwogCi0JCWlmIChwc2V0LnN2ZXJz aW9uID49IDkwNTAwKQotCQkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgKHZlcmJv c2UgPyAxMSA6IDEwKSksICJ0IikgPT0gMCkKLQkJCQlhZGRfcm9sZV9hdHRyaWJ1dGUoJmJ1 ZiwgXygiQnlwYXNzIFJMUyIpKTsKKwkJaWYgKHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwg OSksICJ0IikgPT0gMCkKKwkJCWFkZF9yb2xlX2F0dHJpYnV0ZSgmYnVmLCBfKCJCeXBhc3Mg UkxTIikpOwogCiAJCWNvbm5zID0gYXRvaShQUWdldHZhbHVlKHJlcywgaSwgNikpOwogCQlp ZiAoY29ubnMgPj0gMCkKQEAgLTM3MjYsMTAgKzM3MzksMTAgQEAgZGVzY3JpYmVSb2xlcyhj b25zdCBjaGFyICpwYXR0ZXJuLCBib29sIHZlcmJvc2UsIGJvb2wgc2hvd1N5c3RlbSkKIAog CQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgYXR0cltpXSwgZmFsc2UsIGZhbHNlKTsKIAot CQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDgpLCBmYWxz ZSwgZmFsc2UpOworCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMs IGksIDEwKSwgZmFsc2UsIGZhbHNlKTsKIAogCQlpZiAodmVyYm9zZSkKLQkJCXByaW50VGFi bGVBZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgOSksIGZhbHNlLCBmYWxzZSk7 CisJCQlwcmludFRhYmxlQWRkQ2VsbCgmY29udCwgUFFnZXR2YWx1ZShyZXMsIGksIDExKSwg ZmFsc2UsIGZhbHNlKTsKIAl9CiAJdGVybVBRRXhwQnVmZmVyKCZidWYpOwogCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9wc3FsLm91dAppbmRleCA4ZmM2MmNlYmQyLi5hOWU0N2YxZWJmIDEw MDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BzcWwub3V0CisrKyBiL3Ny Yy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHNxbC5vdXQKQEAgLTY1NzgsMyArNjU3OCw0OCBA QCBjcm9zcy1kYXRhYmFzZSByZWZlcmVuY2VzIGFyZSBub3QgaW1wbGVtZW50ZWQ6ICJuby5z dWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hlbQogY3Jvc3MtZGF0YWJhc2UgcmVmZXJlbmNl cyBhcmUgbm90IGltcGxlbWVudGVkOiAibm8uc3VjaC5kYXRhYmFzZSIuIm5vLnN1Y2guc2No ZW1hIi4ibm8uc3VjaC5kYXRhLnR5cGUiCiBcZFggIm5vLnN1Y2guZGF0YWJhc2UiLiJuby5z dWNoLnNjaGVtYSIuIm5vLnN1Y2guZXh0ZW5kZWQuc3RhdGlzdGljcyIKIGNyb3NzLWRhdGFi YXNlIHJlZmVyZW5jZXMgYXJlIG5vdCBpbXBsZW1lbnRlZDogIm5vLnN1Y2guZGF0YWJhc2Ui LiJuby5zdWNoLnNjaGVtYSIuIm5vLnN1Y2guZXh0ZW5kZWQuc3RhdGlzdGljcyIKKy0tIGNo ZWNrIFxkdQorQ1JFQVRFIFJPTEUgcmVncmVzc19kdTA7CitDUkVBVEUgUk9MRSByZWdyZXNz X2R1MSBMT0dJTjsKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZHUyIExPR0lOOworQ09NTUVOVCBP TiBST0xFIHJlZ3Jlc3NfZHUwIElTICdEZXNjcmlwdGlvbiBmb3IgcmVncmVzc19kdTAnOwor Q09NTUVOVCBPTiBST0xFIHJlZ3Jlc3NfZHUxIElTICdEZXNjcmlwdGlvbiBmb3IgcmVncmVz c19kdTEnOworQ09NTUVOVCBPTiBST0xFIHJlZ3Jlc3NfZHUyIElTICdEZXNjcmlwdGlvbiBm b3IgcmVncmVzc19kdTInOworR1JBTlQgcmVncmVzc19kdTAgVE8gcmVncmVzc19kdTEgV0lU SCBBRE1JTiBUUlVFLCBJTkhFUklUIEZBTFNFLCBTRVQgRkFMU0U7CitHUkFOVCByZWdyZXNz X2R1MCBUTyByZWdyZXNzX2R1MiBXSVRIIEFETUlOIFRSVUUsIElOSEVSSVQgRkFMU0UsIFNF VCBUUlVFOworR1JBTlQgcGdfbW9uaXRvciBUTyByZWdyZXNzX2R1MTsKK0dSQU5UIHJlZ3Jl c3NfZHUwIFRPIHJlZ3Jlc3NfZHUxIFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgVFJVRSwg U0VUIEZBTFNFIEdSQU5URUQgQlkgcmVncmVzc19kdTE7CitHUkFOVCByZWdyZXNzX2R1MCBU TyByZWdyZXNzX2R1MiBXSVRIIEFETUlOIEZBTFNFLCBJTkhFUklUIEZBTFNFLCBTRVQgRkFM U0UgR1JBTlRFRCBCWSByZWdyZXNzX2R1MTsKK0dSQU5UIHJlZ3Jlc3NfZHUwIFRPIHJlZ3Jl c3NfZHUyIFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgRkFMU0UsIFNFVCBUUlVFIEdSQU5U RUQgQlkgcmVncmVzc19kdTI7CitHUkFOVCByZWdyZXNzX2R1MCBUTyByZWdyZXNzX2R1MSBX SVRIIEFETUlOIFRSVUUsIElOSEVSSVQgVFJVRSwgU0VUIFRSVUUgR1JBTlRFRCBCWSByZWdy ZXNzX2R1MjsKK1xkdSByZWdyZXNzKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIExp c3Qgb2Ygcm9sZXMKKyAgUm9sZSBuYW1lICB8ICBBdHRyaWJ1dGVzICB8ICAgICAgICAgICAg ICAgTWVtYmVyIG9mICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVz c19kdTAgfCBDYW5ub3QgbG9naW4gfCAKKyByZWdyZXNzX2R1MSB8ICAgICAgICAgICAgICB8 IHBnX21vbml0b3IgZnJvbSBwYWwgKGksIHMpICAgICAgICAgICAgKworICAgICAgICAgICAg IHwgICAgICAgICAgICAgIHwgcmVncmVzc19kdTAgZnJvbSBwYWwgKGEpICAgICAgICAgICAg ICArCisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCByZWdyZXNzX2R1MCBmcm9tIHJl Z3Jlc3NfZHUxIChpKSAgICAgICsKKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IHJl Z3Jlc3NfZHUwIGZyb20gcmVncmVzc19kdTIgKGEsIGksIHMpCisgcmVncmVzc19kdTIgfCAg ICAgICAgICAgICAgfCByZWdyZXNzX2R1MCBmcm9tIHBhbCAoYSwgcykgICAgICAgICAgICsK KyAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IHJlZ3Jlc3NfZHUwIGZyb20gcmVncmVz c19kdTEgKGVtcHR5KSAgKworICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgcmVncmVz c19kdTAgZnJvbSByZWdyZXNzX2R1MiAocykKKworXGR1KyByZWdyZXNzKgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3Qgb2Ygcm9sZXMKKyAgUm9s ZSBuYW1lICB8ICBBdHRyaWJ1dGVzICB8ICAgICAgICAgICAgICAgTWVtYmVyIG9mICAgICAg ICAgICAgICAgIHwgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgIAorLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgcmVncmVzc19kdTAgfCBDYW5u b3QgbG9naW4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERl c2NyaXB0aW9uIGZvciByZWdyZXNzX2R1MAorIHJlZ3Jlc3NfZHUxIHwgICAgICAgICAgICAg IHwgcGdfbW9uaXRvciBmcm9tIHBhbCAoaSwgcykgICAgICAgICAgICArfCBEZXNjcmlwdGlv biBmb3IgcmVncmVzc19kdTEKKyAgICAgICAgICAgICB8ICAgICAgICAgICAgICB8IHJlZ3Jl c3NfZHUwIGZyb20gcGFsIChhKSAgICAgICAgICAgICAgK3wgCisgICAgICAgICAgICAgfCAg ICAgICAgICAgICAgfCByZWdyZXNzX2R1MCBmcm9tIHJlZ3Jlc3NfZHUxIChpKSAgICAgICt8 IAorICAgICAgICAgICAgIHwgICAgICAgICAgICAgIHwgcmVncmVzc19kdTAgZnJvbSByZWdy ZXNzX2R1MiAoYSwgaSwgcykgfCAKKyByZWdyZXNzX2R1MiB8ICAgICAgICAgICAgICB8IHJl Z3Jlc3NfZHUwIGZyb20gcGFsIChhLCBzKSAgICAgICAgICAgK3wgRGVzY3JpcHRpb24gZm9y IHJlZ3Jlc3NfZHUyCisgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCByZWdyZXNzX2R1 MCBmcm9tIHJlZ3Jlc3NfZHUxIChlbXB0eSkgICt8IAorICAgICAgICAgICAgIHwgICAgICAg ICAgICAgIHwgcmVncmVzc19kdTAgZnJvbSByZWdyZXNzX2R1MiAocykgICAgICAgfCAKKwor UkVWT0tFIHJlZ3Jlc3NfZHUwIEZST00gcmVncmVzc19kdTEgQ0FTQ0FERTsKK1JFVk9LRSBy ZWdyZXNzX2R1MCBGUk9NIHJlZ3Jlc3NfZHUyIENBU0NBREU7CitEUk9QIFJPTEUgcmVncmVz c19kdTI7CitEUk9QIFJPTEUgcmVncmVzc19kdTE7CitEUk9QIFJPTEUgcmVncmVzc19kdTA7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wc3FsLnNxbCBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCmluZGV4IDJkYTk2NjVhMTkuLmRjYTFlZGUwYWIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL3BzcWwuc3FsCkBAIC0xNzkxLDMgKzE3OTEsMjggQEAgRFJPUCBGVU5D VElPTiBwc3FsX2Vycm9yOwogXGRQICJuby5zdWNoLmRhdGFiYXNlIi4ibm8uc3VjaC5zY2hl bWEiLiJuby5zdWNoLnBhcnRpdGlvbmVkLnJlbGF0aW9uIgogXGRUICJuby5zdWNoLmRhdGFi YXNlIi4ibm8uc3VjaC5zY2hlbWEiLiJuby5zdWNoLmRhdGEudHlwZSIKIFxkWCAibm8uc3Vj aC5kYXRhYmFzZSIuIm5vLnN1Y2guc2NoZW1hIi4ibm8uc3VjaC5leHRlbmRlZC5zdGF0aXN0 aWNzIgorCistLSBjaGVjayBcZHUKK0NSRUFURSBST0xFIHJlZ3Jlc3NfZHUwOworQ1JFQVRF IFJPTEUgcmVncmVzc19kdTEgTE9HSU47CitDUkVBVEUgUk9MRSByZWdyZXNzX2R1MiBMT0dJ TjsKK0NPTU1FTlQgT04gUk9MRSByZWdyZXNzX2R1MCBJUyAnRGVzY3JpcHRpb24gZm9yIHJl Z3Jlc3NfZHUwJzsKK0NPTU1FTlQgT04gUk9MRSByZWdyZXNzX2R1MSBJUyAnRGVzY3JpcHRp b24gZm9yIHJlZ3Jlc3NfZHUxJzsKK0NPTU1FTlQgT04gUk9MRSByZWdyZXNzX2R1MiBJUyAn RGVzY3JpcHRpb24gZm9yIHJlZ3Jlc3NfZHUyJzsKKworR1JBTlQgcmVncmVzc19kdTAgVE8g cmVncmVzc19kdTEgV0lUSCBBRE1JTiBUUlVFLCBJTkhFUklUIEZBTFNFLCBTRVQgRkFMU0U7 CitHUkFOVCByZWdyZXNzX2R1MCBUTyByZWdyZXNzX2R1MiBXSVRIIEFETUlOIFRSVUUsIElO SEVSSVQgRkFMU0UsIFNFVCBUUlVFOworR1JBTlQgcGdfbW9uaXRvciBUTyByZWdyZXNzX2R1 MTsKK0dSQU5UIHJlZ3Jlc3NfZHUwIFRPIHJlZ3Jlc3NfZHUxIFdJVEggQURNSU4gRkFMU0Us IElOSEVSSVQgVFJVRSwgU0VUIEZBTFNFIEdSQU5URUQgQlkgcmVncmVzc19kdTE7CitHUkFO VCByZWdyZXNzX2R1MCBUTyByZWdyZXNzX2R1MiBXSVRIIEFETUlOIEZBTFNFLCBJTkhFUklU IEZBTFNFLCBTRVQgRkFMU0UgR1JBTlRFRCBCWSByZWdyZXNzX2R1MTsKK0dSQU5UIHJlZ3Jl c3NfZHUwIFRPIHJlZ3Jlc3NfZHUyIFdJVEggQURNSU4gRkFMU0UsIElOSEVSSVQgRkFMU0Us IFNFVCBUUlVFIEdSQU5URUQgQlkgcmVncmVzc19kdTI7CitHUkFOVCByZWdyZXNzX2R1MCBU TyByZWdyZXNzX2R1MSBXSVRIIEFETUlOIFRSVUUsIElOSEVSSVQgVFJVRSwgU0VUIFRSVUUg R1JBTlRFRCBCWSByZWdyZXNzX2R1MjsKKworXGR1IHJlZ3Jlc3MqCitcZHUrIHJlZ3Jlc3Mq CisKK1JFVk9LRSByZWdyZXNzX2R1MCBGUk9NIHJlZ3Jlc3NfZHUxIENBU0NBREU7CitSRVZP S0UgcmVncmVzc19kdTAgRlJPTSByZWdyZXNzX2R1MiBDQVNDQURFOworRFJPUCBST0xFIHJl Z3Jlc3NfZHUyOworRFJPUCBST0xFIHJlZ3Jlc3NfZHUxOworRFJPUCBST0xFIHJlZ3Jlc3Nf ZHUwOwotLSAKMi4zNC4xCgo= --------------rxA6CQv5ehxGHZKiJig20KwE--