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 701FE1FF178 for ; Mon, 15 Dec 2025 16:05:27 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 88C54FD8C; Mon, 15 Dec 2025 16:06:12 +0100 (CET) Message-ID: Date: Mon, 15 Dec 2025 16:05:37 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Samuel Rufinatscha To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , pbs-devel@lists.proxmox.com References: <20251205132559.197434-1-s.rufinatscha@proxmox.com> <20251205132559.197434-2-s.rufinatscha@proxmox.com> <176536727121.112734.7971677008461802558@yuna.proxmox.com> <1cd8309f-b540-42a6-bfc2-f25a827ca6d3@proxmox.com> Content-Language: en-US In-Reply-To: <1cd8309f-b540-42a6-bfc2-f25a827ca6d3@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.288 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes 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 Subject: Re: [pbs-devel] [PATCH proxmox-backup 1/3] pbs-config: cache verified API token secrets 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" T24gMTIvMTAvMjUgNDozNSBQTSwgU2FtdWVsIFJ1ZmluYXRzY2hhIHdyb3RlOgo+IE9uIDEyLzEw LzI1IDEyOjQ3IFBNLCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+PiBRdW90aW5nIFNhbXVl bCBSdWZpbmF0c2NoYSAoMjAyNS0xMi0wNSAxNDoyNTo1NCkKPj4+IEN1cnJlbnRseSwgZXZlcnkg dG9rZW4tYmFzZWQgQVBJIHJlcXVlc3QgcmVhZHMgdGhlIHRva2VuLnNoYWRvdyBmaWxlIGFuZAo+ Pj4gcnVucyB0aGUgZXhwZW5zaXZlIHBhc3N3b3JkIGhhc2ggdmVyaWZpY2F0aW9uIGZvciB0aGUg Z2l2ZW4gdG9rZW4KPj4+IHNlY3JldC4gVGhpcyBzaG93cyB1cCBhcyBhIGhvdHNwb3QgaW4gL3N0 YXR1cyBwcm9maWxpbmcgKHNlZQo+Pj4gYnVnICM2MDQ5IFsxXSkuCj4+Pgo+Pj4gVGhpcyBwYXRj aCBpbnRyb2R1Y2VzIGFuIGluLW1lbW9yeSBjYWNoZSBvZiBzdWNjZXNzZnVsbHkgdmVyaWZpZWQg dG9rZW4KPj4+IHNlY3JldHMuIFN1YnNlcXVlbnQgcmVxdWVzdHMgZm9yIHRoZSBzYW1lIHRva2Vu K3NlY3JldCBjb21iaW5hdGlvbiBvbmx5Cj4+PiBwZXJmb3JtIGEgY29tcGFyaXNvbiB1c2luZyBv cGVuc3NsOjptZW1jbXA6OmVxIGFuZCBhdm9pZCByZS1ydW5uaW5nIHRoZQo+Pj4gcGFzc3dvcmQg aGFzaC4gVGhlIGNhY2hlIGlzIHVwZGF0ZWQgd2hlbiBhIHRva2VuIHNlY3JldCBpcyBzZXQgYW5k Cj4+PiBjbGVhcmVkIHdoZW4gYSB0b2tlbiBpcyBkZWxldGVkLiBOb3RlLCB0aGlzIGRvZXMgTk9U IGluY2x1ZGUgbWFudWFsCj4+PiBjb25maWcgY2hhbmdlcywgd2hpY2ggd2lsbCBiZSBjb3ZlcmVk IGluIGEgc3Vic2VxdWVudCBwYXRjaC4KPj4+Cj4+PiBUaGlzIHBhdGNoIHBhcnRseSBmaXhlcyBi dWcgIzYwNDkgWzFdLgo+Pj4KPj4+IFsxXSBodHRwczovL2J1Z3ppbGxhLnByb3htb3guY29tL3No b3dfYnVnLmNnaT9pZD03MDE3Cj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogU2FtdWVsIFJ1ZmluYXRz Y2hhIDxzLnJ1ZmluYXRzY2hhQHByb3htb3guY29tPgo+Pj4gLS0tCj4+PiDCoCBwYnMtY29uZmln L3NyYy90b2tlbl9zaGFkb3cucnMgfCA1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCj4+PiDCoCAxIGZpbGUgY2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9wYnMtY29uZmlnL3NyYy90b2tlbl9zaGFkb3cucnMgYi9w YnMtY29uZmlnL3NyYy8gCj4+PiB0b2tlbl9zaGFkb3cucnMKPj4+IGluZGV4IDY0MGZhYmJmLi40 N2FhMmZjMiAxMDA2NDQKPj4+IC0tLSBhL3Bicy1jb25maWcvc3JjL3Rva2VuX3NoYWRvdy5ycwo+ Pj4gKysrIGIvcGJzLWNvbmZpZy9zcmMvdG9rZW5fc2hhZG93LnJzCj4+PiBAQCAtMSw2ICsxLDgg QEAKPj4+IMKgIHVzZSBzdGQ6OmNvbGxlY3Rpb25zOjpIYXNoTWFwOwo+Pj4gK3VzZSBzdGQ6OnN5 bmM6OlJ3TG9jazsKPj4+IMKgIHVzZSBhbnlob3c6OntiYWlsLCBmb3JtYXRfZXJyLCBFcnJvcn07 Cj4+PiArdXNlIG9uY2VfY2VsbDo6c3luYzo6T25jZUNlbGw7Cj4+PiDCoCB1c2Ugc2VyZGU6OntE ZXNlcmlhbGl6ZSwgU2VyaWFsaXplfTsKPj4+IMKgIHVzZSBzZXJkZV9qc29uOjp7ZnJvbV92YWx1 ZSwgVmFsdWV9Owo+Pj4gQEAgLTEzLDYgKzE1LDEzIEBAIHVzZSBjcmF0ZTo6e29wZW5fYmFja3Vw X2xvY2tmaWxlLCBCYWNrdXBMb2NrR3VhcmR9Owo+Pj4gwqAgY29uc3QgTE9DS19GSUxFOiAmc3Ry ID0gcGJzX2J1aWxkY2ZnOjpjb25maWdkaXIhKCIvIAo+Pj4gdG9rZW4uc2hhZG93LmxvY2siKTsK Pj4+IMKgIGNvbnN0IENPTkZfRklMRTogJnN0ciA9IHBic19idWlsZGNmZzo6Y29uZmlnZGlyISgi L3Rva2VuLnNoYWRvdyIpOwo+Pj4gKy8vLyBHbG9iYWwgaW4tbWVtb3J5IGNhY2hlIGZvciBzdWNj ZXNzZnVsbHkgdmVyaWZpZWQgQVBJIHRva2VuIHNlY3JldHMuCj4+PiArLy8vIFRoZSBjYWNoZSBz dG9yZXMgcGxhaW4gdGV4dCBzZWNyZXRzIGZvciB0b2tlbiBBdXRoaWRzIHRoYXQgaGF2ZSAKPj4+ IGFscmVhZHkgYmVlbgo+Pj4gKy8vLyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBoYXNoZWQgdmFsdWVz IGluIGB0b2tlbi5zaGFkb3dgLiBUaGlzIAo+Pj4gYWxsb3dzIGZvciBjaGVhcAo+Pj4gKy8vLyBz dWJzZXF1ZW50IGF1dGhlbnRpY2F0aW9ucyBmb3IgdGhlIHNhbWUgdG9rZW4rc2VjcmV0IAo+Pj4g Y29tYmluYXRpb24sIGF2b2lkaW5nCj4+PiArLy8vIHJlY29tcHV0aW5nIHRoZSBwYXNzd29yZCBo YXNoIG9uIGV2ZXJ5IHJlcXVlc3QuCj4+PiArc3RhdGljIFRPS0VOX1NFQ1JFVF9DQUNIRTogT25j ZUNlbGw8UndMb2NrPEFwaVRva2VuU2VjcmV0Q2FjaGU+PiA9IAo+Pj4gT25jZUNlbGw6Om5ldygp Owo+Pj4gKwo+Pj4gwqAgI1tkZXJpdmUoU2VyaWFsaXplLCBEZXNlcmlhbGl6ZSldCj4+PiDCoCAj W3NlcmRlKHJlbmFtZV9hbGwgPSAia2ViYWItY2FzZSIpXQo+Pj4gwqAgLy8vIEFwaVRva2VuIGlk IC8gc2VjcmV0IHBhaXIKPj4+IEBAIC01NCw5ICs2MywyNSBAQCBwdWIgZm4gdmVyaWZ5X3NlY3Jl dCh0b2tlbmlkOiAmQXV0aGlkLCBzZWNyZXQ6IAo+Pj4gJnN0cikgLT4gUmVzdWx0PCgpLCBFcnJv cj4gewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGJhaWwhKCJub3QgYW4gQVBJIHRva2VuIElEIik7 Cj4+PiDCoMKgwqDCoMKgIH0KPj4+ICvCoMKgwqAgLy8gRmFzdCBwYXRoCj4+PiArwqDCoMKgIGlm IGxldCBTb21lKGNhY2hlZCkgPSAKPj4+IHRva2VuX3NlY3JldF9jYWNoZSgpLnJlYWQoKS51bndy YXAoKS5zZWNyZXRzLmdldCh0b2tlbmlkKSB7Cj4+Cj4+IGRpZCB5b3UgYmVuY2htYXJrIHRoaXMg d2l0aCBhIGxvdCBvZiBwYXJhbGxlbCB0b2tlbiByZXF1ZXN0cz8gYSBwbGFpbiAKPj4gUndMb2Nr Cj4+IGdpdmVzIG5vIGd1YXJhbnRlZXMgYXQgYWxsIHcuci50LiBvcmRlcmluZyBvciBmYWlybmVz cywgc28gYSBsb3Qgb2YgCj4+IHRva2VuLWJhc2VkCj4+IHJlcXVlc3RzIGNvdWxkIGVmZmVjdGl2 ZWx5IHByZXZlbnQgdG9rZW4gcmVtb3ZhbCBBRkFJQ1QgKG9yIHZpY2UtdmVyc2EsCj4+IHNwYW1t aW5nIHRva2VuIGNyZWF0aW9uIGNvdWxkIGxvY2sgb3V0IGFsbCB0b2tlbnM/KQo+Pgo+PiBzaW5j ZSB3ZSBkb24ndCBhY3R1YWxseSByZXF1aXJlIHRoZSBjYWNoZSBoZXJlIHRvIHByb2NlZWQsIHdl IGNvdWxkIAo+PiBhbHNvIG1ha2UgdGhpcyBhIHRyeV9yZWFkCj4+IG9yIGEgcmVhZCB3aXRoIHRp bWVvdXQsIGFuZCBmYWxsYmFjayB0byB0aGUgc2xvdyBwYXRoIGlmIHRoZXJlIGlzIHRvbyAKPj4g bXVjaAo+PiBjb250ZW50aW9uPyBhbHRlcm5hdGl2ZWx5LCBjb21wYXJpbmcgd2l0aCBwYXJraW5n X2xvdCB3b3VsZCBhbHNvIGJlCj4+IGludGVyZXN0aW5nLCBzaW5jZSB0aGF0IGltcGxlbWVudGF0 aW9uIGRvZXMgaGF2ZSBmYWlybmVzcyBndWFyYW50ZWVzLgo+Pgo+PiBub3RlIHRoYXQgdG9rZW4t YmFzZWQgcmVxdWVzdHMgYXJlIGJhc2ljYWxseSBkb2FibGUgYnkgYW55b25lIGJlaW5nIAo+PiBh YmxlIHRvCj4+IHJlYWNoIFBCUywgd2hlcmVhcyB0b2tlbiBjcmVhdGlvbi9kZWxldGlvbiBpcyBh dmFpbGFibGUgdG8gZXZlcnkgCj4+IGF1dGhlbnRpY2FlZAo+PiB1c2VyLgo+Pgo+IAo+IFRoYW5r cyBmb3IgdGhlIHJldmlldyBGYWJpYW4gYW5kIHRoZSB2YWx1YWJsZSBjb21tZW50cyEKPiAKPiBJ IGRpZCBub3QgYmVuY2htYXJrIHRoZSBSd0xvY2sgaXRzZWxmIHVuZGVyIGxvYWQuIFlvdXIgcG9p bnQgYWJvdXQKPiBjb250ZW50aW9uL2ZhaXJuZXNzIGZvciBSd0xvY2sgbWFrZXMgcGVyZmVjdCBz ZW5zZSwgYW5kIHdlIHNob3VsZCAKPiBjb25zaWRlciB0aGlzLiBTbyBmb3IgdjIsIEkgd2lsbCBp bnRlZ3JhdGUgdHJ5X3JlYWQoKSAvCj4gdHJ5X3dyaXRlKCkgYXMgbWVudGlvbmVkIHRvIGF2b2lk IHBvc3NpYmxlIGNvbnRlbnRpb24gLyBEb1MgaXNzdWVzLgo+IAo+IEnigJlsbCBhbHNvIGNvbnNp ZGVyIHBhcmtpbmdfbG90OjpSd0xvY2ssIHRoYW5rcyBmb3IgdGhlIGhpbnQhCj4KCgpJIGJlbmNo bWFya2VkIHRoZSAid3JpdGVyIHVuZGVyIGhlYXZ5IHBhcmFsbGVsIHJlYWRlcnMiIHNjZW5hcmlv IGJ5CnJ1bm5pbmcgYSA2NC1wYXJhbGxlbCB0b2tlbi1hdXRoIGZsb29kIGFnYWluc3QKL2FkbWlu L2RhdGFzdG9yZS9kczAwMDEvc3RhdHVzP3ZlcmJvc2U9MCAo4omIIDQ0LTQ4ayBzdWNjZXNzZnVs CnJlcXVlc3RzIHRvdGFsKSB3aGlsZSBleGVjdXRpbmcgNTAgdG9rZW4gY3JlYXRlICsgNTAgdG9r ZW4gZGVsZXRlCm9wZXJhdGlvbnMuCgpXaXRoIHRoZSBzdWdnZXN0ZWQgYmVzdC1lZmZvcnQgYXBw cm9hY2ggKGNhY2hlIGxvb2t1cHMvaW5zZXJ0cyB2aWEKdHJ5X3JlYWQvdHJ5X3dyaXRlKSBJIHNh dyB0aGUgZm9sbG93aW5nIGUyZSBBUEkgbGF0ZW5jaWVzOgoKZGVsZXRlOiBwOTUgfjM5bXMsIG1h eCB+NDRtcwpjcmVhdGU6IHA5NSB+NTBtcywgbWF4IH41Nm1zCgpJIGFsc28gY29tcGFyZWQgYWdh aW5zdCBwYXJraW5nX2xvdDo6UndMb2NrIHVuZGVyIHRoZSBzYW1lIHNldHVwLApyZXN1bHRzIHdl cmUgaW4gdGhlIHNhbWUgcmFuZ2UgKGRlbGV0ZSBwOTUgfjM54oCTNDNtcywgbWF4IH40M+KAkzY0 bXMpCnNvIEkgZGlkbuKAmXQgc2VlIGEgY2xlYXIgYmVuZWZpdCB0aGVyZSBmb3IgdGhpcyB3b3Jr bG9hZC4KCkZvciB2MiBJIHdpbGwga2VlcCBzdGQ6OnN5bmM6OlJ3TG9jayB3aXRoIHJlYWQvaW5z ZXJ0IGJlc3QtZWZmb3J0LCB3aGlsZQpkZWxldGUvcmVtb3ZhbCBibG9ja2luZy4KCgo+Pj4gK8Kg wqDCoMKgwqDCoMKgIC8vIENvbXBhcmUgY2FjaGVkIHNlY3JldCB3aXRoIHByb3ZpZGVkIG9uZSB1 c2luZyBjb25zdGFudCAKPj4+IHRpbWUgY29tcGFyaXNvbgo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlm IG9wZW5zc2w6Om1lbWNtcDo6ZXEoY2FjaGVkLmFzX2J5dGVzKCksIHNlY3JldC5hc19ieXRlcygp KSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyBBbHJlYWR5IHZlcmlmaWVkIGJlZm9y ZQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE9rKCgpKTsKPj4+ICvCoMKgwqDC oMKgwqDCoCB9Cj4+PiArwqDCoMKgwqDCoMKgwqAgLy8gRmFsbCB0aHJvdWdoIHRvIHNsb3cgcGF0 aCBpZiBzZWNyZXQgZG9lc24ndCBtYXRjaCBjYWNoZWQgb25lCj4+PiArwqDCoMKgIH0KPj4KPj4g dGhpcyBjb3VsZCBhbHNvIGJlIGEgaGVscGVyLCBsaWtlIHRoZSByZXN0LiB0aGVuIGl0IHdvdWxk IGNvbnN1bWUgKGEgCj4+IHJlZmVyZW5jZQo+PiB0bykgdGhlIHVzZXItcHJvdmlkZWQgc2VjcmV0 IHZhbHVlLCBpbnN0ZWFkIG9mIGdpdmluZyBhY2Nlc3MgdG8gYWxsIAo+PiBjYWNoZWQKPj4gb25l cy4gZG9lc24ndCBtYWtlIGEgcmVhbCBkaWZmZXJlbmNlIG5vdyBvdGhlciB0aGFuIGNvbnNpc3Rl bmNlLCBidXQgCj4+IHRoZSBjYWNoZQo+PiBpcyAobW9yZSkgY2xlYW5seSBlbmNhcHN1bGF0ZWQg dGhlbi4KPj4KPj4+ICsKPj4+ICvCoMKgwqAgLy8gU2xvdyBwYXRoOiByZWFkIGZpbGUgKyB2ZXJp ZnkgaGFzaAo+Pj4gwqDCoMKgwqDCoCBsZXQgZGF0YSA9IHJlYWRfZmlsZSgpPzsKPj4+IMKgwqDC oMKgwqAgbWF0Y2ggZGF0YS5nZXQodG9rZW5pZCkgewo+Pj4gLcKgwqDCoMKgwqDCoMKgIFNvbWUo aGFzaGVkX3NlY3JldCkgPT4gCj4+PiBwcm94bW94X3N5czo6Y3J5cHQ6OnZlcmlmeV9jcnlwdF9w dyhzZWNyZXQsIGhhc2hlZF9zZWNyZXQpLAo+Pj4gK8KgwqDCoMKgwqDCoMKgIFNvbWUoaGFzaGVk X3NlY3JldCkgPT4gewo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJveG1veF9zeXM6OmNy eXB0Ojp2ZXJpZnlfY3J5cHRfcHcoc2VjcmV0LCAKPj4+IGhhc2hlZF9zZWNyZXQpPzsKPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIENhY2hlIHRoZSBwbGFpbiBzZWNyZXQgZm9yIGZ1dHVy ZSByZXF1ZXN0cwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FjaGVfaW5zZXJ0X3NlY3Jl dCh0b2tlbmlkLmNsb25lKCksIHNlY3JldC50b19vd25lZCgpKTsKPj4KPj4gc2FtZSBhcHBsaWVz IGhlcmUgLSBzdG9yaW5nIHRoZSB2YWx1ZSBpbiB0aGUgY2FjaGUgaXMgb3B0aW9uYWwgKGFuZCAK Pj4gZ29vZCBpZiBpdAo+PiB3b3JrcyksIGJ1dCB3ZSBkb24ndCB3YW50IHRvIHN0YWxsIGZvcmV2 ZXIgd2FpdGluZyBmb3IgdGhlIGNhY2hlIAo+PiBpbnNlcnRpb24gdG8KPj4gZ28gdGhyb3VnaC4u Cj4+Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBPaygoKSkKPj4+ICvCoMKgwqDCoMKgwqDC oCB9Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgTm9uZSA9PiBiYWlsISgiaW52YWxpZCBBUEkgdG9r ZW4iKSwKPj4+IMKgwqDCoMKgwqAgfQo+Pj4gwqAgfQo+Pj4gQEAgLTgyLDYgKzEwNyw4IEBAIGZu IHNldF9zZWNyZXQodG9rZW5pZDogJkF1dGhpZCwgc2VjcmV0OiAmc3RyKSAtPiAKPj4+IFJlc3Vs dDwoKSwgRXJyb3I+IHsKPj4+IMKgwqDCoMKgwqAgZGF0YS5pbnNlcnQodG9rZW5pZC5jbG9uZSgp LCBoYXNoZWRfc2VjcmV0KTsKPj4+IMKgwqDCoMKgwqAgd3JpdGVfZmlsZShkYXRhKT87Cj4+PiAr wqDCoMKgIGNhY2hlX2luc2VydF9zZWNyZXQodG9rZW5pZC5jbG9uZSgpLCBzZWNyZXQudG9fb3du ZWQoKSk7Cj4+Cj4+IHRoaXMKPj4KPj4+ICsKPj4+IMKgwqDCoMKgwqAgT2soKCkpCj4+PiDCoCB9 Cj4+PiBAQCAtOTcsNSArMTI0LDM0IEBAIHB1YiBmbiBkZWxldGVfc2VjcmV0KHRva2VuaWQ6ICZB dXRoaWQpIC0+IAo+Pj4gUmVzdWx0PCgpLCBFcnJvcj4gewo+Pj4gwqDCoMKgwqDCoCBkYXRhLnJl bW92ZSh0b2tlbmlkKTsKPj4+IMKgwqDCoMKgwqAgd3JpdGVfZmlsZShkYXRhKT87Cj4+PiArwqDC oMKgIGNhY2hlX3JlbW92ZV9zZWNyZXQodG9rZW5pZCk7Cj4+Cj4+IGFuZCB0aGlzIG5lZWQgdG8g YmxvY2sgb2YgY291cnNlIGFuZCBjYW4ndCBiZSBza2lwcGVkLCBiZWNhdXNlIAo+PiBvdGhlcndp c2UgdGhlCj4+IHJlYWQgYWJvdmUgbWlnaHQgb3BlcmF0ZSBvbiB3cm9uZyBkYXRhLi4KPj4KPj4+ ICsKPj4+IMKgwqDCoMKgwqAgT2soKCkpCj4+PiDCoCB9Cj4+PiArCj4+PiArc3RydWN0IEFwaVRv a2VuU2VjcmV0Q2FjaGUgewo+Pj4gK8KgwqDCoCAvLy8gS2V5cyBhcmUgdG9rZW4gQXV0aGlkcywg dmFsdWVzIGFyZSB0aGUgY29ycmVzcG9uZGluZyBwbGFpbiAKPj4+IHRleHQgc2VjcmV0cy4KPj4+ ICvCoMKgwqAgLy8vIEVudHJpZXMgYXJlIGFkZGVkIGFmdGVyIGEgc3VjY2Vzc2Z1bCBvbi1kaXNr IHZlcmlmaWNhdGlvbiBpbgo+Pj4gK8KgwqDCoCAvLy8gYHZlcmlmeV9zZWNyZXRgIG9yIHdoZW4g YSBuZXcgdG9rZW4gc2VjcmV0IGlzIGdlbmVyYXRlZCBieQo+Pj4gK8KgwqDCoCAvLy8gYGdlbmVy YXRlX2FuZF9zZXRfc2VjcmV0YC4gVXNlZCB0byBhdm9pZCByZXBlYXRlZAo+Pj4gK8KgwqDCoCAv Ly8gcGFzc3dvcmQtaGFzaCBjb21wdXRhdGlvbiBvbiBzdWJzZXF1ZW50IGF1dGhlbnRpY2F0aW9u cy4KPj4+ICvCoMKgwqAgc2VjcmV0czogSGFzaE1hcDxBdXRoaWQsIFN0cmluZz4sCj4+PiArfQo+ Pj4gKwo+Pj4gK2ZuIHRva2VuX3NlY3JldF9jYWNoZSgpIC0+ICYnc3RhdGljIFJ3TG9jazxBcGlU b2tlblNlY3JldENhY2hlPiB7Cj4+PiArwqDCoMKgIFRPS0VOX1NFQ1JFVF9DQUNIRS5nZXRfb3Jf aW5pdCh8fCB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgUndMb2NrOjpuZXcoQXBpVG9rZW5TZWNyZXRD YWNoZSB7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzZWNyZXRzOiBIYXNoTWFwOjpuZXco KSwKPj4+ICvCoMKgwqDCoMKgwqDCoCB9KQo+Pj4gK8KgwqDCoCB9KQo+Pj4gK30KPj4+ICsKPj4+ ICtmbiBjYWNoZV9pbnNlcnRfc2VjcmV0KHRva2VuaWQ6IEF1dGhpZCwgc2VjcmV0OiBTdHJpbmcp IHsKPj4+ICvCoMKgwqAgbGV0IG11dCBjYWNoZSA9IHRva2VuX3NlY3JldF9jYWNoZSgpLndyaXRl KCkudW53cmFwKCk7Cj4+PiArwqDCoMKgIGNhY2hlLnNlY3JldHMuaW5zZXJ0KHRva2VuaWQsIHNl Y3JldCk7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ZuIGNhY2hlX3JlbW92ZV9zZWNyZXQodG9rZW5pZDog JkF1dGhpZCkgewo+Pj4gK8KgwqDCoCBsZXQgbXV0IGNhY2hlID0gdG9rZW5fc2VjcmV0X2NhY2hl KCkud3JpdGUoKS51bndyYXAoKTsKPj4+ICvCoMKgwqAgY2FjaGUuc2VjcmV0cy5yZW1vdmUodG9r ZW5pZCk7Cj4+PiArfQo+Pj4gLS0gCj4+PiAyLjQ3LjMKPj4+Cj4+Pgo+Pj4KPj4+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+PiBwYnMtZGV2ZWwgbWFp bGluZyBsaXN0Cj4+PiBwYnMtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4+IGh0dHBzOi8vbGlz dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pj4KPj4+ Cj4gCj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KPiBwYnMtZGV2ZWwgbWFpbGluZyBsaXN0Cj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29t Cj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcGJz LWRldmVsCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBz Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo=