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 5D4EA1FF176
	for <inbox@lore.proxmox.com>; Fri, 24 Jan 2025 10:21:25 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 40E871B511;
	Fri, 24 Jan 2025 10:21:20 +0100 (CET)
Message-ID: <3a622fea-a288-4fdf-b550-857d2c458ab6@proxmox.com>
Date: Fri, 24 Jan 2025 10:20:45 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Proxmox Backup Server development discussion <pbs-devel@lists.proxmox.com>,
 =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
References: <20241207110720.205989-1-c.ebner@proxmox.com>
 <1737706342.xws3z5009p.astroid@yuna.none>
Content-Language: en-US, de-DE
From: Christian Ebner <c.ebner@proxmox.com>
In-Reply-To: <1737706342.xws3z5009p.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.365 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible
 spam tricks
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
 T_SCC_BODY_TEXT_LINE    -0.01 -
Subject: Re: [pbs-devel] [PATCH v4 proxmox-backup] client: pxar: fix race in
 pxar backup stream
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-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pbs-devel-bounces@lists.proxmox.com
Sender: "pbs-devel" <pbs-devel-bounces@lists.proxmox.com>

T24gMS8yNC8yNSAwOToyMiwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBPbiBEZWNlbWJl
ciA3LCAyMDI0IDEyOjA3IHBtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6Cj4+IEZpeGVzIGEgcmFj
ZSBjb25kaXRpb24gd2hlcmUgdGhlIGJhY2t1cCB1cGxvYWQgc3RyZWFtIGNhbiBtaXNzIGFuCj4+
IGVycm9yIHJldHVybmVkIGJ5IHB4YXI6OmNyZWF0ZV9hcmNoaXZlLCBiZWNhdXNlIHRoZSBlcnJv
ciBzdGF0ZSBpcwo+PiBvbmx5IHNldCBhZnRlciB0aGUgYmFja3VwIHN0cmVhbSB3YXMgYWxyZWFk
eSBwb2xsZWQuCj4+Cj4+IE9uIGluc3RhbnRpYXRpb24sIGBQeGFyQmFja3VwU3RyZWFtYCBzcGF3
bnMgYSBmdXR1cmUgaGFuZGxpbmcgdGhlCj4+IHB4YXIgYXJjaGl2ZSBjcmVhdGlvbiwgd2hpY2gg
c2VuZHMgdGhlIGVuY29kZWQgcHhhciBhcmNoaXZlIHN0cmVhbQo+PiAob3Igc3RyZWFtcyBpbiBj
YXNlIG9mIHNwbGl0IGFyY2hpdmVzKSB0aHJvdWdoIGEgY2hhbm5lbCwgcmVjZWl2ZWQKPj4gYnkg
dGhlIHB4YXIgYmFja3VwIHN0cmVhbSBvbiBwb2xsaW5nLgo+Pgo+PiBJbiBjYXNlIHRoaXMgY2hh
bm5lbCBpcyBjbG9zZWQgYXMgc2lnbmFsZWQgYnkgcmV0dXJuaW5nIGFuIGVycm9yLCB0aGUKPj4g
cG9sbCBsb2dpYyB3aWxsIHByb3BhZ2F0ZSBhbiBldmVudHVhbCBlcnJvciBvY2N1cnJlZCBkdXJp
bmcgcHhhcgo+PiBjcmVhdGlvbiBieSB0YWtpbmcgaXQgZnJvbSB0aGUgYFB4YXJCYWNrdXBTdHJl
YW1gLgo+Pgo+PiBBcyB0aGlzIGVycm9yIG1pZ2h0IG5vdCBoYXZlIGJlZW4gc2V0IGp1c3QgeWV0
LCB0aGlzIGNhbiBsZWFkIHRvCj4+IGluY29ycmVjdGx5IHRlcm1pbmF0aW5nIGEgYmFja3VwIHNu
YXBzaG90IHdpdGggc3VjY2VzcywgZXZlbnRob3VnaCBhbgo+PiBlcnJvciBvY2N1cnJlZC4KPj4K
Pj4gVG8gZml4IHRoaXMsIGludHJvZHVjZSBgQXJjaGl2ZXJTdGF0ZWAgdG8gaG9sZCBhIGZpbmlz
aCBmbGFnIGFzIHdlbGwKPj4gYXMgdGhlIGVycm9yIGFuZCBhZGQgYSBub3RpZmljYXRpb24gY2hh
bm5lbCwgYWxsb3dpbmcgdGhlIGFyY2hpdmVyCj4+IGZ1dHVyZSB0byBzaWduYWwgdGhlIHdhaXRp
bmcgc3RyZWFtLiBBcyB0aGUgbm90aWZpY2F0aW9uIHdhaXRlciB3aWxsCj4+IGJsb2NrIG9uIHN1
YnNlcXVlbnQgcG9sbHMgZXZlbiBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuIG5vdGlmaWVkIGFib3V0
Cj4+IHRoZSBhcmNoaXZlIGNyZWF0aW9uIGZpbmlzaCwgb3IgaXQgbWlnaHQgbm90IGhhdmUgYmVl
biByZWdpc3RlcmVkCj4+IGp1c3QgeWV0IHdoZW4gdGhlIG5vdGlmaWNhdGlvbiB3YXMgc2VuZCBv
dXQsIG9ubHkgYmxvY2sgYW5kIHdhaXQgZm9yCj4+IG5vdGlmaWNhdGlvbnMgaWYgdGhlIGZpbmlz
aGVkIGZsYWcgaW4gdGhlIGBBcmNoaXZlclN0YXRlYCBpcyBub3Qgc2V0Lgo+PiBJZiBpdCBpcyBz
ZXQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gd2FpdCBmb3IgYSBub3RpZmljYXRpb24sIGFzIHRoZQo+
PiBhcmNoaXZlciBpcyBmaW5pc2hlZCBmb3Igc3VyZS4KPj4KPj4gSW4gY2FzZSBvZiBwcmVtYXR1
cmUgdGVybWluYXRpb24gb2YgdGhlIHB4YXIgYmFja3VwIHN0cmVhbSwgbm8KPj4gYWRkaXRpb25h
bCBtZWFzdXJlcyBoYXZlIHRvIGJlZW4gdGFrZW4sIGFzIHRoZSBhYm9ydCBoYW5kbGUgYWxyZWFk
eQo+PiB0ZXJtaW5hdGVzIHRoZSBhcmNoaXZlIGNyZWF0aW9uLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5
OiBDaHJpc3RpYW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+IC0tLQo+PiBjaGFuZ2Vz
IHNpbmNlIHZlcnNpb24gMzoKPj4gLSBmaXggYSBwb3NzaWJsZSBkZWFkbG9jayBlbmNvdW50ZXJl
ZCBkdXJpbmcgZnVydGhlciB0ZXN0aW5nIGJ5Cj4+ICAgIHN0cmljdGx5IGxpbWl0aW5nIHRoZSBh
cmNoaXZlciBzdGF0ZSdzIG11dGV4IGxvY2sgc2NvcGUuCj4+Cj4+ICAgcGJzLWNsaWVudC9zcmMv
cHhhcl9iYWNrdXBfc3RyZWFtLnJzIHwgNjEgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQo+
PiAgIDEgZmlsZSBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKPj4K
Pj4gZGlmZiAtLWdpdCBhL3Bicy1jbGllbnQvc3JjL3B4YXJfYmFja3VwX3N0cmVhbS5ycyBiL3Bi
cy1jbGllbnQvc3JjL3B4YXJfYmFja3VwX3N0cmVhbS5ycwo+PiBpbmRleCAyYmZiNWNmMjkuLjNm
YjE5MjdkMCAxMDA2NDQKPj4gLS0tIGEvcGJzLWNsaWVudC9zcmMvcHhhcl9iYWNrdXBfc3RyZWFt
LnJzCj4+ICsrKyBiL3Bicy1jbGllbnQvc3JjL3B4YXJfYmFja3VwX3N0cmVhbS5ycwo+PiBAQCAt
MTEsNiArMTEsNyBAQCB1c2UgZnV0dXJlczo6c3RyZWFtOjpTdHJlYW07Cj4+ICAgdXNlIG5peDo6
ZGlyOjpEaXI7Cj4+ICAgdXNlIG5peDo6ZmNudGw6Ok9GbGFnOwo+PiAgIHVzZSBuaXg6OnN5czo6
c3RhdDo6TW9kZTsKPj4gK3VzZSB0b2tpbzo6c3luYzo6Tm90aWZ5Owo+PiAgIAo+PiAgIHVzZSBw
cm94bW94X2FzeW5jOjpibG9ja2luZzo6VG9raW9Xcml0ZXJBZGFwdGVyOwo+PiAgIHVzZSBwcm94
bW94X2lvOjpTdGRDaGFubmVsV3JpdGVyOwo+PiBAQCAtMzAsNyArMzEsMTMgQEAgcHViIHN0cnVj
dCBQeGFyQmFja3VwU3RyZWFtIHsKPj4gICAgICAgcng6IE9wdGlvbjxzdGQ6OnN5bmM6Om1wc2M6
OlJlY2VpdmVyPFJlc3VsdDxWZWM8dTg+LCBFcnJvcj4+PiwKPj4gICAgICAgcHViIHN1Z2dlc3Rl
ZF9ib3VuZGFyaWVzOiBPcHRpb248c3RkOjpzeW5jOjptcHNjOjpSZWNlaXZlcjx1NjQ+PiwKPj4g
ICAgICAgaGFuZGxlOiBPcHRpb248QWJvcnRIYW5kbGU+LAo+PiAtICAgIGVycm9yOiBBcmM8TXV0
ZXg8T3B0aW9uPEVycm9yPj4+LAo+PiArICAgIGFyY2hpdmVyX3N0YXRlOiBBcmM8TXV0ZXg8QXJj
aGl2ZXJTdGF0ZT4+LAo+PiArICAgIGFyY2hpdmVyX2ZpbmlzaGVkX25vdGlmaWNhdGlvbjogQXJj
PE5vdGlmeT4sCj4gCj4gSSBhbSBub3Qgc3VyZSBJIGZvbGxvdyB0aGlzIGNoYW5nZS4uIHdvdWxk
bid0IGp1c3QgaGF2aW5nIHRoZSBlcnJvciBhbmQKPiB0aGUgbm90aWZpY2F0aW9uIGJlIGVub3Vn
aD8KCklmIEkgcmVjYWxsIGNvcnJlY3RseSwgdGhlIGlzc3VlIGhlcmUgd2FzIHRoYXQgb25lIHN0
cmVhbSBjYW4gYmxvY2sgCmZvcmV2ZXIgd2l0aG91dCB0aGlzIGluIGNhc2Ugb2Ygc3BsaXQgcHhh
ciBhcmNoaXZlcy4KVGhlIHJlYXNvbiBiZWluZywgdGhhdCBpdCB3aWxsIG5vdCBiZSBub3RpZmll
ZCBvZiBub3RpZmljYXRpb25zIGFscmVhZHkgCnNlbmQgb3V0IGJ5IHRoZSBhcmNoaXZlciBiZWZv
cmUgdGhlIHN0cmVhbSByZWdpc3RlcmVkIHRvIHJlY2VpdmUgCm5vdGlmaWNhdGlvbnMuClNvIGJ5
IHNldHRpbmcgdGhlIGZpbmlzaGVkIGZsYWcgaW4gdGhlIHN0YXRlLCBvbmUgY2FuIGF2b2lkIHRv
IGV2ZW4gCnJlZ2lzdGVyIGFuZCBibG9jayBmb3JldmVyLgoKPiAKPiBpZiB3ZSBlbmNvdW50ZXIg
YW4gZXJyb3IgZHVyaW5nIHN0cmVhbSBwcm9jZXNzaW9uLCB3ZSBjYW4gaW1tZWRpYXRlbHkKPiBh
Ym9ydC4gaWYgdGhlIHN0cmVhbSBpcyBmaW5pc2hlZCwgd2UgY2hlY2sgZm9yIGVycm9ycywgd2Fp
dCBmb3IgdGhlCj4gbm90aWZpY2F0aW9uLCBjaGVjayBmb3IgZXJyb3JzIGFnYWluPwo+IAo+IGlm
IHdlIGhhdmUgb25lIE5vdGlmeSBwZXIgc3RyZWFtLCB0aGVuIGV2ZXJ5IHN0cmVhbSBtdXN0IGVp
dGhlciBzZWUgYW4KPiBlcnJvciwgb3IgZ2V0IHRoZSBub3RpZmljYXRpb24uIG5vIG1vcmUgcmFj
ZSAocHJvdmlkZWQgYW55IGVuY291bnRlcmVkCj4gZXJyb3IgaXMgYWx3YXlzIHNldCBiZWZvcmUg
bm90aWZ5aW5nKSBhbmQgbm8gcmlzayBmb3Igd2FpdGluZyBmb3JldmVyCj4gZWl0aGVyIDspCgpB
cyBzdGF0ZWQgYWJvdmUgdGhlIGFyY2hpdmVyIG1pZ2h0IHNlbmQgb3V0IHRoZSBmaW5pc2hlZCBu
b3RpZmljYXRpb24gCmJlZm9yZSB0aGUgc3RyZWFtIHJlZ2lzdGVycyB0byBiZSBub3RpZmllZCwg
bmV2ZXIgZ2V0dGluZyBhbnkgCm5vdGlmaWNhdGlvbiBhbmQgYmxvY2tpbmcgZm9yZXZlci4KCj4g
Cj4+ICt9Cj4+ICsKPj4gK3N0cnVjdCBBcmNoaXZlclN0YXRlIHsKPj4gKyAgICBmaW5pc2hlZDog
Ym9vbCwKPj4gKyAgICBlcnJvcjogT3B0aW9uPEVycm9yPiwKPj4gICB9Cj4+ICAgCj4+ICAgaW1w
bCBEcm9wIGZvciBQeGFyQmFja3VwU3RyZWFtIHsKPj4gQEAgLTc4LDEwICs4NSwxNiBAQCBpbXBs
IFB4YXJCYWNrdXBTdHJlYW0gewo+PiAgICAgICAgICAgICAgICAgICAocHhhcjo6UHhhclZhcmlh
bnQ6OlVuaWZpZWQod3JpdGVyKSwgTm9uZSwgTm9uZSwgTm9uZSkKPj4gICAgICAgICAgICAgICB9
Owo+PiAgIAo+PiAtICAgICAgICBsZXQgZXJyb3IgPSBBcmM6Om5ldyhNdXRleDo6bmV3KE5vbmUp
KTsKPj4gLSAgICAgICAgbGV0IGVycm9yMiA9IEFyYzo6Y2xvbmUoJmVycm9yKTsKPj4gKyAgICAg
ICAgbGV0IGFyY2hpdmVyX3N0YXRlID0gQXJjaGl2ZXJTdGF0ZSB7Cj4+ICsgICAgICAgICAgICBm
aW5pc2hlZDogZmFsc2UsCj4+ICsgICAgICAgICAgICBlcnJvcjogTm9uZSwKPj4gKyAgICAgICAg
fTsKPj4gKyAgICAgICAgbGV0IGFyY2hpdmVyX3N0YXRlID0gQXJjOjpuZXcoTXV0ZXg6Om5ldyhh
cmNoaXZlcl9zdGF0ZSkpOwo+PiArICAgICAgICBsZXQgYXJjaGl2ZXJfc3RhdGUyID0gQXJjOjpj
bG9uZSgmYXJjaGl2ZXJfc3RhdGUpOwo+PiArICAgICAgICBsZXQgcHhhcl9iYWNrdXBfc3RyZWFt
X25vdGlmaWVyID0gQXJjOjpuZXcoTm90aWZ5OjpuZXcoKSk7Cj4+ICsgICAgICAgIGxldCBhcmNo
aXZlcl9maW5pc2hlZF9ub3RpZmljYXRpb24gPSBweGFyX2JhY2t1cF9zdHJlYW1fbm90aWZpZXIu
Y2xvbmUoKTsKPj4gICAgICAgICAgIGxldCBoYW5kbGVyID0gYXN5bmMgbW92ZSB7Cj4+IC0gICAg
ICAgICAgICBpZiBsZXQgRXJyKGVycikgPSBjcmF0ZTo6cHhhcjo6Y3JlYXRlX2FyY2hpdmUoCj4+
ICsgICAgICAgICAgICBsZXQgcmVzdWx0ID0gY3JhdGU6OnB4YXI6OmNyZWF0ZV9hcmNoaXZlKAo+
PiAgICAgICAgICAgICAgICAgICBkaXIsCj4+ICAgICAgICAgICAgICAgICAgIFB4YXJXcml0ZXJz
OjpuZXcoCj4+ICAgICAgICAgICAgICAgICAgICAgICB3cml0ZXIsCj4+IEBAIC05NiwxMCArMTA5
LDE5IEBAIGltcGwgUHhhckJhY2t1cFN0cmVhbSB7Cj4+ICAgICAgICAgICAgICAgICAgIGJvdW5k
YXJpZXMsCj4+ICAgICAgICAgICAgICAgICAgIHN1Z2dlc3RlZF9ib3VuZGFyaWVzX3R4LAo+PiAg
ICAgICAgICAgICAgICkKPj4gLSAgICAgICAgICAgIC5hd2FpdAo+PiAtICAgICAgICAgICAgewo+
PiAtICAgICAgICAgICAgICAgIGxldCBtdXQgZXJyb3IgPSBlcnJvcjIubG9jaygpLnVud3JhcCgp
Owo+PiAtICAgICAgICAgICAgICAgICplcnJvciA9IFNvbWUoZXJyKTsKPj4gKyAgICAgICAgICAg
IC5hd2FpdDsKPj4gKwo+PiArICAgICAgICAgICAgbGV0IG11dCBzdGF0ZSA9IGFyY2hpdmVyX3N0
YXRlMi5sb2NrKCkudW53cmFwKCk7Cj4+ICsgICAgICAgICAgICBzdGF0ZS5maW5pc2hlZCA9IHRy
dWU7Cj4+ICsgICAgICAgICAgICBpZiBsZXQgRXJyKGVycikgPSByZXN1bHQgewo+PiArICAgICAg
ICAgICAgICAgIHN0YXRlLmVycm9yID0gU29tZShlcnIpOwo+PiArICAgICAgICAgICAgfQo+PiAr
ICAgICAgICAgICAgZHJvcChzdGF0ZSk7Cj4+ICsKPj4gKyAgICAgICAgICAgIC8vIE5vdGlmeSB1
cGxvYWQgc3RyZWFtcyB0aGF0IGFyY2hpdmVyIGlzIGZpbmlzaGVkICh3aXRoIG9yIHdpdGhvdXQg
ZXJyb3IpCj4+ICsgICAgICAgICAgICBweGFyX2JhY2t1cF9zdHJlYW1fbm90aWZpZXIubm90aWZ5
X29uZSgpOwo+PiArICAgICAgICAgICAgaWYgc2VwYXJhdGVfcGF5bG9hZF9zdHJlYW0gewo+PiAr
ICAgICAgICAgICAgICAgIHB4YXJfYmFja3VwX3N0cmVhbV9ub3RpZmllci5ub3RpZnlfb25lKCk7
Cj4gCj4gdGhpcyB1c2VzIHRoZSBzYW1lIE5vdGlmeSwgYnV0IHRoYXQgb25seSBob2xkcyBhIHNp
bmdsZSBwZXJtaXQsIHNvIGlzbid0Cj4gdGhpcyBzdGlsbCByYWN5PyAoc2VlIGJlbG93KQoKTm90
IHN1cmUgb24gdGhpcyBvbmUsIG11c3QgcmV0aGluayB0aGlzLiBCdXQgaWYgSSByZWNhbGwsIHRo
aXMgaGFzIG9uY2UgCmFnYWluIHRvIGRvIHdpdGggdGhlIGZhY3QgdGhhdCB0aGUgcmVjZWl2ZXIg
bWlnaHQgbm90IHlldCBibG9jayB0byAKcmVjZWl2ZSwgc28gaXQgbXVzdCBnZXQgdGhlIG5vdGlm
aWNhdGlvbi4gT3RoZXJ3aXNlIGl0IHdpbGwgYmxvY2ssIGFzIAp0aGUgcGVybWl0IGlzIG9ubHkg
Zm9yIGBuZXh0YCBjYWxscyBvbiBhbHJlYWR5IHdhaXRpbmcgbm90aWZpY2F0aW9uIApyZWNlaXZl
cnMuCgo+IAo+PiAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAgIH07Cj4+ICAgCj4+IEBAIC0x
MTEsMTQgKzEzMywxNiBAQCBpbXBsIFB4YXJCYWNrdXBTdHJlYW0gewo+PiAgICAgICAgICAgICAg
IHJ4OiBTb21lKHJ4KSwKPj4gICAgICAgICAgICAgICBzdWdnZXN0ZWRfYm91bmRhcmllczogTm9u
ZSwKPj4gICAgICAgICAgICAgICBoYW5kbGU6IFNvbWUoaGFuZGxlLmNsb25lKCkpLAo+PiAtICAg
ICAgICAgICAgZXJyb3I6IEFyYzo6Y2xvbmUoJmVycm9yKSwKPj4gKyAgICAgICAgICAgIGFyY2hp
dmVyX3N0YXRlOiBhcmNoaXZlcl9zdGF0ZS5jbG9uZSgpLAo+PiArICAgICAgICAgICAgYXJjaGl2
ZXJfZmluaXNoZWRfbm90aWZpY2F0aW9uOiBhcmNoaXZlcl9maW5pc2hlZF9ub3RpZmljYXRpb24u
Y2xvbmUoKSwKPj4gICAgICAgICAgIH07Cj4+ICAgCj4+ICAgICAgICAgICBsZXQgYmFja3VwX3Bh
eWxvYWRfc3RyZWFtID0gcGF5bG9hZF9yeC5tYXAofHJ4fCBTZWxmIHsKPj4gICAgICAgICAgICAg
ICByeDogU29tZShyeCksCj4+ICAgICAgICAgICAgICAgc3VnZ2VzdGVkX2JvdW5kYXJpZXM6IHN1
Z2dlc3RlZF9ib3VuZGFyaWVzX3J4LAo+PiAgICAgICAgICAgICAgIGhhbmRsZTogU29tZShoYW5k
bGUpLAo+PiAtICAgICAgICAgICAgZXJyb3IsCj4+ICsgICAgICAgICAgICBhcmNoaXZlcl9zdGF0
ZSwKPj4gKyAgICAgICAgICAgIGFyY2hpdmVyX2ZpbmlzaGVkX25vdGlmaWNhdGlvbiwKPj4gICAg
ICAgICAgIH0pOwo+PiAgIAo+PiAgICAgICAgICAgT2soKGJhY2t1cF9zdHJlYW0sIGJhY2t1cF9w
YXlsb2FkX3N0cmVhbSkpCj4+IEBAIC0xNDMsOCArMTY3LDggQEAgaW1wbCBTdHJlYW0gZm9yIFB4
YXJCYWNrdXBTdHJlYW0gewo+PiAgICAgICBmbiBwb2xsX25leHQoc2VsZjogUGluPCZtdXQgU2Vs
Zj4sIF9jeDogJm11dCBDb250ZXh0KSAtPiBQb2xsPE9wdGlvbjxTZWxmOjpJdGVtPj4gewo+PiAg
ICAgICAgICAgewo+PiAgICAgICAgICAgICAgIC8vIGxpbWl0IGxvY2sgc2NvcGUKPj4gLSAgICAg
ICAgICAgIGxldCBtdXQgZXJyb3IgPSBzZWxmLmVycm9yLmxvY2soKS51bndyYXAoKTsKPj4gLSAg
ICAgICAgICAgIGlmIGxldCBTb21lKGVycikgPSBlcnJvci50YWtlKCkgewo+PiArICAgICAgICAg
ICAgbGV0IG11dCBzdGF0ZSA9IHNlbGYuYXJjaGl2ZXJfc3RhdGUubG9jaygpLnVud3JhcCgpOwo+
PiArICAgICAgICAgICAgaWYgbGV0IFNvbWUoZXJyKSA9IHN0YXRlLmVycm9yLnRha2UoKSB7Cj4+
ICAgICAgICAgICAgICAgICAgIHJldHVybiBQb2xsOjpSZWFkeShTb21lKEVycihlcnIpKSk7Cj4+
ICAgICAgICAgICAgICAgfQo+PiAgICAgICAgICAgfQo+PiBAQCAtMTUyLDggKzE3NiwxNyBAQCBp
bXBsIFN0cmVhbSBmb3IgUHhhckJhY2t1cFN0cmVhbSB7Cj4+ICAgICAgICAgICBtYXRjaCBwcm94
bW94X2FzeW5jOjpydW50aW1lOjpibG9ja19pbl9wbGFjZSh8fCBzZWxmLnJ4LmFzX3JlZigpLnVu
d3JhcCgpLnJlY3YoKSkgewo+PiAgICAgICAgICAgICAgIE9rKGRhdGEpID0+IFBvbGw6OlJlYWR5
KFNvbWUoZGF0YSkpLAo+PiAgICAgICAgICAgICAgIEVycihfKSA9PiB7Cj4+IC0gICAgICAgICAg
ICAgICAgbGV0IG11dCBlcnJvciA9IHNlbGYuZXJyb3IubG9jaygpLnVud3JhcCgpOwo+PiAtICAg
ICAgICAgICAgICAgIGlmIGxldCBTb21lKGVycikgPSBlcnJvci50YWtlKCkgewo+PiArICAgICAg
ICAgICAgICAgIC8vIElmIHRoZSBhcmNoaXZlciBkaWQgbm90IHNpZ25hbCBpdCBpcyBmaW5pc2hl
ZCwgd2FpdCBmb3IgZmluaXNoZWQgY29tcGxldGlvbgo+PiArICAgICAgICAgICAgICAgIC8vIHRv
IGF2b2lkIHBvdGVudGlhbGx5IG1pc3MgZXJyb3JzCj4+ICsgICAgICAgICAgICAgICAgbGV0IGZp
bmlzaGVkID0geyBzZWxmLmFyY2hpdmVyX3N0YXRlLmxvY2soKS51bndyYXAoKS5maW5pc2hlZCB9
Owo+PiArICAgICAgICAgICAgICAgIGlmICFmaW5pc2hlZCB7Cj4+ICsgICAgICAgICAgICAgICAg
ICAgIHByb3htb3hfYXN5bmM6OnJ1bnRpbWU6OmJsb2NrX29uKAo+PiArICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5hcmNoaXZlcl9maW5pc2hlZF9ub3RpZmljYXRpb24ubm90aWZpZWQoKSwK
PiAKPiBpZiB5b3UgYXJlIHVubHVja3ksIHlvdSBlbmQgdXAgaGVyZSBidXQgdGhlIGV4ZWN1dGlv
biBwYXR0ZXJuIGlzIGxpa2UgdGhpcwo+IAo+IEEgPSBhcmNoaXZlcgo+IFMxID0gc3RyZWFtIG9u
ZQo+IFMyID0gc3RyZWFtIHR3bwo+IAo+IFMxIHNlZXMgbm90IGZpbmlzaGVkCj4gUzIgc2VlcyBu
b3QgZmluaXNoZWQKPiBBIHNldHMgZmluaXNoZWQKPiBBIG5vdGlmaWVzCj4gQSBub3RpZmllcyBh
Z2Fpbgo+IFMxIHNlZXMgbm90aWZpY2F0aW9uIChjb25zdW1pbmcgYm90aCBub3RpZmljYXRpb25z
LCBhcyB0aGVyZSBpcyBvbmx5IG9uZQo+IHN0b3JlZCBpbiBOb3RpZnkpCj4gUzIgd2FpdHMgZm9y
ZXZlcgoKV2h5LCBpdCBzaG91bGQgZ2V0IHRoZSBwZXJtaXQgb24gdGhlIGBuZXh0YCBjYWxsIGlu
IHRoYXQgY2FzZT8gT3IgYW0gSSAKd3JvbmcgYWJvdXQgdGhhdD8KCj4gCj4gPwo+IAo+IG1pZ2h0
IG5vdCBoYXBwZW4gaW4gcHJhY3RpY2UgYmVjYXVzZSBpdCAiYWx3YXlzIiBlbmRzIHVwIGRvaW5n
IHRoaXM6Cj4gCj4gUzEgc2VlcyBub3QgZmluaXNoZWQKPiBTMiBzZWVzIG5vdCBmaW5pc2hlZAo+
IFMxIGJsb2NrcyB3YWl0aW5nIGZvciBub3RpZmljYXRpb25zCj4gUzIgYmxvY2tzIHdhaXRpbmcg
Zm9yIG5vdGlmaWNhdGlvbnMKPiBBIHNldHMgZmluaXNoZWQKPiBBIG5vdGlmaWVzCj4gUzEgYW5k
IFMyIGdldCBub3RpZmllZCBhbmQgcHJvY2VlZAo+IEEgbm90aWZpZXMgYWdhaW4gKGhhcyBubyBl
ZmZlY3QpCj4gLi4KPiAKPiBidXQgdGhhdCBpcyBqdXN0IGx1Y2sgOykKPiAKPj4gKyAgICAgICAg
ICAgICAgICAgICAgKTsKPj4gKyAgICAgICAgICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgICAg
ICAgICBsZXQgZXJyb3IgPSB7IHNlbGYuYXJjaGl2ZXJfc3RhdGUubG9jaygpLnVud3JhcCgpLmVy
cm9yLnRha2UoKSB9Owo+PiArICAgICAgICAgICAgICAgIGlmIGxldCBTb21lKGVycikgPSBlcnJv
ciB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUG9sbDo6UmVhZHkoU29tZShFcnIo
ZXJyKSkpOwo+PiAgICAgICAgICAgICAgICAgICB9Cj4+ICAgICAgICAgICAgICAgICAgIFBvbGw6
OlJlYWR5KE5vbmUpIC8vIGNoYW5uZWwgY2xvc2VkLCBubyBlcnJvcgo+PiAtLSAKPj4gMi4zOS41
Cj4+Cj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCj4+IHBicy1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3gu
Y29tCj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZv
L3Bicy1kZXZlbAo+Pgo+Pgo+Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fCj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+IHBicy1kZXZlbEBs
aXN0cy5wcm94bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWls
bWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBs
aXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9wYnMtZGV2ZWwK