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 [212.224.123.68])
	by lore.proxmox.com (Postfix) with ESMTPS id 4F6351FF17C
	for <inbox@lore.proxmox.com>; Wed,  2 Apr 2025 18:32:02 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 015A61F435;
	Wed,  2 Apr 2025 18:31:47 +0200 (CEST)
Mime-Version: 1.0
Date: Wed, 02 Apr 2025 18:31:42 +0200
Message-Id: <D8WAOY6HIZYT.15MN08DDZ05RL@proxmox.com>
To: "Proxmox VE development discussion" <pve-devel@lists.proxmox.com>
From: "Max Carrara" <m.carrara@proxmox.com>
X-Mailer: aerc 0.18.2-0-ge037c095a049
References: <20250326142059.261938-1-m.carrara@proxmox.com>
 <20250326142059.261938-4-m.carrara@proxmox.com>
 <1743423551.a0519q1x3m.astroid@yuna.none>
In-Reply-To: <1743423551.a0519q1x3m.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.323 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
Subject: Re: [pve-devel] [PATCH v1 pve-storage 3/8] pluginbase: document
 SectionConfig methods
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-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEzIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg
d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g
PiBUaGlzIGNvbW1pdCBhZGRzIGRvY3N0cmluZ3MgZm9yIHRoZSByZWxldmFudCBQVkU6OlNlY3Rp
b25Db25maWcKPiA+IG1ldGhvZHMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIHN0b3JhZ2UgcGx1Z2lu
IEFQSS4KPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94
bW94LmNvbT4KPiA+IC0tLQo+ID4gIHNyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNlLnBtIHwgMTk0
ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiA+ICAxIGZpbGUgY2hhbmdlZCwg
MTkyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9z
cmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl
LnBtCj4gPiBpbmRleCAxNjk3N2YzLi41ZjdlNmZkIDEwMDY0NAo+ID4gLS0tIGEvc3JjL1BWRS9T
dG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW5CYXNl
LnBtCj4gPiBAQCAtODgsNyArODgsNyBAQCBwYWNrYWdlIFBWRTo6U3RvcmFnZTo6UGx1Z2luQmFz
ZTsKPiA+ICB1c2Ugc3RyaWN0Owo+ID4gIHVzZSB3YXJuaW5nczsKPiA+ICAKPiA+IC11c2UgQ2Fy
cCBxdyhjcm9hayk7Cj4gPiArdXNlIENhcnAgcXcoY3JvYWsgY29uZmVzcyk7Cj4gPiAgCj4gPiAg
dXNlIHBhcmVudCBxdyhQVkU6OlNlY3Rpb25Db25maWcpOwo+ID4gIAo+ID4gQEAgLTEwMCwyNyAr
MTAwLDIxNyBAQCB1c2UgcGFyZW50IHF3KFBWRTo6U2VjdGlvbkNvbmZpZyk7Cj4gPiAgCj4gPiAg
PWN1dAo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT50eXBlKCkKPiA+ICsKPiA+ICtCPFJFUVVJ
UkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KClVwZnJv
bnQgbm90ZTogVW5sZXNzIEkgb3RoZXJ3aXNlIGNvbW1lbnQgc29tZXRoaW5nLCBJIGFncmVlIHdp
dGggeW91LgpKdXN0IHNwYXJpbmcgbXlzZWxmIGZyb20gd3JpdGluZyBhbmQgeW91IGZyb20gcmVh
ZGluZyB0b28gbWFueSBBQ0tzIDpQCgo+Cj4gSSBhbSBub3Qgc3VyZSB3aGV0aGVyIHdlIHNob3Vs
ZCBkbwo+Cj4gcy9pbXBsZW1lbnRlZCBpbi9pbXBsZW1lbnRlZCBieQo+Cj4gZm9yIHRoaXMgd2hv
bGUgdGhpbmcgYW5kIFNlY3Rpb25Db25maWcsIGJ1dCBJIHdvbid0IG5vdGUgaXQgZm9yIGV2ZXJ5
Cj4gaW5zdGFuY2UgOykKPgo+ID4gKwo+ID4gK1RoaXMgc2hvdWxkIHJldHVybiBhIHN0cmluZyB3
aXRoIHdoaWNoIHRoZSBwbHVnaW4gY2FuIGJlIHVuaXF1ZWx5IGlkZW50aWZpZWQuCj4KPiBhIHN0
cmluZyB3aGljaCB1bmlxdWVseSBpZGVudGlmaWVzIHRoZSBwbHVnaW4uCj4KPiA+ICtBbnkgc3Ry
aW5nIGlzIGFjY2VwdGFibGUsIGFzIGxvbmcgYXMgaXQncyBkZXNjcmlwdGl2ZSBhbmQgeW91J3Jl
IHN1cmUgaXQgd29uJ3QKPiA+ICtjb25mbGljdCB3aXRoIGFub3RoZXIgcGx1Z2luLiBJbiB0aGUg
Y2FzZXMgb2YgYnVpbHQtaW4gcGx1Z2lucywgeW91IHdpbGwgb2Z0ZW4KPiA+ICtmaW5kIHRoZSBm
aWxlc3lzdGVtIG5hbWUgb3Igc29tZXRoaW5nIHNpbWlsYXIgYmVpbmcgdXNlZC4KPgo+IEknZCBy
ZXBsYWNlIHRoYXQgd2l0aCBzb21ldGhpbmcgbGlrZToKPgo+IENvbW1vbmx5LCB0aGUgbmFtZSBv
ZiB0aGUgc3RvcmFnZSB0ZWNobm9sb2d5IG9yIGZpbGVzeXN0ZW0gc3VwcG9ydGVkIGJ5Cj4gdGhl
IHBsdWdpbiBpcyB1c2VkLiBJZiBpdCBpcyBuZWNlc3NhcnkgdG8gZGlmZmVyZW50aWF0ZSBtdWx0
aXBsZQo+IHBsdWdpbnMgZm9yIHRoZSBzYW1lIHN0b3JhZ2UgdGVjaG5vbG9neS9maWxlc3lzdGVt
LCBhZGQgYSBzdWZmaXgKPiBkZW5vdGluZyB0aGUgc3VwcG9ydGVkIHZhcmlhbnQgb3IgZmVhdHVy
ZSBzZXQuCj4KPiA+ICsKPiA+ICtTZWUgQzxMPFBWRTo6U2VjdGlvbkNvbmZpZy90eXBlPj4gZm9y
IG1vcmUgaW5mb3JtYXRpb24uCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiB0eXBlIHsK
PiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4g
IAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5wcm9wZXJ0aWVzKCkKPiA+ICsKPiA+ICtCPE9QVElPTkFM
Oj4gTWF5IGJlIGltcGxlbWVudGVkIGluIGEgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhp
cyBtZXRob2Qgc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIHRoZXJlIGFyZSBhZGRpdGlvbmFsIHBy
b3BlcnRpZXMgdG8gYmUgdXNlZAo+ID4gK2J5IHlvdXIgcGx1Z2luLiBTaW5jZSBwcm9wZXJ0aWVz
IGFyZSBnbG9iYWwgYW5kIG1heSBiZSByZXVzZWQgYWNyb3NzIHBsdWdpbnMsCj4KPiBzL3VzZWQv
cmVnaXN0ZXJlZAo+Cj4gSU1ITyB0aGF0IGNvbnZleXMgYmV0dGVyIHdoYXQgdGhlIGRpZmZlcmVu
Y2UgYmV0d2VlbiBwcm9wZXJ0aWVzIGFuZAo+IG9wdGlvbnMgYXJlLi4KPgo+ICJnbG9iYWwgYW5k
IG1heSBiZSByZXVzZWQgYWNyb3NzIHBsdWdpbnMiIGlzIGtpbmRhIHN1cGVyZmx1b3VzLCBtYXli
ZQo+Cj4gIlNpbmNlIHByb3BlcnRpZXMgc2hhcmUgYSBnbG9iYWwgbmFtZXNwYWNlIGFjcm9zcyBh
bGwgcGx1Z2lucyI/Cj4KPiA+ICt0aGUgbmFtZXMgb2YgcHJvcGVydGllcyBtdXN0IG5vdCBjb2xs
aWRlIHdpdGggb25lIGFub3RoZXIuCj4KPiBlYWNoIHByb3BlcnR5IGNhbiBvbmx5IGJlIHJlZ2lz
dGVyZWQgb25jZSBieSBhIHNpbmdsZSBwbHVnaW4sIGJ1dCB1c2VkCj4gYXMgYW4gb3B0aW9uIGJ5
IG1hbnkuCj4KPiA+ICsKPiA+ICtXaGVuIGltcGxlbWVudGluZyBhIHRoaXJkLXBhcnR5IHBsdWdp
biwgaXQgaXMgcmVjb21tZW5kZWQgdG8gcHJlZml4IHByb3BlcnRpZXMKPiA+ICt3aXRoIHNvbWUg
a2luZCBvZiBpZGVudGlmaWVyLCBsaWtlIHNvOgo+Cj4gVGhpcmQtcGFydHkgcGx1Z2lucyBzaG91
bGQgdGhlcmVmb3JlIHByZWZpeCBhbnkgcHJvcGVydGllcyB0aGV5IHJlZ2lzdGVyCj4gd2l0aCB0
aGVpciBwbHVnaW4gdHlwZSwgZm9yIGV4YW1wbGU6Cj4KPiA+ICsKPiA+ICsgICAgc3ViIHByb3Bl
cnRpZXMgewo+ID4gKwlyZXR1cm4gewo+ID4gKwkgICAgJ2V4YW1wbGUtc3RvcmFnZS1hZGRyZXNz
JyA9PiB7Cj4gPiArCQlkZXNjcmlwdGlvbiA9PiAnSG9zdCBhZGRyZXNzIG9mIHRoZSBFeGFtcGxl
U3RvcmFnZSB0byBjb25uZWN0IHRvLicsCj4gPiArCQl0eXBlID0+ICdzdHJpbmcnLAo+ID4gKwkg
ICAgfSwKPiA+ICsJICAgICdleGFtcGxlLXN0b3JhZ2UtcG9vbCcgPT4gewo+ID4gKwkJZGVzY3Jp
cHRpb24gPT4gJ05hbWUgb2YgdGhlIEV4YW1wbGVTdG9yYWdlIHBvb2wgdG8gdXNlLicsCj4gPiAr
CQl0eXBlID0+ICdzdHJpbmcnLAo+ID4gKwkgICAgfSwKPiA+ICsJICAgICMgWy4uLl0KPiA+ICsJ
fTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gK0hvd2V2ZXIsIGl0IGlzIGVuY291cmFnZWQgdG8gcmV1
c2UgcHJvcGVydGllcyBvZiBpbmJ1aWx0IHBsdWdpbnMgd2hlbmV2ZXIKPiA+ICtwb3NzaWJsZS4g
VGhlcmUgYXJlIGEgZmV3IHByb3ZpZGVkIHByb3BlcnRpZXMgdGhhdCBhcmUgcmVnYXJkZWQgYXMg
STxzZW5zaXRpdmU+Cj4gPiArYW5kIHdpbGwgYmUgdHJlYXRlZCBkaWZmZXJlbnRseSBpbiBvcmRl
ciB0byBub3QgZXhwb3NlIHRoZW0gb3Igd3JpdGUgdGhlbSBhcwo+ID4gK3BsYWluIHRleHQgaW50
byBjb25maWd1cmF0aW9uIGZpbGVzLiBPbmUgc3VjaCBwcm9wZXJ0eSBmaXQgZm9yIGV4dGVybmFs
IHVzZSBpcwo+ID4gK0M8cGFzc3dvcmQ+LCB3aGljaCB5b3UgY2FuIHVzZSB0byBwcm92aWRlIGEg
cGFzc3dvcmQsIEFQSSBzZWNyZXQsIG9yIHNpbWlsYXIuCj4KPiBJZiBwb3NzaWJsZSwgZ2VuZXJp
YyBwcm9wZXJ0aWVzIHJlZ2lzdGVyZWQgYnkgYnVpbHQtaW4gcGx1Z2lucyBzaG91bGQgYmUKPiBy
ZXVzZWQuCj4KPiAoaW5idWlsdCBpcyBhIHZlcnkgd2VpcmQsIHZlcnkgQnJpdGlzaCB3b3JkIDsp
KQo+Cj4gdGhlIHJlc3Qgb2YgdGhhdCBpcyBraW5kYSBtaXNwbGFjZWQgaGVyZSBhbmQgc2hvdWxk
IGJlIGl0cyBvd24gc2VjdGlvbgo+IHNvbWV3aGVyZSAoaXQgYWZmZWN0cyBvcHRpb25zIGp1c3Qg
YXMgbXVjaCBhcyBwcm9wZXJ0aWVzKS4gd2Ugc2hvdWxkCj4gcHJvYmFibHkgYWxsb3cgcmVnaXN0
ZXJpbmcgc2Vuc2l0aXZlIHByb3BlcnRpZXMgZm9yIHBsdWdpbnM/CgpZZXMsIHdlIHNob3VsZCEg
QW5kIEZpb25hJ3MgYWxyZWFkeSBvbiBpdCDwn46JIFswXQoKWzBdOiBodHRwczovL2xvcmUucHJv
eG1veC5jb20vcHZlLWRldmVsLzIwMjUwMzIxMTM0ODUyLjEwMzg3MS0xMS1mLmVibmVyQHByb3ht
b3guY29tLwoKPgo+ID4gKwo+ID4gK1NlZSBDPEw8UFZFOjpTZWN0aW9uQ29uZmlnL3Byb3BlcnRp
ZXM+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3Vi
IHByb3BlcnRpZXMgewo+ID4gICAgICBteSAoJGNsYXNzKSA9IEBfOwo+ID4gICAgICByZXR1cm4g
JGNsYXNzLT5TVVBFUjo6cHJvcGVydGllcygpOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBs
dWdpbi0+b3B0aW9ucygpCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50
ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhpcyBtZXRob2QgcmV0dXJu
cyBhIGhhc2ggb2YgdGhlIHByb3BlcnRpZXMgdXNlZCBieSB0aGUgcGx1Z2luLiBCZWNhdXNlCj4g
PiArcHJvcGVydGllcyBhcmUgc2hhcmVkIGFtb25nIHBsdWdpbnMsIGl0IGlzIHJlY29tbWVuZGVk
IHRvIHJldXNlIGFueSBleGlzdGluZwo+ID4gK29uZXMgb2YgaW5idWlsdCBwbHVnaW5zIGFuZCBv
bmx5IGRlZmluZSBjdXN0b20gcHJvcGVydGllcyB2aWEKPiA+ICtDPEw8PCBwcm9wZXJ0aWVzKCl8
LyIkcGx1Z2luLT5wcm9wZXJ0aWVzKCkiID4+PiBpZiBuZWNlc3NhcnkuCj4KPiBFdmVyeXRoaW5n
IGJ1dCB0aGUgZmlyc3Qgc2VudGVuY2UgY2FuIGJlIGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0
aWVzCj4gcGFydCBhYm92ZS4uCj4KPiA+ICsKPiA+ICtUaGUgcHJvcGVydGllcyBhIHBsdWdpbiB1
c2VzIGFyZSB0aGVuIGRlY2xhcmVkIGFzIGZvbGxvd3M6Cj4KPiBvciBqdXN0LCAiRm9yIGV4YW1w
bGU6IiA/IDspCj4KPiA+ICsKPiA+ICsgICAgc3ViIG9wdGlvbnMgewo+ID4gKwlyZXR1cm4gewo+
ID4gKwkgICAgbm9kZXMgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gPiArCSAgICBjb250ZW50ID0+
IHsgb3B0aW9uYWwgPT4gMSB9LAo+ID4gKwkgICAgZGlzYWJsZSA9PiB7IG9wdGlvbmFsID0+IDEg
fSwKPiA+ICsJICAgICdleGFtcGxlLXN0b3JhZ2UtcG9vbCcgPT4geyBmaXhlZCA9PiAxIH0sCj4g
PiArCSAgICAnZXhhbXBsZS1zdG9yYWdlLWFkZHJlc3MnID0+IHsgZml4ZWQgPT4gMSB9LAo+ID4g
KwkgICAgcGFzc3dvcmQgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gPiArCX07Cj4gPiArICAgIH0K
PiA+ICsKPiA+ICtDPG9wdGlvbmFsPiBwcm9wZXJ0aWVzIGFyZSBub3QgcmVxdWlyZWQgdG8gYmUg
c2V0LiBJdCBpcyByZWNvbW1lbmRlZCB0byBzZXQKPgo+IHMvc2V0L21ha2Ugb3IgImRlY2xhcmUi
Pwo+Cj4gPiArbW9zdCBwcm9wZXJ0aWVzIG9wdGlvbmFsIGJ5IGRlZmF1bHQsIHVubGVzcyBpdCBJ
PHJlYWxseT4gaXMgcmVxdWlyZWQgdG8gYWx3YXlzCj4gPiArZXhpc3QuCj4KPiBzL2l0L3RoZXkK
PiBzL2V4aXN0L2JlIHNldAo+Cj4gPiArCj4gPiArQzxmaXhlZD4gcHJvcGVydGllcyBjYW4gb25s
eSBiZSBzZXQgd2hlbiBjcmVhdGluZyBhIG5ldyBzdG9yYWdlIHZpYSB0aGUgcGx1Z2luCj4gPiAr
YW5kIGNhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyd2FyZHMuCj4KPiBzL2NyZWF0aW5nIGEgbmV3IHN0
b3JhZ2UvYWRkaW5nIGEgbmV3IHN0b3JhZ2UgY29uZmlnIGVudHJ5LyA/IGEgYml0IG1vcmUKPiBw
cmVjaXNlIHRvIGRpZmZlcmVudGlhdGUgaXQgZnJvbSBhY3R1YWxseSAiY3JlYXRpbmcgYSBzdG9y
YWdlIiBhcyBpbgo+IGZvcm1hdHRpbmcgYSBkaXNrLy4uCj4KPiBJIGFtIG5vdCBzdXJlIHdoYXQg
InZpYSB0aGUgcGx1Z2luIiBpcyBzdXBwb3NlZCB0byBtZWFuIHRoZXJlLCBJIHRoaW5rCj4gaXQg
Y2FuIGp1c3QgYmUgZHJvcHBlZC4KPgo+ID4gKwo+ID4gK1NlZSBDPEw8UFZFOjpTZWN0aW9uQ29u
ZmlnL29wdGlvbnM+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiAr
Cj4gPiAgc3ViIG9wdGlvbnMgewo+ID4gICAgICBteSAoJGNsYXNzKSA9IEBfOwo+ID4gICAgICBy
ZXR1cm4gJGNsYXNzLT5TVVBFUjo6b3B0aW9ucygpOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMg
JHBsdWdpbi0+cGx1Z2luZGF0YSgpCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1w
bGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArVGhpcyBtZXRob2Qg
cmV0dXJucyBhIGhhc2ggdGhhdCBzcGVjaWZpZXMgYWRkaXRpb25hbCBjYXBhYmlsaXRpZXMgb2Yg
dGhlIHN0b3JhZ2UKPiA+ICtwbHVnaW4sIHN1Y2ggYXMgd2hhdCBraW5kcyBvZiBkYXRhIG1heSBi
ZSBzdG9yZWQgb24gaXQgb3Igd2hhdCBWTSBkaXNrIGZvcm1hdHMKPgo+IHMvZGF0YS9jb250ZW50
IG9yIHMvZGF0YS92b2x1bWVzCj4KPiA+ICt0aGUgc3RvcmFnZSBzdXBwb3J0cy4gQWRkaXRpb25h
bGx5LCBkZWZhdWx0cyBtYXkgYWxzbyBiZSBzZXQuIFRoaXMgaXMgZG9uZQo+ID4gK3Rocm91Z2gg
dGhlIEM8Y29udGVudD4gYW5kIEM8Zm9ybWF0PiBrZXlzLgo+Cj4gYnV0IGhvdyBhYm91dCByZS1v
cmdhbml6aW5nIGl0IGEgYml0Pwo+Cj4gVGhpcyBtZXRob2QgcmV0dXJucyBhIGhhc2ggZGVjbGFy
aW5nIHdoaWNoIGNvbnRlbnQgdHlwZXMgYW5kIGltYWdlCj4gZm9ybWF0cyB0aGlzIHBsdWdpbiAo
b3IgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSkgc3VwcG9ydHMuCj4KPiBhbmQgdGhlbiBkZXNjcmli
ZSBlYWNoIGtleT8KPgo+ID4gKwo+ID4gK1RoZSBDPGNvbnRlbnQ+IGtleSBpcyB1c2VkIHRvIGRl
Y2xhcmUgQjxzdXBwb3J0ZWQgY29udGVudCB0eXBlcz4gYW5kIHRoZWlyCj4gPiArZGVmYXVsdHMs
IHdoaWxlIHRoZSBDPGZvcm1hdD4ga2V5IGRlY2xhcmVzIEI8c3VwcG9ydGVkIGRpc2sgZm9ybWF0
cz4gYW5kIHRoZQo+ID4gK2RlZmF1bHQgZGlzayBmb3JtYXQgb2YgdGhlIHN0b3JhZ2U6Cj4KPiAi
YW5kIHRoZWlyIGRlZmF1bHRzIiBzb3VuZHMgd2VpcmQuCj4KPiBUaGUgJ2NvbnRlbnQnIGtleSBz
dG9yZXMgYSBsaXN0IGNvbnRhaW5pbmcgdHdvIGhhc2hlcy4gVGhlIGZpcnN0IGxpc3QKPiBlbGVt
ZW50IGlzIGEgaGFzaCBkZWNsYXJpbmcgd2hpY2ggY29udGVudCB0eXBlcyBhcmUgc3VwcG9ydGVk
IGJ5IHRoZQo+IHBsdWdpbi4gVGhlIHNlY29uZCBsaXN0IGVsZW1lbnQgaXMgYSBoYXNoIGRlY2xh
cmluZyB3aGljaCBjb250ZW50IHR5cGVzCj4gYXJlIHVzZWQgYnkgZGVmYXVsdCBpZiBubyBleHBs
aWNpdCAnY29udGVudCcgb3B0aW9uIGlzIHNldCBvbiBhIHBsdWdpbgo+IGluc3RhbmNlLgo+Cj4g
YW5kIG1heWJlIGxpbmsgc29tZXdoZXJlIGVsc2UgZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlIGNv
bnRlbnQgdHlwZQo+IHZhbHVlcywgc28gdGhhdCB0aGVyZSBpcyBhIHNpbmdsZSBwbGFjZSB0aGF0
IHZhcmlvdXMgcGFydHMgdGhhdCBuZWVkIGl0Cj4gY2FuIGxpbmsgdG8/Cj4KPiBhbmQgdGhlbgo+
Cj4gVGhlICdmb3JtYXQnIGtleSBzdG9yZXMgYSBsaXN0IGNvbnRhaW5pbmcgdHdvIGhhc2hlcy4g
VGhlIGZpcnN0IGxpc3QKPiBlbGVtZW50IGlzIGEgaGFzaCBkZWNsYXJpbmcgd2hpY2ggaW1hZ2Ug
Zm9ybWF0cyBhcmUgc3VwcG9ydGVkIGJ5IHRoZQo+IHN0b3JhZ2UgcGx1Z2luLiBUaGUgc2Vjb25k
IGxpc3QgZWxlbWVudCBpcyB0aGUgZGVmYXVsdCBpbWFnZSBmb3JtYXQgdGhhdAo+IHNob3VsZCBi
ZSB1c2VkIGZvciBpbWFnZXMgb24gdGhlIHN0b3JhZ2UgaWYgbm9uIGlzIGV4cGxpY2l0bHkgcHJv
dmlkZWQuCj4KPiA+ICsKPiA+ICsgICAgc3ViIHBsdWdpbmRhdGEgewo+ID4gKwlyZXR1cm4gewo+
ID4gKwkgICAgY29udGVudCA9PiBbCj4gPiArCQkjIHBvc3NpYmxlIGNvbnRlbnQgdHlwZXMKPiA+
ICsJCXsKPiA+ICsJCSAgICBpbWFnZXMgPT4gMSwgICAjIGRpc2sgaW1hZ2VzCj4gPiArCQkgICAg
cm9vdGRpciA9PiAxLCAgIyBjb250YWluZXIgcm9vdCBkaXJlY3Rvcmllcwo+ID4gKwkJICAgIHZ6
dG1wbCA9PiAxLCAgICMgY29udGFpbmVyIHRlbXBsYXRlcwo+ID4gKwkJICAgIGlzbyA9PiAxLCAg
ICAgICMgaXNvIGltYWdlcwo+ID4gKwkJICAgIGJhY2t1cCA9PiAxLCAgICMgdnpkdW1wIGJhY2t1
cCBmaWxlcwo+ID4gKwkJICAgIHNuaXBwZXRzID0+IDEsICMgc25pcHBldHMKPiA+ICsJCSAgICBp
bXBvcnQgPT4gMSwgICAjIGltcG9ydHM7IHNlZSBleHBsYW5hdGlvbiBiZWxvdwo+ID4gKwkJICAg
IG5vbmUgPT4gMSwgICAgICMgbm8gY29udGVudDsgc2VlIGV4cGxhbmF0aW9uIGJlbG93Cj4gPiAr
CQl9LAo+ID4gKwkJIyBkZWZhdWx0cyBpZiAnY29udGVudCcgaXNuJ3QgZXhwbGljaXRseSBzZXQK
PiA+ICsJCXsKPiA+ICsJCSAgICBpbWFnZXMgPT4gMSwgICAjIHN0b3JlIGRpc2sgaW1hZ2VzIGJ5
IGRlZmF1bHQKPiA+ICsJCSAgICByb290ZGlyID0+IDEgICAjIHN0b3JlIGNvbnRhaW5lcnMgYnkg
ZGVmYXVsdAo+ID4gKwkJICAgICMgcG9zc2libGUgdG8gYWRkIG1vcmUgb3IgaGF2ZSBubyBkZWZh
dWx0cwo+ID4gKwkJfQo+ID4gKwkgICAgXSwKPiA+ICsJICAgIGZvcm1hdCA9PiBbCj4gPiArCQkj
IHBvc3NpYmxlIGRpc2sgZm9ybWF0cwo+ID4gKwkJewo+ID4gKwkJICAgIHJhdyA9PiAxLCAgICMg
cmF3IGRpc2sgaW1hZ2UKPiA+ICsJCSAgICBxY293MiA9PiAxLCAjIFFFTVUgaW1hZ2UgZm9ybWF0
Cj4gPiArCQkgICAgdm1kayA9PiAxLCAgIyBWTXdhcmUgaW1hZ2UgZm9ybWF0Cj4gPiArCQkgICAg
c3Vidm9sID0+IDEgIyBzdWJ2b2x1bWVzOyBzZWUgZXhwbGFuYXRpb24gYmVsb3cKPiA+ICsJCX0s
Cj4gPiArCQkicWNvdzIiICMgZGVmYXVsdCBpZiAnZm9ybWF0JyBpc24ndCBleHBsaWNpdGx5IHNl
dAo+ID4gKwkgICAgXQo+ID4gKwkgICAgIyBbLi4uXQo+ID4gKwl9Owo+ID4gKyAgICB9Cj4gPiAr
Cj4gPiArV2hpbGUgdGhlIGV4YW1wbGUgYWJvdmUgZGVwaWN0cyBhIHJhdGhlciBjYXBhYmxlIHN0
b3JhZ2UsIHRoZSBmb2xsb3dpbmcKPiA+ICtzaG93cyBhIHNpbXBsZXIgc3RvcmFnZSB0aGF0IGNh
biBvbmx5IGJlIHVzZWQgZm9yIFZNIGRpc2tzOgo+Cj4gcmF3LWZvcm1hdHRlZCBWTSBkaXNrcwo+
Cj4gPiArCj4gPiArICAgIHN1YiBwbHVnaW5kYXRhIHsKPiA+ICsJcmV0dXJuIHsKPiA+ICsJICAg
IGNvbnRlbnQgPT4gWwo+ID4gKwkJeyBpbWFnZXMgPT4gMSB9LAo+ID4gKwkgICAgXSwKPiA+ICsJ
ICAgIGZvcm1hdCA9PiBbCj4gPiArCQl7IHJhdyA9PiAxIH0sCj4gPiArCQkicmF3IiwKPiA+ICsJ
ICAgIF0KPiA+ICsJfTsKPiA+ICsgICAgfQo+ID4gKwo+ID4gK1doaWNoIGNvbnRlbnQgdHlwZXMg
YW5kIGZvcm1hdHMgYXJlIHN1cHBvcnRlZCBkZXBlbmRzIG9uIHRoZSB1bmRlcmx5aW5nIHN0b3Jh
Z2UKPiA+ICtpbXBsZW1lbnRhdGlvbi4KPiA+ICsKPiA+ICtCPFJlZ2FyZGluZyBDPGltcG9ydD46
PiBUaGUgQzxpbXBvcnQ+IGNvbnRlbnQgdHlwZSBpcyB1c2VkIGludGVybmFsbHkgdG8KPiA+ICtp
bnRlcmZhY2Ugd2l0aCB2aXJ0dWFsIGd1ZXN0cyBvZiBmb3JlaWduIHNvdXJjZXMgb3IgZm9ybWF0
cy4gVGhlIGNvcnJlc3BvbmRpbmcKPiA+ICtmdW5jdGlvbmFsaXR5IGhhcyBub3QgeWV0IGJlZW4g
cHVibGlzaGVkIHRvIHRoZSBwdWJsaWMgcGFydHMgb2YgdGhlIHN0b3JhZ2UKPiA+ICtBUEkuIFRo
aXJkLXBhcnR5IHBsdWdpbnMgdGhlcmVmb3JlIHNob3VsZCBub3QgZGVjbGFyZSB0aGlzIGNvbnRl
bnQgdHlwZS4KPgo+IHRoaXMgc2hvdWxkIGxpdmUgc29tZXdoZXJlIHdoZXJlIGNvbnRlbnQgdHlw
ZXMgYXJlIGRlc2NyaWJlZAo+Cj4gPiArCj4gPiArQjxSZWdhcmRpbmcgQzxub25lPjo+IFRoZSBD
PG5vbmU+IGNvbnRlbnQgdHlwZSBkZW5vdGVzIHRoZSBJPGFic2VuY2U+IG9mIG90aGVyCj4gPiAr
dHlwZXMgb2YgY29udGVudCwgaS5lLiB0aGlzIGNvbnRlbnQgdHlwZSBtYXkgb25seSBiZSBzZXQg
b24gYSBzdG9yYWdlIGlmIG5vCj4gPiArb3RoZXIgY29udGVudCB0eXBlIGlzIHNldC4gVGhpcyBp
cyB1c2VkIGludGVybmFsbHkgZm9yIHN0b3JhZ2VzIHRoYXQgc3VwcG9ydAo+ID4gK2FkZGluZyBh
bm90aGVyIHN0b3JhZ2UgIm9uIHRvcCIgb2YgdGhlbTsgYXQgdGhlIG1vbWVudCwgdGhpcyBtYWtl
cyBpdCBwb3NzaWJsZQo+ID4gK3RvIHNldCB1cCBhbiBMVk0gKHRoaW4pIHBvb2wgb24gdG9wIG9m
IGFuIGlTQ1NJIExVTi4gVGhlIGNvcnJlc3BvbmRpbmcKPiA+ICtmdW5jdGlvbmFsaXR5IGhhcyBu
b3QgeWV0IGJlZW4gcHVibGlzaGVkIHRvIHRoZSBwdWJsaWMgcGFydHMgb2YgdGhlIHN0b3JhZ2UK
PiA+ICtBUEkuIFRoaXJkLXBhcnR5IHBsdWdpbnMgdGhlcmVmb3JlIHNob3VsZCBub3QgZGVjbGFy
ZSB0aGlzIGNvbnRlbnQgdHlwZS4KPgo+IHNhbWUKPgo+ID4gKwo+ID4gK0I8UmVnYXJkaW5nIEM8
c3Vidm9sPjo+IFRoZSBDPHN1YnZvbD4gZm9ybWF0IGlzIHVzZWQgaW50ZXJuYWxseSB0byBhbGxv
dyB0aGUKPiA+ICtyb290IGRpcmVjdG9yaWVzIG9mIGNvbnRhaW5lcnMgdG8gdXNlIFpGUyBzdWJ2
b2x1bWVzIChhbHNvIGtub3duIGFzCj4gPiArSTxaRlMgZGF0YXNldHM+LCBub3QgdG8gYmUgY29u
ZnVzZWQgd2l0aCBJPFpWT0xzPikuIFRoaXJkLXBhcnR5IHBsdWdpbnMgc2hvdWxkCj4gPiArbm90
IGRlY2xhcmUgdGhpcyBmb3JtYXQgdHlwZS4KPgo+IHRoaXMgaXMgaW5jb21wbGV0ZSwgYnV0IHNh
bWUuCj4KPiA+ICsKPiA+ICtUaGVyZSBpcyBvbmUgbW9yZSBrZXksIEM8c2VsZWN0X2V4aXN0aW5n
Piwgd2hpY2ggaXMgdXNlZCBpbnRlcm5hbGx5IGZvcgo+ID4gK0lTQ1NJLXJlbGF0ZWQgR1VJIGZ1
bmN0aW9uYWxpdHkuIFRoaXJkLXBhcnR5IHBsdWdpbnMgc2hvdWxkIG5vdCBkZWNsYXJlIHRoaXMK
PiA+ICtrZXkuCj4KPiB0aGlzIGlzIG9rYXkgaGVyZSA6KQo+Cj4gPiArCj4gPiArPWN1dAo+ID4g
Kwo+ID4gIHN1YiBwbHVnaW5kYXRhIHsKPiA+ICAgICAgbXkgKCRjbGFzcykgPSBAXzsKPiA+ICAg
ICAgcmV0dXJuICRjbGFzcy0+U1VQRVI6OnBsdWdpbmRhdGEoKTsKPiA+ICB9Cj4gPiAgCj4gPiAr
PWhlYWQzICRwbHVnaW4tPnByaXZhdGUoKQo+ID4gKwo+ID4gK0I8V0FSTklORzo+IFRoaXMgbWV0
aG9kIGlzIHByb3ZpZGVkIGJ5IEM8TDxQVkU6OlN0b3JhZ2U6OlBsdWdpbj4+IGFuZAo+ID4gK211
c3QgYmUgdXNlZCBhcy1pcy4gSXQgaXMgbWVyZWx5IGRvY3VtZW50ZWQgaGVyZSBmb3IgaW5mb3Jt
YWwgcHVycG9zZXMKPiA+ICthbmQgQjxtdXN0IG5vdCBiZSBvdmVycmlkZGVuLj4KPiA+ICsKPiA+
ICtSZXR1cm5zIGEgaGFzaCBjb250YWluaW5nIHRoZSB0cmFja2VkIHBsdWdpbiBtZXRhZGF0YSwg
bW9zdCBub3RhYmx5IHRoZQo+ID4gK0M8cHJvcGVydHlMaXN0Piwgd2hpY2ggY29udGFpbnMgYWxs
IGtub3duIHByb3BlcnRpZXMgb2YgYWxsIHBsdWdpbnMuCj4gPiArCj4gPiArQzxMPFBWRTo6U3Rv
cmFnZTo6UGx1Z2luPj4gdXNlcyB0aGlzIHRvIHByZWRlZmluZSBhIGxvdCBvZiB1c2VmdWwgcHJv
cGVydGllcwo+ID4gK3RoYXQgYXJlIHJlbGV2YW50IGZvciBhbGwgcGx1Z2lucy4gQ29yZSBmdW5j
dGlvbmFsaXR5IHN1Y2ggYXMgZGVmaW5pbmcKPiA+ICt3aGV0aGVyIGEgc3RvcmFnZSBpcyBzaGFy
ZWQsIHdoaWNoIG5vZGVzIG1heSB1c2UgaXQsIHdoZXRoZXIgYSBzdG9yYWdlCj4gPiAraXMgZW5h
YmxlZCBvciBub3QsIGV0Yy4gYXJlIGltcGxlbWVudGVkIHZpYSB0aGVzZSBwcm9wZXJ0aWVzLgo+
Cj4gdGhpcyBpcyBub3QgdHJ1ZSBhbmQgc291bmRzIGxpa2UgaXQgaXMgdmVyeSBpbnRlcmVzdGlu
ZyB0byBsb29rIGF0L21lc3MKPiB3aXRoIDspIGluIHJlYWxpdHksIGl0IGlzIHBhcnQgb2YgU2Vj
dGlvbkNvbmZpZyBtYWNoaW5lcnksIHNvIGp1c3Qgc2F5Cj4gdGhhdCBhbmQgdGhhdCBpdCBtdXN0
IG5vdCBiZSBvdmVycmlkZGVuIGFuZCBiZSBkb25lIHdpdGggaXQ/Cj4KPiBpZiBQbHVnaW5CYXNl
IGJlY29tZXMgdGhlIHJlYWwgYmFzZSBwbHVnaW4gdGhlbiBpdCBhbmQgc29tZSBvdGhlcgo+IGhl
bHBlcnMgd291bGQgbmVlZCB0byBtb3ZlIGhlcmUgYW55d2F5Li4KPgo+ID4gKwo+ID4gK1NlZSBD
PEw8UFZFOjpTZWN0aW9uQ29uZmlnL3ByaXZhdGU+PiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KPiA+
ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHByaXZhdGUgewo+ID4gLSAgICBjcm9hayAiaW1w
bGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICsgICAgY29uZmVzcyAicHJpdmF0ZSgpIGlz
IHByb3ZpZGVkIGJ5IFBWRTo6U3RvcmFnZTo6UGx1Z2luIGFuZCBtdXN0IG5vdCBiZSBvdmVycmlk
ZGVuIjsKPiA+ICB9Cj4gPiAgCj4gPiAgPWhlYWQyIEdFTkVSQUwKPiA+IC0tIAo+ID4gMi4zOS41
Cj4gPiAKPiA+IAo+ID4gCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fXwo+ID4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+ID4gcHZlLWRldmVsQGxpc3Rz
LnByb3htb3guY29tCj4gPiBodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1h
bi9saXN0aW5mby9wdmUtZGV2ZWwKPiA+IAo+ID4gCj4gPiAKPgo+Cj4gX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBwdmUtZGV2ZWwgbWFpbGluZyBsaXN0
Cj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNv
bS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCgoKCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZl
LWRldmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJp
bi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=