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 68D481FF16F for <inbox@lore.proxmox.com>; Tue, 13 May 2025 11:54:47 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id E87961DC38; Tue, 13 May 2025 11:55:06 +0200 (CEST) Date: Tue, 13 May 2025 11:54:30 +0200 (CEST) From: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com> To: Proxmox VE development discussion <pve-devel@lists.proxmox.com> Message-ID: <629987485.14275.1747130070469@webmail.proxmox.com> In-Reply-To: <mailman.27.1745322744.394.pve-devel@lists.proxmox.com> References: <20250422115141.808427-1-alexandre.derumier@groupe-cyllene.com> <mailman.27.1745322744.394.pve-devel@lists.proxmox.com> MIME-Version: 1.0 X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v7.10.6-Rev75 X-Originating-Client: open-xchange-appsuite X-SPAM-LEVEL: Spam detection results: 0 AWL 0.044 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_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [lvmplugin.pm] Subject: Re: [pve-devel] [PATCH pve-storage 3/5] lvmplugin: add qcow2 snapshot 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> SSBzdGFydGVkIHBsYXlpbmcgYXJvdW5kIHdpdGggdGhpcyB0b2RheSAoZmluYWxseSA7KSkKCmJ1 dCBpbW1lZGlhdGVseSByYW4gaW50byBhbiBpc3N1ZS4uCgpWTSBpcyBydW5uaW5nLCBMVk0gc3Rv cmFnZSBjb25maWd1cmVkLCBhZGRpbmcgYSBuZXcgMzJHIGRpc2sgdG8gdGhlIFZNIHdpdGggZm9y bWF0PXFjb3cyOgoKdXBkYXRlIFZNIDEwNjogLXNjc2kxIGV4dHNuYXA6MzIsZm9ybWF0PXFjb3cy LGRpc2NhcmQ9b24sc3NkPW9uLGlvdGhyZWFkPW9uCnFjb3cyIG92ZXJoZWFkOiA0MDk2CkxWIHNp emU6IDMzNTU4NTI4CiAgTG9naWNhbCB2b2x1bWUgInZtLTEwNi1kaXNrLTAucWNvdzIiIGNyZWF0 ZWQuCkZvcm1hdHRpbmcgJy9kZXYvZXh0c25hcC92bS0xMDYtZGlzay0wLnFjb3cyJywgZm10PXFj b3cyIGNsdXN0ZXJfc2l6ZT02NTUzNiBleHRlbmRlZF9sMj1vZmYgcHJlYWxsb2NhdGlvbj1tZXRh ZGF0YSBjb21wcmVzc2lvbl90eXBlPXpsaWIgc2l6ZT0zNDM1OTczODM2OCBsYXp5X3JlZmNvdW50 cz1vZmYgcmVmY291bnRfYml0cz0xNgpxZW11LWltZzogRmFpbGVkIHRvIGZsdXNoIHRoZSByZWZj b3VudCBibG9jayBjYWNoZTogTm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UKICBMb2dpY2FsIHZvbHVt ZSAidm0tMTA2LWRpc2stMC5xY293MiIgc3VjY2Vzc2Z1bGx5IHJlbW92ZWQuClRBU0sgRVJST1I6 IHVuYWJsZSB0byBjcmVhdGUgaW1hZ2U6IHFlbXUtaW1nOiAvZGV2L2V4dHNuYXAvdm0tMTA2LWRp c2stMC5xY293MjogQ291bGQgbm90IHJlc2l6ZSBpbWFnZTogQWxsb2NhdGluZyBjbHVzdGVycyBm YWlsZWQ6IE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlCgoKdGhlIG92ZXJoZWFkIGFuZCBMViBzaXpl IG1lc3NhZ2VzIEkgcGF0Y2hlZCBpbiBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLi4KCnNvbWV0aGlu ZyB3aXRoIHRoZSBvdmVyaGVhZCBjYWxjdWxhdGlvbiBtdXN0IGJlIHdyb25nPyBpZiBJIG1ha2Ug dGhlIG92ZXJoZWFkIHR3aWNlIGFzIG11Y2gsIGl0IHdvcmtzLi4KCmFsc28gc2VlIGNvbW1lbnRz IGJlbG93Li4KCj4gQWxleGFuZHJlIERlcnVtaWVyIHZpYSBwdmUtZGV2ZWwgPHB2ZS1kZXZlbEBs aXN0cy5wcm94bW94LmNvbT4gaGF0IGFtIDIyLjA0LjIwMjUgMTM6NTEgQ0VTVCBnZXNjaHJpZWJl bjoKPiB3ZSBmb3JtYXQgbHZtIGxvZ2ljYWwgdm9sdW1lIHdpdGggcWNvdzIgdG8gaGFuZGxlIHNu YXBzaG90IGNoYWluLgo+IAo+IGxpa2UgZm9yIHFjb3cyIGZpbGUsIHdoZW4gYSBzbmFwc2hvdCBp cyB0YWtlbiwgdGhlIGN1cnJlbnQgbHZtIHZvbHVtZQo+IGlzIHJlbmFtZWQgdG8gc25hcCB2b2xu YW1lLCBhbmQgYSBuZXcgY3VycmVudCBsdm0gdm9sdW1lIGlzIGNyZWF0ZWQKPiB3aXRoIHRoZSBz bmFwIHZvbG5hbWUgYXMgYmFja2luZyBmaWxlCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJl IERlcnVtaWVyIDxhbGV4YW5kcmUuZGVydW1pZXJAZ3JvdXBlLWN5bGxlbmUuY29tPgo+IC0tLQo+ ICBzcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtIHwgMzAxICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKSwgMjMg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4u cG0gYi9zcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gaW5kZXggYzQ2NDhlYy4uOGVlMzM3 YSAxMDA2NDQKPiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gKysrIGIvc3Jj L1BWRS9TdG9yYWdlL0xWTVBsdWdpbi5wbQo+IEBAIC00LDYgKzQsNyBAQCB1c2Ugc3RyaWN0Owo+ ICB1c2Ugd2FybmluZ3M7Cj4gIAo+ICB1c2UgSU86OkZpbGU7Cj4gK3VzZSBQT1NJWCBxdy9jZWls LzsKPiAgCj4gIHVzZSBQVkU6OlRvb2xzIHF3KHJ1bl9jb21tYW5kIHRyaW0pOwo+ICB1c2UgUFZF OjpTdG9yYWdlOjpQbHVnaW47Cj4gQEAgLTIxOCw2ICsyMTksNyBAQCBzdWIgdHlwZSB7Cj4gIHN1 YiBwbHVnaW5kYXRhIHsKPiAgICAgIHJldHVybiB7Cj4gIAljb250ZW50ID0+IFsge2ltYWdlcyA9 PiAxLCByb290ZGlyID0+IDF9LCB7IGltYWdlcyA9PiAxIH1dLAo+ICsJZm9ybWF0ID0+IFsgeyBy YXcgPT4gMSwgcWNvdzIgPT4gMSB9ICwgJ3JhdycgXSwKPiAgCSdzZW5zaXRpdmUtcHJvcGVydGll cycgPT4ge30sCj4gICAgICB9Owo+ICB9Cj4gQEAgLTI5NCw3ICsyOTYsMTAgQEAgc3ViIHBhcnNl X3ZvbG5hbWUgewo+ICAgICAgUFZFOjpTdG9yYWdlOjpQbHVnaW46OnBhcnNlX2x2bV9uYW1lKCR2 b2xuYW1lKTsKPiAgCj4gICAgICBpZiAoJHZvbG5hbWUgPX4gbS9eKHZtLShcZCspLVxTKykkLykg ewo+IC0JcmV0dXJuICgnaW1hZ2VzJywgJDEsICQyLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCAncmF3 Jyk7Cj4gKwlteSAkbmFtZSA9ICQxOwo+ICsJbXkgJHZtaWQgPSAkMjsKPiArCW15ICRmb3JtYXQg PSAkdm9sbmFtZSA9fiBtL1wucWNvdzIkLyA/ICdxY293MicgOiAncmF3JzsKPiArCXJldHVybiAo J2ltYWdlcycsICRuYW1lLCAkdm1pZCwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJGZvcm1hdCk7Cj4g ICAgICB9Cj4gIAo+ICAgICAgZGllICJ1bmFibGUgdG8gcGFyc2UgbHZtIHZvbHVtZSBuYW1lICck dm9sbmFtZSdcbiI7Cj4gQEAgLTMwMywxMSArMzA4LDEzIEBAIHN1YiBwYXJzZV92b2xuYW1lIHsK PiAgc3ViIGZpbGVzeXN0ZW1fcGF0aCB7Cj4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5h bWUsICRzbmFwbmFtZSkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBpcyBub3Qg aW1wbGVtZW50ZWQiaWYgZGVmaW5lZCgkc25hcG5hbWUpOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5h bWUsICR2bWlkLCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJ JGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiAgCj4gLSAgICBteSAoJHZ0eXBlLCAk bmFtZSwgJHZtaWQpID0gJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArICAgIGRp ZSAic25hcHNob3QgaXMgd29ya2luZyB3aXRoIHFjb3cyIGZvcm1hdCBvbmx5IiBpZiBkZWZpbmVk KCRzbmFwbmFtZSkgJiYgJGZvcm1hdCBuZSAncWNvdzInOwo+ICAKPiAgICAgIG15ICR2ZyA9ICRz Y2ZnLT57dmduYW1lfTsKPiArICAgICRuYW1lID0gJGNsYXNzLT5nZXRfc25hcF9uYW1lKCR2b2xu YW1lLCAkc25hcG5hbWUpIGlmICRzbmFwbmFtZTsKPiAgCj4gICAgICBteSAkcGF0aCA9ICIvZGV2 LyR2Zy8kbmFtZSI7Cj4gIAo+IEBAIC0zMzUsNyArMzQyLDkgQEAgc3ViIGZpbmRfZnJlZV9kaXNr bmFtZSB7Cj4gIAo+ICAgICAgbXkgJGRpc2tfbGlzdCA9IFsga2V5cyAleyRsdnMtPnskdmd9fSBd Owo+ICAKPiAtICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlz a25hbWUoJGRpc2tfbGlzdCwgJHN0b3JlaWQsICR2bWlkLCB1bmRlZiwgJHNjZmcpOwo+ICsgICAg JGFkZF9mbXRfc3VmZml4ID0gJGZtdCBlcSAncWNvdzInID8gMSA6IHVuZGVmOwo+ICsKPiArICAg IHJldHVybiBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRpc2tf bGlzdCwgJHN0b3JlaWQsICR2bWlkLCAkZm10LCAkc2NmZywgJGFkZF9mbXRfc3VmZml4KTsKPiAg fQo+ICAKPiAgc3ViIGx2Y3JlYXRlIHsKPiBAQCAtMzYzLDEzICszNzIsNDMgQEAgc3ViIGx2cmVu YW1lIHsKPiAgICAgICk7Cj4gIH0KPiAgCj4gLXN1YiBhbGxvY19pbWFnZSB7Cj4gLSAgICBteSAo JGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUpID0gQF87 Cj4gK215IHN1YiBsdm1fcWNvdzJfZm9ybWF0IHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlk LCAkc2NmZywgJG5hbWUsICRmbXQsICRiYWNraW5nX3NuYXAsICRzaXplKSA9IEBfOwo+ICsKPiAr ICAgIHJldHVybiBpZiAkZm10IG5lICdxY293Mic7CgpzZWUgYmVsb3cgLSB0aGlzIHNob3VsZCBi ZSBhbiBhc3NlcnQsIGFuZCBpdCBzaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGZvciBub24tcWNvdzIg dm9sdW1lcy4uCgo+ICsKPiArICAgICRjbGFzcy0+YWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAk c2NmZywgJG5hbWUpOwo+ICsgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICRuYW1l LCAkc3RvcmVpZCk7Cj4gKyAgICBteSAkYmFja2luZ19wYXRoID0gJGNsYXNzLT5wYXRoKCRzY2Zn LCAkbmFtZSwgJHN0b3JlaWQsICRiYWNraW5nX3NuYXApIGlmICRiYWNraW5nX3NuYXA7Cj4gKyAg ICBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6cWVtdV9pbWdfY3JlYXRlKCRzY2ZnLCAncWNvdzInLCAk c2l6ZSwgJHBhdGgsICRiYWNraW5nX3BhdGgpOwo+ICAKPiAtICAgIGRpZSAidW5zdXBwb3J0ZWQg Zm9ybWF0ICckZm10JyIgaWYgJGZtdCBuZSAncmF3JzsKPiArfQo+ICsKPiArbXkgc3ViIGx2bV9z aXplIHsKPiArICAgbXkgKCRzaXplLCAkZm10LCAkYmFja2luZ19zbmFwKSA9IEBfOwo+ICsKPiAr ICAgI2FkZCBleHRyYSBzcGFjZSBmb3IgcWNvdzIgbWV0YWRhdGFzIGZvciBpbml0aWFsIGltYWdl Cj4gKyAgICNpZiBiYWNraW5nX3NuYXAgZXhpc3QsIHRoZSBwYXJlbnQgbHZtIHZvbHVtZSBhbHJl YWR5IGhhdmUgdGhlIG92ZXJoZWFkCj4gKyAgIHJldHVybiAkc2l6ZSBpZiAkZm10IG5lICdxY293 MicgfHwgJGJhY2tpbmdfc25hcDsKPiArCj4gKyAgICN3aXRob3V0IHN1Yi1hbGxvY2F0ZWQgY2x1 c3RlcnMgOiBsMl9zaXplID0gZGlza19zaXplIMOXIDggLyBjbHVzdGVyX3NpemUKPiArICAgI3dp dGggc3ViLWFsbG9jYXRlZCBjbHVzdGVycyA6ICAgIGwyX3NpemUgPSBkaXNrX3NpemUgw5cgOCAv IGNsdXN0ZXJfc2l6ZSAvIDE2Cj4gKyAgICNleDogNE1CIG92ZXJoZWFkIGZvciAxVEIgd2l0aCBl eHRlbnRlZCBsMiBjbHVzdGVyc2l6ZT0xMjhrCj4gKyAgICNjYW4ndCB1c2UgcWVtdS1pbWcgbWVh c3VyZSwgYmVjYXVzZSBpdCdzIG5vdCBwb3NzaWJsZSB0byBkZWZpbmUgb3B0aW9ucyBsaWtlIGNs dXN0ZXJzaXplICYmIGV4dGVuZGVkX2wyCj4gKyAgICN2ZXJpZmljYXRpb24gaGFzIGJlZW4gZG9u ZSB3aXRoIDogcWVtdS1pbWcgY3JlYXRlIC1mIHFjb3cyIC1vIGV4dGVuZGVkX2wyPW9uLGNsdXN0 ZXJfc2l6ZT0xMjhrIHRlc3QuaW1nIDFHCj4gKwo+ICsgICBteSAkcWNvdzJfb3ZlcmhlYWQgPSBj ZWlsKCRzaXplLzEwMjQvMTAyNC8xMDI0KSAqIDQwOTY7Cj4gKyAgICRzaXplICs9ICRxY293Ml9v dmVyaGVhZDsKPiArICAgcmV0dXJuICRzaXplOwo+ICt9Cj4gKwo+ICtteSBzdWIgYWxsb2NfbHZt X2ltYWdlIHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRmbXQs ICRuYW1lLCAkc2l6ZSwgJGJhY2tpbmdfc25hcCkgPSBAXzsKPiArCj4gKyAgICBkaWUgInVuc3Vw cG9ydGVkIGZvcm1hdCAnJGZtdCciIGlmICRmbXQgIX4gbS8ocmF3fHFjb3cyKS87Cj4gIAo+ICAg ICAgZGllICJpbGxlZ2FsIG5hbWUgJyRuYW1lJyAtIHNob3VsZCBiZSAndm0tJHZtaWQtKidcbiIK PiAtCWlmICAkbmFtZSAmJiAkbmFtZSAhfiBtL152bS0kdm1pZC0vOwo+ICsJaWYgJG5hbWUgIX4g bS9edm0tJHZtaWQtLzsKPiAgCj4gICAgICBteSAkdmdzID0gbHZtX3ZncygpOwo+ICAKPiBAQCAt Mzc4LDE3ICs0MTcsNTEgQEAgc3ViIGFsbG9jX2ltYWdlIHsKPiAgICAgIGRpZSAibm8gc3VjaCB2 b2x1bWUgZ3JvdXAgJyR2ZydcbiIgaWYgIWRlZmluZWQgKCR2Z3MtPnskdmd9KTsKPiAgCj4gICAg ICBteSAkZnJlZSA9IGludCgkdmdzLT57JHZnfS0+e2ZyZWV9KTsKPiArICAgIG15ICRsdm1zaXpl ID0gbHZtX3NpemUoJHNpemUsICRmbXQsICRiYWNraW5nX3NuYXApOwo+ICAKPiAgICAgIGRpZSAi bm90IGVub3VnaCBmcmVlIHNwYWNlICgkZnJlZSA8ICRzaXplKVxuIiBpZiAkZnJlZSA8ICRzaXpl Owo+ICAKPiAtICAgICRuYW1lID0gJGNsYXNzLT5maW5kX2ZyZWVfZGlza25hbWUoJHN0b3JlaWQs ICRzY2ZnLCAkdm1pZCkKPiArICAgIG15ICR0YWdzID0gWyJwdmUtdm0tJHZtaWQiXTsKPiArICAg ICN0YWdzIGFsbCBzbmFwc2hvdHMgdm9sdW1lcyB3aXRoIHRoZSBtYWluIHZvbHVtZSB0YWcgZm9y IGVhc2llciBhY3RpdmF0aW9uIG9mIHRoZSB3aG9sZSBncm91cAo+ICsgICAgcHVzaCBAJHRhZ3Ms ICJcQHB2ZS0kbmFtZSIgaWYgJGZtdCBlcSAncWNvdzInOwo+ICsgICAgbHZjcmVhdGUoJHZnLCAk bmFtZSwgJGx2bXNpemUsICR0YWdzKTsKPiArCj4gKyAgICAjZm9ybWF0IHRoZSBsdm0gdm9sdW1l IHdpdGggcWNvdzIgZm9ybWF0CgphbmQgYWxzbyBJIGp1c3QgcmVhbGl6ZWQgdGhhdCBJIG1pc3Nl ZCB0aGlzIGluIG15IGZpcnN0IHBhc3MgLSB3ZSBzaG91bGQgcmV0dXJuIGhlcmUKaWYgdGhlIGZv cm1hdCBpcyBub3QgcWNvdzIsIGluc3RlYWQgb2YgbWFraW5nIHRoZSBsdm1fcWNvdzJfZm9ybWF0 IGEgbm9wIGluIHRoYXQgY2FzZS4uCgo+ICsgICAgZXZhbCB7IGx2bV9xY293Ml9mb3JtYXQoJGNs YXNzLCAkc3RvcmVpZCwgJHNjZmcsICRuYW1lLCAkZm10LCAkYmFja2luZ19zbmFwLCAkc2l6ZSkg fTsKPiArICAgIGlmICgkQCkgewo+ICsJbXkgJGVyciA9ICRAOwo+ICsJI25vIG5lZWQgdG8gc2Fm ZSBjbGVhbnVwIGFzIHRoZSB2b2x1bWUgaXMgc3RpbGwgZW1wdHkKPiArCWV2YWwgewo+ICsJICAg IG15ICRjbWQgPSBbJy9zYmluL2x2cmVtb3ZlJywgJy1mJywgIiR2Zy8kbmFtZSJdOwo+ICsJICAg IHJ1bl9jb21tYW5kKCRjbWQsIGVycm1zZyA9PiAibHZyZW1vdmUgJyR2Zy8kbmFtZScgZXJyb3Ii KTsKPiArCX07Cj4gKwlkaWUgJGVycjsKPiArICAgIH0KPiArICAgIAo+ICt9Cj4gKwo+ICtzdWIg YWxsb2NfaW1hZ2Ugewo+ICsgICAgbXkgKCRjbGFzcywgJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCwg JGZtdCwgJG5hbWUsICRzaXplKSA9IEBfOwo+ICsKPiArICAgICRuYW1lID0gJGNsYXNzLT5maW5k X2ZyZWVfZGlza25hbWUoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCwgJGZtdCkKPiAgCWlmICEkbmFt ZTsKPiAgCj4gLSAgICBsdmNyZWF0ZSgkdmcsICRuYW1lLCAkc2l6ZSwgWyJwdmUtdm0tJHZtaWQi XSk7Cj4gKyAgICBhbGxvY19sdm1faW1hZ2UoJGNsYXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlk LCAkZm10LCAkbmFtZSwgJHNpemUpOwo+ICAKPiAgICAgIHJldHVybiAkbmFtZTsKPiAgfQo+ICAK PiArc3ViIGFsbG9jX3NuYXBfaW1hZ2Ugewo+ICsgICAgbXkgKCRjbGFzcywgJHN0b3JlaWQsICRz Y2ZnLCAkdm9sbmFtZSwgJGJhY2tpbmdfc25hcCkgPSBAXzsKPiArCj4gKyAgICBteSAkc2l6ZSA9 ICRjbGFzcy0+dm9sdW1lX3NpemVfaW5mbygkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCA1LCAk YmFja2luZ19zbmFwKTsKPiArICAgICRzaXplID0gJHNpemUgLyAxMDI0OyAgI3dlIHVzZSBrYiBp biBsdmNyZWF0ZQo+ICsKPiArICAgIG15ICgkdm1pZCwgJGZvcm1hdCkgPSAoJGNsYXNzLT5wYXJz ZV92b2xuYW1lKCR2b2xuYW1lKSlbMiw2XTsKPiArCj4gKyAgICBhbGxvY19sdm1faW1hZ2UoJGNs YXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm9ybWF0LCAkdm9sbmFtZSwgJHNpemUsICRi YWNraW5nX3NuYXApOwo+ICt9Cj4gKwo+ICBzdWIgZnJlZV9pbWFnZSB7Cj4gICAgICBteSAoJGNs YXNzLCAkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCAkaXNCYXNlKSA9IEBfOwo+ICAKPiBAQCAt NTM5LDYgKzYxMiwxMiBAQCBzdWIgYWN0aXZhdGVfdm9sdW1lIHsKPiAgCj4gICAgICBteSAkbHZt X2FjdGl2YXRlX21vZGUgPSAnZXknOwo+ICAKPiArICAgICNhY3RpdmF0ZSB2b2x1bWUgJiYgYWxs IHNuYXBzaG90cyB2b2x1bWVzIGJ5IHRhZwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlk LCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5w YXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICAkcGF0aCA9ICJcQHB2ZS0kbmFtZSIg aWYgJGZvcm1hdCBlcSAncWNvdzInOwo+ICsKPiAgICAgIG15ICRjbWQgPSBbJy9zYmluL2x2Y2hh bmdlJywgIi1hJGx2bV9hY3RpdmF0ZV9tb2RlIiwgJHBhdGhdOwo+ICAgICAgcnVuX2NvbW1hbmQo JGNtZCwgZXJybXNnID0+ICJjYW4ndCBhY3RpdmF0ZSBMViAnJHBhdGgnIik7Cj4gICAgICAkY21k ID0gWycvc2Jpbi9sdmNoYW5nZScsICctLXJlZnJlc2gnLCAkcGF0aF07Cj4gQEAgLTU1MSw2ICs2 MzAsMTAgQEAgc3ViIGRlYWN0aXZhdGVfdm9sdW1lIHsKPiAgICAgIG15ICRwYXRoID0gJGNsYXNz LT5wYXRoKCRzY2ZnLCAkdm9sbmFtZSwgJHN0b3JlaWQsICRzbmFwbmFtZSk7Cj4gICAgICByZXR1 cm4gaWYgISAtYiAkcGF0aDsKPiAgCj4gKyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRi YXNlbmFtZSwgJGJhc2V2bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKwkkY2xhc3MtPnBhcnNl X3ZvbG5hbWUoJHZvbG5hbWUpOwo+ICsgICAgJHBhdGggPSAiXEBwdmUtJG5hbWUiIGlmICRmb3Jt YXQgZXEgJ3Fjb3cyJzsKPiArCj4gICAgICBteSAkY21kID0gWycvc2Jpbi9sdmNoYW5nZScsICct YWxuJywgJHBhdGhdOwo+ICAgICAgcnVuX2NvbW1hbmQoJGNtZCwgZXJybXNnID0+ICJjYW4ndCBk ZWFjdGl2YXRlIExWICckcGF0aCciKTsKPiAgfQo+IEBAIC01NTgsMjEgKzY0MSwzMSBAQCBzdWIg ZGVhY3RpdmF0ZV92b2x1bWUgewo+ICBzdWIgdm9sdW1lX3Jlc2l6ZSB7Cj4gICAgICBteSAoJGNs YXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkc2l6ZSwgJHJ1bm5pbmcpID0gQF87Cj4g IAo+IC0gICAgJHNpemUgPSAoJHNpemUvMTAyNC8xMDI0KSAuICJNIjsKPiArICAgIG15ICgkdnR5 cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jhc2UsICRmb3JtYXQp ID0KPiArCSRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7Cj4gKwo+ICsgICAgbXkgJGx2 bXNpemUgPSBsdm1fc2l6ZSgkc2l6ZS8xMDI0LCAkZm9ybWF0KTsKPiArICAgICRsdm1zaXplID0g IiR7bHZtc2l6ZX1rIjsKPiAgCj4gICAgICBteSAkcGF0aCA9ICRjbGFzcy0+cGF0aCgkc2NmZywg JHZvbG5hbWUpOwo+IC0gICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZleHRlbmQnLCAnLUwnLCAkc2l6 ZSwgJHBhdGhdOwo+ICsgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZleHRlbmQnLCAnLUwnLCAkbHZt c2l6ZSwgJHBhdGhdOwo+ICAKPiAgICAgICRjbGFzcy0+Y2x1c3Rlcl9sb2NrX3N0b3JhZ2UoJHN0 b3JlaWQsICRzY2ZnLT57c2hhcmVkfSwgdW5kZWYsIHN1YiB7Cj4gIAlydW5fY29tbWFuZCgkY21k LCBlcnJtc2cgPT4gImVycm9yIHJlc2l6aW5nIHZvbHVtZSAnJHBhdGgnIik7Cj4gICAgICB9KTsK PiAgCj4gKyAgICBpZighJHJ1bm5pbmcgJiYgJGZvcm1hdCBlcSAncWNvdzInKSB7Cj4gKwlteSAk cHJlYWxsb2Nfb3B0ID0gUFZFOjpTdG9yYWdlOjpQbHVnaW46OnByZWFsbG9jYXRpb25fY21kX29w dGlvbigkc2NmZywgJGZvcm1hdCk7Cj4gKwlteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWltZycs ICdyZXNpemUnLCAiLS0kcHJlYWxsb2Nfb3B0IiwgJy1mJywgJGZvcm1hdCwgJHBhdGggLCAkc2l6 ZV07Cj4gKwlydW5fY29tbWFuZCgkY21kLCB0aW1lb3V0ID0+IDEwKTsKPiArICAgIH0KPiArCj4g ICAgICByZXR1cm4gMTsKPiAgfQo+ICAKPiAgc3ViIHZvbHVtZV9zaXplX2luZm8gewo+IC0gICAg bXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHRpbWVvdXQpID0gQF87Cj4g LSAgICBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRzY2ZnLCAkdm9sbmFtZSk7 Cj4gKyAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkdGltZW91dCwg JHNuYXApID0gQF87Cj4gKyAgICBteSAkcGF0aCA9ICRjbGFzcy0+ZmlsZXN5c3RlbV9wYXRoKCRz Y2ZnLCAkdm9sbmFtZSwgJHNuYXApOwo+ICAKPiAgICAgIG15ICRjbWQgPSBbJy9zYmluL2x2cycs ICctLXNlcGFyYXRvcicsICc6JywgJy0tbm9oZWFkaW5ncycsICctLXVuaXRzJywgJ2InLAo+ICAJ ICAgICAgICctLXVuYnVmZmVyZWQnLCAnLS1ub3N1ZmZpeCcsICctLW9wdGlvbnMnLCAnbHZfc2l6 ZScsICRwYXRoXTsKPiBAQCAtNTg2LDMyICs2NzksMTgwIEBAIHN1YiB2b2x1bWVfc2l6ZV9pbmZv IHsKPiAgfQo+ICAKPiAgc3ViIHZvbHVtZV9zbmFwc2hvdCB7Cj4gLSAgICBteSAoJGNsYXNzLCAk c2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcCkgPSBAXzsKPiArICAgIG15ICgkY2xhc3Ms ICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwLCAkcnVubmluZykgPSBAXzsKPiArCj4g KyAgICBteSAoJHZtaWQsICRmb3JtYXQpID0gKCRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFt ZSkpWzIsNl07Cj4gKwo+ICsgICAgZGllICJjYW4ndCBzbmFwc2hvdCB0aGlzIGltYWdlIGZvcm1h dFxuIiBpZiAkZm9ybWF0IG5lICdxY293Mic7Cj4gKwo+ICsgICAgaWYgKCRydW5uaW5nKSB7Cj4g KyAgICAgICAgI3JlbmFtZSB3aXRoIGJsb2NrZGV2LXJlb3BlbiBpcyBkb25lIGF0IHFlbXUgbGV2 ZWwgd2hlbiBydW5uaW5nCj4gKyAgICAgICAgJGNsYXNzLT5hbGxvY19zbmFwX2ltYWdlKCRzdG9y ZWlkLCAkc2NmZywgJHZvbG5hbWUsICRzbmFwKTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAi Y2FuJ3QgYWxsb2NhdGUgbmV3IHZvbHVtZSAkdm9sbmFtZTogJEBcbiI7Cj4gKwl9Cj4gKyAgICAg ICAgcmV0dXJuOwo+ICsgICAgfQo+ICsKPiArICAgICNyZW5hbWUgY3VycmVudCB2b2x1bWUgdG8g c25hcCB2b2x1bWUKPiArICAgIGV2YWwgeyAkY2xhc3MtPnJlbmFtZV92b2x1bWUoJHNjZmcsICRz dG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQsIHVuZGVmLCAnY3VycmVudCcsICRzbmFwKSB9Owo+ICsg ICAgZGllICJlcnJvciByZW5hbWUgJHZvbG5hbWUgdG8gJHNuYXBcbiIgaWYgJEA7Cj4gKwo+ICsg ICAgZXZhbCB7ICRjbGFzcy0+YWxsb2Nfc25hcF9pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2b2xu YW1lLCAkc25hcCkgfTsKPiArICAgIGlmICgkQCkgewo+ICsJbXkgJGVyciA9ICRAOwo+ICsgICAg ICAgIGV2YWwgeyAkY2xhc3MtPnJlbmFtZV92b2x1bWUoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFt ZSwgJHZtaWQsIHVuZGVmLCAkc25hcCwgJ2N1cnJlbnQnKSB9Owo+ICsgICAgICAgIGRpZSAkZXJy Owo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdWIgdm9sdW1lX3JvbGxiYWNrX2lzX3Bvc3NpYmxlIHsK PiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwLCAkYmxv Y2tlcnMpID0gQF87Cj4gKwo+ICsgICAgbXkgJHNuYXBfcGF0aCA9ICRjbGFzcy0+cGF0aCgkc2Nm ZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25hcCk7Cj4gIAo+IC0gICAgZGllICJsdm0gc25hcHNo b3QgaXMgbm90IGltcGxlbWVudGVkIjsKPiArICAgICRjbGFzcy0+YWN0aXZhdGVfdm9sdW1lKCRz dG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsIHVuZGVmLCB7fSk7Cj4gKyAgICBteSAkc25hcHNob3Rz ID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1l KTsKPiArICAgIG15ICRwYXJlbnRfc25hcCA9ICRzbmFwc2hvdHMtPntjdXJyZW50fS0+e3BhcmVu dH07Cj4gKwo+ICsgICAgcmV0dXJuIDEgaWYgJHBhcmVudF9zbmFwIGVxICRzbmFwOwo+ICsgICAg ZGllICJjYW4ndCByb2xsYmFjaywgJyRzbmFwJyBpcyBub3QgbW9zdCByZWNlbnQgc25hcHNob3Qg b24gJyR2b2xuYW1lJ1xuIjsKPiArCj4gKyAgICByZXR1cm4gMTsKPiAgfQo+ICAKPiArCj4gIHN1 YiB2b2x1bWVfc25hcHNob3Rfcm9sbGJhY2sgewo+ICAgICAgbXkgKCRjbGFzcywgJHNjZmcsICRz dG9yZWlkLCAkdm9sbmFtZSwgJHNuYXApID0gQF87Cj4gIAo+IC0gICAgZGllICJsdm0gc25hcHNo b3Qgcm9sbGJhY2sgaXMgbm90IGltcGxlbWVudGVkIjsKPiArICAgIG15ICRmb3JtYXQgPSAoJGNs YXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKSlbNl07Cj4gKwo+ICsgICAgZGllICJjYW4ndCBy b2xsYmFjayBzbmFwc2hvdCBmb3IgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJGZvcm1hdCBuZSAn cWNvdzInOwo+ICsKPiArICAgICRjbGFzcy0+YWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAkc2Nm ZywgJHZvbG5hbWUsIHVuZGVmLCB7fSk7Cj4gKwo+ICsgICAgIyB3ZSBjYW4gc2ltcGx5IHJlZm9y bWF0IHRoZSBjdXJyZW50IGx2bSB2b2x1bWUgdG8gYXZvaWQKPiArICAgICMgYSBsb25nIHNhZmUg cmVtb3ZlLihub3QgbmVlZGVkIGhlcmUsIGFzIHRoZSBhbGxvY2F0ZWQgc3BhY2UKPiArICAgICMg aXMgc3RpbGwgdGhlIHNhbWUgb3duZXIpCj4gKyAgICBldmFsIHsgbHZtX3Fjb3cyX2Zvcm1hdCgk Y2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsICRmb3JtYXQsICRzbmFwKSB9Owo+ICsg ICAgaWYoJEApIHsKPiArCWRpZSAiY2FuJ3Qgcm9sbGJhY2suIEVycm9yIHJlZm9ybWF0aW5nIGN1 cnJlbnQgJHZvbG5hbWVcbiI7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdW5kZWY7Cj4gIH0KPiAg Cj4gIHN1YiB2b2x1bWVfc25hcHNob3RfZGVsZXRlIHsKPiAtICAgIG15ICgkY2xhc3MsICRzY2Zn LCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9IEBfOwo+ICsgICAgbXkgKCRjbGFzcywgJHNj ZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAsICRydW5uaW5nKSA9IEBfOwo+ICsKPiArICAg IG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jhc2Us ICRmb3JtYXQpID0gJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBk aWUgImNhbid0IGRlbGV0ZSBzbmFwc2hvdCBmb3IgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJGZv cm1hdCBuZSAncWNvdzInOwo+ICsKPiArICAgIGlmICgkcnVubmluZykgewo+ICsJJHZvbG5hbWUg PSAkY2xhc3MtPmdldF9zbmFwX3ZvbG5hbWUoJHZvbG5hbWUsICRzbmFwKTsKPiArCW15ICRjbGVh bnVwX3dvcmtlciA9IGV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAk dm9sbmFtZSwgJGlzQmFzZSwgJGZvcm1hdCkgfTsKPiArCWRpZSAiZXJyb3IgZGVsZXRpbmcgc25h cHNob3QgJHNuYXBcbiIgaWYgJEA7ICAgIAo+ICsKPiArCWlmICgkY2xlYW51cF93b3JrZXIpIHsK PiArCSAgICBteSAkcnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7Cj4gKwkgICAg bXkgJGF1dGh1c2VyID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsKPiArCSAgICAkcnBjZW52LT5mb3Jr X3dvcmtlcignaW1nZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFudXBfd29ya2VyKTsKPiAr CX0KPiArCXJldHVybjsKPiArICAgIH0KPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBkZWxl dGUgaXMgbm90IGltcGxlbWVudGVkIjsKPiArICAgIG15ICRjbWQgPSAiIjsKPiArICAgIG15ICRw YXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsKPiArCj4gKyAg ICBteSAkc25hcHNob3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywgJHN0 b3JlaWQsICR2b2xuYW1lKTsKPiArICAgIG15ICRzbmFwcGF0aCA9ICRzbmFwc2hvdHMtPnskc25h cH0tPntmaWxlfTsKPiArICAgIG15ICRzbmFwdm9sbmFtZSA9ICRzbmFwc2hvdHMtPnskc25hcH0t Pnt2b2xuYW1lfTsKPiArICAgIGRpZSAidm9sdW1lICRzbmFwcGF0aCBpcyBtaXNzaW5nIiBpZiAh LWUgJHNuYXBwYXRoOwo+ICsKPiArICAgIG15ICRwYXJlbnRzbmFwID0gJHNuYXBzaG90cy0+eyRz bmFwfS0+e3BhcmVudH07Cj4gKwo+ICsgICAgbXkgJGNoaWxkc25hcCA9ICRzbmFwc2hvdHMtPnsk c25hcH0tPntjaGlsZH07Cj4gKyAgICBteSAkY2hpbGRwYXRoID0gJHNuYXBzaG90cy0+eyRjaGls ZHNuYXB9LT57ZmlsZX07Cj4gKyAgICBteSAkY2hpbGR2b2xuYW1lID0gJHNuYXBzaG90cy0+eyRj aGlsZHNuYXB9LT57dm9sbmFtZX07Cj4gKwo+ICsgICAgbXkgJGNsZWFudXBfd29ya2VyID0gdW5k ZWY7Cj4gKyAgICBteSAkZXJyID0gdW5kZWY7Cj4gKyAgICAjaWYgZmlyc3Qgc25hcHNob3QsYXMg aXQgc2hvdWxkIGJlIGJpZ2dlciwgIHdlIG1lcmdlIGNoaWxkLCBhbmQgcmVuYW1lIHRoZSBzbmFw c2hvdCB0byBjaGlsZAo+ICsgICAgaWYoISRwYXJlbnRzbmFwKSB7Cj4gKwlwcmludCAiY29tbWl0 OiBtZXJnZSBjb250ZW50IG9mICRjaGlsZHBhdGggaW50byAkc25hcHBhdGhcbiI7Cj4gKwkjY2Fu J3QgdXNlIC1kIGhlcmUsIGFzIGl0J3MgYW4gbHZtIHZvbHVtZQo+ICsJJGNtZCA9IFsnL3Vzci9i aW4vcWVtdS1pbWcnLCAnY29tbWl0JywgJGNoaWxkcGF0aF07Cj4gKwlldmFsIHsJcnVuX2NvbW1h bmQoJGNtZCkgfTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgY29tbWl0aW5nICRj aGlsZHBhdGggdG8gJHNuYXBwYXRoOyAkQFxuIjsKPiArCX0KPiArCXByaW50ImRlbGV0ZSAkY2hp bGR2b2xuYW1lXG4iOwo+ICsKPiArCSRjbGVhbnVwX3dvcmtlciA9IGV2YWwgeyAkY2xhc3MtPmZy ZWVfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAkY2hpbGR2b2xuYW1lLCAwKSB9Owo+ICsJaWYgKCRA KSB7Cj4gKwkgICAgZGllICJlcnJvciBkZWxldGUgb2xkIHNuYXBzaG90IHZvbHVtZSAkY2hpbGR2 b2xuYW1lOiAkQFxuIjsKPiArCX0KPiArCj4gKwlwcmludCJyZW5hbWUgJHNuYXB2b2xuYW1lIHRv ICRjaGlsZHZvbG5hbWVcbiI7Cj4gKwlteSAkdmcgPSAkc2NmZy0+e3ZnbmFtZX07Cj4gKwlldmFs IHsgbHZyZW5hbWUoJHZnLCAkc25hcHZvbG5hbWUsICRjaGlsZHZvbG5hbWUpIH07Cj4gKwlpZiAo JEApIHsKPiArCSAgICB3YXJuICRAOwo+ICsJICAgICRlcnIgPSAiZXJyb3IgcmVuYW1pbmcgc25h cHNob3Q6ICRAXG4iOwo+ICsJfQo+ICsKPiArICAgIH0gZWxzZSB7Cj4gKwkjd2UgcmViYXNlIHRo ZSBjaGlsZCBpbWFnZSBvbiB0aGUgcGFyZW50IGFzIG5ldyBiYWNraW5nIGltYWdlCj4gKwlteSAk cGFyZW50cGF0aCA9ICRzbmFwc2hvdHMtPnskcGFyZW50c25hcH0tPntmaWxlfTsKPiArCXByaW50 ICJyZWJhc2U6IG1lcmdlIGRpZmYgY29udGVudCBiZXR3ZWVuICRwYXJlbnRwYXRoIGFuZCAkY2hp bGRwYXRoIGludG8gJGNoaWxkcGF0aFxuIjsKPiArCSRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1n JywgJ3JlYmFzZScsICctYicsICRwYXJlbnRwYXRoLCAnLUYnLCAncWNvdzInLCAnLWYnLCAncWNv dzInLCAkY2hpbGRwYXRoXTsKPiArCWV2YWwgeyBydW5fY29tbWFuZCgkY21kKSB9Owo+ICsJaWYg KCRAKSB7Cj4gKwkgICAgZGllICJlcnJvciByZWJhc2UgJGNoaWxkcGF0aCBmcm9tICRwYXJlbnRw YXRoOyAkQFxuIjsKPiArCX0KPiArCSNkZWxldGUgdGhlIHNuYXBzaG90Cj4gKwlldmFsIHsgJGNs ZWFudXBfd29ya2VyID0gJGNsYXNzLT5mcmVlX2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHNuYXB2 b2xuYW1lLCAwKTsgfTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgZGVsZXRlIG9s ZCBzbmFwc2hvdCB2b2x1bWUgJHNuYXB2b2xuYW1lXG4iOwo+ICsJfQo+ICsgICAgfQo+ICsKPiAr ICAgIGlmICgkY2xlYW51cF93b3JrZXIpIHsKPiArCW15ICRycGNlbnYgPSBQVkU6OlJQQ0Vudmly b25tZW50OjpnZXQoKTsKPiArCW15ICRhdXRodXNlciA9ICRycGNlbnYtPmdldF91c2VyKCk7Cj4g KwkkcnBjZW52LT5mb3JrX3dvcmtlcignaW1nZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFu dXBfd29ya2VyKTsKPiArICAgIH0KPiArCj4gKyAgICBkaWUgJGVyciBpZiAkZXJyOwo+ICB9Cj4g IAo+ICBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAk ZmVhdHVyZSwgJHN0b3JlaWQsICR2b2xuYW1lLCAkc25hcG5hbWUsICRydW5uaW5nKSA9IEBfOwo+ ICAKPiAgICAgIG15ICRmZWF0dXJlcyA9IHsKPiAtCWNvcHkgPT4geyBiYXNlID0+IDEsIGN1cnJl bnQgPT4gMX0sCj4gLQlyZW5hbWUgPT4ge2N1cnJlbnQgPT4gMX0sCj4gKyAgICAgICAgY29weSA9 PiB7Cj4gKyAgICAgICAgICAgIGJhc2UgPT4geyBxY293MiA9PiAxLCByYXcgPT4gMSB9LAo+ICsg ICAgICAgICAgICBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAo+ICsgICAgICAg ICAgICBzbmFwID0+IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgIH0sCj4gKyAgICAgICAgJ3Jl bmFtZScgPT4gewo+ICsgICAgICAgICAgICBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+ IDF9LAo+ICsgICAgICAgIH0sCj4gKyAgICAgICAgc25hcHNob3QgPT4gewo+ICsgICAgICAgICAg ICBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgICAgICBzbmFwID0+IHsgcWNv dzIgPT4gMSB9LAo+ICsgICAgICAgIH0sCj4gKyMJZml4bWU6IGFkZCBsYXRlciA/ICh3ZSBuZWVk IHRvIGhhbmRsZSBiYXNlcGF0aCwgdm9sdW1lIGFjdGl2YXRpb24sLi4uKQo+ICsjCXRlbXBsYXRl ID0+IHsKPiArIwkgICAgY3VycmVudCA9PiB7IHJhdyA9PiAxLCBxY293MiA9PiAxfSwKPiArIwl9 LAo+ICsjCWNsb25lID0+IHsKPiArIwkgICAgYmFzZSA9PiB7IHFjb3cyID0+IDEgfSwKPiArIwl9 LAo+ICAgICAgfTsKPiAgCj4gLSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFt ZSwgJGJhc2V2bWlkLCAkaXNCYXNlKSA9Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2 bWlkLCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICAJJGNsYXNz LT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiAgCj4gICAgICBteSAka2V5ID0gdW5kZWY7Cj4g QEAgLTYyMCw3ICs4NjEsNyBAQCBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIH1lbHNl ewo+ICAJJGtleSA9ICAkaXNCYXNlID8gJ2Jhc2UnIDogJ2N1cnJlbnQnOwo+ICAgICAgfQo+IC0g ICAgcmV0dXJuIDEgaWYgJGZlYXR1cmVzLT57JGZlYXR1cmV9LT57JGtleX07Cj4gKyAgICByZXR1 cm4gMSBpZiBkZWZpbmVkKCRmZWF0dXJlcy0+eyRmZWF0dXJlfS0+eyRrZXl9LT57JGZvcm1hdH0p Owo+ICAKPiAgICAgIHJldHVybiB1bmRlZjsKPiAgfQo+IEBAIC03NDUsNCArOTg2LDE4IEBAIHN1 YiByZW5hbWVfdm9sdW1lIHsKPiAgICAgIHJldHVybiAiJHtzdG9yZWlkfToke3RhcmdldF92b2xu YW1lfSI7Cj4gIH0KPiAgCj4gK3N1YiBnZXRfc25hcF9uYW1lIHsKPiArICAgIG15ICgkY2xhc3Ms ICR2b2xuYW1lLCAkc25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUs ICR2bWlkLCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPSAkY2xhc3Mt PnBhcnNlX3ZvbG5hbWUoJHZvbG5hbWUpOwo+ICsgICAgJG5hbWUgPSAhJHNuYXBuYW1lIHx8ICRz bmFwbmFtZSBlcSAnY3VycmVudCcgPyAkbmFtZSA6ICJzbmFwLSRzbmFwbmFtZS0kbmFtZSI7Cj4g KyAgICByZXR1cm4gJG5hbWU7Cj4gK30KPiArCj4gK3N1YiBnZXRfc25hcF92b2xuYW1lIHsKPiAr ICAgIG15ICgkY2xhc3MsICR2b2xuYW1lLCAkc25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgcmV0 dXJuICRjbGFzcy0+Z2V0X3NuYXBfbmFtZSgkdm9sbmFtZSwgJHNuYXBuYW1lKTsKPiArfQo+ICsK PiAgMTsKPiAtLSAKPiAyLjM5LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94 bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5m by9wdmUtZGV2ZWwK