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 486451FF17C
	for <inbox@lore.proxmox.com>; Wed,  2 Apr 2025 15:37:09 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 385161BA4C;
	Wed,  2 Apr 2025 15:36:58 +0200 (CEST)
Mime-Version: 1.0
Date: Wed, 02 Apr 2025 15:36:50 +0200
Message-Id: <D8W6Z2CTLGTA.9MRQMOW9SZK4@proxmox.com>
To: "Proxmox Backup Server development discussion"
 <pbs-devel@lists.proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.18.2-0-ge037c095a049
References: <20250326152327.332179-1-f.gruenbichler@proxmox.com>
 <20250326152327.332179-23-f.gruenbichler@proxmox.com>
In-Reply-To: <20250326152327.332179-23-f.gruenbichler@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL 0.027 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: Re: [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>

T24gV2VkIE1hciAyNiwgMjAyNSBhdCA0OjIzIFBNIENFVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3
cm90ZToKPiBzaW1pbGFyIHRvIHRoZSBvdGhlciBjaGFuZ2VzOgo+IC0gQm9keSB0byBJbmNvbWlu
ZyBvciBwcm94bW94LWh0dHAncyBCb2R5Cj4gLSB1c2UgYWRhcHRlcnMgYmV0d2VlbiBoeXBlcjwt
PnRvd2VyIGFuZCBoeXBlcjwtPnRva2lvCj4gLSBhZGFwdCB0byBuZXcgcHJveG1veC1yZXN0LXNl
cnZlciBpbnRlcmZhY2VzCj4KPiBTaWduZWQtb2ZmLWJ5OiBGYWJpYW4gR3LDvG5iaWNobGVyIDxm
LmdydWVuYmljaGxlckBwcm94bW94LmNvbT4KPiAtLS0KPiAgcHJveG1veC1iYWNrdXAtY2xpZW50
L0NhcmdvLnRvbWwgICAgICB8ICAxICsKPiAgcHJveG1veC1iYWNrdXAtY2xpZW50L3NyYy9zbmFw
c2hvdC5ycyB8ICAyICstCj4gIHNyYy9hY21lL2NsaWVudC5ycyAgICAgICAgICAgICAgICAgICAg
fCAgNiArKy0KPiAgc3JjL2FjbWUvcGx1Z2luLnJzICAgICAgICAgICAgICAgICAgICB8IDYyICsr
KysrKysrKysrKysrKystLS0tLS0tLQo+ICBzcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgICAg
ICAgICAgIHwgMjAgKysrLS0tLS0KPiAgc3JjL2FwaTIvYmFja3VwL2Vudmlyb25tZW50LnJzICAg
ICAgICB8ICAzICstCj4gIHNyYy9hcGkyL2JhY2t1cC9tb2QucnMgICAgICAgICAgICAgICAgfCAx
MCArKy0tCj4gIHNyYy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMgICAgICAgfCA0NyArKysr
KysrKysrLS0tLS0tLS0KPiAgc3JjL2FwaTIvaGVscGVycy5ycyAgICAgICAgICAgICAgICAgICB8
ICAzICstCj4gIHNyYy9hcGkyL25vZGUvbW9kLnJzICAgICAgICAgICAgICAgICAgfCAgNyArLS0K
PiAgc3JjL2FwaTIvbm9kZS90YXNrcy5ycyAgICAgICAgICAgICAgICB8ICA3ICstLQo+ICBzcmMv
YXBpMi9yZWFkZXIvbW9kLnJzICAgICAgICAgICAgICAgIHwgMTcgKysrKy0tLQo+ICBzcmMvYmlu
L3Byb3htb3gtYmFja3VwLWFwaS5ycyAgICAgICAgIHwgNDAgKysrKysrKysrKy0tLS0tCj4gIHNy
Yy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMgICAgICAgfCA3MCArKysrKysrKysrKysrKysr
KysrKysrLS0tLS0KPiAgMTQgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKyksIDk4IGRl
bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9DYXJnby50
b21sIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L0NhcmdvLnRvbWwKPiBpbmRleCBhOTFhNDkwOGIu
LjVmMDE0MGU3OCAxMDA2NDQKPiAtLS0gYS9wcm94bW94LWJhY2t1cC1jbGllbnQvQ2FyZ28udG9t
bAo+ICsrKyBiL3Byb3htb3gtYmFja3VwLWNsaWVudC9DYXJnby50b21sCj4gQEAgLTI0LDYgKzI0
LDcgQEAgcHhhci53b3Jrc3BhY2UgPSB0cnVlCj4gIAo+ICBwcm94bW94LWFzeW5jLndvcmtzcGFj
ZSA9IHRydWUKPiAgcHJveG1veC1odW1hbi1ieXRlLndvcmtzcGFjZSA9IHRydWUKPiArcHJveG1v
eC1odHRwID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsgImJvZHkiIF0gfQo+ICBw
cm94bW94LWxvZy53b3Jrc3BhY2UgPSB0cnVlCj4gIHByb3htb3gtaW8ud29ya3NwYWNlID0gdHJ1
ZQo+ICBwcm94bW94LXJvdXRlciA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVyZXMgPSBbICJj
bGkiIF0gfQo+IGRpZmYgLS1naXQgYS9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90
LnJzIGIvcHJveG1veC1iYWNrdXAtY2xpZW50L3NyYy9zbmFwc2hvdC5ycwo+IGluZGV4IGYxOTVj
MjNiNy4uZjE1NjlkYjJlIDEwMDY0NAo+IC0tLSBhL3Byb3htb3gtYmFja3VwLWNsaWVudC9zcmMv
c25hcHNob3QucnMKPiArKysgYi9wcm94bW94LWJhY2t1cC1jbGllbnQvc3JjL3NuYXBzaG90LnJz
Cj4gQEAgLTI3MSw3ICsyNzEsNyBAQCBhc3luYyBmbiB1cGxvYWRfbG9nKHBhcmFtOiBWYWx1ZSkg
LT4gUmVzdWx0PFZhbHVlLCBFcnJvcj4gewo+ICAgICAgKTsKPiAgCj4gICAgICBsZXQgYXJncyA9
IHNuYXBzaG90X2FyZ3MoJmJhY2t1cF9ucywgJnNuYXBzaG90KT87Cj4gLSAgICBsZXQgYm9keSA9
IGh5cGVyOjpCb2R5Ojpmcm9tKHJhd19kYXRhKTsKPiArICAgIGxldCBib2R5ID0gcHJveG1veF9o
dHRwOjpCb2R5Ojpmcm9tKHJhd19kYXRhKTsKPiAgCj4gICAgICBjbGllbnQKPiAgICAgICAgICAu
dXBsb2FkKCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iLCBib2R5LCAmcGF0aCwgU29tZShhcmdz
KSkKPiBkaWZmIC0tZ2l0IGEvc3JjL2FjbWUvY2xpZW50LnJzIGIvc3JjL2FjbWUvY2xpZW50LnJz
Cj4gaW5kZXggOTdmNjI4ZTM3Li40ZTU1MzkzZTQgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FjbWUvY2xp
ZW50LnJzCj4gKysrIGIvc3JjL2FjbWUvY2xpZW50LnJzCj4gQEAgLTYsOCArNiwxMCBAQCB1c2Ug
c3RkOjpvczo6dW5peDo6ZnM6Ok9wZW5PcHRpb25zRXh0Owo+ICAKPiAgdXNlIGFueWhvdzo6e2Jh
aWwsIGZvcm1hdF9lcnJ9Owo+ICB1c2UgYnl0ZXM6OkJ5dGVzOwo+IC11c2UgaHlwZXI6Ontib2R5
OjpIdHRwQm9keSwgQm9keSwgUmVxdWVzdH07Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6Qm9keUV4
dDsKPiArdXNlIGh5cGVyOjpSZXF1ZXN0Owo+ICB1c2Ugbml4OjpzeXM6OnN0YXQ6Ok1vZGU7Cj4g
K3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBzZXJkZTo6e0Rlc2VyaWFsaXplLCBTZXJp
YWxpemV9Owo+ICAKPiAgdXNlIHByb3htb3hfYWNtZTo6YWNjb3VudDo6QWNjb3VudENyZWF0b3I7
Cj4gQEAgLTYxOCw3ICs2MjAsNyBAQCBpbXBsIEFjbWVDbGllbnQgewo+ICAgICAgICAgICAgICBy
ZXNwb25zZS5qc29uKCk/LAo+ICAgICAgICAgICkpOwo+ICAKPiAtICAgICAgICBPaygoZGlyZWN0
b3J5LmFzX3JlZigpLnVud3JhcCgpLCBub25jZS5hc19kZXJlZigpKSkKPiArICAgICAgICBPaygo
ZGlyZWN0b3J5LmFzX211dCgpLnVud3JhcCgpLCBub25jZS5hc19kZXJlZigpKSkKPiAgICAgIH0K
PiAgCj4gICAgICAvLy8gTGlrZSBgZ2V0X2RpcmVjdG9yeWAsIGJ1dCBpZiB0aGUgZGlyZWN0b3J5
IHByb3ZpZGVzIG5vIG5vbmNlLCBhbHNvIHBlcmZvcm1zIGEgYEhFQURgCj4gZGlmZiAtLWdpdCBh
L3NyYy9hY21lL3BsdWdpbi5ycyBiL3NyYy9hY21lL3BsdWdpbi5ycwo+IGluZGV4IGMzM2NmZTQw
NS4uOTE0MTY3MGU3IDEwMDY0NAo+IC0tLSBhL3NyYy9hY21lL3BsdWdpbi5ycwo+ICsrKyBiL3Ny
Yy9hY21lL3BsdWdpbi5ycwo+IEBAIC0xLDEyICsxLDIxIEBACj4gIHVzZSBzdGQ6OmZ1dHVyZTo6
RnV0dXJlOwo+ICt1c2Ugc3RkOjpuZXQ6OntJcEFkZHIsIFNvY2tldEFkZHJ9Owo+ICB1c2Ugc3Rk
OjpwaW46OlBpbjsKPiAgdXNlIHN0ZDo6cHJvY2Vzczo6U3RkaW87Cj4gIHVzZSBzdGQ6OnN5bmM6
OkFyYzsKPiAgdXNlIHN0ZDo6dGltZTo6RHVyYXRpb247Cj4gIAo+ICB1c2UgYW55aG93Ojp7YmFp
bCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBSZXNw
b25zZX07Cj4gK3VzZSBieXRlczo6Qnl0ZXM7Cj4gK3VzZSBmdXR1cmVzOjpUcnlGdXR1cmVFeHQ7
Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6RnVsbDsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWlu
ZzsKPiArdXNlIGh5cGVyOjpzZXJ2ZXI6OmNvbm46Omh0dHAxOwo+ICt1c2UgaHlwZXI6OnNlcnZp
Y2U6OnNlcnZpY2VfZm47Cj4gK3VzZSBoeXBlcjo6e1JlcXVlc3QsIFJlc3BvbnNlfTsKPiArdXNl
IGh5cGVyX3V0aWw6OnJ0OjpUb2tpb0lvOwo+ICB1c2UgdG9raW86OmlvOjp7QXN5bmNCdWZSZWFk
RXh0LCBBc3luY1JlYWQsIEFzeW5jV3JpdGVFeHQsIEJ1ZlJlYWRlcn07Cj4gK3VzZSB0b2tpbzo6
bmV0OjpUY3BMaXN0ZW5lcjsKPiAgdXNlIHRva2lvOjpwcm9jZXNzOjpDb21tYW5kOwo+ICAKPiAg
dXNlIHByb3htb3hfYWNtZTo6e0F1dGhvcml6YXRpb24sIENoYWxsZW5nZX07Cj4gQEAgLTIzNSwx
MCArMjQ0LDEwIEBAIGltcGwgU3RhbmRhbG9uZVNlcnZlciB7Cj4gIH0KPiAgCj4gIGFzeW5jIGZu
IHN0YW5kYWxvbmVfcmVzcG9uZCgKPiAtICAgIHJlcTogUmVxdWVzdDxCb2R5PiwKPiArICAgIHJl
cTogUmVxdWVzdDxJbmNvbWluZz4sCj4gICAgICBwYXRoOiBBcmM8U3RyaW5nPiwKPiAgICAgIGtl
eV9hdXRoOiBBcmM8U3RyaW5nPiwKPiAtKSAtPiBSZXN1bHQ8UmVzcG9uc2U8Qm9keT4sIGh5cGVy
OjpFcnJvcj4gewo+ICspIC0+IFJlc3VsdDxSZXNwb25zZTxGdWxsPEJ5dGVzPj4sIGh5cGVyOjpF
cnJvcj4gewo+ICAgICAgaWYgcmVxLm1ldGhvZCgpID09IGh5cGVyOjpNZXRob2Q6OkdFVCAmJiBy
ZXEudXJpKCkucGF0aCgpID09IHBhdGguYXNfc3RyKCkgewo+ICAgICAgICAgIE9rKFJlc3BvbnNl
OjpidWlsZGVyKCkKPiAgICAgICAgICAgICAgLnN0YXR1cyhoeXBlcjo6aHR0cDo6U3RhdHVzQ29k
ZTo6T0spCj4gQEAgLTI2MCw5ICsyNjksNiBAQCBpbXBsIEFjbWVQbHVnaW4gZm9yIFN0YW5kYWxv
bmVTZXJ2ZXIgewo+ICAgICAgICAgIF9kb21haW46ICYnZCBBY21lRG9tYWluLAo+ICAgICAgICAg
IF90YXNrOiBBcmM8V29ya2VyVGFzaz4sCj4gICAgICApIC0+IFBpbjxCb3g8ZHluIEZ1dHVyZTxP
dXRwdXQgPSBSZXN1bHQ8JidjIHN0ciwgRXJyb3I+PiArIFNlbmQgKyAnZnV0Pj4gewo+IC0gICAg
ICAgIHVzZSBoeXBlcjo6c2VydmVyOjpjb25uOjpBZGRySW5jb21pbmc7Cj4gLSAgICAgICAgdXNl
IGh5cGVyOjpzZXJ2aWNlOjp7bWFrZV9zZXJ2aWNlX2ZuLCBzZXJ2aWNlX2ZufTsKPiAtCj4gICAg
ICAgICAgQm94OjpwaW4oYXN5bmMgbW92ZSB7Cj4gICAgICAgICAgICAgIHNlbGYuc3RvcCgpOwo+
ICAKPiBAQCAtMjczLDIyICsyNzksNDAgQEAgaW1wbCBBY21lUGx1Z2luIGZvciBTdGFuZGFsb25l
U2VydmVyIHsKPiAgICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpuZXcoY2xpZW50Lmtl
eV9hdXRob3JpemF0aW9uKHRva2VuKT8pOwo+ICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6
bmV3KGZvcm1hdCEoIi8ud2VsbC1rbm93bi9hY21lLWNoYWxsZW5nZS97fSIsIHRva2VuKSk7Cj4g
IAo+IC0gICAgICAgICAgICBsZXQgc2VydmljZSA9IG1ha2Vfc2VydmljZV9mbihtb3ZlIHxffCB7
Cj4gLSAgICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOwo+IC0gICAg
ICAgICAgICAgICAgbGV0IGtleV9hdXRoID0gQXJjOjpjbG9uZSgma2V5X2F1dGgpOwo+IC0gICAg
ICAgICAgICAgICAgYXN5bmMgbW92ZSB7Cj4gLSAgICAgICAgICAgICAgICAgICAgT2s6OjxfLCBo
eXBlcjo6RXJyb3I+KHNlcnZpY2VfZm4obW92ZSB8cmVxdWVzdHwgewo+IC0gICAgICAgICAgICAg
ICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQocmVxdWVzdCwgQXJjOjpjbG9uZSgmcGF0aCks
IEFyYzo6Y2xvbmUoJmtleV9hdXRoKSkKPiAtICAgICAgICAgICAgICAgICAgICB9KSkKPiAtICAg
ICAgICAgICAgICAgIH0KPiAtICAgICAgICAgICAgfSk7Cj4gLQo+ICAgICAgICAgICAgICAvLyBg
Wzo6XTo4MGAgZmlyc3QsIHRoZW4gYCo6ODBgCj4gLSAgICAgICAgICAgIGxldCBpbmNvbWluZyA9
IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHUxNjsgOF0sIDgwKS5pbnRvKCkpKQo+IC0gICAgICAg
ICAgICAgICAgLm9yX2Vsc2UofF98IEFkZHJJbmNvbWluZzo6YmluZCgmKChbMHU4OyA0XSwgODAp
LmludG8oKSkpKT87Cj4gKyAgICAgICAgICAgIGxldCBkdWFsID0gU29ja2V0QWRkcjo6bmV3KElw
QWRkcjo6ZnJvbShbMHUxNjsgOF0pLCA4MCk7Cj4gKyAgICAgICAgICAgIGxldCBpcHY0ID0gU29j
a2V0QWRkcjo6bmV3KElwQWRkcjo6ZnJvbShbMHU4OyA0XSksIDgwKTsKPiArICAgICAgICAgICAg
bGV0IGluY29taW5nID0gVGNwTGlzdGVuZXI6OmJpbmQoZHVhbCkKPiArICAgICAgICAgICAgICAg
IC5vcl9lbHNlKHxffCBUY3BMaXN0ZW5lcjo6YmluZChpcHY0KSkKPiArICAgICAgICAgICAgICAg
IC5hd2FpdD87Cj4gIAo+IC0gICAgICAgICAgICBsZXQgc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6
YnVpbGRlcihpbmNvbWluZykuc2VydmUoc2VydmljZSk7Cj4gKyAgICAgICAgICAgIGxldCBzZXJ2
ZXIgPSBhc3luYyBtb3ZlIHsKPiArICAgICAgICAgICAgICAgIGxvb3Agewo+ICsgICAgICAgICAg
ICAgICAgICAgIGxldCBrZXlfYXV0aCA9IEFyYzo6Y2xvbmUoJmtleV9hdXRoKTsKPiArICAgICAg
ICAgICAgICAgICAgICBsZXQgcGF0aCA9IEFyYzo6Y2xvbmUoJnBhdGgpOwo+ICsgICAgICAgICAg
ICAgICAgICAgIG1hdGNoIGluY29taW5nLmFjY2VwdCgpLmF3YWl0IHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgT2soKHRjcCwgXykpID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxldCBpbyA9IFRva2lvSW86Om5ldyh0Y3ApOwo+ICsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IHNlcnZpY2UgPSBzZXJ2aWNlX2ZuKG1vdmUgfHJlcXVlc3R8IHsKPiArICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFuZGFsb25lX3Jlc3BvbmQoCj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsCj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEFyYzo6Y2xvbmUoJnBhdGgpLAo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBBcmM6OmNsb25lKCZrZXlfYXV0aCksCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7
Cj4gIAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnRhc2s6OnNwYXduKGFz
eW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxldCBFcnIo
ZXJyKSA9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHAxOjpCdWls
ZGVyOjpuZXcoKS5zZXJ2ZV9jb25uZWN0aW9uKGlvLCBzZXJ2aWNlKS5hd2FpdAo+ICsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJpbnRsbiEoIkVycm9yIHNlcnZpbmcgY29ubmVjdGlvbjoge2Vycjo/fSIpOwo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgIEVycihlcnIpID0+IHByaW50bG4hKCJFcnJvciBhY2NlcHRpbmcgY29ubmVj
dGlvbjoge2Vycjo/fSIpLAo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAg
ICAgIH0KPiArICAgICAgICAgICAgfTsKPiAgICAgICAgICAgICAgbGV0IChmdXR1cmUsIGFib3J0
KSA9IGZ1dHVyZXM6OmZ1dHVyZTo6YWJvcnRhYmxlKHNlcnZlcik7Cj4gICAgICAgICAgICAgIHNl
bGYuYWJvcnRfaGFuZGxlID0gU29tZShhYm9ydCk7Cj4gICAgICAgICAgICAgIHRva2lvOjpzcGF3
bihmdXR1cmUpOwo+IGRpZmYgLS1naXQgYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9z
cmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPiBpbmRleCA0ODNlNTk1YzEuLjdhYmE1ZDMxMyAx
MDA2NDQKPiAtLS0gYS9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPiArKysgYi9zcmMvYXBp
Mi9hZG1pbi9kYXRhc3RvcmUucnMKPiBAQCAtOSw4ICs5LDEwIEBAIHVzZSBzdGQ6OnN5bmM6OkFy
YzsKPiAgCj4gIHVzZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07Cj4gIHVzZSBm
dXR1cmVzOjoqOwo+ICt1c2UgaHR0cF9ib2R5X3V0aWw6OkJvZHlFeHQ7Cj4gIHVzZSBoeXBlcjo6
aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gLXVzZSBoeXBlcjo6e2hlYWRlciwgQm9keSwgUmVzcG9u
c2UsIFN0YXR1c0NvZGV9Owo+ICt1c2UgaHlwZXI6Ontib2R5OjpJbmNvbWluZywgaGVhZGVyLCBS
ZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBz
ZXJkZTo6RGVzZXJpYWxpemU7Cj4gIHVzZSBzZXJkZV9qc29uOjp7anNvbiwgVmFsdWV9Owo+ICB1
c2UgdG9raW9fc3RyZWFtOjp3cmFwcGVyczo6UmVjZWl2ZXJTdHJlYW07Cj4gQEAgLTEzODcsNyAr
MTM4OSw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX0RPV05MT0FEX0ZJTEU6IEFwaU1ldGhvZCA9
IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgcHViIGZuIGRvd25sb2FkX2ZpbGUoCj4gICAgICBfcGFy
dHM6IFBhcnRzLAo+IC0gICAgX3JlcV9ib2R5OiBCb2R5LAo+ICsgICAgX3JlcV9ib2R5OiBJbmNv
bWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0aG9kLAo+ICAg
ICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTQ3Miw3ICsxNDc0LDcg
QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURfRklMRV9ERUNPREVEOiBBcGlNZXRob2Qg
PSBBcGlNZXRob2Q6Om5ldygKPiAgCj4gIHB1YiBmbiBkb3dubG9hZF9maWxlX2RlY29kZWQoCj4g
ICAgICBfcGFydHM6IFBhcnRzLAo+IC0gICAgX3JlcV9ib2R5OiBCb2R5LAo+ICsgICAgX3JlcV9i
b2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0
aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTU5OCw3
ICsxNjAwLDcgQEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfVVBMT0FEX0JBQ0tVUF9MT0c6IEFwaU1l
dGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgcHViIGZuIHVwbG9hZF9iYWNrdXBfbG9nKAo+
ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2Jv
ZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRo
b2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0xNjM2LDEz
ICsxNjM4LDcgQEAgcHViIGZuIHVwbG9hZF9iYWNrdXBfbG9nKAo+ICAgICAgICAgICAgICBmaWxl
X25hbWUgPSBmaWxlX25hbWUuZGVyZWYoKSwKPiAgICAgICAgICApOwo+ICAKPiAtICAgICAgICBs
ZXQgZGF0YSA9IHJlcV9ib2R5Cj4gLSAgICAgICAgICAgIC5tYXBfZXJyKEVycm9yOjpmcm9tKQo+
IC0gICAgICAgICAgICAudHJ5X2ZvbGQoVmVjOjpuZXcoKSwgfG11dCBhY2MsIGNodW5rfCB7Cj4g
LSAgICAgICAgICAgICAgICBhY2MuZXh0ZW5kX2Zyb21fc2xpY2UoJmNodW5rKTsKPiAtICAgICAg
ICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQo+IC0gICAgICAgICAgICB9KQo+
IC0gICAgICAgICAgICAuYXdhaXQ/Owo+ICsgICAgICAgIGxldCBkYXRhID0gcmVxX2JvZHkuY29s
bGVjdCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygpOwo+ICAKPiAgICAg
ICAgICAvLyBhbHdheXMgdmVyaWZ5IGJsb2IvQ1JDIGF0IHNlcnZlciBzaWRlCj4gICAgICAgICAg
bGV0IGJsb2IgPSBEYXRhQmxvYjo6bG9hZF9mcm9tX3JlYWRlcigmbXV0ICZkYXRhWy4uXSk/Owo+
IEBAIC0xODE1LDcgKzE4MTEsNyBAQCBmbiBnZXRfbG9jYWxfcHhhcl9yZWFkZXIoCj4gIAo+ICBw
dWIgZm4gcHhhcl9maWxlX2Rvd25sb2FkKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIF9y
ZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAgICBwYXJhbTog
VmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2VudjogQm94PGR5biBS
cGNFbnZpcm9ubWVudD4sCj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVu
dC5ycyBiL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+IGluZGV4IDk5ZDg4NWUyZS4u
OGEyZTlkZGNiIDEwMDY0NAo+IC0tLSBhL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+
ICsrKyBiL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5ycwo+IEBAIC03LDYgKzcsNyBAQCB1
c2UgdHJhY2luZzo6aW5mbzsKPiAgdXNlIDo6c2VyZGU6OlNlcmlhbGl6ZTsKPiAgdXNlIHNlcmRl
X2pzb246Ontqc29uLCBWYWx1ZX07Cj4gIAo+ICt1c2UgcHJveG1veF9odHRwOjpCb2R5Owo+ICB1
c2UgcHJveG1veF9yb3V0ZXI6OntScGNFbnZpcm9ubWVudCwgUnBjRW52aXJvbm1lbnRUeXBlfTsK
PiAgdXNlIHByb3htb3hfc3lzOjpmczo6e2xvY2tfZGlyX25vYmxvY2tfc2hhcmVkLCByZXBsYWNl
X2ZpbGUsIENyZWF0ZU9wdGlvbnN9Owo+ICAKPiBAQCAtMTksNyArMjAsNyBAQCB1c2UgcHJveG1v
eF9yZXN0X3NlcnZlcjo6e2Zvcm1hdHRlcjo6KiwgV29ya2VyVGFza307Cj4gIAo+ICB1c2UgY3Jh
dGU6OmJhY2t1cDo6dmVyaWZ5X2JhY2t1cF9kaXJfd2l0aF9sb2NrOwo+ICAKPiAtdXNlIGh5cGVy
Ojp7Qm9keSwgUmVzcG9uc2V9Owo+ICt1c2UgaHlwZXI6OlJlc3BvbnNlOwo+ICAKPiAgI1tkZXJp
dmUoQ29weSwgQ2xvbmUsIFNlcmlhbGl6ZSldCj4gIHN0cnVjdCBVcGxvYWRTdGF0aXN0aWMgewo+
IGRpZmYgLS1naXQgYS9zcmMvYXBpMi9iYWNrdXAvbW9kLnJzIGIvc3JjL2FwaTIvYmFja3VwL21v
ZC5ycwo+IGluZGV4IGVmYzk3YTFmYi4uZjQzNzhlMTg1IDEwMDY0NAo+IC0tLSBhL3NyYy9hcGky
L2JhY2t1cC9tb2QucnMKPiArKysgYi9zcmMvYXBpMi9iYWNrdXAvbW9kLnJzCj4gQEAgLTUsMTEg
KzUsMTMgQEAgdXNlIGZ1dHVyZXM6Oio7Cj4gIHVzZSBoZXg6OkZyb21IZXg7Cj4gIHVzZSBoeXBl
cjo6aGVhZGVyOjp7SGVhZGVyVmFsdWUsIENPTk5FQ1RJT04sIFVQR1JBREV9Owo+ICB1c2UgaHlw
ZXI6Omh0dHA6OnJlcXVlc3Q6OlBhcnRzOwo+IC11c2UgaHlwZXI6OntCb2R5LCBSZXF1ZXN0LCBS
ZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6e2JvZHk6OkluY29taW5nLCBSZXF1
ZXN0LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcl91dGlsOjpzZXJ2aWNlOjpU
b3dlclRvSHlwZXJTZXJ2aWNlOwo+ICB1c2Ugc2VyZGU6OkRlc2VyaWFsaXplOwo+ICB1c2Ugc2Vy
ZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgdXNlIHRyYWNpbmc6Ondhcm47Cj4gIAo+ICt1c2Ug
cHJveG1veF9odHRwOjpCb2R5Owo+ICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0gyU2Vydmlj
ZSwgV29ya2VyVGFza307Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6e2h0dHBfZXJyLCBsaXN0X3N1
YmRpcnNfYXBpX21ldGhvZH07Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6ewo+IEBAIC03MCw3ICs3
Miw3IEBAIHB1YihjcmF0ZSkgZm4gb3B0aW9uYWxfbnNfcGFyYW0ocGFyYW06ICZWYWx1ZSkgLT4g
UmVzdWx0PEJhY2t1cE5hbWVzcGFjZSwgRXJyb3I+Cj4gIAo+ICBmbiB1cGdyYWRlX3RvX2JhY2t1
cF9wcm90b2NvbCgKPiAgICAgIHBhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+
ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2lu
Zm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+
IEBAIC0yNDcsNyArMjQ5LDcgQEAgZm4gdXBncmFkZV90b19iYWNrdXBfcHJvdG9jb2woCj4gICAg
ICAgICAgICAgICAgICAgICAgICAgIGh0dHAubWF4X2ZyYW1lX3NpemUoNCAqIDEwMjQgKiAxMDI0
KTsKPiAgCj4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlbnYzID0gZW52Mi5jbG9uZSgp
Owo+IC0gICAgICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwg
c2VydmljZSkubWFwKG1vdmUgfHJlc3VsdHwgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICBo
dHRwLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZp
Y2UpKS5tYXAobW92ZSB8cmVzdWx0fCB7Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXRjaCByZXN1bHQgewo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycihlcnIp
ID0+IHsKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQXZvaWQgIFRy
YW5zcG9ydCBlbmRwb2ludCBpcyBub3QgY29ubmVjdGVkIChvcyBlcnJvciAxMDcpCj4gQEAgLTgy
NCw3ICs4MjYsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9ET1dOTE9BRF9QUkVWSU9VUzogQXBp
TWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCj4gIAo+ICBmbiBkb3dubG9hZF9wcmV2aW91cygKPiAg
ICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVxX2JvZHk6IEJvZHksCj4gKyAgICBfcmVxX2Jv
ZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRo
b2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IGRpZmYgLS1naXQg
YS9zcmMvYXBpMi9iYWNrdXAvdXBsb2FkX2NodW5rLnJzIGIvc3JjL2FwaTIvYmFja3VwL3VwbG9h
ZF9jaHVuay5ycwo+IGluZGV4IDIwMjU5NjYwYS4uMmM2NmMyODU1IDEwMDY0NAo+IC0tLSBhL3Ny
Yy9hcGkyL2JhY2t1cC91cGxvYWRfY2h1bmsucnMKPiArKysgYi9zcmMvYXBpMi9iYWNrdXAvdXBs
b2FkX2NodW5rLnJzCj4gQEAgLTUsOCArNSw5IEBAIHVzZSBzdGQ6OnRhc2s6OntDb250ZXh0LCBQ
b2xsfTsKPiAgdXNlIGFueWhvdzo6e2JhaWwsIGZvcm1hdF9lcnIsIEVycm9yfTsKPiAgdXNlIGZ1
dHVyZXM6Oio7Cj4gIHVzZSBoZXg6OkZyb21IZXg7Cj4gK3VzZSBodHRwX2JvZHlfdXRpbDo6e0Jv
ZHlEYXRhU3RyZWFtLCBCb2R5RXh0fTsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKPiAg
dXNlIGh5cGVyOjpodHRwOjpyZXF1ZXN0OjpQYXJ0czsKPiAtdXNlIGh5cGVyOjpCb2R5Owo+ICB1
c2Ugc2VyZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgCj4gIHVzZSBwcm94bW94X3JvdXRlcjo6
e0FwaUhhbmRsZXIsIEFwaU1ldGhvZCwgQXBpUmVzcG9uc2VGdXR1cmUsIFJwY0Vudmlyb25tZW50
fTsKPiBAQCAtMjEsNyArMjIsNyBAQCB1c2UgcGJzX3Rvb2xzOjpqc29uOjp7cmVxdWlyZWRfaW50
ZWdlcl9wYXJhbSwgcmVxdWlyZWRfc3RyaW5nX3BhcmFtfTsKPiAgdXNlIHN1cGVyOjplbnZpcm9u
bWVudDo6KjsKPiAgCj4gIHB1YiBzdHJ1Y3QgVXBsb2FkQ2h1bmsgewo+IC0gICAgc3RyZWFtOiBC
b2R5LAo+ICsgICAgc3RyZWFtOiBCb2R5RGF0YVN0cmVhbTxJbmNvbWluZz4sCj4gICAgICBzdG9y
ZTogQXJjPERhdGFTdG9yZT4sCj4gICAgICBkaWdlc3Q6IFt1ODsgMzJdLAo+ICAgICAgc2l6ZTog
dTMyLAo+IEBAIC0zMSw3ICszMiw3IEBAIHB1YiBzdHJ1Y3QgVXBsb2FkQ2h1bmsgewo+ICAKPiAg
aW1wbCBVcGxvYWRDaHVuayB7Cj4gICAgICBwdWIgZm4gbmV3KAo+IC0gICAgICAgIHN0cmVhbTog
Qm9keSwKPiArICAgICAgICBzdHJlYW06IEJvZHlEYXRhU3RyZWFtPEluY29taW5nPiwKPiAgICAg
ICAgICBzdG9yZTogQXJjPERhdGFTdG9yZT4sCj4gICAgICAgICAgZGlnZXN0OiBbdTg7IDMyXSwK
PiAgICAgICAgICBzaXplOiB1MzIsCj4gQEAgLTE0Niw3ICsxNDcsNyBAQCBwdWIgY29uc3QgQVBJ
X01FVEhPRF9VUExPQURfRklYRURfQ0hVTks6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+
ICAKPiAgZm4gdXBsb2FkX2ZpeGVkX2NodW5rKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAg
IHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06
IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4g
UnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0xNjEsOCArMTYyLDE0IEBAIGZuIHVwbG9hZF9maXhlZF9j
aHVuaygKPiAgCj4gICAgICAgICAgbGV0IGVudjogJkJhY2t1cEVudmlyb25tZW50ID0gcnBjZW52
LmFzX3JlZigpOwo+ICAKPiAtICAgICAgICBsZXQgKGRpZ2VzdCwgc2l6ZSwgY29tcHJlc3NlZF9z
aXplLCBpc19kdXBsaWNhdGUpID0KPiAtICAgICAgICAgICAgVXBsb2FkQ2h1bms6Om5ldyhyZXFf
Ym9keSwgZW52LmRhdGFzdG9yZS5jbG9uZSgpLCBkaWdlc3QsIHNpemUsIGVuY29kZWRfc2l6ZSku
YXdhaXQ/Owo+ICsgICAgICAgIGxldCAoZGlnZXN0LCBzaXplLCBjb21wcmVzc2VkX3NpemUsIGlz
X2R1cGxpY2F0ZSkgPSBVcGxvYWRDaHVuazo6bmV3KAo+ICsgICAgICAgICAgICBCb2R5RGF0YVN0
cmVhbTo6bmV3KHJlcV9ib2R5KSwKPiArICAgICAgICAgICAgZW52LmRhdGFzdG9yZS5jbG9uZSgp
LAo+ICsgICAgICAgICAgICBkaWdlc3QsCj4gKyAgICAgICAgICAgIHNpemUsCj4gKyAgICAgICAg
ICAgIGVuY29kZWRfc2l6ZSwKPiArICAgICAgICApCj4gKyAgICAgICAgLmF3YWl0PzsKPiAgCj4g
ICAgICAgICAgZW52LnJlZ2lzdGVyX2ZpeGVkX2NodW5rKHdpZCwgZGlnZXN0LCBzaXplLCBjb21w
cmVzc2VkX3NpemUsIGlzX2R1cGxpY2F0ZSk/Owo+ICAgICAgICAgIGxldCBkaWdlc3Rfc3RyID0g
aGV4OjplbmNvZGUoZGlnZXN0KTsKPiBAQCAtMjE1LDcgKzIyMiw3IEBAIHB1YiBjb25zdCBBUElf
TUVUSE9EX1VQTE9BRF9EWU5BTUlDX0NIVU5LOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygK
PiAgCj4gIGZuIHVwbG9hZF9keW5hbWljX2NodW5rKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAt
ICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFy
YW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxk
eW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0yMzAsOCArMjM3LDE0IEBAIGZuIHVwbG9hZF9keW5h
bWljX2NodW5rKAo+ICAKPiAgICAgICAgICBsZXQgZW52OiAmQmFja3VwRW52aXJvbm1lbnQgPSBy
cGNlbnYuYXNfcmVmKCk7Cj4gIAo+IC0gICAgICAgIGxldCAoZGlnZXN0LCBzaXplLCBjb21wcmVz
c2VkX3NpemUsIGlzX2R1cGxpY2F0ZSkgPQo+IC0gICAgICAgICAgICBVcGxvYWRDaHVuazo6bmV3
KHJlcV9ib2R5LCBlbnYuZGF0YXN0b3JlLmNsb25lKCksIGRpZ2VzdCwgc2l6ZSwgZW5jb2RlZF9z
aXplKS5hd2FpdD87Cj4gKyAgICAgICAgbGV0IChkaWdlc3QsIHNpemUsIGNvbXByZXNzZWRfc2l6
ZSwgaXNfZHVwbGljYXRlKSA9IFVwbG9hZENodW5rOjpuZXcoCj4gKyAgICAgICAgICAgIEJvZHlE
YXRhU3RyZWFtOjpuZXcocmVxX2JvZHkpLAo+ICsgICAgICAgICAgICBlbnYuZGF0YXN0b3JlLmNs
b25lKCksCj4gKyAgICAgICAgICAgIGRpZ2VzdCwKPiArICAgICAgICAgICAgc2l6ZSwKPiArICAg
ICAgICAgICAgZW5jb2RlZF9zaXplLAo+ICsgICAgICAgICkKPiArICAgICAgICAuYXdhaXQ/Owo+
ICAKPiAgICAgICAgICBlbnYucmVnaXN0ZXJfZHluYW1pY19jaHVuayh3aWQsIGRpZ2VzdCwgc2l6
ZSwgY29tcHJlc3NlZF9zaXplLCBpc19kdXBsaWNhdGUpPzsKPiAgICAgICAgICBsZXQgZGlnZXN0
X3N0ciA9IGhleDo6ZW5jb2RlKGRpZ2VzdCk7Cj4gQEAgLTI1MCwxMyArMjYzLDEzIEBAIHB1YiBj
b25zdCBBUElfTUVUSE9EX1VQTE9BRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6
bmV3KAo+ICAKPiAgZm4gdXBsb2FkX3NwZWVkdGVzdCgKPiAgICAgIF9wYXJ0czogUGFydHMsCj4g
LSAgICByZXFfYm9keTogQm9keSwKPiArICAgIHJlcV9ib2R5OiBJbmNvbWluZywKPiAgICAgIF9w
YXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2VudjogQm94
PGR5biBScGNFbnZpcm9ubWVudD4sCj4gICkgLT4gQXBpUmVzcG9uc2VGdXR1cmUgewo+ICAgICAg
YXN5bmMgbW92ZSB7Cj4gLSAgICAgICAgbGV0IHJlc3VsdCA9IHJlcV9ib2R5Cj4gKyAgICAgICAg
bGV0IHJlc3VsdCA9IEJvZHlEYXRhU3RyZWFtOjpuZXcocmVxX2JvZHkpCj4gICAgICAgICAgICAg
IC5tYXBfZXJyKEVycm9yOjpmcm9tKQo+ICAgICAgICAgICAgICAudHJ5X2ZvbGQoMCwgfHNpemU6
IHVzaXplLCBjaHVua3wgewo+ICAgICAgICAgICAgICAgICAgbGV0IHN1bSA9IHNpemUgKyBjaHVu
ay5sZW4oKTsKPiBAQCAtMzAzLDcgKzMxNiw3IEBAIHB1YiBjb25zdCBBUElfTUVUSE9EX1VQTE9B
RF9CTE9COiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKPiAgCj4gIGZuIHVwbG9hZF9ibG9i
KAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIHJlcV9ib2R5OiBCb2R5LAo+ICsgICAgcmVx
X2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlN
ZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+IEBAIC0zMTgs
MTMgKzMzMSw3IEBAIGZuIHVwbG9hZF9ibG9iKAo+ICAgICAgICAgICAgICBiYWlsISgid3Jvbmcg
YmxvYiBmaWxlIGV4dGVuc2lvbjogJ3t9JyIsIGZpbGVfbmFtZSk7Cj4gICAgICAgICAgfQo+ICAK
PiAtICAgICAgICBsZXQgZGF0YSA9IHJlcV9ib2R5Cj4gLSAgICAgICAgICAgIC5tYXBfZXJyKEVy
cm9yOjpmcm9tKQo+IC0gICAgICAgICAgICAudHJ5X2ZvbGQoVmVjOjpuZXcoKSwgfG11dCBhY2Ms
IGNodW5rfCB7Cj4gLSAgICAgICAgICAgICAgICBhY2MuZXh0ZW5kX2Zyb21fc2xpY2UoJmNodW5r
KTsKPiAtICAgICAgICAgICAgICAgIGZ1dHVyZTo6b2s6OjxfLCBFcnJvcj4oYWNjKQo+IC0gICAg
ICAgICAgICB9KQo+IC0gICAgICAgICAgICAuYXdhaXQ/Owo+ICsgICAgICAgIGxldCBkYXRhID0g
cmVxX2JvZHkuY29sbGVjdCgpLmF3YWl0Lm1hcF9lcnIoRXJyb3I6OmZyb20pPy50b19ieXRlcygp
Owo+ICAKPiAgICAgICAgICBpZiBlbmNvZGVkX3NpemUgIT0gZGF0YS5sZW4oKSB7Cj4gICAgICAg
ICAgICAgIGJhaWwhKAo+IEBAIC0zMzQsNyArMzQxLDcgQEAgZm4gdXBsb2FkX2Jsb2IoCj4gICAg
ICAgICAgICAgICk7Cj4gICAgICAgICAgfQo+ICAKPiAtICAgICAgICBlbnYuYWRkX2Jsb2IoJmZp
bGVfbmFtZSwgZGF0YSk/Owo+ICsgICAgICAgIGVudi5hZGRfYmxvYigmZmlsZV9uYW1lLCBkYXRh
LnRvX3ZlYygpKT87Cj4gIAo+ICAgICAgICAgIE9rKGVudi5mb3JtYXRfcmVzcG9uc2UoT2soVmFs
dWU6Ok51bGwpKSkKPiAgICAgIH0KPiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvaGVscGVycy5ycyBi
L3NyYy9hcGkyL2hlbHBlcnMucnMKPiBpbmRleCAzZGMxYmVmYzEuLmYzNDZiMGNjYSAxMDA2NDQK
PiAtLS0gYS9zcmMvYXBpMi9oZWxwZXJzLnJzCj4gKysrIGIvc3JjL2FwaTIvaGVscGVycy5ycwo+
IEBAIC0yLDggKzIsOSBAQCB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwo+ICAKPiAgdXNlIGFueWhv
dzo6RXJyb3I7Cj4gIHVzZSBmdXR1cmVzOjpzdHJlYW06OlRyeVN0cmVhbUV4dDsKPiAtdXNlIGh5
cGVyOjp7aGVhZGVyLCBCb2R5LCBSZXNwb25zZSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6
e2hlYWRlciwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6
Qm9keTsKPiAgdXNlIHByb3htb3hfcm91dGVyOjpodHRwX2JhaWw7Cj4gIAo+ICBwdWIgYXN5bmMg
Zm4gY3JlYXRlX2Rvd25sb2FkX3Jlc3BvbnNlKHBhdGg6IFBhdGhCdWYpIC0+IFJlc3VsdDxSZXNw
b25zZTxCb2R5PiwgRXJyb3I+IHsKPiBkaWZmIC0tZ2l0IGEvc3JjL2FwaTIvbm9kZS9tb2QucnMg
Yi9zcmMvYXBpMi9ub2RlL21vZC5ycwo+IGluZGV4IDYyYjQ0NzA5Ni4uZTdjNjIxM2MxIDEwMDY0
NAo+IC0tLSBhL3NyYy9hcGkyL25vZGUvbW9kLnJzCj4gKysrIGIvc3JjL2FwaTIvbm9kZS9tb2Qu
cnMKPiBAQCAtNSwxMCArNSwxMSBAQCB1c2Ugc3RkOjpvczo6dW5peDo6aW86OkFzUmF3RmQ7Cj4g
IAo+ICB1c2UgYW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+ICB1c2UgZnV0dXJl
czo6ZnV0dXJlOjp7RnV0dXJlRXh0LCBUcnlGdXR1cmVFeHR9Owo+IC11c2UgaHlwZXI6OmJvZHk6
OkJvZHk7Cj4gK3VzZSBoeXBlcjo6Ym9keTo6SW5jb21pbmc7Cj4gIHVzZSBoeXBlcjo6aHR0cDo6
cmVxdWVzdDo6UGFydHM7Cj4gIHVzZSBoeXBlcjo6dXBncmFkZTo6VXBncmFkZWQ7Cj4gIHVzZSBo
eXBlcjo6UmVxdWVzdDsKPiArdXNlIGh5cGVyX3V0aWw6OnJ0OjpUb2tpb0lvOwo+ICB1c2Ugc2Vy
ZGVfanNvbjo6e2pzb24sIFZhbHVlfTsKPiAgdXNlIHRva2lvOjppbzo6e0FzeW5jQnVmUmVhZEV4
dCwgQnVmUmVhZGVyfTsKPiAgCj4gQEAgLTI2Nyw3ICsyNjgsNyBAQCBwdWIgY29uc3QgQVBJX01F
VEhPRF9XRUJTT0NLRVQ6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6bmV3KAo+ICAKPiAgZm4gdXBn
cmFkZV90b193ZWJzb2NrZXQoCj4gICAgICBwYXJ0czogUGFydHMsCj4gLSAgICByZXFfYm9keTog
Qm9keSwKPiArICAgIHJlcV9ib2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAg
ICAgIF9pbmZvOiAmQXBpTWV0aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25t
ZW50PiwKPiBAQCAtMzA2LDcgKzMwNyw3IEBAIGZuIHVwZ3JhZGVfdG9fd2Vic29ja2V0KAo+ICAg
ICAgICAgICAgICB9Owo+ICAKPiAgICAgICAgICAgICAgbGV0IGxvY2FsID0gdG9raW86Om5ldDo6
VGNwU3RyZWFtOjpjb25uZWN0KGZvcm1hdCEoImxvY2FsaG9zdDp7fSIsIHBvcnQpKS5hd2FpdD87
Cj4gLSAgICAgICAgICAgIHdzLnNlcnZlX2Nvbm5lY3Rpb24oY29ubiwgbG9jYWwpLmF3YWl0Cj4g
KyAgICAgICAgICAgIHdzLnNlcnZlX2Nvbm5lY3Rpb24oVG9raW9Jbzo6bmV3KGNvbm4pLCBsb2Nh
bCkuYXdhaXQKPiAgICAgICAgICB9KTsKPiAgCj4gICAgICAgICAgT2socmVzcG9uc2UpCj4gZGlm
ZiAtLWdpdCBhL3NyYy9hcGkyL25vZGUvdGFza3MucnMgYi9zcmMvYXBpMi9ub2RlL3Rhc2tzLnJz
Cj4gaW5kZXggY2FkNzQwNTU5Li5iZDY3NjMwNjkgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FwaTIvbm9k
ZS90YXNrcy5ycwo+ICsrKyBiL3NyYy9hcGkyL25vZGUvdGFza3MucnMKPiBAQCAtMyw5ICszLDEw
IEBAIHVzZSBzdGQ6OmlvOjp7QnVmUmVhZCwgQnVmUmVhZGVyfTsKPiAgCj4gIHVzZSBhbnlob3c6
OntiYWlsLCBFcnJvcn07Cj4gIHVzZSBmdXR1cmVzOjpGdXR1cmVFeHQ7Cj4gK3VzZSBoeXBlcjo6
Ym9keTo6SW5jb21pbmc7Cj4gIHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gIHVz
ZSBoeXBlcjo6aHR0cDo6e2hlYWRlciwgUmVzcG9uc2UsIFN0YXR1c0NvZGV9Owo+IC11c2UgaHlw
ZXI6OkJvZHk7Cj4gK3VzZSBwcm94bW94X2h0dHA6OkJvZHk7Cj4gIHVzZSBzZXJkZV9qc29uOjp7
anNvbiwgVmFsdWV9Owo+ICAKPiAgdXNlIHByb3htb3hfYXN5bmM6OnN0cmVhbTo6QXN5bmNSZWFk
ZXJTdHJlYW07Cj4gQEAgLTMyMSw3ICszMjIsNyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9SRUFE
X1RBU0tfTE9HOiBBcGlNZXRob2QgPSBBcGlNZXRob2Q6Om5ldygKPiAgKTsKPiAgZm4gcmVhZF90
YXNrX2xvZygKPiAgICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVxX2JvZHk6IEJvZHksCj4g
KyAgICBfcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZhbHVlLAo+ICAgICAgX2lu
Zm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBjRW52aXJvbm1lbnQ+LAo+
IEBAIC00MDQsNyArNDA1LDcgQEAgZm4gcmVhZF90YXNrX2xvZygKPiAgICAgICAgICBPayhSZXNw
b25zZTo6YnVpbGRlcigpCj4gICAgICAgICAgICAgIC5zdGF0dXMoU3RhdHVzQ29kZTo6T0spCj4g
ICAgICAgICAgICAgIC5oZWFkZXIoaGVhZGVyOjpDT05URU5UX1RZUEUsICJhcHBsaWNhdGlvbi9q
c29uIikKPiAtICAgICAgICAgICAgLmJvZHkoQm9keTo6ZnJvbShqc29uLnRvX3N0cmluZygpKSkK
PiArICAgICAgICAgICAgLmJvZHkoanNvbi50b19zdHJpbmcoKS5pbnRvKCkpCj4gICAgICAgICAg
ICAgIC51bndyYXAoKSkKPiAgICAgIH0KPiAgICAgIC5ib3hlZCgpCj4gZGlmZiAtLWdpdCBhL3Ny
Yy9hcGkyL3JlYWRlci9tb2QucnMgYi9zcmMvYXBpMi9yZWFkZXIvbW9kLnJzCj4gaW5kZXggMTcx
M2YxODJiLi5iNjkwMDAwODcgMTAwNjQ0Cj4gLS0tIGEvc3JjL2FwaTIvcmVhZGVyL21vZC5ycwo+
ICsrKyBiL3NyYy9hcGkyL3JlYWRlci9tb2QucnMKPiBAQCAtMywxMiArMywxNSBAQAo+ICB1c2Ug
YW55aG93Ojp7YmFpbCwgZm9ybWF0X2VyciwgRXJyb3J9Owo+ICB1c2UgZnV0dXJlczo6KjsKPiAg
dXNlIGhleDo6RnJvbUhleDsKPiArdXNlIGh5cGVyOjpib2R5OjpJbmNvbWluZzsKPiAgdXNlIGh5
cGVyOjpoZWFkZXI6OntzZWxmLCBIZWFkZXJWYWx1ZSwgQ09OTkVDVElPTiwgVVBHUkFERX07Cj4g
IHVzZSBoeXBlcjo6aHR0cDo6cmVxdWVzdDo6UGFydHM7Cj4gLXVzZSBoeXBlcjo6e0JvZHksIFJl
cXVlc3QsIFJlc3BvbnNlLCBTdGF0dXNDb2RlfTsKPiArdXNlIGh5cGVyOjp7UmVxdWVzdCwgUmVz
cG9uc2UsIFN0YXR1c0NvZGV9Owo+ICt1c2UgaHlwZXJfdXRpbDo6c2VydmljZTo6VG93ZXJUb0h5
cGVyU2VydmljZTsKPiAgdXNlIHNlcmRlOjpEZXNlcmlhbGl6ZTsKPiAgdXNlIHNlcmRlX2pzb246
OlZhbHVlOwo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6Qm9keTsKPiAgdXNlIHByb3htb3hfcmVz
dF9zZXJ2ZXI6OntIMlNlcnZpY2UsIFdvcmtlclRhc2t9Owo+ICB1c2UgcHJveG1veF9yb3V0ZXI6
OnsKPiAgICAgIGh0dHBfZXJyLCBsaXN0X3N1YmRpcnNfYXBpX21ldGhvZCwgQXBpSGFuZGxlciwg
QXBpTWV0aG9kLCBBcGlSZXNwb25zZUZ1dHVyZSwgUGVybWlzc2lvbiwKPiBAQCAtNjgsNyArNzEs
NyBAQCBwdWIgY29uc3QgQVBJX01FVEhPRF9VUEdSQURFX0JBQ0tVUDogQXBpTWV0aG9kID0gQXBp
TWV0aG9kOjpuZXcoCj4gIAo+ICBmbiB1cGdyYWRlX3RvX2JhY2t1cF9yZWFkZXJfcHJvdG9jb2wo
Cj4gICAgICBwYXJ0czogUGFydHMsCj4gLSAgICByZXFfYm9keTogQm9keSwKPiArICAgIHJlcV9i
b2R5OiBJbmNvbWluZywKPiAgICAgIHBhcmFtOiBWYWx1ZSwKPiAgICAgIF9pbmZvOiAmQXBpTWV0
aG9kLAo+ICAgICAgcnBjZW52OiBCb3g8ZHluIFJwY0Vudmlyb25tZW50PiwKPiBAQCAtMTkwLDcg
KzE5Myw3IEBAIGZuIHVwZ3JhZGVfdG9fYmFja3VwX3JlYWRlcl9wcm90b2NvbCgKPiAgICAgICAg
ICAgICAgICAgICAgICBodHRwLmluaXRpYWxfY29ubmVjdGlvbl93aW5kb3dfc2l6ZSh3aW5kb3df
c2l6ZSk7Cj4gICAgICAgICAgICAgICAgICAgICAgaHR0cC5tYXhfZnJhbWVfc2l6ZSg0ICogMTAy
NCAqIDEwMjQpOwo+ICAKPiAtICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5lY3Rp
b24oY29ubiwgc2VydmljZSkKPiArICAgICAgICAgICAgICAgICAgICBodHRwLnNlcnZlX2Nvbm5l
Y3Rpb24oY29ubiwgVG93ZXJUb0h5cGVyU2VydmljZTo6bmV3KHNlcnZpY2UpKQo+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKPiAgICAgICAgICAgICAgICAg
ICAgICAgICAgLmF3YWl0Cj4gICAgICAgICAgICAgICAgICB9Owo+IEBAIC0yNDQsNyArMjQ3LDcg
QEAgcHViIGNvbnN0IEFQSV9NRVRIT0RfRE9XTkxPQURfRklMRTogQXBpTWV0aG9kID0gQXBpTWV0
aG9kOjpuZXcoCj4gIAo+ICBmbiBkb3dubG9hZF9maWxlKAo+ICAgICAgX3BhcnRzOiBQYXJ0cywK
PiAtICAgIF9yZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAg
ICBwYXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAgICAgIHJwY2Vudjog
Qm94PGR5biBScGNFbnZpcm9ubWVudD4sCj4gQEAgLTMwMCw3ICszMDMsNyBAQCBwdWIgY29uc3Qg
QVBJX01FVEhPRF9ET1dOTE9BRF9DSFVOSzogQXBpTWV0aG9kID0gQXBpTWV0aG9kOjpuZXcoCj4g
IAo+ICBmbiBkb3dubG9hZF9jaHVuaygKPiAgICAgIF9wYXJ0czogUGFydHMsCj4gLSAgICBfcmVx
X2JvZHk6IEJvZHksCj4gKyAgICBfcmVxX2JvZHk6IEluY29taW5nLAo+ICAgICAgcGFyYW06IFZh
bHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBycGNlbnY6IEJveDxkeW4gUnBj
RW52aXJvbm1lbnQ+LAo+IEBAIC0zNDgsNyArMzUxLDcgQEAgZm4gZG93bmxvYWRfY2h1bmsoCj4g
IC8qIHRoaXMgaXMgdG9vIHNsb3cKPiAgZm4gZG93bmxvYWRfY2h1bmtfb2xkKAo+ICAgICAgX3Bh
cnRzOiBQYXJ0cywKPiAtICAgIF9yZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5j
b21pbmcsCj4gICAgICBwYXJhbTogVmFsdWUsCj4gICAgICBfaW5mbzogJkFwaU1ldGhvZCwKPiAg
ICAgIHJwY2VudjogQm94PGR5biBScGNFbnZpcm9ubWVudD4sCj4gQEAgLTM5Myw3ICszOTYsNyBA
QCBwdWIgY29uc3QgQVBJX01FVEhPRF9TUEVFRFRFU1Q6IEFwaU1ldGhvZCA9IEFwaU1ldGhvZDo6
bmV3KAo+ICAKPiAgZm4gc3BlZWR0ZXN0KAo+ICAgICAgX3BhcnRzOiBQYXJ0cywKPiAtICAgIF9y
ZXFfYm9keTogQm9keSwKPiArICAgIF9yZXFfYm9keTogSW5jb21pbmcsCj4gICAgICBfcGFyYW06
IFZhbHVlLAo+ICAgICAgX2luZm86ICZBcGlNZXRob2QsCj4gICAgICBfcnBjZW52OiBCb3g8ZHlu
IFJwY0Vudmlyb25tZW50PiwKPiBkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1h
cGkucnMgYi9zcmMvYmluL3Byb3htb3gtYmFja3VwLWFwaS5ycwo+IGluZGV4IDdiNDE4NzU1MC4u
NDM4ZmQ5ZDdlIDEwMDY0NAo+IC0tLSBhL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtYXBpLnJzCj4g
KysrIGIvc3JjL2Jpbi9wcm94bW94LWJhY2t1cC1hcGkucnMKPiBAQCAtMSwxMiArMSwxNSBAQAo+
ICB1c2Ugc3RkOjpmdXR1cmU6OkZ1dHVyZTsKPiAgdXNlIHN0ZDo6cGluOjp7cGluLCBQaW59Owo+
ICt1c2Ugc3RkOjpzeW5jOjpBcmM7Cj4gIAo+ICB1c2UgYW55aG93Ojp7YmFpbCwgRXJyb3J9Owo+
IC11c2UgZnV0dXJlczo6KjsKPiAgdXNlIGh5cGVyOjpodHRwOjpSZXNwb25zZTsKPiAtdXNlIGh5
cGVyOjp7Qm9keSwgU3RhdHVzQ29kZX07Cj4gK3VzZSBoeXBlcjo6U3RhdHVzQ29kZTsKPiArdXNl
IGh5cGVyX3V0aWw6OnNlcnZlcjo6Z3JhY2VmdWw6OkdyYWNlZnVsU2h1dGRvd247Cj4gK3VzZSB0
b2tpbzo6bmV0OjpUY3BMaXN0ZW5lcjsKPiAgdXNlIHRyYWNpbmc6OmxldmVsX2ZpbHRlcnM6Okxl
dmVsRmlsdGVyOwo+ICAKPiArdXNlIHByb3htb3hfaHR0cDo6Qm9keTsKPiAgdXNlIHByb3htb3hf
bGFuZzo6dHJ5X2Jsb2NrOwo+ICB1c2UgcHJveG1veF9yZXN0X3NlcnZlcjo6e0FwaUNvbmZpZywg
UmVzdFNlcnZlcn07Cj4gIHVzZSBwcm94bW94X3JvdXRlcjo6UnBjRW52aXJvbm1lbnRUeXBlOwo+
IEBAIC0zNCw3ICszNyw3IEBAIGZuIGdldF9pbmRleCgpIC0+IFBpbjxCb3g8ZHluIEZ1dHVyZTxP
dXRwdXQgPSBSZXNwb25zZTxCb2R5Pj4gKyBTZW5kPj4gewo+ICAgICAgICAgIFJlc3BvbnNlOjpi
dWlsZGVyKCkKPiAgICAgICAgICAgICAgLnN0YXR1cyhTdGF0dXNDb2RlOjpPSykKPiAgICAgICAg
ICAgICAgLmhlYWRlcihoeXBlcjo6aGVhZGVyOjpDT05URU5UX1RZUEUsICJ0ZXh0L2h0bWwiKQo+
IC0gICAgICAgICAgICAuYm9keShpbmRleC5pbnRvKCkpCj4gKyAgICAgICAgICAgIC5ib2R5KGlu
ZGV4LnRvX3N0cmluZygpLmludG8oKSkKPiAgICAgICAgICAgICAgLnVud3JhcCgpCj4gICAgICB9
KQo+ICB9Cj4gQEAgLTEwOCwxNyArMTExLDI4IEBAIGFzeW5jIGZuIHJ1bigpIC0+IFJlc3VsdDwo
KSwgRXJyb3I+IHsKPiAgICAgIC8vIGh0dHAgc2VydmVyIGZ1dHVyZToKPiAgICAgIGxldCBzZXJ2
ZXIgPSBwcm94bW94X2RhZW1vbjo6c2VydmVyOjpjcmVhdGVfZGFlbW9uKAo+ICAgICAgICAgIChb
MTI3LCAwLCAwLCAxXSwgODIpLmludG8oKSwKPiAtICAgICAgICBtb3ZlIHxsaXN0ZW5lcnwgewo+
IC0gICAgICAgICAgICBsZXQgaW5jb21pbmcgPSBoeXBlcjo6c2VydmVyOjpjb25uOjpBZGRySW5j
b21pbmc6OmZyb21fbGlzdGVuZXIobGlzdGVuZXIpPzsKPiAtCj4gLSAgICAgICAgICAgIE9rKGFz
eW5jIHsKPiArICAgICAgICBtb3ZlIHxsaXN0ZW5lcjogVGNwTGlzdGVuZXJ8IHsKPiArICAgICAg
ICAgICAgT2soYXN5bmMgbW92ZSB7Cj4gICAgICAgICAgICAgICAgICBwcm94bW94X3N5c3RlbWQ6
Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owo+IC0KPiAtICAgICAgICAg
ICAgICAgIGh5cGVyOjpTZXJ2ZXI6OmJ1aWxkZXIoaW5jb21pbmcpCj4gLSAgICAgICAgICAgICAg
ICAgICAgLnNlcnZlKHJlc3Rfc2VydmVyKQo+IC0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dy
YWNlZnVsX3NodXRkb3duKHByb3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKPiAtICAg
ICAgICAgICAgICAgICAgICAubWFwX2VycihFcnJvcjo6ZnJvbSkKPiAtICAgICAgICAgICAgICAg
ICAgICAuYXdhaXQKPiArICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bCA9IEFyYzo6bmV3KEdy
YWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAgIGxvb3Agewo+ICsgICAg
ICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bDIgPSBBcmM6OmNsb25lKCZncmFjZWZ1bCk7Cj4g
KyAgICAgICAgICAgICAgICAgICAgdG9raW86OnNlbGVjdCEgewo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNvbWluZyA9IGxpc3RlbmVyLmFjY2VwdCgpID0+IHsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxldCAoY29ubiwgXykgPSBpbmNvbWluZz87Cj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXQgYXBpX3NlcnZpY2UgPSByZXN0X3NlcnZlci5hcGlfc2Vydmlj
ZSgmY29ubik/Owo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFz
eW5jIG1vdmUgeyBhcGlfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikpLmF3YWl0
IH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9LAo+ICsgICAgICAgICAgICAgICAgICAg
ICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkgPT4gewo+
ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0sCj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgfQo+
ICsgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRvd24pID0gQXJjOjppbnRvX2lubmVy
KGdyYWNlZnVsKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgbG9nOjppbmZvISgic2h1dHRpbmcg
ZG93bi4uIik7Cj4gKyAgICAgICAgICAgICAgICAgICAgc2h1dGRvd24uc2h1dGRvd24oKS5hd2Fp
dAo+ICsgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgT2soKCkpCj4gICAgICAg
ICAgICAgIH0pCj4gICAgICAgICAgfSwKPiAgICAgICAgICBTb21lKHBic19idWlsZGNmZzo6UFJP
WE1PWF9CQUNLVVBfQVBJX1BJRF9GTiksCj4gZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHJveG1veC1i
YWNrdXAtcHJveHkucnMgYi9zcmMvYmluL3Byb3htb3gtYmFja3VwLXByb3h5LnJzCj4gaW5kZXgg
YzlhNjAzMmU2Li44ZWU1MzcyMDcgMTAwNjQ0Cj4gLS0tIGEvc3JjL2Jpbi9wcm94bW94LWJhY2t1
cC1wcm94eS5ycwo+ICsrKyBiL3NyYy9iaW4vcHJveG1veC1iYWNrdXAtcHJveHkucnMKPiBAQCAt
Nyw3ICs3LDggQEAgdXNlIGZ1dHVyZXM6Oio7Cj4gIHVzZSBoeXBlcjo6aGVhZGVyOwo+ICB1c2Ug
aHlwZXI6Omh0dHA6OnJlcXVlc3Q6OlBhcnRzOwo+ICB1c2UgaHlwZXI6Omh0dHA6OlJlc3BvbnNl
Owo+IC11c2UgaHlwZXI6OntCb2R5LCBTdGF0dXNDb2RlfTsKPiArdXNlIGh5cGVyOjpTdGF0dXND
b2RlOwo+ICt1c2UgaHlwZXJfdXRpbDo6c2VydmVyOjpncmFjZWZ1bDo6R3JhY2VmdWxTaHV0ZG93
bjsKPiAgdXNlIHRyYWNpbmc6OmxldmVsX2ZpbHRlcnM6OkxldmVsRmlsdGVyOwo+ICB1c2UgdHJh
Y2luZzo6e2luZm8sIHdhcm59Owo+ICB1c2UgdXJsOjpmb3JtX3VybGVuY29kZWQ7Cj4gQEAgLTE1
LDYgKzE2LDcgQEAgdXNlIHVybDo6Zm9ybV91cmxlbmNvZGVkOwo+ICB1c2Ugb3BlbnNzbDo6c3Ns
OjpTc2xBY2NlcHRvcjsKPiAgdXNlIHNlcmRlX2pzb246Ontqc29uLCBWYWx1ZX07Cj4gIAo+ICt1
c2UgcHJveG1veF9odHRwOjpCb2R5Owo+ICB1c2UgcHJveG1veF9sYW5nOjp0cnlfYmxvY2s7Cj4g
IHVzZSBwcm94bW94X3JvdXRlcjo6e1JwY0Vudmlyb25tZW50LCBScGNFbnZpcm9ubWVudFR5cGV9
Owo+ICB1c2UgcHJveG1veF9zeXM6OmZzOjpDcmVhdGVPcHRpb25zOwo+IEBAIC0yODksMjcgKzI5
MSw3MSBAQCBhc3luYyBmbiBydW4oKSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4gICAgICBsZXQg
c2VydmVyID0gcHJveG1veF9kYWVtb246OnNlcnZlcjo6Y3JlYXRlX2RhZW1vbigKPiAgICAgICAg
ICAoWzAsIDAsIDAsIDAsIDAsIDAsIDAsIDBdLCA4MDA3KS5pbnRvKCksCj4gICAgICAgICAgbW92
ZSB8bGlzdGVuZXJ8IHsKPiAtICAgICAgICAgICAgbGV0IChzZWN1cmVfY29ubmVjdGlvbnMsIGlu
c2VjdXJlX2Nvbm5lY3Rpb25zKSA9Cj4gKyAgICAgICAgICAgIGxldCAobXV0IHNlY3VyZV9jb25u
ZWN0aW9ucywgbXV0IGluc2VjdXJlX2Nvbm5lY3Rpb25zKSA9Cj4gICAgICAgICAgICAgICAgICBj
b25uZWN0aW9ucy5hY2NlcHRfdGxzX29wdGlvbmFsKGxpc3RlbmVyLCBhY2NlcHRvcik7Cj4gIAo+
ICAgICAgICAgICAgICBPayhhc3luYyB7Cj4gICAgICAgICAgICAgICAgICBwcm94bW94X3N5c3Rl
bWQ6Om5vdGlmeTo6U3lzdGVtZE5vdGlmeTo6UmVhZHkubm90aWZ5KCk/Owo+ICAKPiAtICAgICAg
ICAgICAgICAgIGxldCBzZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVpbGRlcihzZWN1
cmVfY29ubmVjdGlvbnMpCj4gLSAgICAgICAgICAgICAgICAgICAgLnNlcnZlKHJlc3Rfc2VydmVy
KQo+IC0gICAgICAgICAgICAgICAgICAgIC53aXRoX2dyYWNlZnVsX3NodXRkb3duKHByb3htb3hf
ZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSkKPiAtICAgICAgICAgICAgICAgICAgICAubWFwX2Vy
cihFcnJvcjo6ZnJvbSk7Cj4gKyAgICAgICAgICAgICAgICBsZXQgc2VjdXJlX3NlcnZlciA9IGFz
eW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1bCA9IEFyYzo6bmV3
KEdyYWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAgICAgICBsb29wIHsK
PiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFyYzo6Y2xvbmUoJmdy
YWNlZnVsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNlbGVjdCEgewo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IHNlY3VyZV9jb25uZWN0aW9u
cy5uZXh0KCkgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNv
bm4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPayhjb25uKSA9PiB7
Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYXBpX3NlcnZp
Y2UgPSByZXN0X3NlcnZlci5hcGlfc2VydmljZSgmY29ubik/Owo+ICsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNwYXduKGFzeW5jIG1vdmUgewo+ICsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zZXJ2aWNlLnNlcnZl
KGNvbm4sIFNvbWUoZ3JhY2VmdWwyKSkuYXdhaXQKPiArICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0pOwo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9LAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnIoZXJyKSA9PiB7
IGxvZzo6d2FybiEoIkZhaWxlZCB0byBhY2NlcHQgaW5zZWN1cmUgY29ubmVjdGlvbjoge2Vycjo/
fSIpOyB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zaHV0
ZG93biA9IHByb3htb3hfZGFlbW9uOjpzaHV0ZG93bl9mdXR1cmUoKSA9PiB7Cj4gKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAg
ICB9Cj4gKyAgICAgICAgICAgICAgICAgICAgaWYgbGV0IFNvbWUoc2h1dGRvd24pID0gQXJjOjpp
bnRvX2lubmVyKGdyYWNlZnVsKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHNodXRkb3du
LnNodXRkb3duKCkuYXdhaXQKPiArICAgICAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAg
ICAgICAgICAgT2s6OjwoKSwgRXJyb3I+KCgpKQo+ICsgICAgICAgICAgICAgICAgfTsKPiAgCj4g
LSAgICAgICAgICAgICAgICBsZXQgaW5zZWN1cmVfc2VydmVyID0gaHlwZXI6OlNlcnZlcjo6YnVp
bGRlcihpbnNlY3VyZV9jb25uZWN0aW9ucykKPiAtICAgICAgICAgICAgICAgICAgICAuc2VydmUo
cmVkaXJlY3RvcikKPiAtICAgICAgICAgICAgICAgICAgICAud2l0aF9ncmFjZWZ1bF9zaHV0ZG93
bihwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0dXJlKCkpCj4gLSAgICAgICAgICAgICAgICAg
ICAgLm1hcF9lcnIoRXJyb3I6OmZyb20pOwo+ICsgICAgICAgICAgICAgICAgbGV0IGluc2VjdXJl
X3NlcnZlciA9IGFzeW5jIG1vdmUgewo+ICsgICAgICAgICAgICAgICAgICAgIGxldCBncmFjZWZ1
bCA9IEFyYzo6bmV3KEdyYWNlZnVsU2h1dGRvd246Om5ldygpKTsKPiArICAgICAgICAgICAgICAg
ICAgICBsb29wIHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYWNlZnVsMiA9IEFy
Yzo6Y2xvbmUoJmdyYWNlZnVsKTsKPiArICAgICAgICAgICAgICAgICAgICAgICAgdG9raW86OnNl
bGVjdCEgewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZShjb25uKSA9IGluc2Vj
dXJlX2Nvbm5lY3Rpb25zLm5leHQoKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF0Y2ggY29ubiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE9rKGNvbm4pID0+IHsKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGxldCByZWRpcmVjdF9zZXJ2aWNlID0gcmVkaXJlY3Rvci5yZWRpcmVjdF9zZXJ2aWNlKCk7Cj4g
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tpbzo6c3Bhd24oYXN5
bmMgbW92ZSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmVkaXJlY3Rfc2VydmljZS5zZXJ2ZShjb25uLCBTb21lKGdyYWNlZnVsMikpLmF3YWl0Cj4gKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKPiArICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfSwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgRXJyKGVycikgPT4geyBsb2c6Ondhcm4hKCJGYWlsZWQgdG8gYWNjZXB0IGluc2Vj
dXJlIGNvbm5lY3Rpb246IHtlcnI6P30iKTsgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCj4gKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfc2h1dGRvd24gPSBwcm94bW94X2RhZW1vbjo6c2h1dGRvd25fZnV0
dXJlKCkgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwo+ICsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgICAgICB9
Cj4gKyAgICAgICAgICAgICAgICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIGlmIGxldCBT
b21lKHNodXRkb3duKSA9IEFyYzo6aW50b19pbm5lcihncmFjZWZ1bCkgewo+ICsgICAgICAgICAg
ICAgICAgICAgICAgICBzaHV0ZG93bi5zaHV0ZG93bigpLmF3YWl0Cj4gKyAgICAgICAgICAgICAg
ICAgICAgfQo+ICsgICAgICAgICAgICAgICAgICAgIE9rOjo8KCksIEVycm9yPigoKSkKPiArICAg
ICAgICAgICAgICAgIH07CgpUaGUgbmV3IGBzZWN1cmVfc2VydmVyYCBhbmQgYGluc2VjdXJlX3Nl
cnZlcmAgYWJvdmUgYXJlbid0IHJlYWxseSB0aGF0CnByZXR0eTsgcGVyaGFwcyB3ZSBjYW4gY2xl
YW4gdGhlbSB1cCBvbmNlIHdlIGdvdCBhIHRyYWl0IGZvciB0aGUgcmV0dXJuCnR5cGVzIG9mIGBh
Y2NlcHRfdGxzX29wdGlvbmFsKClgIGFuZCBzaW1pbGFyIDpzCgpJbiBnZW5lcmFsIEknZCBzdWdn
ZXN0IGJyZWFraW5nIHVwIHRoZSByZXR1cm5lZCBjb3JvdXRpbmUgc2luY2UgaXQncwpnb3R0ZW4g
cXVpdGUgbGFyZ2Ugbm93LCBwZXJoYXBzIGV4cGxpY2l0bHkgZGVmaW5pbmcgc2VwYXJhdGUgY29y
b3V0aW5lcwpmb3IgYHNlY3VyZV9zZXJ2ZXJgIGFuZCBgaW5zZWN1cmVfc2VydmVyYCBlYWNoLCBp
bnN0ZWFkIG9mIHVzaW5nIGBhc3luY2AKYmxvY2tzLCBvciBleHBsaWNpdGx5IGRlZmluaW5nIHRo
ZSByZXR1cm5lZCBjb3JvdXRpbmUgYXMgYSB3aG9sZS4KTm8gaGFyZCBmZWVsaW5ncyBpZiB5b3Ug
ZG9uJ3QsIHRob3VnaC4KCj4gIAo+ICAgICAgICAgICAgICAgICAgbGV0IChzZWN1cmVfcmVzLCBp
bnNlY3VyZV9yZXMpID0KPiAgICAgICAgICAgICAgICAgICAgICB0cnlfam9pbiEodG9raW86OnNw
YXduKHNlY3VyZV9zZXJ2ZXIpLCB0b2tpbzo6c3Bhd24oaW5zZWN1cmVfc2VydmVyKSkKPiAgICAg
ICAgICAgICAgICAgICAgICAgICAgLmNvbnRleHQoImZhaWxlZCB0byBjb21wbGV0ZSBSRVNUIHNl
cnZlciB0YXNrIik/Owo+ICAKPiAtICAgICAgICAgICAgICAgIGxldCByZXN1bHRzID0gW3NlY3Vy
ZV9yZXMsIGluc2VjdXJlX3Jlc107Cj4gKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0czogW1Jl
c3VsdDwoKSwgRXJyb3I+OyAyXSA9IFtzZWN1cmVfcmVzLCBpbnNlY3VyZV9yZXNdOwo+ICAKPiAg
ICAgICAgICAgICAgICAgIGlmIHJlc3VsdHMuaXRlcigpLmFueShSZXN1bHQ6OmlzX2Vycikgewo+
ICAgICAgICAgICAgICAgICAgICAgIGxldCBjYXRfZXJyb3JzID0gcmVzdWx0cwo+IEBAIC0zMjEs
NyArMzY3LDcgQEAgYXN5bmMgZm4gcnVuKCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ICAgICAg
ICAgICAgICAgICAgICAgIGJhaWwhKGNhdF9lcnJvcnMpOwo+ICAgICAgICAgICAgICAgICAgfQo+
ICAKPiAtICAgICAgICAgICAgICAgIE9rKCgpKQo+ICsgICAgICAgICAgICAgICAgT2s6OjwoKSwg
RXJyb3I+KCgpKQo+ICAgICAgICAgICAgICB9KQo+ICAgICAgICAgIH0sCj4gICAgICAgICAgU29t
ZShwYnNfYnVpbGRjZmc6OlBST1hNT1hfQkFDS1VQX1BST1hZX1BJRF9GTiksCgoKCl9fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnBicy1kZXZlbCBtYWlsaW5n
IGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5j
b20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=