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