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 BBDED1FF396 for ; Thu, 23 May 2024 14:25:55 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 096C01F59E; Thu, 23 May 2024 14:26:14 +0200 (CEST) Date: Thu, 23 May 2024 14:25:35 +0200 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Dominik Csapak , Proxmox VE development discussion References: <20240429112124.3819357-1-d.csapak@proxmox.com> <20240429112124.3819357-4-d.csapak@proxmox.com> <1716368203.2z0b0jtzn8.astroid@yuna.none> In-Reply-To: MIME-Version: 1.0 User-Agent: astroid/0.16.0 (https://github.com/astroidmail/astroid) Message-Id: <1716466723.izzyl060s0.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.346 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [storage.pm, proxmox.com, cephconfig.pm, ovf.pm, dirplugin.pm, plugin.pm, status.pm, diskmanage.pm, dmtf.org, guestimport.pm] Subject: Re: [pve-devel] [PATCH storage v3 03/10] plugin: dir: handle ova files for import 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" T24gTWF5IDIzLCAyMDI0IDEyOjQwIHBtLCBEb21pbmlrIENzYXBhayB3cm90ZToKPiBPbiA1LzIy LzI0IDEyOjA4LCBGYWJpYW4gR3LDvG5iaWNobGVyIHdyb3RlOgo+PiBPbiBBcHJpbCAyOSwgMjAy NCAxOjIxIHBtLCBEb21pbmlrIENzYXBhayB3cm90ZToKPj4+IHNpbmNlIHdlIHdhbnQgdG8gaGFu ZGxlIG92YSBmaWxlcyAod2hpY2ggYXJlIG9ubHkgb3ZmK2ltYWdlcyBidW5kbGVkIGluCj4+PiBh IHRhciBmaWxlKSBmb3IgaW1wb3J0LCBhZGQgY29kZSB0aGF0IGhhbmRsZXMgdGhhdC4KPj4+Cj4+ PiB3ZSBpbnRyb2R1Y2UgYSB2YWxpZCB2b2xuYW1lIGZvciBmaWxlcyBjb250YWluZWQgaW4gb3Zh cyBsaWtlIHRoaXM6Cj4+Pgo+Pj4gICBzdG9yYWdlOmltcG9ydC9hcmNoaXZlLm92YS9kaXNrLTEu dm1kawo+Pj4KPj4+IGJ5IGJhc2ljYWxseSB0cmVhdGluZyB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBw YXRoIGFzIHRoZSBuYW1lIGZvciB0aGUKPj4+IGNvbnRhaW5lZCBkaXNrIHdlIHdhbnQuCj4+Pgo+ Pj4gaW4gdGhhdCBjYXNlIHdlIHJldHVybiAnaW1wb3J0JyBhcyB0eXBlIHdpdGggJ3ZtZGsvcWNv dzIvcmF3JyBhcyBmb3JtYXQKPj4+ICh3ZSBjYW5ub3QgdXNlIHNvbWV0aGluZyBsaWtlICdvdmEr dm1kaycgd2l0aG91dCBleHRlbmRpbmcgdGhlICdmb3JtYXQnCj4+PiBwYXJzaW5nIHRvIHRoYXQg Zm9yIGFsbCBzdG9yYWdlcy9mb3JtYXRzLiBUaGlzIGlzIGJlY2F1c2UgaXQgcnVucwo+Pj4gdGhv dWdoIGEgdmVyaWZ5IGZvcm1hdCBjaGVjayBhdCBsZWFzdCBvbmNlKQo+Pj4KPj4+IHdlIHRoZW4g cHJvdmlkZSAzIGZ1bmN0aW9ucyB0byB1c2UgZm9yIHRoYXQ6Cj4+Pgo+Pj4gKiBjb3B5X25lZWRz X2V4dHJhY3Rpb246IGRldGVybWluZXMgZnJvbSB0aGUgZ2l2ZW4gdm9saWQgKGxpa2UgYWJvdmUp IGlmCj4+PiAgICB0aGF0IG5lZWRzIGV4dHJhY3Rpb24gdG8gY29weSBpdCwgY3VycmVudGx5IG9u bHkgJ2ltcG9ydCcgdnR5cGUgKyBhCj4+PiAgICB2b2xpZCB3aXRoIHRoZSBhYm92ZSBmb3JtYXQg cmV0dXJucyB0cnVlCj4+Pgo+Pj4gKiBleHRyYWN0X2Rpc2tfZnJvbV9pbXBvcnRfZmlsZTogdGhp cyBhY3R1YWxseSBleHRyYWN0cyB0aGUgZmlsZSBmcm9tCj4+PiAgICB0aGUgYXJjaGl2ZS4gQ3Vy cmVudGx5IG9ubHkgb3ZhIGlzIHN1cHBvcnRlZCwgc28gdGhlIGV4dHJhY3Rpb24gd2l0aAo+Pj4g ICAgJ3RhcicgaXMgaGFyZGNvZGVkLCBidXQgYWdhaW4gd2UgY2FuIGVhc2lseSBleHRlbmQvbW9k aWZ5IHRoYXQgc2hvdWxkCj4+PiAgICB3ZSBuZWVkIHRvLgo+Pj4KPj4+ICAgIHdlIGN1cnJlbnRs eSBleHRyYWN0IGludG8gdGhlIGVpdGhlciB0aGUgaW1wb3J0IHN0b3JhZ2Ugb3IgYSBnaXZlbgo+ Pj4gICAgdGFyZ2V0IHN0b3JhZ2UgaW4gdGhlIGltYWdlcyBkaXJlY3Rvcnkgc28gaWYgdGhlIGNs ZWFudXAgZG9lcyBub3QKPj4+ICAgIGhhcHBlbiwgdGhlIHVzZXIgY2FuIHN0aWxsIHNlZSBhbmQg aW50ZXJhY3Qgd2l0aCB0aGUgaW1hZ2UgdmlhCj4+PiAgICBhcGkvY2xpL2d1aQo+Pj4KPj4+ICog Y2xlYW51cF9leHRyYWN0ZWRfaW1hZ2U6IGludGVuZGVkIHRvIGNsZWFudXAgdGhlIGV4dHJhY3Rl ZCBpbWFnZXMgZnJvbQo+Pj4gICAgYWJvdmUKPj4+Cj4+PiB3ZSBoYXZlIHRvIG1vZGlmeSB0aGUg YHBhcnNlX292ZmAgYSBiaXQgdG8gaGFuZGxlIHRoZSBtaXNzaW5nIGRpc2sKPj4+IGltYWdlcywg YW5kIHdlIHBhcnNlIHRoZSBzaXplIG91dCBvZiB0aGUgb3ZmIHBhcnQgKHNpbmNlIHRoaXMgaXMK Pj4+IGluZm9ybWFsIG9ubHksIGl0IHNob3VsZCBiZSBubyBwcm9ibGVtIGlmIHdlIGNhbm5vdCBw YXJzZSBpdCBzb21ldGltZXMpCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogRG9taW5payBDc2FwYWsg PGQuY3NhcGFrQHByb3htb3guY29tPgo+Pj4gLS0tCj4+PiAgIHNyYy9QVkUvQVBJMi9TdG9yYWdl L1N0YXR1cy5wbSB8ICAgMSArCj4+PiAgIHNyYy9QVkUvR3Vlc3RJbXBvcnQucG0gICAgICAgICB8 IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgc3JjL1BWRS9HdWVz dEltcG9ydC9PVkYucG0gICAgIHwgIDUzICsrKysrKysrKysrKysrLS0tCj4+PiAgIHNyYy9QVkUv TWFrZWZpbGUgICAgICAgICAgICAgICB8ICAgMSArCj4+PiAgIHNyYy9QVkUvU3RvcmFnZS5wbSAg ICAgICAgICAgICB8ICAgMiArLQo+Pj4gICBzcmMvUFZFL1N0b3JhZ2UvRGlyUGx1Z2luLnBtICAg fCAgMTUgKysrKy0KPj4+ICAgc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbSAgICAgIHwgICA1ICsr Cj4+PiAgIHNyYy90ZXN0L3BhcnNlX3ZvbG5hbWVfdGVzdC5wbSB8ICAxNSArKysrKwo+Pj4gICA4 IGZpbGVzIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKPj4+ICAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9QVkUvR3Vlc3RJbXBvcnQucG0KPj4+Cj4+PiBkaWZmIC0t Z2l0IGEvc3JjL1BWRS9BUEkyL1N0b3JhZ2UvU3RhdHVzLnBtIGIvc3JjL1BWRS9BUEkyL1N0b3Jh Z2UvU3RhdHVzLnBtCj4+PiBpbmRleCBkYzZjYzY5Li5hY2RlNzMwIDEwMDY0NAo+Pj4gLS0tIGEv c3JjL1BWRS9BUEkyL1N0b3JhZ2UvU3RhdHVzLnBtCj4+PiArKysgYi9zcmMvUFZFL0FQSTIvU3Rv cmFnZS9TdGF0dXMucG0KPj4+IEBAIC03NDksNiArNzQ5LDcgQEAgX19QQUNLQUdFX18tPnJlZ2lz dGVyX21ldGhvZCh7Cj4+PiAgIAkJCQknZWZpLXN0YXRlLWxvc3QnLAo+Pj4gICAJCQkJJ2d1ZXN0 LWlzLXJ1bm5pbmcnLAo+Pj4gICAJCQkJJ252bWUtdW5zdXBwb3J0ZWQnLAo+Pj4gKwkJCQknb3Zh LW5lZWRzLWV4dHJhY3RpbmcnLAo+Pj4gICAJCQkJJ292bWYtd2l0aC1sc2ktdW5zdXBwb3J0ZWQn LAo+Pj4gICAJCQkJJ3NlcmlhbC1wb3J0LXNvY2tldC1vbmx5JywKPj4+ICAgCQkJICAgIF0sCj4+ PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9HdWVzdEltcG9ydC5wbSBiL3NyYy9QVkUvR3Vlc3RJbXBv cnQucG0KPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+PiBpbmRleCAwMDAwMDAwLi5kNDA1ZTMw Cj4+PiAtLS0gL2Rldi9udWxsCj4+PiArKysgYi9zcmMvUFZFL0d1ZXN0SW1wb3J0LnBtCj4+PiBA QCAtMCwwICsxLDEwMCBAQAo+Pj4gK3BhY2thZ2UgUFZFOjpHdWVzdEltcG9ydDsKPj4+ICsKPj4+ ICt1c2Ugc3RyaWN0Owo+Pj4gK3VzZSB3YXJuaW5nczsKPj4+ICsKPj4+ICt1c2UgRmlsZTo6UGF0 aDsKPj4+ICsKPj4+ICt1c2UgUFZFOjpTdG9yYWdlOwo+PiAKPj4gYW5vdGhlciBjaXJjdWxhciBt b2R1bGUgZGVwZW5kZW5jeS4uCj4+IAoKdHJ1ZSwgc29ycnkgZm9yIHRoZSBub2lzZSEgOikKCj4g d2h5IGRvIHlvdSB0aGluayBzbz8gbm90aGluZyBpbiBzdG9yYWdlIGlzIHVzaW5nIFBWRTo6R3Vl c3RJbXBvcnQgb25seSBQVkU6Okd1ZXN0SW1wb3J0OjpPVkYgPwo+IAo+Pj4gK3VzZSBQVkU6OlRv b2xzIHF3KHJ1bl9jb21tYW5kKTsKPj4+ICsKPj4+ICtzdWIgY29weV9uZWVkc19leHRyYWN0aW9u IHsKPj4+ICsgICAgbXkgKCR2b2xpZCkgPSBAXzsKPj4+ICsgICAgbXkgJGNmZyA9IFBWRTo6U3Rv cmFnZTo6Y29uZmlnKCk7Cj4+PiArICAgIG15ICgkdnR5cGUsICRuYW1lLCB1bmRlZiwgdW5kZWYs IHVuZGVmLCB1bmRlZiwgJGZtdCkgPSBQVkU6OlN0b3JhZ2U6OnBhcnNlX3ZvbG5hbWUoJGNmZywg JHZvbGlkKTsKPj4+ICsKPj4+ICsgICAgIyBvbmx5IHZvbHVtZXMgaW5zaWRlIG92YXMgbmVlZCBl eHRyYWN0aW9uCj4+PiArICAgIHJldHVybiAkdnR5cGUgZXEgJ2ltcG9ydCcgJiYgJGZtdCA9fiBt L15vdmFcKyguKikkLzsKPj4+ICt9Cj4+IAo+PiB0aGlzIGNvdWxkIGp1c3QgYXMgd2VsbCBsaXZl IGluIHFlbXUtc2VydmVyLCB0aGVyZSdzIG9ubHkgdHdvIGNhbGwgc2l0ZXMKPj4gaW4gb25lIG1v ZHVsZSB0aGVyZS4uIG9uZSBvZiB0aGVtIGV2ZW4gYWxyZWFkeSBoYXMgdGhlIHBhcnNlZCB2b2xu YW1lIDspCj4gCj4gdHJ1ZQo+IAo+PiAKPj4+ICsKPj4+ICtzdWIgZXh0cmFjdF9kaXNrX2Zyb21f aW1wb3J0X2ZpbGUgewo+PiAKPj4gSSBkb24ndCByZWFsbHkgbGlrZSB0aGF0IHRoaXMgaXMgdXNp bmcgbG90cyBvZiBwbHVnaW4gc3R1ZmYuLgo+PiAKPj4+ICsgICAgbXkgKCR2b2xpZCwgJHZtaWQs ICR0YXJnZXRfc3RvcmVpZCkgPSBAXzsKPj4+ICsKPj4+ICsgICAgbXkgKCRzb3VyY2Vfc3RvcmVp ZCwgJHZvbG5hbWUpID0gUFZFOjpTdG9yYWdlOjpwYXJzZV92b2x1bWVfaWQoJHZvbGlkKTsKPj4+ ICsgICAgJHRhcmdldF9zdG9yZWlkIC8vPSAkc291cmNlX3N0b3JlaWQ7Cj4+PiArICAgIG15ICRj ZmcgPSBQVkU6OlN0b3JhZ2U6OmNvbmZpZygpOwo+Pj4gKyAgICBteSAkc291cmNlX3NjZmcgPSBQ VkU6OlN0b3JhZ2U6OnN0b3JhZ2VfY29uZmlnKCRjZmcsICRzb3VyY2Vfc3RvcmVpZCk7Cj4+PiAr ICAgIG15ICRzb3VyY2VfcGx1Z2luID0gUFZFOjpTdG9yYWdlOjpQbHVnaW4tPmxvb2t1cCgkc291 cmNlX3NjZmctPnt0eXBlfSk7Cj4+PiArCj4+PiArICAgIG15ICgkdnR5cGUsICRuYW1lLCB1bmRl ZiwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJGZtdCkgPQo+Pj4gKwkkc291cmNlX3BsdWdpbi0+cGFy c2Vfdm9sbmFtZSgkdm9sbmFtZSk7Cj4+IAo+PiBjb3VsZCBiZSBQVkU6OlN0b3JhZ2U6OnBhcnNl X3ZvbG5hbWUKPj4gCj4+PiArCj4+PiArICAgIGRpZSAib25seSBmaWxlcyB3aXRoIGNvbnRlbnQg dHlwZSAnaW1wb3J0JyBjYW4gYmUgZXh0cmFjdGVkXG4iCj4+PiArCWlmICR2dHlwZSBuZSAnaW1w b3J0JyB8fCAkZm10ICF+IG0vXm92YVwrLzsKPj4+ICsKPj4+ICsgICAgIyBleHRyYWN0IHRoZSBp bm5lciBmaWxlIGZyb20gdGhlIG5hbWUKPj4+ICsgICAgbXkgJGFyY2hpdmU7Cj4+PiArICAgIG15 ICRpbm5lcl9maWxlOwo+Pj4gKyAgICBpZiAoJG5hbWUgPX4gbSFeKC4qXC5vdmEpLygke1BWRTo6 U3RvcmFnZTo6U0FGRV9DSEFSX0NMQVNTX1JFfSspJCEpIHsKPj4+ICsJJGFyY2hpdmUgPSAiaW1w b3J0LyQxIjsKPj4+ICsJJGlubmVyX2ZpbGUgPSAkMjsKPj4+ICsJKCRmbXQpID0gJGZtdCA9fiAv Xm92YVwrKC4qKSQvOwo+Pj4gKyAgICB9IGVsc2Ugewo+Pj4gKwlkaWUgImNhbm5vdCBleHRyYWN0 ICR2b2xpZCAtIGludmFsaWQgdm9sbmFtZSAkdm9sbmFtZVxuIjsKPj4+ICsgICAgfQo+Pj4gKwo+ Pj4gKyAgICBteSAoJG92YV9wYXRoKSA9ICRzb3VyY2VfcGx1Z2luLT5wYXRoKCRzb3VyY2Vfc2Nm ZywgJGFyY2hpdmUsICRzb3VyY2Vfc3RvcmVpZCk7Cj4+IAo+PiBjb3VsZCBiZSBQVkU6OlN0b3Jh Z2U6OnBhdGgKPj4gCj4+PiArCj4+PiArICAgIG15ICR0YXJnZXRfc2NmZyA9IFBWRTo6U3RvcmFn ZTo6c3RvcmFnZV9jb25maWcoJGNmZywgJHRhcmdldF9zdG9yZWlkKTsKPj4+ICsgICAgbXkgJHRh cmdldF9wbHVnaW4gPSBQVkU6OlN0b3JhZ2U6OlBsdWdpbi0+bG9va3VwKCR0YXJnZXRfc2NmZy0+ e3R5cGV9KTsKPj4+ICsKPj4+ICsgICAgbXkgJGRlc3RkaXIgPSAkdGFyZ2V0X3BsdWdpbi0+Z2V0 X3N1YmRpcigkdGFyZ2V0X3NjZmcsICdpbWFnZXMnKTsKPj4gCj4+IGNvdWxkIGJlIFBWRTo6U3Rv cmFnZTo6Z2V0X2ltYWdlX2Rpcgo+PiAKPj4+ICsKPj4+ICsgICAgbXkgJHBpZCA9ICQkOwo+Pj4g KyAgICAkZGVzdGRpciAuPSAiL3RtcF8ke3BpZH1fJHt2bWlkfSI7Cj4+PiArICAgIG1rcGF0aCAk ZGVzdGRpcjsKPj4+ICsKPj4+ICsgICAgKCRvdmFfcGF0aCkgPSAkb3ZhX3BhdGggPX4gbXxeKC4q KSR8OyAjIHVudGFpbnQKPj4+ICsKPj4+ICsgICAgbXkgJHNvdXJjZV9wYXRoID0gIiRkZXN0ZGly LyRpbm5lcl9maWxlIjsKPj4+ICsgICAgbXkgJHRhcmdldF9wYXRoOwo+Pj4gKyAgICBteSAkdGFy Z2V0X3ZvbG5hbWU7Cj4+PiArICAgIGV2YWwgewo+Pj4gKwlydW5fY29tbWFuZChbJ3RhcicsICct eCcsICctLWZvcmNlLWxvY2FsJywgJy1DJywgJGRlc3RkaXIsICctZicsICRvdmFfcGF0aCwgJGlu bmVyX2ZpbGVdKTsKPj4+ICsKPj4+ICsJIyBjaGVjayBmb3Igc3ltbGlua3MgYW5kIG90aGVyIG5v biByZWd1bGFyIGZpbGVzCj4+PiArCWlmICgtbCAkc291cmNlX3BhdGggfHwgISAtZiAkc291cmNl X3BhdGgpIHsKPj4+ICsJICAgIGRpZSAib25seSByZWd1bGFyIGZpbGVzIGFyZSBhbGxvd2VkXG4i Owo+Pj4gKwl9Cj4+PiArCj4+PiArCW15ICR0YXJnZXRfZGlza25hbWUKPj4+ICsJICAgID0gJHRh cmdldF9wbHVnaW4tPmZpbmRfZnJlZV9kaXNrbmFtZSgkdGFyZ2V0X3N0b3JlaWQsICR0YXJnZXRf c2NmZywgJHZtaWQsICRmbXQsIDEpOwo+PiAKPj4gdGhlc2UgaGVyZSByZXF1aXJlcyBob2xkaW5n IGEgbG9jayB1bnRpbCB0aGUgZGlza25hbWUgaXMgYWN0dWFsbHkgdXNlZAo+PiAodGhlIHJlbmFt ZSBiZWxvdyksIGVsc2UgaXQncyByYWNleS4uCj4gCj4gd2UgZG8gaGF2ZSBhIGxvY2sgb3ZlciB2 bSBjcmVhdGlvbiBpbiB0aGUgb25seSBwYXRoIHRoaXMgaXMgY2FsbGVkIGFuZCBpdCBpcyB2bWlk IHNwZWNpZmljLi4uCj4gc28gaXMgdGhpcyByZWFsbHkgYSBwcm9ibGVtPwoKeWVzLCBldmVyeSBk aXNrIGFsbG9jYXRpb24gbmVlZHMgdG8gaG9sZCB0aGUgc3RvcmFnZSBsb2NrIHRvIGF2b2lkIHR3 bwphY3Rpb25zIGluIHBhcmFsbGVsIHRoaW5raW5nIHRoZXkgb3duIGEgIm5ldyIgZGlzayBuYW1l IHRoYXQgaGFzbid0IHlldApiZWVuIGFsbG9jYXRlZCBwcm9wZXJseS4KCml0J3MgcG9zc2libGUg dG8gYWxsb2NhdGUgbmV3IHZvbHVtZXMgd2l0aG91dCBnb2luZyBvdmVyIGEgZ3Vlc3QKc3BlY2lm aWMgQVBJIGFmdGVyIGFsbCwgYW5kIHRoZXJlIGFyZSBhdXRvbWF0aW9uIHVzZSBjYXNlcyBkb2lu ZyBqdXN0CnRoYXQgKHByZS1hbGxvY2F0aW5nIHRoZSB2b2x1bWVzLCB0aGVuIGNyZWF0aW5nL3Vw ZGF0aW5nIHRoZSBWTSkuCgo+Pj4gKwkkdGFyZ2V0X3ZvbG5hbWUgPSAiJHZtaWQvIiAuICR0YXJn ZXRfZGlza25hbWU7Cj4+IAo+PiB0aGlzIGVuY29kZXMgYSBmYWN0IGFib3V0IHZvbG5hbWUgc2Vt YW50aWNzIHRoYXQgbWlnaHQgbm90IGJlIGEgZ2l2ZW4KPj4gZm9yIGV4dGVybmFsLCBkaXItYmFz ZWQgcGx1Z2lucyAobm90IHN1cmUgaWYgd2Ugd2FudCB0byB3b3JyeSBhYm91dCB0aGF0Cj4+IHRo b3VnaCwgb3IgaG93IHRvIGF2b2lkIGl0IDspKS4KPiAKPiBpIG1lYW4gd2UgY291bGQgY2FsbCAn YWxsb2MnIHdpdGggYSB2ZXJ5IHNtYWxsIHNpemUgaW5zdGVhZAo+IGFuZCBzaW1wbHkgIm92ZXJ3 cml0ZSIgaXQ/IHRoZW4gd2UnZCBhbHNvIGdldCBhcm91bmQgdGhpbmdzIGxpa2UKPiBta3BhdGgg YW5kIGltYWdlZGlyIGV0Yy4KCnRoYXQgbWlnaHQgYWN0dWFsbHkgYmUgbmljZShyKSB0aGFuIHRo ZSBjdXJyZW50IGFwcHJvYWNoIHNpbmNlIGl0IGF2b2lkcwp0aGUgdm9sbmFtZSBmb3JtYXQgaXNz dWUgZW50aXJlbHkuIHRoZSBvbmx5IGRvd25zaWRlIGlzIHRoYXQgd2UgdGhlbgpicmllZmx5IGhh dmUgYSAid3JvbmciIGRpc2sgdmlzaWJsZSwgYnV0IHNpbmNlIHRoZSBWTSBoYXMgdG8gYmUgbG9j a2VkCmF0IHRoYXQgcG9pbnQgdGhlcmUgc2hvdWxkbid0IGJlIHRvbyBtdWNoIGhhcm0gaW4gdGhh dD8KCj4+PiArCSR0YXJnZXRfcGF0aCA9ICR0YXJnZXRfcGx1Z2luLT5maWxlc3lzdGVtX3BhdGgo JHRhcmdldF9zY2ZnLCAkdGFyZ2V0X3ZvbG5hbWUpOwo+PiAKPj4gdGhpcyBzaG91bGQgYmUgZXF1 aXZhbGVudCB0byBQVkU6OlN0b3JhZ2U6OnBhdGggZm9yIERpclBsdWdpbiBiYXNlZAo+PiBzdG9y YWdlcz8KPj4gCj4+PiArCj4+PiArCXByaW50ICJyZW5hbWluZyAkc291cmNlX3BhdGggdG8gJHRh cmdldF9wYXRoXG4iOwo+Pj4gKwlteSAkaW1hZ2VkaXIgPSAkdGFyZ2V0X3BsdWdpbi0+Z2V0X3N1 YmRpcigkdGFyZ2V0X3NjZmcsICdpbWFnZXMnKTsKPj4gCj4+IHdlIGFscmVhZHkgZGlkIHRoaXMg YWJvdmUsIGJ1dCBzZWUgY29tbWVudCB0aGVyZSA7KQo+IAo+IHRydWUgOykKPiAKPj4gCj4+PiAr CW1rcGF0aCAiJGltYWdlZGlyLyR2bWlkIjsKPj4+ICsKPj4+ICsJcmVuYW1lKCRzb3VyY2VfcGF0 aCwgJHRhcmdldF9wYXRoKSBvciBkaWUgInVuYWJsZSB0byBtb3ZlIC0gJCFcbiI7Cj4+PiArICAg IH07Cj4+PiArICAgIGlmIChteSAkZXJyID0gJEApIHsKPj4+ICsJdW5saW5rICRzb3VyY2VfcGF0 aDsKPj4+ICsJdW5saW5rICR0YXJnZXRfcGF0aCBpZiBkZWZpbmVkKCR0YXJnZXRfcGF0aCk7Cj4+ IAo+PiBpc24ndCB0aGlzIHByZXR0eSBtdWNoIGltcG9zc2libGUgdG8gaGFwcGVuPyB0aGUgbGFz dCB0aGluZyB3ZSBkbyBpbiB0aGUKPj4gZXZhbCBibG9jayBpcyB0aGUgcmVuYW1lIC0gaWYgdGhh dCBmYWlsZWQsICR0YXJnZXRfcGF0aCBjYW4ndCBleGlzdCB5ZXQuCj4+IGlmIGl0IGRpZG4ndCBm YWlsLCB3ZSBjYW4ndCBlbmQgdXAgaGVyZT8KPiAKPiB0aGF0IHByb2JhYmx5IGRlcGVuZHMgb24g dGhlIHVuZGVybHlpbmcgZmlsZXN5c3RlbSBubz8gbm90Cj4gZXZlcnkgZnMgaGFzIHBvc2l4IHJl bmFtZSBzZW1hbnRpY3MgaSBndWVzcz8KCkkgdGhpbmsgd2UgY2FuIGFzc3VtZSBhbiBpbnRyYS1G UyByZW5hbWUgdG8gZWl0aGVyIHdvcmsgYW5kIGhhdmUgYW4KZWZmZWN0LCBvciBub3Qgd29yayBh bmQgbm90IGhhdmUgYW4gZWZmZWN0IG9uIGFueXRoaW5nIHdlIHdhbnQgdG8Kc3VwcG9ydCBhcyBk aXIgc3RvcmFnZT8gOikKCj4gaW4gdGhhdCBjYXNlIHdlJ2QgY2xlYW51cCB0aGUgZmlsZSwgYW5k IGlmIGl0IGRvZXMgbm90IGV4aXN0cywgaXQgZG9lc24ndCBodXJ0Cj4gYnV0CgpzdXJlLCBidXQg ZXJyb3IgaGFuZGxpbmcgdGVuZHMgdG8gZ2V0IG1vcmUgY29tcGxpY2F0ZWQgb3ZlciB0aW1lLCBz byBub3QKaGF2aW5nIG5vcHMgaW4gdGhlcmUgcmVkdWNlcyB0aGUgY29tcGxleGl0eSBzb21ld2hh dCBJTUhPLgoKPj4+ICsJcm1kaXIgJGRlc3RkaXI7Cj4+IAo+PiB0aGlzIGFuZCB1bmxpbmsgJHNv dXJjZV9wYXRoIGNvdWxkIGp1c3QgYmUgYSByZW1vdmVfdHJlZSBvbiAkZGVzdGRpcgo+PiBpbnN0 ZWFkLCB3aXRoIGxlc3MgY2hhbmNlcyBvZiBsZWF2aW5nIHN0dWZmIGFyb3VuZD8KPiAKPiB0aGlz IGlzIHRydWUgb2YgY291cnNlIGFuZCByZW1vdmVzIHRoZSBpc3N1ZSBhYm92ZQo+IAo+PiAKPj4+ ICsJZGllICJlcnJvciBkdXJpbmcgZXh0cmFjdGlvbjogJGVyclxuIjsKPj4+ICsgICAgfQo+Pj4g Kwo+Pj4gKyAgICBybWRpciAkZGVzdGRpcjsKPj4gCj4+IGNvdWxkIGFsc28gYmUgYSByZW1vdmVf dHJlZSwganVzdCB0byBiZSBvbiB0aGUgc2FmZSBzaWRlPwo+IAo+IHl1cAo+IAo+PiAKPj4+ICsK Pj4+ICsgICAgcmV0dXJuICIkdGFyZ2V0X3N0b3JlaWQ6JHRhcmdldF92b2xuYW1lIjsKPj4+ICt9 Cj4+PiArCj4+PiArc3ViIGNsZWFudXBfZXh0cmFjdGVkX2ltYWdlIHsKPj4+ICsgICAgbXkgKCRz b3VyY2UpID0gQF87Cj4+PiArCj4+PiArICAgIG15ICRjZmcgPSBQVkU6OlN0b3JhZ2U6OmNvbmZp ZygpOwo+Pj4gKyAgICBQVkU6OlN0b3JhZ2U6OnZkaXNrX2ZyZWUoJGNmZywgJHNvdXJjZSk7Cj4+ PiArfQo+PiAKPj4gd2h5IGRvIHdlIG5lZWQgdGhpcyBoZWxwZXIsIGFuZCBub3QganVzdCBjYWxs IHZkaXNrX2ZyZWUgZGlyZWN0bHkgaW4KPj4gcWVtdS1zZXJ2ZXIgKHdlIGRvIHRoYXQgaW4gdG9u cyBvZiBwbGFjZXMgdGhlcmUgYXMgcGFydCBvZiBlcnJvcgo+PiBoYW5kbGluZyBmb3IgZnJlc2hs eSBhbGxvY2F0ZWQgdm9sdW1lcyk/Cj4gCj4gb2sgbWFrZXMgc2Vuc2UKPiAKPj4gCj4+PiArCj4+ PiArMTsKPj4+IGRpZmYgLS1naXQgYS9zcmMvUFZFL0d1ZXN0SW1wb3J0L09WRi5wbSBiL3NyYy9Q VkUvR3Vlc3RJbXBvcnQvT1ZGLnBtCj4+PiBpbmRleCAwZWI1ZTljLi42Yjc5MDc4IDEwMDY0NAo+ Pj4gLS0tIGEvc3JjL1BWRS9HdWVzdEltcG9ydC9PVkYucG0KPj4+ICsrKyBiL3NyYy9QVkUvR3Vl c3RJbXBvcnQvT1ZGLnBtCj4+PiBAQCAtODUsMTEgKzg1LDM3IEBAIHN1YiBpZF90b19wdmUgewo+ Pj4gICAgICAgfQo+Pj4gICB9Cj4+PiAgIAo+Pj4gKyMgdGVjaG5pY2FsbHkgZGVmaW5lZCBpbiBE U1AwMDA0IChodHRwczovL3d3dy5kbXRmLm9yZy9kc3AvRFNQMDAwNCkgYXMgYW4gQUJORgo+Pj4g KyMgYnV0IHJlYWxpc3RpY2FsbHkgdGhpcyBhbHdheXMgdGFrZXMgdGhlIGZvcm0gb2YgJ2J5dGUg KiBiYXNlXmV4cG9uZW50Jwo+Pj4gK3N1YiB0cnlfcGFyc2VfY2FwYWNpdHlfdW5pdCB7Cj4+PiAr ICAgIG15ICgkdW5pdF90ZXh0KSA9IEBfOwo+Pj4gKwo+Pj4gKyAgICBpZiAoJHVuaXRfdGV4dCA9 fiBtL15ccypieXRlXHMqXCpccyooWzAtOV0rKVxzKlxeXHMqKFswLTldKylccyokLykgewo+Pj4g KwlteSAkYmFzZSA9ICQxOwo+Pj4gKwlteSAkZXhwID0gJDI7Cj4+PiArCXJldHVybiAkYmFzZSAq KiAkZXhwOwo+Pj4gKyAgICB9Cj4+PiArCj4+PiArICAgIHJldHVybiB1bmRlZjsKPj4+ICt9Cj4+ PiArCj4+PiAgICMgcmV0dXJucyB0d28gcmVmZXJlbmNlcywgJHFtIHdoaWNoIGhvbGRzIHFtLmNv bmYgc3R5bGUga2V5L3ZhbHVlcywgYW5kIFxAZGlza3MKPj4+ICAgc3ViIHBhcnNlX292ZiB7Cj4+ PiAtICAgIG15ICgkb3ZmLCAkZGVidWcpID0gQF87Cj4+PiArICAgIG15ICgkb3ZmLCAkaXNPdmEs ICRkZWJ1ZykgPSBAXzsKPj4+ICsKPj4+ICsgICAgIyB3ZSBoYXZlIHRvIGlnbm9yZSBtaXNzaW5n IGRpc2sgaW1hZ2VzIGZvciBvdmEKPj4+ICsgICAgbXkgJGRvbTsKPj4+ICsgICAgaWYgKCRpc092 YSkgewo+Pj4gKwlteSAkcmF3ID0gIiI7Cj4+PiArCVBWRTo6VG9vbHM6OnJ1bl9jb21tYW5kKFsn dGFyJywgJy14TycsICctLXdpbGRjYXJkcycsICctLW9jY3VycmVuY2U9MScsICctZicsICRvdmYs ICcqLm92ZiddLCBvdXRmdW5jID0+IHN1YiB7Cj4+PiArCSAgICBteSAkbGluZSA9IHNoaWZ0Owo+ Pj4gKwkgICAgJHJhdyAuPSAkbGluZTsKPj4+ICsJfSk7Cj4+PiArCSRkb20gPSBYTUw6OkxpYlhN TC0+bG9hZF94bWwoc3RyaW5nID0+ICRyYXcsIG5vX2JsYW5rcyA9PiAxKTsKPj4+ICsgICAgfSBl bHNlIHsKPj4+ICsJJGRvbSA9IFhNTDo6TGliWE1MLT5sb2FkX3htbChsb2NhdGlvbiA9PiAkb3Zm LCBub19ibGFua3MgPT4gMSk7Cj4+PiArICAgIH0KPj4+ICAgCj4+PiAtICAgIG15ICRkb20gPSBY TUw6OkxpYlhNTC0+bG9hZF94bWwobG9jYXRpb24gPT4gJG92Ziwgbm9fYmxhbmtzID0+IDEpOwo+ Pj4gICAKPj4+ICAgICAgICMgcmVnaXN0ZXIgdGhlIHhtbCBuYW1lc3BhY2VzIGluIGEgeHBhdGgg Y29udGV4dCBvYmplY3QKPj4+ICAgICAgICMgJ292ZicgaXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNl IHNvIGl0IHdpbGwgcHJlcGVuZGVkIHRvIGVhY2ggeG1sIGVsZW1lbnQKPj4+IEBAIC0xNzcsNyAr MjAzLDE3IEBAIHN1YiBwYXJzZV9vdmYgewo+Pj4gICAJIyBAIG5lZWRzIHRvIGJlIGVzY2FwZWQg dG8gcHJldmVudCBQZXJsIGRvdWJsZSBxdW90ZSBpbnRlcnBvbGF0aW9uCj4+PiAgIAlteSAkeHBh dGhfZmluZF9maWxlcmVmID0gc3ByaW50ZigiL292ZjpFbnZlbG9wZS9vdmY6RGlza1NlY3Rpb24v XAo+Pj4gICBvdmY6RGlza1tcQG92ZjpkaXNrSWQ9JyVzJ10vXEBvdmY6ZmlsZVJlZiIsICRkaXNr X2lkKTsKPj4+ICsJbXkgJHhwYXRoX2ZpbmRfY2FwYWNpdHkgPSBzcHJpbnRmKCIvb3ZmOkVudmVs b3BlL292ZjpEaXNrU2VjdGlvbi9cCj4+PiArb3ZmOkRpc2tbXEBvdmY6ZGlza0lkPSclcyddL1xA b3ZmOmNhcGFjaXR5IiwgJGRpc2tfaWQpOwo+Pj4gKwlteSAkeHBhdGhfZmluZF9jYXBhY2l0eV91 bml0ID0gc3ByaW50ZigiL292ZjpFbnZlbG9wZS9vdmY6RGlza1NlY3Rpb24vXAo+Pj4gK292ZjpE aXNrW1xAb3ZmOmRpc2tJZD0nJXMnXS9cQG92ZjpjYXBhY2l0eUFsbG9jYXRpb25Vbml0cyIsICRk aXNrX2lkKTsKPj4+ICAgCW15ICRmaWxlcmVmID0gJHhwYy0+ZmluZHZhbHVlKCR4cGF0aF9maW5k X2ZpbGVyZWYpOwo+Pj4gKwlteSAkY2FwYWNpdHkgPSAkeHBjLT5maW5kdmFsdWUoJHhwYXRoX2Zp bmRfY2FwYWNpdHkpOwo+Pj4gKwlteSAkY2FwYWNpdHlfdW5pdCA9ICR4cGMtPmZpbmR2YWx1ZSgk eHBhdGhfZmluZF9jYXBhY2l0eV91bml0KTsKPj4+ICsJbXkgJHZpcnR1YWxfc2l6ZTsKPj4+ICsJ aWYgKG15ICRmYWN0b3IgPSB0cnlfcGFyc2VfY2FwYWNpdHlfdW5pdCgkY2FwYWNpdHlfdW5pdCkp IHsKPj4+ICsJICAgICR2aXJ0dWFsX3NpemUgPSAkY2FwYWNpdHkgKiAkZmFjdG9yOwo+Pj4gKwl9 Cj4+PiAgIAo+Pj4gICAJbXkgJHZhbGlkX3VybF9jaGFycyA9IHFyQCR7dmFsaWRfdXJpcGF0aF9j aGFyc318L0A7Cj4+PiAgIAlpZiAoISRmaWxlcmVmIHx8ICRmaWxlcmVmICF+IG0vXiR7dmFsaWRf dXJsX2NoYXJzfSskLykgewo+Pj4gQEAgLTIxNyw3ICsyNTMsNyBAQCBvdmY6SXRlbVtyYXNkOklu c3RhbmNlSUQ9JyVzJ10vcmFzZDpSZXNvdXJjZVR5cGUiLCAkY29udHJvbGxlcl9pZCk7Cj4+PiAg IAkgICAgZGllICJlcnJvciBwYXJzaW5nICRmaWxlcGF0aCwgYXJlIHlvdSB1c2luZyBhIHN5bWxp bmsgP1xuIjsKPj4+ICAgCX0KPj4+ICAgCj4+PiAtCWlmICghLWUgJGJhY2tpbmdfZmlsZV9wYXRo KSB7Cj4+PiArCWlmICghLWUgJGJhY2tpbmdfZmlsZV9wYXRoICYmICEkaXNPdmEpIHsKPj4+ICAg CSAgICBkaWUgImVycm9yIHBhcnNpbmcgJGZpbGVwYXRoLCBmaWxlIHNlZW1zIG5vdCB0byBleGlz dCBhdCAkYmFja2luZ19maWxlX3BhdGhcbiI7Cj4+PiAgIAl9Cj4+PiAgIAo+Pj4gQEAgLTIyNSwx NiArMjYxLDE5IEBAIG92ZjpJdGVtW3Jhc2Q6SW5zdGFuY2VJRD0nJXMnXS9yYXNkOlJlc291cmNl VHlwZSIsICRjb250cm9sbGVyX2lkKTsKPj4+ICAgCSgkZmlsZXBhdGgpID0gJGZpbGVwYXRoID1+ IG18Xigke1BWRTo6U3RvcmFnZTo6U0FGRV9DSEFSX0NMQVNTX1JFfSspJHw7ICMgdW50YWludCAm IGNoZWNrIG5vIHN1Yi9wYXJlbnQgZGlycwo+Pj4gICAJZGllICJpbnZhbGlkIHBhdGhcbiIgaWYg ISRmaWxlcGF0aDsKPj4+ICAgCj4+PiAtCW15ICR2aXJ0dWFsX3NpemUgPSBQVkU6OlN0b3JhZ2U6 OmZpbGVfc2l6ZV9pbmZvKCRiYWNraW5nX2ZpbGVfcGF0aCk7Cj4+PiAtCWRpZSAiZXJyb3IgcGFy c2luZyAkYmFja2luZ19maWxlX3BhdGgsIGNhbm5vdCBkZXRlcm1pbmUgZmlsZSBzaXplXG4iCj4+ PiAtCSAgICBpZiAhJHZpcnR1YWxfc2l6ZTsKPj4+ICsJaWYgKCEkaXNPdmEpIHsKPj4+ICsJICAg IG15ICRzaXplID0gUFZFOjpTdG9yYWdlOjpmaWxlX3NpemVfaW5mbygkYmFja2luZ19maWxlX3Bh dGgpOwo+Pj4gKwkgICAgZGllICJlcnJvciBwYXJzaW5nICRiYWNraW5nX2ZpbGVfcGF0aCwgY2Fu bm90IGRldGVybWluZSBmaWxlIHNpemVcbiIKPj4+ICsJCWlmICEkc2l6ZTsKPj4+ICAgCj4+PiAr CSAgICAkdmlydHVhbF9zaXplID0gJHNpemU7Cj4+PiArCX0KPj4+ICAgCSRwdmVfZGlzayA9IHsK Pj4+ICAgCSAgICBkaXNrX2FkZHJlc3MgPT4gJHB2ZV9kaXNrX2FkZHJlc3MsCj4+PiAgIAkgICAg YmFja2luZ19maWxlID0+ICRiYWNraW5nX2ZpbGVfcGF0aCwKPj4+IC0JICAgIHZpcnR1YWxfc2l6 ZSA9PiAkdmlydHVhbF9zaXplCj4+PiAgIAkgICAgcmVsYXRpdmVfcGF0aCA9PiAkZmlsZXBhdGgs Cj4+PiAgIAl9Owo+Pj4gKwkkcHZlX2Rpc2stPnt2aXJ0dWFsX3NpemV9ID0gJHZpcnR1YWxfc2l6 ZSBpZiBkZWZpbmVkKCR2aXJ0dWFsX3NpemUpOwo+Pj4gICAJcHVzaCBAZGlza3MsICRwdmVfZGlz azsKPj4+ICAgCj4+PiAgICAgICB9Cj4+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9NYWtlZmlsZSBi L3NyYy9QVkUvTWFrZWZpbGUKPj4+IGluZGV4IGUxNWEyNzUuLjBhZjMwODEgMTAwNjQ0Cj4+PiAt LS0gYS9zcmMvUFZFL01ha2VmaWxlCj4+PiArKysgYi9zcmMvUFZFL01ha2VmaWxlCj4+PiBAQCAt NSw2ICs1LDcgQEAgaW5zdGFsbDoKPj4+ICAgCWluc3RhbGwgLUQgLW0gMDY0NCBTdG9yYWdlLnBt ICR7REVTVERJUn0ke1BFUkxESVJ9L1BWRS9TdG9yYWdlLnBtCj4+PiAgIAlpbnN0YWxsIC1EIC1t IDA2NDQgRGlza21hbmFnZS5wbSAke0RFU1RESVJ9JHtQRVJMRElSfS9QVkUvRGlza21hbmFnZS5w bQo+Pj4gICAJaW5zdGFsbCAtRCAtbSAwNjQ0IENlcGhDb25maWcucG0gJHtERVNURElSfSR7UEVS TERJUn0vUFZFL0NlcGhDb25maWcucG0KPj4+ICsJaW5zdGFsbCAtRCAtbSAwNjQ0IEd1ZXN0SW1w b3J0LnBtICR7REVTVERJUn0ke1BFUkxESVJ9L1BWRS9HdWVzdEltcG9ydC5wbQo+Pj4gICAJbWFr ZSAtQyBTdG9yYWdlIGluc3RhbGwKPj4+ICAgCW1ha2UgLUMgR3Vlc3RJbXBvcnQgaW5zdGFsbAo+ Pj4gICAJbWFrZSAtQyBBUEkyIGluc3RhbGwKPj4+IGRpZmYgLS1naXQgYS9zcmMvUFZFL1N0b3Jh Z2UucG0gYi9zcmMvUFZFL1N0b3JhZ2UucG0KPj4+IGluZGV4IDFlZDkxYzIuLmFkYzFiNDUgMTAw NzU1Cj4+PiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UucG0KPj4+ICsrKyBiL3NyYy9QVkUvU3RvcmFn ZS5wbQo+Pj4gQEAgLTExNCw3ICsxMTQsNyBAQCBvdXIgJFZaVE1QTF9FWFRfUkVfMSA9IHFyL1wu dGFyXC4oZ3p8eHp8enN0KS9pOwo+Pj4gICAKPj4+ICAgb3VyICRCQUNLVVBfRVhUX1JFXzIgPSBx ci9cLih0Z3p8KD86dGFyfHZtYSkoPzpcLigke1xQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Q09NUFJF U1NPUl9SRX0pKT8pLzsKPj4+ICAgCj4+PiAtb3VyICRJTVBPUlRfRVhUX1JFXzEgPSBxci9cLihv dmZ8cWNvdzJ8cmF3fHZtZGspLzsKPj4+ICtvdXIgJElNUE9SVF9FWFRfUkVfMSA9IHFyL1wuKG92 YXxvdmZ8cWNvdzJ8cmF3fHZtZGspLzsKPj4+ICAgCj4+PiAgIG91ciAkU0FGRV9DSEFSX0NMQVNT X1JFID0gcXIvW2EtekEtWjAtOVwtXC5cK1w9XF9dLzsKPj4+ICAgCj4+PiBkaWZmIC0tZ2l0IGEv c3JjL1BWRS9TdG9yYWdlL0RpclBsdWdpbi5wbSBiL3NyYy9QVkUvU3RvcmFnZS9EaXJQbHVnaW4u cG0KPj4+IGluZGV4IDNlM2IxZTcuLmVhODk0NjQgMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvUFZFL1N0 b3JhZ2UvRGlyUGx1Z2luLnBtCj4+PiArKysgYi9zcmMvUFZFL1N0b3JhZ2UvRGlyUGx1Z2luLnBt Cj4+PiBAQCAtMjU4LDE1ICsyNTgsMjYgQEAgc3ViIGdldF9pbXBvcnRfbWV0YWRhdGEgewo+Pj4g ICAgICAgIyBOT1RFOiBhbGwgdHlwZXMgb2Ygd2FybmluZ3MgbXVzdCBiZSBhZGRlZCB0byB0aGUg cmV0dXJuIHNjaGVtYSBvZiB0aGUgaW1wb3J0LW1ldGFkYXRhIEFQSSBlbmRwb2ludAo+Pj4gICAg ICAgbXkgJHdhcm5pbmdzID0gW107Cj4+PiAgIAo+Pj4gKyAgICBteSAkaXNPdmEgPSAwOwo+Pj4g KyAgICBpZiAoJG5hbWUgPX4gbS9cLm92YSQvKSB7Cj4+PiArCSRpc092YSA9IDE7Cj4+PiArCXB1 c2ggQCR3YXJuaW5ncywgeyB0eXBlID0+ICdvdmEtbmVlZHMtZXh0cmFjdGluZycgfTsKPj4+ICsg ICAgfQo+Pj4gICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xuYW1lLCAk c3RvcmVpZCwgdW5kZWYpOwo+Pj4gLSAgICBteSAkcmVzID0gUFZFOjpHdWVzdEltcG9ydDo6T1ZG OjpwYXJzZV9vdmYoJHBhdGgpOwo+Pj4gKyAgICBteSAkcmVzID0gUFZFOjpHdWVzdEltcG9ydDo6 T1ZGOjpwYXJzZV9vdmYoJHBhdGgsICRpc092YSk7Cj4+PiAgICAgICBteSAkZGlza3MgPSB7fTsK Pj4+ICAgICAgIGZvciBteSAkZGlzayAoJHJlcy0+e2Rpc2tzfS0+QCopIHsKPj4+ICAgCW15ICRp ZCA9ICRkaXNrLT57ZGlza19hZGRyZXNzfTsKPj4+ICAgCW15ICRzaXplID0gJGRpc2stPnt2aXJ0 dWFsX3NpemV9Owo+Pj4gICAJbXkgJHBhdGggPSAkZGlzay0+e3JlbGF0aXZlX3BhdGh9Owo+Pj4g KwlteSAkdm9saWQ7Cj4+PiArCWlmICgkaXNPdmEpIHsKPj4+ICsJICAgICR2b2xpZCA9ICIkc3Rv cmVpZDokdm9sbmFtZS8kcGF0aCI7Cj4+PiArCX0gZWxzZSB7Cj4+PiArCSAgICAkdm9saWQgPSAi JHN0b3JlaWQ6aW1wb3J0LyRwYXRoIiwKPj4+ICsJfQo+Pj4gICAJJGRpc2tzLT57JGlkfSA9IHsK Pj4+IC0JICAgIHZvbGlkID0+ICIkc3RvcmVpZDppbXBvcnQvJHBhdGgiLAo+Pj4gKwkgICAgdm9s aWQgPT4gJHZvbGlkLAo+Pj4gICAJICAgIGRlZmluZWQoJHNpemUpID8gKHNpemUgPT4gJHNpemUp IDogKCksCj4+PiAgIAl9Owo+Pj4gICAgICAgfQo+Pj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3Rv cmFnZS9QbHVnaW4ucG0gYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCj4+PiBpbmRleCAzM2Yw ZjNhLi42NDBkMTU2IDEwMDY0NAo+Pj4gLS0tIGEvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbQo+ Pj4gKysrIGIvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbQo+Pj4gQEAgLTY1NCw2ICs2NTQsMTEg QEAgc3ViIHBhcnNlX3ZvbG5hbWUgewo+Pj4gICAJcmV0dXJuICgnYmFja3VwJywgJGZuKTsKPj4+ ICAgICAgIH0gZWxzaWYgKCR2b2xuYW1lID1+IG0hXnNuaXBwZXRzLyhbXi9dKykkISkgewo+Pj4g ICAJcmV0dXJuICgnc25pcHBldHMnLCAkMSk7Cj4+PiArICAgIH0gZWxzaWYgKCR2b2xuYW1lID1+ IG0hXmltcG9ydC8oJHtQVkU6OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19SRX0rXC5vdmFcLygk e1BWRTo6U3RvcmFnZTo6U0FGRV9DSEFSX0NMQVNTX1JFfSspKSQhKSB7Cj4+PiArCW15ICRhcmNo aXZlID0gJDE7Cj4+PiArCW15ICRmaWxlID0gJDI7Cj4+PiArCW15ICh1bmRlZiwgJGZvcm1hdCwg dW5kZWYpID0gcGFyc2VfbmFtZV9kaXIoJGZpbGUpOwo+Pj4gKwlyZXR1cm4gKCdpbXBvcnQnLCAk YXJjaGl2ZSwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgdW5kZWYsICJvdmErJGZvcm1hdCIpOwo+PiAK Pj4gdGhlc2UgY291bGQgYmUgaW1wcm92ZWQgaWYgdGhlIGZvcm1hdCB3YXMgYWxyZWFkeSBjaGVj a2VkIGluIHRoZSBlbHNpZgo+PiBjb25kaXRpb24gSSB0aGluaywgc2luY2UgdGhlIGVycm9yIG1l c3NhZ2Ugb2YgcGFyc2VfbmFtZV9kaXIgaXMgYSBiaXQKPj4gb3BhcXVlL2xhY2tpbmcgY29udGV4 dC4uIGFsc28sIHBhcnNlX25hbWVfZGlyIGFsbG93cyBzdWJ2b2wsIHdoaWNoIHdlCj4+IGRvbid0 IHdhbnQgdG8gYWxsb3cgaGVyZSBJIHRoaW5rPwo+IAo+IG9rIHllYWggdGhhdCBtYWtlcyBzZW5z ZQo+IAo+PiAKPj4+ICAgICAgIH0gZWxzaWYgKCR2b2xuYW1lID1+IG0hXmltcG9ydC8oJHtQVkU6 OlN0b3JhZ2U6OlNBRkVfQ0hBUl9DTEFTU19SRX0rJFBWRTo6U3RvcmFnZTo6SU1QT1JUX0VYVF9S RV8xKSQhKSB7Cj4+PiAgIAlyZXR1cm4gKCdpbXBvcnQnLCAkMSwgdW5kZWYsIHVuZGVmLCB1bmRl ZiwgdW5kZWYsICQyKTsKPj4+ICAgICAgIH0KPj4+IGRpZmYgLS1naXQgYS9zcmMvdGVzdC9wYXJz ZV92b2xuYW1lX3Rlc3QucG0gYi9zcmMvdGVzdC9wYXJzZV92b2xuYW1lX3Rlc3QucG0KPj4+IGlu ZGV4IGE4Yzc0NmYuLmJjN2I0ZTggMTAwNjQ0Cj4+PiAtLS0gYS9zcmMvdGVzdC9wYXJzZV92b2xu YW1lX3Rlc3QucG0KPj4+ICsrKyBiL3NyYy90ZXN0L3BhcnNlX3ZvbG5hbWVfdGVzdC5wbQo+Pj4g QEAgLTkzLDYgKzkzLDIxIEBAIG15ICR0ZXN0cyA9IFsKPj4+ICAgCXZvbG5hbWUgICAgID0+ICdp bXBvcnQvaW1wb3J0Lm92ZicsCj4+PiAgIAlleHBlY3RlZCAgICA9PiBbJ2ltcG9ydCcsICdpbXBv cnQub3ZmJywgdW5kZWYsIHVuZGVmLCB1bmRlZiAsdW5kZWYsICdvdmYnXSwKPj4+ICAgICAgIH0s Cj4+PiArICAgIHsKPj4+ICsJZGVzY3JpcHRpb24gPT4gIkltcG9ydCwgaW5ubmVyIGZpbGUgb2Yg b3ZhIiwKPj4+ICsJdm9sbmFtZSAgICAgPT4gJ2ltcG9ydC9pbXBvcnQub3ZhL2Rpc2sucWNvdzIn LAo+Pj4gKwlleHBlY3RlZCAgICA9PiBbJ2ltcG9ydCcsICdpbXBvcnQub3ZhL2Rpc2sucWNvdzIn LCB1bmRlZiwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJ292YStxY293MiddLAo+Pj4gKyAgICB9LAo+ Pj4gKyAgICB7Cj4+PiArCWRlc2NyaXB0aW9uID0+ICJJbXBvcnQsIGlubm5lciBmaWxlIG9mIG92 YSIsCj4+PiArCXZvbG5hbWUgICAgID0+ICdpbXBvcnQvaW1wb3J0Lm92YS9kaXNrLnZtZGsnLAo+ Pj4gKwlleHBlY3RlZCAgICA9PiBbJ2ltcG9ydCcsICdpbXBvcnQub3ZhL2Rpc2sudm1kaycsIHVu ZGVmLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCAnb3ZhK3ZtZGsnXSwKPj4+ICsgICAgfSwKPj4+ICsg ICAgewo+Pj4gKwlkZXNjcmlwdGlvbiA9PiAiSW1wb3J0LCBpbm5uZXIgZmlsZSBvZiBvdmEiLAo+ Pj4gKwl2b2xuYW1lICAgICA9PiAnaW1wb3J0L2ltcG9ydC5vdmEvZGlzay5yYXcnLAo+Pj4gKwll eHBlY3RlZCAgICA9PiBbJ2ltcG9ydCcsICdpbXBvcnQub3ZhL2Rpc2sucmF3JywgdW5kZWYsIHVu ZGVmLCB1bmRlZiwgdW5kZWYsICdvdmErcmF3J10sCj4+PiArICAgIH0sCj4+PiAgICAgICAjCj4+ PiAgICAgICAjIGZhaWxlZCBtYXRjaGVzCj4+PiAgICAgICAjCj4+PiAtLSAKPj4+IDIuMzkuMgo+ Pj4KPj4+Cj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPj4+IHB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKPj4+IHB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQo+Pj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlz dGluZm8vcHZlLWRldmVsCj4+Pgo+Pj4KPj4+Cj4+IAo+PiAKPj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+ PiBwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KPj4gaHR0cHM6Ly9saXN0cy5wcm94bW94LmNv bS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCj4+IAo+PiAKPiAKPiAKPiAKCgpf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwg bWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnBy b3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK