From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-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 B5B301FF17C
	for <inbox@lore.proxmox.com>; Wed,  2 Apr 2025 17:20:21 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 544661E34F;
	Wed,  2 Apr 2025 17:20:09 +0200 (CEST)
Message-ID: <bff7016a-f034-47a7-854e-6645b65d07ba@proxmox.com>
Date: Wed, 2 Apr 2025 17:20:01 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
 =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
References: <20250304115803.194820-1-m.frank@proxmox.com>
 <20250304115803.194820-3-m.frank@proxmox.com>
 <1743597124.um0raw7cfp.astroid@yuna.none>
From: Markus Frank <m.frank@proxmox.com>
In-Reply-To: <1743597124.um0raw7cfp.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.406 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
 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, usb.pm, dir.pm, tunnel.pm, pci.pm,
 storagetunnel.pm]
Subject: Re: [pve-devel] [PATCH guest-common v14 2/12] add dir mapping
 section config
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

VGhhbmtzIGZvciB0aGUgZmVlZGJhY2suCgpPbiAgMjAyNS0wNC0wMiAxNToxNCwgRmFiaWFuIEdy
w7xuYmljaGxlciB3cm90ZToKPiBPbiBNYXJjaCA0LCAyMDI1IDEyOjU3IHBtLCBNYXJrdXMgRnJh
bmsgd3JvdGU6Cj4+IEFkZHMgYSBjb25maWcgZmlsZSBmb3IgZGlyZWN0b3JpZXMgYnkgdXNpbmcg
YSAnbWFwJyBwcm9wZXJ0eSBzdHJpbmcgZm9yCj4+IGVhY2ggbm9kZSBtYXBwaW5nLgo+Pgo+PiBO
ZXh0IHRvIG5vZGUgJiBwYXRoLCB0aGVyZSBpcyB0aGUgb3B0aW9uYWwgYW5ub3VuY2Utc3VibW91
bnRzIHBhcmFtZXRlcgo+PiB3aGljaCBmb3JjZXMgdmlydGlvZnNkIHRvIHJlcG9ydCBhIGRpZmZl
cmVudCBkZXZpY2UgbnVtYmVyIGZvciBlYWNoCj4+IHN1Ym1vdW50IGl0IGVuY291bnRlcnMuIFdp
dGhvdXQgaXQsIGR1cGxpY2F0ZXMgbWF5IGJlIGNyZWF0ZWQgYmVjYXVzZQo+PiBpbm9kZSBJRHMg
YXJlIG9ubHkgdW5pcXVlIG9uIGEgc2luZ2xlIGZpbGVzeXN0ZW0uCj4gCj4gc29tZSB0aGluZ3Mg
YWJvdXQgdGhlIGFubm91bmNlLXN1Ym1vdW50cyBvcHRpb24gdGhhdCBtaWdodCBiZSB3b3J0aHdo
aWxlCj4gdG8gY29uc2lkZXI6Cj4gLSBkb2VzIGl0IGh1cnQgdG8gc2V0IGFubm91bmNlLXN1Ym1v
dW50cyBpZiB0aGVyZSBhcmUgbm9uZT8KPiAtIGl0IHNvdW5kcyBsaWtlIG5vdCBzZXR0aW5nIGl0
IGlmIHRoZXJlIGFyZSBhbnkgaXMgZGFuZ2Vyb3VzCj4gCj4gd2h5IGRvbid0IHdlIGFsd2F5cyBz
ZXQgaXQ/ICJhbm5vdW5jZS1zdWJtb3VudHMiIGlzIGFsc28gYSByZWFsbHkgd2VpcmQKPiBuYW1l
IGlmIHdlIGV4dGVuZCB0aGlzIHRvIG1hbmFnZWQgYmluZC1tb3VudHMgZm9yIGNvbnRhaW5lcnMg
KHdoaWNoIEknZAo+IHZlcnkgbXVjaCBsaWtlIHRvIGRvKSwgaWYgd2Uga2VlcCBpdCBpdCBzaG91
bGQgYmUgYSBmbGFnIGRlbm90aW5nIHRoYXQKPiB0aGlzIGRpcmVjdG9yeSBjb250YWlucyBmdXJ0
aGVyIG1vdW50cG9pbnRzICh3aGljaCBtZWFucyBpdAo+IHJlcXVpcmVzL3Nob3VsZCBkZWZhdWx0
IHRvIGFubm91bmNlLXN1Ym1vdW50cyBmb3IgdmlydGlvZnNkLCBhbmQKPiByZWN1cnNpdmUgYmlu
ZCBtb3VudGluZyBmb3IgTFhDKT8KSSBhZ3JlZSwgSSB0aGluayBpdCBpcyBiZXN0IHRvIHJlbW92
ZSB0aGlzIG9wdGlvbiBhbHRvZ2V0aGVyIGFuZCBhbHdheXMgc2V0IGl0Lgo+IAo+Pgo+PiBleGFt
cGxlIGNvbmZpZzoKPj4gYGBgCj4+IHNvbWUtZGlyLWlkCj4+IAltYXAgbm9kZT1ub2RlMSxwYXRo
PS9tbnQvc2hhcmUvLGFubm91bmNlLXN1Ym1vdW50cz0xCj4+IAltYXAgbm9kZT1ub2RlMixwYXRo
PS9tbnQvc2hhcmUvLAo+PiBgYGAKPj4KPj4gU2lnbmVkLW9mZi1ieTogTWFya3VzIEZyYW5rIDxt
LmZyYW5rQHByb3htb3guY29tPgo+PiAtLS0KPj4gdjE0Ogo+PiAqIGRpc2FsbG93IGNvbW1hcyBh
bmQgZXF1YWwgc2lnbnMgaW4gcGF0aCB1bnRpbCB0aGUgcGF0aCBjYW4gYmUgcXVvdGVkCj4+ICAg
aW4gcHJvcGVydHkgc3RyaW5ncwo+PiAqIGFkZHJlc3NlZCBzdHlsZSBuaXRzIGFuZCBpbXByb3Zl
ZCBmb3JtYXR0aW5nCj4+Cj4+ICAgc3JjL01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCj4+ICAg
c3JjL1BWRS9NYXBwaW5nL0Rpci5wbSB8IDE5NiArKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKwo+PiAgIDIgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMoKykKPj4g
ICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL1BWRS9NYXBwaW5nL0Rpci5wbQo+Pgo+PiBkaWZmIC0t
Z2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCj4+IGluZGV4IGNiYzQwYzEuLjAzMGU3
ZjcgMTAwNjQ0Cj4+IC0tLSBhL3NyYy9NYWtlZmlsZQo+PiArKysgYi9zcmMvTWFrZWZpbGUKPj4g
QEAgLTE1LDYgKzE1LDcgQEAgaW5zdGFsbDogUFZFCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUv
U3RvcmFnZVR1bm5lbC5wbSAke1BFUkw1RElSfS9QVkUvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQ
VkUvVHVubmVsLnBtICR7UEVSTDVESVJ9L1BWRS8KPj4gICAJaW5zdGFsbCAtZCAke1BFUkw1RElS
fS9QVkUvTWFwcGluZwo+PiArCWluc3RhbGwgLW0gMDY0NCBQVkUvTWFwcGluZy9EaXIucG0gJHtQ
RVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUvTWFwcGluZy9Q
Q0kucG0gJHtQRVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLW0gMDY0NCBQVkUv
TWFwcGluZy9VU0IucG0gJHtQRVJMNURJUn0vUFZFL01hcHBpbmcvCj4+ICAgCWluc3RhbGwgLWQg
JHtQRVJMNURJUn0vUFZFL1ZaRHVtcAo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9NYXBwaW5nL0Rp
ci5wbSBiL3NyYy9QVkUvTWFwcGluZy9EaXIucG0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4g
aW5kZXggMDAwMDAwMC4uNTgxZWMzOQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL3NyYy9QVkUv
TWFwcGluZy9EaXIucG0KPj4gQEAgLTAsMCArMSwxOTYgQEAKPj4gK3BhY2thZ2UgUFZFOjpNYXBw
aW5nOjpEaXI7Cj4+ICsKPj4gK3VzZSBzdHJpY3Q7Cj4+ICt1c2Ugd2FybmluZ3M7Cj4+ICsKPj4g
K3VzZSBQVkU6OkNsdXN0ZXIgcXcoY2ZzX3JlZ2lzdGVyX2ZpbGUgY2ZzX3JlYWRfZmlsZSBjZnNf
bG9ja19maWxlIGNmc193cml0ZV9maWxlKTsKPj4gK3VzZSBQVkU6OklOb3RpZnk7Cj4+ICt1c2Ug
UFZFOjpKU09OU2NoZW1hIHF3KGdldF9zdGFuZGFyZF9vcHRpb24gcGFyc2VfcHJvcGVydHlfc3Ry
aW5nKTsKPj4gK3VzZSBQVkU6OlNlY3Rpb25Db25maWc7Cj4+ICsKPj4gK3VzZSBiYXNlIHF3KFBW
RTo6U2VjdGlvbkNvbmZpZyk7Cj4+ICsKPj4gK215ICRGSUxFTkFNRSA9ICdtYXBwaW5nL2Rpci5j
ZmcnOwo+PiArCj4+ICtjZnNfcmVnaXN0ZXJfZmlsZSgkRklMRU5BTUUsCj4+ICsgICAgc3ViIHsg
X19QQUNLQUdFX18tPnBhcnNlX2NvbmZpZyhAXyk7IH0sCj4+ICsgICAgc3ViIHsgX19QQUNLQUdF
X18tPndyaXRlX2NvbmZpZyhAXyk7IH0pOwo+PiArCj4+ICsKPj4gKyMgc28gd2UgZG9uJ3QgaGF2
ZSB0byByZXBlYXQgdGhlIHR5cGUgZXZlcnkgdGltZQo+PiArc3ViIHBhcnNlX3NlY3Rpb25faGVh
ZGVyIHsKPj4gKyAgICBteSAoJGNsYXNzLCAkbGluZSkgPSBAXzsKPj4gKwo+PiArICAgIGlmICgk
bGluZSA9fiBtL14oXFMrKVxzKiQvKSB7Cj4+ICsJbXkgJGlkID0gJDE7Cj4+ICsJbXkgJGVycm1z
ZyA9IHVuZGVmOyAjIHNldCBpZiB5b3Ugd2FudCB0byBza2lwIHdob2xlIHNlY3Rpb24KPj4gKwll
dmFsIHsgUFZFOjpKU09OU2NoZW1hOjpwdmVfdmVyaWZ5X2NvbmZpZ2lkKCRpZCkgfTsKPj4gKwkk
ZXJybXNnID0gJEAgaWYgJEA7Cj4+ICsJbXkgJGNvbmZpZyA9IHt9OyAjIHRvIHJldHVybiBhZGRp
dGlvbmFsIGF0dHJpYnV0ZXMKPj4gKwlyZXR1cm4gKCdkaXInLCAkaWQsICRlcnJtc2csICRjb25m
aWcpOwo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gdW5kZWY7Cj4+ICt9Cj4+ICsKPj4gK3N1YiBm
b3JtYXRfc2VjdGlvbl9oZWFkZXIgewo+PiArICAgIG15ICgkY2xhc3MsICR0eXBlLCAkc2VjdGlv
bklkLCAkc2NmZywgJGRvbmVfaGFzaCkgPSBAXzsKPj4gKwo+PiArICAgIHJldHVybiAiJHNlY3Rp
b25JZFxuIjsKPj4gK30KPj4gKwo+PiArc3ViIHR5cGUgewo+PiArICAgIHJldHVybiAnZGlyJzsK
Pj4gK30KPj4gKwo+PiArIyB0ZW1wb3JhcnkgcGF0aCBmb3JtYXQgdGhhdCBhbHNvIGRpc2FsbG93
cyBjb21tYXMgYW5kIGVxdWFsIHNpZ25zCj4+ICsjIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gcHJv
cGVydHlfc3RyaW5nIHN1cHBvcnRzIHF1b3RhdGlvbiBvZiBwcm9wZXJ0aWVzCj4+ICtQVkU6OkpT
T05TY2hlbWE6OnJlZ2lzdGVyX2Zvcm1hdCgncHZlLXN0b3JhZ2UtcGF0aC1pbi1wcm9wZXJ0eS1z
dHJpbmcnLCBcJnZlcmlmeV9wYXRoKTsKPj4gK3N1YiB2ZXJpZnlfcGF0aCB7Cj4+ICsgICAgbXkg
KCRwYXRoLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBpZiAoJHBhdGggIX4gbXxeL1teOyw9
XChcKV0rfCkgewo+PiArCXJldHVybiB1bmRlZiBpZiAkbm9lcnI7Cj4+ICsJZGllICJWYWx1ZSBk
b2VzIG5vdCBsb29rIGxpa2UgYSB2YWxpZCBhYnNvbHV0ZSBwYXRoLiIKPj4gKwkgICAgLiIgVGhl
c2Ugc3ltYm9scyBhcmUgY3VycmVudGx5IG5vdCBhbGxvd2VkIGluIHBhdGg6IDssPSgpKVxuIjsK
PiAKPiBzdHJheSAnKScgaW4gdGhlIGVycm9yIG1lc3NhZ2UKPiAKPj4gKyAgICB9Cj4+ICsgICAg
cmV0dXJuICRwYXRoOwo+PiArfQo+PiArCj4+ICtteSAkbWFwX2ZtdCA9IHsKPj4gKyAgICBub2Rl
ID0+IGdldF9zdGFuZGFyZF9vcHRpb24oJ3B2ZS1ub2RlJyksCj4+ICsgICAgcGF0aCA9PiB7Cj4+
ICsJZGVzY3JpcHRpb24gPT4gIkFic29sdXRlIGRpcmVjdG9yeSBwYXRoIHRoYXQgc2hvdWxkIGJl
IHNoYXJlZCB3aXRoIHRoZSBndWVzdC4iLAo+PiArCXR5cGUgPT4gJ3N0cmluZycsCj4+ICsJZm9y
bWF0ID0+ICdwdmUtc3RvcmFnZS1wYXRoLWluLXByb3BlcnR5LXN0cmluZycsCj4+ICsgICAgfSwK
Pj4gKyAgICAnYW5ub3VuY2Utc3VibW91bnRzJyA9PiB7Cj4+ICsJdHlwZSA9PiAnYm9vbGVhbics
Cj4+ICsJZGVzY3JpcHRpb24gPT4gIkFubm91bmNlIHRoYXQgdGhlIGRpcmVjdG9yeSBjb250YWlu
cyBvdGhlciBtb3VudGVkIGZpbGUgc3lzdGVtcy4iCj4+ICsJICAgIC4iIElmIHRoaXMgaXMgbm90
IHNldCBhbmQgbXVsdGlwbGUgZmlsZSBzeXN0ZW1zIGFyZSBtb3VudGVkLCB0aGUgZ3Vlc3QgbWF5
Igo+PiArCSAgICAuIiBlbmNvdW50ZXIgZHVwbGljYXRlcyBkdWUgdG8gZmlsZSBzeXN0ZW0gc3Bl
Y2lmaWMgaW5vZGUgSURzLiIsCj4+ICsJb3B0aW9uYWwgPT4gMSwKPj4gKwlkZWZhdWx0ID0+IDEs
Cj4+ICsgICAgfSwKPj4gK307Cj4+ICsKPj4gK215ICRkZWZhdWx0RGF0YSA9IHsKPj4gKyAgICBw
cm9wZXJ0eUxpc3QgPT4gewo+PiArCWlkID0+IHsKPj4gKwkgICAgdHlwZSA9PiAnc3RyaW5nJywK
Pj4gKwkgICAgZGVzY3JpcHRpb24gPT4gIlRoZSBJRCBvZiB0aGUgZGlyZWN0b3J5IG1hcHBpbmci
LAo+PiArCSAgICBmb3JtYXQgPT4gJ3B2ZS1jb25maWdpZCcsCj4+ICsJfSwKPj4gKwlkZXNjcmlw
dGlvbiA9PiB7Cj4+ICsJICAgIHR5cGUgPT4gJ3N0cmluZycsCj4+ICsJICAgIGRlc2NyaXB0aW9u
ID0+ICJEZXNjcmlwdGlvbiBvZiB0aGUgZGlyZWN0b3J5IG1hcHBpbmciLAo+PiArCSAgICBvcHRp
b25hbCA9PiAxLAo+PiArCSAgICBtYXhMZW5ndGggPT4gNDA5NiwKPj4gKwl9LAo+PiArCW1hcCA9
PiB7Cj4+ICsJICAgIHR5cGUgPT4gJ2FycmF5JywKPj4gKwkgICAgZGVzY3JpcHRpb24gPT4gJ0Eg
bGlzdCBvZiBtYXBzIGZvciB0aGUgY2x1c3RlciBub2Rlcy4nLAo+PiArCSAgICBvcHRpb25hbCA9
PiAxLAo+PiArCSAgICBpdGVtcyA9PiB7Cj4+ICsJCXR5cGUgPT4gJ3N0cmluZycsCj4+ICsJCWZv
cm1hdCA9PiAkbWFwX2ZtdCwKPj4gKwkgICAgfSwKPj4gKwl9LAo+PiArICAgIH0sCj4+ICt9Owo+
PiArCj4+ICtzdWIgcHJpdmF0ZSB7Cj4+ICsgICAgcmV0dXJuICRkZWZhdWx0RGF0YTsKPj4gK30K
Pj4gKwo+PiArc3ViIG9wdGlvbnMgewo+PiArICAgIHJldHVybiB7Cj4+ICsJZGVzY3JpcHRpb24g
PT4geyBvcHRpb25hbCA9PiAxIH0sCj4+ICsJbWFwID0+IHt9LAo+PiArICAgIH07Cj4+ICt9Cj4+
ICsKPj4gK3N1YiBhc3NlcnRfdmFsaWQgewo+IAo+IHRoaXMgaXMgY2FsbGVkIGJlbG93IGluIGFz
c2VydF92YWxpZF9tYXBfbGlzdCB3aXRob3V0IGZpbHRlcmluZyBlbnRyaWVzCj4gc28gdGhhdCBq
dXN0IHRob3NlIGZvciB0aGUgY3VycmVudCBub2RlIGFyZSBjb25zaWRlcmVkLi4KPiAKPj4gKyAg
ICBteSAoJGRpcl9jZmcpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcGF0aCA9ICRkaXJfY2ZnLT57
cGF0aH07Cj4+ICsKPj4gKyAgICB2ZXJpZnlfcGF0aCgkcGF0aCk7Cj4+ICsKPj4gKyAgICBpZiAo
ISAtZSAkcGF0aCkgewo+PiArCWRpZSAiUGF0aCAkcGF0aCBkb2VzIG5vdCBleGlzdFxuIjsKPj4g
KyAgICB9IGVsc2lmICghIC1kICRwYXRoKSB7Cj4+ICsJZGllICJQYXRoICRwYXRoIGV4aXN0cywg
YnV0IGlzIG5vdCBhIGRpcmVjdG9yeVxuIjsKPj4gKyAgICB9Cj4gCj4gc28gdGhlc2UgY2hlY2tz
IGRvbid0IG1ha2Ugc2Vuc2UuLiBpZiB0aGUgZGlyZWN0b3J5IGhhcyB0byBleGlzdCBvbiBhbGwK
PiBub2RlcywgdGhlbiB0aGUgcGVyLW5vZGUgbWFwcGluZ3MgY291bGQganVzdCBiZSBkcm9wcGVk
IGVudGlyZWx5IDspCj4gCj4+ICsKPj4gKyAgICByZXR1cm4gMTsKPj4gK307Cj4+ICsKPj4gK3N1
YiBhc3NlcnRfdmFsaWRfbWFwX2xpc3Qgewo+PiArICAgIG15ICgkbWFwX2xpc3QpID0gQF87Cj4+
ICsKPj4gKyAgICBteSAlY291bnQ7Cj4+ICsgICAgZm9yIG15ICRtYXAgKEAkbWFwX2xpc3QpIHsK
Pj4gKwlteSAkZW50cnkgPSBwYXJzZV9wcm9wZXJ0eV9zdHJpbmcoJG1hcF9mbXQsICRtYXApOwo+
PiArCWFzc2VydF92YWxpZCgkZW50cnkpOwo+PiArCSRjb3VudHskZW50cnktPntub2RlfX0rKzsK
Pj4gKyAgICB9Cj4+ICsgICAgZm9yIG15ICRub2RlIChrZXlzICVjb3VudCkgewo+PiArCWlmICgk
Y291bnR7JG5vZGV9ID4gMSkgewo+PiArCSAgICBkaWUgIk5vZGUgJyRub2RlJyBpcyBzcGVjaWZp
ZWQgJGNvdW50eyRub2RlfSB0aW1lcy5cbiI7Cj4+ICsJfQo+PiArICAgIH0KPj4gK30KPj4gKwo+
PiArc3ViIGNvbmZpZyB7Cj4+ICsgICAgcmV0dXJuIGNmc19yZWFkX2ZpbGUoJEZJTEVOQU1FKTsK
Pj4gK30KPj4gKwo+PiArc3ViIGxvY2tfZGlyX2NvbmZpZyB7Cj4+ICsgICAgbXkgKCRjb2RlLCAk
ZXJybXNnKSA9IEBfOwo+PiArCj4+ICsgICAgY2ZzX2xvY2tfZmlsZSgkRklMRU5BTUUsIHVuZGVm
LCAkY29kZSk7Cj4+ICsgICAgaWYgKG15ICRlcnIgPSAkQCkgewo+PiArCSRlcnJtc2cgPyBkaWUg
IiRlcnJtc2c6ICRlcnIiIDogZGllICRlcnI7Cj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICtzdWIg
d3JpdGVfZGlyX2NvbmZpZyB7Cj4+ICsgICAgbXkgKCRjZmcpID0gQF87Cj4+ICsKPj4gKyAgICBj
ZnNfd3JpdGVfZmlsZSgkRklMRU5BTUUsICRjZmcpOwo+PiArfQo+PiArCj4+ICtzdWIgZmluZF9v
bl9jdXJyZW50X25vZGUgewo+PiArICAgIG15ICgkaWQpID0gQF87Cj4+ICsKPj4gKyAgICBteSAk
Y2ZnID0gY29uZmlnKCk7Cj4+ICsgICAgbXkgJG5vZGUgPSBQVkU6OklOb3RpZnk6Om5vZGVuYW1l
KCk7Cj4+ICsKPj4gKyAgICBteSAkbm9kZV9tYXBwaW5nID0gZ2V0X25vZGVfbWFwcGluZygkY2Zn
LCAkaWQsICRub2RlKTsKPj4gKyAgICBpZiAoQHskbm9kZV9tYXBwaW5nfSA+IDEpIHsKPj4gKwlk
aWUgIk1vcmUgdGhhbiB0aGFuIG9uZSBkaXJlY3RvcnkgbWFwcGluZyBmb3Igbm9kZSAkbm9kZS5c
biI7Cj4+ICsgICAgfQo+PiArICAgIHJldHVybiAkbm9kZV9tYXBwaW5nLT5bMF07Cj4+ICt9Cj4+
ICsKPj4gK3N1YiBnZXRfbm9kZV9tYXBwaW5nIHsKPj4gKyAgICBteSAoJGNmZywgJGlkLCAkbm9k
ZW5hbWUpID0gQF87Cj4+ICsKPj4gKyAgICByZXR1cm4gdW5kZWYgaWYgIWRlZmluZWQoJGNmZy0+
e2lkc30tPnskaWR9KTsKPj4gKwo+PiArICAgIG15ICRyZXMgPSBbXTsKPj4gKyAgICBteSAkbWFw
cGluZ19saXN0ID0gJGNmZy0+e2lkc30tPnskaWR9LT57bWFwfTsKPj4gKyAgICBmb3IgbXkgJG1h
cCAoQHskbWFwcGluZ19saXN0fSkgewo+PiArCW15ICRlbnRyeSA9IGV2YWwgeyBwYXJzZV9wcm9w
ZXJ0eV9zdHJpbmcoJG1hcF9mbXQsICRtYXApIH07Cj4+ICsJd2FybiAkQCBpZiAkQDsKPj4gKwlp
ZiAoJGVudHJ5ICYmICRlbnRyeS0+e25vZGV9IGVxICRub2RlbmFtZSkgewo+PiArCSAgICBwdXNo
ICRyZXMtPkAqLCAkZW50cnk7Cj4+ICsJfQo+PiArICAgIH0KPj4gKyAgICByZXR1cm4gJHJlczsK
Pj4gK30KPj4gKwo+PiArUFZFOjpNYXBwaW5nOjpEaXItPnJlZ2lzdGVyKCk7Cj4+ICtQVkU6Ok1h
cHBpbmc6OkRpci0+aW5pdCgpOwo+PiArCj4+ICsxOwo+PiAtLSAKPj4gMi4zOS41Cj4+Cj4+Cj4+
Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IHB2
ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+IGh0
dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZl
bAo+Pgo+Pgo+Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbQo+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3Rp
bmZvL3B2ZS1kZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m
by9wdmUtZGV2ZWwK