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 [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 3EB061FF164
	for <inbox@lore.proxmox.com>; Fri,  9 May 2025 10:45:54 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 1F50538856;
	Fri,  9 May 2025 10:46:11 +0200 (CEST)
Message-ID: <93bc24cc-2465-4ed2-b62f-d12305d5add3@proxmox.com>
Date: Fri, 9 May 2025 10:46:02 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
From: Hannes Duerr <h.duerr@proxmox.com>
To: Lou.Lecrivain@wdz.de, pve-devel@lists.proxmox.com
References: <20250506090041.53080-1-h.duerr@proxmox.com>
 <FR2PPF45D006270C594040B87F6E418E7548588A@FR2PPF45D006270.DEUP281.PROD.OUTLOOK.COM>
Content-Language: en-US
In-Reply-To: <FR2PPF45D006270C594040B87F6E418E7548588A@FR2PPF45D006270.DEUP281.PROD.OUTLOOK.COM>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.952 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
 HTML_MESSAGE            0.001 HTML included in message
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 KAM_MAILER                  2 Automated Mailer Tag Left in Email
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
X-Content-Filtered-By: Mailman/MimeDel 2.1.29
Subject: Re: [pve-devel] SPAM: [PATCH pve-network v4 1/2] ipam: add Nautobot
 plugin - range workaround questions
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-Transfer-Encoding: base64
Content-Type: text/plain; charset="utf-8"; Format="flowed"
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

Ck9uIDUvNy8yNSAxMToxNywgTG91LkxlY3JpdmFpbkB3ZHouZGUgd3JvdGU6Cj4gSGFubmVzLAo+
Cj4gVGhhbmsgeW91IGZvciBoZWxwaW5nIHdpdGggZ2V0dGluZyB0aGUgTmV0Ym94IHBsdWdpbiBp
biBnb29kIHNoYXBlLCBpdCdzIGFwcHJlY2lhdGVkLCByZWFsbHkgOikKPgo+IEkganVzdCBoYXZl
IHR3byBxdWVzdGlvbnMgcmVnYXJkaW5nIHRoZSBsYWNrIG9mIHJhbmdlIHN1cHBvcnQgaW4gTmF1
dG9ib3Q6Cj4gLSBXYXMgdGhlcmUgYW4gaXNzdWUgd2l0aCB0aGUgb3JpZ2luYWwgd29ya2Fyb3Vu
ZCBjb2RlPyBJIGZpbmQgdGhpcyBvbmUgd2F5IG1vcmUgY29tcGxleCwKPiAgICAgYnV0IGFsc28g
SSBndWVzcyBJIGNvdWxkJ3ZlIG1pc3NlZCBzb21lIGNvcm5lciBjYXNlKHMpLgpZZXMsIHRoZXJl
IHdhcyB0aGUgcHJvYmxlbSB0aGF0IHRoZSBvbGQgdmVyc2lvbiB3b3VsZCBwb3NzaWJseSBvdXRw
dXQKaW52YWxpZCBmcmVlIElQIGFkZHJlc3NlcyBpZiB0aGUgSVAgcmFuZ2UgZGlkIG5vdCBzdGFy
dCBkaXJlY3RseSBhdAp0aGUgYmVnaW5uaW5nIG9mIHRoZSBwcmVmaXguIEFzc3VtaW5nIHlvdSBo
YXZlIDE5Mi4xNjguMC4wLzE2IGFzCnByZWZpeCwgYWxsIElQIGFkZHJlc3NlcyBhcmUgc3RpbGwg
ZnJlZSBhbmQgeW91IHdhbnQgZnJlZSBpcCBhZGRyZXNzZXMKaW4gdGhlIHJhbmdlIDE5Mi4xNjgu
Ni4xLzE2IC0gMTkyLjE2OC43LjI1NS8xNiB0aGVuIHRoZSBvbGQKaW1wbGVtZW50YXRpb24gd291
bGQgc3RpbGwgaGF2ZSByZWNlaXZlZCB0aGUgYWRkcmVzc2VzCjE5Mi4xNjguMC5bMC01MF0vMjQg
ZnJvbSB0aGUgQVBJLiBUaGlzIGNvdWxkIGhhdmUgYmVlbiByZW1lZGllZCBieSBhbgpvZmZzZXQg
cGFyYW1ldGVyLCBidXQgdGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgZm9yIHRoZSBBUEkgZW5kcG9p
bnQuCkluY3JlYXNpbmcgdGhlIGBsaW1pdGAgaXMgYWxzbyBub3QgYW4gb3B0aW9uLCBhcyB0aGVy
ZSBpcyBhIG1heGltdW0KbGltaXQgb2YgMTAwMCBhbmQgeW91IGNhbiBzdGlsbCBydW4gaW50byBw
cm9ibGVtcy4KSSBoYXZlIHRoZXJlZm9yZSBvcHRlZCBmb3IgdGhlIGN1cnJlbnQgaW1wbGVtZW50
YXRpb24uCgo+IC0gV2hhdCBoYXBwZW5zIGlmIHdlIHVzZSBhIHByZWZpeCB3aXRoIGEgQ0lEUiBn
cmVhdGVyIHRoYW4gLzI0IGluIElQdjQgb3IgLzEyMCBpbiBJUHY2Pwo+ICAgICBEb2VzIG5vdCBi
ZWluZyBhYmxlIHRvIHNsaWNlIGl0IG1lYW5zIHRoYXQgcmFuZ2VzIHdpdGggc21hbGwgcHJlZml4
ZXMgc3VjaCBhcyB0aGVzZQo+ICAgICB3b3VsZCBiZSBmb3JiaWRkZW4vbm90IHdvcmtpbmc/Ck5v
LCBhbGwgcHJlZml4ZXMgc2hvdWxkIHdvcmsuIEZvciBzbWFsbGVyIHByZWZpeGVzIHN1Y2ggYXMg
LzI2LCB3ZQpzdGlsbCBjcmVhdGUgYSAvMjQgcG9vbCBhbmQgc2VhcmNoIGl0IGZvciBmcmVlIGlw
cywgYnV0IHRoZW4gY2hlY2sKYWdhaW4gd2hldGhlciB0aGUgaXAgaXMgYWN0dWFsbHkgaW4gdGhl
IGRlc2lyZWQgcmFuZ2UgaW4gLzI2LgoKPgo+IEJSCj4gTG91Cj4gX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwo+IERlIDrCoEhhbm5lcyBEdWVycjxoLmR1ZXJyQHByb3ht
b3guY29tPgo+IEVudm95w6kgOsKgbWFyZGkgNiBtYWkgMjAyNSAxMTowMAo+IMOAIDpwdmUtZGV2
ZWxAbGlzdHMucHJveG1veC5jb20gPHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbT4KPiBDY8Kg
OsKgSGFubmVzIER1ZXJyPGguZHVlcnJAcHJveG1veC5jb20+OyBMZWNyaXZhaW4sIExvdSAoV0Ra
KTxMb3UuTGVjcml2YWluQHdkei5kZT4KPiBPYmpldCA6wqBbISFBQ0hUVU5HIGV4dGVybiEhXSAt
IFtQQVRDSCBwdmUtbmV0d29yayB2NCAxLzJdIGlwYW06IGFkZCBOYXV0b2JvdCBwbHVnaW4KPiAg
IAo+IE5hdXRvYm90IGlzIGEgbmV0d29yayBzb3VyY2Ugb2YgdHJ1dGggWzBdIGFuZCBhcyBzdWNo
IHRoaXMgcGx1Z2luIG9mZmVycwo+IHRoZSBwb3NzaWJpbGl0eSB0byBhdXRvbWF0aWNhbGx5IGVu
dGVyIElQIGFkZHJlc3NlcyBhbmQgc3VibmV0cwo+IChwcmVmaXhlcyBpbiBOYXV0b2JvdCBqYXJn
b24pIGludG8gTmF1dG9ib3QgYXMgc29vbiBhcyB0aGV5IGFyZSBjcmVhdGVkCj4gaW4gUHJveG1v
eCBWRS4KPgo+IExpbWl0YXRpb25zOgo+ICogVGhlIElQQU0gcGx1Z2luIGN1cnJlbnRseSBkb2Vz
IG5vdCByZWNvZ25pemUgd2hldGhlciBWTXMvQ1RzIGFyZQo+ICDCoCBhY3RpdmUvb25saW5lIGFu
ZCBpbml0aWFsbHkgc2V0cyB0aGUgc3RhdHVzIHRvIEFjdGl2ZSBidXQgd2hlbiB0aGUKPiAgwqAg
Vk1zL0NUcyBhcmUgc3dpdGNoZWQgb2ZmIHRoZSBzdGF0dXMgaXMgbm90IGRlYWN0aXZhdGVkLgo+
ICogTmF1dG9ib3QgZG9lcyBub3Qgc3VwcG9ydCByYW5nZXMgdGhhdCBjYW4gYmUgc2VhcmNoZWQg
Zm9yIGZyZWUgaXAKPiAgwqAgYWRkcmVzc2VzLCBzbyB3ZSBtYXAgYXMgbWFueSBwb29sIHByZWZp
eGVzIHRoYXQgd2Ugc2VhcmNoIHVudGlsIHdlCj4gIMKgIGhhdmUgc2VhcmNoZWQgdGhlIGVudGly
ZSByYW5nZSBmb3IgZnJlZSBpcCBhZGRyZXNzZXMKPiAqIE5hdXRvYm90IGhhcyB0aGUgcG9zc2li
aWxpdHkgdG8gbWFwIEROUyBuYW1lcyB0byBJUCBhZGRyZXNzZXMuCj4gIMKgIEhvd2V2ZXIsIHNp
bmNlIHdlIGhhdmUgbm8gc3RhbmRhcmRpemVkIHdheSB0byBzZXQgdGhlIEROUyBuYW1lcyBpbgo+
ICDCoCBQcm94bW94IFZFIChmb3IgY29udGFpbmVycyB0aGUgY29udGFpbmVyIG5hbWUgaW4gUHJv
eG1veCBWRSBpcyBzZXQgYXMKPiAgwqAgdGhlIGhvc3QgbmFtZSBpbiB0aGUgY29udGFpbmVyLCBi
dXQgdGhpcyBpcyBub3QgcG9zc2libGUgZm9yIFZNcykgd2UKPiAgwqAgcmVmcmFpbiBmcm9tIHNl
dHRpbmcgYSBETlMgbmFtZSBhdCB0aGUgbW9tZW50Lgo+ICogTmF1dG9ib3QgZG9lcyBub3QgaGF2
ZSBhIGZpZWxkIGluIElQIGFkZHJlc3Mgb2JqZWN0cyBmb3IgYSBNQUMgYWRkcmVzcwo+ICDCoCBv
ciB0byBtYXJrIHRoZW0gYXMgZ2F0ZXdheSwgc28gd2Ugd3JpdGUgdGhpcyBpbiB0aGUgY29tbWVu
dC4KPgo+IFswXWh0dHBzOi8vbmV0d29ya3RvY29kZS5jb20vbmF1dG9ib3QvCj4KPiBDby1hdXRo
b3JlZC1ieTogbG91IGxlY3JpdmFpbjxsb3UubGVjcml2YWluQHdkei5kZT4KPiBTaWduZWQtb2Zm
LWJ5OiBIYW5uZXMgRHVlcnI8aC5kdWVyckBwcm94bW94LmNvbT4KPiAtLS0KPgo+IE5vdGVzOgo+
ICDCoMKgwqAgQ2hhbmdlcyBmcm9tIHYzIC0+IHY0Ogo+ICDCoMKgwqAgKiBNZXJnZSB0aGUgY2hl
Y2sgZm9yIGVtcHR5IHByZWZpeGVzL3N1Ym5ldHMgaW50byB0aGlzIGNvbW1pdAo+ICDCoMKgwqAg
KiBDcmVhdGUgbmF1dG9ib3RfYXBpX3JlcXVlc3QgdG8gdW5pZnkgQVBJIGNhbGxzCj4gIMKgwqDC
oCAqIGFkZCB1cGRhdGVfc3VibmV0IGZ1bmN0aW9uCj4gIMKgwqDCoCAqIGZpeCBhZGRfcmFuZ2Vf
bmV4dF9mcmVlaXAKPiAgwqDCoMKgICogZml4IGFuZCB1bmlmeSBlcnJvciBoYW5kbGluZwo+ICDC
oMKgwqAgKiBGaXggcGVybCBzdHlsZQo+Cj4gIMKgc3JjL1BWRS9BUEkyL05ldHdvcmsvU0ROL0lw
YW1zLnBtwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4gIMKgc3JjL1BWRS9OZXR3b3Jr
L1NETi9JcGFtcy5wbcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAzICsKPiAg
wqBzcmMvUFZFL05ldHdvcmsvU0ROL0lwYW1zL01ha2VmaWxlwqDCoMKgwqDCoMKgwqDCoMKgIHzC
oMKgIDIgKy0KPiAgwqBzcmMvUFZFL05ldHdvcmsvU0ROL0lwYW1zL05hdXRvYm90UGx1Z2luLnBt
IHwgNTEzICsrKysrKysrKysrKysrKysrKysrCj4gIMKgNCBmaWxlcyBjaGFuZ2VkLCA1MTggaW5z
ZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQo+ICDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvUFZF
L05ldHdvcmsvU0ROL0lwYW1zL05hdXRvYm90UGx1Z2luLnBtCj4KPiBkaWZmIC0tZ2l0IGEvc3Jj
L1BWRS9BUEkyL05ldHdvcmsvU0ROL0lwYW1zLnBtIGIvc3JjL1BWRS9BUEkyL05ldHdvcmsvU0RO
L0lwYW1zLnBtCj4gaW5kZXggMjdlYWQwMi4uODA3NDUxMiAxMDA2NDQKPiAtLS0gYS9zcmMvUFZF
L0FQSTIvTmV0d29yay9TRE4vSXBhbXMucG0KPiArKysgYi9zcmMvUFZFL0FQSTIvTmV0d29yay9T
RE4vSXBhbXMucG0KPiBAQCAtMTIsNiArMTIsNyBAQCB1c2UgUFZFOjpOZXR3b3JrOjpTRE46Oklw
YW1zOjpQbHVnaW47Cj4gIMKgdXNlIFBWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6UFZFUGx1Z2lu
Owo+ICDCoHVzZSBQVkU6Ok5ldHdvcms6OlNETjo6SXBhbXM6OlBocElwYW1QbHVnaW47Cj4gIMKg
dXNlIFBWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6TmV0Ym94UGx1Z2luOwo+ICt1c2UgUFZFOjpO
ZXR3b3JrOjpTRE46OklwYW1zOjpOYXV0b2JvdFBsdWdpbjsKPiAgwqB1c2UgUFZFOjpOZXR3b3Jr
OjpTRE46OkRoY3A7Cj4gIMKgdXNlIFBWRTo6TmV0d29yazo6U0ROOjpWbmV0czsKPiAgwqB1c2Ug
UFZFOjpOZXR3b3JrOjpTRE46OlpvbmVzOwo+IGRpZmYgLS1naXQgYS9zcmMvUFZFL05ldHdvcmsv
U0ROL0lwYW1zLnBtIGIvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy5wbQo+IGluZGV4IGM2ODli
OGYuLjJlY2I3NWUgMTAwNjQ0Cj4gLS0tIGEvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy5wbQo+
ICsrKyBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBhbXMucG0KPiBAQCAtMTIsMTEgKzEyLDE0IEBA
IHVzZSBQVkU6Ok5ldHdvcms7Cj4gICAKPiAgwqB1c2UgUFZFOjpOZXR3b3JrOjpTRE46OklwYW1z
OjpQVkVQbHVnaW47Cj4gIMKgdXNlIFBWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6TmV0Ym94UGx1
Z2luOwo+ICt1c2UgUFZFOjpOZXR3b3JrOjpTRE46OklwYW1zOjpOYXV0b2JvdFBsdWdpbjsKPiAg
wqB1c2UgUFZFOjpOZXR3b3JrOjpTRE46OklwYW1zOjpQaHBJcGFtUGx1Z2luOwo+ICDCoHVzZSBQ
VkU6Ok5ldHdvcms6OlNETjo6SXBhbXM6OlBsdWdpbjsKPiAgIAo+ICsKPiAgwqBQVkU6Ok5ldHdv
cms6OlNETjo6SXBhbXM6OlBWRVBsdWdpbi0+cmVnaXN0ZXIoKTsKPiAgwqBQVkU6Ok5ldHdvcms6
OlNETjo6SXBhbXM6Ok5ldGJveFBsdWdpbi0+cmVnaXN0ZXIoKTsKPiArUFZFOjpOZXR3b3JrOjpT
RE46OklwYW1zOjpOYXV0b2JvdFBsdWdpbi0+cmVnaXN0ZXIoKTsKPiAgwqBQVkU6Ok5ldHdvcms6
OlNETjo6SXBhbXM6OlBocElwYW1QbHVnaW4tPnJlZ2lzdGVyKCk7Cj4gIMKgUFZFOjpOZXR3b3Jr
OjpTRE46OklwYW1zOjpQbHVnaW4tPmluaXQoKTsKPiAgIAo+IGRpZmYgLS1naXQgYS9zcmMvUFZF
L05ldHdvcmsvU0ROL0lwYW1zL01ha2VmaWxlIGIvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy9N
YWtlZmlsZQo+IGluZGV4IDRlN2Q2NWYuLjc1ZTViOWEgMTAwNjQ0Cj4gLS0tIGEvc3JjL1BWRS9O
ZXR3b3JrL1NETi9JcGFtcy9NYWtlZmlsZQo+ICsrKyBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBh
bXMvTWFrZWZpbGUKPiBAQCAtMSw0ICsxLDQgQEAKPiAtU09VUkNFUz1QbHVnaW4ucG0gUGhwSXBh
bVBsdWdpbi5wbSBOZXRib3hQbHVnaW4ucG0gUFZFUGx1Z2luLnBtCj4gK1NPVVJDRVM9UGx1Z2lu
LnBtIFBocElwYW1QbHVnaW4ucG0gTmV0Ym94UGx1Z2luLnBtIFBWRVBsdWdpbi5wbSBOYXV0b2Jv
dFBsdWdpbi5wbQo+ICAgCj4gICAKPiAgwqBQRVJMNURJUj0ke0RFU1RESVJ9L3Vzci9zaGFyZS9w
ZXJsNQo+IGRpZmYgLS1naXQgYS9zcmMvUFZFL05ldHdvcmsvU0ROL0lwYW1zL05hdXRvYm90UGx1
Z2luLnBtIGIvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy9OYXV0b2JvdFBsdWdpbi5wbQo+IG5l
dyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMjg5NzAyNQo+IC0tLSAvZGV2L251
bGwKPiArKysgYi9zcmMvUFZFL05ldHdvcmsvU0ROL0lwYW1zL05hdXRvYm90UGx1Z2luLnBtCj4g
QEAgLTAsMCArMSw1MTMgQEAKPiArcGFja2FnZSBQVkU6Ok5ldHdvcms6OlNETjo6SXBhbXM6Ok5h
dXRvYm90UGx1Z2luOwo+ICsKPiArdXNlIHN0cmljdDsKPiArdXNlIHdhcm5pbmdzOwo+ICt1c2Ug
UFZFOjpJTm90aWZ5Owo+ICt1c2UgUFZFOjpDbHVzdGVyOwo+ICt1c2UgUFZFOjpUb29sczsKPiAr
dXNlIE5ldEFkZHI6OklQOwo+ICt1c2UgTmV0OjpTdWJuZXQgcXcoc3VibmV0X21hdGNoZXIpOwo+
ICsKPiArdXNlIGJhc2UoJ1BWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6UGx1Z2luJyk7Cj4gKwo+
ICtzdWIgdHlwZSB7Cj4gK8KgwqDCoCByZXR1cm4gJ25hdXRvYm90JzsKPiArfQo+ICsKPiArc3Vi
IHByb3BlcnRpZXMgewo+ICvCoMKgwqAgcmV0dXJuIHsKPiArwqDCoMKgwqDCoMKgIG5hbWVzcGFj
ZSA9PiB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHR5cGUgPT4gJ3N0cmluZycsCj4gK8KgwqDC
oMKgwqDCoCB9LAo+ICvCoMKgwqAgfTsKPiArfQo+ICsKPiArc3ViIG9wdGlvbnMgewo+ICvCoMKg
wqAgcmV0dXJuIHsKPiArwqDCoMKgwqDCoMKgIHVybCA9PiB7IG9wdGlvbmFsID0+IDAgfSwKPiAr
wqDCoMKgwqDCoMKgIHRva2VuID0+IHsgb3B0aW9uYWwgPT4gMCB9LAo+ICvCoMKgwqDCoMKgwqAg
bmFtZXNwYWNlID0+IHsgb3B0aW9uYWwgPT4gMCB9LAo+ICvCoMKgwqDCoMKgwqAgZmluZ2VycHJp
bnQgPT4geyBvcHRpb25hbCA9PiAxIH0sCj4gK8KgwqDCoCB9Owo+ICt9Cj4gKwo+ICtzdWIgZGVm
YXVsdF9pcF9zdGF0dXMgewo+ICvCoMKgwqAgcmV0dXJuICdBY3RpdmUnOwo+ICt9Cj4gKwo+ICtz
dWIgbmF1dG9ib3RfYXBpX3JlcXVlc3Qgewo+ICvCoMKgwqAgbXkgKCRjb25maWcsICRtZXRob2Qs
ICRwYXRoLCAkcGFyYW1zKSA9IEBfOwo+ICsKPiArwqDCoMKgIHJldHVybiBQVkU6Ok5ldHdvcms6
OlNETjo6YXBpX3JlcXVlc3QoCj4gK8KgwqDCoMKgwqDCoCAkbWV0aG9kLAo+ICvCoMKgwqDCoMKg
wqAgIiRjb25maWctPnt1cmx9JHtwYXRofSIsCj4gK8KgwqDCoMKgwqDCoCBbCj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgICdDb250ZW50LVR5cGUnID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0
PVVURi04JywKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ0F1dGhvcml6YXRpb24nID0+ICJ0b2tl
biAkY29uZmlnLT57dG9rZW59IiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgJ0FjY2VwdCcgPT4g
ImFwcGxpY2F0aW9uL2pzb24iCj4gK8KgwqDCoMKgwqDCoCBdLAo+ICvCoMKgwqDCoMKgwqAgJHBh
cmFtcywKPiArwqDCoMKgwqDCoMKgICRjb25maWctPntmaW5nZXJwcmludH0sCj4gK8KgwqDCoCAp
Owo+ICt9Cj4gKwo+ICtzdWIgYWRkX3N1Ym5ldCB7Cj4gK8KgwqDCoCBteSAoJGNsYXNzLCAkY29u
ZmlnLCB1bmRlZiwgJHN1Ym5ldCwgJG5vZXJyKSA9IEBfOwo+ICsKPiArwqDCoMKgIG15ICRjaWRy
ID0gJHN1Ym5ldC0+e2NpZHJ9Owo+ICvCoMKgwqAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntu
YW1lc3BhY2V9Owo+ICsKPiArwqDCoMKgIG15ICRpbnRlcm5hbGlkID0gZ2V0X3ByZWZpeF9pZCgk
Y29uZmlnLCAkY2lkciwgJG5vZXJyKTsKPiArwqDCoMKgIGlmICgkaW50ZXJuYWxpZCkgewo+ICvC
oMKgwqDCoMKgwqAgcmV0dXJuIGlmICRub2VycjsKPiArwqDCoMKgwqDCoMKgIGRpZSAiY291bGQg
bm90IGFkZCB0aGUgc3VibmV0ICRzdWJuZXQgYmVjYXVzZSBpdCBhbHJlYWR5IGV4aXN0cyBpbiBu
YXV0b2JvdFxuIgo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIG15ICRwYXJhbXMgPSB7Cj4gK8Kg
wqDCoMKgwqDCoCBwcmVmaXggPT4gJGNpZHIsCj4gK8KgwqDCoMKgwqDCoCBuYW1lc3BhY2UgPT4g
JG5hbWVzcGFjZSwKPiArwqDCoMKgwqDCoMKgIHN0YXR1cyA9PiBkZWZhdWx0X2lwX3N0YXR1cygp
Cj4gK8KgwqDCoCB9Owo+ICsKPiArwqDCoMKgIGV2YWwgewo+ICvCoMKgwqDCoMKgwqAgbmF1dG9i
b3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIlBPU1QiLCAiL2lwYW0vcHJlZml4ZXMvIiwgJHBhcmFt
cyk7Cj4gK8KgwqDCoCB9Owo+ICvCoMKgwqAgaWYgKCRAKSB7Cj4gK8KgwqDCoMKgwqDCoCByZXR1
cm4gaWYgJG5vZXJyOwo+ICvCoMKgwqDCoMKgwqAgZGllICJlcnJvciBhZGRpbmcgdGhlIHN1Ym5l
dCAkc3VibmV0IHRvIG5hdXRvYm90ICRAXG4iOwo+ICvCoMKgwqAgfQo+ICt9Cj4gKwo+ICtzdWIg
dXBkYXRlX3N1Ym5ldCB7Cj4gK8KgwqDCoCBteSAoJGNsYXNzLCAkcGx1Z2luX2NvbmZpZywgJHN1
Ym5ldGlkLCAkc3VibmV0LCAkb2xkX3N1Ym5ldCwgJG5vZXJyKSA9IEBfOwo+ICvCoMKgwqAgIyBk
aGNwIHJhbmdlcyBhcmUgbm90IHN1cHBvcnRlZCBpbiBuYXV0b2JvdCBzbyB3ZSBkb24ndCBoYXZl
IHRvIHVwZGF0ZSB0aGVtCj4gK30KPiArCj4gK3N1YiBkZWxfc3VibmV0IHsKPiArwqDCoMKgIG15
ICgkY2xhc3MsICRjb25maWcsICRzdWJuZXRpZCwgJHN1Ym5ldCwgJG5vZXJyKSA9IEBfOwo+ICsK
PiArwqDCoMKgIG15ICRjaWRyID0gJHN1Ym5ldC0+e2NpZHJ9Owo+ICsKPiArwqDCoMKgIG15ICRp
bnRlcm5hbGlkID0gZ2V0X3ByZWZpeF9pZCgkY29uZmlnLCAkY2lkciwgJG5vZXJyKTsKPiArwqDC
oMKgIGlmICghJGludGVybmFsaWQpIHsKPiArwqDCoMKgwqDCoMKgIHdhcm4oImNvdWxkIG5vdCBm
aW5kIGRlbGV0ZSB0aGUgc3VibmV0ICRjaWRyIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3QgaW4g
bmF1dG9ib3RcbiIpOwo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuOwo+ICvCoMKgwqAgfQo+ICsKPiAr
wqDCoMKgIGlmICghc3VibmV0X2lzX2RlbGV0YWJsZSgkY29uZmlnLCAkc3VibmV0aWQsICRzdWJu
ZXQsICRpbnRlcm5hbGlkLCAkbm9lcnIpKSB7Cj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gaWYgJG5v
ZXJyOwo+ICvCoMKgwqDCoMKgwqAgZGllICJjb3VsZCBub3QgZGVsZXRlIHRoZSBzdWJuZXQgJGNp
ZHIsIGl0IHN0aWxsIGNvbnRhaW5zIGlwIGFkZHJlc3NlcyFcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+
ICvCoMKgwqAgIyBkZWxldGUgYXNzb2NpYXRlZCBnYXRld2F5IElQIGFkZHJlc3Nlcwo+ICvCoMKg
wqAgJGNsYXNzLT5lbXB0eV9zdWJuZXQoICRjb25maWcsICRzdWJuZXRpZCwgJHN1Ym5ldCwgJGlu
dGVybmFsaWQsICRub2Vycik7Cj4gKwo+ICvCoMKgwqAgZXZhbCB7Cj4gK8KgwqDCoMKgwqDCoCBu
YXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiREVMRVRFIiwgIi9pcGFtL3ByZWZpeGVzLyRp
bnRlcm5hbGlkLyIpOwo+ICvCoMKgwqAgfTsKPiArwqDCoMKgIGlmICgkQCkgewo+ICvCoMKgwqDC
oMKgwqAgcmV0dXJuIGlmICRub2VycjsKPiArwqDCoMKgwqDCoMKgIGRpZSAiZXJyb3IgZGVsZXRp
bmcgc3VibmV0IGZyb20gbmF1dG9ib3Q6ICRAXG4iOwo+ICvCoMKgwqAgfQo+ICvCoMKgwqAgcmV0
dXJuIDE7Cj4gK30KPiArCj4gK3N1YiBhZGRfaXAgewo+ICvCoMKgwqAgbXkgKCRjbGFzcywgJGNv
bmZpZywgdW5kZWYsICRzdWJuZXQsICRpcCwgJGhvc3RuYW1lLCAkbWFjLCB1bmRlZiwKPiArwqDC
oMKgwqDCoMKgICRpc19nYXRld2F5LCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkgJG1h
c2sgPSAkc3VibmV0LT57bWFza307Cj4gK8KgwqDCoCBteSAkbmFtZXNwYWNlID0gJGNvbmZpZy0+
e25hbWVzcGFjZX07Cj4gKwo+ICvCoMKgwqAgbXkgJGRlc2NyaXB0aW9uID0gdW5kZWY7Cj4gK8Kg
wqDCoCBpZiAoJGlzX2dhdGV3YXkpIHsKPiArwqDCoMKgwqDCoMKgICRkZXNjcmlwdGlvbiA9ICdn
YXRld2F5JzsKPiArwqDCoMKgIH0gZWxzaWYgKCRtYWMpIHsKPiArwqDCoMKgwqDCoMKgICRkZXNj
cmlwdGlvbiA9ICJtYWM6JG1hYyI7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgbXkgJHBhcmFt
cyA9IHsKPiArwqDCoMKgwqDCoMKgIGFkZHJlc3MgPT4gIiRpcC8kbWFzayIsCj4gK8KgwqDCoMKg
wqDCoCB0eXBlID0+ICJkaGNwIiwKPiArwqDCoMKgwqDCoMKgIGRlc2NyaXB0aW9uID0+ICRkZXNj
cmlwdGlvbiwKPiArwqDCoMKgwqDCoMKgIG5hbWVzcGFjZSA9PiAkbmFtZXNwYWNlLAo+ICvCoMKg
wqDCoMKgwqAgc3RhdHVzID0+IGRlZmF1bHRfaXBfc3RhdHVzKCkKPiArwqDCoMKgIH07Cj4gKwo+
ICvCoMKgwqAgZXZhbCB7Cj4gK8KgwqDCoMKgwqDCoCBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29u
ZmlnLCAiUE9TVCIsICIvaXBhbS9pcC1hZGRyZXNzZXMvIiwgJHBhcmFtcyk7Cj4gK8KgwqDCoCB9
Owo+ICsKPiArwqDCoMKgIGlmICgkQCkgewo+ICvCoMKgwqDCoMKgwqAgaWYgKCRpc19nYXRld2F5
KSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGRpZSAiZXJyb3IgYWRkIHN1Ym5ldCBpcCB0byBp
cGFtOiBpcCAkaXAgYWxyZWFkeSBleGlzdDogJEAiCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgaWYgIWlzX2lwX2dhdGV3YXkoJGNvbmZpZywgJGlwLCAkbm9lcnIpOwo+ICvCoMKgwqDC
oMKgwqAgfSBlbHNpZiAoISRub2Vycikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaWUgImVy
cm9yIGFkZCBzdWJuZXQgaXAgdG8gaXBhbTogaXAgYWxyZWFkeSBleGlzdDogJEAiOwo+ICvCoMKg
wqDCoMKgwqAgfQo+ICvCoMKgwqAgfQo+ICt9Cj4gKwo+ICtzdWIgYWRkX25leHRfZnJlZWlwIHsK
PiArwqDCoMKgIG15ICgkY2xhc3MsICRjb25maWcsIHVuZGVmLCAkc3VibmV0LCAkaG9zdG5hbWUs
ICRtYWMsIHVuZGVmLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkgJGNpZHIgPSAkc3Vi
bmV0LT57Y2lkcn07Cj4gK8KgwqDCoCBteSAkbmFtZXNwYWNlID0gJGNvbmZpZy0+e25hbWVzcGFj
ZX07Cj4gKwo+ICvCoMKgwqAgbXkgJGludGVybmFsaWQgPSBnZXRfcHJlZml4X2lkKCRjb25maWcs
ICRjaWRyLCAkbm9lcnIpOwo+ICvCoMKgwqAgaWYgKCFkZWZpbmVkKCRpbnRlcm5hbGlkKSkgewo+
ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGlmICRub2VycjsKPiArwqDCoMKgwqDCoMKgIGRpZSAiY291
bGQgbm90IGZpbmQgcHJlZml4ICRjaWRyIGluIG5hdXRvYm90XG4iOwo+ICvCoMKgwqAgfQo+ICsK
PiArwqDCoMKgIG15ICRkZXNjcmlwdGlvbiA9IHVuZGVmOwo+ICvCoMKgwqAgJGRlc2NyaXB0aW9u
ID0gIm1hYzokbWFjIiBpZiAkbWFjOwo+ICsKPiArwqDCoMKgIG15ICRwYXJhbXMgPSB7Cj4gK8Kg
wqDCoMKgwqDCoCB0eXBlID0+ICJkaGNwIiwKPiArwqDCoMKgwqDCoMKgIGRlc2NyaXB0aW9uID0+
ICRkZXNjcmlwdGlvbiwKPiArwqDCoMKgwqDCoMKgIG5hbWVzcGFjZSA9PiAkbmFtZXNwYWNlLAo+
ICvCoMKgwqDCoMKgwqAgc3RhdHVzID0+IGRlZmF1bHRfaXBfc3RhdHVzKCkKPiArwqDCoMKgIH07
Cj4gKwo+ICvCoMKgwqAgbXkgJHJlc3BvbnNlID0gZXZhbCB7Cj4gK8KgwqDCoMKgwqDCoCByZXR1
cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICRjb25maWcs
Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICJQT1NUIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg
Ii9pcGFtL3ByZWZpeGVzLyRpbnRlcm5hbGlkL2F2YWlsYWJsZS1pcHMvIiwKPiArwqDCoMKgwqDC
oMKgwqDCoMKgwqAgJHBhcmFtcwo+ICvCoMKgwqDCoMKgwqAgKTsKPiArwqDCoMKgIH07Cj4gK8Kg
wqDCoCBpZiAoJEAgfHwgISRyZXNwb25zZSkgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGlmICRu
b2VycjsKPiArwqDCoMKgwqDCoMKgIGRpZSAiY291bGQgbm90IGFsbG9jYXRlIGlwIGluIHN1Ym5l
dCAkY2lkcjogJEBcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgbXkgJGlwID0gTmV0QWRk
cjo6SVAtPm5ldygkcmVzcG9uc2UtPnthZGRyZXNzfSk7Cj4gKwo+ICvCoMKgwqAgcmV0dXJuICRp
cC0+YWRkcjsKPiArfQo+ICsKPiArc3ViIGFkZF9yYW5nZV9uZXh0X2ZyZWVpcCB7Cj4gK8KgwqDC
oCBteSAoJGNsYXNzLCAkY29uZmlnLCAkc3VibmV0LCAkcmFuZ2UsICRkYXRhLCAkbm9lcnIpID0g
QF87Cj4gKwo+ICvCoMKgwqAgbXkgJGNpZHIgPSBOZXRBZGRyOjpJUC0+bmV3KCRzdWJuZXQtPntj
aWRyfSk7Cj4gK8KgwqDCoCBteSAkbmFtZXNwYWNlID0gJGNvbmZpZy0+e25hbWVzcGFjZX07Cj4g
Kwo+ICvCoMKgwqAgIyBOYXV0b2JvdCBkb2VzIG5vdCBzdXBwb3J0IElQIHJhbmdlcyBvbmx5IHBy
ZWZpeGVzLgo+ICvCoMKgwqAgIyBXZSB0aGVyZWZvcmUgZGl2aWRlIHRoZSByYW5nZSBpbnRvIHNt
YWxsZXIgcG9vbC1wcmVmaXhlcywKPiArwqDCoMKgICMgZWFjaCBjb250YWluaW5nIDI1NiBhZGRy
ZXNzZXMsIGFuZCBzZWFyY2ggZm9yIGF2YWlsYWJsZSBJUHMgaW4gdGhlbQo+ICvCoMKgwqAgbXkg
JHByZWZpeF9zaXplID0gJGNpZHItPnZlcnNpb24gPT0gNCA/IDI0IDogMTIwOwo+ICvCoMKgwqAg
bXkgJGluY3JlbWVudCA9IDI1NjsKPiArwqDCoMKgIG15ICRmb3VuZF9pcCA9IHVuZGVmOwo+ICsK
PiArwqDCoMKgIG15ICRzdGFydF9yYW5nZSA9IE5ldEFkZHI6OklQLT5uZXcoJHJhbmdlLT57J3N0
YXJ0LWFkZHJlc3MnfSwgJHByZWZpeF9zaXplKTsKPiArwqDCoMKgIG15ICRlbmRfcmFuZ2UgPSBO
ZXRBZGRyOjpJUC0+bmV3KCRyYW5nZS0+eydlbmQtYWRkcmVzcyd9LCAkcHJlZml4X3NpemUpOwo+
ICvCoMKgwqAgbXkgJG1hdGNoZXIgPSBzdWJuZXRfbWF0Y2hlcigkZW5kX3JhbmdlLT5jaWRyKTsK
PiArwqDCoMKgIG15ICRjdXJyZW50X2lwID0gJHN0YXJ0X3JhbmdlOwo+ICsKPiArwqDCoMKgIHdo
aWxlICgxKSB7Cj4gK8KgwqDCoMKgwqDCoCBteSAkY3VycmVudF9jaWRyID0gJGN1cnJlbnRfaXAt
PmFkZHIgLiAiLyRwcmVmaXhfc2l6ZSI7Cj4gKwo+ICvCoMKgwqDCoMKgwqAgbXkgJHBhcmFtcyA9
IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJlZml4ID0+ICRjdXJyZW50X2NpZHIsCj4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgIG5hbWVzcGFjZSA9PiAkbmFtZXNwYWNlLAo+ICvCoMKgwqDCoMKg
wqDCoMKgwqDCoCBzdGF0dXMgPT4gZGVmYXVsdF9pcF9zdGF0dXMoKSwKPiArwqDCoMKgwqDCoMKg
wqDCoMKgwqAgdHlwZSA9PiAicG9vbCIKPiArwqDCoMKgwqDCoMKgIH07Cj4gKwo+ICvCoMKgwqDC
oMKgwqAgIyBjcmVhdGUgdGVtcG9yYXJ5IHBvb2wgcHJlZml4Cj4gK8KgwqDCoMKgwqDCoCBteSAk
dGVtcF9wcmVmaXggPSBldmFsIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRv
Ym90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJQT1NUIiwgIi9pcGFtL3ByZWZpeGVzLyIsICRwYXJh
bXMpOwo+ICvCoMKgwqDCoMKgwqAgfTsKPiArCj4gK8KgwqDCoMKgwqDCoCAjIHNraXAgaWYgaXQg
aXMgbm90IHBvc3NpYmxlIHRvIGNyZWF0ZSBpdAo+ICvCoMKgwqDCoMKgwqAgbmV4dCBpZiAkQDsK
PiArCj4gK8KgwqDCoMKgwqDCoCBteSAkdGVtcF9wcmVmaXhfaWQgPSAkdGVtcF9wcmVmaXgtPntp
ZH07Cj4gKwo+ICvCoMKgwqDCoMKgwqAgIyBGZXRjaCBhdmFpbGFibGUgSVBzIGZyb20gdGhlIHRl
bXBvcmFyeSBwb29sIGFuZCBmaW5kIGEgbWF0Y2hpbmcgSVAKPiArwqDCoMKgwqDCoMKgIG15ICRy
ZXN1bHQgPSBldmFsIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRvYm90X2Fw
aV9yZXF1ZXN0KAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICRjb25maWcsCj4gK8Kg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgIkdFVCIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqAgIi9pcGFtL3ByZWZpeGVzLyR0ZW1wX3ByZWZpeF9pZC9hdmFpbGFibGUtaXBzLz9s
aW1pdD0kaW5jcmVtZW50Igo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCApOwo+ICvCoMKgwqDCoMKg
wqAgfTsKPiArCj4gK8KgwqDCoMKgwqDCoCAjIHNlYXJjaCBsaXN0IGZvciBJUHMgaW4gYWN0dWFs
IHJhbmdlCj4gK8KgwqDCoMKgwqDCoCBpZiAoISRAKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg
IGZvcmVhY2ggbXkgJGVudHJ5IChAJHJlc3VsdCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIG15ICRpcCA9IE5ldEFkZHI6OklQLT5uZXcoJGVudHJ5LT57YWRkcmVzc30pOwo+ICvC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICMgY29tcGFyaXNvbiBpcyBvbmx5IHBvc3NpYmxl
IGJlY2F1c2UgdGhleSBhcmUgaW4gdGhlIHNhbWUgc3VibmV0Cj4gK8KgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgaWYgKCRzdGFydF9yYW5nZSA8PSAkaXAgJiYgJGlwIDw9ICRlbmRfcmFuZ2Up
IHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICRmb3VuZF9pcCA9ICRp
cC0+YWRkcjsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxhc3Q7Cj4g
K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9
Cj4gK8KgwqDCoMKgwqDCoCB9Cj4gKwo+ICvCoMKgwqDCoMKgwqAgIyBEZWxldGUgdGVtcG9yYXJ5
IHByZWZpeCBwb29sCj4gK8KgwqDCoMKgwqDCoCBldmFsIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg
wqAgbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkRFTEVURSIsICIvaXBhbS9wcmVmaXhl
cy8kdGVtcF9wcmVmaXhfaWQvIik7Cj4gK8KgwqDCoMKgwqDCoCB9Owo+ICsKPiArwqDCoMKgwqDC
oMKgIGxhc3QgaWYgJGZvdW5kX2lwOwo+ICsKPiArwqDCoMKgwqDCoMKgICMgd2Ugc2VhcmNoZWQg
dGhlIGxhc3QgcG9vbCBwcmVmaXgKPiArwqDCoMKgwqDCoMKgIGxhc3QgaWYgJG1hdGNoZXItPigk
Y3VycmVudF9pcC0+YWRkcik7Cj4gKwo+ICvCoMKgwqDCoMKgwqAgJGN1cnJlbnRfaXAgPSAkY3Vy
cmVudF9pcC0+cGx1cygkaW5jcmVtZW50KTsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCBpZiAo
ISRmb3VuZF9pcCkgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGlmICRub2VycjsKPiArwqDCoMKg
wqDCoMKgIGRpZSAiY291bGQgbm90IGFsbG9jYXRlIGlwIGluIHRoZSByYW5nZSAiIC4gJHN0YXJ0
X3JhbmdlLT5hZGRyIC4gIiAtICIKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLiAkZW5kX3Jhbmdl
LT5hZGRyIC4gIjogJEBcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgJGNsYXNzLT5hZGRf
aXAoJGNvbmZpZywgdW5kZWYsICRzdWJuZXQsICRmb3VuZF9pcCwgJGRhdGEtPntob3N0bmFtZX0s
ICRkYXRhLT57bWFjfSwgdW5kZWYsIDAsICRub2Vycik7Cj4gKwo+ICvCoMKgwqAgcmV0dXJuICRm
b3VuZF9pcDsKPiArfQo+ICsKPiArc3ViIHVwZGF0ZV9pcCB7Cj4gK8KgwqDCoCBteSAoJGNsYXNz
LCAkY29uZmlnLCAkc3VibmV0aWQsICRzdWJuZXQsICRpcCwgJGhvc3RuYW1lLCAkbWFjLAo+ICvC
oMKgwqDCoMKgwqAgdW5kZWYsICRpc19nYXRld2F5LCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKg
wqAgbXkgJG1hc2sgPSAkc3VibmV0LT57bWFza307Cj4gK8KgwqDCoCBteSAkbmFtZXNwYWNlID0g
JGNvbmZpZy0+e25hbWVzcGFjZX07Cj4gKwo+ICvCoMKgwqAgbXkgJGRlc2NyaXB0aW9uID0gdW5k
ZWY7Cj4gK8KgwqDCoCBpZiAoJGlzX2dhdGV3YXkpIHsKPiArwqDCoMKgwqDCoMKgICRkZXNjcmlw
dGlvbiA9ICdnYXRld2F5Jwo+ICvCoMKgwqAgfSBlbHNpZiAoJG1hYykgewo+ICvCoMKgwqDCoMKg
wqAgJGRlc2NyaXB0aW9uID0gIm1hYzokbWFjIjsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCBt
eSAkcGFyYW1zID0gewo+ICvCoMKgwqDCoMKgwqAgYWRkcmVzcyA9PiAiJGlwLyRtYXNrIiwKPiAr
wqDCoMKgwqDCoMKgIHR5cGUgPT4gImRoY3AiLAo+ICvCoMKgwqDCoMKgwqAgZGVzY3JpcHRpb24g
PT4gJGRlc2NyaXB0aW9uLAo+ICvCoMKgwqDCoMKgwqAgbmFtZXNwYWNlID0+ICRuYW1lc3BhY2Us
Cj4gK8KgwqDCoMKgwqDCoCBzdGF0dXMgPT4gZGVmYXVsdF9pcF9zdGF0dXMoKQo+ICvCoMKgwqAg
fTsKPiArCj4gK8KgwqDCoCBteSAkaXBfaWQgPSBnZXRfaXBfaWQoJGNvbmZpZywgJGlwLCAkbm9l
cnIpOwo+ICvCoMKgwqAgaWYgKCFkZWZpbmVkKCRpcF9pZCkpIHsKPiArwqDCoMKgwqDCoMKgIHJl
dHVybiBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKgwqDCoCBkaWUgImNvdWxkIG5vdCBmaW5kIHRoZSBp
cCAkaXAgaW4gbmF1dG9ib3RcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgZXZhbCB7Cj4g
K8KgwqDCoMKgwqDCoCBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiUEFUQ0giLCAiL2lw
YW0vaXAtYWRkcmVzc2VzLyRpcF9pZC8iLCAkcGFyYW1zKTsKPiArwqDCoMKgIH07Cj4gK8KgwqDC
oCBpZiAoJEApIHsKPiArwqDCoMKgwqDCoMKgIHJldHVybiBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKg
wqDCoCBkaWUgImVycm9yIHVwZGF0aW5nIGlwICRpcDogJEAiOwo+ICvCoMKgwqAgfQo+ICt9Cj4g
Kwo+ICsKPiArc3ViIGRlbF9pcCB7Cj4gK8KgwqDCoCBteSAoJGNsYXNzLCAkY29uZmlnLCB1bmRl
ZiwgdW5kZWYsICRpcCwgJG5vZXJyKSA9IEBfOwo+ICsKPiArwqDCoMKgIHJldHVybiBpZiAhJGlw
Owo+ICsKPiArwqDCoMKgIG15ICRpcF9pZCA9IGdldF9pcF9pZCgkY29uZmlnLCAkaXAsICRub2Vy
cik7Cj4gK8KgwqDCoCBpZiAoIWRlZmluZWQoJGlwX2lkKSkgewo+ICvCoMKgwqDCoMKgwqAgd2Fy
bigiY291bGQgbm90IGZpbmQgdGhlIGlwICRpcCBpbiBuYXV0b2JvdFxuIik7Cj4gK8KgwqDCoMKg
wqDCoCByZXR1cm47Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgZXZhbCB7Cj4gK8KgwqDCoMKg
wqDCoCBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiREVMRVRFIiwgIi9pcGFtL2lwLWFk
ZHJlc3Nlcy8kaXBfaWQvIik7Cj4gK8KgwqDCoCB9Owo+ICvCoMKgwqAgaWYgKCRAKSB7Cj4gK8Kg
wqDCoMKgwqDCoCByZXR1cm4gaWYgJG5vZXJyOwo+ICvCoMKgwqDCoMKgwqAgZGllICJlcnJvciBk
ZWxldGluZyBpcCAkaXAgOiAkQFxuIjsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCByZXR1cm4g
MTsKPiArfQo+ICsKPiArc3ViIGVtcHR5X3N1Ym5ldCB7Cj4gK8KgwqDCoCBteSAoJGNsYXNzLCAk
Y29uZmlnLCAkc3VibmV0aWQsICRzdWJuZXQsICRzdWJuZXR1dWlkLCAkbm9lcnIpID0gQF87Cj4g
Kwo+ICvCoMKgwqAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+ICsKPiAr
wqDCoMKgIG15ICRyZXNwb25zZSA9IGV2YWwgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRv
Ym90X2FwaV9yZXF1ZXN0KAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAkY29uZmlnLAo+ICvCoMKg
wqDCoMKgwqDCoMKgwqDCoCAiR0VUIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9pcGFtL2lw
LWFkZHJlc3Nlcy8/bmFtZXNwYWNlPSRuYW1lc3BhY2UmcGFyZW50PSRzdWJuZXR1dWlkIgo+ICvC
oMKgwqDCoMKgwqAgKTsKPiArwqDCoMKgIH07Cj4gK8KgwqDCoCBpZiAoJEApIHsKPiArwqDCoMKg
wqDCoMKgIHJldHVybiBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKgwqDCoCBkaWUgImNvdWxkIG5vdCBm
aW5kIHRoZSBzdWJuZXQgJHN1Ym5ldCBpbiBuYXV0b2JvdDogJEBcbiI7Cj4gK8KgwqDCoCB9Cj4g
Kwo+ICvCoMKgwqAgZm9yIG15ICRpcCAoQHskcmVzcG9uc2UtPntyZXN1bHRzfX0pIHsKPiArwqDC
oMKgwqDCoMKgIGRlbF9pcCgkY2xhc3MsICRjb25maWcsIHVuZGVmLCB1bmRlZiwgJGlwLT57aG9z
dH0sICRub2Vycik7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgcmV0dXJuIDE7Cj4gK30KPiAr
Cj4gK3N1YiBzdWJuZXRfaXNfZGVsZXRhYmxlIHsKPiArwqDCoMKgIG15ICgkY29uZmlnLCAkc3Vi
bmV0aWQsICRzdWJuZXQsICRzdWJuZXR1dWlkLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAg
bXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+ICsKPiArwqDCoMKgIG15ICRy
ZXNwb25zZSA9IGV2YWwgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRvYm90X2FwaV9yZXF1
ZXN0KAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAkY29uZmlnLAo+ICvCoMKgwqDCoMKgwqDCoMKg
wqDCoCAiR0VUIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgIi9pcGFtL2lwLWFkZHJlc3Nlcy8/
bmFtZXNwYWNlPSRuYW1lc3BhY2UmcGFyZW50PSRzdWJuZXR1dWlkIgo+ICvCoMKgwqDCoMKgwqAg
KTsKPiArwqDCoMKgIH07Cj4gK8KgwqDCoCBpZiAoJEApIHsKPiArwqDCoMKgwqDCoMKgIHJldHVy
biBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKgwqDCoCBkaWUgImVycm9yIHF1ZXJ5aW5nIHByZWZpeCAk
c3VibmV0OiAkQFxuIjsKPiArwqDCoMKgIH0KPiArwqDCoMKgIG15ICRuX2lwcyA9IHNjYWxhciAk
cmVzcG9uc2UtPntyZXN1bHRzfS0+QCo7Cj4gKwo+ICvCoMKgwqAgIyBsZWFzdCBjb3N0bHkgY2hl
Y2sgb3BlcmF0aW9uIDFzdAo+ICvCoMKgwqAgcmV0dXJuIDEgaWYgKCRuX2lwcyA9PSAwKTsKPiAr
Cj4gK8KgwqDCoCBmb3IgbXkgJGlwICh2YWx1ZXMgJHJlc3BvbnNlLT57cmVzdWx0c30tPkAqKSB7
Cj4gK8KgwqDCoMKgwqDCoCBpZiAoIWlzX2lwX2dhdGV3YXkoJGNvbmZpZywgJGlwLT57aG9zdH0s
ICRub2VycikpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgIyBzb21lIHJlbWFpbmluZyBJUCBp
cyBub3QgYSBnYXRld2F5IHNvIHdlIGNhbid0IGRlbGV0ZSB0aGUgc3VibmV0Cj4gK8KgwqDCoMKg
wqDCoMKgwqDCoMKgIHJldHVybiAwOwo+ICvCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqAgfQo+ICvC
oMKgwqAgI2FsbCByZW1haW5pbmcgSVBzIGFyZSBnYXRld2F5cwo+ICvCoMKgwqAgcmV0dXJuIDE7
Cj4gK30KPiArCj4gK3N1YiB2ZXJpZnlfYXBpIHsKPiArwqDCoMKgIG15ICgkY2xhc3MsICRjb25m
aWcpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3Bh
Y2V9Owo+ICsKPiArwqDCoMKgICMgY2hlY2sgaWYgdGhlIG5hbWVzcGFjZSBhbmQgdGhlIHN0YXR1
cyAiQWN0aXZlIiBleGlzdAo+ICvCoMKgwqAgZXZhbCB7Cj4gK8KgwqDCoMKgwqDCoCBnZXRfbmFt
ZXNwYWNlX2lkKCRjb25maWcsICRuYW1lc3BhY2UpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8v
IGRpZSAibmFtZXNwYWNlICRuYW1lc3BhY2UgZG9lcyBub3QgZXhpc3QiOwo+ICvCoMKgwqDCoMKg
wqAgZ2V0X3N0YXR1c19pZCgkY29uZmlnLCBkZWZhdWx0X2lwX3N0YXR1cygpKQo+ICvCoMKgwqDC
oMKgwqDCoMKgwqDCoCAvLyBkaWUgInRoZSBzdGF0dXMgIiAuIGRlZmF1bHRfaXBfc3RhdHVzKCkg
LiAiIGRvZXMgbm90IGV4aXN0IjsKPiArwqDCoMKgIH07Cj4gK8KgwqDCoCBpZiAoJEApIHsKPiAr
wqDCoMKgwqDCoMKgIGRpZSAiY291bGQgbm90IHVzZSBuYXV0b2JvdCBhcGk6ICRAXG4iOwo+ICvC
oMKgwqAgfQo+ICt9Cj4gKwo+ICtzdWIgZ2V0X2lwc19mcm9tX21hYyB7Cj4gK8KgwqDCoCBteSAo
JGNsYXNzLCAkY29uZmlnLCAkbWFjLCAkem9uZSkgPSBAXzsKPiArCj4gK8KgwqDCoCBteSAkaXA0
ID0gdW5kZWY7Cj4gK8KgwqDCoCBteSAkaXA2ID0gdW5kZWY7Cj4gKwo+ICvCoMKgwqAgbXkgJGRh
dGEgPSBldmFsIHsKPiArwqDCoMKgwqDCoMKgIG5hdXRvYm90X2FwaV9yZXF1ZXN0KCRjb25maWcs
ICJHRVQiLCAiL2lwYW0vaXAtYWRkcmVzc2VzLz9xPSRtYWMiKTsKPiArwqDCoMKgIH07Cj4gK8Kg
wqDCoCBpZiAoJEApIHsKPiArwqDCoMKgwqDCoMKgIGRpZSAiY291bGQgbm90IHF1ZXJ5IGlwIGFk
ZHJlc3MgZW50cnkgZm9yIG1hYyAkbWFjOiAkQCI7Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAg
Zm9yIG15ICRpcCAoQHskZGF0YS0+e3Jlc3VsdHN9fSkgewo+ICvCoMKgwqDCoMKgwqAgaWYgKCRp
cC0+e2lwX3ZlcnNpb259ID09IDQgJiYgISRpcDQpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg
KCRpcDQsIHVuZGVmKSA9IHNwbGl0KC9cLy8sICRpcC0+e2FkZHJlc3N9KTsKPiArwqDCoMKgwqDC
oMKgIH0KPiArCj4gK8KgwqDCoMKgwqDCoCBpZiAoJGlwLT57aXBfdmVyc2lvbn0gPT0gNiAmJiAh
JGlwNikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAoJGlwNiwgdW5kZWYpID0gc3BsaXQoL1wv
LywgJGlwLT57YWRkcmVzc30pOwo+ICvCoMKgwqDCoMKgwqAgfQo+ICvCoMKgwqAgfQo+ICsKPiAr
wqDCoMKgIHJldHVybiAoJGlwNCwgJGlwNik7Cj4gK30KPiArCj4gK3N1YiBvbl91cGRhdGVfaG9v
ayB7Cj4gK8KgwqDCoCBteSAoJGNsYXNzLCAkY29uZmlnKSA9IEBfOwo+ICsKPiArwqDCoMKgIFBW
RTo6TmV0d29yazo6U0ROOjpJcGFtczo6TmF1dG9ib3RQbHVnaW46OnZlcmlmeV9hcGkoJGNsYXNz
LCAkY29uZmlnKTsKPiArfQo+ICsKPiArc3ViIGdldF9pcF9pZCB7Cj4gK8KgwqDCoCBteSAoJGNv
bmZpZywgJGlwLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkgJHJlc3VsdCA9IGV2YWwg
ewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRvYm90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJH
RVQiLCAiL2lwYW0vaXAtYWRkcmVzc2VzLz9hZGRyZXNzPSRpcCIpOwo+ICvCoMKgwqAgfTsKPiAr
wqDCoMKgIGlmICgkQCkgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIGlmICRub2VycjsKPiArwqDC
oMKgwqDCoMKgIGRpZSAiZXJyb3Igd2hpbGUgcXVlcnlpbmcgZm9yIGlwICRpcCBpZDogJEBcbiI7
Cj4gK8KgwqDCoCB9Cj4gKwo+ICvCoMKgwqAgbXkgJGRhdGEgPSBAeyRyZXN1bHQtPntyZXN1bHRz
fX1bMF07Cj4gK8KgwqDCoCByZXR1cm4gJGRhdGEtPntpZH07Cj4gK30KPiArCj4gK3N1YiBnZXRf
cHJlZml4X2lkIHsKPiArwqDCoMKgIG15ICgkY29uZmlnLCAkY2lkciwgJG5vZXJyKSA9IEBfOwo+
ICsKPiArwqDCoMKgIG15ICRyZXN1bHQgPSBldmFsIHsKPiArwqDCoMKgwqDCoMKgIHJldHVybiBu
YXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiR0VUIiwgIi9pcGFtL3ByZWZpeGVzLz9wcmVm
aXg9JGNpZHIiKTsKPiArwqDCoMKgIH07Cj4gK8KgwqDCoCBpZiAoJEApIHsKPiArwqDCoMKgwqDC
oMKgIHJldHVybiBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKgwqDCoCBkaWUgImVycm9yIHdoaWxlIHF1
ZXJ5aW5nIGZvciBjaWRyICRjaWRyIHByZWZpeCBpZDogJEBcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+
ICvCoMKgwqAgbXkgJGRhdGEgPSBAeyRyZXN1bHQtPntyZXN1bHRzfX1bMF07Cj4gK8KgwqDCoCBy
ZXR1cm4gJGRhdGEtPntpZH07Cj4gK30KPiArCj4gK3N1YiBnZXRfbmFtZXNwYWNlX2lkIHsKPiAr
wqDCoMKgIG15ICgkY29uZmlnLCAkbmFtZXNwYWNlLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKg
wqAgbXkgJHJlc3VsdCA9IGV2YWwgewo+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbmF1dG9ib3Rf
YXBpX3JlcXVlc3QoJGNvbmZpZywgIkdFVCIsICIvaXBhbS9uYW1lc3BhY2VzLz9uYW1lPSRuYW1l
c3BhY2UiKTsKPiArwqDCoMKgIH07Cj4gK8KgwqDCoCBpZiAoJEApIHsKPiArwqDCoMKgwqDCoMKg
IHJldHVybiBpZiAkbm9lcnI7Cj4gK8KgwqDCoMKgwqDCoCBkaWUgImVycm9yIHdoaWxlIHF1ZXJ5
aW5nIGZvciBuYW1lc3BhY2UgJG5hbWVzcGFjZSBpZDogJEBcbiI7Cj4gK8KgwqDCoCB9Cj4gKwo+
ICvCoMKgwqAgbXkgJGRhdGEgPSBAeyRyZXN1bHQtPntyZXN1bHRzfX1bMF07Cj4gK8KgwqDCoCBy
ZXR1cm4gJGRhdGEtPntpZH07Cj4gK30KPiArCj4gK3N1YiBnZXRfc3RhdHVzX2lkIHsKPiArwqDC
oMKgIG15ICgkY29uZmlnLCAkc3RhdHVzLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkg
JHJlc3VsdCA9IGV2YWwgewo+ICvCoMKgwqDCoMKgwqAgcmV0dXJuIG5hdXRvYm90X2FwaV9yZXF1
ZXN0KCRjb25maWcsICJHRVQiLCAiL2V4dHJhcy9zdGF0dXNlcy8/bmFtZT0kc3RhdHVzIik7Cj4g
K8KgwqDCoCB9Owo+ICvCoMKgwqAgaWYgKCRAKSB7Cj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gaWYg
JG5vZXJyOwo+ICvCoMKgwqDCoMKgwqAgZGllICJlcnJvciB3aGlsZSBxdWVyeWluZyBmb3Igc3Rh
dHVzICRzdGF0dXMgaWQ6ICRAXG4iOwo+ICvCoMKgwqAgfQo+ICsKPiArwqDCoMKgIG15ICRkYXRh
ID0gQHskcmVzdWx0LT57cmVzdWx0c319WzBdOwo+ICvCoMKgwqAgcmV0dXJuICRkYXRhLT57aWR9
Owo+ICt9Cj4gKwo+ICtzdWIgaXNfaXBfZ2F0ZXdheSB7Cj4gK8KgwqDCoCBteSAoJGNvbmZpZywg
JGlwLCAkbm9lcnIpID0gQF87Cj4gKwo+ICvCoMKgwqAgbXkgJHJlc3VsdCA9IGV2YWwgewo+ICvC
oMKgwqDCoMKgwqDCoCByZXR1cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkdFVCIs
ICIvaXBhbS9pcC1hZGRyZXNzZXMvP2FkZHJlc3M9JGlwIik7Cj4gK8KgwqDCoCB9Owo+ICvCoMKg
wqAgaWYgKCRAKSB7Cj4gK8KgwqDCoMKgwqDCoCByZXR1cm4gaWYgJG5vZXJyOwo+ICvCoMKgwqDC
oMKgwqAgZGllICJlcnJvciB3aGlsZSBjaGVja2luZyBpZiAkaXAgaXMgYSBnYXRld2F5OiAkQFxu
IjsKPiArwqDCoMKgIH0KPiArCj4gK8KgwqDCoCBteSAkZGF0YSA9IEB7JHJlc3VsdC0+e3Jlc3Vs
dHN9fVswXTsKPiArwqDCoMKgIHJldHVybiAkZGF0YS0+e2Rlc2NyaXB0aW9ufSBlcSAnZ2F0ZXdh
eSc7Cj4gK30KPiArCj4gKzE7Cj4gLS0KPiAyLjM5LjUKPgo+Cl9fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fCnB2ZS1kZXZlbCBtYWlsaW5nIGxpc3QKcHZlLWRl
dmVsQGxpc3RzLnByb3htb3guY29tCmh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t
YWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo=