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 [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 34CCE1FF15C
	for <inbox@lore.proxmox.com>; Wed, 26 Mar 2025 16:24:02 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 52E303B6F0;
	Wed, 26 Mar 2025 16:23:57 +0100 (CET)
From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
To: pbs-devel@lists.proxmox.com
Date: Wed, 26 Mar 2025 16:23:26 +0100
Message-Id: <20250326152327.332179-23-f.gruenbichler@proxmox.com>
X-Mailer: git-send-email 2.39.5
In-Reply-To: <20250326152327.332179-1-f.gruenbichler@proxmox.com>
References: <20250326152327.332179-1-f.gruenbichler@proxmox.com>
MIME-Version: 1.0
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.006 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
 PROLO_LEO1                0.1 Meta Catches all Leo drug variations so far
 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-backup 5/6] adapt to hyper/http 1.0
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>

c2ltaWxhciB0byB0aGUgb3RoZXIgY2hhbmdlczoKLSBCb2R5IHRvIEluY29taW5nIG9yIHByb3ht
b3gtaHR0cCdzIEJvZHkKLSB1c2UgYWRhcHRlcnMgYmV0d2VlbiBoeXBlcjwtPnRvd2VyIGFuZCBo
eXBlcjwtPnRva2lvCi0gYWRhcHQgdG8gbmV3IHByb3htb3gtcmVzdC1zZXJ2ZXIgaW50ZXJmYWNl
cwoKU2lnbmVkLW9mZi1ieTogRmFiaWFuIEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJv
eG1veC5jb20+Ci0tLQogcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwgICAgICB8ICAx
ICsKIHByb3htb3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMgfCAgMiArLQogc3JjL2Fj
bWUvY2xpZW50LnJzICAgICAgICAgICAgICAgICAgICB8ICA2ICsrLQogc3JjL2FjbWUvcGx1Z2lu
LnJzICAgICAgICAgICAgICAgICAgICB8IDYyICsrKysrKysrKysrKysrKystLS0tLS0tLQogc3Jj
L2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzICAgICAgICAgICB8IDIwICsrKy0tLS0tCiBzcmMvYXBp
Mi9iYWNrdXAvZW52aXJvbm1lbnQucnMgICAgICAgIHwgIDMgKy0KIHNyYy9hcGkyL2JhY2t1cC9t
b2QucnMgICAgICAgICAgICAgICAgfCAxMCArKy0tCiBzcmMvYXBpMi9iYWNrdXAvdXBsb2FkX2No
dW5rLnJzICAgICAgIHwgNDcgKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYXBpMi9oZWxwZXJzLnJz
ICAgICAgICAgICAgICAgICAgIHwgIDMgKy0KIHNyYy9hcGkyL25vZGUvbW9kLnJzICAgICAgICAg
ICAgICAgICAgfCAgNyArLS0KIHNyYy9hcGkyL25vZGUvdGFza3MucnMgICAgICAgICAgICAgICAg
fCAgNyArLS0KIHNyYy9hcGkyL3JlYWRlci9tb2QucnMgICAgICAgICAgICAgICAgfCAxNyArKysr
LS0tCiBzcmMvYmluL3Byb3htb3gtYmFja3VwLWFwaS5ycyAgICAgICAgIHwgNDAgKysrKysrKysr
Ky0tLS0tCiBzcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzICAgICAgIHwgNzAgKysrKysr
KysrKysrKysrKysrKysrKy0tLS0tCiAxNCBmaWxlcyBjaGFuZ2VkLCAxOTcgaW5zZXJ0aW9ucygr
KSwgOTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvcHJveG1veC1iYWNrdXAtY2xpZW50L0Nh
cmdvLnRvbWwgYi9wcm94bW94LWJhY2t1cC1jbGllbnQvQ2FyZ28udG9tbAppbmRleCBhOTFhNDkw
OGIuLjVmMDE0MGU3OCAxMDA2NDQKLS0tIGEvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRv
bWwKKysrIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwKQEAgLTI0LDYgKzI0LDcg
QEAgcHhhci53b3Jrc3BhY2UgPSB0cnVlCiAKIHByb3htb3gtYXN5bmMud29ya3NwYWNlID0gdHJ1
ZQogcHJveG1veC1odW1hbi1ieXRlLndvcmtzcGFjZSA9IHRydWUKK3Byb3htb3gtaHR0cCA9IHsg
d29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMgPSBbICJib2R5IiBdIH0KIHByb3htb3gtbG9nLndv
cmtzcGFjZSA9IHRydWUKIHByb3htb3gtaW8ud29ya3NwYWNlID0gdHJ1ZQogcHJveG1veC1yb3V0
ZXIgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0gWyAiY2xpIiBdIH0KZGlmZiAtLWdp
dCBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMgYi9wcm94bW94LWJhY2t1
cC1jbGllbnQvc3JjL3NuYXBzaG90LnJzCmluZGV4IGYxOTVjMjNiNy4uZjE1NjlkYjJlIDEwMDY0
NAotLS0gYS9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90LnJzCisrKyBiL3Byb3ht
b3gtYmFja3VwLWNsaWVudC9zcmMvc25hcHNob3QucnMKQEAgLTI3MSw3ICsyNzEsNyBAQCBhc3lu
YyBmbiB1cGxvYWRfbG9nKHBhcmFtOiBWYWx1ZSkgLT4gUmVzdWx0PFZhbHVlLCBFcnJvcj4gewog
ICAgICk7CiAKICAgICBsZXQgYXJncyA9IHNuYXBzaG90X2FyZ3MoJmJhY2t1cF9ucywgJnNuYXBz
aG90KT87Ci0gICAgbGV0IGJvZHkgPSBoeXBlcjo6Qm9keTo6ZnJvbShyYXdfZGF0YSk7CisgICAg
bGV0IGJvZHkgPSBwcm94bW94X2h0dHA6OkJvZHk6OmZyb20ocmF3X2RhdGEpOwogCiAgICAgY2xp
ZW50CiAgICAgICAgIC51cGxvYWQoImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSIsIGJvZHksICZw
YXRoLCBTb21lKGFyZ3MpKQpkaWZmIC0tZ2l0IGEvc3JjL2FjbWUvY2xpZW50LnJzIGIvc3JjL2Fj
bWUvY2xpZW50LnJzCmluZGV4IDk3ZjYyOGUzNy4uNGU1NTM5M2U0IDEwMDY0NAotLS0gYS9zcmMv
YWNtZS9jbGllbnQucnMKKysrIGIvc3JjL2FjbWUvY2xpZW50LnJzCkBAIC02LDggKzYsMTAgQEAg
dXNlIHN0ZDo6b3M6OnVuaXg6OmZzOjpPcGVuT3B0aW9uc0V4dDsKIAogdXNlIGFueWhvdzo6e2Jh
aWwsIGZvcm1hdF9lcnJ9OwogdXNlIGJ5dGVzOjpCeXRlczsKLXVzZSBoeXBlcjo6e2JvZHk6Okh0
dHBCb2R5LCBCb2R5LCBSZXF1ZXN0fTsKK3VzZSBodHRwX2JvZHlfdXRpbDo6Qm9keUV4dDsKK3Vz
ZSBoeXBlcjo6UmVxdWVzdDsKIHVzZSBuaXg6OnN5czo6c3RhdDo6TW9kZTsKK3VzZSBwcm94bW94
X2h0dHA6OkJvZHk7CiB1c2Ugc2VyZGU6OntEZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKIAogdXNl
IHByb3htb3hfYWNtZTo6YWNjb3VudDo6QWNjb3VudENyZWF0b3I7CkBAIC02MTgsNyArNjIwLDcg
QEAgaW1wbCBBY21lQ2xpZW50IHsKICAgICAgICAgICAgIHJlc3BvbnNlLmpzb24oKT8sCiAgICAg
ICAgICkpOwogCi0gICAgICAgIE9rKChkaXJlY3RvcnkuYXNfcmVmKCkudW53cmFwKCksIG5vbmNl
LmFzX2RlcmVmKCkpKQorICAgICAgICBPaygoZGlyZWN0b3J5LmFzX211dCgpLnVud3JhcCgpLCBu
b25jZS5hc19kZXJlZigpKSkKICAgICB9CiAKICAgICAvLy8gTGlrZSBgZ2V0X2RpcmVjdG9yeWAs
IGJ1dCBpZiB0aGUgZGlyZWN0b3J5IHByb3ZpZGVzIG5vIG5vbmNlLCBhbHNvIHBlcmZvcm1zIGEg
YEhFQURgCmRpZmYgLS1naXQgYS9zcmMvYWNtZS9wbHVnaW4ucnMgYi9zcmMvYWNtZS9wbHVnaW4u
cnMKaW5kZXggYzMzY2ZlNDA1Li45MTQxNjcwZTcgMTAwNjQ0Ci0tLSBhL3NyYy9hY21lL3BsdWdp
bi5ycworKysgYi9zcmMvYWNtZS9wbHVnaW4ucnMKQEAgLTEsMTIgKzEsMjEgQEAKIHVzZSBzdGQ6
OmZ1dHVyZTo6RnV0dXJlOwordXNlIHN0ZDo6bmV0Ojp7SXBBZGRyLCBTb2NrZXRBZGRyfTsKIHVz
ZSBzdGQ6OnBpbjo6UGluOwogdXNlIHN0ZDo6cHJvY2Vzczo6U3RkaW87CiB1c2Ugc3RkOjpzeW5j
OjpBcmM7CiB1c2Ugc3RkOjp0aW1lOjpEdXJhdGlvbjsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZv
cm1hdF9lcnIsIEVycm9yfTsKLXVzZSBoeXBlcjo6e0JvZHksIFJlcXVlc3QsIFJlc3BvbnNlfTsK
K3VzZSBieXRlczo6Qnl0ZXM7Cit1c2UgZnV0dXJlczo6VHJ5RnV0dXJlRXh0OwordXNlIGh0dHBf
Ym9keV91dGlsOjpGdWxsOwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKK3VzZSBoeXBlcjo6
c2VydmVyOjpjb25uOjpodHRwMTsKK3VzZSBoeXBlcjo6c2VydmljZTo6c2VydmljZV9mbjsKK3Vz
ZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNlfTsKK3VzZSBoeXBlcl91dGlsOjpydDo6VG9raW9J
bzsKIHVzZSB0b2tpbzo6aW86OntBc3luY0J1ZlJlYWRFeHQsIEFzeW5jUmVhZCwgQXN5bmNXcml0
ZUV4dCwgQnVmUmVhZGVyfTsKK3VzZSB0b2tpbzo6bmV0OjpUY3BMaXN0ZW5lcjsKIHVzZSB0b2tp
bzo6cHJvY2Vzczo6Q29tbWFuZDsKIAogdXNlIHByb3htb3hfYWNtZTo6e0F1dGhvcml6YXRpb24s
IENoYWxsZW5nZX07CkBAIC0yMzUsMTAgKzI0NCwxMCBAQCBpbXBsIFN0YW5kYWxvbmVTZXJ2ZXIg
ewogfQogCiBhc3luYyBmbiBzdGFuZGFsb25lX3Jlc3BvbmQoCi0gICAgcmVxOiBSZXF1ZXN0PEJv
ZHk+LAorICAgIHJlcTogUmVxdWVzdDxJbmNvbWluZz4sCiAgICAgcGF0aDogQXJjPFN0cmluZz4s
CiAgICAga2V5X2F1dGg6IEFyYzxTdHJpbmc+LAotKSAtPiBSZXN1bHQ8UmVzcG9uc2U8Qm9keT4s
IGh5cGVyOjpFcnJvcj4geworKSAtPiBSZXN1bHQ8UmVzcG9uc2U8RnVsbDxCeXRlcz4+LCBoeXBl
cjo6RXJyb3I+IHsKICAgICBpZiByZXEubWV0aG9kKCkgPT0gaHlwZXI6Ok1ldGhvZDo6R0VUICYm
IHJlcS51cmkoKS5wYXRoKCkgPT0gcGF0aC5hc19zdHIoKSB7CiAgICAgICAgIE9rKFJlc3BvbnNl
OjpidWlsZGVyKCkKICAgICAgICAgICAgIC5zdGF0dXMoaHlwZXI6Omh0dHA6OlN0YXR1c0NvZGU6
Ok9LKQpAQCAtMjYwLDkgKzI2OSw2IEBAIGltcGwgQWNtZVBsdWdpbiBmb3IgU3RhbmRhbG9uZVNl
cnZlciB7CiAgICAgICAgIF9kb21haW46ICYnZCBBY21lRG9tYWluLAogICAgICAgICBfdGFzazog
QXJjPFdvcmtlclRhc2s+LAogICAgICkgLT4gUGluPEJveDxkeW4gRnV0dXJlPE91dHB1dCA9IFJl
c3VsdDwmJ2Mgc3RyLCBFcnJvcj4+ICsgU2VuZCArICdmdXQ+PiB7Ci0gICAgICAgIHVzZSBoeXBl
cjo6c2VydmVyOjpjb25uOjpBZGRySW5jb21pbmc7Ci0gICAgICAgIHVzZSBoeXBlcjo6c2Vydmlj
ZTo6e21ha2Vfc2VydmljZV9mbiwgc2VydmljZV9mbn07Ci0KICAgICAgICAgQm94OjpwaW4oYXN5
bmMgbW92ZSB7CiAgICAgICAgICAgICBzZWxmLnN0b3AoKTsKIApAQCAtMjczLDIyICsyNzksNDAg
QEAgaW1wbCBBY21lUGx1Z2luIGZvciBTdGFuZGFsb25lU2VydmVyIHsKICAgICAgICAgICAgIGxl
dCBrZXlfYXV0aCA9IEFyYzo6bmV3KGNsaWVudC5rZXlfYXV0aG9yaXphdGlvbih0b2tlbik/KTsK
ICAgICAgICAgICAgIGxldCBwYXRoID0gQXJjOjpuZXcoZm9ybWF0ISgiLy53ZWxsLWtub3duL2Fj
bWUtY2hhbGxlbmdlL3t9IiwgdG9rZW4pKTsKIAotICAgICAgICAgICAgbGV0IHNlcnZpY2UgPSBt
YWtlX3NlcnZpY2VfZm4obW92ZSB8X3wgewotICAgICAgICAgICAgICAgIGxldCBwYXRoID0gQXJj
OjpjbG9uZSgmcGF0aCk7Ci0gICAgICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpjbG9u
ZSgma2V5X2F1dGgpOwotICAgICAgICAgICAgICAgIGFzeW5jIG1vdmUgewotICAgICAgICAgICAg
ICAgICAgICBPazo6PF8sIGh5cGVyOjpFcnJvcj4oc2VydmljZV9mbihtb3ZlIHxyZXF1ZXN0fCB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQocmVxdWVzdCwgQXJj
OjpjbG9uZSgmcGF0aCksIEFyYzo6Y2xvbmUoJmtleV9hdXRoKSkKLSAgICAgICAgICAgICAgICAg
ICAgfSkpCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0KICAgICAgICAgICAg
IC8vIGBbOjpdOjgwYCBmaXJzdCwgdGhlbiBgKjo4MGAKLSAgICAgICAgICAgIGxldCBpbmNvbWlu
ZyA9IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHUxNjsgOF0sIDgwKS5pbnRvKCkpKQotICAgICAg
ICAgICAgICAgIC5vcl9lbHNlKHxffCBBZGRySW5jb21pbmc6OmJpbmQoJigoWzB1ODsgNF0sIDgw
KS5pbnRvKCkpKSk/OworICAgICAgICAgICAgbGV0IGR1YWwgPSBTb2NrZXRBZGRyOjpuZXcoSXBB
ZGRyOjpmcm9tKFswdTE2OyA4XSksIDgwKTsKKyAgICAgICAgICAgIGxldCBpcHY0ID0gU29ja2V0
QWRkcjo6bmV3KElwQWRkcjo6ZnJvbShbMHU4OyA0XSksIDgwKTsKKyAgICAgICAgICAgIGxldCBp
bmNvbWluZyA9IFRjcExpc3RlbmVyOjpiaW5kKGR1YWwpCisgICAgICAgICAgICAgICAgLm9yX2Vs
c2UofF98IFRjcExpc3RlbmVyOjpiaW5kKGlwdjQpKQorICAgICAgICAgICAgICAgIC5hd2FpdD87
CiAKLSAgICAgICAgICAgIGxldCBzZXJ2ZXIgPSBoeXBlcjo6U2VydmVyOjpidWlsZGVyKGluY29t
aW5nKS5zZXJ2ZShzZXJ2aWNlKTsKKyAgICAgICAgICAgIGxldCBzZXJ2ZXIgPSBhc3luYyBtb3Zl
IHsKKyAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGtleV9h
dXRoID0gQXJjOjpjbG9uZSgma2V5X2F1dGgpOworICAgICAgICAgICAgICAgICAgICBsZXQgcGF0
aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOworICAgICAgICAgICAgICAgICAgICBtYXRjaCBpbmNvbWlu
Zy5hY2NlcHQoKS5hd2FpdCB7CisgICAgICAgICAgICAgICAgICAgICAgICBPaygodGNwLCBfKSkg
PT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpbyA9IFRva2lvSW86Om5ldyh0
Y3ApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlID0gc2VydmljZV9m
bihtb3ZlIHxyZXF1ZXN0fCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YW5k
YWxvbmVfcmVzcG9uZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcmM6OmNsb25lKCZwYXRo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFyYzo6Y2xvbmUoJmtleV9h
dXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0pOwogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnRh
c2s6OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBsZXQgRXJyKGVycikgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0
cDE6OkJ1aWxkZXI6Om5ldygpLnNlcnZlX2Nvbm5lY3Rpb24oaW8sIHNlcnZpY2UpLmF3YWl0Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHByaW50bG4hKCJFcnJvciBzZXJ2aW5nIGNvbm5lY3Rpb246IHtlcnI6P30i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICAgICAgRXJyKGVycikgPT4gcHJpbnRsbiEoIkVycm9yIGFjY2VwdGluZyBjb25uZWN0aW9u
OiB7ZXJyOj99IiksCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9OwogICAgICAgICAgICAgbGV0IChmdXR1cmUsIGFib3J0KSA9IGZ1dHVyZXM6
OmZ1dHVyZTo6YWJvcnRhYmxlKHNlcnZlcik7CiAgICAgICAgICAgICBzZWxmLmFib3J0X2hhbmRs
ZSA9IFNvbWUoYWJvcnQpOwogICAgICAgICAgICAgdG9raW86OnNwYXduKGZ1dHVyZSk7CmRpZmYg
LS1naXQgYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9hZG1pbi9kYXRh
c3RvcmUucnMKaW5kZXggNDgzZTU5NWMxLi43YWJhNWQzMTMgMTAwNjQ0Ci0tLSBhL3NyYy9hcGky
L2FkbWluL2RhdGFzdG9yZS5ycworKysgYi9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKQEAg
LTksOCArOSwxMCBAQCB1c2Ugc3RkOjpzeW5jOjpBcmM7CiAKIHVzZSBhbnlob3c6OntiYWlsLCBm
b3JtYXRfZXJyLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6KjsKK3VzZSBodHRwX2JvZHlfdXRpbDo6
Qm9keUV4dDsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Ci11c2UgaHlwZXI6Onto
ZWFkZXIsIEJvZHksIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcjo6e2JvZHk6Oklu
Y29taW5nLCBoZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBwcm94bW94X2h0dHA6
OkJvZHk7CiB1c2Ugc2VyZGU6OkRlc2VyaWFsaXplOwogdXNlIHNlcmRlX2pzb246Ontqc29uLCBW
YWx1ZX07CiB1c2UgdG9raW9fc3RyZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07CkBAIC0x
Mzg3LDcgKzEzODksNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9ET1dOTE9BRF9GSUxFOiBBcGlN
ZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogcHViIGZuIGRvd25sb2FkX2ZpbGUoCiAgICAgX3Bh
cnRzOiBQYXJ0cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAgX3JlcV9ib2R5OiBJbmNvbWlu
ZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52
OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTE0NzIsNyArMTQ3NCw3IEBAIHB1YiBjb25z
dCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEVfREVDT0RFRDogQXBpTWV0aG9kID0gQXBpTWV0aG9k
OjpuZXcoCiAKIHB1YiBmbiBkb3dubG9hZF9maWxlX2RlY29kZWQoCiAgICAgX3BhcnRzOiBQYXJ0
cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAgX3JlcV9ib2R5OiBJbmNvbWluZywKICAgICBw
YXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHlu
IFJwY0Vudmlyb25tZW50PiwKQEAgLTE1OTgsNyArMTYwMCw3IEBAIHB1YiBjb25zdCBBUElfTUVU
SE9EX1VQTE9BRF9CQUNLVVBfTE9HOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogcHVi
IGZuIHVwbG9hZF9iYWNrdXBfbG9nKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6
IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf
aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA
QCAtMTYzNiwxMyArMTYzOCw3IEBAIHB1YiBmbiB1cGxvYWRfYmFja3VwX2xvZygKICAgICAgICAg
ICAgIGZpbGVfbmFtZSA9IGZpbGVfbmFtZS5kZXJlZigpLAogICAgICAgICApOwogCi0gICAgICAg
IGxldCBkYXRhID0gcmVxX2JvZHkKLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQot
ICAgICAgICAgICAgLnRyeV9mb2xkKFZlYzo6bmV3KCksIHxtdXQgYWNjLCBjaHVua3wgewotICAg
ICAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmY2h1bmspOwotICAgICAgICAgICAg
ICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQotICAgICAgICAgICAgfSkKLSAgICAgICAg
ICAgIC5hd2FpdD87CisgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29sbGVjdCgpLmF3YWl0
Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwogCiAgICAgICAgIC8vIGFsd2F5cyB2
ZXJpZnkgYmxvYi9DUkMgYXQgc2VydmVyIHNpZGUKICAgICAgICAgbGV0IGJsb2IgPSBEYXRhQmxv
Yjo6bG9hZF9mcm9tX3JlYWRlcigmbXV0ICZkYXRhWy4uXSk/OwpAQCAtMTgxNSw3ICsxODExLDcg
QEAgZm4gZ2V0X2xvY2FsX3B4YXJfcmVhZGVyKAogCiBwdWIgZm4gcHhhcl9maWxlX2Rvd25sb2Fk
KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5OiBCb2R5LAorICAgIF9yZXFfYm9k
eTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVlLAogICAgIF9pbmZvOiAmQXBpTWV0aG9kLAog
ICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCmRpZmYgLS1naXQgYS9zcmMvYXBp
Mi9iYWNrdXAvZW52aXJvbm1lbnQucnMgYi9zcmMvYXBpMi9iYWNrdXAvZW52aXJvbm1lbnQucnMK
aW5kZXggOTlkODg1ZTJlLi44YTJlOWRkY2IgMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL2JhY2t1cC9l
bnZpcm9ubWVudC5ycworKysgYi9zcmMvYXBpMi9iYWNrdXAvZW52aXJvbm1lbnQucnMKQEAgLTcs
NiArNyw3IEBAIHVzZSB0cmFjaW5nOjppbmZvOwogdXNlIDo6c2VyZGU6OlNlcmlhbGl6ZTsKIHVz
ZSBzZXJkZV9qc29uOjp7anNvbiwgVmFsdWV9OwogCit1c2UgcHJveG1veF9odHRwOjpCb2R5Owog
dXNlIHByb3htb3hfcm91dGVyOjp7UnBjRW52aXJvbm1lbnQsIFJwY0Vudmlyb25tZW50VHlwZX07
CiB1c2UgcHJveG1veF9zeXM6OmZzOjp7bG9ja19kaXJfbm9ibG9ja19zaGFyZWQsIHJlcGxhY2Vf
ZmlsZSwgQ3JlYXRlT3B0aW9uc307CiAKQEAgLTE5LDcgKzIwLDcgQEAgdXNlIHByb3htb3hfcmVz
dF9zZXJ2ZXI6Ontmb3JtYXR0ZXI6OiosIFdvcmtlclRhc2t9OwogCiB1c2UgY3JhdGU6OmJhY2t1
cDo6dmVyaWZ5X2JhY2t1cF9kaXJfd2l0aF9sb2NrOwogCi11c2UgaHlwZXI6OntCb2R5LCBSZXNw
b25zZX07Cit1c2UgaHlwZXI6OlJlc3BvbnNlOwogCiAjW2Rlcml2ZShDb3B5LCBDbG9uZSwgU2Vy
aWFsaXplKV0KIHN0cnVjdCBVcGxvYWRTdGF0aXN0aWMgewpkaWZmIC0tZ2l0IGEvc3JjL2FwaTIv
YmFja3VwL21vZC5ycyBiL3NyYy9hcGkyL2JhY2t1cC9tb2QucnMKaW5kZXggZWZjOTdhMWZiLi5m
NDM3OGUxODUgMTAwNjQ0Ci0tLSBhL3NyYy9hcGkyL2JhY2t1cC9tb2QucnMKKysrIGIvc3JjL2Fw
aTIvYmFja3VwL21vZC5ycwpAQCAtNSwxMSArNSwxMyBAQCB1c2UgZnV0dXJlczo6KjsKIHVzZSBo
ZXg6OkZyb21IZXg7CiB1c2UgaHlwZXI6OmhlYWRlcjo6e0hlYWRlclZhbHVlLCBDT05ORUNUSU9O
LCBVUEdSQURFfTsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Ci11c2UgaHlwZXI6
OntCb2R5LCBSZXF1ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6Ontib2R5
OjpJbmNvbWluZywgUmVxdWVzdCwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9OwordXNlIGh5cGVyX3V0
aWw6OnNlcnZpY2U6OlRvd2VyVG9IeXBlclNlcnZpY2U7CiB1c2Ugc2VyZGU6OkRlc2VyaWFsaXpl
OwogdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07CiB1c2UgdHJhY2luZzo6d2FybjsKIAor
dXNlIHByb3htb3hfaHR0cDo6Qm9keTsKIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7SDJTZXJ2
aWNlLCBXb3JrZXJUYXNrfTsKIHVzZSBwcm94bW94X3JvdXRlcjo6e2h0dHBfZXJyLCBsaXN0X3N1
YmRpcnNfYXBpX21ldGhvZH07CiB1c2UgcHJveG1veF9yb3V0ZXI6OnsKQEAgLTcwLDcgKzcyLDcg
QEAgcHViKGNyYXRlKSBmbiBvcHRpb25hbF9uc19wYXJhbShwYXJhbTogJlZhbHVlKSAtPiBSZXN1
bHQ8QmFja3VwTmFtZXNwYWNlLCBFcnJvcj4KIAogZm4gdXBncmFkZV90b19iYWNrdXBfcHJvdG9j
b2woCiAgICAgcGFydHM6IFBhcnRzLAotICAgIHJlcV9ib2R5OiBCb2R5LAorICAgIHJlcV9ib2R5
OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAg
ICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTI0Nyw3ICsyNDksNyBAQCBm
biB1cGdyYWRlX3RvX2JhY2t1cF9wcm90b2NvbCgKICAgICAgICAgICAgICAgICAgICAgICAgIGh0
dHAubWF4X2ZyYW1lX3NpemUoNCAqIDEwMjQgKiAxMDI0KTsKIAogICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IGVudjMgPSBlbnYyLmNsb25lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBo
dHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgc2VydmljZSkubWFwKG1vdmUgfHJlc3VsdHwgewor
ICAgICAgICAgICAgICAgICAgICAgICAgaHR0cC5zZXJ2ZV9jb25uZWN0aW9uKGNvbm4sIFRvd2Vy
VG9IeXBlclNlcnZpY2U6Om5ldyhzZXJ2aWNlKSkubWFwKG1vdmUgfHJlc3VsdHwgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHJlc3VsdCB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEVycihlcnIpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIC8vIEF2b2lkICBUcmFuc3BvcnQgZW5kcG9pbnQgaXMgbm90IGNvbm5lY3RlZCAob3Mg
ZXJyb3IgMTA3KQpAQCAtODI0LDcgKzgyNiw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05M
T0FEX1BSRVZJT1VTOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKIAogZm4gZG93bmxvYWRf
cHJldmlvdXMoCiAgICAgX3BhcnRzOiBQYXJ0cywKLSAgICBfcmVxX2JvZHk6IEJvZHksCisgICAg
X3JlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZBcGlN
ZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKZGlmZiAtLWdpdCBh
L3NyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMgYi9zcmMvYXBpMi9iYWNrdXAvdXBsb2Fk
X2NodW5rLnJzCmluZGV4IDIwMjU5NjYwYS4uMmM2NmMyODU1IDEwMDY0NAotLS0gYS9zcmMvYXBp
Mi9iYWNrdXAvdXBsb2FkX2NodW5rLnJzCisrKyBiL3NyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1
bmsucnMKQEAgLTUsOCArNSw5IEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQb2xsfTsKIHVz
ZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6KjsKIHVz
ZSBoZXg6OkZyb21IZXg7Cit1c2UgaHR0cF9ib2R5X3V0aWw6OntCb2R5RGF0YVN0cmVhbSwgQm9k
eUV4dH07Cit1c2UgaHlwZXI6OmJvZHk6OkluY29taW5nOwogdXNlIGh5cGVyOjpodHRwOjpyZXF1
ZXN0OjpQYXJ0czsKLXVzZSBoeXBlcjo6Qm9keTsKIHVzZSBzZXJkZV9qc29uOjp7anNvbiwgVmFs
dWV9OwogCiB1c2UgcHJveG1veF9yb3V0ZXI6OntBcGlIYW5kbGVyLCBBcGlNZXRob2QsIEFwaVJl
c3BvbnNlRnV0dXJlLCBScGNFbnZpcm9ubWVudH07CkBAIC0yMSw3ICsyMiw3IEBAIHVzZSBwYnNf
dG9vbHM6Ompzb246OntyZXF1aXJlZF9pbnRlZ2VyX3BhcmFtLCByZXF1aXJlZF9zdHJpbmdfcGFy
YW19OwogdXNlIHN1cGVyOjplbnZpcm9ubWVudDo6KjsKIAogcHViIHN0cnVjdCBVcGxvYWRDaHVu
ayB7Ci0gICAgc3RyZWFtOiBCb2R5LAorICAgIHN0cmVhbTogQm9keURhdGFTdHJlYW08SW5jb21p
bmc+LAogICAgIHN0b3JlOiBBcmM8RGF0YVN0b3JlPiwKICAgICBkaWdlc3Q6IFt1ODsgMzJdLAog
ICAgIHNpemU6IHUzMiwKQEAgLTMxLDcgKzMyLDcgQEAgcHViIHN0cnVjdCBVcGxvYWRDaHVuayB7
CiAKIGltcGwgVXBsb2FkQ2h1bmsgewogICAgIHB1YiBmbiBuZXcoCi0gICAgICAgIHN0cmVhbTog
Qm9keSwKKyAgICAgICAgc3RyZWFtOiBCb2R5RGF0YVN0cmVhbTxJbmNvbWluZz4sCiAgICAgICAg
IHN0b3JlOiBBcmM8RGF0YVN0b3JlPiwKICAgICAgICAgZGlnZXN0OiBbdTg7IDMyXSwKICAgICAg
ICAgc2l6ZTogdTMyLApAQCAtMTQ2LDcgKzE0Nyw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX1VQ
TE9BRF9GSVhFRF9DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiAKIGZuIHVwbG9h
ZF9maXhlZF9jaHVuaygKICAgICBfcGFydHM6IFBhcnRzLAotICAgIHJlcV9ib2R5OiBCb2R5LAor
ICAgIHJlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUsCiAgICAgX2luZm86ICZB
cGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKQEAgLTE2MSw4
ICsxNjIsMTQgQEAgZm4gdXBsb2FkX2ZpeGVkX2NodW5rKAogCiAgICAgICAgIGxldCBlbnY6ICZC
YWNrdXBFbnZpcm9ubWVudCA9IHJwY2Vudi5hc19yZWYoKTsKIAotICAgICAgICBsZXQgKGRpZ2Vz
dCwgc2l6ZSwgY29tcHJlc3NlZF9zaXplLCBpc19kdXBsaWNhdGUpID0KLSAgICAgICAgICAgIFVw
bG9hZENodW5rOjpuZXcocmVxX2JvZHksIGVudi5kYXRhc3RvcmUuY2xvbmUoKSwgZGlnZXN0LCBz
aXplLCBlbmNvZGVkX3NpemUpLmF3YWl0PzsKKyAgICAgICAgbGV0IChkaWdlc3QsIHNpemUsIGNv
bXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKSA9IFVwbG9hZENodW5rOjpuZXcoCisgICAgICAg
ICAgICBCb2R5RGF0YVN0cmVhbTo6bmV3KHJlcV9ib2R5KSwKKyAgICAgICAgICAgIGVudi5kYXRh
c3RvcmUuY2xvbmUoKSwKKyAgICAgICAgICAgIGRpZ2VzdCwKKyAgICAgICAgICAgIHNpemUsCisg
ICAgICAgICAgICBlbmNvZGVkX3NpemUsCisgICAgICAgICkKKyAgICAgICAgLmF3YWl0PzsKIAog
ICAgICAgICBlbnYucmVnaXN0ZXJfZml4ZWRfY2h1bmsod2lkLCBkaWdlc3QsIHNpemUsIGNvbXBy
ZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKT87CiAgICAgICAgIGxldCBkaWdlc3Rfc3RyID0gaGV4
OjplbmNvZGUoZGlnZXN0KTsKQEAgLTIxNSw3ICsyMjIsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhP
RF9VUExPQURfRFlOQU1JQ19DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiAKIGZu
IHVwbG9hZF9keW5hbWljX2NodW5rKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6
IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf
aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA
QCAtMjMwLDggKzIzNywxNCBAQCBmbiB1cGxvYWRfZHluYW1pY19jaHVuaygKIAogICAgICAgICBs
ZXQgZW52OiAmQmFja3VwRW52aXJvbm1lbnQgPSBycGNlbnYuYXNfcmVmKCk7CiAKLSAgICAgICAg
bGV0IChkaWdlc3QsIHNpemUsIGNvbXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKSA9Ci0gICAg
ICAgICAgICBVcGxvYWRDaHVuazo6bmV3KHJlcV9ib2R5LCBlbnYuZGF0YXN0b3JlLmNsb25lKCks
IGRpZ2VzdCwgc2l6ZSwgZW5jb2RlZF9zaXplKS5hd2FpdD87CisgICAgICAgIGxldCAoZGlnZXN0
LCBzaXplLCBjb21wcmVzc2VkX3NpemUsIGlzX2R1cGxpY2F0ZSkgPSBVcGxvYWRDaHVuazo6bmV3
KAorICAgICAgICAgICAgQm9keURhdGFTdHJlYW06Om5ldyhyZXFfYm9keSksCisgICAgICAgICAg
ICBlbnYuZGF0YXN0b3JlLmNsb25lKCksCisgICAgICAgICAgICBkaWdlc3QsCisgICAgICAgICAg
ICBzaXplLAorICAgICAgICAgICAgZW5jb2RlZF9zaXplLAorICAgICAgICApCisgICAgICAgIC5h
d2FpdD87CiAKICAgICAgICAgZW52LnJlZ2lzdGVyX2R5bmFtaWNfY2h1bmsod2lkLCBkaWdlc3Qs
IHNpemUsIGNvbXByZXNzZWRfc2l6ZSwgaXNfZHVwbGljYXRlKT87CiAgICAgICAgIGxldCBkaWdl
c3Rfc3RyID0gaGV4OjplbmNvZGUoZGlnZXN0KTsKQEAgLTI1MCwxMyArMjYzLDEzIEBAIHB1YiBj
b25zdCBBUElfTUVUSE9EX1VQTE9BRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6
bmV3KAogCiBmbiB1cGxvYWRfc3BlZWR0ZXN0KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVx
X2JvZHk6IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIF9wYXJhbTogVmFsdWUs
CiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t
ZW50PiwKICkgLT4gQXBpUmVzcG9uc2VGdXR1cmUgewogICAgIGFzeW5jIG1vdmUgewotICAgICAg
ICBsZXQgcmVzdWx0ID0gcmVxX2JvZHkKKyAgICAgICAgbGV0IHJlc3VsdCA9IEJvZHlEYXRhU3Ry
ZWFtOjpuZXcocmVxX2JvZHkpCiAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKICAg
ICAgICAgICAgIC50cnlfZm9sZCgwLCB8c2l6ZTogdXNpemUsIGNodW5rfCB7CiAgICAgICAgICAg
ICAgICAgbGV0IHN1bSA9IHNpemUgKyBjaHVuay5sZW4oKTsKQEAgLTMwMyw3ICszMTYsNyBAQCBw
dWIgY29uc3QgQVBJX01FVEhPRF9VUExPQURfQkxPQjogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpu
ZXcoCiAKIGZuIHVwbG9hZF9ibG9iKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6
IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf
aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA
QCAtMzE4LDEzICszMzEsNyBAQCBmbiB1cGxvYWRfYmxvYigKICAgICAgICAgICAgIGJhaWwhKCJ3
cm9uZyBibG9iIGZpbGUgZXh0ZW5zaW9uOiAne30nIiwgZmlsZV9uYW1lKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkKLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9y
Ojpmcm9tKQotICAgICAgICAgICAgLnRyeV9mb2xkKFZlYzo6bmV3KCksIHxtdXQgYWNjLCBjaHVu
a3wgewotICAgICAgICAgICAgICAgIGFjYy5leHRlbmRfZnJvbV9zbGljZSgmY2h1bmspOwotICAg
ICAgICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQotICAgICAgICAgICAgfSkK
LSAgICAgICAgICAgIC5hd2FpdD87CisgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29sbGVj
dCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwogCiAgICAgICAgIGlm
IGVuY29kZWRfc2l6ZSAhPSBkYXRhLmxlbigpIHsKICAgICAgICAgICAgIGJhaWwhKApAQCAtMzM0
LDcgKzM0MSw3IEBAIGZuIHVwbG9hZF9ibG9iKAogICAgICAgICAgICAgKTsKICAgICAgICAgfQog
Ci0gICAgICAgIGVudi5hZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRhKT87CisgICAgICAgIGVudi5h
ZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRhLnRvX3ZlYygpKT87CiAKICAgICAgICAgT2soZW52LmZv
cm1hdF9yZXNwb25zZShPayhWYWx1ZTo6TnVsbCkpKQogICAgIH0KZGlmZiAtLWdpdCBhL3NyYy9h
cGkyL2hlbHBlcnMucnMgYi9zcmMvYXBpMi9oZWxwZXJzLnJzCmluZGV4IDNkYzFiZWZjMS4uZjM0
NmIwY2NhIDEwMDY0NAotLS0gYS9zcmMvYXBpMi9oZWxwZXJzLnJzCisrKyBiL3NyYy9hcGkyL2hl
bHBlcnMucnMKQEAgLTIsOCArMiw5IEBAIHVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7CiAKIHVzZSBh
bnlob3c6OkVycm9yOwogdXNlIGZ1dHVyZXM6OnN0cmVhbTo6VHJ5U3RyZWFtRXh0OwotdXNlIGh5
cGVyOjp7aGVhZGVyLCBCb2R5LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6Onto
ZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKIAordXNlIHByb3htb3hfaHR0cDo6Qm9keTsK
IHVzZSBwcm94bW94X3JvdXRlcjo6aHR0cF9iYWlsOwogCiBwdWIgYXN5bmMgZm4gY3JlYXRlX2Rv
d25sb2FkX3Jlc3BvbnNlKHBhdGg6IFBhdGhCdWYpIC0+IFJlc3VsdDxSZXNwb25zZTxCb2R5Piwg
RXJyb3I+IHsKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvbW9kLnJzIGIvc3JjL2FwaTIvbm9k
ZS9tb2QucnMKaW5kZXggNjJiNDQ3MDk2Li5lN2M2MjEzYzEgMTAwNjQ0Ci0tLSBhL3NyYy9hcGky
L25vZGUvbW9kLnJzCisrKyBiL3NyYy9hcGkyL25vZGUvbW9kLnJzCkBAIC01LDEwICs1LDExIEBA
IHVzZSBzdGQ6Om9zOjp1bml4Ojppbzo6QXNSYXdGZDsKIAogdXNlIGFueWhvdzo6e2JhaWwsIGZv
cm1hdF9lcnIsIEVycm9yfTsKIHVzZSBmdXR1cmVzOjpmdXR1cmU6OntGdXR1cmVFeHQsIFRyeUZ1
dHVyZUV4dH07Ci11c2UgaHlwZXI6OmJvZHk6OkJvZHk7Cit1c2UgaHlwZXI6OmJvZHk6OkluY29t
aW5nOwogdXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKIHVzZSBoeXBlcjo6dXBncmFk
ZTo6VXBncmFkZWQ7CiB1c2UgaHlwZXI6OlJlcXVlc3Q7Cit1c2UgaHlwZXJfdXRpbDo6cnQ6OlRv
a2lvSW87CiB1c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKIHVzZSB0b2tpbzo6aW86OntB
c3luY0J1ZlJlYWRFeHQsIEJ1ZlJlYWRlcn07CiAKQEAgLTI2Nyw3ICsyNjgsNyBAQCBwdWIgY29u
c3QgQVBJX01FVEhPRF9XRUJTT0NLRVQ6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBm
biB1cGdyYWRlX3RvX3dlYnNvY2tldCgKICAgICBwYXJ0czogUGFydHMsCi0gICAgcmVxX2JvZHk6
IEJvZHksCisgICAgcmVxX2JvZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBf
aW5mbzogJkFwaU1ldGhvZCwKICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApA
QCAtMzA2LDcgKzMwNyw3IEBAIGZuIHVwZ3JhZGVfdG9fd2Vic29ja2V0KAogICAgICAgICAgICAg
fTsKIAogICAgICAgICAgICAgbGV0IGxvY2FsID0gdG9raW86Om5ldDo6VGNwU3RyZWFtOjpjb25u
ZWN0KGZvcm1hdCEoImxvY2FsaG9zdDp7fSIsIHBvcnQpKS5hd2FpdD87Ci0gICAgICAgICAgICB3
cy5zZXJ2ZV9jb25uZWN0aW9uKGNvbm4sIGxvY2FsKS5hd2FpdAorICAgICAgICAgICAgd3Muc2Vy
dmVfY29ubmVjdGlvbihUb2tpb0lvOjpuZXcoY29ubiksIGxvY2FsKS5hd2FpdAogICAgICAgICB9
KTsKIAogICAgICAgICBPayhyZXNwb25zZSkKZGlmZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvdGFz
a3MucnMgYi9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJzCmluZGV4IGNhZDc0MDU1OS4uYmQ2NzYzMDY5
IDEwMDY0NAotLS0gYS9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJzCisrKyBiL3NyYy9hcGkyL25vZGUv
dGFza3MucnMKQEAgLTMsOSArMywxMCBAQCB1c2Ugc3RkOjppbzo6e0J1ZlJlYWQsIEJ1ZlJlYWRl
cn07CiAKIHVzZSBhbnlob3c6OntiYWlsLCBFcnJvcn07CiB1c2UgZnV0dXJlczo6RnV0dXJlRXh0
OwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6
UGFydHM7CiB1c2UgaHlwZXI6Omh0dHA6OntoZWFkZXIsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsK
LXVzZSBoeXBlcjo6Qm9keTsKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7CiB1c2Ugc2VyZGVfanNv
bjo6e2pzb24sIFZhbHVlfTsKIAogdXNlIHByb3htb3hfYXN5bmM6OnN0cmVhbTo6QXN5bmNSZWFk
ZXJTdHJlYW07CkBAIC0zMjEsNyArMzIyLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfUkVBRF9U
QVNLX0xPRzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCiApOwogZm4gcmVhZF90YXNrX2xv
ZygKICAgICBfcGFydHM6IFBhcnRzLAotICAgIF9yZXFfYm9keTogQm9keSwKKyAgICBfcmVxX2Jv
ZHk6IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBfaW5mbzogJkFwaU1ldGhvZCwK
ICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApAQCAtNDA0LDcgKzQwNSw3IEBA
IGZuIHJlYWRfdGFza19sb2coCiAgICAgICAgIE9rKFJlc3BvbnNlOjpidWlsZGVyKCkKICAgICAg
ICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCiAgICAgICAgICAgICAuaGVhZGVyKGhlYWRl
cjo6Q09OVEVOVF9UWVBFLCAiYXBwbGljYXRpb24vanNvbiIpCi0gICAgICAgICAgICAuYm9keShC
b2R5Ojpmcm9tKGpzb24udG9fc3RyaW5nKCkpKQorICAgICAgICAgICAgLmJvZHkoanNvbi50b19z
dHJpbmcoKS5pbnRvKCkpCiAgICAgICAgICAgICAudW53cmFwKCkpCiAgICAgfQogICAgIC5ib3hl
ZCgpCmRpZmYgLS1naXQgYS9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzIGIvc3JjL2FwaTIvcmVhZGVy
L21vZC5ycwppbmRleCAxNzEzZjE4MmIuLmI2OTAwMDA4NyAxMDA2NDQKLS0tIGEvc3JjL2FwaTIv
cmVhZGVyL21vZC5ycworKysgYi9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzCkBAIC0zLDEyICszLDE1
IEBACiB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9OwogdXNlIGZ1dHVyZXM6
Oio7CiB1c2UgaGV4OjpGcm9tSGV4OwordXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKIHVzZSBo
eXBlcjo6aGVhZGVyOjp7c2VsZiwgSGVhZGVyVmFsdWUsIENPTk5FQ1RJT04sIFVQR1JBREV9Owog
dXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKLXVzZSBoeXBlcjo6e0JvZHksIFJlcXVl
c3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNl
LCBTdGF0dXNDb2RlfTsKK3VzZSBoeXBlcl91dGlsOjpzZXJ2aWNlOjpUb3dlclRvSHlwZXJTZXJ2
aWNlOwogdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKIHVzZSBzZXJkZV9qc29uOjpWYWx1ZTsKIAor
dXNlIHByb3htb3hfaHR0cDo6Qm9keTsKIHVzZSBwcm94bW94X3Jlc3Rfc2VydmVyOjp7SDJTZXJ2
aWNlLCBXb3JrZXJUYXNrfTsKIHVzZSBwcm94bW94X3JvdXRlcjo6ewogICAgIGh0dHBfZXJyLCBs
aXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgQXBpSGFuZGxlciwgQXBpTWV0aG9kLCBBcGlSZXNwb25z
ZUZ1dHVyZSwgUGVybWlzc2lvbiwKQEAgLTY4LDcgKzcxLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRI
T0RfVVBHUkFERV9CQUNLVVA6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBmbiB1cGdy
YWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJvdG9jb2woCiAgICAgcGFydHM6IFBhcnRzLAotICAgIHJl
cV9ib2R5OiBCb2R5LAorICAgIHJlcV9ib2R5OiBJbmNvbWluZywKICAgICBwYXJhbTogVmFsdWUs
CiAgICAgX2luZm86ICZBcGlNZXRob2QsCiAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t
ZW50PiwKQEAgLTE5MCw3ICsxOTMsNyBAQCBmbiB1cGdyYWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJv
dG9jb2woCiAgICAgICAgICAgICAgICAgICAgIGh0dHAuaW5pdGlhbF9jb25uZWN0aW9uX3dpbmRv
d19zaXplKHdpbmRvd19zaXplKTsKICAgICAgICAgICAgICAgICAgICAgaHR0cC5tYXhfZnJhbWVf
c2l6ZSg0ICogMTAyNCAqIDEwMjQpOwogCi0gICAgICAgICAgICAgICAgICAgIGh0dHAuc2VydmVf
Y29ubmVjdGlvbihjb25uLCBzZXJ2aWNlKQorICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZl
X2Nvbm5lY3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZpY2UpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgLm1hcF9lcnIoRXJyb3I6OmZyb20pCiAgICAgICAgICAgICAg
ICAgICAgICAgICAuYXdhaXQKICAgICAgICAgICAgICAgICB9OwpAQCAtMjQ0LDcgKzI0Nyw3IEBA
IHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEU6IEFwaU1ldGhvZCA9IEFwaU1ldGhv
ZDo6bmV3KAogCiBmbiBkb3dubG9hZF9maWxlKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3Jl
cV9ib2R5OiBCb2R5LAorICAgIF9yZXFfYm9keTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVl
LAogICAgIF9pbmZvOiAmQXBpTWV0aG9kLAogICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9u
bWVudD4sCkBAIC0zMDAsNyArMzAzLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURf
Q0hVTks6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAogCiBmbiBkb3dubG9hZF9jaHVuaygK
ICAgICBfcGFydHM6IFBhcnRzLAotICAgIF9yZXFfYm9keTogQm9keSwKKyAgICBfcmVxX2JvZHk6
IEluY29taW5nLAogICAgIHBhcmFtOiBWYWx1ZSwKICAgICBfaW5mbzogJkFwaU1ldGhvZCwKICAg
ICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LApAQCAtMzQ4LDcgKzM1MSw3IEBAIGZu
IGRvd25sb2FkX2NodW5rKAogLyogdGhpcyBpcyB0b28gc2xvdwogZm4gZG93bmxvYWRfY2h1bmtf
b2xkKAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5OiBCb2R5LAorICAgIF9yZXFf
Ym9keTogSW5jb21pbmcsCiAgICAgcGFyYW06IFZhbHVlLAogICAgIF9pbmZvOiAmQXBpTWV0aG9k
LAogICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCkBAIC0zOTMsNyArMzk2LDcg
QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfU1BFRURURVNUOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6
Om5ldygKIAogZm4gc3BlZWR0ZXN0KAogICAgIF9wYXJ0czogUGFydHMsCi0gICAgX3JlcV9ib2R5
OiBCb2R5LAorICAgIF9yZXFfYm9keTogSW5jb21pbmcsCiAgICAgX3BhcmFtOiBWYWx1ZSwKICAg
ICBfaW5mbzogJkFwaU1ldGhvZCwKICAgICBfcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50
PiwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzIGIvc3JjL2Jpbi9w
cm94bW94LWJhY2t1cC1hcGkucnMKaW5kZXggN2I0MTg3NTUwLi40MzhmZDlkN2UgMTAwNjQ0Ci0t
LSBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzCisrKyBiL3NyYy9iaW4vcHJveG1veC1i
YWNrdXAtYXBpLnJzCkBAIC0xLDEyICsxLDE1IEBACiB1c2Ugc3RkOjpmdXR1cmU6OkZ1dHVyZTsK
IHVzZSBzdGQ6OnBpbjo6e3BpbiwgUGlufTsKK3VzZSBzdGQ6OnN5bmM6OkFyYzsKIAogdXNlIGFu
eWhvdzo6e2JhaWwsIEVycm9yfTsKLXVzZSBmdXR1cmVzOjoqOwogdXNlIGh5cGVyOjpodHRwOjpS
ZXNwb25zZTsKLXVzZSBoeXBlcjo6e0JvZHksIFN0YXR1c0NvZGV9OwordXNlIGh5cGVyOjpTdGF0
dXNDb2RlOwordXNlIGh5cGVyX3V0aWw6OnNlcnZlcjo6Z3JhY2VmdWw6OkdyYWNlZnVsU2h1dGRv
d247Cit1c2UgdG9raW86Om5ldDo6VGNwTGlzdGVuZXI7CiB1c2UgdHJhY2luZzo6bGV2ZWxfZmls
dGVyczo6TGV2ZWxGaWx0ZXI7CiAKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7CiB1c2UgcHJveG1v
eF9sYW5nOjp0cnlfYmxvY2s7CiB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0FwaUNvbmZpZywg
UmVzdFNlcnZlcn07CiB1c2UgcHJveG1veF9yb3V0ZXI6OlJwY0Vudmlyb25tZW50VHlwZTsKQEAg
LTM0LDcgKzM3LDcgQEAgZm4gZ2V0X2luZGV4KCkgLT4gUGluPEJveDxkeW4gRnV0dXJlPE91dHB1
dCA9IFJlc3BvbnNlPEJvZHk+PiArIFNlbmQ+PiB7CiAgICAgICAgIFJlc3BvbnNlOjpidWlsZGVy
KCkKICAgICAgICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCiAgICAgICAgICAgICAuaGVh
ZGVyKGh5cGVyOjpoZWFkZXI6OkNPTlRFTlRfVFlQRSwgInRleHQvaHRtbCIpCi0gICAgICAgICAg
ICAuYm9keShpbmRleC5pbnRvKCkpCisgICAgICAgICAgICAuYm9keShpbmRleC50b19zdHJpbmco
KS5pbnRvKCkpCiAgICAgICAgICAgICAudW53cmFwKCkKICAgICB9KQogfQpAQCAtMTA4LDE3ICsx
MTEsMjggQEAgYXN5bmMgZm4gcnVuKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewogICAgIC8vIGh0
dHAgc2VydmVyIGZ1dHVyZToKICAgICBsZXQgc2VydmVyID0gcHJveG1veF9kYWVtb246OnNlcnZl
cjo6Y3JlYXRlX2RhZW1vbigKICAgICAgICAgKFsxMjcsIDAsIDAsIDFdLCA4MikuaW50bygpLAot
ICAgICAgICBtb3ZlIHxsaXN0ZW5lcnwgewotICAgICAgICAgICAgbGV0IGluY29taW5nID0gaHlw
ZXI6OnNlcnZlcjo6Y29ubjo6QWRkckluY29taW5nOjpmcm9tX2xpc3RlbmVyKGxpc3RlbmVyKT87
Ci0KLSAgICAgICAgICAgIE9rKGFzeW5jIHsKKyAgICAgICAgbW92ZSB8bGlzdGVuZXI6IFRjcExp
c3RlbmVyfCB7CisgICAgICAgICAgICBPayhhc3luYyBtb3ZlIHsKICAgICAgICAgICAgICAgICBw
cm94bW94X3N5c3RlbWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owot
Ci0gICAgICAgICAgICAgICAgaHlwZXI6OlNlcnZlcjo6YnVpbGRlcihpbmNvbWluZykKLSAgICAg
ICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2VydmVyKQotICAgICAgICAgICAgICAgICAgICAu
d2l0aF9ncmFjZWZ1bF9zaHV0ZG93bihwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkp
Ci0gICAgICAgICAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQotICAgICAgICAgICAg
ICAgICAgICAuYXdhaXQKKyAgICAgICAgICAgICAgICBsZXQgZ3JhY2VmdWwgPSBBcmM6Om5ldyhH
cmFjZWZ1bFNodXRkb3duOjpuZXcoKSk7CisgICAgICAgICAgICAgICAgbG9vcCB7CisgICAgICAg
ICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFjZWZ1bCk7CisgICAg
ICAgICAgICAgICAgICAgIHRva2lvOjpzZWxlY3QhIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGluY29taW5nID0gbGlzdGVuZXIuYWNjZXB0KCkgPT4geworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCAoY29ubiwgXykgPSBpbmNvbWluZz87CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IGFwaV9zZXJ2aWNlID0gcmVzdF9zZXJ2ZXIuYXBpX3NlcnZpY2UoJmNvbm4pPzsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c3Bhd24oYXN5bmMgbW92ZSB7IGFw
aV9zZXJ2aWNlLnNlcnZlKGNvbm4sIFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQgfSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgX3NodXRkb3duID0g
cHJveG1veF9kYWVtb246OnNodXRkb3duX2Z1dHVyZSgpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgbGV0IFNv
bWUoc2h1dGRvd24pID0gQXJjOjppbnRvX2lubmVyKGdyYWNlZnVsKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxvZzo6aW5mbyEoInNodXR0aW5nIGRvd24uLiIpOworICAgICAgICAgICAgICAgICAg
ICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIE9rKCgpKQogICAgICAgICAgICAgfSkKICAgICAgICAgfSwKICAgICAgICAgU29tZShw
YnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX0FQSV9QSURfRk4pLApkaWZmIC0tZ2l0IGEvc3Jj
L2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5ycyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJv
eHkucnMKaW5kZXggYzlhNjAzMmU2Li44ZWU1MzcyMDcgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHJv
eG1veC1iYWNrdXAtcHJveHkucnMKKysrIGIvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1wcm94eS5y
cwpAQCAtNyw3ICs3LDggQEAgdXNlIGZ1dHVyZXM6Oio7CiB1c2UgaHlwZXI6OmhlYWRlcjsKIHVz
ZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7CiB1c2UgaHlwZXI6Omh0dHA6OlJlc3BvbnNl
OwotdXNlIGh5cGVyOjp7Qm9keSwgU3RhdHVzQ29kZX07Cit1c2UgaHlwZXI6OlN0YXR1c0NvZGU7
Cit1c2UgaHlwZXJfdXRpbDo6c2VydmVyOjpncmFjZWZ1bDo6R3JhY2VmdWxTaHV0ZG93bjsKIHVz
ZSB0cmFjaW5nOjpsZXZlbF9maWx0ZXJzOjpMZXZlbEZpbHRlcjsKIHVzZSB0cmFjaW5nOjp7aW5m
bywgd2Fybn07CiB1c2UgdXJsOjpmb3JtX3VybGVuY29kZWQ7CkBAIC0xNSw2ICsxNiw3IEBAIHVz
ZSB1cmw6OmZvcm1fdXJsZW5jb2RlZDsKIHVzZSBvcGVuc3NsOjpzc2w6OlNzbEFjY2VwdG9yOwog
dXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07CiAKK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7
CiB1c2UgcHJveG1veF9sYW5nOjp0cnlfYmxvY2s7CiB1c2UgcHJveG1veF9yb3V0ZXI6OntScGNF
bnZpcm9ubWVudCwgUnBjRW52aXJvbm1lbnRUeXBlfTsKIHVzZSBwcm94bW94X3N5czo6ZnM6OkNy
ZWF0ZU9wdGlvbnM7CkBAIC0yODksMjcgKzI5MSw3MSBAQCBhc3luYyBmbiBydW4oKSAtPiBSZXN1
bHQ8KCksIEVycm9yPiB7CiAgICAgbGV0IHNlcnZlciA9IHByb3htb3hfZGFlbW9uOjpzZXJ2ZXI6
OmNyZWF0ZV9kYWVtb24oCiAgICAgICAgIChbMCwgMCwgMCwgMCwgMCwgMCwgMCwgMF0sIDgwMDcp
LmludG8oKSwKICAgICAgICAgbW92ZSB8bGlzdGVuZXJ8IHsKLSAgICAgICAgICAgIGxldCAoc2Vj
dXJlX2Nvbm5lY3Rpb25zLCBpbnNlY3VyZV9jb25uZWN0aW9ucykgPQorICAgICAgICAgICAgbGV0
IChtdXQgc2VjdXJlX2Nvbm5lY3Rpb25zLCBtdXQgaW5zZWN1cmVfY29ubmVjdGlvbnMpID0KICAg
ICAgICAgICAgICAgICBjb25uZWN0aW9ucy5hY2NlcHRfdGxzX29wdGlvbmFsKGxpc3RlbmVyLCBh
Y2NlcHRvcik7CiAKICAgICAgICAgICAgIE9rKGFzeW5jIHsKICAgICAgICAgICAgICAgICBwcm94
bW94X3N5c3RlbWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/OwogCi0g
ICAgICAgICAgICAgICAgbGV0IHNlY3VyZV9zZXJ2ZXIgPSBoeXBlcjo6U2VydmVyOjpidWlsZGVy
KHNlY3VyZV9jb25uZWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2Vy
dmVyKQotICAgICAgICAgICAgICAgICAgICAud2l0aF9ncmFjZWZ1bF9zaHV0ZG93bihwcm94bW94
X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkpCi0gICAgICAgICAgICAgICAgICAgIC5tYXBfZXJy
KEVycm9yOjpmcm9tKTsKKyAgICAgICAgICAgICAgICBsZXQgc2VjdXJlX3NlcnZlciA9IGFzeW5j
IG1vdmUgeworICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhY2VmdWwgPSBBcmM6Om5ldyhHcmFj
ZWZ1bFNodXRkb3duOjpuZXcoKSk7CisgICAgICAgICAgICAgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFyYzo6Y2xvbmUoJmdyYWNlZnVsKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRva2lvOjpzZWxlY3QhIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBTb21lKGNvbm4pID0gc2VjdXJlX2Nvbm5lY3Rpb25zLm5leHQoKSA9PiB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbm4geworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgT2soY29ubikgPT4geworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhcGlfc2VydmljZSA9IHJlc3Rfc2VydmVyLmFw
aV9zZXJ2aWNlKCZjb25uKT87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBhcGlfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikp
LmF3YWl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgRXJyKGVycikgPT4geyBsb2c6Ondhcm4hKCJGYWlsZWQgdG8gYWNjZXB0
IGluc2VjdXJlIGNvbm5lY3Rpb246IHtlcnI6P30iKTsgfQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0
dXJlKCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRv
d24pID0gQXJjOjppbnRvX2lubmVyKGdyYWNlZnVsKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQorICAgICAgICAgICAgICAgIH07CiAK
LSAgICAgICAgICAgICAgICBsZXQgaW5zZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVp
bGRlcihpbnNlY3VyZV9jb25uZWN0aW9ucykKLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJl
ZGlyZWN0b3IpCi0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dyYWNlZnVsX3NodXRkb3duKHBy
b3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKLSAgICAgICAgICAgICAgICAgICAgLm1h
cF9lcnIoRXJyb3I6OmZyb20pOworICAgICAgICAgICAgICAgIGxldCBpbnNlY3VyZV9zZXJ2ZXIg
PSBhc3luYyBtb3ZlIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsID0gQXJjOjpu
ZXcoR3JhY2VmdWxTaHV0ZG93bjo6bmV3KCkpOworICAgICAgICAgICAgICAgICAgICBsb29wIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFj
ZWZ1bCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c2VsZWN0ISB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IGluc2VjdXJlX2Nvbm5lY3Rpb25zLm5l
eHQoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbm4gewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2soY29ubikgPT4geworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCByZWRpcmVjdF9zZXJ2aWNlID0g
cmVkaXJlY3Rvci5yZWRpcmVjdF9zZXJ2aWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgeworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdF9zZXJ2aWNlLnNlcnZlKGNvbm4s
IFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7IGxvZzo6d2FybiEo
IkZhaWxlZCB0byBhY2NlcHQgaW5zZWN1cmUgY29ubmVjdGlvbjoge2Vycjo/fSIpOyB9CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaHV0ZG93biA9IHByb3htb3hfZGFl
bW9uOjpzaHV0ZG93bl9mdXR1cmUoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBp
ZiBsZXQgU29tZShzaHV0ZG93bikgPSBBcmM6OmludG9faW5uZXIoZ3JhY2VmdWwpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNodXRkb3duLnNodXRkb3duKCkuYXdhaXQKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBPazo6PCgpLCBFcnJvcj4oKCkpCisgICAg
ICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgICAgIGxldCAoc2VjdXJlX3JlcywgaW5zZWN1
cmVfcmVzKSA9CiAgICAgICAgICAgICAgICAgICAgIHRyeV9qb2luISh0b2tpbzo6c3Bhd24oc2Vj
dXJlX3NlcnZlciksIHRva2lvOjpzcGF3bihpbnNlY3VyZV9zZXJ2ZXIpKQogICAgICAgICAgICAg
ICAgICAgICAgICAgLmNvbnRleHQoImZhaWxlZCB0byBjb21wbGV0ZSBSRVNUIHNlcnZlciB0YXNr
Iik/OwogCi0gICAgICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBbc2VjdXJlX3JlcywgaW5zZWN1
cmVfcmVzXTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0czogW1Jlc3VsdDwoKSwgRXJyb3I+
OyAyXSA9IFtzZWN1cmVfcmVzLCBpbnNlY3VyZV9yZXNdOwogCiAgICAgICAgICAgICAgICAgaWYg
cmVzdWx0cy5pdGVyKCkuYW55KFJlc3VsdDo6aXNfZXJyKSB7CiAgICAgICAgICAgICAgICAgICAg
IGxldCBjYXRfZXJyb3JzID0gcmVzdWx0cwpAQCAtMzIxLDcgKzM2Nyw3IEBAIGFzeW5jIGZuIHJ1
bigpIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKICAgICAgICAgICAgICAgICAgICAgYmFpbCEoY2F0
X2Vycm9ycyk7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgT2soKCkpCisg
ICAgICAgICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQogICAgICAgICAgICAgfSkKICAgICAg
ICAgfSwKICAgICAgICAgU29tZShwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1BST1hZX1BJ
RF9GTiksCi0tIAoyLjM5LjUKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1v
eC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8v
cGJzLWRldmVsCg==