From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pbs-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 3BE671FF15F
	for <inbox@lore.proxmox.com>; Mon,  2 Dec 2024 13:59:40 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 1463A179FD;
	Mon,  2 Dec 2024 13:59:46 +0100 (CET)
From: Shannon Sterz <s.sterz@proxmox.com>
To: pbs-devel@lists.proxmox.com
Date: Mon,  2 Dec 2024 13:58:56 +0100
Message-Id: <20241202125859.191455-1-s.sterz@proxmox.com>
X-Mailer: git-send-email 2.39.5
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.038 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: [pbs-devel] [PATCH proxmox v2 1/4] sendmail: add sendmail crate
X-BeenThere: pbs-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox Backup Server development discussion
 <pbs-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pbs-devel/>
List-Post: <mailto:pbs-devel@lists.proxmox.com>
List-Help: <mailto:pbs-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel>, 
 <mailto:pbs-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox Backup Server development discussion
 <pbs-devel@lists.proxmox.com>
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

YWRkIHRoZSBgcHJveG1veC1zZW5kbWFpbGAgY3JhdGUgdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8g
c2VuZCBtYWlscyB2aWEKdGhlIGBzZW5kbWFpbGAgdXRpbGl0eS4gZmVhdHVyZXMgaW5jbHVkZToK
Ci0gbXVsdGlwYXJ0L2FsdGVybmF0aXZlIHN1cHBvcnQgZm9yIGh0bWwrcGxhaW4gdGV4dCBtYWls
cwotIG11bHRpcGFydC9taXhlZCBzdXBwb3J0IGZvciBtYWlscyB3aXRoIGF0dGFjaG1lbnRzCi0g
YXV0b21hdGljIG5lc3Rpbmcgb2YgbXVsdGlwYXJ0L2FsdGVybmF0aXZlIGFuZCBtdWx0aXBhcnQv
bWl4ZWQgcGFydHMKLSBtYXNrcyBtdWx0aXBsZSByZWNlaXZlcnMgYnkgZGVmYXVsdCwgY2FuIGJl
IGRpc2FibGVkCi0gZW5jb2RpbmcgU3ViamVjdCwgVG8sIEZyb20sIGFuZCBhdHRhY2htZW50IGZp
bGUgbmFtZXMgY29ycmVjdGx5Ci0gYWRkaW5nIGFuIGBBdXRvLVN1Ym1pdHRlZGAgaGVhZGVyIHRv
IGF2b2lkIHRyaWdnZXJpbmcgYXV0b21hdGVkIG1haWxzCgphbHNvIGluY2x1ZGVzIHNldmVyYWwg
dGVzdHMgdG8gZW5zdXJlIHRoYXQgbWFpbHMgYXJlIGZvcm1hdHRlZApjb3JyZWN0bHkuCgpTaWdu
ZWQtb2ZmLWJ5OiBTaGFubm9uIFN0ZXJ6IDxzLnN0ZXJ6QHByb3htb3guY29tPgotLS0KCmNoYW5n
ZXMgc2luY2UgdjEgKHRoYW5rcyBAIEx1a2FzIFdhZ25lciA8bC53YWduZXJAcHJveG1veC5jb20+
KToKICAgIC0gbWFrZSBpdCBwb3NzaWJsZSB0byBkaXNhYmxlIHJlY2VpdmVyIHJlZGFjdGlvbgog
ICAgLSByZS1zdHJ1Y3R1cmUgdGhlIG1hbCBmb3JtYXR0aW5nIGNvZGU7IG1haW5seSBzcGxpdCBp
dCBpbnRvCiAgICAgIG11bHRpcGxlIGZ1bmN0aW9ucyAoYGZvcm1hdF9oZWFkZXJgLCBgZm9ybWF0
X2JvZHlgLAogICAgICBgZm9ybWF0X2F0dGFjaG1lbnRgIGV0Yy4pCiAgICAtIGZpeCBtdWx0aXBs
ZSB0eXBvcwoKIENhcmdvLnRvbWwgICAgICAgICAgICAgICAgICB8ICAgMiArCiBwcm94bW94LXNl
bmRtYWlsL0NhcmdvLnRvbWwgfCAgMTYgKwogcHJveG1veC1zZW5kbWFpbC9zcmMvbGliLnJzIHwg
NzY5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2Vk
LCA3ODcgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2VuZG1haWwv
Q2FyZ28udG9tbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHByb3htb3gtc2VuZG1haWwvc3JjL2xpYi5y
cwoKZGlmZiAtLWdpdCBhL0NhcmdvLnRvbWwgYi9DYXJnby50b21sCmluZGV4IDg0ZmJlOTc5Li5i
NjJmY2Q1MCAxMDA2NDQKLS0tIGEvQ2FyZ28udG9tbAorKysgYi9DYXJnby50b21sCkBAIC0zMyw2
ICszMyw3IEBAIG1lbWJlcnMgPSBbCiAgICAgInByb3htb3gtcnJkLWFwaS10eXBlcyIsCiAgICAg
InByb3htb3gtc2NoZW1hIiwKICAgICAicHJveG1veC1zZWN0aW9uLWNvbmZpZyIsCisgICAgInBy
b3htb3gtc2VuZG1haWwiLAogICAgICJwcm94bW94LXNlcmRlIiwKICAgICAicHJveG1veC1zaGFy
ZWQtY2FjaGUiLAogICAgICJwcm94bW94LXNoYXJlZC1tZW1vcnkiLApAQCAtMTM4LDYgKzEzOSw3
IEBAIHByb3htb3gtcmVzdC1zZXJ2ZXIgPSB7IHZlcnNpb24gPSAiMC44LjAiLCBwYXRoID0gInBy
b3htb3gtcmVzdC1zZXJ2ZXIiIH0KIHByb3htb3gtcm91dGVyID0geyB2ZXJzaW9uID0gIjMuMC4w
IiwgcGF0aCA9ICJwcm94bW94LXJvdXRlciIgfQogcHJveG1veC1zY2hlbWEgPSB7IHZlcnNpb24g
PSAiMy4xLjIiLCBwYXRoID0gInByb3htb3gtc2NoZW1hIiB9CiBwcm94bW94LXNlY3Rpb24tY29u
ZmlnID0geyB2ZXJzaW9uID0gIjIuMS4wIiwgcGF0aCA9ICJwcm94bW94LXNlY3Rpb24tY29uZmln
IiB9Citwcm94bW94LXNlbmRtYWlsID0geyB2ZXJzaW9uID0gIjAuMS4wIiwgcGF0aCA9ICJwcm94
bW94LXNlbmRtYWlsIiB9CiBwcm94bW94LXNlcmRlID0geyB2ZXJzaW9uID0gIjAuMS4xIiwgcGF0
aCA9ICJwcm94bW94LXNlcmRlIiwgZmVhdHVyZXMgPSBbICJzZXJkZV9qc29uIiBdIH0KIHByb3ht
b3gtc2hhcmVkLW1lbW9yeSA9IHsgdmVyc2lvbiA9ICIwLjMuMCIsIHBhdGggPSAicHJveG1veC1z
aGFyZWQtbWVtb3J5IiB9CiBwcm94bW94LXNvcnRhYmxlLW1hY3JvID0geyB2ZXJzaW9uID0gIjAu
MS4zIiwgcGF0aCA9ICJwcm94bW94LXNvcnRhYmxlLW1hY3JvIiB9CmRpZmYgLS1naXQgYS9wcm94
bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwgYi9wcm94bW94LXNlbmRtYWlsL0NhcmdvLnRvbWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLjc5MGIzMjRiCi0tLSAvZGV2L251bGwK
KysrIGIvcHJveG1veC1zZW5kbWFpbC9DYXJnby50b21sCkBAIC0wLDAgKzEsMTYgQEAKK1twYWNr
YWdlXQorbmFtZSA9ICJwcm94bW94LXNlbmRtYWlsIgordmVyc2lvbiA9ICIwLjEuMCIKK2F1dGhv
cnMud29ya3NwYWNlID0gdHJ1ZQorZWRpdGlvbi53b3Jrc3BhY2UgPSB0cnVlCitsaWNlbnNlLndv
cmtzcGFjZSA9IHRydWUKK3JlcG9zaXRvcnkud29ya3NwYWNlID0gdHJ1ZQoraG9tZXBhZ2Uud29y
a3NwYWNlID0gdHJ1ZQorZXhjbHVkZS53b3Jrc3BhY2UgPSB0cnVlCitydXN0LXZlcnNpb24ud29y
a3NwYWNlID0gdHJ1ZQorCitbZGVwZW5kZW5jaWVzXQorYW55aG93ID0geyB3b3Jrc3BhY2UgPSB0
cnVlIH0KK2Jhc2U2NCA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9CitwZXJjZW50LWVuY29kaW5nID0g
eyB3b3Jrc3BhY2UgPSB0cnVlIH0KK3Byb3htb3gtdGltZSA9IHsgd29ya3NwYWNlID0gdHJ1ZSB9
CmRpZmYgLS1naXQgYS9wcm94bW94LXNlbmRtYWlsL3NyYy9saWIucnMgYi9wcm94bW94LXNlbmRt
YWlsL3NyYy9saWIucnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAuLmE0MmJi
MGNkCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1veC1zZW5kbWFpbC9zcmMvbGliLnJzCkBAIC0w
LDAgKzEsNzY5IEBACisvLyEKKy8vISBUaGlzIGxpYnJhcnkgaW1wbGVtZW50cyB0aGUgW2BNYWls
YF0gdHJhaXQgd2hpY2ggbWFrZXMgaXQgZWFzeSB0byBzZW5kIGVtYWlscyB3aXRoIGF0dGFjaG1l
bnRzCisvLyEgYW5kIGFsdGVybmF0aXZlIGh0bWwgcGFydHMgdG8gb25lIG9yIG11bHRpcGxlIHJl
Y2VpdmVycyB2aWEgYGBzZW5kbWFpbGBgLgorLy8hCisKK3VzZSBzdGQ6OmlvOjpXcml0ZTsKK3Vz
ZSBzdGQ6OnByb2Nlc3M6OntDb21tYW5kLCBTdGRpb307CisKK3VzZSBhbnlob3c6OntiYWlsLCBD
b250ZXh0LCBFcnJvcn07Cit1c2UgcGVyY2VudF9lbmNvZGluZzo6e3V0ZjhfcGVyY2VudF9lbmNv
ZGUsIEFzY2lpU2V0LCBDT05UUk9MU307CisKKy8vIENoYXJhY3RlcnMgaW4gdGhpcyBzZXQgd2ls
bCBiZSBlbmNvZGVkLCBzbyByZXByb2R1Y2UgdGhlIGludmVyc2Ugb2YgdGhlIHNldCBkZXNjcmli
ZWQgYnkgUkZDNTk4NworLy8gU2VjdGlvbiAzLjIuMSBgYXR0ci1jaGFyYCwgYXMgdGhhdCBkZXNj
cmliZXMgYWxsIGNoYXJhY3RlcnMgdGhhdCAqKmRvbid0KiogbmVlZCBlbmNvZGluZzoKKy8vCisv
LyBodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzU5ODcjc2VjdGlvbi0z
LjIuMQorLy8KKy8vIGBDT05UUk9MU2AgY29udGFpbnMgYWxsIGNvbnRyb2wgY2hhcmFjdGVycyAw
eDAwIC0gMHgxZiBhbmQgMHg3ZiBhcyB3ZWxsIGFzIGFsbCBub24tYXNjaWkKKy8vIGNoYXJhY3Rl
cnMsIHNvIHdlIG5lZWQgdG8gYWRkIGFsbCBjaGFyYWN0ZXJzIGhlcmUgdGhhdCBhcmVuJ3QgZGVz
Y3JpYmVkIGluIGBhdHRyLWNoYXJgIHRoYXQgYXJlCisvLyBpbiB0aGUgcmFuZ2UgMHgyMC0weDdl
Citjb25zdCBSRkM1OTg3U0VUOiAmQXNjaWlTZXQgPSAmQ09OVFJPTFMKKyAgICAuYWRkKGInICcp
CisgICAgLmFkZChiJyInKQorICAgIC5hZGQoYiclJykKKyAgICAuYWRkKGInJicpCisgICAgLmFk
ZChiJ1wnJykKKyAgICAuYWRkKGInKCcpCisgICAgLmFkZChiJyknKQorICAgIC5hZGQoYicqJykK
KyAgICAuYWRkKGInLCcpCisgICAgLmFkZChiJy8nKQorICAgIC5hZGQoYic6JykKKyAgICAuYWRk
KGInOycpCisgICAgLmFkZChiJzwnKQorICAgIC5hZGQoYic9JykKKyAgICAuYWRkKGInPicpCisg
ICAgLmFkZChiJz8nKQorICAgIC5hZGQoYidAJykKKyAgICAuYWRkKGInWycpCisgICAgLmFkZChi
J1xcJykKKyAgICAuYWRkKGInXScpCisgICAgLmFkZChiJ3snKQorICAgIC5hZGQoYid9Jyk7CisK
K3N0cnVjdCBSZWNpcGllbnQgeworICAgIG5hbWU6IE9wdGlvbjxTdHJpbmc+LAorICAgIGVtYWls
OiBTdHJpbmcsCit9CisKK2ltcGwgUmVjaXBpZW50IHsKKyAgICAvLyBSZXR1cm5zIHRydWUgaWYg
dGhlIG5hbWUgb2YgdGhlIHJlY2lwaWVudCBpcyB1bmRlZmluZWQgb3IgY29udGFpbnMgb25seSBh
c2NpaSBjaGFyYWN0ZXJzCisgICAgZm4gaXNfYXNjaWkoJnNlbGYpIC0+IGJvb2wgeworICAgICAg
ICBzZWxmLm5hbWUuYXNfcmVmKCkubWFwKHxufCBuLmlzX2FzY2lpKCkpLnVud3JhcF9vcih0cnVl
KQorICAgIH0KKworICAgIGZuIGZvcm1hdF9yZWNpcGllbnQoJnNlbGYpIC0+IFN0cmluZyB7Cisg
ICAgICAgIGlmIGxldCBTb21lKG5hbWUpID0gJnNlbGYubmFtZSB7CisgICAgICAgICAgICBpZiAh
bmFtZS5pc19hc2NpaSgpIHsKKyAgICAgICAgICAgICAgICBmb3JtYXQhKCI9P3V0Zi04P0I/e30/
PSA8e30+IiwgYmFzZTY0OjplbmNvZGUobmFtZSksIHNlbGYuZW1haWwpCisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIGZvcm1hdCEoInt9IDx7fT4iLCBuYW1lLCBzZWxmLmVt
YWlsKQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VsZi5l
bWFpbC50b19zdHJpbmcoKQorICAgICAgICB9CisgICAgfQorfQorCitzdHJ1Y3QgQXR0YWNobWVu
dDwnYT4geworICAgIGZpbGVuYW1lOiBTdHJpbmcsCisgICAgbWltZTogU3RyaW5nLAorICAgIGNv
bnRlbnQ6ICYnYSBbdThdLAorfQorCitpbXBsPCdhPiBBdHRhY2htZW50PCdhPiB7CisgICAgZm4g
Zm9ybWF0X2F0dGFjaG1lbnQoJnNlbGYsIGZpbGVfYm91bmRhcnk6ICZzdHIpIC0+IFN0cmluZyB7
CisgICAgICAgIGxldCBtdXQgYXR0YWNobWVudCA9IFN0cmluZzo6bmV3KCk7CisKKyAgICAgICAg
YXR0YWNobWVudC5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxlX2JvdW5kYXJ5fVxuIikpOwor
ICAgICAgICBhdHRhY2htZW50LnB1c2hfc3RyKCZmb3JtYXQhKAorICAgICAgICAgICAgIkNvbnRl
bnQtVHlwZToge307IG5hbWU9XCJ7fVwiXG4iLAorICAgICAgICAgICAgc2VsZi5taW1lLCBzZWxm
LmZpbGVuYW1lCisgICAgICAgICkpOworCisgICAgICAgIC8vIGJvdGggYGZpbGVuYW1lYCBhbmQg
YGZpbGVuYW1lKmAgYXJlIGluY2x1ZGVkIGZvciBhZGRpdGlvbmFsIGNvbXBhdGFiaWxpdHkKKyAg
ICAgICAgYXR0YWNobWVudC5wdXNoX3N0cigmZm9ybWF0ISgKKyAgICAgICAgICAgICJDb250ZW50
LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT1cInt9XCI7IGZpbGVuYW1lKj1VVEYt
OCcne31cbiIsCisgICAgICAgICAgICBzZWxmLmZpbGVuYW1lLAorICAgICAgICAgICAgdXRmOF9w
ZXJjZW50X2VuY29kZSgmc2VsZi5maWxlbmFtZSwgUkZDNTk4N1NFVCkKKyAgICAgICAgKSk7Cisg
ICAgICAgIGF0dGFjaG1lbnQucHVzaF9zdHIoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJh
c2U2NFxuXG4iKTsKKworICAgICAgICAvLyBiYXNlNjQgZW5jb2RlIHRoZSBhdHRhY2htZW50IGFu
ZCBoYXJkLXdyYXAgdGhlIGJhc2U2NCBlbmNvZGVkIHN0cmluZyBldmVyeSA3MgorICAgICAgICAv
LyBjaGFyYWN0ZXJzLiB0aGlzIGltcHJvdmVzIGNvbXBhdGFiaWxpdHkuCisgICAgICAgIGF0dGFj
aG1lbnQucHVzaF9zdHIoCisgICAgICAgICAgICAmYmFzZTY0OjplbmNvZGUoc2VsZi5jb250ZW50
KQorICAgICAgICAgICAgICAgIC5jaGFycygpCisgICAgICAgICAgICAgICAgLmVudW1lcmF0ZSgp
CisgICAgICAgICAgICAgICAgLmZsYXRfbWFwKHwoaSwgYyl8IHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgaSAhPSAwICYmIGkgJSA3MiA9PSAwIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNv
bWUoJ1xuJykKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIE5vbmUKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAu
aW50b19pdGVyKCkKKyAgICAgICAgICAgICAgICAgICAgLmNoYWluKHN0ZDo6aXRlcjo6b25jZShj
KSkKKyAgICAgICAgICAgICAgICB9KQorICAgICAgICAgICAgICAgIC5jb2xsZWN0Ojo8U3RyaW5n
PigpLAorICAgICAgICApOworCisgICAgICAgIGF0dGFjaG1lbnQKKyAgICB9Cit9CisKKy8vLyBU
aGlzIHN0cnVjdCBpcyB1c2VkIHRvIGRlZmluZSBtYWlscyB0aGF0IGFyZSB0byBiZSBzZW50IHZp
YSB0aGUgYHNlbmRtYWlsYCBjb21tYW5kLgorcHViIHN0cnVjdCBNYWlsPCdhPiB7CisgICAgbWFp
bF9hdXRob3I6IFN0cmluZywKKyAgICBtYWlsX2Zyb206IFN0cmluZywKKyAgICBzdWJqZWN0OiBT
dHJpbmcsCisgICAgdG86IFZlYzxSZWNpcGllbnQ+LAorICAgIGJvZHlfdHh0OiBTdHJpbmcsCisg
ICAgYm9keV9odG1sOiBPcHRpb248U3RyaW5nPiwKKyAgICBhdHRhY2htZW50czogVmVjPEF0dGFj
aG1lbnQ8J2E+PiwKKyAgICBtYXNrX3BhcnRpY2lwYW50czogYm9vbCwKK30KKworaW1wbDwnYT4g
TWFpbDwnYT4geworICAgIC8vLyBDcmVhdGVzIGEgbmV3IG1haWwgd2l0aCBhIG1haWwgYXV0aG9y
LCBmcm9tIGFkZHJlc3MsIHN1YmplY3QgbGluZSBhbmQgYSBwbGFpbiB0ZXh0IGJvZHkuCisgICAg
Ly8vCisgICAgLy8vIE5vdGU6IElmIHRoZSBhdXRob3IncyBuYW1lIG9yIHRoZSBzdWJqZWN0IGxp
bmUgY29udGFpbnMgVVRGLTggY2hhcmFjdGVycyB0aGV5IHdpbGwgYmUKKyAgICAvLy8gYXBwcm9w
cmlhdGVseSBlbmNvZGVkLgorICAgIHB1YiBmbiBuZXcobWFpbF9hdXRob3I6ICZzdHIsIG1haWxf
ZnJvbTogJnN0ciwgc3ViamVjdDogJnN0ciwgYm9keV90eHQ6ICZzdHIpIC0+IFNlbGYgeworICAg
ICAgICBTZWxmIHsKKyAgICAgICAgICAgIG1haWxfYXV0aG9yOiBtYWlsX2F1dGhvci50b19zdHJp
bmcoKSwKKyAgICAgICAgICAgIG1haWxfZnJvbTogbWFpbF9mcm9tLnRvX3N0cmluZygpLAorICAg
ICAgICAgICAgc3ViamVjdDogc3ViamVjdC50b19zdHJpbmcoKSwKKyAgICAgICAgICAgIHRvOiBW
ZWM6Om5ldygpLAorICAgICAgICAgICAgYm9keV90eHQ6IGJvZHlfdHh0LnRvX3N0cmluZygpLAor
ICAgICAgICAgICAgYm9keV9odG1sOiBOb25lLAorICAgICAgICAgICAgYXR0YWNobWVudHM6IFZl
Yzo6bmV3KCksCisgICAgICAgICAgICBtYXNrX3BhcnRpY2lwYW50czogdHJ1ZSwKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50IHRvIHRoZSBtYWlsIHdpdGhvdXQg
c3BlY2lmeWluZyBhIG5hbWUgc2VwYXJhdGVseS4KKyAgICAvLy8KKyAgICAvLy8gTm90ZTogTm8g
Zm9ybWF0dGluZyBvciBlbmNvZGluZyB3aWxsIGJlIGRvbmUgaGVyZSwgdGhlIHZhbHVlIHdpbGwg
YmUgcGFzc2VkIHRvIHRoZSBgVG86YAorICAgIC8vLyBoZWFkZXIgZGlyZWN0bHkuCisgICAgcHVi
IGZuIGFkZF9yZWNpcGllbnQoJm11dCBzZWxmLCBlbWFpbDogJnN0cikgeworICAgICAgICBzZWxm
LnRvLnB1c2goUmVjaXBpZW50IHsKKyAgICAgICAgICAgIG5hbWU6IE5vbmUsCisgICAgICAgICAg
ICBlbWFpbDogZW1haWwudG9fc3RyaW5nKCksCisgICAgICAgIH0pOworICAgIH0KKworICAgIC8v
LyBCdWlsZGVyLXBhdHRlcm4gbWV0aG9kIHRvIGNvbnZlbmllbnRseSBhZGQgYSByZWNpcGllbnQg
dG8gYW4gZW1haWwgd2l0aG91dCBzcGVjaWZ5aW5nIGEKKyAgICAvLy8gbmFtZSBzZXBhcmF0ZWx5
LgorICAgIC8vLworICAgIC8vLyBOb3RlOiBObyBmb3JtYXR0aW5nIG9yIGVuY29kaW5nIHdpbGwg
YmUgZG9uZSBoZXJlLCB0aGUgdmFsdWUgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpgCisgICAg
Ly8vIGhlYWRlciBkaXJlY3RseS4KKyAgICBwdWIgZm4gd2l0aF9yZWNpcGllbnQobXV0IHNlbGYs
IGVtYWlsOiAmc3RyKSAtPiBTZWxmIHsKKyAgICAgICAgc2VsZi5hZGRfcmVjaXBpZW50KGVtYWls
KTsKKyAgICAgICAgc2VsZgorICAgIH0KKworICAgIC8vLyBBZGRzIGEgcmVjaXBpZW50IHRvIHRo
ZSBtYWlsIHdpdGggYSBuYW1lLgorICAgIC8vLworICAgIC8vLyBOb3RlczoKKyAgICAvLy8KKyAg
ICAvLy8gLSBJZiB0aGUgbmFtZSBjb250YWlucyBVVEYtOCBjaGFyYWN0ZXJzIGl0IHdpbGwgYmUg
ZW5jb2RlZC4gVGhlbiB0aGUgcG9zc2libHkgZW5jb2RlZCBuYW1lCisgICAgLy8vICAgYW5kIG5v
bi1lbmNvZGVkIGVtYWlsIGFkZHJlc3Mgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGBUbzpgIGhlYWRl
ciBpbiB0aGlzIGZvcm1hdDoKKyAgICAvLy8gICBge2VuY29kZWRfbmFtZX0gPHtlbWFpbH0+YAor
ICAgIC8vLyAtIElmIG11bHRpcGxlIHJlY2VpdmVycyBhcmUgc3BlY2lmaWVkLCB0aGV5IHdpbGwg
YmUgbWFza2VkIHNvIGFzIG5vdCB0byBkaXNjbG9zZSB0aGVtIHRvCisgICAgLy8vICAgb3RoZXIg
cmVjZWl2ZXJzLiBUaGlzIGNhbiBiZSBkaXNhYmxlZCB2aWEgW2BNYWlsOjp1bm1hc2tfcmVjaXBp
ZW50c2BdIG9yCisgICAgLy8vICAgW2BNYWlsOjp3aXRoX3VubWFza2VkX3JlY2lwaWVudHNgXS4K
KyAgICBwdWIgZm4gYWRkX3JlY2lwaWVudF9hbmRfbmFtZSgmbXV0IHNlbGYsIG5hbWU6ICZzdHIs
IGVtYWlsOiAmc3RyKSB7CisgICAgICAgIHNlbGYudG8ucHVzaChSZWNpcGllbnQgeworICAgICAg
ICAgICAgbmFtZTogU29tZShuYW1lLnRvX3N0cmluZygpKSwKKyAgICAgICAgICAgIGVtYWlsOiBl
bWFpbC50b19zdHJpbmcoKSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgLy8vIEJ1aWxkZXIt
c3R5bGUgbWV0aG9kIHRvIGNvbnZlbmllbnRseSBhZGQgYSByZWNpcGllbnQgd2l0aCBhIG5hbWUg
dG8gYW4gZW1haWwuCisgICAgLy8vCisgICAgLy8vIE5vdGVzOgorICAgIC8vLworICAgIC8vLyAt
IElmIHRoZSBuYW1lIGNvbnRhaW5zIFVURi04IGNoYXJhY3RlcnMgaXQgd2lsbCBiZSBlbmNvZGVk
LiBUaGVuIHRoZSBwb3NzaWJseSBlbmNvZGVkIG5hbWUKKyAgICAvLy8gICBhbmQgbm9uLWVuY29k
ZWQgZW1haWwgYWRkcmVzcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYFRvOmAgaGVhZGVyIGluIHRo
aXMgZm9ybWF0OgorICAgIC8vLyAgIGB7ZW5jb2RlZF9uYW1lfSA8e2VtYWlsfT5gCisgICAgLy8v
IC0gSWYgbXVsdGlwbGUgcmVjZWl2ZXJzIGFyZSBzcGVjaWZpZWQsIHRoZXkgd2lsbCBiZSBtYXNr
ZWQgc28gYXMgbm90IHRvIGRpc2Nsb3NlIHRoZW0gdG8KKyAgICAvLy8gICBvdGhlciByZWNlaXZl
cnMuIFRoaXMgY2FuIGJlIGRpc2FibGVkIHZpYSBbYE1haWw6OnVubWFza19yZWNpcGllbnRzYF0g
b3IKKyAgICAvLy8gICBbYE1haWw6OndpdGhfdW5tYXNrZWRfcmVjaXBpZW50c2BdLgorICAgIHB1
YiBmbiB3aXRoX3JlY2lwaWVudF9hbmRfbmFtZShtdXQgc2VsZiwgbmFtZTogJnN0ciwgZW1haWw6
ICZzdHIpIC0+IFNlbGYgeworICAgICAgICBzZWxmLmFkZF9yZWNpcGllbnRfYW5kX25hbWUobmFt
ZSwgZW1haWwpOworICAgICAgICBzZWxmCisgICAgfQorCisgICAgLy8vIEFkZHMgYW4gYXR0YWNo
bWVudCB3aXRoIGEgc3BlY2lmaWVkIGZpbGUgbmFtZSBhbmQgbWltZS10eXBlIHRvIGFuIGVtYWls
LgorICAgIC8vLworICAgIC8vLyBOb3RlOiBBZGRpbmcgYXR0YWNobWVudHMgdHJpZ2dlcnMgYG11
bHRpcGFydC9taXhlZGAgbW9kZS4KKyAgICBwdWIgZm4gYWRkX2F0dGFjaG1lbnQoJm11dCBzZWxm
LCBmaWxlbmFtZTogJnN0ciwgbWltZV90eXBlOiAmc3RyLCBjb250ZW50OiAmJ2EgW3U4XSkgewor
ICAgICAgICBzZWxmLmF0dGFjaG1lbnRzLnB1c2goQXR0YWNobWVudCB7CisgICAgICAgICAgICBm
aWxlbmFtZTogZmlsZW5hbWUudG9fc3RyaW5nKCksCisgICAgICAgICAgICBtaW1lOiBtaW1lX3R5
cGUudG9fc3RyaW5nKCksCisgICAgICAgICAgICBjb250ZW50LAorICAgICAgICB9KTsKKyAgICB9
CisKKyAgICAvLy8gQnVpbGRlci1zdHlsZSBtZXRob2QgdG8gY29udmVuaWVudGx5IGFkZCBhbiBh
dHRhY2htZW50IHdpdGggYSBzcGVjaWZpYyBmaWxlbmFtZSBhbmQKKyAgICAvLy8gbWltZS10eXBl
IHRvIGFuIGVtYWlsLgorICAgIC8vLworICAgIC8vLyBOb3RlOiBBZGRpbmcgYXR0YWNoZW1lbnRz
IHRyaWdnZXJzIGBtdWx0aXBhcnQvbWl4ZWRgIG1vZGUuCisgICAgcHViIGZuIHdpdGhfYXR0YWNo
bWVudChtdXQgc2VsZiwgZmlsZW5hbWU6ICZzdHIsIG1pbWVfdHlwZTogJnN0ciwgY29udGVudDog
JidhIFt1OF0pIC0+IFNlbGYgeworICAgICAgICBzZWxmLmFkZF9hdHRhY2htZW50KGZpbGVuYW1l
LCBtaW1lX3R5cGUsIGNvbnRlbnQpOworICAgICAgICBzZWxmCisgICAgfQorCisgICAgLy8vIFNl
dCBhbiBhbHRlcm5hdGl2ZSBIVE1MIHBhcnQuCisgICAgLy8vCisgICAgLy8vIE5vdGU6IFRoaXMg
dHJpZ2dlcnMgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgbW9kZS4gSWYgYm90aCBhbiBIVE1MIHBh
cnQgYW5kIGF0IGxlYXN0IG9uZQorICAgIC8vLyBhdHRhY2htZW50IGFyZSBzcGVjaWZpZWQsIHRo
ZSBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYCBwYXJ0IHdpbGwgYmUgbmVzdGVkIHdpdGhpbiB0aGUg
Zmlyc3QKKyAgICAvLy8gYG11bHRpcGFydC9taXhlZGAgcGFydC4gVGhpcyBzaG91bGQgZW5zdXJl
IHRoYXQgdGhlIEhUTUwgaXMgZGlzcGxheWVkIHByb3Blcmx5IGJ5IGNsaWVudCdzCisgICAgLy8v
IHRoYXQgcHJpb3JpdGl6ZSBpdCBvdmVyIHRoZSBwbGFpbiB0ZXh0IHBhcnQgKHNob3VsZCBiZSB0
aGUgZGVmYXVsdCBmb3IgbW9zdCBjbGllbnRzKSB3aGlsZQorICAgIC8vLyBhbHNvIHByb3Blcmx5
IGRpc3BsYXlpbmcgdGhlIGF0dGFjaG1lbnRzLgorICAgIHB1YiBmbiBzZXRfaHRtbF9hbHQoJm11
dCBzZWxmLCBib2R5X2h0bWw6ICZzdHIpIHsKKyAgICAgICAgc2VsZi5ib2R5X2h0bWwucmVwbGFj
ZShib2R5X2h0bWwudG9fc3RyaW5nKCkpOworICAgIH0KKworICAgIC8vLyBCdWlsZGVyLXN0eWxl
IG1ldGhvZCB0byBhZGQgYW4gYWx0ZXJuYXRpdmUgSFRNTCBwYXJ0LgorICAgIC8vLworICAgIC8v
LyBOb3RlOiBUaGlzIHRyaWdnZXJzIGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgIG1vZGUuIElmIGJv
dGggYW4gSFRNTCBwYXJ0IGFuZCBhdCBsZWFzdCBvbmUKKyAgICAvLy8gYXR0YWNobWVudCBhcmUg
c3BlY2lmaWVkLCB0aGUgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWAgcGFydCB3aWxsIGJlIG5lc3Rl
ZCB3aXRoaW4gdGhlIGZpcnN0CisgICAgLy8vIGBtdWx0aXBhcnQvbWl4ZWRgIHBhcnQuIFRoaXMg
c2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBIVE1MIGlzIGRpc3BsYXllZCBwcm9wZXJseSBieSBjbGll
bnQncworICAgIC8vLyB0aGF0IHByaW9yaXRpemUgaXQgb3ZlciB0aGUgcGxhaW4gdGV4dCBwYXJ0
IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZm9yIG1vc3QgY2xpZW50cykgd2hpbGUKKyAgICAvLy8g
YWxzbyBwcm9wZXJseSBkaXNwbGF5aW5nIHRoZSBhdHRhY2htZW50cy4KKyAgICBwdWIgZm4gd2l0
aF9odG1sX2FsdChtdXQgc2VsZiwgYm9keV9odG1sOiAmc3RyKSAtPiBTZWxmIHsKKyAgICAgICAg
c2VsZi5zZXRfaHRtbF9hbHQoYm9keV9odG1sKTsKKyAgICAgICAgc2VsZgorICAgIH0KKworICAg
IC8vLyBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCByZWNpcGllbnRzIG9mIHRoZSBtYWlsIGFy
ZSBub3QgbWFza2VkLiBCZWluZyBhYmxlIHRvIHNlZSBhbGwKKyAgICAvLy8gcmVjaXBpZW50cyBv
ZiBhIG1haWwgY2FuIGJlIGhlbHBmdWwgaW4sIGZvciBleGFtcGxlLCBub3RpZmljYXRpb24gc2Nl
bmFyaW9zLgorICAgIHB1YiBmbiB1bm1hc2tfcmVjaXBpZW50cygmbXV0IHNlbGYpIHsKKyAgICAg
ICAgc2VsZi5tYXNrX3BhcnRpY2lwYW50cyA9IGZhbHNlOworICAgIH0KKworICAgIC8vLyBCdWls
ZGVyLXN0eWxlIGZ1bmN0aW9uIHRoYXQgZW5zdXJlcyB0aGF0IHJlY2lwaWVudHMgb2YgdGhlIG1h
aWwgYXJlIG5vdCBtYXNrZWQuIEJlaW5nIGFibGUKKyAgICAvLy8gdG8gc2VlIGFsbCByZWNpcGll
bnRzIG9mIGEgbWFpbCBjYW4gYmUgaGVscGZ1bCBpbiwgZm9yIGV4YW1wbGUsIG5vdGlmaWNhdGlv
biBzY2VuYXJpb3MuCisgICAgcHViIGZuIHdpdGhfdW5tYXNrZWRfcmVjaXBpZW50cyhtdXQgc2Vs
ZikgLT4gU2VsZiB7CisgICAgICAgIHNlbGYudW5tYXNrX3JlY2lwaWVudHMoKTsKKyAgICAgICAg
c2VsZgorICAgIH0KKworICAgIC8vLyBTZW5kcyB0aGUgZW1haWwuIFRoaXMgd2lsbCBmYWlsIGlm
IG5vIHJlY2lwaWVudHMgaGF2ZSBiZWVuIGFkZGVkLgorICAgIC8vLworICAgIC8vLyBOb3RlOiBB
biBgQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkYCBoZWFkZXIgaXMgYWRkZWQgdG8gYXZv
aWQgdHJpZ2dlcmluZyBPT08gYW5kCisgICAgLy8vIHNpbWlsYXIgbWFpbHMuCisgICAgcHViIGZu
IHNlbmQoJnNlbGYpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKKyAgICAgICAgaWYgc2VsZi50by5p
c19lbXB0eSgpIHsKKyAgICAgICAgICAgIGJhaWwhKCJubyByZWNpcGllbnRzIHByb3ZpZGVkIGZv
ciB0aGUgbWFpbCwgY2Fubm90IHNlbmQgaXQuIik7CisgICAgICAgIH0KKworICAgICAgICBsZXQg
bm93ID0gcHJveG1veF90aW1lOjplcG9jaF9pNjQoKTsKKyAgICAgICAgbGV0IGJvZHkgPSBzZWxm
LmZvcm1hdF9tYWlsKG5vdyk/OworCisgICAgICAgIGxldCBtdXQgc2VuZG1haWxfcHJvY2VzcyA9
IENvbW1hbmQ6Om5ldygiL3Vzci9zYmluL3NlbmRtYWlsIikKKyAgICAgICAgICAgIC5hcmcoIi1C
IikKKyAgICAgICAgICAgIC5hcmcoIjhCSVRNSU1FIikKKyAgICAgICAgICAgIC5hcmcoIi1mIikK
KyAgICAgICAgICAgIC5hcmcoJnNlbGYubWFpbF9mcm9tKQorICAgICAgICAgICAgLmFyZygiLS0i
KQorICAgICAgICAgICAgLmFyZ3Moc2VsZi50by5pdGVyKCkubWFwKHxwfCAmcC5lbWFpbCkuY29s
bGVjdDo6PFZlYzwmU3RyaW5nPj4oKSkKKyAgICAgICAgICAgIC5zdGRpbihTdGRpbzo6cGlwZWQo
KSkKKyAgICAgICAgICAgIC5zcGF3bigpCisgICAgICAgICAgICAud2l0aF9jb250ZXh0KHx8ICJj
b3VsZCBub3Qgc3Bhd24gc2VuZG1haWwgcHJvY2VzcyIpPzsKKworICAgICAgICBzZW5kbWFpbF9w
cm9jZXNzCisgICAgICAgICAgICAuc3RkaW4KKyAgICAgICAgICAgIC5hc19yZWYoKQorICAgICAg
ICAgICAgLnVud3JhcCgpCisgICAgICAgICAgICAud3JpdGVfYWxsKGJvZHkuYXNfYnl0ZXMoKSkK
KyAgICAgICAgICAgIC53aXRoX2NvbnRleHQofHwgImNvdWxkbid0IHdyaXRlIHRvIHNlbmRtYWls
IHN0ZGluIik/OworCisgICAgICAgIHNlbmRtYWlsX3Byb2Nlc3MKKyAgICAgICAgICAgIC53YWl0
KCkKKyAgICAgICAgICAgIC53aXRoX2NvbnRleHQofHwgInNlbmRtYWlsIGRpZCBub3QgZXhpdCBz
dWNjZXNzZnVsbHkiKT87CisKKyAgICAgICAgT2soKCkpCisgICAgfQorCisgICAgZm4gZm9ybWF0
X21haWwoJnNlbGYsIG5vdzogaTY0KSAtPiBSZXN1bHQ8U3RyaW5nLCBFcnJvcj4geworICAgICAg
ICBsZXQgZmlsZV9ib3VuZGFyeSA9IGZvcm1hdCEoIi0tLS1fPV9OZXh0UGFydF8wMDFfe30iLCBu
b3cpOworICAgICAgICBsZXQgaHRtbF9ib3VuZGFyeSA9IGZvcm1hdCEoIi0tLS1fPV9OZXh0UGFy
dF8wMDJfe30iLCBub3cpOworCisgICAgICAgIGxldCBtdXQgbWFpbCA9IHNlbGYuZm9ybWF0X2hl
YWRlcihub3csICZmaWxlX2JvdW5kYXJ5LCAmaHRtbF9ib3VuZGFyeSk/OworCisgICAgICAgIG1h
aWwucHVzaF9zdHIoJnNlbGYuZm9ybWF0X2JvZHkoJmZpbGVfYm91bmRhcnksICZodG1sX2JvdW5k
YXJ5KT8pOworCisgICAgICAgIGlmICFzZWxmLmF0dGFjaG1lbnRzLmlzX2VtcHR5KCkgeworICAg
ICAgICAgICAgbWFpbC5wdXNoX3N0cigKKyAgICAgICAgICAgICAgICAmc2VsZgorICAgICAgICAg
ICAgICAgICAgICAuYXR0YWNobWVudHMKKyAgICAgICAgICAgICAgICAgICAgLml0ZXIoKQorICAg
ICAgICAgICAgICAgICAgICAubWFwKHxhfCBhLmZvcm1hdF9hdHRhY2htZW50KCZmaWxlX2JvdW5k
YXJ5KSkKKyAgICAgICAgICAgICAgICAgICAgLmNvbGxlY3Q6OjxTdHJpbmc+KCksCisgICAgICAg
ICAgICApOworICAgICAgICAgICAgbWFpbC5wdXNoX3N0cigmZm9ybWF0ISgiXG4tLXtmaWxlX2Jv
dW5kYXJ5fS0tIikpOworICAgICAgICB9CisKKyAgICAgICAgT2sobWFpbCkKKyAgICB9CisKKyAg
ICBmbiBmb3JtYXRfaGVhZGVyKAorICAgICAgICAmc2VsZiwKKyAgICAgICAgbm93OiBpNjQsCisg
ICAgICAgIGZpbGVfYm91bmRhcnk6ICZzdHIsCisgICAgICAgIGh0bWxfYm91bmRhcnk6ICZzdHIs
CisgICAgKSAtPiBSZXN1bHQ8U3RyaW5nLCBFcnJvcj4geworICAgICAgICBsZXQgbXV0IGhlYWRl
ciA9IFN0cmluZzo6bmV3KCk7CisKKyAgICAgICAgbGV0IGVuY29kZWRfdG8gPSBpZiBzZWxmLnRv
LmxlbigpID4gMSAmJiBzZWxmLm1hc2tfcGFydGljaXBhbnRzIHsKKyAgICAgICAgICAgIC8vIGlm
IHRoZSByZWNlaXZlcnMgYXJlIG1hc2tlZCwgd2Uga25vdyB0aGF0IHRoZXkgZG9uJ3QgbmVlZCB0
byBiZSBlbmNvZGVkCisgICAgICAgICAgICBmYWxzZQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYSByZWNpcGllbnQgdGhhdCBuZWVkcyBlbmNvZGlu
ZworICAgICAgICAgICAgc2VsZi50by5pdGVyKCkuYW55KHxyfCAhci5pc19hc2NpaSgpKQorICAg
ICAgICB9OworCisgICAgICAgIGlmICFzZWxmLmF0dGFjaG1lbnRzLmlzX2VtcHR5KCkgeworICAg
ICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCJDb250ZW50LVR5cGU6IG11bHRpcGFydC9taXhlZDtc
biIpOworICAgICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCZmb3JtYXQhKCJcdGJvdW5kYXJ5PVwi
e2ZpbGVfYm91bmRhcnl9XCJcbiIpKTsKKyAgICAgICAgICAgIGhlYWRlci5wdXNoX3N0cigiTUlN
RS1WZXJzaW9uOiAxLjBcbiIpOworICAgICAgICB9IGVsc2UgaWYgc2VsZi5ib2R5X2h0bWwuaXNf
c29tZSgpIHsKKyAgICAgICAgICAgIGhlYWRlci5wdXNoX3N0cigiQ29udGVudC1UeXBlOiBtdWx0
aXBhcnQvYWx0ZXJuYXRpdmU7XG4iKTsKKyAgICAgICAgICAgIGhlYWRlci5wdXNoX3N0cigmZm9y
bWF0ISgiXHRib3VuZGFyeT1cIntodG1sX2JvdW5kYXJ5fVwiXG4iKSk7CisgICAgICAgICAgICBo
ZWFkZXIucHVzaF9zdHIoIk1JTUUtVmVyc2lvbjogMS4wXG4iKTsKKyAgICAgICAgfSBlbHNlIGlm
ICFzZWxmLnN1YmplY3QuaXNfYXNjaWkoKSB8fCAhc2VsZi5tYWlsX2F1dGhvci5pc19hc2NpaSgp
IHx8IGVuY29kZWRfdG8geworICAgICAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCJNSU1FLVZlcnNp
b246IDEuMFxuIik7CisgICAgICAgIH0KKworICAgICAgICBsZXQgc3ViamVjdCA9IGlmICFzZWxm
LnN1YmplY3QuaXNfYXNjaWkoKSB7CisgICAgICAgICAgICBmb3JtYXQhKCJTdWJqZWN0OiA9P3V0
Zi04P0I/e30/PVxuIiwgYmFzZTY0OjplbmNvZGUoJnNlbGYuc3ViamVjdCkpCisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBmb3JtYXQhKCJTdWJqZWN0OiB7fVxuIiwgc2VsZi5zdWJqZWN0
KQorICAgICAgICB9OworCisgICAgICAgIGhlYWRlci5wdXNoX3N0cigmc3ViamVjdCk7CisKKyAg
ICAgICAgbGV0IGZyb20gPSBpZiAhc2VsZi5tYWlsX2F1dGhvci5pc19hc2NpaSgpIHsKKyAgICAg
ICAgICAgIGZvcm1hdCEoCisgICAgICAgICAgICAgICAgIkZyb206ID0/dXRmLTg/Qj97fT89IDx7
fT5cbiIsCisgICAgICAgICAgICAgICAgYmFzZTY0OjplbmNvZGUoJnNlbGYubWFpbF9hdXRob3Ip
LAorICAgICAgICAgICAgICAgIHNlbGYubWFpbF9mcm9tCisgICAgICAgICAgICApCisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICBmb3JtYXQhKCJGcm9tOiB7fSA8e30+XG4iLCBzZWxmLm1h
aWxfYXV0aG9yLCBzZWxmLm1haWxfZnJvbSkKKyAgICAgICAgfTsKKworICAgICAgICBoZWFkZXIu
cHVzaF9zdHIoJmZyb20pOworCisgICAgICAgIGxldCB0byA9IGlmIHNlbGYudG8ubGVuKCkgPiAx
ICYmIHNlbGYubWFza19wYXJ0aWNpcGFudHMgeworICAgICAgICAgICAgLy8gZG9uJ3QgZGlzY2xv
c2UgYWxsIHJlY2lwaWVudHMgaWYgdGhlIG1haWwgZ29lcyBvdXQgdG8gbXVsdGlwbGUKKyAgICAg
ICAgICAgIGxldCByZWNpcGllbnQgPSBSZWNpcGllbnQgeworICAgICAgICAgICAgICAgIG5hbWU6
IFNvbWUoIlVuZGlzY2xvc2VkIi50b19zdHJpbmcoKSksCisgICAgICAgICAgICAgICAgZW1haWw6
ICJub3JlcGx5Ii50b19zdHJpbmcoKSwKKyAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgIHJl
Y2lwaWVudC5mb3JtYXRfcmVjaXBpZW50KCkKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHNlbGYudG8KKyAgICAgICAgICAgICAgICAuaXRlcigpCisgICAgICAgICAgICAgICAgLm1hcChS
ZWNpcGllbnQ6OmZvcm1hdF9yZWNpcGllbnQpCisgICAgICAgICAgICAgICAgLmNvbGxlY3Q6OjxW
ZWM8U3RyaW5nPj4oKQorICAgICAgICAgICAgICAgIC5qb2luKCIsICIpCisgICAgICAgIH07CisK
KyAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCJUbzogIik7CisgICAgICAgIGhlYWRlci5wdXNoX3N0
cigmdG8pOworICAgICAgICBoZWFkZXIucHVzaCgnXG4nKTsKKworICAgICAgICBsZXQgcmZjMjgy
Ml9kYXRlID0gcHJveG1veF90aW1lOjplcG9jaF90b19yZmMyODIyKG5vdykKKyAgICAgICAgICAg
IC53aXRoX2NvbnRleHQofHwgImNvdWxkIG5vdCBjb252ZXJ0IGVwb2NoIHRvIHJmYzI4MjIgZGF0
ZSIpPzsKKyAgICAgICAgaGVhZGVyLnB1c2hfc3RyKCZmb3JtYXQhKCJEYXRlOiB7cmZjMjgyMl9k
YXRlfVxuIikpOworICAgICAgICBoZWFkZXIucHVzaF9zdHIoIkF1dG8tU3VibWl0dGVkOiBhdXRv
LWdlbmVyYXRlZDtcbiIpOworCisgICAgICAgIE9rKGhlYWRlcikKKyAgICB9CisKKyAgICBmbiBm
b3JtYXRfYm9keSgmc2VsZiwgZmlsZV9ib3VuZGFyeTogJnN0ciwgaHRtbF9ib3VuZGFyeTogJnN0
cikgLT4gUmVzdWx0PFN0cmluZywgRXJyb3I+IHsKKyAgICAgICAgbGV0IG11dCBib2R5ID0gU3Ry
aW5nOjpuZXcoKTsKKworICAgICAgICBpZiBzZWxmLmJvZHlfaHRtbC5pc19zb21lKCkgJiYgIXNl
bGYuYXR0YWNobWVudHMuaXNfZW1wdHkoKSB7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJc
blRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuXG4iKTsKKyAgICAg
ICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17ZmlsZV9ib3VuZGFyeX1cbiIpKTsK
KyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoCisgICAgICAgICAgICAgICAgIkNv
bnRlbnQtVHlwZTogbXVsdGlwYXJ0L2FsdGVybmF0aXZlOyBib3VuZGFyeT1cIntodG1sX2JvdW5k
YXJ5fVwiXG4iCisgICAgICAgICAgICApKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIk1J
TUUtVmVyc2lvbjogMS4wXG4iKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEo
IlxuLS17aHRtbF9ib3VuZGFyeX1cbiIpKTsKKyAgICAgICAgfSBlbHNlIGlmIHNlbGYuYm9keV9o
dG1sLmlzX3NvbWUoKSB7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJcblRoaXMgaXMgYSBt
dWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuXG4iKTsKKyAgICAgICAgICAgIGJvZHku
cHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17aHRtbF9ib3VuZGFyeX1cbiIpKTsKKyAgICAgICAgfSBl
bHNlIGlmIHNlbGYuYm9keV9odG1sLmlzX25vbmUoKSAmJiAhc2VsZi5hdHRhY2htZW50cy5pc19l
bXB0eSgpIHsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoIlxuVGhpcyBpcyBhIG11bHRpLXBh
cnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cbiIpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0
cigmZm9ybWF0ISgiXG4tLXtmaWxlX2JvdW5kYXJ5fVxuIikpOworICAgICAgICB9CisKKyAgICAg
ICAgYm9keS5wdXNoX3N0cigiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluO1xuIik7CisgICAgICAg
IGJvZHkucHVzaF9zdHIoIlx0Y2hhcnNldD1cIlVURi04XCJcbiIpOworICAgICAgICBib2R5LnB1
c2hfc3RyKCJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG5cbiIpOworICAgICAgICBi
b2R5LnB1c2hfc3RyKCZzZWxmLmJvZHlfdHh0KTsKKworICAgICAgICBpZiBsZXQgU29tZShodG1s
KSA9ICZzZWxmLmJvZHlfaHRtbCB7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCZmb3JtYXQh
KCJcbi0te2h0bWxfYm91bmRhcnl9XG4iKSk7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJD
b250ZW50LVR5cGU6IHRleHQvaHRtbDtcbiIpOworICAgICAgICAgICAgYm9keS5wdXNoX3N0cigi
XHRjaGFyc2V0PVwiVVRGLThcIlxuIik7CisgICAgICAgICAgICBib2R5LnB1c2hfc3RyKCJDb250
ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG5cbiIpOworICAgICAgICAgICAgYm9keS5wdXNo
X3N0cihodG1sKTsKKyAgICAgICAgICAgIGJvZHkucHVzaF9zdHIoJmZvcm1hdCEoIlxuLS17aHRt
bF9ib3VuZGFyeX0tLSIpKTsKKyAgICAgICAgfQorCisgICAgICAgIE9rKGJvZHkpCisgICAgfQor
fQorCisjW2NmZyh0ZXN0KV0KK21vZCB0ZXN0IHsKKyAgICB1c2Ugc3VwZXI6Oio7CisKKyAgICAj
W3Rlc3RdCisgICAgZm4gZW1haWxfd2l0aG91dF9yZWNpcGllbnRzX2ZhaWxzKCkgeworICAgICAg
ICBsZXQgcmVzdWx0ID0gTWFpbDo6bmV3KCJTZW5kZXIiLCAibWFpbEBleGFtcGxlLmNvbSIsICJo
aSIsICJib2R5Iikuc2VuZCgpOworICAgICAgICBhc3NlcnQhKHJlc3VsdC5pc19lcnIoKSk7Cisg
ICAgfQorCisgICAgI1t0ZXN0XQorICAgIGZuIHNpbXBsZV9hc2NpaV90ZXh0X21haWwoKSB7Cisg
ICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAorICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwK
KyAgICAgICAgICAgICJtYWlsZnJvbUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVj
dCBMaW5lIiwKKyAgICAgICAgICAgICJUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcg
dG9vIHNwZWNpYWwuIiwKKyAgICAgICAgKQorICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25h
bWUoIlJlY2VpdmVyIE5hbWUiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKTsKKworICAgICAgICBs
ZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMCkuZXhwZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1h
aWwiKTsKKworICAgICAgICBhc3NlcnRfZXEhKAorICAgICAgICAgICAgYm9keSwKKyAgICAgICAg
ICAgIHIjIlN1YmplY3Q6IFN1YmplY3QgTGluZQorRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9t
QGV4YW1wbGUuY29tPgorVG86IFJlY2VpdmVyIE5hbWUgPHJlY2VpdmVyQGV4YW1wbGUuY29tPgor
RGF0ZTogVGh1LCAwMSBKYW4gMTk3MCAwMTowMDowMCArMDEwMAorQXV0by1TdWJtaXR0ZWQ6IGF1
dG8tZ2VuZXJhdGVkOworQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOworCWNoYXJzZXQ9IlVURi04
IgorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGlzIGlzIGp1c3QgYXNjaWkg
dGV4dC4KK05vdGhpbmcgdG9vIHNwZWNpYWwuIiMKKyAgICAgICAgKQorICAgIH0KKworICAgICNb
dGVzdF0KKyAgICBmbiBtdWx0aXBsZV9yZWNlaXZlcl9tYXNrZWQoKSB7CisgICAgICAgIGxldCBt
YWlsID0gTWFpbDo6bmV3KAorICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKKyAgICAgICAgICAg
ICJtYWlsZnJvbUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKKyAg
ICAgICAgICAgICJUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC5cbk5vdGhpbmcgdG9vIHNwZWNpYWwu
IiwKKyAgICAgICAgKQorICAgICAgICAud2l0aF9yZWNpcGllbnRfYW5kX25hbWUoIlJlY2VpdmVy
IE5hbWUiLCAicmVjZWl2ZXJAZXhhbXBsZS5jb20iKQorICAgICAgICAud2l0aF9yZWNpcGllbnQo
InR3b0BleGFtcGxlLmNvbSIpCisgICAgICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgibcOk
eCBtw7xzdGVybcOkbm4iLCAibW1AZXhhbXBsZS5jb20iKTsKKworICAgICAgICBsZXQgYm9keSA9
IG1haWwuZm9ybWF0X21haWwoMCkuZXhwZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1haWwiKTsKKwor
ICAgICAgICBhc3NlcnRfZXEhKAorICAgICAgICAgICAgYm9keSwKKyAgICAgICAgICAgIHIjIlN1
YmplY3Q6IFN1YmplY3QgTGluZQorRnJvbTogU2VuZGVyIE5hbWUgPG1haWxmcm9tQGV4YW1wbGUu
Y29tPgorVG86IFVuZGlzY2xvc2VkIDxub3JlcGx5PgorRGF0ZTogVGh1LCAwMSBKYW4gMTk3MCAw
MTowMDowMCArMDEwMAorQXV0by1TdWJtaXR0ZWQ6IGF1dG8tZ2VuZXJhdGVkOworQ29udGVudC1U
eXBlOiB0ZXh0L3BsYWluOworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFuc2Zlci1FbmNv
ZGluZzogOGJpdAorCitUaGlzIGlzIGp1c3QgYXNjaWkgdGV4dC4KK05vdGhpbmcgdG9vIHNwZWNp
YWwuIiMKKyAgICAgICAgKQorICAgIH0KKworICAgICNbdGVzdF0KKyAgICBmbiBtdWx0aXBsZV9y
ZWNlaXZlcl91bm1hc2tlZCgpIHsKKyAgICAgICAgbGV0IG1haWwgPSBNYWlsOjpuZXcoCisgICAg
ICAgICAgICAiU2VuZGVyIE5hbWUiLAorICAgICAgICAgICAgIm1haWxmcm9tQGV4YW1wbGUuY29t
IiwKKyAgICAgICAgICAgICJTdWJqZWN0IExpbmUiLAorICAgICAgICAgICAgIlRoaXMgaXMganVz
dCBhc2NpaSB0ZXh0LlxuTm90aGluZyB0b28gc3BlY2lhbC4iLAorICAgICAgICApCisgICAgICAg
IC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgiUmVjZWl2ZXIgTmFtZSIsICJyZWNlaXZlckBleGFt
cGxlLmNvbSIpCisgICAgICAgIC53aXRoX3JlY2lwaWVudCgidHdvQGV4YW1wbGUuY29tIikKKyAg
ICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJtw6R4IG3DvHN0ZXJtw6RubiIsICJtbUBl
eGFtcGxlLmNvbSIpCisgICAgICAgIC53aXRoX3VubWFza2VkX3JlY2lwaWVudHMoKTsKKworICAg
ICAgICBsZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMCkuZXhwZWN0KCJjb3VsZCBub3QgZm9y
bWF0IG1haWwiKTsKKworICAgICAgICBhc3NlcnRfZXEhKAorICAgICAgICAgICAgYm9keSwKKyAg
ICAgICAgICAgIHIjIk1JTUUtVmVyc2lvbjogMS4wCitTdWJqZWN0OiBTdWJqZWN0IExpbmUKK0Zy
b206IFNlbmRlciBOYW1lIDxtYWlsZnJvbUBleGFtcGxlLmNvbT4KK1RvOiBSZWNlaXZlciBOYW1l
IDxyZWNlaXZlckBleGFtcGxlLmNvbT4sIHR3b0BleGFtcGxlLmNvbSwgPT91dGYtOD9CP2JjT2tl
Q0J0dzd4emRHVnliY09rYm00PT89IDxtbUBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSwgMDEgSmFu
IDE5NzAgMDE6MDA6MDAgKzAxMDAKK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZDsKK0Nv
bnRlbnQtVHlwZTogdGV4dC9wbGFpbjsKKwljaGFyc2V0PSJVVEYtOCIKK0NvbnRlbnQtVHJhbnNm
ZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBpcyBqdXN0IGFzY2lpIHRleHQuCitOb3RoaW5nIHRv
byBzcGVjaWFsLiIjCisgICAgICAgICkKKyAgICB9CisKKyAgICAjW3Rlc3RdCisgICAgZm4gc2lt
cGxlX3V0ZjhfdGV4dF9tYWlsKCkgeworICAgICAgICBsZXQgbWFpbCA9IE1haWw6Om5ldygKKyAg
ICAgICAgICAgICJVVEYtOCBTZW5kZXIgTmFtZSDwn5OnIiwKKyAgICAgICAgICAgICJkaWZmZXJl
bnRmcm9tQGV4YW1wbGUuY29tIiwKKyAgICAgICAgICAgICJTdWJqZWN0IExpbmUg8J+nkSIsCisg
ICAgICAgICAgICAiVGhpcyB1dGYtOCBlbWFpbCBzaG91bGQgaGFuZGxlIGVtb2ppc1xu8J+nkfCf
k6dcbmFuZCB3ZWlyZCBnZXJtYW4gY2hhcmFjdGVyczogw7bDpMO8w59cbmFuZCBtb3JlLiIsCisg
ICAgICAgICkKKyAgICAgICAgLndpdGhfcmVjaXBpZW50X2FuZF9uYW1lKCJSZWNlaXZlciBOYW1l
8J+TqSIsICJyZWNlaXZlckBleGFtcGxlLmNvbSIpOworCisgICAgICAgIGxldCBib2R5ID0gbWFp
bC5mb3JtYXRfbWFpbCgxNzMyODA2MjUxKS5leHBlY3QoImNvdWxkIG5vdCBmb3JtYXQgbWFpbCIp
OworCisgICAgICAgIGFzc2VydF9lcSEoCisgICAgICAgICAgICBib2R5LAorICAgICAgICAgICAg
ciMiTUlNRS1WZXJzaW9uOiAxLjAKK1N1YmplY3Q6ID0/dXRmLTg/Qj9VM1ZpYW1WamRDQk1hVzVs
SVBDZnA1RT0/PQorRnJvbTogPT91dGYtOD9CP1ZWUkdMVGdnVTJWdVpHVnlJRTVoYldVZzhKK1Rw
dz09Pz0gPGRpZmZlcmVudGZyb21AZXhhbXBsZS5jb20+CitUbzogPT91dGYtOD9CP1VtVmpaV2wy
WlhJZ1RtRnRaZkNmazZrPT89IDxyZWNlaXZlckBleGFtcGxlLmNvbT4KK0RhdGU6IFRodSwgMjgg
Tm92IDIwMjQgMTY6MDQ6MTEgKzAxMDAKK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZDsK
K0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsKKwljaGFyc2V0PSJVVEYtOCIKK0NvbnRlbnQtVHJh
bnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyB1dGYtOCBlbWFpbCBzaG91bGQgaGFuZGxlIGVt
b2ppcwor8J+nkfCfk6cKK2FuZCB3ZWlyZCBnZXJtYW4gY2hhcmFjdGVyczogw7bDpMO8w58KK2Fu
ZCBtb3JlLiIjCisgICAgICAgICkKKyAgICB9CisKKyAgICAjW3Rlc3RdCisgICAgZm4gbXVsdGlw
YXJ0X2h0bWxfYWx0ZXJuYXRpdmUoKSB7CisgICAgICAgIGxldCBtYWlsID0gTWFpbDo6bmV3KAor
ICAgICAgICAgICAgIlNlbmRlciBOYW1lIiwKKyAgICAgICAgICAgICJmcm9tQGV4YW1wbGUuY29t
IiwKKyAgICAgICAgICAgICJTdWJqZWN0IExpbmUiLAorICAgICAgICAgICAgIkxvcmVtIElwc3Vt
IERvbG9yIFNpdFxuQW1ldCIsCisgICAgICAgICkKKyAgICAgICAgLndpdGhfcmVjaXBpZW50KCJy
ZWNlaXZlckBleGFtcGxlLmNvbSIpCisgICAgICAgIC53aXRoX2h0bWxfYWx0KCI8aHRtbCBsYW5n
PVwiZGUtYXRcIj48aGVhZD48L2hlYWQ+PGJvZHk+XG5cdDxwcmU+XG5cdFx0TG9yZW0gSXBzdW0g
RG9sb3IgU2l0IEFtZXRcblx0PC9wcmU+XG48L2JvZHk+PC9odG1sPiIpOworICAgICAgICBsZXQg
Ym9keSA9IG1haWwuZm9ybWF0X21haWwoMTczMjgwNjI1MSkuZXhwZWN0KCJjb3VsZCBub3QgZm9y
bWF0IG1haWwiKTsKKyAgICAgICAgYXNzZXJ0X2VxISgKKyAgICAgICAgICAgIGJvZHksCisgICAg
ICAgICAgICByIyJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKwlib3VuZGFy
eT0iLS0tLV89X05leHRQYXJ0XzAwMl8xNzMyODA2MjUxIgorTUlNRS1WZXJzaW9uOiAxLjAKK1N1
YmplY3Q6IFN1YmplY3QgTGluZQorRnJvbTogU2VuZGVyIE5hbWUgPGZyb21AZXhhbXBsZS5jb20+
CitUbzogcmVjZWl2ZXJAZXhhbXBsZS5jb20KK0RhdGU6IFRodSwgMjggTm92IDIwMjQgMTY6MDQ6
MTEgKzAxMDAKK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZDsKKworVGhpcyBpcyBhIG11
bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KKworLS0tLS0tXz1fTmV4dFBhcnRfMDAy
XzE3MzI4MDYyNTEKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsKKwljaGFyc2V0PSJVVEYtOCIK
K0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworTG9yZW0gSXBzdW0gRG9sb3IgU2l0
CitBbWV0CistLS0tLS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MQorQ29udGVudC1UeXBlOiB0
ZXh0L2h0bWw7CisJY2hhcnNldD0iVVRGLTgiCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4
Yml0CisKKzxodG1sIGxhbmc9ImRlLWF0Ij48aGVhZD48L2hlYWQ+PGJvZHk+CisJPHByZT4KKwkJ
TG9yZW0gSXBzdW0gRG9sb3IgU2l0IEFtZXQKKwk8L3ByZT4KKzwvYm9keT48L2h0bWw+CistLS0t
LS1fPV9OZXh0UGFydF8wMDJfMTczMjgwNjI1MS0tIiMKKyAgICAgICAgKQorICAgIH0KKworICAg
ICNbdGVzdF0KKyAgICBmbiBtdWx0aXBhcnRfcGxhaW5fdGV4dF9hdHRhY2htZW50c19taXhlZCgp
IHsKKyAgICAgICAgbGV0IGJpbjogW3U4OyA2Ml0gPSBbCisgICAgICAgICAgICAweGRlLCAweGFk
LCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAw
eGVmLCAweGRlLCAweGFkLAorICAgICAgICAgICAgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhk
ZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwK
KyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4
ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsCisgICAgICAgICAgICAweGRl
LCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAw
eGJlLCAweGVmLCAweGRlLCAweGFkLAorICAgICAgICAgICAgMHhiZSwgMHhlZiwgMHhkZSwgMHhh
ZCwgMHhiZSwgMHhlZiwKKyAgICAgICAgXTsKKworICAgICAgICBsZXQgbWFpbCA9IE1haWw6Om5l
dygKKyAgICAgICAgICAgICJTZW5kZXIgTmFtZSIsCisgICAgICAgICAgICAiZnJvbUBleGFtcGxl
LmNvbSIsCisgICAgICAgICAgICAiU3ViamVjdCBMaW5lIiwKKyAgICAgICAgICAgICJMb3JlbSBJ
cHN1bSBEb2xvciBTaXRcbkFtZXQiLAorICAgICAgICApCisgICAgICAgIC53aXRoX3JlY2lwaWVu
dF9hbmRfbmFtZSgiUmVjZWl2ZXIgTmFtZSIsICJyZWNlaXZlckBleGFtcGxlLmNvbSIpCisgICAg
ICAgIC53aXRoX2F0dGFjaG1lbnQoImRlYWRiZWVmLmJpbiIsICJhcHBsaWNhdGlvbi9vY3RldC1z
dHJlYW0iLCAmYmluKTsKKworICAgICAgICBsZXQgYm9keSA9IG1haWwuZm9ybWF0X21haWwoMTcz
MjgwNjI1MSkuZXhwZWN0KCJjb3VsZCBub3QgZm9ybWF0IG1haWwiKTsKKyAgICAgICAgYXNzZXJ0
X2VxISgKKyAgICAgICAgICAgIGJvZHksCisgICAgICAgICAgICByIyJDb250ZW50LVR5cGU6IG11
bHRpcGFydC9taXhlZDsKKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUx
IgorTUlNRS1WZXJzaW9uOiAxLjAKK1N1YmplY3Q6IFN1YmplY3QgTGluZQorRnJvbTogU2VuZGVy
IE5hbWUgPGZyb21AZXhhbXBsZS5jb20+CitUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhh
bXBsZS5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDI0IDE2OjA0OjExICswMTAwCitBdXRvLVN1
Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7CisKK1RoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2Ug
aW4gTUlNRSBmb3JtYXQuCisKKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCitDb250
ZW50LVR5cGU6IHRleHQvcGxhaW47CisJY2hhcnNldD0iVVRGLTgiCitDb250ZW50LVRyYW5zZmVy
LUVuY29kaW5nOiA4Yml0CisKK0xvcmVtIElwc3VtIERvbG9yIFNpdAorQW1ldAorLS0tLS0tXz1f
TmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEKK0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtOyBuYW1lPSJkZWFkYmVlZi5iaW4iCitDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2ht
ZW50OyBmaWxlbmFtZT0iZGVhZGJlZWYuYmluIjsgZmlsZW5hbWUqPVVURi04JydkZWFkYmVlZi5i
aW4KK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCiszcTIrNzk2dHZ1L2VyYjd2
M3EzZXJiN3YzcTIrNzk2dHZ1L2VyZDZ0dnUvZXJiN3YzcTIrNzk2dDNxMis3OTZ0dnUvZXJiN3YK
KzNxMis3OTZ0dnU4PQorLS0tLS0tXz1fTmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEtLSIjCisgICAg
ICAgICkKKyAgICB9CisKKyAgICAjW3Rlc3RdCisgICAgZm4gbXVsdGlwYXJ0X3BsYWluX3RleHRf
aHRtbF9hbHRlcm5hdGl2ZV9hdHRhY2htZW50cygpIHsKKyAgICAgICAgbGV0IGJpbjogW3U4OyA2
Ml0gPSBbCisgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAw
eGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAorICAgICAgICAg
ICAgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwg
MHhhZCwgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwKKyAgICAgICAgICAgIDB4ZGUsIDB4YWQsIDB4
YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYsIDB4ZGUsIDB4YWQsIDB4YmUsIDB4ZWYs
IDB4ZGUsIDB4YWQsCisgICAgICAgICAgICAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAw
eGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLCAweGJlLCAweGVmLCAweGRlLCAweGFkLAorICAg
ICAgICAgICAgMHhiZSwgMHhlZiwgMHhkZSwgMHhhZCwgMHhiZSwgMHhlZiwKKyAgICAgICAgXTsK
KworICAgICAgICBsZXQgbWFpbCA9IE1haWw6Om5ldygKKyAgICAgICAgICAgICJTZW5kZXIgTmFt
ZSIsCisgICAgICAgICAgICAiZnJvbUBleGFtcGxlLmNvbSIsCisgICAgICAgICAgICAiU3ViamVj
dCBMaW5lIiwKKyAgICAgICAgICAgICJMb3JlbSBJcHN1bSBEb2xvciBTaXRcbkFtZXQiLAorICAg
ICAgICApCisgICAgICAgIC53aXRoX3JlY2lwaWVudF9hbmRfbmFtZSgiUmVjZWl2ZXIgTmFtZSIs
ICJyZWNlaXZlckBleGFtcGxlLmNvbSIpCisgICAgICAgIC53aXRoX2F0dGFjaG1lbnQoImRlYWRi
ZWVmLmJpbiIsICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCAmYmluKQorICAgICAgICAud2l0
aF9hdHRhY2htZW50KCLwn5CE8J+SgC5iaW4iLCAiaW1hZ2UvYm1wIiwgJmJpbikKKyAgICAgICAg
LndpdGhfaHRtbF9hbHQoIjxodG1sIGxhbmc9XCJkZS1hdFwiPjxoZWFkPjwvaGVhZD48Ym9keT5c
blx0PHByZT5cblx0XHRMb3JlbSBJcHN1bSBEb2xvciBTaXQgQW1ldFxuXHQ8L3ByZT5cbjwvYm9k
eT48L2h0bWw+Iik7CisKKyAgICAgICAgbGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWlsKDE3MzI4
MDYyNTEpLmV4cGVjdCgiY291bGQgbm90IGZvcm1hdCBtYWlsIik7CisKKyAgICAgICAgYXNzZXJ0
X2VxISgKKyAgICAgICAgICAgIGJvZHksCisgICAgICAgICAgICByIyJDb250ZW50LVR5cGU6IG11
bHRpcGFydC9taXhlZDsKKwlib3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUx
IgorTUlNRS1WZXJzaW9uOiAxLjAKK1N1YmplY3Q6IFN1YmplY3QgTGluZQorRnJvbTogU2VuZGVy
IE5hbWUgPGZyb21AZXhhbXBsZS5jb20+CitUbzogUmVjZWl2ZXIgTmFtZSA8cmVjZWl2ZXJAZXhh
bXBsZS5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDI0IDE2OjA0OjExICswMTAwCitBdXRvLVN1
Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQ7CisKK1RoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2Ug
aW4gTUlNRSBmb3JtYXQuCisKKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2MjUxCitDb250
ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsgYm91bmRhcnk9Ii0tLS1fPV9OZXh0UGFy
dF8wMDJfMTczMjgwNjI1MSIKK01JTUUtVmVyc2lvbjogMS4wCisKKy0tLS0tLV89X05leHRQYXJ0
XzAwMl8xNzMyODA2MjUxCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47CisJY2hhcnNldD0iVVRG
LTgiCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK0xvcmVtIElwc3VtIERvbG9y
IFNpdAorQW1ldAorLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEKK0NvbnRlbnQtVHlw
ZTogdGV4dC9odG1sOworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu
ZzogOGJpdAorCis8aHRtbCBsYW5nPSJkZS1hdCI+PGhlYWQ+PC9oZWFkPjxib2R5PgorCTxwcmU+
CisJCUxvcmVtIElwc3VtIERvbG9yIFNpdCBBbWV0CisJPC9wcmU+Cis8L2JvZHk+PC9odG1sPgor
LS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MzI4MDYyNTEtLQorLS0tLS0tXz1fTmV4dFBhcnRfMDAx
XzE3MzI4MDYyNTEKK0NvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtOyBuYW1l
PSJkZWFkYmVlZi5iaW4iCitDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFt
ZT0iZGVhZGJlZWYuYmluIjsgZmlsZW5hbWUqPVVURi04JydkZWFkYmVlZi5iaW4KK0NvbnRlbnQt
VHJhbnNmZXItRW5jb2Rpbmc6IGJhc2U2NAorCiszcTIrNzk2dHZ1L2VyYjd2M3EzZXJiN3YzcTIr
Nzk2dHZ1L2VyZDZ0dnUvZXJiN3YzcTIrNzk2dDNxMis3OTZ0dnUvZXJiN3YKKzNxMis3OTZ0dnU4
PQorLS0tLS0tXz1fTmV4dFBhcnRfMDAxXzE3MzI4MDYyNTEKK0NvbnRlbnQtVHlwZTogaW1hZ2Uv
Ym1wOyBuYW1lPSLwn5CE8J+SgC5iaW4iCitDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50
OyBmaWxlbmFtZT0i8J+QhPCfkoAuYmluIjsgZmlsZW5hbWUqPVVURi04JyclRjAlOUYlOTAlODQl
RjAlOUYlOTIlODAuYmluCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBiYXNlNjQKKworM3Ey
Kzc5NnR2dS9lcmI3djNxM2VyYjd2M3EyKzc5NnR2dS9lcmQ2dHZ1L2VyYjd2M3EyKzc5NnQzcTIr
Nzk2dHZ1L2VyYjd2CiszcTIrNzk2dHZ1OD0KKy0tLS0tLV89X05leHRQYXJ0XzAwMV8xNzMyODA2
MjUxLS0iIworICAgICAgICApCisgICAgfQorCisgICAgI1t0ZXN0XQorICAgIGZuIHRlc3RfZm9y
bWF0X21haWxfbXVsdGlwYXJ0KCkgeworICAgICAgICBsZXQgbWFpbCA9IE1haWw6Om5ldygKKyAg
ICAgICAgICAgICJGcmVkIE9vYmFyIiwKKyAgICAgICAgICAgICJmb29iYXJAZXhhbXBsZS5jb20i
LAorICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHN1YmplY3QiLAorICAgICAgICAgICAgIlRoaXMg
aXMgdGhlIHBsYWluIGJvZHkiLAorICAgICAgICApCisgICAgICAgIC53aXRoX3JlY2lwaWVudF9h
bmRfbmFtZSgiVG9ueSBFc3QiLCAidGVzdEBleGFtcGxlLmNvbSIpCisgICAgICAgIC53aXRoX2h0
bWxfYWx0KCI8Ym9keT5UaGlzIGlzIHRoZSBIVE1MIGJvZHk8L2JvZHk+Iik7CisKKyAgICAgICAg
bGV0IGJvZHkgPSBtYWlsLmZvcm1hdF9tYWlsKDE3MTg5Nzc4NTApLmV4cGVjdCgiY291bGQgbm90
IGZvcm1hdCBtYWlsIik7CisKKyAgICAgICAgYXNzZXJ0X2VxISgKKyAgICAgICAgICAgIGJvZHks
CisgICAgICAgICAgICByIyJDb250ZW50LVR5cGU6IG11bHRpcGFydC9hbHRlcm5hdGl2ZTsKKwli
b3VuZGFyeT0iLS0tLV89X05leHRQYXJ0XzAwMl8xNzE4OTc3ODUwIgorTUlNRS1WZXJzaW9uOiAx
LjAKK1N1YmplY3Q6IFRoaXMgaXMgdGhlIHN1YmplY3QKK0Zyb206IEZyZWQgT29iYXIgPGZvb2Jh
ckBleGFtcGxlLmNvbT4KK1RvOiBUb255IEVzdCA8dGVzdEBleGFtcGxlLmNvbT4KK0RhdGU6IEZy
aSwgMjEgSnVuIDIwMjQgMTU6NTA6NTAgKzAyMDAKK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVy
YXRlZDsKKworVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KKwor
LS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MTg5Nzc4NTAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFp
bjsKKwljaGFyc2V0PSJVVEYtOCIKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKwor
VGhpcyBpcyB0aGUgcGxhaW4gYm9keQorLS0tLS0tXz1fTmV4dFBhcnRfMDAyXzE3MTg5Nzc4NTAK
K0NvbnRlbnQtVHlwZTogdGV4dC9odG1sOworCWNoYXJzZXQ9IlVURi04IgorQ29udGVudC1UcmFu
c2Zlci1FbmNvZGluZzogOGJpdAorCis8Ym9keT5UaGlzIGlzIHRoZSBIVE1MIGJvZHk8L2JvZHk+
CistLS0tLS1fPV9OZXh0UGFydF8wMDJfMTcxODk3Nzg1MC0tIiMKKyAgICAgICAgKTsKKyAgICB9
Cit9Ci0tCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNv
bQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMt
ZGV2ZWwK