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