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 030B41FF17C for <inbox@lore.proxmox.com>; Wed, 2 Apr 2025 18:32:32 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 498981F50D; Wed, 2 Apr 2025 18:32:21 +0200 (CEST) Mime-Version: 1.0 Date: Wed, 02 Apr 2025 18:32:14 +0200 Message-Id: <D8WAPCS94G4A.1WS3C5TSFLL8R@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-8-m.carrara@proxmox.com> <1743431702.wltqcu20kr.astroid@yuna.none> In-Reply-To: <1743431702.wltqcu20kr.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.322 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 7/8] pluginbase: document volume operations 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> T24gTW9uIE1hciAzMSwgMjAyNSBhdCA1OjEyIFBNIENFU1QsIEZhYmlhbiBHcsO8bmJpY2hsZXIg d3JvdGU6Cj4gT24gTWFyY2ggMjYsIDIwMjUgMzoyMCBwbSwgTWF4IENhcnJhcmEgd3JvdGU6Cj4g PiBBZGQgZG9jc3RyaW5ncyBmb3IgdGhlIGZvbGxvd2luZyBtZXRob2RzOgo+ID4gLSBsaXN0X3Zv bHVtZXMKPiA+IC0gZ2V0X3ZvbHVtZV9hdHRyaWJ1dGUKPiA+IC0gdXBkYXRlX3ZvbHVtZV9hdHRy aWJ1dGUKPiA+IC0gdm9sdW1lX3NpemVfaW5mbwo+ID4gLSB2b2x1bWVfcmVzaXplCj4gPiAtIHZv bHVtZV9zbmFwc2hvdAo+ID4gLSB2b2x1bWVfc25hcHNob3RfaW5mbwo+ID4gLSB2b2x1bWVfcm9s bGJhY2tfaXNfcG9zc2libGUKPiA+IC0gdm9sdW1lX3NuYXBzaG90X3JvbGxiYWNrCj4gPiAtIHZv bHVtZV9zbmFwc2hvdF9kZWxldGUKPiA+IC0gdm9sdW1lX3NuYXBzaG90X25lZWRzX2ZzZnJlZXpl Cj4gPiAtIHN0b3JhZ2VfY2FuX3JlcGxpY2F0ZQo+ID4gLSB2b2x1bWVfaGFzX2ZlYXR1cmUKPiA+ IC0gbWFwX3ZvbHVtZQo+ID4gLSB1bm1hcF92b2x1bWUKPiA+IC0gYWN0aXZhdGVfdm9sdW1lCj4g PiAtIGRlYWN0aXZhdGVfdm9sdW1lCj4gPiAtIHJlbmFtZV92b2x1bWUKPiA+IC0gcHJ1bmVfYmFj a3Vwcwo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYXggQ2FycmFyYSA8bS5jYXJyYXJhQHByb3ht b3guY29tPgo+ID4gQ28tYXV0aG9yZWQtYnk6IE1heGltaWxpYW5vIFNhbmRvdmFsIDxtLnNhbmRv dmFsQHByb3htb3guY29tPgo+ID4gLS0tCj4gPiAgc3JjL1BWRS9TdG9yYWdlL1BsdWdpbkJhc2Uu cG0gfCA0MDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ID4gIDEgZmlsZSBj aGFuZ2VkLCAzODggaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYg LS1naXQgYS9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luQmFzZS5wbSBiL3NyYy9QVkUvU3RvcmFnZS9Q bHVnaW5CYXNlLnBtCj4gPiBpbmRleCAzN2IxNDcxLi5hMWJmYzhkIDEwMDY0NAo+ID4gLS0tIGEv c3JjL1BWRS9TdG9yYWdlL1BsdWdpbkJhc2UucG0KPiA+ICsrKyBiL3NyYy9QVkUvU3RvcmFnZS9Q bHVnaW5CYXNlLnBtCj4gPiBAQCAtODYxLDEwOCArODYxLDQ4MyBAQCBzdWIgZnJlZV9pbWFnZSB7 Cj4gPiAgCj4gPiAgPWN1dAo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5saXN0X3ZvbHVtZXMo JHN0b3JlaWQsIFwlc2NmZywgJHZtaWQsIFxAY29udGVudF90eXBlcykKPiA+ICsKPiA+ICtCPFJF UVVJUkVEOj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ ICsKPiA+ICtSZXR1cm5zIGEgbGlzdCBvZiB2b2x1bWVzIGZvciB0aGUgZ2l2ZW4gZ3Vlc3Qgd2hv c2UgY29udGVudCB0eXBlIGlzIHdpdGhpbiB0aGUKClVwZnJvbnQgbm90ZTogVW5sZXNzIEkgb3Ro ZXJ3aXNlIGNvbW1lbnQgc29tZXRoaW5nLCBJIGFncmVlIHdpdGggeW91LgpKdXN0IHNwYXJpbmcg bXlzZWxmIGZyb20gd3JpdGluZyBhbmQgeW91IGZyb20gcmVhZGluZyB0b28gbWFueSBBQ0tzIDpQ Cgo+Cj4gdGhpcyBpcyB3cm9uZyAtIHdoYXQgaWYgJHZtaWQgaXMgbm90IHNldD8gb3IgaWYgY29u dGVudCB0eXBlIGlzIHNuaXBwZXRzCj4gb3Igb25lIG9mIG90aGVyIG9uZXMgdGhhdCBkb24ndCBo YXZlIGFuIGFzc29jaWF0ZWQgZ3Vlc3Qvb3duZXI/IG9yIHdoYXQKPiBpZiB0aGVyZSBpcyBubyAk dm1pZCBnaXZlbiwgYXMgaW4gdGhlIGV4YW1wbGUgYmVsb3c/CgpSaWdodCwgdGhhbmtzIGZvciBz cG90dGluZyB0aGlzIHRvby4KCj4KPiA+ICtnaXZlbiBDPFxAY29udGVudF90eXBlcz4uIElmIEM8 XEBjb250ZW50X3R5cGVzPiBpcyBlbXB0eSwgbm8gdm9sdW1lcyB3aWxsIGJlCj4gPiArcmV0dXJu ZWQuIFNlZSBDPEw8PCBwbHVnaW5kYXRhKCl8LyIkcGx1Z2luLT5wbHVnaW5kYXRhKCkiID4+PiBm b3IgYWxsIGNvbnRlbnQgdHlwZXMuCj4KPiBoZXJlIHdlIGFyZSBhY3R1YWxseSB0YWxraW5nIGFi b3V0IGNvbnRlbnQgdHlwZXMgZm9yIG9uY2UgKGFuZCB0aGlzIGFsc28KPiB0cmFuc2xhdGVzIGZy b20gY29udGVudCB0eXBlICJpbWFnZXMiIGFuZCAicm9vdGRpciIgdG8gdm9sdW1lIHR5cGUKPiAi aW1hZ2VzIiEgaW4gUFZFOjpQbHVnaW4hKS4KPgo+ID4gKwo+ID4gKyAgICAjIExpc3QgYWxsIGJh Y2t1cHMgZm9yIGEgZ3Vlc3QKPiA+ICsgICAgbXkgJGJhY2t1cHMgPSAkcGx1Z2luLT5saXN0X3Zv bHVtZXMoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCwgWydiYWNrdXAnXSk7Cj4gPiArCj4gPiArICAg ICMgTGlzdCBhbGwgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcyBvbiB0aGUgc3RvcmFn ZQo+ID4gKyAgICBteSAkZ3Vlc3RzID0gJHBsdWdpbi0+bGlzdF92b2x1bWVzKCRzdG9yZWlkLCAk c2NmZywgdW5kZWYsIFsncm9vdGRpcicsICdpbWFnZXMnXSkKPgo+IGVoLCB0aGlzIGlzIGEgYmFk IGV4YW1wbGU/IGl0IGRvZXNuJ3QgbGlzdCB0aGUgZ3Vlc3RzLCBpdCBsaXN0cyB0aGVpcgo+IHZv bHVtZXMuLgo+Cj4gPiArCj4gPiArVGhlIHJldHVybmVkIGxpc3RyZWYgb2YgaGFzaHJlZnMgaGFz IHRoZSBmb2xsb3dpbmcgc3RydWN0dXJlOgo+ID4gKwo+ID4gKyAgICBbCj4gPiArCXsKPiA+ICsJ ICAgIGNvbnRlbnQgPT4gImltYWdlcyIsCj4gPiArCSAgICBjdGltZSA9PiAiMTcwMjI5ODAzOCIs ICMgY3JlYXRpb24gdGltZSBhcyB1bml4IHRpbWVzdGFtcAo+ID4gKwkgICAgZm9ybWF0ID0+ICJy YXciLAo+ID4gKwkgICAgc2l6ZSA9PiA5NjYzNjc2NDE2LCAjIGluIGJ5dGVzIQo+ID4gKwkgICAg dm1pZCA9PiAxMDIsCj4gPiArCSAgICB2b2xpZCA9PiAibG9jYWwtbHZtOnZtLTEwMi1kaXNrLTAi LAo+ID4gKwl9LAo+ID4gKwkjIFsuLi5dCj4gPiArICAgIF0KPiA+ICsKPiA+ICtCYWNrdXBzIHdp bGwgYWxzbyBjb250YWluIGFkZGl0aW9uYWwga2V5czoKPiA+ICsKPiA+ICsgICAgWwo+ID4gKwl7 Cj4gPiArCSAgICBjb250ZW50ID0+ICJiYWNrdXAiLAo+ID4gKwkgICAgY3RpbWUgPT4gMTc0MjQw NTA3MCwgIyBjcmVhdGlvbiB0aW1lIGFzIHVuaXggdGltZXN0YW1wCj4gPiArCSAgICBmb3JtYXQg PT4gInRhci56c3QiLAo+ID4gKwkgICAgbm90ZXMgPT4gIi4uLiIsICMgY29tbWVudCB0aGF0IHdh cyBlbnRlcmVkIHdoZW4gYmFja3VwIHdhcyBjcmVhdGVkCj4gPiArCSAgICBzaXplID0+IDMyODkw Njg0MCwgIyBpbiBieXRlcyEKPiA+ICsJICAgIHN1YnR5cGUgPT4gImx4YyIsICMgImx4YyIgZm9y IGNvbnRhaW5lcnMsICJxZW11IiBmb3IgVk1zCj4gPiArCSAgICB2bWlkID0+IDEwNiwKPiA+ICsJ ICAgIHZvbGlkID0+ICJsb2NhbDpiYWNrdXAvdnpkdW1wLWx4Yy0xMDYtMjAyNV8wM18xOS0xOF8y NF8zMC50YXIuenN0IiwKPiA+ICsJfSwKPiA+ICsJIyBbLi4uXQo+ID4gKyAgICBdCj4KPiBzb29v by4uIHdoYXQgaXMgdGhlIGludGVyZmFjZSBoZXJlIGFnYWluPyAtPiBuZWVkcyBhIChjb21wbGV0 ZSkgc2NoZW1hCj4gZm9yIHRoZSByZXR1cm5lZCB0eXBlLCBlbHNlIGhvdyBhbSBJIHN1cHBvc2Vk IHRvIGltcGxlbWVudCB0aGlzPwoKSSBtZWFuLCB3ZSBjb3VsZCBkZWZpbmUgb25lLiBJIGRpZG4n dCB3YW50IHRvIGNsb2JiZXIgdGhlIGRvY3N0cmluZyB3aXRoCnRvbyBtYW55IGV4YW1wbGVzIC8g dG9vIG11Y2ggdGV4dCBoZXJlLCBidXQgSSBhZ3JlZS4KCj4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiAr Cj4gPiAgc3ViIGxpc3Rfdm9sdW1lcyB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAk c2NmZywgJHZtaWQsICRjb250ZW50X3R5cGVzKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1wbGVt ZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiAtIyBSZXR1cm5zIHVuZGVm IGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IHN1cHBvcnRlZCBmb3IgdGhlIHZvbHVtZS4KPiA+IC0j IFNob3VsZCBkaWUgaWYgdGhlcmUgaXMgYW4gZXJyb3IgZmV0Y2hpbmcgdGhlIGF0dHJpYnV0ZS4K PiA+IC0jIFBvc3NpYmxlIGF0dHJpYnV0ZXM6Cj4gPiAtIyBub3RlcyAgICAgLSB1c2VyLXByb3Zp ZGVkIGNvbW1lbnRzL25vdGVzLgo+ID4gLSMgcHJvdGVjdGVkIC0gbm90IHRvIGJlIHJlbW92ZWQg YnkgZnJlZV9pbWFnZSwgYW5kIGZvciBiYWNrdXBzLCBpZ25vcmVkIHdoZW4gcHJ1bmluZy4KPiA+ ICs9aGVhZDMgJHBsdWdpbi0+Z2V0X3ZvbHVtZV9hdHRyaWJ1dGUoXCVzY2ZnLCAkc3RvcmVpZCwg JHZvbG5hbWUsICRhdHRyaWJ1dGUpCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPmdldF92b2x1 bWVfYXR0cmlidXRlKC4uLikKPiA+ICsKPiA+ICtCPFJFUVVJUkVEOj4gTXVzdCBiZSBpbXBsZW1l bnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtSZXR1cm5zIHRoZSB2YWx1 ZSBvZiB0aGUgZ2l2ZW4gQzwkYXR0cmlidXRlPiBmb3IgYSB2b2x1bWUuIElmIHRoZSBhdHRyaWJ1 dGUgaXNuJ3QKPiA+ICtzdXBwb3J0ZWQgZm9yIHRoZSB2b2x1bWUsIHJldHVybnMgQzx1bmRlZj4u Cj4gPiArCj4gPiArQzxkaWU+cyBpZiB0aGVyZSBpcyBhbiBlcnJvciBmZXRjaGluZyB0aGUgYXR0 cmlidXRlLgo+ID4gKwo+ID4gK0I8UG9zc2libGUgYXR0cmlidXRlczo+Cj4gPiArCj4gPiArPW92 ZXIKPiA+ICsKPiA+ICs9aXRlbSAqIEM8bm90ZXM+IChyZXR1cm5zIHNjYWxhcikKPgo+IHNjYWxh ciAqc3RyaW5nKiA/Cj4gPiArCj4gPiArVXNlci1wcm92aWRlZCBjb21tZW50cyAvIG5vdGVzLgo+ ID4gKwo+ID4gKz1pdGVtICogQzxwcm90ZWN0ZWQ+IChyZXR1cm5zIHNjYWxhcikKPgo+IHNjYWxh ciAqYm9vbGVhbiogPwo+Cj4gPiArCj4gPiArV2hlbiBzZXQgdG8gQzwxPiwgdGhlIHZvbHVtZSBt dXN0IG5vdCBiZSByZW1vdmVkIGJ5IEM8TDw8IGZyZWVfaW1hZ2UoKXwvIiRwbHVnaW4tPmZyZWVf aW1hZ2UoLi4uKSIgPj4+Lgo+ID4gK0JhY2t1cHMgd2l0aCBDPHByb3RlY3RlZD4gc2V0IHRvIEM8 MT4gYXJlIGlnbm9yZWQgd2hlbiBwcnVuaW5nLgo+Cj4gQmFja3VwIHZvbHVtZXMgLi4gd2hlbiBj YWxjdWxhdGluZyB3aGljaCBiYWNrdXAgdm9sdW1lcyB0byBwcnVuZS4KPgo+ID4gKwo+ID4gKz1i YWNrCj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiBnZXRfdm9sdW1lX2F0dHJpYnV0ZSB7 Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRhdHRyaWJ1 dGUpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ ID4gIH0KPiA+ICAKPiA+IC0jIERpZXMgaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3Qgc3VwcG9ydGVk IGZvciB0aGUgdm9sdW1lLgo+ID4gKz1oZWFkMyAkcGx1Z2luLT51cGRhdGVfdm9sdW1lX2F0dHJp YnV0ZShcJXNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJGF0dHJpYnV0ZSwgJHZhbHVlKQo+ID4g Kwo+ID4gKz1oZWFkMyAkcGx1Z2luLT51cGRhdGVfdm9sdW1lX2F0dHJpYnV0ZSguLi4pCj4gPiAr Cj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBw bHVnaW4uCj4gPiArCj4gPiArU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIEM8JGF0dHJpYnV0 ZT4gZm9yIGEgdm9sdW1lIHRvIEM8JHZhbHVlPi4KPiA+ICsKPiA+ICtDPGRpZT5zIGlmIHRoZSBh dHRyaWJ1dGUgaXNuJ3Qgc3VwcG9ydGVkIGZvciB0aGUgdm9sdW1lIChvciBzdG9yYWdlKS4KPiA+ ICsKPiA+ICtGb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBhdHRyaWJ1dGVzLCBzZWUgQzxMPDwgZ2V0 X3ZvbHVtZV9hdHRyaWJ1dGUoKXwvIiRwbHVnaW4tPmdldF92b2x1bWVfYXR0cmlidXRlKC4uLiki ID4+Pi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHVwZGF0ZV92b2x1bWVfYXR0cmli dXRlIHsKPiA+ICAgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJGF0 dHJpYnV0ZSwgJHZhbHVlKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1 Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVnaW4tPnZvbHVtZV9zaXpl X2luZm8oXCVzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUgWywgJHRpbWVvdXRdKQo+ID4gKwo+ID4g K0I8UkVRVUlSRUQ6PiBNdXN0IGJlIGltcGxlbWVudGVkIGluIGV2ZXJ5IHN0b3JhZ2UgcGx1Z2lu Lgo+ID4gKwo+ID4gK1JldHVybnMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGdpdmVuIHZvbHVtZSdz IHNpemUuIEluIHNjYWxhciBjb250ZXh0LCB0aGlzIHJldHVybnMKPiA+ICtqdXN0IHRoZSB2b2x1 bWUncyBzaXplIGluIGJ5dGVzOgo+ID4gKwo+ID4gKyAgICBteSAkc2l6ZSA9ICRwbHVnaW4tPnZv bHVtZV9zaXplX2luZm8oJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHRpbWVvdXQpCj4gPiAr Cj4gPiArSW4gbGlzdCBjb250ZXh0LCByZXR1cm5zIGFuIGFycmF5IHdpdGggdGhlIGZvbGxvd2lu ZyBzdHJ1Y3R1cmU6Cj4gPiArCj4gPiArICAgIG15ICgkc2l6ZSwgJGZvcm1hdCwgJHVzZWQsICRw YXJlbnQsICRjdGltZSkgPSAkcGx1Z2luLT52b2x1bWVfc2l6ZV9pbmZvKAo+ID4gKwkkc2NmZywg JHN0b3JlaWQsICR2b2xuYW1lLCAkdGltZW91dAo+ID4gKyAgICApCj4gPiArCj4gPiArd2hlcmUg Qzwkc2l6ZT4gaXMgdGhlIHNpemUgb2YgdGhlIHZvbHVtZSBpbiBieXRlcywgQzwkZm9ybWF0PiBv bmUgb2YgdGhlIHBvc3NpYmxlCj4gPiArTDw8IGZvcm1hdHMgbGlzdGVkIGluIEM8cGx1Z2luZGF0 YSgpPnwvIiRwbHVnaW4tPnBsdWdpbmRhdGEoKSIgPj4sIEM8JHVzZWQ+IHRoZQo+ID4gK2Ftb3Vu dCBvZiBzcGFjZSB1c2VkIGluIGJ5dGVzLCBDPCRwYXJlbnQ+IHRoZSAob3B0aW9uYWwpIG5hbWUg b2YgdGhlIGJhc2Ugdm9sdW1lCj4gPiArYW5kIEM8JGN0aW1lPiB0aGUgY3JlYXRpb24gdGltZSBh cyB1bml4IHRpbWVzdGFtcC4KPiA+ICsKPiA+ICtPcHRpb25hbGx5LCBhIEM8JHRpbWVvdXQ+IG1h eSBiZSBwcm92aWRlZCBhZnRlciB3aGljaCB0aGUgbWV0aG9kIHNob3VsZCBDPGRpZT4uCj4gPiAr VGhpcyB0aW1lb3V0IGlzIGJlc3QgcGFzc2VkIHRvIG90aGVyIGhlbHBlcnMgd2hpY2ggYWxyZWFk eSBzdXBwb3J0IHRpbWVvdXRzLAo+ID4gK3N1Y2ggYXMgQzxMPDwgUFZFOjpUb29sczo6cnVuX2Nv bW1hbmR8UFZFOjpUb29scy9ydW5fY29tbWFuZCA+Pj4uCj4gPiArCj4gPiArU2VlIGFsc28gdGhl IEM8TDw8IFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpmaWxlX3NpemVfaW5mb3xQVkU6OlN0b3JhZ2U6 OlBsdWdpbi9maWxlX3NpemVfaW5mbyA+Pj4gaGVscGVyLgo+Cj4gUFZFOjpTdG9yYWdlOjpmaWxl X3NpemVfaW5mbyAod2l0aG91dCBQbHVnaW46OikhCj4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4g PiAgc3ViIHZvbHVtZV9zaXplX2luZm8gewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0 b3JlaWQsICR2b2xuYW1lLCAkdGltZW91dCkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVu dCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT52 b2x1bWVfcmVzaXplKFwlc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkc2l6ZSBbLCAkcnVubmlu Z10pCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVtZW50ZWQgaW4gZXZlcnkg c3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArUmVzaXplcyBhIHZvbHVtZSB0byB0aGUgbmV3IEM8 JHNpemU+IGluIGJ5dGVzLiBPcHRpb25hbGx5LCB0aGUgZ3Vlc3QgdGhhdCBvd25zCj4gPiArdGhl IHZvbHVtZSBtYXkgYmUgQzwkcnVubmluZz4gKD0gQzwxPikuCj4KPiB0aGUgc2Vjb25kIHNlbnRl bmNlIGRvZXNuJ3QgbWFrZSBhbnkgc2Vuc2UuCj4KPiBDPCRydW5uaW5nPiBpbmRpY2F0ZXMgdGhl IGd1ZXN0IGlzIGN1cnJlbnRseSBydW5uaW5nLgo+Cj4gYnV0IHdoYXQgZG9lcyB0aGF0IG1lYW4v d2h5IHNob3VsZCBhIHBsdWdpbiBjYXJlPwo+Cj4gPiArCj4gPiArQzxkaWU+cyBpbiBjYXNlIG9m IGVycm9ycywgb3IgaWYgdGhlIHVuZGVybHlpbmcgc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiBvciB0 aGUKPiA+ICt2b2x1bWUncyBmb3JtYXQgZG9lc24ndCBzdXBwb3J0IHJlc2l6aW5nLgo+ID4gKwo+ ID4gK1RoaXMgZnVuY3Rpb24gc2hvdWxkIG5vdCByZXR1cm4gYW55IHZhbHVlLiBJbiBwcmV2aW91 cyB2ZXJzaW9ucyB0aGUgcmV0dXJuZWQKPiA+ICt2YWx1ZSB3b3VsZCBiZSB1c2VkIHRvIGRldGVy bWluZSB0aGUgbmV3IHNpemUgb2YgdGhlIHZvbHVtZSBvciB3aGV0aGVyIHRoZQo+ID4gK29wZXJh dGlvbiBzdWNjZWVkZWQuCj4KPiBzbyBzaW5jZSB0aGlzIGRvY3VtZW50cyB0aGUgbmV3IHZlcnNp b24uLiBzaG91bGRuJ3Qgd2UganVzdCBkcm9wIHRoZQo+IGxhc3QgcGFydD8KPgo+ID4gKwo+ID4g Kz1jdXQKPiA+ICsKPiA+ICBzdWIgdm9sdW1lX3Jlc2l6ZSB7Cj4gPiAgICAgIG15ICgkY2xhc3Ms ICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzaXplLCAkcnVubmluZykgPSBAXzsKPiA+ICAg ICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4g Kz1oZWFkMyAkcGx1Z2luLT52b2x1bWVfc25hcHNob3QoXCVzY2ZnLCAkc3RvcmVpZCwgJHZvbG5h bWUsICRzbmFwKQo+ID4gKwo+ID4gK0I8T1BUSU9OQUw6PiBNYXkgYmUgaW1wbGVtZW50ZWQgaWYg dGhlIHVuZGVybHlpbmcgc3RvcmFnZSBzdXBwb3J0cyBzbmFwc2hvdHMuCj4gPiArCj4gPiArVGFr ZXMgYSBzbmFwc2hvdCBvZiBhIHZvbHVtZSBhbmQgZ2l2ZXMgaXQgdGhlIG5hbWUgcHJvdmlkZWQg YnkgQzwkc25hcD4uCj4KPiB0aGlzIHNvdW5kcyBsaWtlIHRoaXMgaXMgYSB0d28tc3RlcCBwcm9j ZXNzLi4KPgo+IFRha2VzIGEgc25hcHNob3QgY2FsbGVkIEM8JHNuYXA+IG9mIHRoZSB2b2x1bWUg Qzwkdm9sbmFtZT4uCj4KPiA+ICsKPiA+ICtDPGRpZT5zIGlmIHRoZSB1bmRlcmx5aW5nIHN0b3Jy YWdlIGRvZXNuJ3Qgc3VwcG9ydCBzbmFwc2hvdHMgb3IgYW4gZXJyb3IKPiA+ICtvY2N1cnMgd2hp bGUgdGFraW5nIGEgc25hcHNob3QuCj4KPiBzL2EvdGhlCj4gcy9zdG9ycmFnZS9zdG9yYWdlCj4K PiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHZvbHVtZV9zbmFwc2hvdCB7Cj4gPiAgICAg IG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9IEBfOwo+ID4g ICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4g PiAtIyBSZXR1cm5zIGEgaGFzaCB3aXRoIHRoZSBzbmFwc2hvdCBuYW1lcyBhcyBrZXlzIGFuZCB0 aGUgZm9sbG93aW5nIGRhdGE6Cj4gPiAtIyBpZCAgICAgICAgLSBVbmlxdWUgaWQgdG8gZGlzdGlu Z3Vpc2ggZGlmZmVyZW50IHNuYXBzaG90cyBldmVuIGlmIHRoZSBoYXZlIHRoZSBzYW1lIG5hbWUu Cj4gPiAtIyB0aW1lc3RhbXAgLSBDcmVhdGlvbiB0aW1lIG9mIHRoZSBzbmFwc2hvdCAoc2Vjb25k cyBzaW5jZSBlcG9jaCkuCj4gPiAtIyBSZXR1cm5zIGFuIGVtcHR5IGhhc2ggaWYgdGhlIHZvbHVt ZSBkb2VzIG5vdCBleGlzdC4KPiA+ICs9aGVhZDMgJHBsdWdpbi0+dm9sdW1lX3NuYXBzaG90X2lu Zm8oXCVzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUpCj4gPiArCj4gPiArUmV0dXJucyBhIGhhc2hy ZWYgd2l0aCB0aGUgc25hcHNob3QgbmFtZXMgYXMga2V5cyBhbmQgdGhlIGZvbGxvd2luZyBzdHJ1 Y3R1cmU6Cj4gPiArCj4gPiArICAgIHsKPiA+ICsgICAgICAgIG15X3NuYXBzaG90ID0+IHsKPiA+ ICsgICAgICAgICAgICBpZCA9PiAiMDFiN2U2NjgtNThiNC02ZjQyLTlhNWUtMTk0NGMyODU1Yzg0 IiwgICMgVW5pcXVlIGlkIHRvIGRpc3Rpbmd1aXNoIGRpZmZlcmVudCBzbmFwc2hvdHMgd2l0aCB0 aGUgc2FtZSBuYW1lLgo+ID4gKyAgICAgICAgICAgIHRpbWVzdGFtcCA9PiAiMTcyOTg0MTgwNyIs ICAjIENyZWF0aW9uIHRpbWUgb2YgdGhlIHNuYXBzaG90IChzZWNvbmRzIHNpbmNlIGVwb2NoKS4K PiA+ICsgICAgICAgIH0sCj4gPiArCSMgWy4uLl0KPiA+ICsgICAgfQo+ID4gKwo+ID4gK1JldHVy bnMgYW4gZW1wdHkgaGFzaHJlZiBpZiB0aGUgdm9sdW1lIGRvZXMgbm90IGV4aXN0Lgo+Cj4gb3Ig ZGllcyBpZiByZXRyaWV2aW5nIHRoZSBzbmFwc2hvdCBpbmZvcm1hdGlvbiBmb3IgdGhlIGdpdmVu IHZvbHVtZQo+IGZhaWxlZC4gPwo+Cj4gPiArCj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiB2b2x1 bWVfc25hcHNob3RfaW5mbyB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwg JHZvbG5hbWUpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNz XG4iOwo+ID4gIH0KPiA+ICAKPiA+IC0jIEFzc2VydHMgdGhhdCBhIHJvbGxiYWNrIHRvICRzbmFw IG9uICR2b2xuYW1lIGlzIHBvc3NpYmxlLgo+ID4gLSMgSWYgY2VydGFpbiBzbmFwc2hvdHMgYXJl IHByZXZlbnRpbmcgdGhlIHJvbGxiYWNrIGFuZCAkYmxvY2tlcnMgaXMgYW4gYXJyYXkKPiA+IC0j IHJlZmVyZW5jZSwgdGhlIHNuYXBzaG90IG5hbWVzIGNhbiBiZSBwdXNoZWQgb250byAkYmxvY2tl cnMgcHJpb3IgdG8gZHlpbmcuCj4gPiArPWhlYWQzICRwbHVnaW4tPnZvbHVtZV9yb2xsYmFja19p c19wb3NzaWJsZShcJXNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAgWywgXEBibG9ja2Vy c10pCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPnZvbHVtZV9yb2xsYmFja19pc19wb3NzaWJs ZSguLi4pCj4gPiArCj4gPiArQjxPUFRJT05BTDo+IE1heSBiZSBpbXBsZW1lbnRlZCBpZiB0aGUg dW5kZXJseWluZyBzdG9yYWdlIHN1cHBvcnRzIHNuYXBzaG90cy4KPiA+ICsKPiA+ICtBc3NlcnRz IHdoZXRoZXIgYSByb2xsYmFjayB0byBDPCRzbmFwPiBvbiBDPCR2b2xuYW1lPiBpcyBwb3NzaWJs ZSwgQzxkaWU+cyBpZgo+ID4gK2l0IGlzbid0Lgo+ID4gKwo+ID4gK09wdGlvbmFsbHksIEM8XEBi bG9ja2Vycz4gbWF5IGJlIHByb3ZpZGVkLCB3aGljaCBtYXkgY29udGFpbiB0aGUgbmFtZXMgb2YK PiA+ICtzbmFwc2hvdHMgdGhhdCBhcmUgcHJldmVudGluZyB0aGUgcm9sbGJhY2suIFNob3VsZCBh bnkgc3VjaCBzbmFwc2hvdHMgZXhpc3QsCj4gPiArdGhleSBzaG91bGQgYmUgcHVzaGVkIHRvIHRo aXMgbGlzdHJlZiBwaW9yIHRvIEM8ZGllPi1pbmcuIFRoZSBjYWxsZXIgbWF5IHRoZW4KPiA+ICt1 c2UgdGhpcyBsaXN0cmVmIHdoZW4gaGFuZGxpbmcgZXJyb3JzLgo+Cj4gSWYgdGhlIG9wdGlvbmFs IHBhcmFtYXRlciBDPFxAYmxvY2tlcnM+IGlzIHByb3ZpZGVkLCB0aGUgbmFtZXMgb2YgYW55Cj4g c25hcHNob3RzIGJsb2NraW5nIHRoZSByb2xsYmFjayBzaG91bGQgYmUgYWRkZWQgdG8gdGhpcyBs aXN0cmVmIHByaW9yIHRvCj4gQzxkaWU+LWluZy4KPgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ ICBzdWIgdm9sdW1lX3JvbGxiYWNrX2lzX3Bvc3NpYmxlIHsKPiA+ICAgICAgbXkgKCRjbGFzcywg JHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAsICRibG9ja2VycykgPSBAXzsKPiA+ICAg ICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4g Kz1oZWFkMyAkcGx1Z2luLT52b2x1bWVfc25hcHNob3Rfcm9sbGJhY2soXCVzY2ZnLCAkc3RvcmVp ZCwgJHZvbG5hbWUsICRzbmFwKQo+ID4gKwo+ID4gK1BlcmZvcm1zIGEgcm9sbGJhY2sgdG8gdGhl IGdpdmVuIEM8JHNuYXA+c2hvdCBvbiBDPCR2b2xuYW1lPi4KPiA+ICsKPiA+ICtDPGRpZT5zIGlu IGNhc2Ugb2YgZXJyb3JzLgo+ID4gKwo+ID4gKz1jdXQKPiA+ICsKPiA+ICBzdWIgdm9sdW1lX3Nu YXBzaG90X3JvbGxiYWNrIHsKPiA+ICAgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAk dm9sbmFtZSwgJHNuYXApID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3Vi LWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+dm9sdW1lX3NuYXBz aG90X2RlbGV0ZShcJXNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAgWywgJHJ1bm5pbmdd KQo+ID4gKwo+ID4gK0RlbGV0ZXMgdGhlIEM8JHNuYXA+c2hvdCBvZiBDPCR2b2xuYW1lPi4KPiA+ ICsKPiA+ICtDPGRpZT5zIGluIGNhc2Ugb2YgZXJyb3JzLgo+ID4gKwo+ID4gK09wdGlvbmFsbHks IHRoZSBndWVzdCB0aGF0IG93bnMgdGhlIGdpdmVuIHZvbHVtZSBtYXkgYmUgQzwkcnVubmluZz4g KD0gQzwxPikuCj4KPiBBZ2FpbiwgdGhpcyBpcyBwaHJhc2VkIHdlaXJkICphbmQqIGdpdmVzIG5v IGluZm9ybWF0aW9uIHRvIGEgcG90ZW50aWFsCj4gaW1wbGVtZW50b3Igb2YgdGhpcyBBUEkuLiB3 aHkgc2hvdWxkIGEgcGx1Z2luIGNhcmU/Cj4KPiA+ICsKPiA+ICtCPERlcHJlY2F0ZWQ6PiBUaGUg QzwkcnVubmluZz4gcGFyYW1ldGVyIGlzIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBv biB0aGUKPiA+ICtuZXh0IEM8QVBJQUdFPiByZXNldC4KPgo+IGFuZCB0aGlzIG1ha2VzIGl0IGV2 ZW4gbW9yZSBjb25mdXNpbmchCj4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHZvbHVt ZV9zbmFwc2hvdF9kZWxldGUgewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQs ICR2b2xuYW1lLCAkc25hcCwgJHJ1bm5pbmcpID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1l bnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+ dm9sdW1lX3NuYXBzaG90X25lZWRzX2ZzZnJlZXplKCkKPiA+ICsKPiA+ICtSZXR1cm5zIHdoZXRo ZXIgZmlsZXN5c3RlbXMgb24gdG9wIG9mIHRoZSB2b2x1bWUgbmVlZCB0byBmbHVzaCB0aGVpciBq b3VybmFsIGZvcgo+ID4gK2NvbnNpc3RlbmN5IGJlZm9yZSBhIHNuYXBzaG90IGlzIHRha2VuLiBT ZWUgTDxmc2ZyZWV6ZSg4KT4uCj4gPiArCj4gPiArVGhpcyBpcyBuZWVkZWQgZm9yIGNvbnRhaW5l ciBtb3VudHBvaW50cy4KPgo+IHRoaXMgZG9lc24ndCByZWFsbHkgdGVsbCBtZSB3aGF0IEkgc2hv dWxkIGRvIGhlcmUgZWl0aGVyLi4gKGFuZCBpdCdzCj4gYWxzbyBhIHJlYWxseSB1Z2x5IGludGVy YWNlIHRoYXQgd2Ugc2VlbWluZ2x5IGludHJvZHVjZWQgYmVjYXVzZSBSQkQKPiBzbmFwc2hvdHMg Y2Fubm90IGJlIG1vdW50ZWQgUk8gb3RoZXJ3aXNlPz8gZG9lcyB0aGlzIHJlYWxseSBuZWVkIHRv IGJlCj4gcGFydCBvZiB0aGUgcGx1Z2luIGludGVyZmFjZT8gT28pCj4KPiA+ICsKPiA+ICs9Y3V0 Cj4gPiArCj4gPiAgc3ViIHZvbHVtZV9zbmFwc2hvdF9uZWVkc19mc2ZyZWV6ZSB7Cj4gPiAgICAg IGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4gIH0KPiA+ICAKPiA+ICs9 aGVhZDMgJHBsdWdpbi0+c3RvcmFnZV9jYW5fcmVwbGljYXRlKFwlc2NmZywgJHN0b3JlaWQsICRm b3JtYXQpCj4gPiArCj4gPiArUmV0dXJucyB3aGV0aGVyIHZvbHVtZXMgaW4gYSBnaXZlbiBDPCRm b3JtYXQ+IHN1cHBvcnQgcmVwbGljYXRpb24uCj4gPiArCj4gPiArU2VlIEM8TDw8IHBsdWdpbmRh dGEoKXwvIiRwbHVnaW4tPnBsdWdpbmRhdGEoKSIgPj4+IGZvciBhbGwgZGlzayBmb3JtYXRzLgo+ ID4gKwo+Cj4gc2hvdWxkIHByb2JhYmx5IG5vdGUgdGhhdCByZXBsaWNhdGlvbiBpcyBsaW1pdGVk IHRvIFpGUyBhdCB0aGUgbW9tZW50IGluCj4gYW55IGNhc2U/Cj4KPiA+ICs9Y3V0Cj4gPiArCj4g PiAgc3ViIHN0b3JhZ2VfY2FuX3JlcGxpY2F0ZSB7Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzY2Zn LCAkc3RvcmVpZCwgJGZvcm1hdCkgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBp biBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT52b2x1bWVf aGFzX2ZlYXR1cmUoXCVzY2ZnLCAkZmVhdHVyZSwgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcG5h bWUgWywgJHJ1bm5pbmcsIFwlb3B0c10pCj4gPiArCj4gPiArPWhlYWQzICRwbHVnaW4tPnZvbHVt ZV9oYXNfZmVhdHVyZSguLi4pCj4gPiArCj4gPiArQjxSRVFVSVJFRDo+IE11c3QgYmUgaW1wbGVt ZW50ZWQgaW4gZXZlcnkgc3RvcmFnZSBwbHVnaW4uCj4gPiArCj4gPiArQ2hlY2tzIHdoZXRoZXIg YSB2b2x1bWUgQzwkdm9sbmFtZT4gb3IgaXRzIHNuYXBzaG90IEM8JHNuYXBuYW1lPiBzdXBwb3J0 cyB0aGUKPiA+ICtnaXZlbiBDPCRmZWF0dXJlPiwgcmV0dXJuaW5nIEM8MT4gaWYgaXQgZG9lcyBh bmQgQzx1bmRlZj4gb3RoZXJ3aXNlLiBUaGUgZ3Vlc3QKPiA+ICtvd25pbmcgdGhlIHZvbHVtZSBt YXkgb3B0aW9uYWxseSBiZSBDPCRydW5uaW5nPi4KPgo+IHRoYXQgbGFzdCBzZW50ZW5jZSBhZ2Fp biBkb2Vzbid0IG1ha2UgYW55IHNlbnNlIHRoZSB3YXkgaXQgaXMgcGhyYXNlZC4uCj4KPiA+ICsK PiA+ICtDPCRmZWF0dXJlPiBtYXkgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6Cj4gPiArCj4gPiAr ICAgIGNsb25lICAgICAgIyBsaW5rZWQgY2xvbmUgaXMgcG9zc2libGUKPiA+ICsgICAgY29weSAg ICAgICAjIGZ1bGwgY2xvbmUgaXMgcG9zc2libGUKPgo+IGFjdHVhbGx5LCB0aGlzIGlzICJiaXQt d2lzZSBjb3B5aW5nIGZyb20iIGlzIHBvc3NpYmxlLCByaWdodD8KPgo+ID4gKyAgICByZXBsaWNh dGUgICMgcmVwbGljYXRpb24gaXMgcG9zc2libGUKPiA+ICsgICAgc25hcHNob3QgICAjIHRha2lu ZyBhIHNuYXBzaG90IGlzIHBvc3NpYmxlCj4gPiArICAgIHNwYXJzZWluaXQgIyB2b2x1bWUgaXMg c3BhcnNlbHkgaW5pdGlhbGl6ZWQKPiA+ICsgICAgdGVtcGxhdGUgICAjIGNvbnZlcnNpb24gdG8g YmFzZSBpbWFnZSBpcyBwb3NzaWJsZQo+ID4gKyAgICByZW5hbWUgICAgICMgcmVuYW1pbmcgdm9s dW1lcyBpcyBwb3NzaWJsZQo+ID4gKwo+ID4gK1doaWNoIGZlYXR1cmVzIGFyZSBhdmFpbGFibGUg dW5kZXIgd2hpY2ggY2lyY3Vtc3RhbmNlcyBkZXBlbmRzIG9uIG11bHRpcGxlCj4gPiArZmFjdG9y cywgc3VjaCBhcyB0aGUgdW5kZXJseWluZyBzdG9yYWdlIGltcGxlbWVudGF0aW9uLCB0aGUgZm9y bWF0IHVzZWQsIGV0Yy4KPgo+ICphbmQgd2hldGhlciB0aGUgY29ycmVzcG9uZGluZyBndWVzdCBp cyBjdXJyZW50bHkgcnVubmluZyosIHdoaWNoIGlzIHRoZQo+IHdob2xlIHBvaW50IG9mIHRoYXQg cGFyYW1ldGVyIDspCj4KPiB0aGlzIHJlYWxseSBuZWVkcyB0byBleHBsYWluIHdoYXQgdGhlIHZh bHVlcyBmb3IgdGhvc2UgZmVhdHVyZSBrZXlzCj4gbWVhbi4uCgpDb3VsZCBhZGQgYSBzZXBhcmF0 ZSBzZWN0aW9uIGZvciB0aG9zZSBrZXlzIGFzIHdlbGwsIGFzIHdpdGggY29udGVudAp0eXBlcy4g T3RoZXJ3aXNlLCB0aGlzIGRvY3N0cmluZyB3b3VsZCBwcm9iYWJseSBibG93IHVwLgoKPgo+ID4g K0l0J3MgYmVzdCB0byBjaGVjayBvdXQgQzxMPFBWRTo6U3RvcmFnZTo6UGx1Z2luPj4gb3IgQzxM PFBWRTo6U3RvcmFnZTo6WkZTUG9vbFBsdWdpbj4+Cj4gPiArZm9yIGV4YW1wbGVzIG9uIGhvdyB0 byBoYW5kbGUgZmVhdHVyZXMuCj4gPiArCj4gPiArQWRkaXRpb25hbCBrZXlzIGFyZSBnaXZlbiBp biBDPFwlb3B0cz46Cj4gPiArCj4gPiArPW92ZXIKPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCB2YWxp ZF90YXJnZXRfZm9ybWF0cyA9PiBbLi4uXSA+Pgo+ID4gKwo+ID4gK0xpc3RyZWYgb2YgZm9ybWF0 cyBmb3IgdGhlIHRhcmdldCBvZiBhIGNvcHkvY2xvbmUgb3BlcmF0aW9uIHRoYXQgdGhlIGNhbGxl cgo+ID4gK2NvdWxkIHdvcmsgd2l0aC4gVGhlIGZvcm1hdCBvZiB0aGUgZ2l2ZW4gdm9sdW1lIGlz IGFsd2F5cyBjb25zaWRlcmVkIHZhbGlkIGFuZAo+ID4gK2lmIG5vIGxpc3QgaXMgc3BlY2lmaWVk LCBhbGwgZm9ybWF0cyBhcmUgY29uc2lkZXJlZCB2YWxpZC4KPiA+ICsKPiA+ICs9YmFjawo+ID4g Kwo+ID4gKz1jdXQKPiA+ICsKPiA+ICBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiA+ICAgICAg bXkgKCRjbGFzcywgJHNjZmcsICRmZWF0dXJlLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwbmFt ZSwgJHJ1bm5pbmcsICRvcHRzKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGlu IHN1Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVnaW4tPm1hcF92b2x1 bWUoJHN0b3JlaWQsIFwlc2NmZywgJHZvbG5hbWUgWywgJHNuYXBuYW1lXSkKPiA+ICsKPiA+ICtC PE9QVElPTkFMOj4gTWF5IGJlIGltcGxlbWVudGVkIGluIGEgc3RvcmFnZSBwbHVnaW4uCj4gPiAr Cj4gPiArTWFwcyB0aGUgZGV2aWNlIGFzc2NvaWF0ZWQgd2l0aCBhIHZvbHVtZSBvciBhIHZvbHVt ZSdzIHNuYXBzaG90IHRvIGEgZmlsZXN5c3RlbQo+Cj4gYXNzb2NpYXRlZAo+Cj4gPiArcGF0aCwg cmV0dXJuaW5nIHRoZSBwYXRoIG9uIGNvbXBsZXRpb24uIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkg Y29udGFpbmVycy4KPgo+IHJldHVybmluZyB0aGUgcGF0aC4gKG9idmlvdXNseSBvbiBjb21wbGV0 aW9uLCBob3cgZWxzZT8pCj4KPiBpdCdzIG5vdCBvbmx5IHVzZWQgYnkgY29udGFpbmVycywgc28g bWF5YmUgZHJvcCB0aGF0IHBhcnQgYW5kIGluc3RlYWQKPiBub3RlIHRoYXQgaXQgb25seSBuZWVk cyB0byBiZSBpbXBsZW1lbnRlZCBpZiBgcGF0aGAgZG9lc24ndCAoYWx3YXlzKQo+IHJldHVybiBz dWNoIGEgcGF0aCBhbnl3YXkuCj4KPiA+ICsKPiA+ICtDPGRpZT5zIGluIGNhc2Ugb2YgZXJyb3Jz Lgo+ID4gKwo+ID4gK0M8TDw8IHVubWFwX3ZvbHVtZSgpfC8iJHBsdWdpbi0+dW5tYXBfdm9sdW1l KC4uLikiID4+PiBjYW4gYmUgdXNlZCB0byBkZWNsYXJlCj4gPiAraG93IHRoZSBkZXZpY2Ugc2hv dWxkIGJlIHVubWFwcGVkLgo+Cj4gbWF5YmUganVzdCBzYXkgdGhhdCBpZiB5b3UgaW1wbGVtZW50 IG1hcCwgeW91IHNob3VsZCBhbHNvIGltcGxlbWVudAo+IHVubWFwPwo+Cj4gPiArCj4gPiArPWN1 dAo+ID4gKwo+ID4gIHN1YiBtYXBfdm9sdW1lIHsKPiA+ICAgICAgbXkgKCRjbGFzcywgJHN0b3Jl aWQsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXBuYW1lKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1w bGVtZW50IG1lIGluIHN1Yi1jbGFzc1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVn aW4tPnVubWFwX3ZvbHVtZSgkc3RvcmVpZCwgXCVzY2ZnLCAkdm9sbmFtZSBbLCAkc25hcG5hbWVd KQo+ID4gKwo+ID4gK0I8T1BUSU9OQUw6PiBNYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdG9yYWdl IHBsdWdpbi4KPiA+ICsKPiA+ICtVbm1hcHMgdGhlIGRldmljZSBhc3NvY2lhdGVkIHRvIGEgdm9s dW1lIG9yIGEgdm9sdW1lJ3Mgc25hcHNob3QuCj4gPiArCj4gPiArQzxkaWU+cyBpbiBjYXNlIG9m IGVycm9ycy4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIHVubWFwX3ZvbHVtZSB7Cj4g PiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsICRzbmFwbmFtZSkg PSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAg fQo+ID4gIAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5hY3RpdmF0ZV92b2x1bWUoJHN0b3JlaWQsIFwl c2NmZywgJHZvbG5hbWUsICRzbmFwbmFtZSBbLCBcJWNhY2hlXSkKPiA+ICsKPiA+ICs9aGVhZDMg JHBsdWdpbi0+YWN0aXZhdGVfdm9sdW1lKC4uLikKPiA+ICsKPiA+ICtCPFJFUVVJUkVEOj4gTXVz dCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtBY3Rp dmF0ZXMgYSB2b2x1bWUgb3IgaXRzIGFzc29jaWF0ZWQgc25hcHNob3QsIG1ha2luZyBpdCBhdmFp bGFibGUgdG8gdGhlCj4gPiArc3lzdGVtIGZvciBmdXJ0aGVyIHVzZS4gRm9yIGV4YW1wbGUsIHRo aXMgY291bGQgbWVhbiBhY3RpdmF0aW5nIGFuIExWTSB2b2x1bWUsCj4gPiArbW91bnRpbmcgYSBa RlMgZGF0YXNldCwgY2hlY2tpbmcgd2hldGhlciB0aGUgdm9sdW1lJ3MgZmlsZSBwYXRoIGV4aXN0 cywgZXRjLgo+ID4gKwo+ID4gK0M8ZGllPnMgaW4gY2FzZSBvZiBlcnJvcnMgb3IgaWYgYW4gb3Bl cmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCj4gPiArCj4gPiArSWYgdGhpcyBpc24ndCBuZWVkZWQs IHRoZSBtZXRob2Qgc2hvdWxkIHNpbXBseSBiZSBhIG5vLW9wLgo+Cj4gSWYgbm8gYWN0aXZhdGlv biBpcyBuZWVkZWQsIAo+Cj4gPiArCj4gPiArVGhpcyBtZXRob2QgbWF5IHJldXNlIEw8PCBjYWNo ZWQgaW5mb3JtYXRpb24gdmlhIEM8XCVjYWNoZT58LyJDQUNISU5HIEVYUEVOU0lWRSBPUEVSQVRJ T05TIiA+Pi4KPiA+ICsKPiA+ICs9Y3V0Cj4gPiArCj4gPiAgc3ViIGFjdGl2YXRlX3ZvbHVtZSB7 Cj4gPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsICRzbmFwbmFt ZSwgJGNhY2hlKSA9IEBfOwo+ID4gICAgICBjcm9hayAiaW1wbGVtZW50IG1lIGluIHN1Yi1jbGFz c1xuIjsKPiA+ICB9Cj4gPiAgCj4gPiArPWhlYWQzICRwbHVnaW4tPmRlYWN0aXZhdGVfdm9sdW1l KCRzdG9yZWlkLCBcJXNjZmcsICR2b2xuYW1lLCAkc25hcG5hbWUgWywgXCVjYWNoZV0pCj4gPiAr Cj4gPiArPWhlYWQzIGRlYWN0aXZhdGVfdm9sdW1lKC4uLikKPiA+ICsKPiA+ICtCPFJFUVVJUkVE Oj4gTXVzdCBiZSBpbXBsZW1lbnRlZCBpbiBldmVyeSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ ICtEZWFjdGl2YXRlcyBhIHZvbHVtZSBvciBpdHMgYXNzb2NpYXRlZCBzbmFwc2hvdCwgbWFraW5n IGl0IHVuYXZhaWxhYmxlIHRvCj4gPiArdGhlIHN5c3RlbS4gRm9yIGV4YW1wbGUsIHRoaXMgY291 bGQgbWVhbiBkZWFjdGl2YXRpbmcgYW4gTFZNIHZvbHVtZSwKPiA+ICt1bm1hcHBpbmcgYSBDZXBo L1JCRCBkZXZpY2UsIGV0Yy4KPiA+ICsKPiA+ICtJZiB0aGlzIGlzbid0IG5lZWRlZCwgdGhlIG1l dGhvZCBzaG91bGQgc2ltcGx5IGJlIGEgbm8tb3AuCj4KPiBJZiBkZWFjdGl2YXRpb24gaXMgbm90 IG5lZWRlZC9ub3QgcG9zc2libGUsCj4KPiBzaG91bGQgd2Ugbm90ZSBoZXJlIHRoYXQgZGVhY3Rp dmF0aW9uIHdpbGwgbm90IGhhcHBlbiBmb3IgZXZlcnkKPiBhY3RpdmF0aW9uLCBidXQgb25seSB3 aGVuIHdlIGtub3cgZm9yIHN1cmUgdGhhdCB0aGUgdm9sdW1lIGlzIG5vIGxvbmdlcgo+IG5lZWRl ZCwgc3VjaCBhcyBiZWZvcmUgaXQgaXMgcmVtb3ZlZCBvciB3aGVuIGl0cyBvd25lciBpcyBtaWdy YXRlZCB0bwo+IGFub3RoZXIgbm9kZT8KCk9oLCB5ZXMuIFZlcnkgZ29vZCBwb2ludCEKCj4KPiA+ ICsKPiA+ICtUaGlzIG1ldGhvZCBtYXkgcmV1c2UgTDw8IGNhY2hlZCBpbmZvcm1hdGlvbiB2aWEg QzxcJWNhY2hlPnwvIkNBQ0hJTkcgRVhQRU5TSVZFIE9QRVJBVElPTlMiID4+Lgo+ID4gKwo+ID4g Kz1jdXQKPiA+ICsKPiA+ICBzdWIgZGVhY3RpdmF0ZV92b2x1bWUgewo+ID4gICAgICBteSAoJGNs YXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCAkc25hcG5hbWUsICRjYWNoZSkgPSBAXzsK PiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7Cj4gPiAgfQo+ID4g IAo+ID4gKz1oZWFkMyAkcGx1Z2luLT5yZW5hbWVfdm9sdW1lKC4uLikKPiA+ICsKPiA+ICs9aGVh ZDMgJHBsdWdpbi0+cmVuYW1lX3ZvbHVtZShcJXNjZmcsICRzdG9yZWlkLCAkc291cmNlX3ZvbG5h bWUsICR0YXJnZXRfdm1pZCwgJHRhcmdldF92b2xuYW1lKQo+ID4gKwo+ID4gK0I8T1BUSU9OQUw6 PiBNYXkgYmUgaW1wbGVtZW50ZWQgaW4gYSBzdG9yYWdlIHBsdWdpbi4KPiA+ICsKPiA+ICtSZW5h bWVzIHRoZSB2b2x1bWUgZ2l2ZW4gYnkgQzwkc291cmNlX3ZvbG5hbWU+IHRvIEM8JHRhcmdldF92 b2xuYW1lPiBhbmQgYXNzaWducwo+ID4gK2l0IHRvIHRoZSBndWVzdCBDPCR0YXJnZXRfdm1pZD4u IFJldHVybnMgdGhlIHZvbHVtZSBJRCBvZiB0aGUgcmVuYW1lZCB2b2x1bWUuCj4gPiArCj4gPiAr VGhpcyBtZXRob2QgaXMgbmVlZGVkIGZvciB0aGUgSTxDaGFuZ2UgT3duZXI+IGZlYXR1cmUuCj4g PiArCj4gPiArQzxkaWU+cyBpZiB0aGUgcmVuYW1lIGZhaWxlZC4KPiA+ICsKPiA+ICs9Y3V0Cj4g PiArCj4gPiAgc3ViIHJlbmFtZV92b2x1bWUgewo+ID4gICAgICBteSAoJGNsYXNzLCAkc2NmZywg JHN0b3JlaWQsICRzb3VyY2Vfdm9sbmFtZSwgJHRhcmdldF92bWlkLCAkdGFyZ2V0X3ZvbG5hbWUp ID0gQF87Cj4gPiAgICAgIGNyb2FrICJpbXBsZW1lbnQgbWUgaW4gc3ViLWNsYXNzXG4iOwo+ID4g IH0KPiA+ICAKPiA+ICs9aGVhZDMgJHBsdWdpbi0+cHJ1bmVfYmFja3VwcyhcJXNjZmcsICRzdG9y ZWlkIFssIFwla2VlcCwgJHZtaWQsICR0eXBlLCAkZHJ5cnVuLCBcJmxvZ2Z1bmNdKQo+ID4gKwo+ ID4gKz1oZWFkMyAkcGx1Z2luLT5wcnVuZV9iYWNrdXBzKC4uLikKPiA+ICsKPiA+ICtFeHBvcnQg YSB2b2x1bWUgaW50byBhIGZpbGUgaGFuZGxlIGFzIGEgc3RyZWFtIHdpdGggYSBkZXNpcmVkIGZv cm1hdC4KPgo+IGNvcHktcGFzdGUgbWlzdGFrZT8gOykKPgo+ID4gKwo+ID4gK0M8ZGllPnMgaWYg dGhlcmUgYXJlIChncmF2ZSkgcHJvYmxlbXMgd2hpbGUgcHJ1bmluZy4KPiA+ICsKPiA+ICtUaGlz IG1ldGhvZCBtYXkgdGFrZSBzZXZlcmFsIG9wdGlvbmFsIHBhcmFtZXRlcnM6Cj4gPiArCj4gPiAr PW92ZXIKPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCBcJWtlZXAgPj4KPiA+ICsKPiA+ICtBIGhhc2hy ZWYgY29udGFpbmluZyBiYWNrdXAgcmV0ZW50aW9uIHBvbGljaWVzLiBJdCBoYXMgdGhlIGZvbGxv d2luZyBzdHJ1Y3R1cmU6Cj4gPiArCj4gPiArICAgIHsKPiA+ICsJJ2tlZXAtYWxsJyAgICAgPT4g MSAjIChvcHRpb25hbCkgV2hldGhlciB0byBrZWVwIGFsbCBiYWNrdXBzLgo+ID4gKwkgICAgICAg ICAgICAgICAgICAgICMgQ29uZmxpY3RzIHdpdGggdGhlIG90aGVyIG9wdGlvbnMgd2hlbiB0cnVl Lgo+ID4gKwkna2VlcC1sYXN0JyAgICA9PiBOICMgKG9wdGlvbmFsKSBLZWVwIHRoZSBsYXN0IE4g YmFja3Vwcy4KPiA+ICsJJ2tlZXAtaG91cmx5JyAgPT4gTiAjIChvcHRpb25hbCkgS2VlcCBiYWNr dXBzIGZvciB0aGUgbGFzdCBOIGRpZmZlcmVudCBob3Vycy4KPiA+ICsJCQkgICAgIyBJZiB0aGVy ZSBpcyBtb3JlIHRoYW4gb25lIGJhY2t1cCBmb3IgYSBzaW5nbGUKPiA+ICsJCQkgICAgIyBob3Vy LCBvbmx5IHRoZSBsYXRlc3Qgb25lIGlzIGtlcHQuCj4gPiArCSdrZWVwLWRhaWx5JyAgID0+IE4g IyAob3B0aW9uYWwpIEtlZXAgYmFja3VwcyBmb3IgdGhlIGxhc3QgTiBkaWZmZXJlbnQgZGF5cy4K PiA+ICsJCQkgICAgIyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGJhY2t1cCBmb3IgYSBzaW5n bGUKPiA+ICsJCQkgICAgIyBkYXksIG9ubHkgdGhlIGxhdGVzdCBvbmUgaXMga2VwdC4KPiA+ICsJ J2tlZXAtd2Vla2x5JyAgPT4gTiAjIChvcHRpb25hbCkgS2VlcCBiYWNrdXBzIGZvciB0aGUgbGFz dCBOIGRpZmZlcmVudCB3ZWVrcy4KPiA+ICsJCQkgICAgIyBJZiB0aGVyZSBpcyBtb3JlIHRoYW4g b25lIGJhY2t1cCBmb3IgYSBzaW5nbGUKPiA+ICsJCQkgICAgIyB3ZWVrLCBvbmx5IHRoZSBsYXRl c3Qgb25lIGlzIGtlcHQuCj4gPiArCSdrZWVwLW1vbnRobHknID0+IE4gIyAob3B0aW9uYWwpIEtl ZXAgYmFja3VwcyBmb3IgdGhlIGxhc3QgTiBkaWZmZXJlbnQgbW9udGhzLgo+ID4gKwkJCSAgICAj IElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgYmFja3VwIGZvciBhIHNpbmdsZQo+ID4gKwkJCSAg ICAjIG1vbnRoLCBvbmx5IHRoZSBsYXRlc3Qgb25lIGlzIGtlcHQuCj4gPiArCSdrZWVwLXllYXJs eScgID0+IE4gIyAob3B0aW9uYWwpIEtlZXAgYmFja3VwcyBmb3IgdGhlIGxhc3QgTiBkaWZmZXJl bnQgeWVhcnMuCj4gPiArCQkJICAgICMgSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBiYWNrdXAg Zm9yIGEgc2luZ2xlCj4gPiArCQkJICAgICMgeWVhciwgb25seSB0aGUgbGF0ZXN0IG9uZSBpcyBr ZXB0Lgo+ID4gKyAgICB9Cj4KPiBzaG91bGQgd2UgYWRkIGEgcG9pbnRlciB0byBkb2NzIGhlcmU/ IG9yIHRvCj4gUFZFOjpTdG9yYWdlOjpwcnVuZV9tYXJrX2JhY2t1cF9ncm91cD8gYW5kIHNob3Vs ZCB0aGF0IG9yIGl0cyBib2R5IGJlCj4gbW92ZWQgc29tZXdoZXJlIGVsc2U/CgpZZWFoLCBJJ2xs IHNlZSB3aGF0IEkgY2FuIGRvIGhlcmUhCgo+Cj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgJHZtaWQg Pj4KPiA+ICsKPiA+ICtUaGUgZ3Vlc3QncyBJRC4KPiA+ICsKPiA+ICs9aXRlbSAqIEM8PCAkdHlw ZSA+Pgo+ID4gKwo+ID4gK1RoZSB0eXBlIG9mIGd1ZXN0LiBXaGVuIEM8ZGVmaW5lZD4sIGl0IGNh biBiZSBvbmUgb2YgQzwicWVtdSI+IG9yIEM8Imx4YyI+Lgo+ID4gK0lmIEM8dW5kZWZpbmVkPiwg Ym90aCB0eXBlcyBvZiBiYWNrdXBzIHdpbGwgYmUgcHJ1bmVkLgo+ID4gKwo+ID4gKz1pdGVtICog Qzw8ICRkcnlfcnVuID4+Cj4gPiArCj4gPiArV2hldGhlciB0aGlzIGlzIGEgZHJ5IHJ1bi4gSWYg c2V0IHRvIEM8MT4gdGhlcmUgd29uJ3QgYmUgYW55IGNoYW5nZSBvbiB0aGUKPiA+ICt1bmRlcmx5 aW5nIHN0b3JhZ2UuCj4gPiArCj4gPiArPWl0ZW0gKiBDPDwgXCZsb2dmdW5jID4+Cj4gPiArCj4g PiArQSBzdWJyb3V0aW5lIHJlZiB0aGF0IGNhbiBiZSB1c2VkIHRvIGxvZyBtZXNzYWdlcyB3aXRo IHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgo+ID4gKwo+ID4gKyAgICAkbG9nZnVuYy0+KCRzZXZl cml0eSwgJG1lc3NhZ2UpCj4gPiArCj4gPiArd2hlcmUgJHNldmVyaXR5IGNhbiBiZSBvbmUgb2Yg QzwiaW5mbyI+LCBDPCJlcnIiPiwgb3IgQzwid2FybiI+Lgo+ID4gKwo+ID4gKz1iYWNrCj4gPiAr Cj4gPiArPWN1dAo+ID4gKwo+ID4gIHN1YiBwcnVuZV9iYWNrdXBzIHsKPiA+ICAgICAgbXkgKCRj bGFzcywgJHNjZmcsICRzdG9yZWlkLCAka2VlcCwgJHZtaWQsICR0eXBlLCAkZHJ5cnVuLCAkbG9n ZnVuYykgPSBAXzsKPiA+ICAgICAgY3JvYWsgImltcGxlbWVudCBtZSBpbiBzdWItY2xhc3NcbiI7 Cj4gPiAtLSAKPiA+IDIuMzkuNQo+ID4gCj4gPiAKPiA+IAo+ID4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IHB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QK PiA+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+ID4gaHR0cHM6Ly9saXN0cy5wcm94bW94 LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCj4gPiAKPiA+IAo+ID4gCj4K Pgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gcHZl LWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+IGh0dHBz Oi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAoK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2 ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3Rz LnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK