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 9DD1A1FF164
	for <inbox@lore.proxmox.com>; Fri,  9 May 2025 12:29:52 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 2E86E3A7FD;
	Fri,  9 May 2025 12:30:10 +0200 (CEST)
Date: Fri, 9 May 2025 12:30:02 +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: <723319696.12915.1746786602409@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.046 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
 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 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>

Cj4gQWxleGFuZHJlIERlcnVtaWVyIHZpYSBwdmUtZGV2ZWwgPHB2ZS1kZXZlbEBsaXN0cy5wcm94
bW94LmNvbT4gaGF0IGFtIDIyLjA0LjIwMjUgMTM6NTEgQ0VTVCBnZXNjaHJpZWJlbjoKPiB3ZSBm
b3JtYXQgbHZtIGxvZ2ljYWwgdm9sdW1lIHdpdGggcWNvdzIgdG8gaGFuZGxlIHNuYXBzaG90IGNo
YWluLgo+IAo+IGxpa2UgZm9yIHFjb3cyIGZpbGUsIHdoZW4gYSBzbmFwc2hvdCBpcyB0YWtlbiwg
dGhlIGN1cnJlbnQgbHZtIHZvbHVtZQo+IGlzIHJlbmFtZWQgdG8gc25hcCB2b2xuYW1lLCBhbmQg
YSBuZXcgY3VycmVudCBsdm0gdm9sdW1lIGlzIGNyZWF0ZWQKPiB3aXRoIHRoZSBzbmFwIHZvbG5h
bWUgYXMgYmFja2luZyBmaWxlCj4gCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIERlcnVtaWVy
IDxhbGV4YW5kcmUuZGVydW1pZXJAZ3JvdXBlLWN5bGxlbmUuY29tPgo+IC0tLQo+ICBzcmMvUFZF
L1N0b3JhZ2UvTFZNUGx1Z2luLnBtIHwgMzAxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrLS0tCj4gIDEgZmlsZSBjaGFuZ2VkLCAyNzggaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25z
KC0pCj4gCj4gZGlmZiAtLWdpdCBhL3NyYy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4ucG0gYi9zcmMv
UFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gaW5kZXggYzQ2NDhlYy4uOGVlMzM3YSAxMDA2NDQK
PiAtLS0gYS9zcmMvUFZFL1N0b3JhZ2UvTFZNUGx1Z2luLnBtCj4gKysrIGIvc3JjL1BWRS9TdG9y
YWdlL0xWTVBsdWdpbi5wbQo+IEBAIC00LDYgKzQsNyBAQCB1c2Ugc3RyaWN0Owo+ICB1c2Ugd2Fy
bmluZ3M7Cj4gIAo+ICB1c2UgSU86OkZpbGU7Cj4gK3VzZSBQT1NJWCBxdy9jZWlsLzsKPiAgCj4g
IHVzZSBQVkU6OlRvb2xzIHF3KHJ1bl9jb21tYW5kIHRyaW0pOwo+ICB1c2UgUFZFOjpTdG9yYWdl
OjpQbHVnaW47Cj4gQEAgLTIxOCw2ICsyMTksNyBAQCBzdWIgdHlwZSB7Cj4gIHN1YiBwbHVnaW5k
YXRhIHsKPiAgICAgIHJldHVybiB7Cj4gIAljb250ZW50ID0+IFsge2ltYWdlcyA9PiAxLCByb290
ZGlyID0+IDF9LCB7IGltYWdlcyA9PiAxIH1dLAo+ICsJZm9ybWF0ID0+IFsgeyByYXcgPT4gMSwg
cWNvdzIgPT4gMSB9ICwgJ3JhdycgXSwKPiAgCSdzZW5zaXRpdmUtcHJvcGVydGllcycgPT4ge30s
Cj4gICAgICB9Owo+ICB9Cj4gQEAgLTI5NCw3ICsyOTYsMTAgQEAgc3ViIHBhcnNlX3ZvbG5hbWUg
ewo+ICAgICAgUFZFOjpTdG9yYWdlOjpQbHVnaW46OnBhcnNlX2x2bV9uYW1lKCR2b2xuYW1lKTsK
PiAgCj4gICAgICBpZiAoJHZvbG5hbWUgPX4gbS9eKHZtLShcZCspLVxTKykkLykgewo+IC0JcmV0
dXJuICgnaW1hZ2VzJywgJDEsICQyLCB1bmRlZiwgdW5kZWYsIHVuZGVmLCAncmF3Jyk7Cj4gKwlt
eSAkbmFtZSA9ICQxOwo+ICsJbXkgJHZtaWQgPSAkMjsKPiArCW15ICRmb3JtYXQgPSAkdm9sbmFt
ZSA9fiBtL1wucWNvdzIkLyA/ICdxY293MicgOiAncmF3JzsKPiArCXJldHVybiAoJ2ltYWdlcycs
ICRuYW1lLCAkdm1pZCwgdW5kZWYsIHVuZGVmLCB1bmRlZiwgJGZvcm1hdCk7Cj4gICAgICB9Cj4g
IAo+ICAgICAgZGllICJ1bmFibGUgdG8gcGFyc2UgbHZtIHZvbHVtZSBuYW1lICckdm9sbmFtZSdc
biI7Cj4gQEAgLTMwMywxMSArMzA4LDEzIEBAIHN1YiBwYXJzZV92b2xuYW1lIHsKPiAgc3ViIGZp
bGVzeXN0ZW1fcGF0aCB7Cj4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHZvbG5hbWUsICRzbmFw
bmFtZSkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBpcyBub3QgaW1wbGVtZW50
ZWQiaWYgZGVmaW5lZCgkc25hcG5hbWUpOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlk
LCAkYmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5w
YXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiAgCj4gLSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZt
aWQpID0gJGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArICAgIGRpZSAic25hcHNo
b3QgaXMgd29ya2luZyB3aXRoIHFjb3cyIGZvcm1hdCBvbmx5IiBpZiBkZWZpbmVkKCRzbmFwbmFt
ZSkgJiYgJGZvcm1hdCBuZSAncWNvdzInOwo+ICAKPiAgICAgIG15ICR2ZyA9ICRzY2ZnLT57dmdu
YW1lfTsKPiArICAgICRuYW1lID0gJGNsYXNzLT5nZXRfc25hcF9uYW1lKCR2b2xuYW1lLCAkc25h
cG5hbWUpIGlmICRzbmFwbmFtZTsKPiAgCj4gICAgICBteSAkcGF0aCA9ICIvZGV2LyR2Zy8kbmFt
ZSI7Cj4gIAo+IEBAIC0zMzUsNyArMzQyLDkgQEAgc3ViIGZpbmRfZnJlZV9kaXNrbmFtZSB7Cj4g
IAo+ICAgICAgbXkgJGRpc2tfbGlzdCA9IFsga2V5cyAleyRsdnMtPnskdmd9fSBdOwo+ICAKPiAt
ICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRp
c2tfbGlzdCwgJHN0b3JlaWQsICR2bWlkLCB1bmRlZiwgJHNjZmcpOwo+ICsgICAgJGFkZF9mbXRf
c3VmZml4ID0gJGZtdCBlcSAncWNvdzInID8gMSA6IHVuZGVmOwo+ICsKPiArICAgIHJldHVybiBQ
VkU6OlN0b3JhZ2U6OlBsdWdpbjo6Z2V0X25leHRfdm1fZGlza25hbWUoJGRpc2tfbGlzdCwgJHN0
b3JlaWQsICR2bWlkLCAkZm10LCAkc2NmZywgJGFkZF9mbXRfc3VmZml4KTsKPiAgfQo+ICAKPiAg
c3ViIGx2Y3JlYXRlIHsKPiBAQCAtMzYzLDEzICszNzIsNDMgQEAgc3ViIGx2cmVuYW1lIHsKPiAg
ICAgICk7Cj4gIH0KPiAgCj4gLXN1YiBhbGxvY19pbWFnZSB7Cj4gLSAgICBteSAoJGNsYXNzLCAk
c3RvcmVpZCwgJHNjZmcsICR2bWlkLCAkZm10LCAkbmFtZSwgJHNpemUpID0gQF87Cj4gK215IHN1
YiBsdm1fcWNvdzJfZm9ybWF0IHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywg
JG5hbWUsICRmbXQsICRiYWNraW5nX3NuYXAsICRzaXplKSA9IEBfOwo+ICsKPiArICAgIHJldHVy
biBpZiAkZm10IG5lICdxY293Mic7Cj4gKwo+ICsgICAgJGNsYXNzLT5hY3RpdmF0ZV92b2x1bWUo
JHN0b3JlaWQsICRzY2ZnLCAkbmFtZSk7Cj4gKyAgICBteSAkcGF0aCA9ICRjbGFzcy0+cGF0aCgk
c2NmZywgJG5hbWUsICRzdG9yZWlkKTsKPiArICAgIG15ICRiYWNraW5nX3BhdGggPSAkY2xhc3Mt
PnBhdGgoJHNjZmcsICRuYW1lLCAkc3RvcmVpZCwgJGJhY2tpbmdfc25hcCkgaWYgJGJhY2tpbmdf
c25hcDsKPiArICAgIFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpxZW11X2ltZ19jcmVhdGUoJHNjZmcs
ICdxY293MicsICRzaXplLCAkcGF0aCwgJGJhY2tpbmdfcGF0aCk7Cj4gIAo+IC0gICAgZGllICJ1
bnN1cHBvcnRlZCBmb3JtYXQgJyRmbXQnIiBpZiAkZm10IG5lICdyYXcnOwo+ICt9Cj4gKwo+ICtt
eSBzdWIgbHZtX3NpemUgewoKdGhhdCdzIGEgYml0IG9mIGEgbWlzbm9tZXIgYXMgd2VsbCwgbWF5
YmUgJ2NhbGN1bGF0ZV9sdl9zaXplJyA/Cgo+ICsgICBteSAoJHNpemUsICRmbXQsICRiYWNraW5n
X3NuYXApID0gQF87Cj4gKwo+ICsgICAjYWRkIGV4dHJhIHNwYWNlIGZvciBxY293MiBtZXRhZGF0
YXMgZm9yIGluaXRpYWwgaW1hZ2UKPiArICAgI2lmIGJhY2tpbmdfc25hcCBleGlzdCwgdGhlIHBh
cmVudCBsdm0gdm9sdW1lIGFscmVhZHkgaGF2ZSB0aGUgb3ZlcmhlYWQKCmFyZSB5b3Ugc3VyZSBh
Ym91dCB0aGF0PyB0aGUgJ2N1cnJlbnQnIHZvbHVtZSBhbHNvIGhhcyB0byBoYXZlIHRoZSBzYW1l
IG92ZXJoZWFkIGlmIHlvdSB3cml0ZQp0aGUgZnVsbCBsb2dpY2FsIHNpemUgdG8gaXQsIG9yIGFt
IEkgbWlzc2luZyBzb21ldGhpbmc/CgplLmcuLCB3aGlsZSBkb2luZyB0aGUgc2FtZSB3aXRoIGZp
bGVzOgoKMS4gZGQgMUcgb2YgcmFuZG9tIGRhdGEgaW50byByYXcgZmlsZQoyLiBjcmVhdGUgMUcg
cWNvdzIgZmlsZQozLiBxZW11LWltZyBkZCAxRyBvZiByYW5kb20gZGF0YSBpbnRvIHFjb3cyIGZp
bGUKNC4gb2JzZXJ2ZSB0aGF0IHJhdyBmaWxlIGlzIDEwNzM3NDE4MjQgYnl0ZXMgYmlnLCBxY293
MiBmaWxlIGlzIDEwNzQyNjYxMTIgYnl0ZXMgYmlnICg1MTJLIGRpZmZlcmVuY2UpCjUuIGNyZWF0
ZSBzZWNvbmQgMUcgcWNvdzIgZmlsZSBiYWNrZWQgYnkgZmlyc3QKNi4gcWVtdS1pbWcgZGQgMUcg
b2YgcmFuZG9tIGRhdGEgaW50byBzZWNvbmQgcWNvdzIgZmlsZQo3LiBvYnNlcnZlIHNlY29uZCBx
Y293MiBmaWxlIGlzIGFsc28gYmlnZ2VyIHRoYW4gMUcgKGJ5IDM4NEspCgphbmQgdGhpcyBpcyB3
aXRob3V0IGV4dGVuZGVkIGwyIGFuZCBiaWcgY2x1c3RlcnMsIHdpdGggdGhvc2UgdGhlIHFjb3cy
IGZpbGUgaXMgc2xpZ2h0bHkgYmlnZ2VyCgo+ICsgICByZXR1cm4gJHNpemUgaWYgJGZtdCBuZSAn
cWNvdzInIHx8ICRiYWNraW5nX3NuYXA7Cj4gKwo+ICsgICAjd2l0aG91dCBzdWItYWxsb2NhdGVk
IGNsdXN0ZXJzIDogbDJfc2l6ZSA9IGRpc2tfc2l6ZSDDlyA4IC8gY2x1c3Rlcl9zaXplCj4gKyAg
ICN3aXRoIHN1Yi1hbGxvY2F0ZWQgY2x1c3RlcnMgOiAgICBsMl9zaXplID0gZGlza19zaXplIMOX
IDggLyBjbHVzdGVyX3NpemUgLyAxNgo+ICsgICAjZXg6IDRNQiBvdmVyaGVhZCBmb3IgMVRCIHdp
dGggZXh0ZW50ZWQgbDIgY2x1c3RlcnNpemU9MTI4awo+ICsgICAjY2FuJ3QgdXNlIHFlbXUtaW1n
IG1lYXN1cmUsIGJlY2F1c2UgaXQncyBub3QgcG9zc2libGUgdG8gZGVmaW5lIG9wdGlvbnMgbGlr
ZSBjbHVzdGVyc2l6ZSAmJiBleHRlbmRlZF9sMgo+ICsgICAjdmVyaWZpY2F0aW9uIGhhcyBiZWVu
IGRvbmUgd2l0aCA6IHFlbXUtaW1nIGNyZWF0ZSAtZiBxY293MiAtbyBleHRlbmRlZF9sMj1vbixj
bHVzdGVyX3NpemU9MTI4ayB0ZXN0LmltZyAxRwo+ICsKPiArICAgbXkgJHFjb3cyX292ZXJoZWFk
ID0gY2VpbCgkc2l6ZS8xMDI0LzEwMjQvMTAyNCkgKiA0MDk2Owo+ICsgICAkc2l6ZSArPSAkcWNv
dzJfb3ZlcmhlYWQ7Cj4gKyAgIHJldHVybiAkc2l6ZTsKPiArfQo+ICsKPiArbXkgc3ViIGFsbG9j
X2x2bV9pbWFnZSB7CgpoZXJlIGFzIHdlbGwgLSB0aGlzIGNvdWxkIGJlIGZpcnN0IGV4dHJhY3Rl
ZCB3aXRob3V0IHNlbWFudGljIGNoYW5nZXMsIGFuZAp0aGVuIGhhdmUgdGhlIHNlbWFudGljIGNo
YW5nZXMgaW4gdGhpcyBjb21taXQuLgoKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm
ZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSwgJGJhY2tpbmdfc25hcCkgPSBAXzsKPiArCj4g
KyAgICBkaWUgInVuc3VwcG9ydGVkIGZvcm1hdCAnJGZtdCciIGlmICRmbXQgIX4gbS8ocmF3fHFj
b3cyKS87Cj4gIAo+ICAgICAgZGllICJpbGxlZ2FsIG5hbWUgJyRuYW1lJyAtIHNob3VsZCBiZSAn
dm0tJHZtaWQtKidcbiIKPiAtCWlmICAkbmFtZSAmJiAkbmFtZSAhfiBtL152bS0kdm1pZC0vOwo+
ICsJaWYgJG5hbWUgIX4gbS9edm0tJHZtaWQtLzsKPiAgCj4gICAgICBteSAkdmdzID0gbHZtX3Zn
cygpOwo+ICAKPiBAQCAtMzc4LDE3ICs0MTcsNTEgQEAgc3ViIGFsbG9jX2ltYWdlIHsKPiAgICAg
IGRpZSAibm8gc3VjaCB2b2x1bWUgZ3JvdXAgJyR2ZydcbiIgaWYgIWRlZmluZWQgKCR2Z3MtPnsk
dmd9KTsKPiAgCj4gICAgICBteSAkZnJlZSA9IGludCgkdmdzLT57JHZnfS0+e2ZyZWV9KTsKPiAr
ICAgIG15ICRsdm1zaXplID0gbHZtX3NpemUoJHNpemUsICRmbXQsICRiYWNraW5nX3NuYXApOwo+
ICAKPiAgICAgIGRpZSAibm90IGVub3VnaCBmcmVlIHNwYWNlICgkZnJlZSA8ICRzaXplKVxuIiBp
ZiAkZnJlZSA8ICRzaXplOwo+ICAKPiAtICAgICRuYW1lID0gJGNsYXNzLT5maW5kX2ZyZWVfZGlz
a25hbWUoJHN0b3JlaWQsICRzY2ZnLCAkdm1pZCkKPiArICAgIG15ICR0YWdzID0gWyJwdmUtdm0t
JHZtaWQiXTsKPiArICAgICN0YWdzIGFsbCBzbmFwc2hvdHMgdm9sdW1lcyB3aXRoIHRoZSBtYWlu
IHZvbHVtZSB0YWcgZm9yIGVhc2llciBhY3RpdmF0aW9uIG9mIHRoZSB3aG9sZSBncm91cAo+ICsg
ICAgcHVzaCBAJHRhZ3MsICJcQHB2ZS0kbmFtZSIgaWYgJGZtdCBlcSAncWNvdzInOwo+ICsgICAg
bHZjcmVhdGUoJHZnLCAkbmFtZSwgJGx2bXNpemUsICR0YWdzKTsKPiArCj4gKyAgICAjZm9ybWF0
IHRoZSBsdm0gdm9sdW1lIHdpdGggcWNvdzIgZm9ybWF0Cj4gKyAgICBldmFsIHsgbHZtX3Fjb3cy
X2Zvcm1hdCgkY2xhc3MsICRzdG9yZWlkLCAkc2NmZywgJG5hbWUsICRmbXQsICRiYWNraW5nX3Nu
YXAsICRzaXplKSB9Owo+ICsgICAgaWYgKCRAKSB7Cj4gKwlteSAkZXJyID0gJEA7Cj4gKwkjbm8g
bmVlZCB0byBzYWZlIGNsZWFudXAgYXMgdGhlIHZvbHVtZSBpcyBzdGlsbCBlbXB0eQo+ICsJZXZh
bCB7Cj4gKwkgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZyZW1vdmUnLCAnLWYnLCAiJHZnLyRuYW1l
Il07Cj4gKwkgICAgcnVuX2NvbW1hbmQoJGNtZCwgZXJybXNnID0+ICJsdnJlbW92ZSAnJHZnLyRu
YW1lJyBlcnJvciIpOwo+ICsJfTsKCnNob3VsZCBzdGlsbCBsb2cgYW55IGVycm9ycyBlbmNvdW50
ZXJlZCBieSB0aGUgY2xlYW51cC4uCgo+ICsJZGllICRlcnI7Cj4gKyAgICB9Cj4gKyAgICAKPiAr
fQo+ICsKPiArc3ViIGFsbG9jX2ltYWdlIHsKPiArICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAk
c2NmZywgJHZtaWQsICRmbXQsICRuYW1lLCAkc2l6ZSkgPSBAXzsKPiArCj4gKyAgICAkbmFtZSA9
ICRjbGFzcy0+ZmluZF9mcmVlX2Rpc2tuYW1lKCRzdG9yZWlkLCAkc2NmZywgJHZtaWQsICRmbXQp
Cj4gIAlpZiAhJG5hbWU7Cj4gIAo+IC0gICAgbHZjcmVhdGUoJHZnLCAkbmFtZSwgJHNpemUsIFsi
cHZlLXZtLSR2bWlkIl0pOwo+ICsgICAgYWxsb2NfbHZtX2ltYWdlKCRjbGFzcywgJHN0b3JlaWQs
ICRzY2ZnLCAkdm1pZCwgJGZtdCwgJG5hbWUsICRzaXplKTsKPiAgCj4gICAgICByZXR1cm4gJG5h
bWU7Cj4gIH0KPiAgCj4gK3N1YiBhbGxvY19zbmFwX2ltYWdlIHsKCnNob3VsZCBiZSBwcml2YXRl
Cgo+ICsgICAgbXkgKCRjbGFzcywgJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGJhY2tpbmdf
c25hcCkgPSBAXzsKPiArCj4gKyAgICBteSAkc2l6ZSA9ICRjbGFzcy0+dm9sdW1lX3NpemVfaW5m
bygkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1lLCA1LCAkYmFja2luZ19zbmFwKTsKPiArICAgICRz
aXplID0gJHNpemUgLyAxMDI0OyAgI3dlIHVzZSBrYiBpbiBsdmNyZWF0ZQoKd2hhdCBpZiBzb21l
dGhpbmcgcmVnYXJkaW5nIHRoZSBzaXplIGNhbGN1bGF0aW9uIGNoYW5nZWQgaW4gdGhlIG1lYW50
aW1lLApzaG91bGRuJ3QgdGhpcyBhbHdheXMgc3RhcnQgZnJvbSB0aGUgImxvZ2ljYWwiIHNpemUg
b3IgZWxzZSB3ZSByaXNrCmFjY2lkZW50YWxseSBjcmVhdGluZyBhIHRvbyBzbWFsbCB2b2x1bWU/
Cgo+ICsKPiArICAgIG15ICgkdm1pZCwgJGZvcm1hdCkgPSAoJGNsYXNzLT5wYXJzZV92b2xuYW1l
KCR2b2xuYW1lKSlbMiw2XTsKCndlJ3ZlIGFscmVhZHkgZG9uZSB0aGlzIGF0IGJvdGggY2FsbCBz
aXRlcywgc28gd2UgY291bGQganVzdCBwYXNzIHRob3NlIGluCmFuZC9vciBpbmxpbmUgdGhpcyBo
ZWxwZXI/Cgo+ICsKPiArICAgIGFsbG9jX2x2bV9pbWFnZSgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm
ZywgJHZtaWQsICRmb3JtYXQsICR2b2xuYW1lLCAkc2l6ZSwgJGJhY2tpbmdfc25hcCk7Cj4gK30K
PiArCj4gIHN1YiBmcmVlX2ltYWdlIHsKPiAgICAgIG15ICgkY2xhc3MsICRzdG9yZWlkLCAkc2Nm
ZywgJHZvbG5hbWUsICRpc0Jhc2UpID0gQF87Cj4gIAo+IEBAIC01MzksNiArNjEyLDEyIEBAIHN1
YiBhY3RpdmF0ZV92b2x1bWUgewo+ICAKPiAgICAgIG15ICRsdm1fYWN0aXZhdGVfbW9kZSA9ICdl
eSc7Cj4gIAo+ICsgICAgI2FjdGl2YXRlIHZvbHVtZSAmJiBhbGwgc25hcHNob3RzIHZvbHVtZXMg
YnkgdGFnCj4gKyAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2
bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9Cj4gKwkkY2xhc3MtPnBhcnNlX3ZvbG5hbWUoJHZvbG5h
bWUpOwo+ICsKPiArICAgICRwYXRoID0gIlxAcHZlLSRuYW1lIiBpZiAkZm9ybWF0IGVxICdxY293
Mic7Cj4gKwo+ICAgICAgbXkgJGNtZCA9IFsnL3NiaW4vbHZjaGFuZ2UnLCAiLWEkbHZtX2FjdGl2
YXRlX21vZGUiLCAkcGF0aF07Cj4gICAgICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNh
bid0IGFjdGl2YXRlIExWICckcGF0aCciKTsKPiAgICAgICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdl
JywgJy0tcmVmcmVzaCcsICRwYXRoXTsKPiBAQCAtNTUxLDYgKzYzMCwxMCBAQCBzdWIgZGVhY3Rp
dmF0ZV92b2x1bWUgewo+ICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNjZmcsICR2b2xu
YW1lLCAkc3RvcmVpZCwgJHNuYXBuYW1lKTsKPiAgICAgIHJldHVybiBpZiAhIC1iICRwYXRoOwo+
ICAKPiArICAgIG15ICgkdnR5cGUsICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQs
ICRpc0Jhc2UsICRmb3JtYXQpID0KPiArCSRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7
Cj4gKyAgICAkcGF0aCA9ICJcQHB2ZS0kbmFtZSIgaWYgJGZvcm1hdCBlcSAncWNvdzInOwo+ICsK
PiAgICAgIG15ICRjbWQgPSBbJy9zYmluL2x2Y2hhbmdlJywgJy1hbG4nLCAkcGF0aF07Cj4gICAg
ICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gImNhbid0IGRlYWN0aXZhdGUgTFYgJyRwYXRo
JyIpOwo+ICB9Cj4gQEAgLTU1OCwyMSArNjQxLDMxIEBAIHN1YiBkZWFjdGl2YXRlX3ZvbHVtZSB7
Cj4gIHN1YiB2b2x1bWVfcmVzaXplIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVp
ZCwgJHZvbG5hbWUsICRzaXplLCAkcnVubmluZykgPSBAXzsKPiAgCj4gLSAgICAkc2l6ZSA9ICgk
c2l6ZS8xMDI0LzEwMjQpIC4gIk0iOwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAk
YmFzZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICsJJGNsYXNzLT5wYXJz
ZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBteSAkbHZtc2l6ZSA9IGx2bV9zaXplKCRz
aXplLzEwMjQsICRmb3JtYXQpOwoKc2FtZSBxdWVzdGlvbiBoZXJlIC0gd2hhdCBpZiB0aGUgb3Zl
cmhlYWQgY2FsY3VsYXRpb24gY2hhbmdlcyBhdCBzb21lIHBvaW50PwpzbWFsbGVyIHRvIGJpZ2dl
ciBkb2Vzbid0IG1hdHRlciwgdGhhdCdzIG9rYXksIGJ1dCB3aGF0IGlmIHRoZSBleGlzdGluZwp2
b2x1bWUgaGFkIGEgaGlnaGVyIG92ZXJoZWFkIHRoYW4gd2Ugbm93IGNhbGN1bGF0ZT8gdGhlbiBy
ZXNpemluZyB3b3VsZAphY3R1YWxseSBlbmQgdXAgd2l0aCBhIHRvbyBzbWFsbCB0YXJnZXQgTFYg
c2l6ZT8KCmFyZSB3ZSBub3QgYWxsb3dlZCB0byBldmVyIGRvIHRoYXQ/IHRoZW4gd2UgbmVlZCBh
IGJpZyB3YXJuaW5nIHVwIHRvcAphdCB0aGUgc2l6ZSBjYWxjdWxhdGlvbiBoZWxwZXIgc28gdGhh
dCB3ZSBkb24ndCBmb3JnZXQgYWJvdXQgdGhpcyBpbnZhcmlhbnQuLgoKCj4gKyAgICAkbHZtc2l6
ZSA9ICIke2x2bXNpemV9ayI7Cj4gIAo+ICAgICAgbXkgJHBhdGggPSAkY2xhc3MtPnBhdGgoJHNj
ZmcsICR2b2xuYW1lKTsKPiAtICAgIG15ICRjbWQgPSBbJy9zYmluL2x2ZXh0ZW5kJywgJy1MJywg
JHNpemUsICRwYXRoXTsKPiArICAgIG15ICRjbWQgPSBbJy9zYmluL2x2ZXh0ZW5kJywgJy1MJywg
JGx2bXNpemUsICRwYXRoXTsKPiAgCj4gICAgICAkY2xhc3MtPmNsdXN0ZXJfbG9ja19zdG9yYWdl
KCRzdG9yZWlkLCAkc2NmZy0+e3NoYXJlZH0sIHVuZGVmLCBzdWIgewo+ICAJcnVuX2NvbW1hbmQo
JGNtZCwgZXJybXNnID0+ICJlcnJvciByZXNpemluZyB2b2x1bWUgJyRwYXRoJyIpOwo+ICAgICAg
fSk7Cj4gIAo+ICsgICAgaWYoISRydW5uaW5nICYmICRmb3JtYXQgZXEgJ3Fjb3cyJykgewo+ICsJ
bXkgJHByZWFsbG9jX29wdCA9IFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpwcmVhbGxvY2F0aW9uX2Nt
ZF9vcHRpb24oJHNjZmcsICRmb3JtYXQpOwo+ICsJbXkgJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1p
bWcnLCAncmVzaXplJywgIi0tJHByZWFsbG9jX29wdCIsICctZicsICRmb3JtYXQsICRwYXRoICwg
JHNpemVdOwoKdGhlIHJlZ3VsYXIgcWVtdS1pbWcgcmVzaXplIGluIFBsdWdpbi5wbSBkb2Vzbid0
IHBhc3MgdGhlIHByZWFsbG9jIG9wdGlvbnMuLgphbHNvLCBpZiB0aGVyZSBhcmUgbm9uZSBzZXQg
dGhpcyB3b3VsZCBwYXNzIGAtLWAgPwoKPiArCXJ1bl9jb21tYW5kKCRjbWQsIHRpbWVvdXQgPT4g
MTApOwo+ICsgICAgfQo+ICsKPiAgICAgIHJldHVybiAxOwo+ICB9Cj4gIAo+ICBzdWIgdm9sdW1l
X3NpemVfaW5mbyB7Cj4gLSAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2b2xuYW1l
LCAkdGltZW91dCkgPSBAXzsKPiAtICAgIG15ICRwYXRoID0gJGNsYXNzLT5maWxlc3lzdGVtX3Bh
dGgoJHNjZmcsICR2b2xuYW1lKTsKPiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwg
JHZvbG5hbWUsICR0aW1lb3V0LCAkc25hcCkgPSBAXzsKPiArICAgIG15ICRwYXRoID0gJGNsYXNz
LT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lLCAkc25hcCk7Cj4gIAo+ICAgICAgbXkg
JGNtZCA9IFsnL3NiaW4vbHZzJywgJy0tc2VwYXJhdG9yJywgJzonLCAnLS1ub2hlYWRpbmdzJywg
Jy0tdW5pdHMnLCAnYicsCj4gIAkgICAgICAgJy0tdW5idWZmZXJlZCcsICctLW5vc3VmZml4Jywg
Jy0tb3B0aW9ucycsICdsdl9zaXplJywgJHBhdGhdOwo+IEBAIC01ODYsMzIgKzY3OSwxODAgQEAg
c3ViIHZvbHVtZV9zaXplX2luZm8gewo+ICB9Cj4gIAo+ICBzdWIgdm9sdW1lX3NuYXBzaG90IHsK
PiAtICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZvbG5hbWUsICRzbmFwKSA9IEBf
Owo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHNuYXAsICRy
dW5uaW5nKSA9IEBfOwo+ICsKPiArICAgIG15ICgkdm1pZCwgJGZvcm1hdCkgPSAoJGNsYXNzLT5w
YXJzZV92b2xuYW1lKCR2b2xuYW1lKSlbMiw2XTsKPiArCj4gKyAgICBkaWUgImNhbid0IHNuYXBz
aG90IHRoaXMgaW1hZ2UgZm9ybWF0XG4iIGlmICRmb3JtYXQgbmUgJ3Fjb3cyJzsKPiArCj4gKyAg
ICBpZiAoJHJ1bm5pbmcpIHsKPiArICAgICAgICAjcmVuYW1lIHdpdGggYmxvY2tkZXYtcmVvcGVu
IGlzIGRvbmUgYXQgcWVtdSBsZXZlbCB3aGVuIHJ1bm5pbmcKPiArICAgICAgICAkY2xhc3MtPmFs
bG9jX3NuYXBfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJHNuYXApOwoKbWlzc2lu
ZyBldmFsPwoKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiY2FuJ3QgYWxsb2NhdGUgbmV3IHZv
bHVtZSAkdm9sbmFtZTogJEBcbiI7Cj4gKwl9Cj4gKyAgICAgICAgcmV0dXJuOwo+ICsgICAgfQo+
ICsKPiArICAgICNyZW5hbWUgY3VycmVudCB2b2x1bWUgdG8gc25hcCB2b2x1bWUKPiArICAgIGV2
YWwgeyAkY2xhc3MtPnJlbmFtZV92b2x1bWUoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZt
aWQsIHVuZGVmLCAnY3VycmVudCcsICRzbmFwKSB9Owo+ICsgICAgZGllICJlcnJvciByZW5hbWUg
JHZvbG5hbWUgdG8gJHNuYXBcbiIgaWYgJEA7Cj4gKwo+ICsgICAgZXZhbCB7ICRjbGFzcy0+YWxs
b2Nfc25hcF9pbWFnZSgkc3RvcmVpZCwgJHNjZmcsICR2b2xuYW1lLCAkc25hcCkgfTsKPiArICAg
IGlmICgkQCkgewo+ICsJbXkgJGVyciA9ICRAOwo+ICsgICAgICAgIGV2YWwgeyAkY2xhc3MtPnJl
bmFtZV92b2x1bWUoJHNjZmcsICRzdG9yZWlkLCAkdm9sbmFtZSwgJHZtaWQsIHVuZGVmLCAkc25h
cCwgJ2N1cnJlbnQnKSB9OwoKc2hvdWxkIGxvZyBpZiByZW5hbWluZyBiYWNrIGZhaWxlZC4uCgo+
ICsgICAgICAgIGRpZSAkZXJyOwo+ICsgICAgfQo+ICt9Cj4gKwo+ICtzdWIgdm9sdW1lX3JvbGxi
YWNrX2lzX3Bvc3NpYmxlIHsKPiArICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwgJHZv
bG5hbWUsICRzbmFwLCAkYmxvY2tlcnMpID0gQF87Cj4gKwo+ICsgICAgbXkgJHNuYXBfcGF0aCA9
ICRjbGFzcy0+cGF0aCgkc2NmZywgJHZvbG5hbWUsICRzdG9yZWlkLCAkc25hcCk7Cj4gIAo+IC0g
ICAgZGllICJsdm0gc25hcHNob3QgaXMgbm90IGltcGxlbWVudGVkIjsKPiArICAgICRjbGFzcy0+
YWN0aXZhdGVfdm9sdW1lKCRzdG9yZWlkLCAkc2NmZywgJHZvbG5hbWUsIHVuZGVmLCB7fSk7Cj4g
KyAgICBteSAkc25hcHNob3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywg
JHN0b3JlaWQsICR2b2xuYW1lKTsKPiArICAgIG15ICRwYXJlbnRfc25hcCA9ICRzbmFwc2hvdHMt
PntjdXJyZW50fS0+e3BhcmVudH07Cj4gKwo+ICsgICAgcmV0dXJuIDEgaWYgJHBhcmVudF9zbmFw
IGVxICRzbmFwOwo+ICsgICAgZGllICJjYW4ndCByb2xsYmFjaywgJyRzbmFwJyBpcyBub3QgbW9z
dCByZWNlbnQgc25hcHNob3Qgb24gJyR2b2xuYW1lJ1xuIjsKPiArCj4gKyAgICByZXR1cm4gMTsK
CnRoaXMgcmV0dXJuIGlzIGRlYWQgY29kZS4uCgo+ICB9Cj4gIAo+ICsKPiAgc3ViIHZvbHVtZV9z
bmFwc2hvdF9yb2xsYmFjayB7Cj4gICAgICBteSAoJGNsYXNzLCAkc2NmZywgJHN0b3JlaWQsICR2
b2xuYW1lLCAkc25hcCkgPSBAXzsKPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCByb2xsYmFj
ayBpcyBub3QgaW1wbGVtZW50ZWQiOwo+ICsgICAgbXkgJGZvcm1hdCA9ICgkY2xhc3MtPnBhcnNl
X3ZvbG5hbWUoJHZvbG5hbWUpKVs2XTsKPiArCj4gKyAgICBkaWUgImNhbid0IHJvbGxiYWNrIHNu
YXBzaG90IGZvciB0aGlzIGltYWdlIGZvcm1hdFxuIiBpZiAkZm9ybWF0IG5lICdxY293Mic7Cj4g
Kwo+ICsgICAgJGNsYXNzLT5hY3RpdmF0ZV92b2x1bWUoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFt
ZSwgdW5kZWYsIHt9KTsKPiArCj4gKyAgICAjIHdlIGNhbiBzaW1wbHkgcmVmb3JtYXQgdGhlIGN1
cnJlbnQgbHZtIHZvbHVtZSB0byBhdm9pZAo+ICsgICAgIyBhIGxvbmcgc2FmZSByZW1vdmUuKG5v
dCBuZWVkZWQgaGVyZSwgYXMgdGhlIGFsbG9jYXRlZCBzcGFjZQo+ICsgICAgIyBpcyBzdGlsbCB0
aGUgc2FtZSBvd25lcikKPiArICAgIGV2YWwgeyBsdm1fcWNvdzJfZm9ybWF0KCRjbGFzcywgJHN0
b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGZvcm1hdCwgJHNuYXApIH07CgpzaG91bGQgd2UgYWxz
byBmb2xsb3cgdGhpcyBhcHByb2FjaCBmb3IgcWNvdzIgZmlsZXM/Cgo+ICsgICAgaWYoJEApIHsK
PiArCWRpZSAiY2FuJ3Qgcm9sbGJhY2suIEVycm9yIHJlZm9ybWF0aW5nIGN1cnJlbnQgJHZvbG5h
bWVcbiI7Cj4gKyAgICB9Cj4gKyAgICByZXR1cm4gdW5kZWY7Cj4gIH0KPiAgCj4gIHN1YiB2b2x1
bWVfc25hcHNob3RfZGVsZXRlIHsKPiAtICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkc3RvcmVpZCwg
JHZvbG5hbWUsICRzbmFwKSA9IEBfOwo+ICsgICAgbXkgKCRjbGFzcywgJHNjZmcsICRzdG9yZWlk
LCAkdm9sbmFtZSwgJHNuYXAsICRydW5uaW5nKSA9IEBfOwo+ICsKPiArICAgIG15ICgkdnR5cGUs
ICRuYW1lLCAkdm1pZCwgJGJhc2VuYW1lLCAkYmFzZXZtaWQsICRpc0Jhc2UsICRmb3JtYXQpID0g
JGNsYXNzLT5wYXJzZV92b2xuYW1lKCR2b2xuYW1lKTsKPiArCj4gKyAgICBkaWUgImNhbid0IGRl
bGV0ZSBzbmFwc2hvdCBmb3IgdGhpcyBpbWFnZSBmb3JtYXRcbiIgaWYgJGZvcm1hdCBuZSAncWNv
dzInOwo+ICsKPiArICAgIGlmICgkcnVubmluZykgewo+ICsJJHZvbG5hbWUgPSAkY2xhc3MtPmdl
dF9zbmFwX3ZvbG5hbWUoJHZvbG5hbWUsICRzbmFwKTsKPiArCW15ICRjbGVhbnVwX3dvcmtlciA9
IGV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0b3JlaWQsICRzY2ZnLCAkdm9sbmFtZSwgJGlz
QmFzZSwgJGZvcm1hdCkgfTsKPiArCWRpZSAiZXJyb3IgZGVsZXRpbmcgc25hcHNob3QgJHNuYXBc
biIgaWYgJEA7ICAgIAo+ICsKPiArCWlmICgkY2xlYW51cF93b3JrZXIpIHsKPiArCSAgICBteSAk
cnBjZW52ID0gUFZFOjpSUENFbnZpcm9ubWVudDo6Z2V0KCk7Cj4gKwkgICAgbXkgJGF1dGh1c2Vy
ID0gJHJwY2Vudi0+Z2V0X3VzZXIoKTsKPiArCSAgICAkcnBjZW52LT5mb3JrX3dvcmtlcignaW1n
ZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFudXBfd29ya2VyKTsKPiArCX0KPiArCXJldHVy
bjsKPiArICAgIH0KPiAgCj4gLSAgICBkaWUgImx2bSBzbmFwc2hvdCBkZWxldGUgaXMgbm90IGlt
cGxlbWVudGVkIjsKPiArICAgIG15ICRjbWQgPSAiIjsKPiArICAgIG15ICRwYXRoID0gJGNsYXNz
LT5maWxlc3lzdGVtX3BhdGgoJHNjZmcsICR2b2xuYW1lKTsKPiArCj4gKyAgICBteSAkc25hcHNo
b3RzID0gJGNsYXNzLT52b2x1bWVfc25hcHNob3RfaW5mbygkc2NmZywgJHN0b3JlaWQsICR2b2xu
YW1lKTsKPiArICAgIG15ICRzbmFwcGF0aCA9ICRzbmFwc2hvdHMtPnskc25hcH0tPntmaWxlfTsK
PiArICAgIG15ICRzbmFwdm9sbmFtZSA9ICRzbmFwc2hvdHMtPnskc25hcH0tPnt2b2xuYW1lfTsK
PiArICAgIGRpZSAidm9sdW1lICRzbmFwcGF0aCBpcyBtaXNzaW5nIiBpZiAhLWUgJHNuYXBwYXRo
Owo+ICsKPiArICAgIG15ICRwYXJlbnRzbmFwID0gJHNuYXBzaG90cy0+eyRzbmFwfS0+e3BhcmVu
dH07Cj4gKwo+ICsgICAgbXkgJGNoaWxkc25hcCA9ICRzbmFwc2hvdHMtPnskc25hcH0tPntjaGls
ZH07Cj4gKyAgICBteSAkY2hpbGRwYXRoID0gJHNuYXBzaG90cy0+eyRjaGlsZHNuYXB9LT57Zmls
ZX07Cj4gKyAgICBteSAkY2hpbGR2b2xuYW1lID0gJHNuYXBzaG90cy0+eyRjaGlsZHNuYXB9LT57
dm9sbmFtZX07Cj4gKwo+ICsgICAgbXkgJGNsZWFudXBfd29ya2VyID0gdW5kZWY7Cj4gKyAgICBt
eSAkZXJyID0gdW5kZWY7Cj4gKyAgICAjaWYgZmlyc3Qgc25hcHNob3QsYXMgaXQgc2hvdWxkIGJl
IGJpZ2dlciwgIHdlIG1lcmdlIGNoaWxkLCBhbmQgcmVuYW1lIHRoZSBzbmFwc2hvdCB0byBjaGls
ZAo+ICsgICAgaWYoISRwYXJlbnRzbmFwKSB7Cj4gKwlwcmludCAiY29tbWl0OiBtZXJnZSBjb250
ZW50IG9mICRjaGlsZHBhdGggaW50byAkc25hcHBhdGhcbiI7Cj4gKwkjY2FuJ3QgdXNlIC1kIGhl
cmUsIGFzIGl0J3MgYW4gbHZtIHZvbHVtZQo+ICsJJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcn
LCAnY29tbWl0JywgJGNoaWxkcGF0aF07Cj4gKwlldmFsIHsJcnVuX2NvbW1hbmQoJGNtZCkgfTsK
PiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgY29tbWl0aW5nICRjaGlsZHBhdGggdG8g
JHNuYXBwYXRoOyAkQFxuIjsKPiArCX0KPiArCXByaW50ImRlbGV0ZSAkY2hpbGR2b2xuYW1lXG4i
Owo+ICsKPiArCSRjbGVhbnVwX3dvcmtlciA9IGV2YWwgeyAkY2xhc3MtPmZyZWVfaW1hZ2UoJHN0
b3JlaWQsICRzY2ZnLCAkY2hpbGR2b2xuYW1lLCAwKSB9Owo+ICsJaWYgKCRAKSB7Cj4gKwkgICAg
ZGllICJlcnJvciBkZWxldGUgb2xkIHNuYXBzaG90IHZvbHVtZSAkY2hpbGR2b2xuYW1lOiAkQFxu
IjsKPiArCX0KPiArCj4gKwlwcmludCJyZW5hbWUgJHNuYXB2b2xuYW1lIHRvICRjaGlsZHZvbG5h
bWVcbiI7Cj4gKwlteSAkdmcgPSAkc2NmZy0+e3ZnbmFtZX07Cj4gKwlldmFsIHsgbHZyZW5hbWUo
JHZnLCAkc25hcHZvbG5hbWUsICRjaGlsZHZvbG5hbWUpIH07Cj4gKwlpZiAoJEApIHsKPiArCSAg
ICB3YXJuICRAOwo+ICsJICAgICRlcnIgPSAiZXJyb3IgcmVuYW1pbmcgc25hcHNob3Q6ICRAXG4i
Owo+ICsJfQo+ICsKPiArICAgIH0gZWxzZSB7Cj4gKwkjd2UgcmViYXNlIHRoZSBjaGlsZCBpbWFn
ZSBvbiB0aGUgcGFyZW50IGFzIG5ldyBiYWNraW5nIGltYWdlCj4gKwlteSAkcGFyZW50cGF0aCA9
ICRzbmFwc2hvdHMtPnskcGFyZW50c25hcH0tPntmaWxlfTsKPiArCXByaW50ICJyZWJhc2U6IG1l
cmdlIGRpZmYgY29udGVudCBiZXR3ZWVuICRwYXJlbnRwYXRoIGFuZCAkY2hpbGRwYXRoIGludG8g
JGNoaWxkcGF0aFxuIjsKPiArCSRjbWQgPSBbJy91c3IvYmluL3FlbXUtaW1nJywgJ3JlYmFzZScs
ICctYicsICRwYXJlbnRwYXRoLCAnLUYnLCAncWNvdzInLCAnLWYnLCAncWNvdzInLCAkY2hpbGRw
YXRoXTsKPiArCWV2YWwgeyBydW5fY29tbWFuZCgkY21kKSB9Owo+ICsJaWYgKCRAKSB7Cj4gKwkg
ICAgZGllICJlcnJvciByZWJhc2UgJGNoaWxkcGF0aCBmcm9tICRwYXJlbnRwYXRoOyAkQFxuIjsK
PiArCX0KPiArCSNkZWxldGUgdGhlIHNuYXBzaG90Cj4gKwlldmFsIHsgJGNsZWFudXBfd29ya2Vy
ID0gJGNsYXNzLT5mcmVlX2ltYWdlKCRzdG9yZWlkLCAkc2NmZywgJHNuYXB2b2xuYW1lLCAwKTsg
fTsKPiArCWlmICgkQCkgewo+ICsJICAgIGRpZSAiZXJyb3IgZGVsZXRlIG9sZCBzbmFwc2hvdCB2
b2x1bWUgJHNuYXB2b2xuYW1lXG4iOwo+ICsJfQo+ICsgICAgfQo+ICsKPiArICAgIGlmICgkY2xl
YW51cF93b3JrZXIpIHsKPiArCW15ICRycGNlbnYgPSBQVkU6OlJQQ0Vudmlyb25tZW50OjpnZXQo
KTsKPiArCW15ICRhdXRodXNlciA9ICRycGNlbnYtPmdldF91c2VyKCk7Cj4gKwkkcnBjZW52LT5m
b3JrX3dvcmtlcignaW1nZGVsJywgdW5kZWYsICRhdXRodXNlciwgJGNsZWFudXBfd29ya2VyKTsK
PiArICAgIH0KPiArCj4gKyAgICBkaWUgJGVyciBpZiAkZXJyOwo+ICB9Cj4gIAo+ICBzdWIgdm9s
dW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIG15ICgkY2xhc3MsICRzY2ZnLCAkZmVhdHVyZSwgJHN0
b3JlaWQsICR2b2xuYW1lLCAkc25hcG5hbWUsICRydW5uaW5nKSA9IEBfOwo+ICAKPiAgICAgIG15
ICRmZWF0dXJlcyA9IHsKPiAtCWNvcHkgPT4geyBiYXNlID0+IDEsIGN1cnJlbnQgPT4gMX0sCj4g
LQlyZW5hbWUgPT4ge2N1cnJlbnQgPT4gMX0sCj4gKyAgICAgICAgY29weSA9PiB7Cj4gKyAgICAg
ICAgICAgIGJhc2UgPT4geyBxY293MiA9PiAxLCByYXcgPT4gMSB9LAo+ICsgICAgICAgICAgICBj
dXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAo+ICsgICAgICAgICAgICBzbmFwID0+
IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgIH0sCj4gKyAgICAgICAgJ3JlbmFtZScgPT4gewo+
ICsgICAgICAgICAgICBjdXJyZW50ID0+IHsgcWNvdzIgPT4gMSwgcmF3ID0+IDF9LAo+ICsgICAg
ICAgIH0sCj4gKyAgICAgICAgc25hcHNob3QgPT4gewo+ICsgICAgICAgICAgICBjdXJyZW50ID0+
IHsgcWNvdzIgPT4gMSB9LAo+ICsgICAgICAgICAgICBzbmFwID0+IHsgcWNvdzIgPT4gMSB9LAo+
ICsgICAgICAgIH0sCj4gKyMJZml4bWU6IGFkZCBsYXRlciA/ICh3ZSBuZWVkIHRvIGhhbmRsZSBi
YXNlcGF0aCwgdm9sdW1lIGFjdGl2YXRpb24sLi4uKQo+ICsjCXRlbXBsYXRlID0+IHsKPiArIwkg
ICAgY3VycmVudCA9PiB7IHJhdyA9PiAxLCBxY293MiA9PiAxfSwKPiArIwl9LAo+ICsjCWNsb25l
ID0+IHsKPiArIwkgICAgYmFzZSA9PiB7IHFjb3cyID0+IDEgfSwKPiArIwl9LAo+ICAgICAgfTsK
PiAgCj4gLSAgICBteSAoJHZ0eXBlLCAkbmFtZSwgJHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2bWlk
LCAkaXNCYXNlKSA9Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFzZW5h
bWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPQo+ICAJJGNsYXNzLT5wYXJzZV92b2xu
YW1lKCR2b2xuYW1lKTsKPiAgCj4gICAgICBteSAka2V5ID0gdW5kZWY7Cj4gQEAgLTYyMCw3ICs4
NjEsNyBAQCBzdWIgdm9sdW1lX2hhc19mZWF0dXJlIHsKPiAgICAgIH1lbHNlewo+ICAJJGtleSA9
ICAkaXNCYXNlID8gJ2Jhc2UnIDogJ2N1cnJlbnQnOwo+ICAgICAgfQo+IC0gICAgcmV0dXJuIDEg
aWYgJGZlYXR1cmVzLT57JGZlYXR1cmV9LT57JGtleX07Cj4gKyAgICByZXR1cm4gMSBpZiBkZWZp
bmVkKCRmZWF0dXJlcy0+eyRmZWF0dXJlfS0+eyRrZXl9LT57JGZvcm1hdH0pOwo+ICAKPiAgICAg
IHJldHVybiB1bmRlZjsKPiAgfQo+IEBAIC03NDUsNCArOTg2LDE4IEBAIHN1YiByZW5hbWVfdm9s
dW1lIHsKPiAgICAgIHJldHVybiAiJHtzdG9yZWlkfToke3RhcmdldF92b2xuYW1lfSI7Cj4gIH0K
PiAgCj4gK3N1YiBnZXRfc25hcF9uYW1lIHsKPiArICAgIG15ICgkY2xhc3MsICR2b2xuYW1lLCAk
c25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgbXkgKCR2dHlwZSwgJG5hbWUsICR2bWlkLCAkYmFz
ZW5hbWUsICRiYXNldm1pZCwgJGlzQmFzZSwgJGZvcm1hdCkgPSAkY2xhc3MtPnBhcnNlX3ZvbG5h
bWUoJHZvbG5hbWUpOwo+ICsgICAgJG5hbWUgPSAhJHNuYXBuYW1lIHx8ICRzbmFwbmFtZSBlcSAn
Y3VycmVudCcgPyAkbmFtZSA6ICJzbmFwLSRzbmFwbmFtZS0kbmFtZSI7Cj4gKyAgICByZXR1cm4g
JG5hbWU7Cj4gK30KPiArCj4gK3N1YiBnZXRfc25hcF92b2xuYW1lIHsKPiArICAgIG15ICgkY2xh
c3MsICR2b2xuYW1lLCAkc25hcG5hbWUpID0gQF87Cj4gKwo+ICsgICAgcmV0dXJuICRjbGFzcy0+
Z2V0X3NuYXBfbmFtZSgkdm9sbmFtZSwgJHNuYXBuYW1lKTsKPiArfQo+ICsKPiAgMTsKPiAtLSAK
PiAyLjM5LjUKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRw
czovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK