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 D24A51FF15E for <inbox@lore.proxmox.com>; Tue, 3 Jun 2025 14:25:09 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AA1FE18965; Tue, 3 Jun 2025 14:25:28 +0200 (CEST) Message-ID: <ac2f5f47-de16-4406-9ae5-53a541f32faa@proxmox.com> Date: Tue, 3 Jun 2025 14:25:23 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird From: Hannes Duerr <h.duerr@proxmox.com> To: Stefan Hanreich <s.hanreich@proxmox.com>, Proxmox VE development discussion <pve-devel@lists.proxmox.com> References: <20250526121925.27575-1-h.duerr@proxmox.com> <06185ad1-384d-49ea-8c44-d726e19ccef7@proxmox.com> Content-Language: en-US In-Reply-To: <06185ad1-384d-49ea-8c44-d726e19ccef7@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.926 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 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 Subject: Re: [pve-devel] [PATCH pve-network v5 1/2] ipam: add Nautobot plugin 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> Ck9uIDUvMjgvMjUgMTE6MzIsIFN0ZWZhbiBIYW5yZWljaCB3cm90ZToKPiBUZXN0ZWQgdGhlIGZv bGxvd2luZyB0aGluZ3MgYW5kIHRoZXkgd29ya2VkOgo+Cj4gKiBDcmVhdGUgYSBuZXcgc2ltcGxl IHpvbmUgd2l0aCBOYXV0b2JvdCBJUEFNCj4gKiBDcmVhdGUgYSBWTmV0IHdpdGggYSBTdWJuZXQg KyBHVyAtPiBJUCBhbGxvY2F0ZWQKPiAqIENyZWF0ZSBhIFZNIG9uIHRoYXQgVk5ldCAtPiBJUCBh bGxvY2F0ZWQKPiAqIENyZWF0ZSBhIENUIG9uIHRoYXQgVk5ldCAtPiBJUCBhbGxvY2F0ZWQKPiAq IENoYW5nZSBuZXR3b3JrIGRldmljZSB0byBhbm90aGVyIGJyaWRnZSAtPiBJUCBkZWxldGVkCj4g KiBDaGFuZ2UgYmFjayB0byBJUEFNIFZOZXQgLT4gSVAgYWxsb2NhdGVkCj4gKiBMaXZlLU1pZ3Jh dGUgVk0KPiAqIENoZWNrIGlmIFZNIC8gQ1QgZ2V0IElQIHZpYSBESENQCj4gKiB0cnkgdG8gZGVs ZXRlIHN1Ym5ldCB3aXRoIGVudHJpZXMgLT4gZmFpbHMKPiAqIGRlbGV0ZSBuZXR3b3JrIGRldmlj ZXMgYW5kIHRyeSBhZ2FpbiAtPiBzdWNjZWVkcwo+ICogdXBkYXRlIGdhdGV3YXkgLT4gY2hhbmdl cyBpbiBJUEFNCj4gKiBhZGQgREhDUCByYW5nZSBhbmQgdGVzdCBDL1IvVS9EIG5ldHdvcmsgZGV2 aWNlIGFnYWluCj4KPgo+IEkgYWRkZWQgYSBzZWNvbmQgSVBBTSB3aXRoIGEgZGlmZmVyZW50IG5h bWVzcGFjZSwgYW5kIHRoaXMgaXMgd2hlcmUgc29tZQo+IHByb2JsZW1zIHN0YXJ0ZWQgdG8gb2Nj dXIuIFRoZSBQVkUgV2ViIFVJIHRocmV3IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvCj4gY3JlYXRl IHRoZSBzYW1lIHN1Ym5ldCwgYnV0IGluIGEgZGlmZmVyZW50IG5hbWVzcGFjZToKPgo+ICAgIGNy ZWF0ZSBzZG4gc3VibmV0IG9iamVjdCBmYWlsZWQ6IGNvdWxkIG5vdCBhZGQgdGhlIHN1Ym5ldAo+ ICAgIEhBU0goMHg1OGJjMmQwMzNlMTApIGJlY2F1c2UgaXQgYWxyZWFkeSBleGlzdHMgaW4gbmF1 dG9ib3QgKDUwMCkKPgo+IChhbHNvIG5vdGUgdGhhdCBoZXJlIHdlIG5lZWQgdG8gcHJpbnQgdGhl IGlkIGZpZWxkIG9mIHRoZSBoYXNoIGluIHRoZQo+IGVycm9yIG1lc3NhZ2UpCj4KPgo+IFNvbWUg YWRkaXRpb25hbCBlcnJvcnMgb2NjdXJyZWQgd2hlbiBJIG1hbnVhbGx5IGNyZWF0ZWQgdGhlIHN1 Ym5ldCBpbgo+IHRoZSBTRE4gY29uZmlndXJhdGlvbiwgYmVjYXVzZSBpdCBzZWVtcyBsaWtlIG1h bnkgZnVuY3Rpb25zIHRoYXQgZmV0Y2gKPiBJRHMgZG9uJ3Qgc2VlbSB0byBjb25zaWRlciB0aGUg bmFtZXNwYWNlIG9mIHRoZSBvYmplY3RzIHRoZXkncmUgZmV0Y2hpbmcKPiAoZS5nLiBnZXRfaXBf aWQgLyBnZXRfcHJlZml4X2lkIC8gLi4uKS4gVGhpcyBtZWFucyB0aGF0IElQIGFkZHJlc3NlcyBn ZXQKPiBjcmVhdGVkIGluIHRoZSB3cm9uZyBwcmVmaXgsIGJlY2F1c2UgdGhlIHBsdWdpbiBqdXN0 IHRha2VzIHRoZSBmaXJzdAo+IHByZWZpeCBmb3VuZCwgcmVnYXJkbGVzcyBvZiB0aGVpciBuYW1l c3BhY2UuIE1pZ2h0IG1ha2UgaXNzdWVzIGZvciB1c2Vycwo+IHRoYXQgdXNlIGEgc2VwYXJhdGVk IG5hbWVzcGFjZSBmb3IgUFZFLCBidXQgaGF2ZSB0aGUgc2FtZSBwcmVmaXgKPiBjb25maWd1cmVk IGluIG90aGVyIG5hbWVzcGFjZXMuIFNpbmNlIG1vc3QgbWV0aG9kcyB1c2UgdGhlIElEIHJldHVy bmVkCj4gYnkgdGhlIGhlbHBlciBmdW5jdGlvbnMsIHRoaXMgc2hvdWxkIGJlIGVhc2lseSBmaXhl ZCBieSBhZGp1c3RpbmcgdGhvc2UKPiBoZWxwZXJzLgo+Cj4gc29tZSBhZGRpdGlvbmFsIGNvbW1l bnRzIGlubGluZQpUaGFua3MgZm9yIHRlc3RpbmcgYW5kIHJldmlld2luZy4KSSBhbnN3ZXJlZCB0 byBzb21lIG9mIHlvdXIgY29tbWVudHMgaW5saW5lLgpJIHdpbGwgdHJ5IHRvIHVwc3RyZWFtIHRo ZSBvZmZzZXQgcGFyYW1ldGVyIGluIG5hdXRvYm90IGFuZCBwdWJsaXNoIGEKbmV3IHZlcnNpb24g d2l0aCBhbGwgdGhlIGNoYW5nZXMgYWZ0ZXJ3YXJkcy4KCj4KPgo+IE9uIDUvMjYvMjUgMTQ6MTks IEhhbm5lcyBEdWVyciB3cm90ZToKPj4gICBQRVJMNURJUj0ke0RFU1RESVJ9L3Vzci9zaGFyZS9w ZXJsNQo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9OZXR3b3JrL1NETi9JcGFtcy9OYXV0b2JvdFBs dWdpbi5wbSBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBhbXMvTmF1dG9ib3RQbHVnaW4ucG0KPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMC4uYTZlYjdmZgo+PiAtLS0gL2Rl di9udWxsCj4+ICsrKyBiL3NyYy9QVkUvTmV0d29yay9TRE4vSXBhbXMvTmF1dG9ib3RQbHVnaW4u cG0KPj4gQEAgLTAsMCArMSw1MTAgQEAKPj4gK3BhY2thZ2UgUFZFOjpOZXR3b3JrOjpTRE46Oklw YW1zOjpOYXV0b2JvdFBsdWdpbjsKPj4gKwo+PiArdXNlIHN0cmljdDsKPj4gK3VzZSB3YXJuaW5n czsKPj4gK3VzZSBQVkU6OklOb3RpZnk7Cj4+ICt1c2UgUFZFOjpDbHVzdGVyOwo+PiArdXNlIFBW RTo6VG9vbHM7Cj4+ICt1c2UgTmV0QWRkcjo6SVA7Cj4+ICt1c2UgTmV0OjpTdWJuZXQgcXcoc3Vi bmV0X21hdGNoZXIpOwo+PiArCj4+ICt1c2UgYmFzZSgnUFZFOjpOZXR3b3JrOjpTRE46OklwYW1z OjpQbHVnaW4nKTsKPj4gKwo+PiArc3ViIHR5cGUgewo+PiArICAgIHJldHVybiAnbmF1dG9ib3Qn Owo+PiArfQo+PiArCj4+ICtzdWIgcHJvcGVydGllcyB7Cj4+ICsgICAgcmV0dXJuIHsKPj4gKyAg ICAgICAgbmFtZXNwYWNlID0+IHsKPj4gKyAgICAgICAgICAgIHR5cGUgPT4gJ3N0cmluZycsCj4+ ICsgICAgICAgIH0sCj4+ICsgICAgfTsKPj4gK30KPiBtaXNzaW5nIGRlc2NyaXB0aW9uIGhlcmUu IGFmYWljdCB3ZSBzaG91bGQgYWxzbyBhZGQgZGVzY3JpcHRpb25zIGZvciB1cmwKPiAvIHRva2Vu PyBzaW5jZSB0aGV5J3JlIG5vdCBkZWZpbmVkIGluIHRoZSBiYXNlIHBsdWdpbi4KR29vZCBwb2lu dCB5ZXMgdGhleSdyZSBtaXNzaW5nLCB3aWxsIGFkZCB0aGVtLgpXaWxsIGFsc28gc2VuZCBwYXRj aGVzIGZvciB0aGUgb3RoZXIgcGx1Z2lucyBhcyB0aGV5J3JlIG1pc3NpbmcgdGhlcmUgYXMgCndl bGwuCj4+ICtzdWIgb3B0aW9ucyB7Cj4+ICsgICAgcmV0dXJuIHsKPj4gKyAgICAgICAgdXJsID0+ IHsgb3B0aW9uYWwgPT4gMCB9LAo+PiArICAgICAgICB0b2tlbiA9PiB7IG9wdGlvbmFsID0+IDAg fSwKPj4gKyAgICAgICAgbmFtZXNwYWNlID0+IHsgb3B0aW9uYWwgPT4gMCB9LAo+PiArICAgICAg ICBmaW5nZXJwcmludCA9PiB7IG9wdGlvbmFsID0+IDEgfSwKPj4gKyAgICB9Owo+PiArfQo+PiAr Cj4+ICtzdWIgZGVmYXVsdF9pcF9zdGF0dXMgewo+PiArICAgIHJldHVybiAnQWN0aXZlJzsKPj4g K30KPiBjb3VsZCBtYXliZSBqdXN0IGJlIGEgY29uc3RhbnQgbXkgJERFRkFVTFRfSVBfU1RBVFVT OyA/Ckkgc3dpdGNoZWQgdG8gZGVmYXVsdF9pcF9zdGF0dXMgKCkge30gYXMgdGhpcyBnaXZlcyB0 aGUgcGVybAppbnRlcnByZXRlciB0aGUgb3B0aW9uIHRvIGlubGluZSB0aGUgZnVudGlvbiBbMF0u CkFub3RoZXIgb3B0aW9uIHdvdWxkIGJlIHVzaW5nICd1c2UgY29udGFudCBERUZBVUxUX0lQX1NU QVRVUyA9IkFjdGl2ZSInCndoaWNoIGlzIGNvbXBhcmFibGUgdG8gdXNpbmcgdGhlIGZ1bmN0aW9u IEFGQUlVLgoKWzBdIApodHRwczovL3d3dy5vcmVpbGx5LmNvbS9saWJyYXJ5L3ZpZXcvcHJvZ3Jh bW1pbmctcGVybC00dGgvOTc4MTQ0OTMyMTQ1MS9jaDA3czA0czAxLmh0bWwKPj4gKwo+PiArc3Vi IG5hdXRvYm90X2FwaV9yZXF1ZXN0IHsKPj4gKyAgICBteSAoJGNvbmZpZywgJG1ldGhvZCwgJHBh dGgsICRwYXJhbXMpID0gQF87Cj4+ICsKPj4gKyAgICByZXR1cm4gUFZFOjpOZXR3b3JrOjpTRE46 OmFwaV9yZXF1ZXN0KAo+PiArICAgICAgICAkbWV0aG9kLAo+PiArICAgICAgICAiJGNvbmZpZy0+ e3VybH0ke3BhdGh9IiwKPj4gKyAgICAgICAgWwo+PiArICAgICAgICAgICAgJ0NvbnRlbnQtVHlw ZScgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLTgnLAo+PiArICAgICAgICAgICAg J0F1dGhvcml6YXRpb24nID0+ICJ0b2tlbiAkY29uZmlnLT57dG9rZW59IiwKPj4gKyAgICAgICAg ICAgICdBY2NlcHQnID0+ICJhcHBsaWNhdGlvbi9qc29uIiwKPj4gKyAgICAgICAgXSwKPj4gKyAg ICAgICAgJHBhcmFtcywKPj4gKyAgICAgICAgJGNvbmZpZy0+e2ZpbmdlcnByaW50fSwKPj4gKyAg ICApOwo+PiArfQo+PiArCj4+ICtzdWIgYWRkX3N1Ym5ldCB7Cj4+ICsgICAgbXkgKCRjbGFzcywg JGNvbmZpZywgdW5kZWYsICRzdWJuZXQsICRub2VycikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRj aWRyID0gJHN1Ym5ldC0+e2NpZHJ9Owo+PiArICAgIG15ICRuYW1lc3BhY2UgPSAkY29uZmlnLT57 bmFtZXNwYWNlfTsKPj4gKwo+PiArICAgIG15ICRpbnRlcm5hbGlkID0gZ2V0X3ByZWZpeF9pZCgk Y29uZmlnLCAkY2lkciwgJG5vZXJyKTsKPj4gKyAgICBpZiAoJGludGVybmFsaWQpIHsKPj4gKyAg ICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgYWRkIHRo ZSBzdWJuZXQgJHN1Ym5ldCBiZWNhdXNlIGl0IGFscmVhZHkgZXhpc3RzIGluIG5hdXRvYm90XG4i Owo+IHNob3VsZCB1c2UgdGhlIENJRFIgZmllbGQgb2YgdGhlIHN1Ym5ldCwgc2luY2UgJHN1Ym5l dCBpcyBhIGhhc2gKYWdyZWUKPiArCj4gK3N1YiBhZGRfcmFuZ2VfbmV4dF9mcmVlaXAgewo+ICsg ICAgbXkgKCRjbGFzcywgJGNvbmZpZywgJHN1Ym5ldCwgJHJhbmdlLCAkZGF0YSwgJG5vZXJyKSA9 IEBfOwo+ICsKPiArICAgIG15ICRjaWRyID0gTmV0QWRkcjo6SVAtPm5ldygkc3VibmV0LT57Y2lk cn0pOwo+ICsgICAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+ICsKPiAr ICAgICMgTmF1dG9ib3QgZG9lcyBub3Qgc3VwcG9ydCBJUCByYW5nZXMsIG9ubHkgcHJlZml4ZXMu Cj4gKyAgICAjIFRoZXJlZm9yZSB3ZSBkaXZpZGUgdGhlIHJhbmdlIGludG8gc21hbGxlciBwb29s IHByZWZpeGVzLAo+ICsgICAgIyBlYWNoIGNvbnRhaW5pbmcgMjU2IGFkZHJlc3NlcywgYW5kIHNl YXJjaCB0aGVtIGZvciBhdmFpbGFibGUgSVBzCj4gKyAgICBteSAkcHJlZml4X3NpemUgPSAkY2lk ci0+dmVyc2lvbiA9PSA0ID8gMjQgOiAxMjA7Cj4gbWF5YmUgd2UgY291bGQgZGVmYXVsdCB0byB0 aGUgcHJlZml4IHNpemUgb2YgdGhlIHN1Ym5ldCBpZiBpdCBpcyBzbWFsbGVyCj4gdGhhbiAyNCAv IDEyMD8gTm90IHNvIGxpa2VseSBmb3IgSVB2NiwgYnV0IGZvciBJUHY0IGl0J2QgbWFrZSBzZW5z ZT8KPgo+PiArICAgIG15ICRpbmNyZW1lbnQgPSAyNTY7Cj4+ICsgICAgbXkgJGZvdW5kX2lwID0g dW5kZWY7Cj4+ICsKPj4gKyAgICBteSAkc3RhcnRfcmFuZ2UgPSBOZXRBZGRyOjpJUC0+bmV3KCRy YW5nZS0+eydzdGFydC1hZGRyZXNzJ30sICRwcmVmaXhfc2l6ZSk7Cj4+ICsgICAgbXkgJGVuZF9y YW5nZSA9IE5ldEFkZHI6OklQLT5uZXcoJHJhbmdlLT57J2VuZC1hZGRyZXNzJ30sICRwcmVmaXhf c2l6ZSk7Cj4+ICsgICAgbXkgJG1hdGNoZXIgPSBzdWJuZXRfbWF0Y2hlcigkZW5kX3JhbmdlLT5j aWRyKTsKPj4gKyAgICBteSAkY3VycmVudF9pcCA9ICRzdGFydF9yYW5nZTsKPj4gKwo+PiArICAg IHdoaWxlICgxKSB7Cj4+ICsgICAgICAgIG15ICRjdXJyZW50X2NpZHIgPSAkY3VycmVudF9pcC0+ YWRkciAuICIvJHByZWZpeF9zaXplIjsKPj4gKwo+PiArICAgICAgICBteSAkcGFyYW1zID0gewo+ PiArICAgICAgICAgICAgcHJlZml4ID0+ICRjdXJyZW50X2NpZHIsCj4+ICsgICAgICAgICAgICBu YW1lc3BhY2UgPT4gJG5hbWVzcGFjZSwKPj4gKyAgICAgICAgICAgIHN0YXR1cyA9PiBkZWZhdWx0 X2lwX3N0YXR1cygpLAo+PiArICAgICAgICAgICAgdHlwZSA9PiAicG9vbCIsCj4+ICsgICAgICAg IH07Cj4+ICsKPj4gKyAgICAgICAgbXkgJHByZWZpeF9pZCA9IGdldF9wcmVmaXhfaWQoJGNvbmZp ZywgJGN1cnJlbnRfY2lkciwgJG5vZXJyKTsKPj4gKyAgICAgICAgaWYgKCRwcmVmaXhfaWQpIHsK Pj4gKyAgICAgICAgICAgICMgc2VhcmNoIHRoZSBleGlzdGluZyBwcmVmaXggZm9yIHZhbGlkIGlw Cj4+ICsgICAgICAgICAgICAkZm91bmRfaXAgPQo+PiArICAgICAgICAgICAgICAgIGZpbmRfaXBf aW5fcHJlZml4KCRjb25maWcsICRwcmVmaXhfaWQsICRpbmNyZW1lbnQsICRzdGFydF9yYW5nZSwg JGVuZF9yYW5nZSk7Cj4+ICsgICAgICAgIH0gZWxzZSB7Cj4+ICsgICAgICAgICAgICAjIGNyZWF0 ZSB0ZW1wb3JhcnkgcG9vbCBwcmVmaXgKPj4gKyAgICAgICAgICAgIG15ICR0ZW1wX3ByZWZpeCA9 Cj4+ICsgICAgICAgICAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgk Y29uZmlnLCAiUE9TVCIsICIvaXBhbS9wcmVmaXhlcy8iLCAkcGFyYW1zKTsgfTsKPiBzaG91bGQg cHJvYmFibHkgZG8gc29tZSBlcnJvciBoYW5kbGluZz8KPgo+PiArCj4+ICsgICAgICAgICAgICBt eSAkdGVtcF9wcmVmaXhfaWQgPSAkdGVtcF9wcmVmaXgtPntpZH07Cj4+ICsKPj4gKyAgICAgICAg ICAgICMgc2VhcmNoIHRlbXBvcmFybHkgY3JlYXRlZCBwcmVmaXgKPj4gKyAgICAgICAgICAgICRm b3VuZF9pcCA9Cj4+ICsgICAgICAgICAgICAgICAgZmluZF9pcF9pbl9wcmVmaXgoJGNvbmZpZywg JHRlbXBfcHJlZml4X2lkLCAkaW5jcmVtZW50LCAkc3RhcnRfcmFuZ2UsICRlbmRfcmFuZ2UpOwo+ PiArCj4+ICsgICAgICAgICAgICAjIERlbGV0ZSB0ZW1wb3JhcnkgcHJlZml4IHBvb2wKPj4gKyAg ICAgICAgICAgIGV2YWwgeyBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiREVMRVRFIiwg Ii9pcGFtL3ByZWZpeGVzLyR0ZW1wX3ByZWZpeF9pZC8iKTsgfTsKPiBoZXJlIGFzIHdlbGwKPgo+ PiArICAgICAgICB9Cj4+ICsKPj4gKyAgICAgICAgbGFzdCBpZiAkZm91bmRfaXA7Cj4+ICsKPj4g KyAgICAgICAgIyB3ZSBzZWFyY2hlZCB0aGUgbGFzdCBwb29sIHByZWZpeAo+PiArICAgICAgICBs YXN0IGlmICRtYXRjaGVyLT4oJGN1cnJlbnRfaXAtPmFkZHIpOwo+PiArCj4+ICsgICAgICAgICRj dXJyZW50X2lwID0gJGN1cnJlbnRfaXAtPnBsdXMoJGluY3JlbWVudCk7Cj4+ICsgICAgfQo+PiAr Cj4+ICsgICAgaWYgKCEkZm91bmRfaXApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsK Pj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgYWxsb2NhdGUgaXAgaW4gdGhlIHJhbmdlICIKPj4g KyAgICAgICAgICAgIC4gJHN0YXJ0X3JhbmdlLT5hZGRyIC4gIiAtICIKPj4gKyAgICAgICAgICAg IC4gJGVuZF9yYW5nZS0+YWRkcgo+PiArICAgICAgICAgICAgLiAiOiAkQFxuIjsKPj4gKyAgICB9 Cj4+ICsKPj4gKyAgICAkY2xhc3MtPmFkZF9pcCgKPj4gKyAgICAgICAgJGNvbmZpZywKPj4gKyAg ICAgICAgdW5kZWYsCj4+ICsgICAgICAgICRzdWJuZXQsCj4+ICsgICAgICAgICRmb3VuZF9pcCwK Pj4gKyAgICAgICAgJGRhdGEtPntob3N0bmFtZX0sCj4+ICsgICAgICAgICRkYXRhLT57bWFjfSwK Pj4gKyAgICAgICAgdW5kZWYsCj4+ICsgICAgICAgIDAsCj4+ICsgICAgICAgICRub2VyciwKPj4g KyAgICApOwo+PiArCj4+ICsgICAgcmV0dXJuICRmb3VuZF9pcDsKPj4gK30KPiB3ZSBtaWdodCBy ZWFsbHkgd2FubmEgdXBzdHJlYW0gYSBsaXR0bGUgcGF0Y2ggdGhhdCBhZGRzIGF0IGxlYXN0IG9m ZnNldAo+IHN1cHBvcnQsIG9yIGRlZmluZXMgYSBzdGFydCAvIGVuZCByYW5nZS4gU2VlbXMgbGlr ZSB0aGlzIHNob3VsZG4ndCBiZQo+IHRvbyBoYXJkIHdpdGggdGhlIGN1cnJlbnQgaW1wbGVtZW50 YXRpb24gaW4gbmF1dG9ib3QuIFRoYXQgd291bGQKPiBzaW1wbGlmeSB0aGlzIG1ldGhvZCBieSBh IGxvdC4gV2UgY291bGQgYWxzbyBqdXN0IGRlbnkgdXNpbmcgREhDUCByYW5nZXMKPiB3aXRoIHRo ZSBOYXV0b2JvdCBwbHVnaW4gZm9yIG5vdy4uLgp5ZXMgaSB0aG91Z2h0IGl0IHdvdWxkIGJlIG5p Y2VyIGlmIHdlIGRpZG4ndCBoYXZlIHRvIGRlcGVuZCBvbiBhCnNwZWNpYWwgbmF1dG9ib3QgdmVy c2lvbiwgYnV0IGkgYWdyZWUgd2l0aCB5b3UgdGhhdCB0aGUgY3VycmVudAppbXBsZW1lbnRhdGlv biBpcyBkZWZpbml0ZWx5IG1vcmUgY29tcGxleCBhbmQgdGhlcmVmb3JlIG1vcmUKZXJyb3ItcHJv bmUgdGhhbiBzaW1wbHkgaGF2aW5nIGFuIG9mZnNldCBwYXJhbWV0ZXIuCkkgd2lsbCBzZWUgaWYg SSBjYW4gZ2V0IHRoZSBvZmZzZXQgcGFyYW1ldGVyIGltcGxlbWVudGVkIGluIG5hdXRvYm90CnVw c3RyZWFtLgoKPiBzZWUKPiBodHRwczovL2dpdGh1Yi5jb20vbmF1dG9ib3QvbmF1dG9ib3QvYmxv Yi9kZXZlbG9wL25hdXRvYm90L2lwYW0vYXBpL3ZpZXdzLnB5I0wzMDkKPgo+PiArc3ViIHVwZGF0 ZV9pcCB7Cj4+ICsgICAgbXkgKCRjbGFzcywgJGNvbmZpZywgJHN1Ym5ldGlkLCAkc3VibmV0LCAk aXAsICRob3N0bmFtZSwgJG1hYywgdW5kZWYsICRpc19nYXRld2F5LCAkbm9lcnIpID0gQF87Cj4+ ICsKPj4gKyAgICBteSAkbWFzayA9ICRzdWJuZXQtPnttYXNrfTsKPj4gKyAgICBteSAkbmFtZXNw YWNlID0gJGNvbmZpZy0+e25hbWVzcGFjZX07Cj4+ICsKPj4gKyAgICBteSAkZGVzY3JpcHRpb24g PSB1bmRlZjsKPj4gKyAgICBpZiAoJGlzX2dhdGV3YXkpIHsKPj4gKyAgICAgICAgJGRlc2NyaXB0 aW9uID0gJ2dhdGV3YXknOwo+PiArICAgIH0gZWxzaWYgKCRtYWMpIHsKPj4gKyAgICAgICAgJGRl c2NyaXB0aW9uID0gIm1hYzokbWFjIjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBteSAkcGFyYW1z ID0gewo+PiArICAgICAgICBhZGRyZXNzID0+ICIkaXAvJG1hc2siLAo+PiArICAgICAgICB0eXBl ID0+ICJkaGNwIiwKPj4gKyAgICAgICAgZGVzY3JpcHRpb24gPT4gJGRlc2NyaXB0aW9uLAo+PiAr ICAgICAgICBuYW1lc3BhY2UgPT4gJG5hbWVzcGFjZSwKPj4gKyAgICAgICAgc3RhdHVzID0+IGRl ZmF1bHRfaXBfc3RhdHVzKCksCj4+ICsgICAgfTsKPj4gKwo+PiArICAgIG15ICRpcF9pZCA9IGdl dF9pcF9pZCgkY29uZmlnLCAkaXAsICRub2Vycik7Cj4+ICsgICAgaWYgKCFkZWZpbmVkKCRpcF9p ZCkpIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJjb3Vs ZCBub3QgZmluZCB0aGUgaXAgJGlwIGluIG5hdXRvYm90XG4iOwo+PiArICAgIH0KPj4gKwo+PiAr ICAgIGV2YWwgeyBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAiUEFUQ0giLCAiL2lwYW0v aXAtYWRkcmVzc2VzLyRpcF9pZC8iLCAkcGFyYW1zKTsgfTsKPj4gKyAgICBpZiAoJEApIHsKPj4g KyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJvciB1cGRhdGlu ZyBpcCAkaXA6ICRAIjsKPj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK3N1YiBkZWxfaXAgewo+PiAr ICAgIG15ICgkY2xhc3MsICRjb25maWcsIHVuZGVmLCB1bmRlZiwgJGlwLCAkbm9lcnIpID0gQF87 Cj4+ICsKPj4gKyAgICByZXR1cm4gaWYgISRpcDsKPj4gKwo+PiArICAgIG15ICRpcF9pZCA9IGdl dF9pcF9pZCgkY29uZmlnLCAkaXAsICRub2Vycik7Cj4+ICsgICAgaWYgKCFkZWZpbmVkKCRpcF9p ZCkpIHsKPj4gKyAgICAgICAgd2FybigiY291bGQgbm90IGZpbmQgdGhlIGlwICRpcCBpbiBuYXV0 b2JvdFxuIik7Cj4+ICsgICAgICAgIHJldHVybjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBldmFs IHsgbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkRFTEVURSIsICIvaXBhbS9pcC1hZGRy ZXNzZXMvJGlwX2lkLyIpOyB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICByZXR1cm4g aWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImVycm9yIGRlbGV0aW5nIGlwICRpcCA6ICRAXG4i Owo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdWIgZW1w dHlfc3VibmV0IHsKPiBzb3VuZHMgbW9yZSBsaWtlIGEgY2hlY2sgaWYgdGhlIHN1Ym5ldCBpcyBl bXB0eSwgbWF5YmUKPiBkZWxldGVfaXBzX2Zyb21fc3VibmV0IG9yIHNvbWV0aGluZyBpcyBiZXR0 ZXI/CkFncmVlCj4KPj4gKyAgICBteSAoJGNsYXNzLCAkY29uZmlnLCAkc3VibmV0aWQsICRzdWJu ZXQsICRzdWJuZXR1dWlkLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkbmFtZXNwYWNl ID0gJGNvbmZpZy0+e25hbWVzcGFjZX07Cj4+ICsKPj4gKyAgICBteSAkcmVzcG9uc2UgPSBldmFs IHsKPj4gKyAgICAgICAgcmV0dXJuIG5hdXRvYm90X2FwaV9yZXF1ZXN0KAo+PiArICAgICAgICAg ICAgJGNvbmZpZywKPj4gKyAgICAgICAgICAgICJHRVQiLAo+PiArICAgICAgICAgICAgIi9pcGFt L2lwLWFkZHJlc3Nlcy8/bmFtZXNwYWNlPSRuYW1lc3BhY2UmcGFyZW50PSRzdWJuZXR1dWlkIiwK Pj4gKyAgICAgICAgKTsKPj4gKyAgICB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICBy ZXR1cm4gaWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImNvdWxkIG5vdCBmaW5kIHRoZSBzdWJu ZXQgJHN1Ym5ldCBpbiBuYXV0b2JvdDogJEBcbiI7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgZm9y IG15ICRpcCAoQHsgJHJlc3BvbnNlLT57cmVzdWx0c30gfSkgewo+PiArICAgICAgICBkZWxfaXAo JGNsYXNzLCAkY29uZmlnLCB1bmRlZiwgdW5kZWYsICRpcC0+e2hvc3R9LCAkbm9lcnIpOwo+PiAr ICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAxOwo+PiArfQo+PiArCj4+ICtzdWIgc3VibmV0X2lz X2RlbGV0YWJsZSB7Cj4+ICsgICAgbXkgKCRjb25maWcsICRzdWJuZXRpZCwgJHN1Ym5ldCwgJHN1 Ym5ldHV1aWQsICRub2VycikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRuYW1lc3BhY2UgPSAkY29u ZmlnLT57bmFtZXNwYWNlfTsKPj4gKwo+PiArICAgIG15ICRyZXNwb25zZSA9IGV2YWwgewo+PiAr ICAgICAgICByZXR1cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoCj4+ICsgICAgICAgICAgICAkY29u ZmlnLAo+PiArICAgICAgICAgICAgIkdFVCIsCj4+ICsgICAgICAgICAgICAiL2lwYW0vaXAtYWRk cmVzc2VzLz9uYW1lc3BhY2U9JG5hbWVzcGFjZSZwYXJlbnQ9JHN1Ym5ldHV1aWQiLAo+PiArICAg ICAgICApOwo+PiArICAgIH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAgIHJldHVybiBp ZiAkbm9lcnI7Cj4+ICsgICAgICAgIGRpZSAiZXJyb3IgcXVlcnlpbmcgcHJlZml4ICRzdWJuZXQ6 ICRAXG4iOwo+PiArICAgIH0KPj4gKyAgICBteSAkbl9pcHMgPSBzY2FsYXIgJHJlc3BvbnNlLT57 cmVzdWx0c30tPkAqOwo+PiArCj4+ICsgICAgIyBsZWFzdCBjb3N0bHkgY2hlY2sgb3BlcmF0aW9u IDFzdAo+PiArICAgIHJldHVybiAxIGlmICgkbl9pcHMgPT0gMCk7Cj4+ICsKPj4gKyAgICBmb3Ig bXkgJGlwICh2YWx1ZXMgJHJlc3BvbnNlLT57cmVzdWx0c30tPkAqKSB7Cj4+ICsgICAgICAgIGlm ICghaXNfaXBfZ2F0ZXdheSgkY29uZmlnLCAkaXAtPntob3N0fSwgJG5vZXJyKSkgewo+IE1heWJl IHdlIGNvdWxkIHNpbXBseSBjaGVjayB0aGlzIGJ5IGNvbXBhcmluZyB3aXRoIHRoZSBzdWJuZXQK PiBjb25maWd1cmF0aW9uIGluc3RlYWQgb2YgcXVlcnlpbmcgbmF1dG9ib3QgZm9yIGV2ZXJ5IElQ Pwp5ZXMgZ29vZCBwb2ludC4KPgo+PiArICAgICAgICAgICAgIyBzb21lIHJlbWFpbmluZyBJUCBp cyBub3QgYSBnYXRld2F5IHNvIHdlIGNhbid0IGRlbGV0ZSB0aGUgc3VibmV0Cj4+ICsgICAgICAg ICAgICByZXR1cm4gMDsKPj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKyAgICAjYWxsIHJlbWFp bmluZyBJUHMgYXJlIGdhdGV3YXlzCj4+ICsgICAgcmV0dXJuIDE7Cj4+ICt9Cj4+ICsKPj4gK3N1 YiB2ZXJpZnlfYXBpIHsKPj4gKyAgICBteSAoJGNsYXNzLCAkY29uZmlnKSA9IEBfOwo+PiArCj4+ ICsgICAgbXkgJG5hbWVzcGFjZSA9ICRjb25maWctPntuYW1lc3BhY2V9Owo+PiArCj4+ICsgICAg IyBjaGVjayBpZiB0aGUgbmFtZXNwYWNlIGFuZCB0aGUgc3RhdHVzICJBY3RpdmUiIGV4aXN0Cj4+ ICsgICAgZXZhbCB7Cj4+ICsgICAgICAgIGdldF9uYW1lc3BhY2VfaWQoJGNvbmZpZywgJG5hbWVz cGFjZSkgLy8gZGllICJuYW1lc3BhY2UgJG5hbWVzcGFjZSBkb2VzIG5vdCBleGlzdCI7Cj4+ICsg ICAgICAgIGdldF9zdGF0dXNfaWQoJGNvbmZpZywgZGVmYXVsdF9pcF9zdGF0dXMoKSkKPj4gKyAg ICAgICAgICAgIC8vIGRpZSAidGhlIHN0YXR1cyAiIC4gZGVmYXVsdF9pcF9zdGF0dXMoKSAuICIg ZG9lcyBub3QgZXhpc3QiOwo+PiArICAgIH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAg IGRpZSAiY291bGQgbm90IHVzZSBuYXV0b2JvdCBhcGk6ICRAXG4iOwo+PiArICAgIH0KPj4gK30K Pj4gKwo+PiArc3ViIGdldF9pcHNfZnJvbV9tYWMgewo+PiArICAgIG15ICgkY2xhc3MsICRjb25m aWcsICRtYWMsICR6b25lKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJGlwNCA9IHVuZGVmOwo+PiAr ICAgIG15ICRpcDYgPSB1bmRlZjsKPj4gKwo+PiArICAgIG15ICRkYXRhID0gZXZhbCB7IG5hdXRv Ym90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2lwYW0vaXAtYWRkcmVzc2VzLz9xPSRt YWMiKTsgfTsKPj4gKyAgICBpZiAoJEApIHsKPj4gKyAgICAgICAgZGllICJjb3VsZCBub3QgcXVl cnkgaXAgYWRkcmVzcyBlbnRyeSBmb3IgbWFjICRtYWM6ICRAIjsKPj4gKyAgICB9Cj4+ICsKPj4g KyAgICBmb3IgbXkgJGlwIChAeyAkZGF0YS0+e3Jlc3VsdHN9IH0pIHsKPj4gKyAgICAgICAgaWYg KCRpcC0+e2lwX3ZlcnNpb259ID09IDQgJiYgISRpcDQpIHsKPj4gKyAgICAgICAgICAgICgkaXA0 LCB1bmRlZikgPSBzcGxpdCgvXC8vLCAkaXAtPnthZGRyZXNzfSk7Cj4+ICsgICAgICAgIH0KPj4g Kwo+PiArICAgICAgICBpZiAoJGlwLT57aXBfdmVyc2lvbn0gPT0gNiAmJiAhJGlwNikgewo+PiAr ICAgICAgICAgICAgKCRpcDYsIHVuZGVmKSA9IHNwbGl0KC9cLy8sICRpcC0+e2FkZHJlc3N9KTsK Pj4gKyAgICAgICAgfQo+PiArICAgIH0KPj4gKwo+PiArICAgIHJldHVybiAoJGlwNCwgJGlwNik7 Cj4+ICt9Cj4+ICsKPj4gK3N1YiBvbl91cGRhdGVfaG9vayB7Cj4+ICsgICAgbXkgKCRjbGFzcywg JGNvbmZpZykgPSBAXzsKPj4gKwo+PiArICAgIFBWRTo6TmV0d29yazo6U0ROOjpJcGFtczo6TmF1 dG9ib3RQbHVnaW46OnZlcmlmeV9hcGkoJGNsYXNzLCAkY29uZmlnKTsKPj4gK30KPj4gKwo+PiAr c3ViIGdldF9pcF9pZCB7Cj4gZmlsdGVyIGZvciBuYW1lc3BhY2UgYmVsb3cKZ29vZCBjYXRjaCwg YWRkZWQgaXQgdG8gdGhlIG90aGVyIHNwb3RzIHlvdSBtZW50aW9uZWQgYW5kIGFsc2/CoCAKZ2V0 X2lwc19mcm9tX21hYyBhcyBpdCB3YXMgbWlzc2luZyB0aGVyZSBhcyB3ZWxsLgoKPj4gKyAgICBt eSAoJGNvbmZpZywgJGlwLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcmVzdWx0ID0K Pj4gKyAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmlnLCAi R0VUIiwgIi9pcGFtL2lwLWFkZHJlc3Nlcy8/YWRkcmVzcz0kaXAiKTsgfTsKPj4gKyAgICBpZiAo JEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJv ciB3aGlsZSBxdWVyeWluZyBmb3IgaXAgJGlwIGlkOiAkQFxuIjsKPj4gKyAgICB9Cj4+ICsKPj4g KyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPntyZXN1bHRzfSB9WzBdOwo+PiArICAgIHJldHVy biAkZGF0YS0+e2lkfTsKPj4gK30KPj4gKwo+PiArc3ViIGdldF9wcmVmaXhfaWQgewo+IGZpbHRl ciBmb3IgbmFtZXNwYWNlIGJlbG93Cj4KPj4gKyAgICBteSAoJGNvbmZpZywgJGNpZHIsICRub2Vy cikgPSBAXzsKPj4gKwo+PiArICAgIG15ICRyZXN1bHQgPQo+PiArICAgICAgICBldmFsIHsgcmV0 dXJuIG5hdXRvYm90X2FwaV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2lwYW0vcHJlZml4ZXMv P3ByZWZpeD0kY2lkciIpOyB9Owo+PiArICAgIGlmICgkQCkgewo+PiArICAgICAgICByZXR1cm4g aWYgJG5vZXJyOwo+PiArICAgICAgICBkaWUgImVycm9yIHdoaWxlIHF1ZXJ5aW5nIGZvciBjaWRy ICRjaWRyIHByZWZpeCBpZDogJEBcbiI7Cj4+ICsgICAgfQo+PiArCj4+ICsgICAgbXkgJGRhdGEg PSBAeyAkcmVzdWx0LT57cmVzdWx0c30gfVswXTsKPj4gKyAgICByZXR1cm4gJGRhdGEtPntpZH07 Cj4+ICt9Cj4+ICsKPj4gK3N1YiBnZXRfbmFtZXNwYWNlX2lkIHsKPj4gKyAgICBteSAoJGNvbmZp ZywgJG5hbWVzcGFjZSwgJG5vZXJyKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJHJlc3VsdCA9Cj4+ ICsgICAgICAgIGV2YWwgeyByZXR1cm4gbmF1dG9ib3RfYXBpX3JlcXVlc3QoJGNvbmZpZywgIkdF VCIsICIvaXBhbS9uYW1lc3BhY2VzLz9uYW1lPSRuYW1lc3BhY2UiKTsgfTsKPj4gKyAgICBpZiAo JEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJlcnJv ciB3aGlsZSBxdWVyeWluZyBmb3IgbmFtZXNwYWNlICRuYW1lc3BhY2UgaWQ6ICRAXG4iOwo+PiAr ICAgIH0KPj4gKwo+PiArICAgIG15ICRkYXRhID0gQHsgJHJlc3VsdC0+e3Jlc3VsdHN9IH1bMF07 Cj4+ICsgICAgcmV0dXJuICRkYXRhLT57aWR9Owo+PiArfQo+PiArCj4+ICtzdWIgZ2V0X3N0YXR1 c19pZCB7Cj4+ICsgICAgbXkgKCRjb25maWcsICRzdGF0dXMsICRub2VycikgPSBAXzsKPj4gKwo+ PiArICAgIG15ICRyZXN1bHQgPQo+PiArICAgICAgICBldmFsIHsgcmV0dXJuIG5hdXRvYm90X2Fw aV9yZXF1ZXN0KCRjb25maWcsICJHRVQiLCAiL2V4dHJhcy9zdGF0dXNlcy8/bmFtZT0kc3RhdHVz Iik7IH07Cj4+ICsgICAgaWYgKCRAKSB7Cj4+ICsgICAgICAgIHJldHVybiBpZiAkbm9lcnI7Cj4+ ICsgICAgICAgIGRpZSAiZXJyb3Igd2hpbGUgcXVlcnlpbmcgZm9yIHN0YXR1cyAkc3RhdHVzIGlk OiAkQFxuIjsKPj4gKyAgICB9Cj4+ICsKPj4gKyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPnty ZXN1bHRzfSB9WzBdOwo+PiArICAgIHJldHVybiAkZGF0YS0+e2lkfTsKPj4gK30KPj4gKwo+PiAr c3ViIGlzX2lwX2dhdGV3YXkgewo+IGZpbHRlciBmb3IgbmFtZXNwYWNlIGJlbG93Cj4KPj4gKyAg ICBteSAoJGNvbmZpZywgJGlwLCAkbm9lcnIpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkcmVzdWx0 ID0KPj4gKyAgICAgICAgZXZhbCB7IHJldHVybiBuYXV0b2JvdF9hcGlfcmVxdWVzdCgkY29uZmln LCAiR0VUIiwgIi9pcGFtL2lwLWFkZHJlc3Nlcy8/YWRkcmVzcz0kaXAiKTsgfTsKPj4gKyAgICBp ZiAoJEApIHsKPj4gKyAgICAgICAgcmV0dXJuIGlmICRub2VycjsKPj4gKyAgICAgICAgZGllICJl cnJvciB3aGlsZSBjaGVja2luZyBpZiAkaXAgaXMgYSBnYXRld2F5OiAkQFxuIjsKPj4gKyAgICB9 Cj4+ICsKPj4gKyAgICBteSAkZGF0YSA9IEB7ICRyZXN1bHQtPntyZXN1bHRzfSB9WzBdOwo+PiAr ICAgIHJldHVybiAkZGF0YS0+e2Rlc2NyaXB0aW9ufSBlcSAnZ2F0ZXdheSc7Cj4+ICt9Cj4+ICsK Pj4gKzE7CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K cHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0cHM6 Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVsCg==