From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id C1ADE1FF165 for ; Thu, 6 Nov 2025 10:32:51 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C508F11A53; Thu, 6 Nov 2025 10:33:32 +0100 (CET) Message-ID: <8f047692-43b3-4ec0-8b19-17729172d860@proxmox.com> Date: Thu, 6 Nov 2025 10:32:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: Nicolas Frey , Proxmox Backup Server development discussion References: <20251105155129.517430-1-n.frey@proxmox.com> <20251105155129.517430-4-n.frey@proxmox.com> <685be513-ba3e-4c78-9ed1-8ff7861aaad0@proxmox.com> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <685be513-ba3e-4c78-9ed1-8ff7861aaad0@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762421560200 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.045 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 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. [verify.rs, datastore.rs, environment.rs] Subject: Re: [pbs-devel] [PATCH proxmox-backup 2/4] api: verify: use worker-threads to determine the number of threads to use 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" T24gMTEvNi8yNSAxMDoyMiBBTSwgTmljb2xhcyBGcmV5IHdyb3RlOgo+IE9uIDExLzYvMjUgMTA6 MDggQU0sIENocmlzdGlhbiBFYm5lciB3cm90ZToKPj4gUGxlYXNlIGFkZCBhIHNob3J0IGNvbW1p dCBtZXNzYWdlIGRlc2NyaWJpbmcgd2hhdCB0aGUgd29ya2VyIHRocmVhZHMKPj4gY292ZXIsIGUu Zy4gdGhhdCB0aGlzIHBhcmFtZXRlciBjb250cm9scyB0aGUgbnVtYmVyIG9mIHJlYWRlciBhbmQK Pj4gY2h1bmsgdmVyaWZpY2F0aW9uIHRocmVhZHMuCj4+Cj4+IFdoYXQgdHJpcHBlZCBtZSBvdmVy IGp1c3Qgbm93Ogo+PiBJcyB0aGlzIGludGVudGlvbmFsbHkgbm90IGluY3JlYXNpbmcgdGhlIG51 bWJlciBvZiBjaHVuayB2ZXJpZmljYXRpb24KPj4gdGhyZWFkcz8gT3Igd2FzIHRoYXQgb3Zlcmxv b2tlZD8gRnJvbSB0aGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIEkKPj4gc3VzcGVjdGVkIHRoaXMg dG8gYWN0IG9uIGJvdGgsIHJlYWRpbmcgYW5kIHZlcmlmeWluZy4gSWYgdGhpcyBpcyBub3QKPj4g dGhlIGNhc2UsIG1heWJlIHRoZSBwYXJhbWV0ZXIgc2hvdWxkIGdldCByZW5hbWVkIHRvIGEgbW9y ZSB0ZWxsaW5nCj4+IGBwYXJhbGxlbC1jaHVuay1yZWFkZXJzYCBpbnN0ZWFkPwo+IAo+IEkgd2Fz bid0IHN1cmUgaWYgdGhlIG51bWJlciBvZiB0aHJlYWRzIGZvciB2ZXJpZmljYXRpb24gc2hvdWxk IGJlCj4gY29udHJvbGxlZCB2aWEgdGhpcyBhcyB3ZWxsLCBhcyB0aGUgb3JpZ2luYWwgcGF0Y2gg b25seSBhZGRlZCBhIG5ldwo+IHRocmVhZCBwb29sIGZvciByZWFkaW5nLCB3aGVyZWFzIHRoZSB2 ZXJpZmljYXRpb24gcG9vbCB3YXMgYWxyZWFkeQo+IGltcGxlbWVudGVkLgo+IEkgcG9pbnRlZCB0 aGlzIG91dCBpbiB0aGUgY292ZXIgbGV0dGVyLCB0aG91Z2ggaXQgbWlnaHQgaGF2ZSBiZWVuCj4g YmV0dGVyIHRvIHB1dCB0aGlzIGhlcmUgdG9vOgo+IAo+IFRoZSBudW1iZXIgb2YgYHdvcmtlci10 aHJlYWRzYCBvbmx5IGNvbnRyb2xzIHRoZSB0aHJlYWQgcG9vbCBmb3IKPiByZWFkaW5nLCB0aG91 Z2ggaWYgaXQgbWFrZXMgc2Vuc2UgdG8gcmV1c2UgdGhpcyBmb3IgdGhlIHZlcmlmaWNhdGlvbgo+ IHBvb2wsIGl0IGNvdWxkIGJlIGFkanVzdGVkIHRvIGRvIHNvIHRvby4KPiAKPiBJIHRoaW5rIGl0 IG1ha2VzIHNlbnNlIHRvIHVzZSBpdCB0byBjb250cm9sIHRoZSBudW1iZXIgb2YgdGhyZWFkcyBv Zgo+IGJvdGguIFRoYW5rcyBmb3IgdGhlIGZlZWRiYWNrLCBJJ2xsIGFkanVzdCBpdCBhbG9uZyB3 aXRoIHRoZSBvdGhlcgo+IHByb3Bvc2VkIGNoYW5nZXMgaW4gYSB2MiEKCldlbGwsIHRoYXQgd2Fz IGp1c3QgYW4gdW5pbmZvcm1lZCBhc3N1bXB0aW9uIGZyb20gbXkgc2lkZSB3aGVuIHJlYWRpbmcg CnRoZSBwYXJhbWV0ZXIgbmFtZSAoYW5kIEkgZGlkIG5vdCByZS1yZWFkIHRoZSBjb3ZlciBsZXR0 ZXIgdG9kYXkgYWZ0ZXIgCmhhdmluZyBsb29rZWQgYXQgdGhpcyBxdWlja2x5IHllc3RlcmRheSwg c29ycnkgZm9yIHRoYXQpLgoKQnV0IG1heWJlIHlvdSBjYW4gYWxzbyBldmFsdWF0ZSBpZiBpdCBh Y3R1YWxseSBtYWtlcyBzZW5zZSB0byBjb250cm9sIApib3RoIGJ5IHRoZSBzYW1lIHBhcmFtZXRl ciwgb3IgaWYgaXQgb25seSBtYWtlcyBzZW5zZSB0byBlLmcuIGluY3JlYXNlIAp0aGUgbnVtYmVy IG9mIHZlcmlmaWNhdGlvbiB0YXNrcyAobm8gcG9pbnQgZm9yIHRoYXQgaWYgdGhlIElPIHJlbWFp bnMgCnRoZSBib3R0bGVuZWNrKSwgb3IgaWYgaXQgd291bGQgbWFrZSBzZW5zZSB0byBoYXZlIGVp dGhlciAyIHBhcmFtZXRlcnMgCm9yIGNvdXBsZSB0aGVtIGJ5IHNvbWUgcHJvcG9ydGlvbmFsaXR5 IGNvbnN0YW50LgoKPiAgID4KPj4gZnVydGhlciBjb21tZW50IGlubGluZQo+PiBPbiAxMS81LzI1 IDQ6NTEgUE0sIE5pY29sYXMgRnJleSB3cm90ZToKPj4+IFNpZ25lZC1vZmYtYnk6IE5pY29sYXMg RnJleSA8bi5mcmV5QHByb3htb3guY29tPgo+Pj4gLS0tCj4+PiAgwqAgc3JjL2FwaTIvYWRtaW4v ZGF0YXN0b3JlLnJzwqDCoMKgIHwgMTMgKysrKysrKysrKystLQo+Pj4gIMKgIHNyYy9hcGkyL2Jh Y2t1cC9lbnZpcm9ubWVudC5ycyB8wqAgMiArLQo+Pj4gIMKgIHNyYy9iYWNrdXAvdmVyaWZ5LnJz wqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDUgKysrKy0KPj4+ICDCoCBzcmMvc2VydmVyL3Zlcmlm eV9qb2IucnPCoMKgwqDCoMKgwqAgfMKgIDMgKystCj4+PiAgwqAgNCBmaWxlcyBjaGFuZ2VkLCAx OCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9zcmMv YXBpMi9hZG1pbi9kYXRhc3RvcmUucnMgYi9zcmMvYXBpMi9hZG1pbi9kYXRhc3RvcmUucnMKPj4+ IGluZGV4IGQxOTJlZTM5Li42OWEwOTA4MSAxMDA2NDQKPj4+IC0tLSBhL3NyYy9hcGkyL2FkbWlu L2RhdGFzdG9yZS5ycwo+Pj4gKysrIGIvc3JjL2FwaTIvYWRtaW4vZGF0YXN0b3JlLnJzCj4+PiBA QCAtNjc3LDYgKzY3NywxNCBAQCBwdWIgYXN5bmMgZm4gc3RhdHVzKAo+Pj4gIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NoZW1hOiBOU19NQVhfREVQVEhfU0NIRU1BLAo+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0aW9uYWw6IHRydWUsCj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICJ3b3JrZXItdGhyZWFkcyI6IHsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZGVzY3JpcHRpb246ICJTZXQgdGhlIG51bWJlciBvZiB3b3JrZXIgdGhyZWFkcyB0bwo+Pj4gdXNl IGZvciB0aGUgam9iIiwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdHlwZTog SW50ZWdlciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3B0aW9uYWw6IHRy dWUsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1pbmltdW06IDEsCj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1heGltdW06IDMyLAo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZWZhdWx0OiAxLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfSwKPj4KPj4gQXMgbWVudGlvbmVkIG9uIHRoZSBwYnMtYXBpLXR5cGVzIHBhdGNoLCB0 aGlzIHNob3VsZCByZXVzZSB0aGUgc2FtZQo+PiBzY2hlbWEgYXMgKHdpbGwgYmUpIGRlZmluZWQg dGhlcmUsIHNvIHRoaXMgZG9lcyBub3QgYmUgdG8gYmUgcmUtCj4+IGRlZmluZWQgYW5kIHN0YXlz IGluIHN5bmMuCj4+Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIH0sCj4+PiAgwqDCoMKgwqDCoCB9 LAo+Pj4gIMKgwqDCoMKgwqAgcmV0dXJuczogewo+Pj4gQEAgLTY5MCw3ICs2OTgsNyBAQCBwdWIg YXN5bmMgZm4gc3RhdHVzKAo+Pj4gIMKgICldCj4+PiAgwqAgLy8vIFZlcmlmeSBiYWNrdXBzLgo+ Pj4gIMKgIC8vLwo+Pj4gLS8vLyBUaGlzIGZ1bmN0aW9uIGNhbiB2ZXJpZnkgYSBzaW5nbGUgYmFj a3VwIHNuYXBzaG90LCBhbGwgYmFja3VwCj4+PiBmcm9tIGEgYmFja3VwIGdyb3VwLAo+Pj4gKy8v LyBUaGlzIGZ1bmN0aW9uIGNhbiB2ZXJpZnkgYSBzaW5nbGUgYmFja3VwIHNuYXBzaG90LCBhbGwg YmFja3Vwcwo+Pj4gZnJvbSBhIGJhY2t1cCBncm91cCwKPj4+ICDCoCAvLy8gb3IgYWxsIGJhY2t1 cHMgaW4gdGhlIGRhdGFzdG9yZS4KPj4+ICDCoCAjW2FsbG93KGNsaXBweTo6dG9vX21hbnlfYXJn dW1lbnRzKV0KPj4+ICDCoCBwdWIgZm4gdmVyaWZ5KAo+Pj4gQEAgLTcwMiw2ICs3MTAsNyBAQCBw dWIgZm4gdmVyaWZ5KAo+Pj4gIMKgwqDCoMKgwqAgaWdub3JlX3ZlcmlmaWVkOiBPcHRpb248Ym9v bD4sCj4+PiAgwqDCoMKgwqDCoCBvdXRkYXRlZF9hZnRlcjogT3B0aW9uPGk2ND4sCj4+PiAgwqDC oMKgwqDCoCBtYXhfZGVwdGg6IE9wdGlvbjx1c2l6ZT4sCj4+PiArwqDCoMKgIHdvcmtlcl90aHJl YWRzOiBPcHRpb248dXNpemU+LAo+Pgo+PiB0aGlzIGNvdWxkIGJlIGEgcGxhaW4gYHVzaXplYCBh bHJlYWR5LCBzbyBpdCBkb2VzIG5vdCBuZWVkIHRvIGJlCj4+IHVud3JhcHBlZCBmb3IgZWFjaCBw YXJhbGxlbCB3b3JrZXIgaW5zdGFudGlhdGlvbi4gVGhlIHVud3JhcHBpbmcgYW5kCj4+IHNldHRp bmcgdG8gZGVmYXVsdCBjYW4gYWxyZWFkeSBoYXBwZW4gaW4gdGhlIGNvbnN0cnVjdG9yLgo+Pgo+ Pj4gIMKgwqDCoMKgwqAgcnBjZW52OiAmbXV0IGR5biBScGNFbnZpcm9ubWVudCwKPj4+ICDCoCAp IC0+IFJlc3VsdDxWYWx1ZSwgRXJyb3I+IHsKPj4+ICDCoMKgwqDCoMKgIGxldCBhdXRoX2lkOiBB dXRoaWQgPSBycGNlbnYuZ2V0X2F1dGhfaWQoKS51bndyYXAoKS5wYXJzZSgpPzsKPj4+IEBAIC03 ODEsNyArNzkwLDcgQEAgcHViIGZuIHZlcmlmeSgKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgYXV0 aF9pZC50b19zdHJpbmcoKSwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgdG9fc3Rkb3V0LAo+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoCBtb3ZlIHx3b3JrZXJ8IHsKPj4+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGxldCB2ZXJpZnlfd29ya2VyID0gVmVyaWZ5V29ya2VyOjpuZXcod29ya2VyLmNsb25l KCksCj4+PiBkYXRhc3RvcmUpPzsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldCB2ZXJp Znlfd29ya2VyID0gVmVyaWZ5V29ya2VyOjpuZXcod29ya2VyLmNsb25lKCksCj4+PiBkYXRhc3Rv cmUsIHdvcmtlcl90aHJlYWRzKT87Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0 IGZhaWxlZF9kaXJzID0gaWYgbGV0IFNvbWUoYmFja3VwX2RpcikgPSBiYWNrdXBfZGlyIHsKPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldCBtdXQgcmVzID0gVmVjOjpu ZXcoKTsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICF2ZXJpZnlf d29ya2VyLnZlcmlmeV9iYWNrdXBfZGlyKAo+Pj4gZGlmZiAtLWdpdCBhL3NyYy9hcGkyL2JhY2t1 cC9lbnZpcm9ubWVudC5ycyBiL3NyYy9hcGkyL2JhY2t1cC8KPj4+IGVudmlyb25tZW50LnJzCj4+ PiBpbmRleCAwZThlYWIxYi4uNWU2YTczYjkgMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvYXBpMi9iYWNr dXAvZW52aXJvbm1lbnQucnMKPj4+ICsrKyBiL3NyYy9hcGkyL2JhY2t1cC9lbnZpcm9ubWVudC5y cwo+Pj4gQEAgLTgxMiw3ICs4MTIsNyBAQCBpbXBsIEJhY2t1cEVudmlyb25tZW50IHsKPj4+ICDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtb3ZlIHx3b3JrZXJ8IHsKPj4+ICDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHdvcmtlci5sb2dfbWVzc2FnZSgiQXV0b21hdGljYWxs eSB2ZXJpZnlpbmcgbmV3bHkKPj4+IGFkZGVkIHNuYXBzaG90Iik7Cj4+PiAgwqAgLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZXQgdmVyaWZ5X3dvcmtlciA9Cj4+PiBWZXJpZnlXb3Jr ZXI6Om5ldyh3b3JrZXIuY2xvbmUoKSwgZGF0YXN0b3JlKT87Cj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGxldCB2ZXJpZnlfd29ya2VyID0KPj4+IFZlcmlmeVdvcmtlcjo6bmV3 KHdvcmtlci5jbG9uZSgpLCBkYXRhc3RvcmUsIE5vbmUpPzsKPj4+ICDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmICF2ZXJpZnlfd29ya2VyLnZlcmlmeV9iYWNrdXBfZGlyX3dp dGhfbG9jaygKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg JmJhY2t1cF9kaXIsCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHdvcmtlci51cGlkKCkuY2xvbmUoKSwKPj4+IGRpZmYgLS1naXQgYS9zcmMvYmFja3VwL3Zl cmlmeS5ycyBiL3NyYy9iYWNrdXAvdmVyaWZ5LnJzCj4+PiBpbmRleCA3ZjkxZjM4Yy4uZTExZGJh OGUgMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvYmFja3VwL3ZlcmlmeS5ycwo+Pj4gKysrIGIvc3JjL2Jh Y2t1cC92ZXJpZnkucnMKPj4+IEBAIC0zMiw2ICszMiw3IEBAIHB1YiBzdHJ1Y3QgVmVyaWZ5V29y a2VyIHsKPj4+ICDCoMKgwqDCoMKgIHZlcmlmaWVkX2NodW5rczogQXJjPE11dGV4PEhhc2hTZXQ8 W3U4OyAzMl0+Pj4sCj4+PiAgwqDCoMKgwqDCoCBjb3JydXB0X2NodW5rczogQXJjPE11dGV4PEhh c2hTZXQ8W3U4OyAzMl0+Pj4sCj4+PiAgwqDCoMKgwqDCoCBiYWNrZW5kOiBEYXRhc3RvcmVCYWNr ZW5kLAo+Pj4gK8KgwqDCoCB3b3JrZXJfdGhyZWFkczogT3B0aW9uPHVzaXplPiwKPj4KPj4gLi4u IHBsYWluIGB1c2l6ZWAgaGVyZQo+Pgo+Pj4gIMKgIH0KPj4+ICDCoCDCoCBpbXBsIFZlcmlmeVdv cmtlciB7Cj4+PiBAQCAtMzksNiArNDAsNyBAQCBpbXBsIFZlcmlmeVdvcmtlciB7Cj4+PiAgwqDC oMKgwqDCoCBwdWIgZm4gbmV3KAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCB3b3JrZXI6IEFyYzxk eW4gV29ya2VyVGFza0NvbnRleHQ+LAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoCBkYXRhc3RvcmU6 IEFyYzxEYXRhU3RvcmU+LAo+Pj4gK8KgwqDCoMKgwqDCoMKgIHdvcmtlcl90aHJlYWRzOiBPcHRp b248dXNpemU+LAo+Pj4gIMKgwqDCoMKgwqAgKSAtPiBSZXN1bHQ8U2VsZiwgRXJyb3I+IHsKPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IGJhY2tlbmQgPSBkYXRhc3RvcmUuYmFja2VuZCgpPzsK Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqAgT2soU2VsZiB7Cj4+PiBAQCAtNDksNiArNTEsNyBAQCBp bXBsIFZlcmlmeVdvcmtlciB7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gc3Rh cnQgd2l0aCA2NCBjaHVua3Mgc2luY2Ugd2UgYXNzdW1lIHRoZXJlIGFyZSBmZXcKPj4+IGNvcnJ1 cHQgb25lcwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvcnJ1cHRfY2h1bmtzOgo+ Pj4gQXJjOjpuZXcoTXV0ZXg6Om5ldyhIYXNoU2V0Ojp3aXRoX2NhcGFjaXR5KDY0KSkpLAo+Pj4g IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJhY2tlbmQsCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB3b3JrZXJfdGhyZWFkcywKPj4KPj4gdW53cmFwX29yKDQpIGhlcmUuLi4gb3IgZXZl biBkZWZpbmUgYSBjb25zdGFudCBmb3IgdGhlIGRlZmF1bHQgdmFsdWUsCj4+IGFsdGhvdWdoIGlm IGl0IGlzIHBsYWNlZCBoZXJlLCBpdCB3aWxsIG9ubHkgb2NjdXIgb25jZS4KPj4KPj4+ICDCoMKg wqDCoMKgwqDCoMKgwqAgfSkKPj4+ICDCoMKgwqDCoMKgIH0KPj4+ICDCoCBAQCAtMjIwLDcgKzIy Myw3IEBAIGltcGwgVmVyaWZ5V29ya2VyIHsKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAuZGF0YXN0b3JlCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLmdldF9jaHVua3Nf aW5fb3JkZXIoJippbmRleCwgc2tpcF9jaHVuaywgY2hlY2tfYWJvcnQpPzsKPj4+ICDCoCAtwqDC oMKgwqDCoMKgwqAgbGV0IHJlYWRlcl9wb29sID0gUGFyYWxsZWxIYW5kbGVyOjpuZXcoInJlYWQg Y2h1bmtzIiwgNCwgewo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxldCByZWFkZXJfcG9vbCA9IFBhcmFs bGVsSGFuZGxlcjo6bmV3KCJyZWFkIGNodW5rcyIsCj4+PiBzZWxmLndvcmtlcl90aHJlYWRzLnVu d3JhcF9vcig0KSwgewo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldCBkZWNvZGVy X3Bvb2wgPSBkZWNvZGVyX3Bvb2wuY2hhbm5lbCgpOwo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGxldCBkYXRhc3RvcmUgPSBBcmM6OmNsb25lKCZzZWxmLmRhdGFzdG9yZSk7Cj4+PiAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbGV0IGNvcnJ1cHRfY2h1bmtzID0gQXJjOjpjbG9u ZSgmc2VsZi5jb3JydXB0X2NodW5rcyk7Cj4+PiBkaWZmIC0tZ2l0IGEvc3JjL3NlcnZlci92ZXJp Znlfam9iLnJzIGIvc3JjL3NlcnZlci92ZXJpZnlfam9iLnJzCj4+PiBpbmRleCBjODc5MjE3NC4u OWQ3OTBiMDcgMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvc2VydmVyL3ZlcmlmeV9qb2IucnMKPj4+ICsr KyBiL3NyYy9zZXJ2ZXIvdmVyaWZ5X2pvYi5ycwo+Pj4gQEAgLTQxLDcgKzQxLDggQEAgcHViIGZu IGRvX3ZlcmlmaWNhdGlvbl9qb2IoCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBOb25lID0+IERlZmF1bHQ6OmRlZmF1bHQoKSwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9Owo+Pj4gIMKgIC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldCB2ZXJpZnlfd29y a2VyID0gVmVyaWZ5V29ya2VyOjpuZXcod29ya2VyLmNsb25lKCksCj4+PiBkYXRhc3RvcmUpPzsK Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxldCB2ZXJpZnlfd29ya2VyID0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVmVyaWZ5V29ya2VyOjpuZXcod29ya2VyLmNsb25l KCksIGRhdGFzdG9yZSwKPj4+IHZlcmlmaWNhdGlvbl9qb2Iud29ya2VyX3RocmVhZHMpPzsKPj4+ ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsZXQgcmVzdWx0ID0gdmVyaWZ5X3dvcmtlci52 ZXJpZnlfYWxsX2JhY2t1cHMoCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB3b3JrZXIudXBpZCgpLAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bnMsCj4+Cj4gCgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCnBicy1kZXZlbCBtYWlsaW5nIGxpc3QKcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0 dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZl bAo=