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 708EC1FF16B for <inbox@lore.proxmox.com>; Thu, 3 Apr 2025 09:12:59 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 901AB38A76; Thu, 3 Apr 2025 09:12:46 +0200 (CEST) Date: Thu, 03 Apr 2025 09:12:37 +0200 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= <f.gruenbichler@proxmox.com> To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> References: <20250326142059.261938-1-m.carrara@proxmox.com> <20250326142059.261938-3-m.carrara@proxmox.com> <1743421835.hd6pyusvlb.astroid@yuna.none> <D8WAOUZPCMO5.37G29XB8M94OE@proxmox.com> In-Reply-To: <D8WAOUZPCMO5.37G29XB8M94OE@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1743662987.9zy3v4thrh.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -1.456 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_BLACK 3 Contains an URL listed in the URIBL blacklist [plugin.pm] Subject: Re: [pve-devel] [PATCH v1 pve-storage 2/8] pluginbase: add high-level plugin API description 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> T24gQXByaWwgMiwgMjAyNSA2OjMxIHBtLCBNYXggQ2FycmFyYSB3cm90ZToKPiBPbiBNb24gTWFy IDMxLCAyMDI1IGF0IDU6MTMgUE0gQ0VTVCwgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4g T24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4+ID4gQWRkIGEg c2hvcnQgcGFyYWdyYXBoIGluIERFU0NSSVBUSU9OIHNlcnZpbmcgYXMgYW4gaW50cm9kdWN0aW9u IGFzCj4+ID4gd2VsbCBhcyB0aGUgR0VORVJBTCBQQVJBTUVURVJTIGFuZCBDQUNISU5HIEVYUEVO U0lWRSBPUEVSQVRJT05TCj4+ID4gc2VjdGlvbnMuCj4+ID4gCj4+ID4gVGhlc2Ugc2VjdGlvbnMg YXJlIGFkZGVkIGluIG9yZGVyIHRvIGF2b2lkIHJlcGVhdGVkbHkgZGVzY3JpYmluZyB0aGUKPj4g PiBzYW1lIHBhcmFtZXRlcnMgYXMgd2VsbCBhcyB0byBlbGFib3JhdGUgb24gLyBjbGFyaWZ5IGEg Y291cGxlIHRlcm1zLAo+PiA+IGUuZy4gd2hhdCB0aGUgJGNhY2hlIHBhcmFtZXRlciBkb2VzIG9y IHdoYXQgYSB2b2x1bWUgaW4gb3VyIGNhc2UgaXMuCj4+ID4gCj4+ID4gU2lnbmVkLW9mZi1ieTog TWF4IENhcnJhcmEgPG0uY2FycmFyYUBwcm94bW94LmNvbT4KPj4gPiAtLS0KPj4gPiAgc3JjL1BW RS9TdG9yYWdlL1BsdWdpbkJhc2UucG0gfCA3NyArKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+PiA+ICAxIGZpbGUgY2hhbmdlZCwgNzcgaW5zZXJ0aW9ucygrKQo+PiA+IAo+PiA+ IGRpZmYgLS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3Rv cmFnZS9QbHVnaW5CYXNlLnBtCj4+ID4gaW5kZXggZTU2YWE3Mi4uMTY5NzdmMyAxMDA2NDQKPj4g PiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbQo+PiA+ICsrKyBiL3NyYy9QVkUv U3RvcmFnZS9QbHVnaW5CYXNlLnBtCj4+ID4gQEAgLTQsNiArNCw4MyBAQCBDPFBWRTo6U3RvcmFn ZTo6UGx1Z2luQmFzZT4gLSBTdG9yYWdlIFBsdWdpbiBBUEkgSW50ZXJmYWNlCj4+ID4gIAo+PiA+ ICA9aGVhZDEgREVTQ1JJUFRJT04KPj4gPiAgCj4+ID4gK1RoaXMgbW9kdWxlIGRvY3VtZW50cyB0 aGUgcHVibGljIFN0b3JhZ2UgUGx1Z2luIEFQSSBvZiBQVkUgYW5kIHNlcnZlcwo+PiA+ICthcyBh IGJhc2UgZm9yIEM8TDxQVkU6OlN0b3JhZ2U6OlBsdWdpbj4+LiBQbHVnaW5zIG11c3QgQjxhbHdh eXM+IGluaGVyaXQgZnJvbQo+PiA+ICtDPEw8UFZFOjpTdG9yYWdlOjpQbHVnaW4+PiwgYXMgdGhp cyBtb2R1bGUgaXMgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMKPj4gPiArb25seS4KPj4KPj4g ZG9lcyB0aGlzIG1ha2Ugc2Vuc2U/IGlmIHdlIG5vdyBwcm92aWRlIGEgY2xlYW4gYmFzZSBmb3Ig dGhlIHN0cnVjdHVyZQo+PiBvZiBwbHVnaW5zLCB3aHkgc2hvdWxkbid0IHBsdWdpbnMgYmUgYWJs ZSB0byB1c2UgdGhhdCwgYnV0IGluc3RlYWQgaGF2ZQo+PiB0byBpbmhlcml0IGZyb20gUFZFOjpT dG9yYWdlOjpQbHVnaW4gd2hpY2ggaGFzIGEgbG90IG9mIGV4dHJhIHN0dWZmIHRoYXQKPj4gbWFr ZXMgdGhpbmdzIG1lc3N5Pwo+Pgo+PiBncmFudGVkLCBzd2l0Y2hpbmcgb3ZlciB0byBsb2FkIGZy b20gUGx1Z2luQmFzZSBjb3VsZCBiZSBkb25lIGFzIGEKPj4gZm9sbG93IHVwIG9yIHdpdGggOS4w IChvciBub3QgYXQgYWxsLCBpZiB0aGVyZSBpcyBhIHJhdGlvbmFsZSkuLgo+Pgo+PiBhZnRlciB0 aGlzIHNlcmllcyB3ZSBoYXZlOgo+Pgo+PiBTZWN0aW9uQ29uZmlnCj4+IC0+IFBsdWdpbkJhc2Ug KG5vdCBhbiBhY3R1YWwgYmFzZSBwbHVnaW4gdy5yLnQuIFNlY3Rpb25Db25maWcsIGFuZCBub3QK Pj4gc29tZXRoaW5nIHlvdSBiYXNlIHBsdWdpbnMgb24gYXMgYSByZXN1bHQpCj4+IC0tPiBQbHVn aW4gKGEgY29tYmluYXRpb24gb2YgYmFzZSBwbHVnaW4gYW5kIGJhc2Ugb2YgYWxsIG91cgo+PiBk aXJlY3RvcnktYmFzZWQgcGx1Z2lucykKPj4gLS0tPiBvdGhlciBwbHVnaW5zLCBpbmNsdWRpbmcg dGhpcmQgcGFydHkgb25lcwo+Pgo+PiB3aGljaCBzZWVtcyB1bmZvcnR1bmF0ZSwgZXZlbiBpZiB0 aGUgY29udGVudHMgb2YgUGx1Z2luQmFzZSBhcmUgaGVscGZ1bAo+PiB3aGVuIGltcGxlbWVudGlu ZyB5b3VyIG93bi4uCj4+Cj4+IElNSE8gdGhpcyBzaG91bGQgZWl0aGVyIGJlCj4+Cj4+IFNlY3Rp b25Db25maWcKPj4gLT4gUGx1Z2luQmFzZSAoYWN0dWFsIGJhc2UgcGx1Z2luLCB3aXRoIFNlY3Rp b25Db25maWcgaW1wbGVtZW50YXRpb25zCj4+IG1vdmVkIG92ZXIgZnJvbSBjdXJyZW50IFBsdWdp bi5wbSBhcyBuZWVkZWQpCj4+IC0tPiBQbHVnaW5UZW1wbGF0ZSAod2hhdCdzIGN1cnJlbnRseSBQ bHVnaW5CYXNlIGluIHRoaXMgc2VyaWVzIC0gbmljZWx5Cj4+IGRvY3VtZW50ZWQgcGFyZW50IG9m IHRoaXJkIHBhcnR5IHBsdWdpbnMsIG5vdCBhY3R1YWxseSByZWdpc3RlcmVkLCBqdXN0Cj4+IGNv bnRhaW5zIHRoZSBzdG9yYWdlLmNmZyBpbnRlcmZhY2Ugd2l0aG91dCB0aGUgbG93LWxldmVsIFNl Y3Rpb25Db25maWcKPj4gdGhpbmdzKQo+PiAtLS0+IE5ld1RoaXJkUGFydHlQbHVnaW4gKGNsZWFu IHNsYXRlIGltcGxlbWVudGF0aW9uIGp1c3QgdXNpbmcgdGhlCj4+IG5pY2VseSBkb2N1bWVudGVk IGludGVyZmFjZXMsIGd1YXJhbnRlZWQgdG8gbm90IHVzZSBhbnkgaGVscGVycyBmcm9tCj4+IFBs dWdpbiBzaW5jZSBpdCdzIG5vdCBhIChncmFuZClwYXJlbnQpCj4+IC0tPiBQbHVnaW4gKGJhc2Ug b2YgYnVpbHQtaW4gcGx1Z2lucywgcHJvYmFibHkgYmFzZSBvZiBleGlzdGluZyB0aGlyZAo+PiBw YXJ0eSBwbHVnaW5zLCBzaG91bGQgaWRlYWxseSBoYXZlIGEgZGlmZmVyZW50IG5hbWUgaW4gdGhl IGZ1dHVyZSEpCj4+IC0tLT4gRGlyUGx1Z2luCj4+IC0tLT4gLi4uCj4+IC0tLT4gRXhpc3RpbmdU aGlyZFBhcnR5UGx1Z2luICh0aGlzIG1pZ2h0IHJlbHkgb24gaGVscGVycyBmcm9tIFBsdWdpbiwK Pj4gc28gd2UgY2FuJ3QganVzdCByZW5hbWUgdGhhdCBvbmUgdW5sZXNzIHdlIHdhaXQgZm9yIDku MCkKPj4KPj4gb3IKPj4KPj4gU2VjdGlvbkNvbmZpZwo+PiAtPiBQbHVnaW5CYXNlIChhY3R1YWwg YmFzZSBwbHVnaW4gKyBkb2NzIG9mIFBsdWdpbiBBUEkpCj4+IC0tPiBQbHVnaW4gKGJhc2Ugb2Yg b3VyIHBsdWdpbnMgYW5kIGV4aXN0aW5nIHRoaXJkIHBhcnR5IG9uZXMsIGRpci1yZWxhdGVkIGhl bHBlcnMsIC4uKQo+PiAtLS0+IG90aGVyIHBsdWdpbnMsIGluY2x1ZGluZyB0aGlyZCBwYXJ0eSBv bmVzCj4+IC0tPiBOZXdUaGlyZFBhcnR5UGx1Z2luIChjbGVhbiBzbGF0ZSBhcyBhYm92ZSkKPiAK PiBJIGFncmVlIHdpdGggeW91ciBwb2ludCBoZXJlIC0tIGZvciBub3csIGA6OlBsdWdpbkJhc2Vg IHNob3VsZCBJTU8gc3RpbGwKPiBvbmx5IGJlIGFib3V0IGRvY3VtZW50YXRpb24gYW5kIGVudW1l cmF0aW5nIHdoYXQncyBwYXJ0IG9mIHRoZSBQbHVnaW4KPiBBUEksICpidXQqIGFkZGluZyBtb3Jl IGxheWVycyBpbmJldHdlZW4gY2FuIHN0aWxsIGJlIGRvbmUgZXZlbnR1YWxseS4KPiAKPiBIb3dl dmVyLCBJIHRoaW5rIHdlIHNob3VsZG4ndCBoYXZlIHR3byBkaWZmZXJlbnQgcGFyZW50cyBmb3Ig aW50ZXJuYWwKPiBhbmQgZXh0ZXJuYWwgcGx1Z2lucywgYXMgaXQgd291bGQgaW50cm9kdWNlIHll dCBhbm90aGVyIHRoaW5nIHdlJ2QgaGF2ZQo+IHRvIHRyYWNrIHdydC4gQVBJQUdFIHJlc2V0cyBl dGMuIE1heWJlIGl0J3Mgbm90IGFjdHVhbGx5IGFuIGlzc3VlIGluCj4gdGhpcyBjYXNlLCBidXQg Li4uCgp0aGUgQVBJIHdvdWxkIGJlIGRlZmluZWQgYnkgdGhlICJwdWJsaWMiL2V4dGVybmFsL3Rv cC1sZXZlbCBiYXNlCm9idmlvdXNseSwgbm90IGJ5IG91ciBpbnRlcm1lZGlhdGUgc2hhcmVkIGJh c2UgOykKCj4gVGhhdCBhY3R1YWxseSBnaXZlcyBtZSBhbiBpZGVhIHRoYXQncyBzaW1pbGFyIHRv IHlvdXIgZmlyc3Qgc3VnZ2VzdGlvbjoKPiAKPiBBcyBvZiB0aGlzIHNlcmllcywgdGhlIGhpZXJh cmNoeSB3b3VsZCBiZSBhcyBmb2xsb3dzOgo+IAo+IFBsdWdpbkJhc2UKPiDilJTilIDilIAgUGx1 Z2luCj4gICAgIOKUnOKUgOKUgCBFeGlzdGluZ1RoaXJkUGFydHlQbHVnaW4KPiAgICAg4pSc4pSA 4pSAIERpclBsdWdpbgo+ICAgICDilJTilIDilIAgLi4uCj4gCj4gV2UgY291bGQga2VlcCBgUGx1 Z2luQmFzZWAgYXMgaXQgaXMsIHNpbmNlIElNTyBoYXZpbmcgdGhlIGRvY3MgYW5kIHRoZQo+IFNl Y3Rpb25Db25maWctcmVsYXRlZCBzdHVmZiBpbiBvbmUgcGxhY2UgaXMgZmluZSwgdW5sZXNzIHdl IHJlYWxseSB3YW50Cj4gdG8ga2VlcCB0aGUgZG9jcyBzZXBhcmF0ZSBmcm9tIHRoZSByZXN0IG9m IHRoZSBjb2RlLiAoV291bGQgc2VlbSBhIGJpdAo+IHJlZHVuZGFudCB0byBpbnRyb2R1Y2UgYW5v dGhlciBpbmhlcml0YW5jZSBsYXllciBpbiB0aGF0IGNhc2UsIGJ1dCBJCj4gcGVyc29uYWxseSBk b24ndCBtaW5kLikKCkkgZG9uJ3QgbWluZCBoYXZpbmcgdGhlIFNlY3Rpb25Db25maWcgYW5kIHRo ZSAic2tlbGV0b24iIGluIG9uZSBtb2R1bGUsCnByb3ZpZGVkIHRoZXkgYXJlIGNsZWFybHkgc2Vw YXJhdGVkLiB0aGUgU2VjdGlvbkNvbmZpZyBtZXRob2RzIGFyZQppbmhlcml0ZWQgYW55d2F5IGFu ZCBhbnkgdGhpcmQgcGFydHkgcGx1Z2luIG11c3QgdXBob2xkIHRoZSBpbnZhcmlhbnQgb2YKbm90 IG1lc3Npbmcgd2l0aCB0aGVtLi4KCj4gVGhlbiwgd2UgZXZlbnR1YWxseSBpbnRyb2R1Y2UgYFBs dWdpblRlbXBsYXRlYCBvbiB0aGUgc2FtZSBsYXllciBhcwo+IGBQbHVnaW5gLiBgUGx1Z2luVGVt cGxhdGVgIHdvdWxkIG9ubHkgY29udGFpbiBpbXBsZW1lbnRhdGlvbnMgZm9yIHRoZQo+IG1vc3Qg YmFzaWMgbWV0aG9kcyAoYW5kIG5vdCBwcm92aWRlIGRlZmF1bHRzIGZvciBmaWxlLWJhc2VkIHN0 b3JhZ2VzKS4KCmRvIHlvdSBoYXZlIHNvbWV0aGluZyBpbiBtaW5kIGZvciB0aGlzICJUZW1wbGF0 ZSI/IGFuZCBpZiB0aG9zZSBtZXRob2RzCndlcmUgc28gZ2VuZXJpYyBhbmQgYmFzaWMgYXQgdGhl IHNhbWUgdGltZSwgd2h5IHNob3VsZG4ndCB0aGV5IGxpdmUgaW4KUGx1Z2luQmFzZSBpdHNlbGY/ IDspIEkgYW0gbm90IHlldCBjb252aW5jZWQgYW4gZXh0cmEgbGF5ZXIgbGlrZSB0aGlzCm1ha2Vz IG11Y2ggc2Vuc2UsIGJ1dCBJIGFtIGhhcHB5IHRvIGxpc3RlbiB0byAoY29uY3JldGUpIGFyZ3Vt ZW50cyB3aHkKaXQgc2hvdWxkIGV4aXN0LiBJTUhPIHRoZSBsZXNzIGNvZGUgaW5oZXJpdGVkIGJ5 IGV4dGVybmFsIHBsdWdpbnMgdGhlCmJldHRlciwgZWxzZSB3ZSBhbHdheXMgaGF2ZSB0byBub3Qg dG91Y2ggdGhhdCBjb2RlIGZvciBhZ2VzIHRvIGF2b2lkCmJyZWFraW5nIHRoZW0uLgoKPiBQbHVn aW5CYXNlCj4g4pSc4pSA4pSAIFBsdWdpbgo+IOKUgsKgwqAg4pSc4pSA4pSAIEV4aXN0aW5nVGhp cmRQYXJ0eVBsdWdpbgo+IOKUgsKgwqAg4pSc4pSA4pSAIERpclBsdWdpbgo+IOKUgsKgwqAg4pSU 4pSA4pSAIC4uLgo+IOKUlOKUgOKUgCBQbHVnaW5UZW1wbGF0ZQo+IAo+IFRoZSBpZGVhIGJlaGlu ZCB0aGlzIGlzIHRoYXQgd2UgY291bGQgdGhlbiAibWlncmF0ZSIgZWFjaCBwbHVnaW4gYW5kCj4g YmFzZSBpdCBvZmYgYFBsdWdpblRlbXBsYXRlYCBpbnN0ZWFkLiBIZWxwZXJzIHRoYXQgYXJlIHNo YXJlZCBiZXR3ZWVuCj4gcGx1Z2lucyBjb3VsZCBnbyBpbnRvIGBQVkU6OlN0b3JhZ2U6OkNvbW1v bjo6KmAgaW5zdGVhZCBvZiBiZWluZwo+IGltcGxpY2l0bHkgYmVjb21pbmcgcGFydCBvZiBwbHVn aW5zJyBtb2R1bGVzIGR1ZSB0byBpbmhlcml0YW5jZS4KCnRoZSBpc3N1ZSB3aXRoIHRoYXQgaXMg dGhhdCB3ZSd2ZSBub3cganVzdCBtb3ZlZCB0aGUgcHJvYmxlbSAtIHdoYXQgYXJlCnRoZSBzdGFi aWxpdHkgZ3VhcmFudGVlcyBmb3IgUFZFOjpTdG9yYWdlOjpDb21tb246OiogPyBhcmUgZXh0ZXJu YWwKcGx1Z2lucyBhbGxvd2VkL3N1cHBvc2VkIHRvIHVzZSB0aGVtPyBJIGRvIHRoaW5rIHdlIHdh bnQgdG8ga2VlcCBzb21lCmFtb3VudCBvZiAiUFZFLXNwZWNpZmljLCBpbnRlcm5hbCIgaGVscGVy IGNvZGUgKHdoZXRoZXIgaW4gdGhlIHBsdWdpbnMKdGhlbXNlbHZlcyBvciBpbiBzb21lIHN0YW5k YWxvbmUgaGVscGVyIG1vZHVsZSkgdGhhdCBhcmUgb2ZmLWxpbWl0cyBmb3IKZXh0ZXJuYWwgcGx1 Z2lucywgaWYganVzdCB0byBhdm9pZCB3cml0aW5nIHVzIGludG8gYSBjb3JuZXIuIHRoZSBlYXNp ZXN0CndheSB0byBhY2hpZXZlIHRoYXQgaXMgdG8gbWlncmF0ZSBleHRlcm5hbCBwbHVnaW5zIGF3 YXkgZnJvbSBQbHVnaW4ucG0KKHdoaWNoIHdlIGNhbiBlbmZvcmNlIGF0IHBsdWdpbiBsb2FkaW5n IHRpbWUgYXQgc29tZSBwb2ludCBhZnRlciBhCmRlcHJlY2F0aW9uIHBlcmlvZCkuCgpvYnZpb3Vz bHkgZm9yIGhlbHBlcnMgdGhhdCB3ZSBkZWVtIHN0YWJsZSBlbm91Z2ggbW92aW5nIHRoZW0gdG8g Q29tbW9uCmFuZCB3cmFwcGluZyB0aGVtIGluIHRoZWlyIG9sZCBsb2NhdGlvbiBpbiBQbHVnaW4g d291bGQgYmUgYSB2aWFibGUKbWlncmF0aW9uIHN0cmF0ZWd5LgoKPiBQbHVnaW5CYXNlCj4g4pSc 4pSA4pSAIFBsdWdpbgo+IOKUgsKgwqAg4pSc4pSA4pSAIC4uLgo+IOKUgsKgwqAg4pSU4pSA4pSA IEV4aXN0aW5nVGhpcmRQYXJ0eVBsdWdpbgo+IOKUlOKUgOKUgCBQbHVnaW5UZW1wbGF0ZQo+ICAg ICDilJzilIDilIAgLi4uCj4gICAgIOKUlOKUgOKUgCBEaXJQbHVnaW4gKGNsZWFuZWQgdXApCj4g Cj4gVGhhdCB3YXkgd2UgY291bGQgc3RlcCBieSBzdGVwICJkaXNlbnRhbmdsZSIgdGhlIGV4aXN0 aW5nIHBsdWdpbnMgZnJvbQo+IGVhY2ggb3RoZXIgd2l0aG91dCBoYXZpbmcgdG8gY29uc3RhbnRs eSBrZWVwIHRoZSBvcmlnaW5hbCBiZWhhdmlvdXIocykKPiBvZiBgUGx1Z2luYCBpbiB0aGUgYmFj ayBvZiBvbmUncyBoZWFkIGFuZCBhY2NvdW50IGZvciB0aGVtLiBJbnN0ZWFkLAo+IGVhY2ggcGx1 Z2luIHdvdWxkIGltcGxlbWVudCBwcmVjaXNlbHkgd2hhdCBpdCBpdHNlbGYgbmVlZHMuCj4gCj4g U2luY2UgYm90aCB0aGUgb2xkIGBQbHVnaW5gIGFuZCB0aGUgbmV3IGBQbHVnaW5UZW1wbGF0ZWAg c2hhcmUgdGhlIHNhbWUKPiBpbnRlcmZhY2UsIG5hbWVseSBgUGx1Z2luQmFzZWAsIHdlIGNvdWxk IHN0aWxsIHN1cHBvcnQgdGhlIG9sZCBgUGx1Z2luYAo+IHVudGlsIGV2ZXJ5dGhpbmcncyBiZWVu IG1vdmVkIG92ZXIgYW5kIHRoaXJkLXBhcnR5IGRldnMgaGF2ZSBoYWQgZW5vdWdoCj4gdGltZSB0 byBhZGFwdCB0aGVpciBvd24gY29kZSwgdG9vLgoKc2VlIGFib3ZlIC0gd2UgY2FuIGRvIGFsbCBv ZiB0aGF0IHdpdGhvdXQgaW50cm9kdWNpbmcgUGx1Z2luVGVtcGxhdGUgYXMKd2VsbCwgaW5jbHVk aW5nIGF0IHNvbWUgcG9pbnQgbm8gbG9uZ2VyIGFsbG93aW5nIHRoaXJkIHBhcnR5IHBsdWdpbnMg dG8KcmUtdXNlIFBsdWdpbiBidXQgZm9yY2UgdGhlbSB0byBiZSBiYXNlZCBvZiBQbHVnaW5CYXNl LgoKPiBXaGlsZSBkb2luZyBhbGwgdGhpcywgd2UgY291bGQgYWxzbyByZXdvcmsgcGFydHMgb2Yg dGhlIEFQSSB0aGF0IGRpZG4ndAo+IGFnZSB0aGF0IGdyYWNlZnVsbHksIHBlcmhhcHMgZGVwcmVj YXRlIGNlcnRhaW4gb2xkIG1ldGhvZHMsIGludHJvZHVjZQo+IG5ldyBtZXRob2RzLCBldGMuIGFz IHdlJ2QgaGF2ZSBhICJjbGVhbiIgYnJlYWssIHNvdG9zcGVhay4KCnRoaXMgY291bGQgYWxzbyBi ZSBkb25lIHdpdGhvdXQgbW92aW5nIGFsbCBwbHVnaW5zIG92ZXIgdG8KUGx1Z2luVGVtcGxhdGUs IGFsdGhvdWdoIGl0IG1pZ2h0IGJlIGEgYml0IG1vcmUgbWVzc3kvZGFuZ2Vyb3VzLgoKPiBTbywg dG8gc3VtbWFyaXplIG15IGlkZWE6Cj4gLSBLZWVwIGBQbHVnaW5CYXNlYCBhcyBpdCBpcyByaWdo dCBub3csIGJ1dCBhbHNvIGluY2x1ZGUKPiAgIFNlY3Rpb25Db25maWctcmVsYXRlZCBjb2RlCj4g LSBJbnRyb2R1Y2UgYFBsdWdpblRlbXBsYXRlYCB3aXRoIG1pbmltYWwgaW1wbGVtZW50YXRpb24g bGF0ZXIgZG93biB0aGUKPiAgIGxpbmUgb24gdGhlIHNhbWUgaW5oZXJpdGFuY2UgbGF5ZXIgYXMg YFBsdWdpbmAKPiAtIFNsb3dseSBtaWdyYXRlIG91ciBwbHVnaW5zLCBiYXNpbmcgdGhlbSBvZmYg b2YgYFBsdWdpblRlbXBsYXRlYCB3aGlsZQo+ICAgdG9zc2luZyBvdXQgb2xkIGNvZGUsIG1ha2lu ZyB0aGVtIGluZGVwZW5kZW50IGZyb20gb25lIGFub3RoZXIsIGFuZAo+ICAgY29sbGVjdGluZyBz aGFyZWQgaGVscGVycyBpbiBgUFZFOjpTdG9yYWdlOjpDb21tb246OipgCj4gCj4gSSdkIHJlYWxs eSBsaWtlIHRvIGhlYXIgeW91ciB0aG91Z2h0cyBvbiB0aGlzLCBiZWNhdXNlIEknbSBub3Qgc3Vy ZSBpZgo+IHRoaXMgaXMgKmFjdHVhbGx5KiBmZWFzaWJsZSBvciBwcm92aWRlcyBhbnkgUk9JIGRv d24gdGhlIGxpbmUuIE9uZQo+IGFsdGVybmF0aXZlIHRoYXQgSSBjYW4gdGhpbmsgb2YgaXMgdG8g anVzdCBrZWVwIHRoZSBpbmhlcml0YW5jZQo+IGhpZXJhcmNoeSBhcyBpdCBpcyAoYXMgaW4gdGhp cyBzZXJpZXMpIGFuZCBkaXNlbnRhbmdsZSB0aGUgcGx1Z2lucyBhcwo+IHRoZXkgYXJlIHJpZ2h0 IG5vdywgd2l0aG91dCBjaGFuZ2luZyB0aGVpciBwYXJlbnQgKHNvLCBhbG1vc3QgdGhlIHNhbWUK PiBhcyB5b3VyIHNlY29uZCBpZGVhKS4gSSBkaWQgc3RhcnQgYnJlYWtpbmcgYXBhcnQgb3VyIHBs dWdpbnMgbGlrZSB0aGF0Cj4gbGFzdCB5ZWFyLCBidXQgdGhhdCB3YXMgdG9vIG11Y2ggYWxsIGF0 IG9uY2UgWzFdLgo+IAo+IFsxXTogaHR0cHM6Ly9sb3JlLnByb3htb3guY29tL3B2ZS1kZXZlbC8y MDI0MDcxNzA5NDAzNC4xMjQ4NTctMS1tLmNhcnJhcmFAcHJveG1veC5jb20vCgoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcg bGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNv bS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==