From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 243451FF140 for ; Wed, 14 Jan 2026 09:22:15 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 421EEBA75; Wed, 14 Jan 2026 09:22:17 +0100 (CET) Message-ID: <3a49e618-3f42-4d05-b08a-186a9bd5a648@proxmox.com> Date: Wed, 14 Jan 2026 09:22:12 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Proxmox Backup Server development discussion , =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= References: <20251211153835.180405-1-c.ebner@proxmox.com> <20251211153835.180405-2-c.ebner@proxmox.com> <1768296817.hlvzg291lq.astroid@yuna.none> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <1768296817.hlvzg291lq.astroid@yuna.none> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1768378887309 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.354 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 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com, datastore.rs] Subject: Re: [pbs-devel] [PATCH proxmox-backup v2 1/8] GC: Move S3 delete list state and logic to a dedicated struct X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gMS8xMy8yNiAxMToyMiBBTSwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPiBPbiBEZWNl bWJlciAxMSwgMjAyNSA0OjM4IHBtLCBDaHJpc3RpYW4gRWJuZXIgd3JvdGU6Cj4+IFRvIGJldHRl ciBrZWVwIHRyYWNrIG9mIHRoZSBzdGF0ZSBhbmQgZGVjbHV0dGVyIHRoZSBjb2RlIG9uIHRoZQo+ PiBjYWxsc2l0ZXMsIGJ1bmRsZSB0aGUgUzMgZGVsZXRlIGxpc3QgYW5kIGl0J3MgbG9naWMgYnkg YSBkZWRpY2F0ZWQKPj4gc3RydWN0LiBTaW5jZSB0aGUgY2hlY2sgZm9yIGVtcHR5IGxpc3RzIGlz IG5vdyBwZXJmb3JtZWQgYXMgcGFydAo+PiBvZiB0aGUgZGVsZXRpb24gcmVsYXRlZCBtZXRob2Rz LCB0aGUgY2FsbHNpdGVzIGNhbiBnZXQgcmlkIG9mIHRoYXQuCj4+Cj4+IEZ1cnRoZXIsIGF2b2lk IHRoZSBwcm94bW94X3RpbWU6OmVwb2NoX2k2NCgpIGFuZCB1c2UgU3lzdGVtVGltZSBhbmQKPj4g RHVyYXRpb24gd2l0aCB0aGVpciBtZXRob2RzIGRpcmVjdGx5Lgo+Pgo+PiBTdWdnZXN0ZWQtYnk6 IFRob21hcyBMYW1wcmVjaHQgPHQubGFtcHJlY2h0QHByb3htb3guY29tPgo+PiBTaWduZWQtb2Zm LWJ5OiBDaHJpc3RpYW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+IC0tLQo+PiAgIHBi cy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycyB8IDEzMiArKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0KPj4gICAxIGZpbGUgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgNTcgZGVs ZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUu cnMgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMKPj4gaW5kZXggOWM1N2FhYWMxLi41 OGZkMDM0ZmMgMTAwNjQ0Cj4+IC0tLSBhL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwo+ PiArKysgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMKPj4gQEAgLTI0LDcgKzI0LDcg QEAgdXNlIHByb3htb3hfc3lzOjplcnJvcjo6U3lzRXJyb3I7Cj4+ICAgdXNlIHByb3htb3hfc3lz Ojpmczo6e2ZpbGVfcmVhZF9vcHRpb25hbF9zdHJpbmcsIHJlcGxhY2VfZmlsZSwgQ3JlYXRlT3B0 aW9uc307Cj4+ICAgdXNlIHByb3htb3hfc3lzOjpsaW51eDo6cHJvY2ZzOjpNb3VudEluZm87Cj4+ ICAgdXNlIHByb3htb3hfc3lzOjpwcm9jZXNzX2xvY2tlcjo6e1Byb2Nlc3NMb2NrRXhjbHVzaXZl R3VhcmQsIFByb2Nlc3NMb2NrU2hhcmVkR3VhcmR9Owo+PiAtdXNlIHByb3htb3hfdGltZTo6e2Vw b2NoX2k2NCwgVGltZVNwYW59Owo+IAo+IHdlIGFscmVhZHkgdXNlIGVwb2NoX2k2NCBmb3Igb3Ro ZXIgY2FsY3VsYXRpb25zIGluIHRoaXMgbW9kdWxlLCB3aHkgbm90Cj4ga2VlcCBpdD8KCkRvIHlv dSBtZWFuIHdpdGggcmVzcGVjdCB0byB0aGUgbW9kdWxlIGxldmVsIGltcG9ydCBvciB3aXRoIHJl c3BlY3QgdG8gCnVzaW5nIHRoZSBlcG9jaF9pNjQoKSBoZWxwZXI/IEFzIGZhciBhcyBJIHNlZSB0 aGlzIGlzIG9ubHkgdXNlZCBvbmNlIHRvIApnZXQgdGhlIHBoYXNlIDEgc3RhcnQgdGltZSBhcGFy dCBmcm9tIHRoZSBkZWxldGUgbGlzdCBhZ2UgY2FsY3VsYXRpb25zLgoKTm90IHN1cmUgd2hhdCB3 ZSB3b3VsZCBnYWluIGZyb20gbGF0dGVyPyBBcyB0aGlzIGhlbHBlciB3cmFwcyBhcm91bmQgdGhl IApTeXN0ZW1UaW1lIGFueXdheXMgWzBdLCBzbyBJIG9wdGVkIHRvIHVzZSB0aGF0IGRpcmVjdGx5 IGluc3RlYWQgb2YgCmNvbnZlcnRpbmcgaXQgdG8gdGhlIFVuaXggZXBvY2ggYW5kIGRvaW5nIHRo ZSBjYWxjdWxhdGlvbnMgdGhlcmUuCgpbMF0gCmh0dHBzOi8vcnVzdGRvYy5pbnRyYS5wcm94bW94 LmNvbS90cml4aWUvcGFja2FnZXMvcHJveG1veC9zcmMvcHJveG1veF90aW1lL3Bvc2l4LnJzLmh0 bWwjODEtOTMKCj4gCj4+ICt1c2UgcHJveG1veF90aW1lOjpUaW1lU3BhbjsKPj4gICB1c2UgcHJv eG1veF93b3JrZXJfdGFzazo6V29ya2VyVGFza0NvbnRleHQ7Cj4+ICAgCj4+ICAgdXNlIHBic19h cGlfdHlwZXM6OnsKPj4gQEAgLTY0LDcgKzY0LDcgQEAgY29uc3QgQ0hVTktfTE9DS19USU1FT1VU OiBEdXJhdGlvbiA9IER1cmF0aW9uOjpmcm9tX3NlY3MoMyAqIDYwICogNjApOwo+PiAgIC8vIHMz IGRlbGV0aW9uIGJhdGNoIHNpemUgdG8gYXZvaWQgMTAyNCBvcGVuIGZpbGVzIHNvZnQgbGltaXQK Pj4gICBjb25zdCBTM19ERUxFVEVfQkFUQ0hfTElNSVQ6IHVzaXplID0gMTAwOwo+PiAgIC8vIG1h eCBkZWZlciB0aW1lIGZvciBzMyBiYXRjaCBkZWxldGlvbnMKPj4gLWNvbnN0IFMzX0RFTEVURV9E RUZFUl9MSU1JVF9TRUNPTkRTOiBpNjQgPSA2MCAqIDU7Cj4+ICtjb25zdCBTM19ERUxFVEVfREVG RVJfTElNSVRfU0VDT05EUzogRHVyYXRpb24gPSBEdXJhdGlvbjo6ZnJvbV9zZWNzKDYwICogNSk7 Cj4+ICAgCj4+ICAgLy8vIGNoZWNrcyBpZiBhdXRoX2lkIGlzIG93bmVyLCBvciwgaWYgb3duZXIg aXMgYSB0b2tlbiwgaWYKPj4gICAvLy8gYXV0aF9pZCBpcyB0aGUgdXNlciBvZiB0aGUgdG9rZW4K Pj4gQEAgLTE2ODksNDAgKzE2ODksOCBAQCBpbXBsIERhdGFTdG9yZSB7Cj4+ICAgICAgICAgICAg ICAgICAgIHByb3htb3hfYXN5bmM6OnJ1bnRpbWU6OmJsb2NrX29uKHMzX2NsaWVudC5saXN0X29i amVjdHNfdjIoJnByZWZpeCwgTm9uZSkpCj4+ICAgICAgICAgICAgICAgICAgICAgICAuY29udGV4 dCgiZmFpbGVkIHRvIGxpc3QgY2h1bmsgaW4gczMgb2JqZWN0IHN0b3JlIik/Owo+PiAgIAo+PiAt ICAgICAgICAgICAgbGV0IG11dCBkZWxldGVfbGlzdCA9IFZlYzo6d2l0aF9jYXBhY2l0eShTM19E RUxFVEVfQkFUQ0hfTElNSVQpOwo+PiAtICAgICAgICAgICAgbGV0IG11dCBkZWxldGVfbGlzdF9h Z2UgPSBlcG9jaF9pNjQoKTsKPj4gLQo+PiAtICAgICAgICAgICAgbGV0IHMzX2RlbGV0ZV9iYXRj aCA9IHxkZWxldGVfbGlzdDogJm11dCBWZWM8KFMzT2JqZWN0S2V5LCBCYWNrdXBMb2NrR3VhcmQp PiwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczNfY2xpZW50OiAmQXJj PFMzQ2xpZW50PnwKPj4gLSAgICAgICAgICAgICAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+IC0g ICAgICAgICAgICAgICAgbGV0IGRlbGV0ZV9vYmplY3RzX3Jlc3VsdCA9IHByb3htb3hfYXN5bmM6 OnJ1bnRpbWU6OmJsb2NrX29uKAo+PiAtICAgICAgICAgICAgICAgICAgICBzM19jbGllbnQuZGVs ZXRlX29iamVjdHMoCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAmZGVsZXRlX2xpc3QKPj4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAuaXRlcigpCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgLm1hcCh8KGtleSwgXyl8IGtleS5jbG9uZSgpKQo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC5jb2xsZWN0Ojo8VmVjPFMzT2JqZWN0S2V5Pj4oKSwKPj4gLSAgICAg ICAgICAgICAgICAgICAgKSwKPj4gLSAgICAgICAgICAgICAgICApPzsKPj4gLSAgICAgICAgICAg ICAgICBpZiBsZXQgU29tZShfZXJyKSA9IGRlbGV0ZV9vYmplY3RzX3Jlc3VsdC5lcnJvciB7Cj4+ IC0gICAgICAgICAgICAgICAgICAgIGJhaWwhKCJmYWlsZWQgdG8gZGVsZXRlIHNvbWUgb2JqZWN0 cyIpOwo+PiAtICAgICAgICAgICAgICAgIH0KPj4gLSAgICAgICAgICAgICAgICAvLyBkcm9wcyBh bGwgY2h1bmsgZmxvY2sgZ3VhcmRzCj4+IC0gICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QuY2xl YXIoKTsKPj4gLSAgICAgICAgICAgICAgICBPaygoKSkKPj4gLSAgICAgICAgICAgIH07Cj4+IC0K Pj4gLSAgICAgICAgICAgIGxldCBhZGRfdG9fZGVsZXRlX2xpc3QgPQo+PiAtICAgICAgICAgICAg ICAgIHxkZWxldGVfbGlzdDogJm11dCBWZWM8KFMzT2JqZWN0S2V5LCBCYWNrdXBMb2NrR3VhcmQp PiwKPj4gLSAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3RfYWdlOiAmbXV0IGk2NCwKPj4gLSAg ICAgICAgICAgICAgICAga2V5OiBTM09iamVjdEtleSwKPj4gLSAgICAgICAgICAgICAgICAgX2No dW5rX2d1YXJkOiBCYWNrdXBMb2NrR3VhcmR8IHsKPj4gLSAgICAgICAgICAgICAgICAgICAgLy8g c2V0IGFnZSBiYXNlZCBvbiBmaXJzdCBpbnNlcnRpb24KPj4gLSAgICAgICAgICAgICAgICAgICAg aWYgZGVsZXRlX2xpc3QuaXNfZW1wdHkoKSB7Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAq ZGVsZXRlX2xpc3RfYWdlID0gZXBvY2hfaTY0KCk7Cj4+IC0gICAgICAgICAgICAgICAgICAgIH0K Pj4gLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlX2xpc3QucHVzaCgoa2V5LCBfY2h1bmtfZ3Vh cmQpKTsKPj4gLSAgICAgICAgICAgICAgICB9Owo+PiAtCj4+ICsgICAgICAgICAgICBsZXQgbXV0 IGRlbGV0ZV9saXN0ID0KPj4gKyAgICAgICAgICAgICAgICBTM0RlbGV0ZUxpc3Q6OndpdGhfdGhy ZXNob2xkcyhTM19ERUxFVEVfQkFUQ0hfTElNSVQsIFMzX0RFTEVURV9ERUZFUl9MSU1JVF9TRUNP TkRTKTsKPj4gICAgICAgICAgICAgICBsb29wIHsKPj4gICAgICAgICAgICAgICAgICAgZm9yIGNv bnRlbnQgaW4gbGlzdF9idWNrZXRfcmVzdWx0LmNvbnRlbnRzIHsKPj4gICAgICAgICAgICAgICAg ICAgICAgIHdvcmtlci5jaGVja19hYm9ydCgpPzsKPj4gQEAgLTE3NzksMTIgKzE3NDcsNyBAQCBp bXBsIERhdGFTdG9yZSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdGQ6OmZzOjpyZW1vdmVfZmlsZShjaHVua19wYXRoKT87Cj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KPj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB9Cj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBhZGRfdG9fZGVsZXRlX2xpc3QoCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJm11dCBkZWxldGVfbGlzdCwKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAmbXV0IGRlbGV0ZV9saXN0X2FnZSwKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50LmtleSwKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBfY2h1bmtfZ3VhcmQsCj4+IC0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICApOwo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGVsZXRlX2xpc3QucHVzaChjb250ZW50LmtleSwgX2NodW5rX2d1YXJkKTsKPj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPaygoKSkKPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIH0sCj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICk/Owo+PiBAQCAtMTc5MiwxMiArMTc1NSw3IEBAIGltcGwgRGF0YVN0b3JlIHsKPj4gICAgICAg ICAgICAgICAgICAgICAgIH0gZWxzZSB7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Nf c3RhdHVzLnJlbW92ZWRfY2h1bmtzICs9IDE7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2Nfc3RhdHVzLnJlbW92ZWRfYnl0ZXMgKz0gY29udGVudC5zaXplOwo+PiAtICAgICAgICAgICAg ICAgICAgICAgICAgYWRkX3RvX2RlbGV0ZV9saXN0KAo+PiAtICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZtdXQgZGVsZXRlX2xpc3QsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Jm11dCBkZWxldGVfbGlzdF9hZ2UsCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u dGVudC5rZXksCj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NodW5rX2d1YXJkLAo+ PiAtICAgICAgICAgICAgICAgICAgICAgICAgKTsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg IGRlbGV0ZV9saXN0LnB1c2goY29udGVudC5rZXksIF9jaHVua19ndWFyZCk7Cj4+ICAgICAgICAg ICAgICAgICAgICAgICB9Cj4+ICAgCj4+ICAgICAgICAgICAgICAgICAgICAgICBjaHVua19jb3Vu dCArPSAxOwo+PiBAQCAtMTgwNiwxMiArMTc2NCw3IEBAIGltcGwgRGF0YVN0b3JlIHsKPj4gICAg ICAgICAgICAgICAgICAgICAgIGRyb3AoX2d1YXJkKTsKPj4gICAKPj4gICAgICAgICAgICAgICAg ICAgICAgIC8vIGxpbWl0IHBlbmRpbmcgZGVsZXRlcyB0byBhdm9pZCBob2xkaW5nIHRvbyBtYW55 IGNodW5rIGZsb2Nrcwo+PiAtICAgICAgICAgICAgICAgICAgICBpZiBkZWxldGVfbGlzdC5sZW4o KSA+PSBTM19ERUxFVEVfQkFUQ0hfTElNSVQKPj4gLSAgICAgICAgICAgICAgICAgICAgICAgIHx8 ICghZGVsZXRlX2xpc3QuaXNfZW1wdHkoKQo+PiAtICAgICAgICAgICAgICAgICAgICAgICAgICAg ICYmIGVwb2NoX2k2NCgpIC0gZGVsZXRlX2xpc3RfYWdlID4gUzNfREVMRVRFX0RFRkVSX0xJTUlU X1NFQ09ORFMpCj4+IC0gICAgICAgICAgICAgICAgICAgIHsKPj4gLSAgICAgICAgICAgICAgICAg ICAgICAgIHMzX2RlbGV0ZV9iYXRjaCgmbXV0IGRlbGV0ZV9saXN0LCBzM19jbGllbnQpPzsKPj4g LSAgICAgICAgICAgICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgICAgICBkZWxldGVfbGlz dC5jb25kaXRpb25hbF9kZWxldGVfYW5kX2Ryb3BfbG9ja3MoczNfY2xpZW50KT87Cj4+ICAgICAg ICAgICAgICAgICAgIH0KPj4gICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyBuZXh0IGJhdGNo IG9mIGNodW5rcyBpZiB0aGVyZSBpcyBtb3JlCj4+ICAgICAgICAgICAgICAgICAgIGlmIGxpc3Rf YnVja2V0X3Jlc3VsdC5pc190cnVuY2F0ZWQgewo+PiBAQCAtMTgyNyw5ICsxNzgwLDcgQEAgaW1w bCBEYXRhU3RvcmUgewo+PiAgICAgICAgICAgICAgIH0KPj4gICAKPj4gICAgICAgICAgICAgICAv LyBkZWxldGUgdGhlIGxhc3QgYmF0Y2ggb2Ygb2JqZWN0cywgaWYgdGhlcmUgYXJlIGFueSByZW1h aW5pbmcKPj4gLSAgICAgICAgICAgIGlmICFkZWxldGVfbGlzdC5pc19lbXB0eSgpIHsKPj4gLSAg ICAgICAgICAgICAgICBzM19kZWxldGVfYmF0Y2goJm11dCBkZWxldGVfbGlzdCwgczNfY2xpZW50 KT87Cj4+IC0gICAgICAgICAgICB9Cj4+ICsgICAgICAgICAgICBkZWxldGVfbGlzdC5kZWxldGVf YW5kX2Ryb3BfbG9ja3MoczNfY2xpZW50KT87Cj4+ICAgCj4+ICAgICAgICAgICAgICAgaW5mbyEo InByb2Nlc3NlZCB7Y2h1bmtfY291bnR9IHRvdGFsIGNodW5rcyIpOwo+PiAgIAo+PiBAQCAtMjc2 OCwzICsyNzE5LDcwIEBAIGltcGwgRGF0YVN0b3JlIHsKPj4gICAgICAgICAgIHJlc3VsdAo+PiAg ICAgICB9Cj4+ICAgfQo+PiArCj4+ICsvLy8gVHJhY2sgUzMgb2JqZWN0IGtleXMgdG8gYmUgZGVs ZXRlZCBieSBnYXJiYWdlIGNvbGxlY3Rpb24gd2hpbGUgaG9sZGluZyB0aGVpciBmaWxlIGxvY2su Cj4+ICtzdHJ1Y3QgUzNEZWxldGVMaXN0IHsKPj4gKyAgICBsaXN0OiBWZWM8KFMzT2JqZWN0S2V5 LCBCYWNrdXBMb2NrR3VhcmQpPiwKPj4gKyAgICBmaXJzdF9lbnRyeV9hZGRlZDogU3lzdGVtVGlt ZSwKPj4gKyAgICBhZ2VfdGhyZXNob2xkOiBEdXJhdGlvbiwKPj4gKyAgICBjYXBhY2l0eV90aHJl c2hvbGQ6IHVzaXplLAo+PiArfQo+PiArCj4+ICtpbXBsIFMzRGVsZXRlTGlzdCB7Cj4+ICsgICAg Ly8vIENyZWF0ZSBhIG5ldyBsaXN0IGluc3RhbmNlIHdpdGggZ2l2ZW4gY2FwYWNpdHkgYW5kIGFn ZSB0aHJlc2hvbGRzLgo+PiArICAgIGZuIHdpdGhfdGhyZXNob2xkcyhjYXBhY2l0eV90aHJlc2hv bGQ6IHVzaXplLCBhZ2VfdGhyZXNob2xkOiBEdXJhdGlvbikgLT4gU2VsZiB7Cj4+ICsgICAgICAg IFNlbGYgewo+PiArICAgICAgICAgICAgZmlyc3RfZW50cnlfYWRkZWQ6IFN5c3RlbVRpbWU6Om5v dygpLCAvLyBpbml0IG9ubHksIHVwZGF0ZWQgb25jZSBhZGRlZAo+PiArICAgICAgICAgICAgbGlz dDogVmVjOjp3aXRoX2NhcGFjaXR5KGNhcGFjaXR5X3RocmVzaG9sZCksCj4+ICsgICAgICAgICAg ICBhZ2VfdGhyZXNob2xkLAo+PiArICAgICAgICAgICAgY2FwYWNpdHlfdGhyZXNob2xkLAo+PiAr ICAgICAgICB9Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgLy8vIFB1c2hlcyB0aGUgY3VycmVudCBr ZXkgYW5kIGJhY2t1cCBsb2NrIGd1YXJkIHRvIHRoZSBsaXN0LCB1cGRhdGluZyB0aGUgZGVsZXRl IGxpc3QgYWdlIGlmCj4+ICsgICAgLy8vIHRoZSBsaXN0IHdhcyBlbXB0eSBiZWZvcmUgdGhlIGlu c2VydC4KPj4gKyAgICBmbiBwdXNoKCZtdXQgc2VsZiwga2V5OiBTM09iamVjdEtleSwgZ3VhcmQ6 IEJhY2t1cExvY2tHdWFyZCkgewo+PiArICAgICAgICAvLyBzZXQgYWdlIGJhc2VkIG9uIGZpcnN0 IGluc2VydGlvbgo+PiArICAgICAgICBpZiBzZWxmLmxpc3QuaXNfZW1wdHkoKSB7Cj4+ICsgICAg ICAgICAgICBzZWxmLmZpcnN0X2VudHJ5X2FkZGVkID0gU3lzdGVtVGltZTo6bm93KCk7Cj4+ICsg ICAgICAgIH0KPj4gKyAgICAgICAgc2VsZi5saXN0LnB1c2goKGtleSwgZ3VhcmQpKTsKPj4gKyAg ICB9Cj4+ICsKPj4gKyAgICAvLy8gRGVsZXRlIHRoZSBvYmplY3RzIGluIHRoZSBsaXN0IHZpYSB0 aGUgcHJvdmlkZWQgUzMgY2xpZW50IGluc3RhbmNlLgo+PiArICAgIC8vLyBDbGVhcnMgdGhlIGxp c3QgY29udGVudHMgYW5kIGZyZWVzIHRoZSBwZXItY2h1bmsgZmlsZSBsb2Nrcy4KPj4gKyAgICBm biBkZWxldGVfYW5kX2Ryb3BfbG9ja3MoJm11dCBzZWxmLCBzM19jbGllbnQ6ICZBcmM8UzNDbGll bnQ+KSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+ICsgICAgICAgIGlmIHNlbGYubGlzdC5pc19l bXB0eSgpIHsKPj4gKyAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+ICsgICAgICAgIH0KPj4g KyAgICAgICAgbGV0IGRlbGV0ZV9vYmplY3RzX3Jlc3VsdCA9IHByb3htb3hfYXN5bmM6OnJ1bnRp bWU6OmJsb2NrX29uKAo+PiArICAgICAgICAgICAgczNfY2xpZW50LmRlbGV0ZV9vYmplY3RzKAo+ PiArICAgICAgICAgICAgICAgICZzZWxmCj4+ICsgICAgICAgICAgICAgICAgICAgIC5saXN0Cj4+ ICsgICAgICAgICAgICAgICAgICAgIC5pdGVyKCkKPj4gKyAgICAgICAgICAgICAgICAgICAgLm1h cCh8KGtleSwgXyl8IGtleS5jbG9uZSgpKQo+PiArICAgICAgICAgICAgICAgICAgICAuY29sbGVj dDo6PFZlYzxTM09iamVjdEtleT4+KCksCj4+ICsgICAgICAgICAgICApLAo+PiArICAgICAgICAp PzsKPj4gKyAgICAgICAgaWYgZGVsZXRlX29iamVjdHNfcmVzdWx0LmVycm9yLmlzX3NvbWUoKSB7 Cj4+ICsgICAgICAgICAgICBiYWlsISgiZmFpbGVkIHRvIGRlbGV0ZSBzb21lIG9iamVjdHMiKTsK Pj4gKyAgICAgICAgfQo+PiArICAgICAgICAvLyBkcm9wcyBhbGwgY2h1bmsgZmxvY2sgZ3VhcmRz Cj4+ICsgICAgICAgIHNlbGYubGlzdC5jbGVhcigpOwo+PiArICAgICAgICBPaygoKSkKPj4gKyAg ICB9Cj4+ICsKPj4gKyAgICAvLy8gRGVsZXRlIHRoZSBvYmplY3Qgc3RvcmVkIGluIHRoZSBsaXN0 IGlmIGVpdGhlciB0aGUgbGlzdCBleGNlZWRzIHRoZSBjYXBhY2l0eSB0aHJlc2hvbGQgb3IKPj4g KyAgICAvLy8gdGhlIGRlbGV0ZSBsaXN0IGFnZSB0aHJlc2hvbGQuCj4+ICsgICAgZm4gY29uZGl0 aW9uYWxfZGVsZXRlX2FuZF9kcm9wX2xvY2tzKAo+PiArICAgICAgICAmbXV0IHNlbGYsCj4+ICsg ICAgICAgIHMzX2NsaWVudDogJkFyYzxTM0NsaWVudD4sCj4+ICsgICAgKSAtPiBSZXN1bHQ8KCks IEVycm9yPiB7Cj4+ICsgICAgICAgIGlmIHNlbGYubGlzdC5sZW4oKSA+PSBzZWxmLmNhcGFjaXR5 X3RocmVzaG9sZAo+PiArICAgICAgICAgICAgfHwgKCFzZWxmLmxpc3QuaXNfZW1wdHkoKSAmJiBz ZWxmLmZpcnN0X2VudHJ5X2FkZGVkLmVsYXBzZWQoKT8gPiBzZWxmLmFnZV90aHJlc2hvbGQpCj4g Cj4gdGhpcyBiYWlscyBpZiB0aGUgY2xvY2sganVtcHMgYmFja3dhcmRzIChmdXJ0aGVyIHRoYW4g dGhlCj4gZmlyc3RfZW50cnlfYWRkZWQgdGltZXN0YW1wKS4gbWF5YmUgd2Ugc2hvdWxkIGluc3Rl YWQgYWx3YXlzIGRlbGV0ZT8gb3IKPiBhdCBsZWFzdCBhZGQgYSBtZWFuaW5nZnVsIGVycm9yIG1l c3NhZ2UvY29udGV4dC4uCgpZZXMgaW5kZWVkISBEZWxldGluZyB0aGlzIGluIGNhc2UgdGhlIGNs b2NrIGp1bXBlZCB0byB0aGUgcGFzdCBpcyAKcHJvYmFibHkgdGhlIGJlc3Qgb3B0aW9uIGhlcmUs IGFzIHRoZSBsb2NhbCBjaHVuayBtYXJrZXIgZmlsZSBpcyBubyAKbG9uZ2VyIHByZXNlbnQgYW55 d2F5cyBhdCB0aGlzIHBvaW50LgoKV2lsbCBhZGFwdCB0aGUgY29kZSBhY2NvcmRpbmdseS4KCj4g Cj4+ICsgICAgICAgIHsKPj4gKyAgICAgICAgICAgIHNlbGYuZGVsZXRlX2FuZF9kcm9wX2xvY2tz KHMzX2NsaWVudCk/Owo+PiArICAgICAgICB9Cj4+ICsgICAgICAgIE9rKCgpKQo+PiArICAgIH0K Pj4gK30KPj4gLS0gCj4+IDIuNDcuMwo+Pgo+Pgo+Pgo+PiBfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwo+PiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4+IHBi cy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+PiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2Nn aS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4KPj4KPj4KPiAKPiAKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IHBicy1kZXZlbCBtYWls aW5nIGxpc3QKPiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPiBodHRwczovL2xpc3RzLnBy b3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPiAKPiAKCgoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1h aWxpbmcgbGlzdApwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94 bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJzLWRldmVsCg==