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 B43E61FF17E for ; Thu, 18 Sep 2025 20:32:28 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C115C721F; Thu, 18 Sep 2025 20:32:41 +0200 (CEST) Mime-Version: 1.0 Date: Thu, 18 Sep 2025 20:32:06 +0200 Message-Id: To: "Thomas Lamprecht" , "Proxmox VE development discussion" From: "Max R. Carrara" X-Mailer: aerc 0.18.2-0-ge037c095a049 References: <20250908180058.530119-1-m.carrara@proxmox.com> <882e278b-e588-4099-b52f-4a32696cee8c@proxmox.com> <0092ff33-673f-4a6a-9ae0-502b25691455@proxmox.com> In-Reply-To: <0092ff33-673f-4a6a-9ae0-502b25691455@proxmox.com> X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1758220317308 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.086 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 Subject: Re: [pve-devel] [RFC pve-storage, pve-manager master v1 00/12] GUI Support for Custom Storage Plugins X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" T24gVGh1IFNlcCAxOCwgMjAyNSBhdCA4OjI3IEFNIENFU1QsIFRob21hcyBMYW1wcmVjaHQgd3Jv dGU6Cj4gQW0gMDkuMDkuMjUgdW0gMTY6MjIgc2NocmllYiBNYXggUi4gQ2FycmFyYToKPiA+IE9u IE1vbiBTZXAgOCwgMjAyNSBhdCA5OjIzIFBNIENFU1QsIFRob21hcyBMYW1wcmVjaHQgd3JvdGU6 Cj4gPj4gQW0gMDguMDkuMjUgdW0gMjA6MDEgc2NocmllYiBNYXggUi4gQ2FycmFyYToKPiA+Pj4g R1VJIFN1cHBvcnQgZm9yIEN1c3RvbSBTdG9yYWdlIFBsdWdpbnMKPiA+Pj4gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KPiA+Pj4KPiA+Pj4gdGw7ZHI6Cj4gPj4+Cj4gPj4+ IEFkZCBhbiBBUEkgbWV0aG9kIHRvIFBWRTo6U3RvcmFnZTo6UGx1Z2luIHRoYXQgcmV0dXJucyB0 aGUgZGVmaW5pdGlvbgo+ID4+PiBmb3IgdGhlIGZvcm0gdmlldyBvZiBjdXN0b20gc3RvcmFnZSBw bHVnaW5zLiBUaGlzIGRlZmluaXRpb24gaXMgdXNlZCBieQo+ID4+PiB0aGUgZnJvbnRlbmQgdG8g YnVpbGQgdGhlIGZvcm0gdmlldyBmb3IgY3JlYXRpbmcgLyBlZGl0aW5nIHRoZSBzdG9yYWdlCj4g Pj4+IGNvbmZpZyBlbnRyeSBvZiB0aGUgcGx1Z2luLiBUaGUgdWx0aW1hdGUgZ29hbCBoZXJlIGlz IHRoYXQgY3VzdG9tCj4gPj4+IHN0b3JhZ2UgcGx1Z2luIGRldnMgZG9uJ3QgaGF2ZSB0byAoYW5k IGFsc28gKm11c3Qgbm90KikgZXZlciB0b3VjaAo+ID4+PiBKYXZhU2NyaXB0IHRvIG1ha2UgdGhl aXIgcGx1Z2lucyBzaG93IHVwIGluIHRoZSBHVUkuCj4gPj4KPiA+PiBEaWQgbm90IGNoZWNrIHRo ZSBjaGFuZ2VzIGluIGZ1bGwsIGJ1dCBJIHNlZSBubyBtZW50aW9uaW5nIG9mIHRoZSBBQ01FCj4g Pj4gRE5TIHBsdWdpbnMsIHdoaWNoIGFscmVhZHkgcHJvdmlkZSBzdWNoIGEgbWVjaGFuaXNtLCBh bGJlaXQgYSBiaXQgbG93ZXIKPiA+PiBsZXZlbCB3aXRoIG5vIHJlYWwgY29udHJvbCBob3cgdGhl IGZpZWxkcyBnZXQgbGF5b3V0ZWQuIERpZCB5b3UgY2hlY2sKPiA+PiB0aGF0IG91dCBhbmQgbWF5 YmUgYWxyZWFkeSByZS11c2VkIHRoZSB1bmRlcmx5aW5nIHBhcnRzIG9mIHRoZQo+ID4+IGltcGxl bWVudGF0aW9uIGJ1dCBqdXN0IG5vdCByZWZlcmVuY2VkIGl0LCBvciBpcyB0aGlzIHNvbWV0aGlu Zwo+ID4+IGNvbXBsZXRlbHkgbmV3L2N1c3RvbT8KPiA+IAo+ID4gVGhpcyBpcyBzb21ldGhpbmcg Y29tcGxldGVseSBuZXcsIGFzIHRoZSBjb2RlIHJlZ2FyZGluZyB0aGUgQUNNRSBETlMKPiA+IHBs dWdpbnMgaXNuJ3QgcmVhbGx5IGFkYXB0YWJsZSAvIGFwcGxpY2FibGUgaW4gdGhpcyBjYXNlIGhl cmUuCj4gPiAKPiA+IFdoZW4gQWFyb24gYW5kIEkgYnJhaW5zdG9ybWVkIHRoZSB3aG9sZSB0aGlu ZywgaGUgZGlkIG1lbnRpb24gdGhhdCB3ZQo+ID4gYWxyZWFkeSBkbyBhIHNvbWV3aGF0IHNpbWls YXIgdGhpbmcgd2l0aCB0aGUgQUNNRSBETlMgcGx1Z2lucyBhbmQKPiA+IHN1Z2dlc3RlZCB0aGF0 IEkgbWlnaHQgd2FudCB0byBjaGVjayB0aGF0IG91dCBmaXJzdC4gRG9taW5payB0aGVuIGFsc28K PiA+IG1lbnRpb25lZCBpdCwgYnV0IHN1Z2dlc3RlZCB0aGF0IEkgcHJvYmFibHkgc2hvdWxkbid0 IGltcGxlbWVudCBpdCB0aGUKPiA+IHdheSB3ZSBkaWQgZm9yIHRoZSBBQ01FIEROUyBwbHVnaW5z LCBzbyBJIGRlY2lkZWQgdG8gbm90IGxvb2sgYXQgdGhhdAo+ID4gY29kZSBhdCBhbGwuCj4gPiAK PiA+IEhvd2V2ZXIsIERvbWluaWsgYW5kIEkganVzdCB3ZW50IHRocm91Z2ggdGhlIEFDTUUgR1VJ IHN0dWZmIGZvciBnb29kCj4gPiBtZWFzdXJlIGFuZCBmb3VuZCB0d28gbWFpbiByZWFzb25zIHdo eSB0aGUgZnVuY3Rpb25hbGl0eSBjYW4ndCByZWFsbHkgYmUKPiA+IHJldXNlZDoKPiA+IAo+ID4g MS4gVGhlIEFDTUUgRE5TIHBsdWdpbiBbc2NoZW1hXSBpcyB0b28gc2ltcGxlIGFuZCBkb2Vzbid0 IHJlYWxseQo+ID4gdHJhbnNsYXRlIHRvIHN0b3JhZ2UgcGx1Z2lucy4KPgo+IEFzIG1lbnRpb25l ZCBvZmYgbGlzdCwgdGhlIGdlbmVyYWwgYXBwcm9hY2ggdG8gbm90aWNpbmcgdGhhdCBpcyB0bwo+ IGZpcnN0IGV2YWx1YXRlIGlmIGl0IGNhbiBiZSBleHRlbmRlZCwgbm90IGp1bXBpbmcgc3RyYWln aHQgdG8gTklILgoKVG9vIGtlZXAgdGhpbmdzIHNob3J0LCBhbmQgYXMgd2UndmUgZGlzY3Vzc2Vk IG9mZiBsaXN0IGFscmVhZHksIEkKY29tcGxldGVseSBhZ3JlZSB3aXRoIHlvdSBoZXJlIGFuZCBz ZWUgeW91ciBwb2ludCBub3cgYWZ0ZXIgZ29pbmcKdGhyb3VnaCBpdCBhbGwgYWdhaW7igJRteSBv cmlnaW5hbCBnb2FsIHdhcyB0byBhY3R1YWxseSBhdm9pZCBhbnkgbmVlZGxlc3MKY29tcGxleGl0 eSBieSBoYXZpbmcgYW4gaXNvbGF0ZWQgLyBkZWNvdXBsZWQgbW9kdWxlLCBidXQgSSBoYWRuJ3QK cmVhbGl6ZWQgdGhhdCBpdCB3b3VsZCBhY3R1YWxseSBpbnRyb2R1Y2UgYSBsb3Qgb2YgaGlkZGVu IGNvdXBsaW5nIGFuZApoaWRkZW4gY29tcGxleGl0eSByZWdhcmRsZXNzIChhbW9uZ3N0IG90aGVy IGlzc3VlcykuIFRoYXQgd2FzIGp1c3Qgbm90Cm9idmlvdXMgdG8gbWUgZnJvbSBteSBwZXJzb25h bCBQT1YgYXQgYWxsLCBhbmQgd2hlbiBjaGVja2luZyBpbiB3aXRoIGEKY291cGxlIG90aGVycywg dGhpcyBhcHByb2FjaCBoZXJlIF9zZWVtZWRfIHF1aXRlIHBsYXVzaWJsZSBhcyB3ZWxsLgoKRnVu bmlseSBlbm91Z2gsIHdoaWxlIGNvbWluZyB1cCB3aXRoIHRoZSBmaXJzdCByb3VnaCBkcmFmdCBv ZiBhbGwgdGhpcywKSSBkaWQgc3Ryb25nbHkgY29uc2lkZXIgImluZmVycmluZyIgZXZlcnl0aGlu ZyBmcm9tIHRoZSBleGlzdGluZwpzY2hlbWFzLCBhcyBpbiwgaGF2ZSB0aGUgcGx1Z2luIGRldiBv bmx5IHByb3ZpZGUgdGhlIGJhc2ljIGxheW91dCBvZiB0aGUKcHJvcGVydGllcycgZmllbGRzIGZv ciB0aGUgVUksIGFuZCBoYXZlIHRoZSByZXN0IGJlIGRlcml2ZWQgLyBpbmZlcnJlZCAvCndoYXRl dmVyIHlvdSB3YW50IHRvIGNhbGwgaXQuIEluIGhpbmRzaWdodCBJIHNob3VsZCd2ZSBzdGlja2Vk IHdpdGgKdGhhdCwgYnV0IGZlYXR1cmUgY3JlZXAgZ290IHRoZSBiZXR0ZXIgb2YgbWUgYW5kIEkg dG9vayBhIHdyb25nIHR1cm4uCgpBbnl3YXksIHllcywgSSdtIGdvaW5nIHRvIHJld29yayBhbGwg b2YgdGhpc+KAlGFsc28gdGhhbmtzIGEgbG90IGZvciB0aGUKZmVlZGJhY2sgYW5kIHRoZSBvZmYt bGlzdCBkaXNjdXNzaW9uLCBpdCBleHBvc2VkIGEgbG90IG9mIGZhbGxhY2llcyBpbgpteSBtZW50 YWwgbW9kZWxzIG9mIHRoaW5ncy4KCj4KPiBBcyB0bGRyL3RvcC1sZXZlbCBwb2ludHMgdGhhdCB0 aGlzIGltcGxlbWVudGF0aW9uIHJlYWxseSBzaG91bGQKPiBmb2N1cyBvbiwgbm90IG9ubHkgdG8g YXZvaWQgYSBtYWludGVuYW5jZSBidXJkZW4gd2UgZ290IHRvIHN1cHBvcnQKPiBiYXNpY2FsbHkg Zm9yZXZlciAob3IgaGF2ZSB0byBwYXkgZXZlbiBtb3JlIHRvIG1vdmUgYXdheSBmcm9tKSBidXQK PiBhbHNvIHRvIGhhdmUgYW55IHJlYWxpc3RpYyBjaGFuY2UgdG8gZ2V0IGluIHNvb24gYXJlOgo+ Cj4gLSBXZSBnb3QgYSBTZWN0aW9uQ29uZmlnIGhlcmUgYXMgYmFzZSwgdGhhdCBwcm92aWRlcyB1 cGRhdGUgYW5kCj4gICBjcmVhdGUgc2NoZW1hcyBmb3IgdGhlIHVuZGVybHlpbmcgZGF0YSByZXF1 aXJlZCB0byBjb25maWd1cmUgYQo+ICAgcGx1Z2luLiBXZSBhbHJlYWR5IGRlcml2ZSB0aGUgQ0xJ IFVJIGZyb20gdGhhdCwgc28gaXQgb25seSBtYWtlcwo+ICAgc2Vuc2UgdG8gYWxzbyBkZXJpdmUg dGhlIHdlYiBVSSBmcm9tIHRoYXQsIGl0J3MgdGhlIGVzc2VudGlhbCBiYXNlCj4gICBzY2hlbWEg ZGVmaW5pdGlvbiBhZnRlciBhbGwgYW5kIG9uZSBvZiBvdXIgY29yZSBwcmluY2lwbGVzIGlzIHRv Cj4gICByZXVzZSAoYW5kIGV4dGVuZCBpZiBuZWVkZWQpIHRoaXMgYXMgd2lkZSBhcyBwb3NzaWJs ZSB0byBlbnN1cmUKPiAgIGhhdmluZyBhIHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGggdGhhdCBpcyBt dWNoIGhhcmRlciB0byBnZXQgb3V0ZGF0ZWQKPiAgIHRoYW4gKmFueSogb3RoZXIgYXBwcm9hY2gu Cj4gICBTbywgYmFzaWNhbGx5LCBpZiB3ZSBldmVyIGdvdCBhIHNjaGVtYSBkZWZpbmVkIHNvbWV3 aGVyZSBhbmQgdGhlCj4gICB0YXNrIGlzIHRoYXQgb25lIGNvbmZpZ3VyZXMgZW50aXRpZXMgdGhh dCBhcmUgYmFja2VkIGJ5IHRoYXQgc2NoZW1hCj4gICB0aGVuIGl0J3MgYmFzaWNhbGx5IHNob3Vs ZCBiZSB0aGUgbGFzdCByZXNvcnQgdG8gY3JlYXRlIGEgc2Vjb25kCj4gICBzeXN0ZW0gZm9yIGRv aW5nIHRoYXQuCj4KPiAtIFRoZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhpcyBtdXN0IGJlIGEgTVZQ IChtaW5pbXVtIHZpYWJsZSBwcm9kdWN0KS4KPiAgIEl0IG11c3QgYmUgc2ltcGxlIGFuZCB0aGUg b25seSBjb3JlIGZlYXR1cmUgaXQgbXVzdCBwcm92aWRlIGlzIHRoYXQKPiAgIGEgdXNlciBjYW4g ZW50ZXIgYWxsIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gdmFsdWVzIHdpdGhvdXQgdG91Y2hpbmcK PiAgIHRoZSBDTEkgb3IgQVBJICJtYW51YWxseSIuCj4gICBUaGlzIGNvdWxkIGV2ZW4gYmUganVz dCBhICJkdW1iIiBsaXN0IG9mIGZyZWUgZm9ybSB0ZXh0IGZpZWxkcywKPiAgIGJhc2ljYWxseSB3 aGF0IHRoZSBBQ01FL0ROUyBwbHVnaW4gc3R1ZmYgaXMuIEJ1dCB3ZSBjYW4gdG8gYSBiaXQKPiAg IGJldHRlciB0aGFua3MgdG8gaGF2aW5nIHRoZSBzY2hlbWEgYW5kIGJlaW5nIGFibGUgdG8gYWRk IHRoZSBtb3N0Cj4gICBjcml0aWNhbCBwcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIHByb3ZpZGUgYSBi ZXR0ZXIgVVggKG1vcmUgb24gdGhlbQo+ICAgYmVsb3cpLiBCdXQgZXZlbiB0aGF0ICJkb2luZyBi ZXR0ZXIiIHBhcnQgSSdkIHB1dCBpbiBzZXBhcmF0ZQo+ICAgY29tbWl0cyBidWlsZGluZyBvbiB0 aGlzIGJhc2UgaWRlYSwgYXMgdGhpcyBjYW4gcmVhbGx5IGJlIGRvbmUKPiAgIGluIHN0ZXBzLiBH ZXR0aW5nIHRoZSBleGlzdGluZyBzY2hlbWEgdG8gdGhlIGZyb250ZW5kIGlzIHRoZSBjb3JlCj4g ICBoZXJlLCBzbyBJIHRoaW5rIGl0J2QgYmUgYmVzdCB0byBmb2N1cyBvbiB0aGF0IGZpcnN0Lgo+ Cj4gLSBUbyBnZXQgdGhlICJkdW1iIGZvcm0iIHRoZSBzdG9yYWdlIHBsdWdpbiBpZGVhbGx5IHNo b3VsZCBub3QgaGF2ZQo+ICAgdG8gZG8gYW55dGhpbmcuIFdlIGNhbiBzdGlsbCBhZGQgc29tZSBi YXNpYyByZXF1aXJlbWVudHMgKGxpa2UgbGluawo+ICAgdG8gdXBzdHJlYW0gc3RvcmFnZSBwbHVn aW4gZG9jdW1lbnRhdGlvbiksIHBsdWdpbiBhdXRob3JzIGFscmVhZHkKPiAgIGRlZmluZSB0aGUg c2NoZW1hLiBUaGlzIGNhbiBzdGlsbCBiZSBleHRlbmRlZCBpbiB0aGUgbG9uZyBydW4sIGl0J3MK PiAgIG5vdCBzZXQgaW4gc3RvbmUgYW5kIG11Y2ggZWFzaWVyIHRvIGFkZCB0aGUgZmV3IGFjdHVh bCBtaXNzaW5nCj4gICBmZWF0dXJlcyAoaWRlYWxseSBpbiBhIGRlY2xhcmF0aXZlIHdheSkgb3Zl ciBtb3JlIGNvbXBsZXggc2VwYXJhdGUKPiAgIG1lY2hhbmlzbXMuCj4KPiAtIGZpbmFsbHk6IFN0 b3JhZ2UgZG8gbm90IGdldCBhZGQgaGlnaGx5IGZyZXF1ZW50LCBmb3IgbG90cyAobW9zdD8pCj4g ICBzZXR1cHMgaXQncyBkb25lIG9uY2Ugb24gaW5pdGlhbCBjbHVzdGVyIHNldHVwLCBzaW1wbHkg bm90IHdvcnRoIGl0Cj4gICB0byBzdGFydCBvdXQgdGhpcyBjb21wbGV4IGV2ZW4gaWYgb3VyIHNj aGVtYSB3b3VsZCBiZSBtdWNoIG1vcmUKPiAgIGxpbWl0ZWQsIGJ1dCBpdCB3aWxsIGFsbG93IGZv ciB0aGUgYmFzaWMgVVggbmljZXRpZXMgdGhhdCBtYWtlCj4gICB3aWxsIGFsbG93IHVzIGEgbmlj ZXIgaW1wbGVtZW50YXRpb24gdGhhbiB3aGF0IEFDTUUgRE5TIHByb3ZpZGVzLAo+ICAgd2hpY2gg aXMgYWxzbyBub3QgbGltaXRlZCBieSB0aGUgYmFzaWMgYXBwcm9hY2gsIGJ1dCBtb3N0bHkgYmVj YXVzZQo+ICAgbm9ib2R5IGludmVzdGVkIG1vcmUgdGltZSBpbiBpdCwgbm90IGV2ZW4gaW4gYWRk aW5nIHRoZSBzY2hlbWEKPiAgIGZvciBtb3JlIHBsdWdpbnMgKElJUkMgSSBkaWQgbW9zdCBvZiB0 aGVtLi4uKS4KPgo+IFRoYXQgKG1pbnVzIHNvbWUgZGV0YWlscykgc2hvdWxkIHByb3ZpZGUgdGhl IGJhc2UgZGlyZWN0aW9ucyBmb3IgYW4KPiBpbml0aWFsIGludGVncmF0aW9uLgo+Cj4gPiBJbiBw YXJ0aWN1bGFyLCB0aGUgW3NjaGVtYV0gaXMgc3RhdGljLCB3aXRoIGFsbCBmaWVsZHMgZXhjZXB0 IG9uZSBiZWluZwo+ID4gb2YgdHlwZSAic3RyaW5nIi4gVGhpbmdzIGxpa2UgY2hlY2tib3hlcyBh bmQgZHluYW1pYyBkcm9wZG93biBzZWxlY3Rpb24KPiA+IGJveGVzIGFyZW4ndCByZWFsbHkgYWNj b3VudGVkIGZvciwgc2luY2UgdGhleSdyZSBub3QgbmVlZGVkLgo+Cj4gQXMgbWVudGlvbmVkLCBk eW5hbWljIGRyb3AgZG93biBzZWxlY3Rpb24gYXJlIG5vdCByZWxldmFudCBmb3Igbm93Lgo+IEZv ciBtb3N0IHRoaW5ncyB0aGV5IGFyZSBub3QgcHJhY3RpY2FsIGZvciBleHRlcm5hbCBwbHVnaW5z IGFzIGJhc2ljYWxseQo+IGFsbCBvZiB0aGVtIGFyZSBuZXR3b3JrIHRhcmdldHMgYW5kIHRodXMg b25lIGNhbm5vdCBxdWVyeSBzb21lIHByb3BlcnRpZXMKPiBvbiB0aGUgZmx5IG9mIHRoZSB0YXJn ZXQuIFN0YXRpYyAgRm9yIGNvbmZpZ3VyYXRpb24gY29tYmluYXRpb25zIHRoYXQgCj4KPiA+IAo+ ID4gMi4gVGhlIEFDTUUgRE5TIEFQSSBbZWRpdCB3aW5kb3ddIGlzIGRlc2lnbmVkIGZvciBlZGl0 aW5nIG9uIHRoZSBmbHkuCj4gPiAKPiA+IFRoZSBlbnRpcmUgW3NjaGVtYV0gaXMgZmV0Y2hlZCBh dCBvbmNlIGZyb20gdGhlIGJhY2tlbmQuIFRoZSB3aW5kb3cKPiA+IHJlbWVtYmVycyB3aGljaCBE TlMgQVBJIHRoZSB1c2VyIHNlbGVjdGVkIGFuZCBzdG9yZXMgdGhlIEtWLXBhaXJzIGluIHRoZQo+ ID4gYmFja2dyb3VuZC4gU28gd2hlbiB5b3Ugc3dpdGNoIGJhY2sgYW5kIGZvcnRoIGJldHdlZW4g ZS5nLiAiQ2xvdWRmbGFyZQo+ID4gTWFuYWdlZCBETlMiIGFuZCAiQWxpYmFiYSBDbG91ZCBETlMi LCB0aGUgdmFsdWVzIHlvdSBlbnRlcmVkIGFyZQo+ID4gcmV0YWluZWQuCj4KPiBZZXMsIHRoYXQn cyBnZW5lcmFsbHkgYSBnb29kIHRoaW5nIGFuZCB0aGUgc3dpdGNoaW5nIGRvZXMgbm90IGFwcGx5 IGF0Cj4gYWxsIHRvIHRoZSBzdG9yYWdlIHN5c3RlbSwgd2hlcmUgb25lIGNhbm5vdCBjaGFuZ2Ug dGhlIHN0b3JhZ2UgdHlwZQo+IGR1cmluZyBjcmVhdGluZyBvciBlZGl0aW5nIGEgc3RvcmFnZSBl bnRyeS4gQW5kIGNsZWFyaW5nIHRoZSBmaWVsZHMKPiBiZXR3ZWVuIHN3aXRjaGluZyB3b3VsZCBi ZSB0cml2aWFsIHRvIGRvLCBzbyByZWFsbHkgbm90IHN1cmUgaG93IHRoYXQKPiBjb3VsZCBiZSB1 c2VkIGFzIGFyZ3VtZW50Pwo+Cj4gPiAKPiA+IElmIHlvdSB0aGVuIHN3aXRjaCB0byBhbiBBUEkg d2l0aG91dCBhbnkgZmllbGRzIGluIHRoZSBzY2hlbWEsIHRoZQo+ID4gZXhpc3RpbmcgS1YtcGFp cnMgb2Ygb3RoZXIgcGx1Z2lucyBhcmUgaW5zZXJ0ZWQgaW50byB0aGUgZmFsbGJhY2sgdGV4dAo+ ID4gYXJlYS4gSWYgeW91IHNlbGVjdCBhbiBBUEkgd2l0aCBmaWVsZHMgYWdhaW4sIHRoZSBjb250 ZW50IG9mIHRoZSB0ZXh0Cj4gPiBhcmVhIGlzIHBhcnNlZCBiYWNrIGludG8gdGhlIEtWLXBhaXJz Lgo+ID4gCj4gPiBTbywgYWxzbyBub3Qgc29tZXRoaW5nIHRoYXQncyByZWFsbHkgYXBwbGljYWJs ZSAvIHJldXNhYmxlIGZvciBzdG9yYWdlCj4gPiBwbHVnaW5zLgo+Cj4gSSB0aGluayB0aGVyZSBp cyBhIHNlcmlvdXMgbWlzY29uY2VwdGlvbiBvbiB3aGF0IHJldXNlIG1lYW5zLCBvciBhdCBsZWFz dAo+IHdheSB0byBsaXRlcmFsLiBPbmUgY2FuIHJldXNlIHNtYWxsZXIgcGFydHMgb2YgYSB0aGlu Zywgb25lIGNhbiBhbHNvIHJldXNlCj4gc2VtYW50aWNzIHRvIHByb3ZpZGUgYSBjb2hlcmVudCBz eXN0ZW0gYW5kIG5vdCBhIGRvemVucyBvZiBOSUggb25lcy4KPiBJZiBpdCB3YXMganVzdCBpbnN0 YW50aWF0aW5nIHRoYXQgd2lkZ2V0IHdpdGhvdXQgYW55IGNoYW5nZXMgaXQgd291bGQgaGF2ZQo+ IGJlZW4gbG9uZyBkb25lLCBidXQgYXMgaXQncyBvYnZpb3VzbHkgYSBiaXQgc3BlY2lhbCB0byBB Q01FIEROUyBwbHVnaW5zLCBpdAo+IG5hdHVyYWxseSBuZWVkcyBzb21lIGFkYXB0aW9uIG9yIHJl ZmFjdG9yaW5nIGZvciBhY3R1YWwgY29kZSByZXVzZS4KPiBBbmQgaWRlYWxseSBzb21lIG9mIHRo ZSBpbXByb3ZlbWVudHMgdG8gKFVYKSBwb3NzaWJpbGl0aWVzIHdvdWxkIGZsb3cgYmFjawo+IGlu dG8gQUNNRS4KPgo+ID4+IEZ1cnRoZXIsIEZXSUNUIHRoaXMgc2VlbXMgdG8gYWRkIHNvbWUgcGFy YWxsZWwgaW5mcmEgYW5kIG5lZWQgb2YKPiA+PiBkZWZpbml0aW9ucywgbWlnaHQgd2UgZ2V0IGF3 YXkgd2l0aCAianVzdCIgYW5ub3RhdGluZyB0aGUgZXhpc3RpbmcKPiA+PiBzY2hlbWFzIGEgYml0 IGJldHRlciwgaS5lLiBhZGQgdGhlIGZsYWdzIGZvciBzaWduYWxpbmcgc2VjcmV0cyBhbmQKPiA+ PiBwb3RlbnRpYWxseSBzb21lIGxheW91dCBoaW50cywgYXMgdGhlIGNvcmUgaW1wb3J0YW5jZSBp cyB0byBiZSBhYmxlIHRvCj4gPj4gaW5wdXQgcmVxdWlyZWQgZGF0YSB0byBjb25maWd1cmUgYSBz dG9yYWdlLCBub3QgdGhhdCBpdCBuZWVkcyB0byBsb29rCj4gPj4gInBlcmZlY3QiLCBhdCBsZWFz dCBub3QgaW4gdGhlIGluaXRpYWwgdmVyc2lvbiBvZiB0aGlzIGltcGxlbWVudGF0aW9uLAo+ID4+ IGFzIGFkZGluZyBtb3JlIGZlYXR1cmVzIGFuZCBjb21wbGV4ZXIgbGF5b3V0aW5nIGxhdGVyIG9u LCBlc3BlY2lhbGx5Cj4gPj4gb25jZSB3ZSBnb3QgZmVlZGJhY2sgZnJvbSBpbnRlZ3JhdG9ycyBh bmQgc2VlIGhvdyB0aGV5IHVzZSBpdC4KPiA+IAo+ID4gTWF5YmUgSSBzaG91bGQgY2xhcmlmeSB0 aGF0IHRoZSBjb3JlIHBhcnQgb2YgdGhpcyBSRkMgaXNuJ3QgcmVhbGx5IHRoZQo+ID4gbGF5b3V0 aW5nOiBUaGUgZm9ybSB2aWV3IHNjaGVtYSBhbGxvd3MgZGV2cyB0byBzcGVjaWZ5IHdoaWNoIGNv bHVtbnMgYXJlCj4gPiB1c2VkLCBhbmQgYSBjb2x1bW4gaXMganVzdCBhbiBvYmplY3Qgd2l0aCBh biBhcnJheSBvZiBmaWVsZHMuIFRoZSBmaWVsZHMKPiA+IGFyZSBkaXNwbGF5ZWQgaW4gdGhlIG9y ZGVyIGluIHdoaWNoIHRoZXkgYXBwZWFyIGluIHRoZSBjb2x1bW4uIFRoYXQncwo+ID4gYWJvdXQg YXMgbXVjaCBsYXlvdXRpbmcgYXMgb25lIGNhbiBkbyBhdCB0aGUgbW9tZW50Lgo+ID4gCj4gPiBX aGF0J3MgaW1wb3J0YW50IGFyZSB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIGZpZWxkcyB0aGVtc2Vs dmVzLiBFYWNoCj4gPiBmaWVsZCBjb3JyZXNwb25kcyB0byBhIFNlY3Rpb25Db25maWcgcHJvcGVy dHkgb2YgdGhlIHN0b3JhZ2UgcGx1Z2luIHRoZQo+ID4gZm9ybSBpcyBkZWZpbmVkIGZvci4KPiA+ IAo+ID4gVG8gcHJvdmlkZSBzb21lIGFkZGl0aW9uYWwgY29udGV4dCBiZWZvcmUgSSBjb250aW51 ZSwgbXkgaW5pdGlhbCBpZGVhCj4gPiB3YXMgdG8gKmp1c3QqIGRlZmluZSB3aGF0IFNlY3Rpb25D b25maWcgcHJvcGVydGllcyBhcmUgc2hvd24gaW4gdGhlIFVJCj4gPiBhbmQgaGF2ZSB0aGUgcmVz dCBiZSAiaW5mZXJyZWQiIGluIHNvbWUgd2F5IGZyb20gdGhlIGdsb2JhbCBzZXQgb2YKPiA+IFNl Y3Rpb25Db25maWcgcHJvcGVydGllcy4KPiA+IAo+ID4gVGhhdCBxdWlja2x5IHR1cm5lZCBvdXQg dG8gYmUgYSBodWdlIGNhbiBvZiB3b3JtcywgcmFpc2luZyBhIGxvdCBvZgo+ID4gcXVlc3Rpb25z Ogo+ID4gCj4gPiAtIFNpbmdsZSBTZWxlY3Rpb246Cj4gPiAKPiA+ICAgKiBIb3cgd291bGQgInN0 cmluZyIgdHlwZSBwcm9wZXJ0aWVzIHdob3NlIHZhbHVlIGlzCj4gPiAgICAgZnJvbSBhIHNldCBv ZiBwb3NzaWJsZSBzZWxlY3Rpb24gdmFsdWVzIGJlIHNob3duIGluIHRoZSBVST8KPgo+IGVudW1z IGV4aXN0IGluIG91ciBzY2hlbWEuCj4KPiA+IAo+ID4gICAgICAgV291bGQgbmVlZCBhIGhpbnQg dGhhdCBpdCdzIGEgInNpbmdsZS1zZWxlY3Rpb24iIGZpZWxkIG9yCj4gPiAgICAgICBzb21ldGhp bmcuCj4gPiAKPiA+ICAgKiBIb3cgd291bGQgb25lIHRlbGwgdGhlIFVJIHdoaWNoIHBvc3NpYmxl IHNlbGVjdGlvbiB2YWx1ZXMgdGhlcmUgYXJlPwo+Cj4gc3RhdGljIC0+IGVudW0KPiBkeW5hbWlj IC0+IG5vIHN1cHBvcnRlZCBhcyBjb21ib2JveCBpbiB0aGUgZnJvbnQgZW5kLCB1c2UgYSB0ZXh0 ZmllbGQKPiBhbmQgdGhlIHBsdWdpbiBjYW4gdGhyb3cgYSB0ZWxsaW5nIGVycm9yIG1lc3NhZ2Uu Cj4KPiBGb3Igc29tZSBzcGVjaWZpYyBjYXNlcyB3ZSBjYW4gaW1wcm92ZSBpdCAobGlrZSBiZWlu ZyBhYmxlIHRvIG1hcmsgYQo+IGZpZWxkIG9mIGJlaW5nIGJhY2tlZCBieSB0aGUgc3RvcmFnZSBz Y2FuIEFQSSksIGJ1dCBkZWZpbml0aXZlbHkKPiBzb21ldGhpbmcgZm9yIGxhdGVyIGFuZCBub3Qg dGhlIGZpcnN0IGl0ZXJhdGlvbi4KPgo+ID4gCj4gPiAgICAgICBIYXJkIHRvIGRvIHdpdGgganVz dCBhIGhpbnQgLyBtYXJrZXIsIGFzIHRob3NlIHNlbGVjdGlvbiB2YWx1ZXMKPiA+ICAgICAgIGNh biBiZSBkeW5hbWljLCBlLmcuIHRoZSBwb3NzaWJsZSBzZWxlY3Rpb25zIGZvciB0aGUgInBvb2wi IHByb3Agb2YKPiA+ICAgICAgIHRoZSBaRlNQb29sUGx1Z2luIGFyZSBkZXRlcm1pbmVkIGJ5IGxp c3Rpbmcgd2hpY2ggcG9vbHMgYXJlCj4gPiAgICAgICBhdmFpbGFibGUgdmlhIHRoZSBaRlMgQ0xJ Lgo+ID4gCj4gPiAtIE11bHRpcGxlIFNlbGVjdGlvbnM6Cj4gPiAKPiA+ICAgKiBTYW1lIGFzIGFi b3ZlLCBidXQgd2l0aCBtdWx0aXBsZSBwb3NzaWJsZSBzZWxlY3Rpb24gdmFsdWVzICh1c3VhbGx5 Cj4gPiAgICAgcHJvcGVydGllcyB0aGF0IGhhdmUgYSBmb3JtYXQgd2hvc2UgbmFtZSBlbmRzIHdp dGggIi1saXN0IikuCj4KPiBTbyB5b3UgdGVsbCBtZSB0aGUgc2NoZW1hIGtub3dzIHRoaXMgYWxy ZWFkeSwgYnV0IHlvdSBjYW5ub3QgdXNlIGl0Cj4gZm9yIGRlcml2aW5nIHRoYXQ/IQo+Cj4gPiAK PiA+IC0gU2Vuc2l0aXZlIFByb3BlcnRpZXM6Cj4gPiAKPiA+ICAgKiBIb3cgc2hvdWxkIHNlbnNp dGl2ZSBwcm9wZXJ0aWVzIGJlIHNob3duIGluIHRoZSBVST8KPgo+IEV2ZW4gaWYgKGh5cG90aGV0 aWNhbGx5KSB5b3Ugc2hvdyB0aGVtIGluIHBsYWluIGl0J3MgT0ssIGFzIGVpdGhlciB0aGUKPiBB UEkgc2VuZHMgaXQgb3Igbm90LCBzbyB0aGUgY2xpZW50IGlzIGFscmVhZHkgYWxsb3dlZCB0byBz ZWUgaXQsIG9yIGl0J3MKPiBhbiBBUEkgYnVnIGFueXdheS4KPgo+IEJlaW5nIGFibGUgdG8gYW5u b3RhdGUgdGhlIHNjaGVtYSB3aXRoIGEgZmxhZyB0byBtYXJrIHNvbWV0aGluZyBhcyBzZWNyZXQK PiBpcyBpbiB0aGUgbWlkdGVybSBuYXR1cmFsbHkgYmV0dGVyLCBhcyBsb25nIGFzIHdlIGRvIG5v dCBoYXZlIHByb3BlcnRpZXMKPiB0aGF0IGR5bmFtaWNhbGx5IHdhbnQgdG8gYmUgc2VjcmV0IG9y IG5vdCB3ZSBoYXZlIG5vIHByb2JsZW0gaGVyZS4KPiBBbmQgbHVja2lseSB3ZSBhbHJlYWR5IGdv dCAnc2Vuc2l0aXZlLXByb3BlcnRpZXMnIGF2YWlsYWJsZSBmb3IgcGx1Z2lucy4KPgo+ID4gCj4g PiAgICAgICBXZSBjdXJyZW50bHkgZG8gbm90IGRvIHRoYXQgdW5pZm9ybWx5LCBlLmcuIHRoZSAi UGFzc3dvcmQiIGZpZWxkCj4gPiAgICAgICBvZiB0aGUgRVNYaSBpbXBvcnRlciBhbHdheXMgaGFz IGBpbnB1dFR5cGU6ICdwYXNzd29yZCdgIHdoZXRoZXIKPiA+ICAgICAgIHlvdSdyZSBjcmVhdGlu ZyBvciBlZGl0aW5nIGl0LCB3aGVyZWFzIHRoZSAiS2V5cmluZyIgZmllbGQgb2YgdGhlCj4gPiAg ICAgICBSQkQgc3RvcmFnZSBpcyBkaXNwbGF5ZWQgZHVyaW5nIGNyZWF0aW9uIGJ1dCBpc24ndCBz aG93biBub3IKPiA+ICAgICAgIGVkaXRhYmxlIHdoZW4gZWRpdGluZyBpdCAoYW1vbmdzdCBvdGhl ciB0aGluZ3MpLgo+Cj4gWWVhaCwgb3VyIHBsdWdpbnMgdXNlIHRoZSBmYWN0IHRoYXQgdGhleSBh cmUgbmF0aXZlIGZvciB1cyBhbmQgY2FuIGdldAo+IGEgZmlyc3QgY2xhc3MgaW50ZWdyYXRpb24s IHRoaXJkIHBhcnR5IHBsdWdpbnMgd2lsbCBnZXQgbm90IGdldCB0aGUgc2FtZQo+IGZ1bGwgY29u dHJvbCBldmVyLCBhcyB0aGF0J3MgYmFzaWNhbGx5IGdpdmluZyB0aGVtIGZyZWUgcmVpZ24gb3Zl ciB0aGUKPiB1c2VycyBicm93c2VyLCB3aGljaCBpcyBhIG5vIGdvLCBhbmQgZXZlbiB5b3VyIGRl c2lnbiB3aWxsIGxpbWl0IHRoZQo+IGltcGxlbWVudGF0aW9uIHRvIG5vdCBiZSBhYmxlIHRvIGxl dmVyYWdlIHRoZSBmdWxsIGNhcGFiaWxpdGllcyBvZiBlYWNoCj4gVUkgdGVjaCAoRXh0SlMsIFll dywgb3Igc2F5IEZsdXR0ZXIsIHdobyBrbm93cyB3aGF0J3MgdGhlcmUgaW4gdGhlIGxvbmcKPiB0 ZXJtIGZ1dHVyZSkKPgo+IEFuZCB0aGF0J3MgYWxzIHdoeSBJIGRlZmluaXRpdmVseSB3b24ndCBz ZWUgZ2V0dGluZyBpbXBsZW1lbnRlZCB0aHJvdWdoCj4gc3VjaCBhIG1lY2hhbmlzbSwgYXMgYSBu YXRpdmUgVUkgaW1wbGVtZW50YXRpb24gY2FuIGJlIGFsd2F5cyBtYWRlIGJldHRlcgo+IG92ZXIg YSBnZW5lcmF0ZWQgb25lLCBlc3BlY2lhbGx5IHdpdGggc3BlY2lmaWMgVVgvaGludHMvLi4uKSwg YW5kIHdlCj4gYWxyZWFkeSBnb3Qgb3VyIGltcGxlbWVudGF0aW9ucyBhbmQgYXJlIGhhcHB5IHdp dGggdGhlbSwgc28gemVybyBuZWVkCj4gdG8gc3dpdGNoIHRoZW0gdG8gc29tZXRoaW5nIG1vcmUg cmVzdHJpY3RpdmUuCj4KPiA+IAo+ID4gVGhlIGxpc3QgZ29lcyBvbjsgSSB0aGluayB5b3UgZ2V0 IHRoZSBpZGVhLiA6UAo+Cj4gTm8sIHRvIGJlIGhvbmVzIEkgcmVhbGx5IGRvIG5vdCBnZXQgdGhl IGlkZWEgb3IgYXJndW1lbnRzIGZyb20gdGhhdC4KPgo+IFRoaXMgcmF0aGVyIHJlYWRzIHRvIG1l IGFzIHlvdSBkaWQgbm90IHJlYWxseSBjaGVja2VkIG91dCB3aGF0IHRoZQo+IGV4aXN0aW5nIHNj aGVtYSBjYXBhYmlsaXRpZXMgbWlnaHQgcHJvdmlkZSB5b3UgZm9yIHRoaXMgZmVhdHVyZSwgYnV0 Cj4gd2F5IHRvIGZhc3Qgc3dpdGNoZWQgdG8gImZ1bGx5IGN1c3RvbSBEU0wgc2NoZW1hIGxpa2Ug cGFyYWxsZWwKPiBpbXBsZW1lbnRhdGlvbiIgKHRvIGV4YWdnZXJhdGUpIHJhdGhlciB0aGFuIGNh biBjaGVja2luZyBpZiB0aGVyZSBpcwo+IGFscmVhZHkgaW5mbyBmb3IgbW9zdCBiYXNpYyBVWCBv ciBob3cgb25lIGNhbiBhZGQgdGhlIGZldyBVSSBzcGVjaWZpYwo+IGZsYWdzIHRvIHRoZSBzY2hl bWEgbmVlZGVkIHRvIHByb3ZpZGUgYSBtb3JlIHRoYW4gZ29vZCBlbm91Z2ggVVguCj4gQWxzbyBt aXNzaW5nIHRoZSBjb3JlIHByaW5jaXBsZSBvZiBvdXIgY29uZmlncyBiZWluZyByZXByZXNlbnRl ZCBieQo+IGEgc2luZ2xlIHNjaGVtYSB0aGF0IGlzIHJldXNlZCBhcyBtdWNoIGFzIHBvc3NpYmxl LCBhbmQgZGVmaW5pdGl2ZWx5Cj4gbXVzdCBiZSB0aGUgYmFzZSBzb3VyY2UgZm9yIGEgYXV0byBn ZW5lcmF0ZWQgVUkgZm9yIGV4dGVybmFsIHBsdWdpbnMuCj4KPiBJIGtub3cgaXQncyBmdW4gdG8g aW1wbGVtZW50IG5ldyB0aGluZ3Mgd2l0aG91dCBoYXZpbmcgdG8gYmUgYm90aGVyZWQKPiBieSBl eGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgYW5kIHRoZWlyIGNhcGFiaWxpdGllcywgYnV0IHRoaXMg aXMgc2ltcGx5Cj4gbm90IGEgZ3JlZW5maWVsZCBwcm9qZWN0Lgo+Cj4gPiBTbywgaW5zdGVhZCBv ZiBtYWtpbmcgcG9zc2libHkgcmVzdHJpY3RpdmUgZGVzaWduIGRlY2lzaW9ucyBmb3IgdXNlCj4g PiBjYXNlcyBJJ20gbm90IGV2ZW4gYXdhcmUgb2YsIEkgaW5zdGVhZCBjaG9zZSB0aGlzICJtYW51 YWwiIHdheSBvZgo+ID4gZGVmaW5pbmcgdGhlIGZvcm0gdmlldywgc2lkZXN0ZXBwaW5nIGFsbCB0 aG9zZSBxdWVzdGlvbnMuCj4KPiBBcyB0YWxrZWQgb2ZmIGxpc3Q6IGxldCdzIHBsZWFzZSBzdGFy dCBvdXQgd2l0aCB1c2luZyB0aGUgc2NoZW1hCj4gZGlyZWN0bHksIHRoZSBmaXJzdCBpdGVyYXRp b24gbWlnaHQgYmUgYXMgd2VsbCBjb25zaXN0IG9mIHR3byBwYXRjaGVzLAo+IG9uZSBmb3Igc3Rv cmFnZSB0byBleHBvc2UgdGhlIGNyZWF0ZS91cGRhdGUgc2NoZW1hIGFuZCBvbmUgZm9yIG1hbmFn ZXIKPiB0byB1c2UgdGhhdCBpbXBsZW1lbnRpbmcgdGhlIFVJIChjYW4ganVzdCBjb3B5K2FkYXB0 IHRoZSByZWxldmFudCBwYXJ0cwo+IGZyb20gQUNNRSBmb3IgYSBXSVAgUkZDKS4gTW9sZGluZyB0 aGF0IGluIHNvbWV0aGluZyB3aXRoIGEgYml0IG1vcmUgVVgKPiBzaG91bGQgbm90IGJlIHRoYXQg bXVjaCB3b3JrLiBXZSBnb3QgbWFueSBpbmZvIGFscmVhZHkgaW4gdGhlIHNjaGVtYSwKPiBpLmUu IHNlbnNpdGl2ZS1wcm9wZXJ0aWVzLCBwcm9wZXJ0aWVzIGJlaW5nICJmaXhlZCIgKGNyZWF0ZSBv bmx5KSBvcgo+IG5vdCAoY2FuIGJlIHVwZGF0ZWQgb24gZWRpdCkuIE9uZSB0aGluZyB0aGF0IG1p Z2h0IG1pc3MgaXMgYSBsYWJlbCwgYnV0Cj4gZm9yIHN0YXJ0ZXJzIEknZCBub3QgY2FyZSAoYW5k IElJUkMgd2UgZ290IHNvbWUgc2NoZW1hIHByb3BlcnRpZXMgZm9yCj4gc29tZSBoaW50cywgc28g d2UgbWF5YmUgbWlnaHQgZXZlbiByZXVzZSBhbiBleGlzdGluZyBvbmUgb3IgYWRkIGEKPiBkZWRp Y2F0ZWQgbGFiZWwgb25lKSwgc28gZXZlbiBzb21lIHNsaWdodGx5IGltcHJvdmVkIFVYIHRvIGdl dCBtb3JlCj4gZnJvbnRlbmQgY2hlY2tzIHRoYXQgcmVkdWNlIHVzYWdlIGZyaWN0aW9uIGNhbiBi ZSBhZGRlZCBub3cgYWxyZWFkeS4KPgo+IFRoZSBzaW5nbGUgdGhpbmcgSSdtIGFjdHVhbGx5IGEg Yml0IHdvcnJpZWQgYWJvdXQgaXMgc3RvcmFnZSBub3QgdXNpbmcKPiBwcm9wZXJ0eSBpc29sYXRp b24gZm9yIHRoZSBzZWN0aW9uIGNvbmZpZ3MsIGJ1dCBpZiB0aGF0IHdvdWxkIGJlIGluZGVlZAo+ IGEgYmxvY2tlciB0aGVuIEknZCBwcmlvcml0aXplIGl0IG5vdywgYXMgdGhhdCdzIHdpbGwgbmV2 ZXIgZ2V0IGVhc2llcgo+IHRvIGNoYW5nZSwgb24gdGhlIGNvbnRyYXJ5LCB0aGUgbW9yZSBleHRl cm5hbCBkZXZzLCBwbHVnaW5zIGFuZCBzdG9yYWdlCj4gZmVhdHVyZXMgd2UgZ290LCB0aGUgaGFy ZGVyIGl0IHdpbGwgYmUgdG8gY2hhbmdlLiAKPgo+ID4gKkZvciBub3cqIHRoaXMgYWxzbyBzZWVt cyB0byBiZSB0aGUgc2ltcGxlciwgYW5kIG1vcmUgaW1wb3J0YW50bHksIG1vcmUKPiA+IG1haW50 YWluYWJsZSBvcHRpb24sIHNpbmNlIHRoaW5ncyByZWxhdGVkIHRvIHRoZSBVSSBhcmVuJ3QgY291 cGxlZCB0bwo+ID4gdGhlIFNlY3Rpb25Db25maWcgZGVmaW5pdGlvbnMgKGJlc2lkZXMgc3BlY2lm eWluZyB3aGF0IHByb3BlcnR5IGEgZmllbGQKPiA+IGNvcnJlc3BvbmRzIHRvKS4gSSB0aGluayB0 aGF0IHRoaXMgYXBwcm9hY2ggbWFrZXMgaXQgb3ZlcmFsbCBlYXNpZXIgZm9yCj4gPiB0aGlyZC1w YXJ0eSBwbHVnaW4gZGV2cyB0byBpbnRlZ3JhdGUgdGhlaXIgcGx1Z2luIGludG8gdGhlIEdVSSwg YW5kIGl0J3MKPiA+IHNvbWV0aGluZyB3ZSBjb3VsZCBldmVudHVhbGx5IGFsc28gYWRvcHQgZm9y IG1vc3Qgb2Ygb3VyIG93biBwbHVnaW5zLgo+Cj4gVGhlcmUgaXMgYWx3YXlzIGEgY291cGxpbmcg YmV0d2VlbiB0aGUgc2VjdGlvbiBjb25maWcgc2NoZW1hIGFuZCB0aGUgVUksCj4gYXMgdGhlIGxh dHRlciAqaXMqIGp1c3QgYW4gaW50ZXJmYWNlIGZvciB0aGUgZm9ybWVyLCB0aGF0J3Mgbm90aGlu ZyB0bwo+IGFyZ3VlIGFib3V0LCBpdCBzaW1wbHkgKmhhcyB0byBiZSouCj4gSGlkaW5nIHRoYXQs IGxpa2UgeW91IHRyeSB0byBkbyBoZXJlLCBpcyBqdXN0IGFkZGluZyBoaWRkZW4gY291cGxpbmcs Cj4gd2hpY2ggaGFzIHNvbWUgZ29vZCBwb3RlbnRpYWwgdG8gYmVjb21lIGEgUElUQSB0byBtYW5h Z2UgZm9yIHVzIGFuZCBhbHNvCj4gZGV2cyB1c2luZyB0aGlzLgo+Cj4gPj4gQXMgaXQncyBtdWNo IGVhc2llciB0byBzZWUgd2hhdCdzIHJlYWxseSByZXF1aXJlZCBhbmQgd2hhdCBtaWdodCBiZQo+ ID4+IHJhdGhlciBhIChub3QgbXVjaCB1c2VkKSBoZWFkYWNoZSB0byBtYWludGFpbiBzdXBwb3J0 IGZvciBpbiBFeHRKUwo+ID4+IGFuZCBhIGZ1dHVyZSBZZXcgYmFzZWQgVUkuIEkuZS4sIEknZCBi ZSB0b3RhbGx5IGZpbmUgaWYgdGhlIGluaXRpYWwKPiA+PiB2ZXJzaW9uIHdvdWxkIGJhc2ljYWxs eSBsb29rIGxpa2Ugd2hhdCB0aGUgQUNNRSBETlMgcGx1Z2luIFVJIGRvZXMsCj4gPj4gZm9jdXNp bmcgcHVyZWx5IG9uIHJlcXVpcmVkIHBhcmFtZXRlcnMsIGRhdGEgdHlwZXMgYW5kIHZhbGlkYXRp b24KPiA+PiBvdmVyIGxheW91dC4KPiA+IAo+ID4gSSB0b3RhbGx5IGdldCB5b3VyIHBvaW50IGhl cmUsIGFuZCB0aGUgZm9jdXMgaXMgb24gZXhhY3RseQo+ID4gdGhhdOKAlHdoZXRoZXIgb3Igbm90 IHRoZSBjb2x1bW5zIGFyZSBpbiB0aGUgc2NoZW1hIGRvZXNuJ3QgcmVhbGx5IG1ha2UKPiA+IGFu eSBkaWZmZXJlbmNlIElNSE8uCj4KPiBZZWFoLCBkb24ndCBmb2N1cyBvbiB0aGUgY29sdW1ucywg dGhhdCdzIHRoZSBsZWFzdCBvZiBvdXIgcHJvYmxlbXMKPiBoZXJlLgo+Cj4gSW4gY29uY2x1c2lv bjogbGV0J3MgZ2V0IGEgc2ltcGxlIGltcGxlbWVudGF0aW9uIG91dCBzb29uZXIgdGhhdCBoYXMK PiBtaW5pbWFsIGNvZGUgY2hhbmdlcywgd2UgY2FuIGFsd2F5cyBleHRlbmQgdGhhdCwgYm90aCBp biBzY2hlbWEKPiBjYXBhYmlsaXRpZXMgb3IgZXZlbiBpbiBvdmVyYWxsIGFwcHJvYWNoLiBJdCdz ICptdWNoKiBlYXNpZXIgdG8ga2VlcAo+IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgc3VwcG9ydCBm b3Igc29tZXRoaW5nIGFzIHNpbXBsZSB0aGF0IHdlIGhhdmUKPiB0byBzdXBwb3J0IGFueXdheSAo aS5lLiwgdGhlIHNlY3Rpb24gY29uZmlnIHNjaGVtYSksIHNvIGV2ZW4gaWYgaXQgdHVybnMKPiBv dXQgdGhhdCBpdCBqdXN0IGhhcyB0byBiZSBzb21lIGRlZGljYXRlZCBVSSBzcGVjaWZpYyBzY2hl bWEgc3R1ZmYgd2l0aAo+IGx1YSBzY3JpcHRpbmcgYW5kIHdoYXQgbm90LCB3ZSBjb3VsZCBzdGls bCBkbyBpdCwgYnV0IGdpdmVuIHRoZSBleGlzdGluZwo+IHNjaGVtYSBzdGF0ZSBhbmQgY2FwYWJp bGl0eSBJIHJlYWxseSBkbyBub3Qgc2VlIGFueSBuZWVkIGZvciBzdGFydGluZwo+IG91dCB3aXRo IGFueXRoaW5nIGxpa2UgdGhhdC4KCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJv eG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGlu Zm8vcHZlLWRldmVsCg==