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 9369E1FF164
	for <inbox@lore.proxmox.com>; Fri, 11 Apr 2025 17:57:18 +0200 (CEST)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id C8AFA1DF4D;
	Fri, 11 Apr 2025 17:57:10 +0200 (CEST)
Message-ID: <99311daa-b736-4591-a134-094579132c1c@proxmox.com>
Date: Fri, 11 Apr 2025 17:56:34 +0200
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
 =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= <f.gruenbichler@proxmox.com>
References: <20250325151254.193177-1-d.kral@proxmox.com>
 <20250325151254.193177-11-d.kral@proxmox.com>
 <1743681290.ng3l34qeu2.astroid@yuna.none>
Content-Language: en-US
From: Daniel Kral <d.kral@proxmox.com>
In-Reply-To: <1743681290.ng3l34qeu2.astroid@yuna.none>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.387 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_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible
 spam tricks
 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
 URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See
 http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more
 information. [manager.pm, proxmox.com]
Subject: Re: [pve-devel] [PATCH ha-manager 09/15] manager: apply colocation
 rules when selecting service nodes
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>

VGhhbmtzIGZvciB0aGUgdGFraW5nIHRoZSB0aW1lIGhlcmUgdG9vIQoKSSdtIHVuc3VyZSBpZiB0
aGUgZG9jdW1lbnRhdGlvbiB3YXNuJ3QgY2xlYXIgZW5vdWdoIG9yIEknbSBqdXN0IGJsaW5kZWQg
CmhlcmUgaW4gc29tZSBkZXRhaWxzIGhvdyB0aGUgZGl2aXNpb24gYmV0d2VlbiBzdHJpY3Qvbm9u
LXN0cmljdCBzaG91bGQgCmJlLCBidXQgSSBob3BlIEkgY291bGQgY2xhcmlmeSBzb21lIHBvaW50
cyBhYm91dCBteSB1bmRlcnN0YW5kaW5nIGhlcmUuIApQbGVhc2UgY29ycmVjdCBtZSBoZXJlIGlu
IGFueSBjYXNlIHRoZXJlIGFyZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGN1cnJlbnQgCmltcGxlbWVu
dGF0aW9uIHdpbGwgYnJlYWsgdXNlciBleHBlY3RhdGlvbnMsIHRoYXQncyBkZWZpbml0ZWx5IG5v
dCAKc29tZXRoaW5nIHRoYXQgSSB3YW50IDspLgoKSSdsbCBkZWZpbml0ZWx5IHRha2Ugc29tZSB0
aW1lIHRvIGltcHJvdmUgdGhlIGNvbnRyb2wgZmxvdyBhbmQgbmFtZXMgb2YgCnZhcmlhYmxlcy9z
dWJyb3V0aW5lcyBoZXJlIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGFkZCAK
ZXhhbXBsZXMgaG93IHRoZSBjb250ZW50IG9mICR0b2dldGhlciBhbmQgJHNlcGFyYXRlIGxvb2sg
bGlrZSBhdCAKZGlmZmVyZW50IHN0YWdlcy4KClRoZSBhbGdvcml0aG0gaXMgb25saW5lIGFuZCBp
cyBxdWl0ZSBkZXBlbmRlbnQgb24gbWFueSBvdGhlciB0aGluZ3MgbGlrZSAKdGhhdCAkYWxsb3dl
ZF9ub2RlcyBoYXMgYWxyZWFkeSBub2RlcyByZW1vdmVkIHRoYXQgd2VyZSBhbHJlYWR5IHRyaWVk
IAphbmQgZmFpbGVkIG9uLCBldGMuLCBzbyBpdCdzIHByZXR0eSBkeW5hbWljIGhlcmUuCgpPbiA0
LzMvMjUgMTQ6MTcsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gTWFyY2ggMjUsIDIw
MjUgNDoxMiBwbSwgRGFuaWVsIEtyYWwgd3JvdGU6Cj4+IEFkZCBhIG1lY2hhbmlzbSB0byB0aGUg
bm9kZSBzZWxlY3Rpb24gc3Vicm91dGluZSwgd2hpY2ggZW5mb3JjZXMgdGhlCj4+IGNvbG9jYXRp
b24gcnVsZXMgZGVmaW5lZCBpbiB0aGUgcnVsZXMgY29uZmlnLgo+Pgo+PiBUaGUgYWxnb3JpdGht
IG1hbmlwdWxhdGVzIHRoZSBzZXQgb2Ygbm9kZXMgZGlyZWN0bHksIHdoaWNoIHRoZSBzZXJ2aWNl
Cj4+IGlzIGFsbG93ZWQgdG8gcnVuIG9uLCBkZXBlbmRpbmcgb24gdGhlIHR5cGUgYW5kIHN0cmlj
dG5lc3Mgb2YgdGhlCj4+IGNvbG9jYXRpb24gcnVsZXMsIGlmIHRoZXJlIGFyZSBhbnkuCj4gCj4g
c2hvdWxkbid0IHRoaXMgZmlyc3QgYXR0ZW1wdCB0byBzYXRpc2Z5IGFsbCBydWxlcywgYW5kIGlm
IHRoYXQgZmFpbHMsCj4gcmV0cnkgd2l0aCBqdXN0IHRoZSBzdHJpY3Qgb25lcywgb3Igc29tZXRo
aW5nIHNpbWlsYXI/IHNlZSBjb21tZW50cwo+IGJlbG93IChtYXliZSBJIGFtIG1pc3NpbmcvbWlz
dW5kZXJzdGFuZGluZyBzb21ldGhpbmcpCgpIbSwgSSdtIG5vdCBzdXJlIGlmIEkgY2FuIGZvbGxv
dyB3aGF0IHlvdSBtZWFuIGhlcmUuCgpJIHRyaWVkIHRvIGNvbWUgdXAgd2l0aCBzb21lIHNjZW5h
cmlvcywgd2hlcmUgdGhlcmUgY291bGQgYmUgY29uZmxpY3RzIApiZWNhdXNlIG9mICJsb29zZSIg
Y29sb2NhdGlvbiBydWxlcyBiZWluZyBvdmVyc2hhZG93ZWQgYnkgc3RyaWN0IApjb2xvY2F0aW9u
IHJ1bGVzLCBidXQgSSdtIGN1cnJlbnRseSBub3Qgc2VlaW5nIHRoYXQuIEJ1dCBJJ3ZlIGFsc28g
YmVlbiAKbW9zdGx5IGNvbmNlcm5lZCB3aXRoIHNtYWxsZXIgY2x1c3RlcnMgKDMgdG8gNSBub2Rl
cykgZm9yIG5vdywgc28gSSdsbCAKdGFrZSBhIGNsb3NlciBsb29rIGZvciBsYXJnZXIgYXBwbGlj
YXRpb25zL2Vudmlyb25tZW50cy4KCkluIGdlbmVyYWwsIHdoZW4gYXBwbHlpbmcgY29sb2NhdGlv
biBydWxlcywgdGhlIGxvZ2ljIGlzIGxlc3MgY29uY2VybmVkIAphYm91dCB3aGljaCBydWxlcyBz
cGVjaWZpY2FsbHkgZ2V0IGFwcGxpZWQsIGJ1dCB0byBtYWtlIHN1cmUgdGhhdCBub25lIAppcyB2
aW9sYXRlZCBpbiBnZW5lcmFsLgoKVGhpcyBpcyBhbHNvIHdoeSBhIHNpbmdsZSBzZXJ2aWNlIGNv
bG9jYXRpb24gcnVsZXMgdHVybnMgb3V0IHRvIGJlIGEgCm5vb3AsIHNpbmNlIGl0IHdpbGwgbmV2
ZXIgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiBhbm90aGVyIHNlcnZpY2UgKHRoZSAKcnVsZSB3
aWxsIG5ldmVyIGFkZCBzb21ldGhpbmcgdG8gJHRvZ2V0aGVyLyRzZXBhcmF0ZSwgc2luY2UgdGhl
cmUncyBvbmx5IAphbiBlbnRyeSB0aGVyZSBpZiBvdGhlciBzZXJ2aWNlcyBhbHJlYWR5IGhhdmUg
YSBub2RlIHBpbm5lZCB0byB0aGVtKS4KCkkgaG9wZSB0aGUgY29tbWVudHMgYmVsb3cgY2xhcmlm
eSB0aGlzIGEgbGl0dGxlIGJpdCBvciBtYWtlIGl0IGNsZWFyZXIgCndoZXJlIEknbSBtaXNzaW5n
IHNvbWV0aGluZywgc28gdGhhdCB0aGUgY29kZS9iZWhhdmlvci9kb2N1bWVudGF0aW9uIGNhbiAK
YmUgaW1wcm92ZWQgOykuCgo+IAo+Pgo+PiBUaGlzIG1ha2VzIGl0IGRlcGVuZCBvbiB0aGUgcHJp
b3IgcmVtb3ZhbCBvZiBhbnkgbm9kZXMsIHdoaWNoIGFyZQo+PiB1bmF2YWlsYWJsZSAoaS5lLiBv
ZmZsaW5lLCB1bnJlYWNoYWJsZSwgb3Igd2VyZW4ndCBhYmxlIHRvIHN0YXJ0IHRoZQo+PiBzZXJ2
aWNlIGluIHByZXZpb3VzIHRyaWVzKSBvciBhcmUgbm90IGFsbG93ZWQgdG8gYmUgcnVuIG9uIG90
aGVyd2lzZQo+PiAoaS5lLiBIQSBncm91cCBub2RlIHJlc3RyaWN0aW9ucykgdG8gZnVuY3Rpb24g
Y29ycmVjdGx5Lgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3ht
b3guY29tPgo+PiAtLS0KPj4gICBzcmMvUFZFL0hBL01hbmFnZXIucG0gICAgICB8IDIwMyArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCj4+ICAgc3JjL3Rlc3QvdGVzdF9mYWls
b3ZlcjEucGwgfCAgIDQgKy0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCsp
LCAyIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9NYW5hZ2VyLnBt
IGIvc3JjL1BWRS9IQS9NYW5hZ2VyLnBtCj4+IGluZGV4IDhmMmFiM2QuLjc5YjY1NTUgMTAwNjQ0
Cj4+IC0tLSBhL3NyYy9QVkUvSEEvTWFuYWdlci5wbQo+PiArKysgYi9zcmMvUFZFL0hBL01hbmFn
ZXIucG0KPj4gQEAgLTE1Nyw4ICsxNTcsMjAxIEBAIHN1YiBnZXRfbm9kZV9wcmlvcml0eV9ncm91
cHMgewo+PiAgICAgICByZXR1cm4gKCRwcmlfZ3JvdXBzLCAkZ3JvdXBfbWVtYmVycyk7Cj4+ICAg
fQo+PiAgIAo+PiArPWhlYWQzIGdldF9jb2xvY2F0ZWRfc2VydmljZXMoJHJ1bGVzLCAkc2lkLCAk
b25saW5lX25vZGVfdXNhZ2UpCj4+ICsKPj4gK1JldHVybnMgYSBoYXNoIG1hcCBvZiBhbGwgc2Vy
dmljZXMsIHdoaWNoIGFyZSBzcGVjaWZpZWQgYXMgYmVpbmcgaW4gYSBwb3NpdGl2ZQo+PiArb3Ig
bmVnYXRpdmUgY29sb2NhdGlvbiBpbiBDPCRydWxlcz4gd2l0aCB0aGUgZ2l2ZW4gc2VydmljZSB3
aXRoIGlkIEM8JHNpZD4uCj4+ICsKPj4gK0VhY2ggc2VydmljZSBlbnRyeSBjb25zaXN0cyBvZiB0
aGUgdHlwZSBvZiBjb2xvY2F0aW9uLCBzdHJpY3RuZXNzIG9mIGNvbG9jYXRpb24KPj4gK2FuZCB0
aGUgbm9kZSB0aGUgc2VydmljZSBpcyBjdXJyZW50bHkgYXNzaWduZWQgdG8sIGlmIGFueSwgYWNj
b3JkaW5nIHRvCj4+ICtDPCRvbmxpbmVfbm9kZV91c2FnZT4uCj4+ICsKPj4gK0ZvciBleGFtcGxl
LCBhIHNlcnZpY2UgQzwndm06MTAxJz4gYmVpbmcgc3RyaWN0bHkgY29sb2NhdGVkIHRvZ2V0aGVy
IChwb3NpdGl2ZSkKPj4gK3dpdGggdHdvIG90aGVyIHNlcnZpY2VzIEM8J3ZtOjEwMic+IGFuZCBD
PCd2bToxMDMnPiBhbmQgbG9vc2VseSBjb2xvY2F0ZWQKPj4gK3NlcGFyYXRlIHdpdGggYW5vdGhl
ciBzZXJ2aWNlIEM8J3ZtOjEwNCc+IHJlc3VsdHMgaW4gdGhlIGhhc2ggbWFwOgo+PiArCj4+ICsg
ICAgewo+PiArCSd2bToxMDInID0+IHsKPj4gKwkgICAgYWZmaW5pdHkgPT4gJ3RvZ2V0aGVyJywK
Pj4gKwkgICAgc3RyaWN0ID0+IDEsCj4+ICsJICAgIG5vZGUgPT4gJ25vZGUyJwo+PiArCX0sCj4+
ICsJJ3ZtOjEwMycgPT4gewo+PiArCSAgICBhZmZpbml0eSA9PiAndG9nZXRoZXInLAo+PiArCSAg
ICBzdHJpY3QgPT4gMSwKPj4gKwkgICAgbm9kZSA9PiAnbm9kZTInCj4+ICsJfSwKPj4gKwkndm06
MTA0JyA9PiB7Cj4+ICsJICAgIGFmZmluaXR5ID0+ICdzZXBhcmF0ZScsCj4+ICsJICAgIHN0cmlj
dCA9PiAwLAo+PiArCSAgICBub2RlID0+IHVuZGVmCj4+ICsJfQo+PiArICAgIH0KPj4gKwo+PiAr
PWN1dAo+PiArCj4+ICtzdWIgZ2V0X2NvbG9jYXRlZF9zZXJ2aWNlcyB7Cj4+ICsgICAgbXkgKCRy
dWxlcywgJHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKSA9IEBfOwo+PiArCj4+ICsgICAgbXkgJHNl
cnZpY2VzID0ge307Cj4+ICsKPj4gKyAgICBQVkU6OkhBOjpSdWxlczo6Q29sb2NhdGlvbjo6Zm9y
ZWFjaF9jb2xvY2F0aW9uX3J1bGUoJHJ1bGVzLCBzdWIgewo+PiArCW15ICgkcnVsZSkgPSBAXzsK
Pj4gKwo+PiArCWZvciBteSAkY3NpZCAoc29ydCBrZXlzICV7JHJ1bGUtPntzZXJ2aWNlc319KSB7
Cj4+ICsJICAgIG5leHQgaWYgJGNzaWQgZXEgJHNpZDsKPj4gKwo+PiArCSAgICAkc2VydmljZXMt
PnskY3NpZH0gPSB7Cj4+ICsJCW5vZGUgPT4gJG9ubGluZV9ub2RlX3VzYWdlLT5nZXRfc2Vydmlj
ZV9ub2RlKCRjc2lkKSwKPj4gKwkJYWZmaW5pdHkgPT4gJHJ1bGUtPnthZmZpbml0eX0sCj4+ICsJ
CXN0cmljdCA9PiAkcnVsZS0+e3N0cmljdH0sCj4+ICsJICAgIH07Cj4+ICsgICAgICAgIH0KPj4g
KyAgICB9LCB7Cj4+ICsJc2lkID0+ICRzaWQsCj4+ICsgICAgfSk7Cj4+ICsKPj4gKyAgICByZXR1
cm4gJHNlcnZpY2VzOwo+PiArfQo+PiArCj4+ICs9aGVhZDMgZ2V0X2NvbG9jYXRpb25fcHJlZmVy
ZW5jZSgkcnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZV91c2FnZSkKPj4gKwo+PiArUmV0dXJucyBh
IGxpc3Qgb2YgdHdvIGhhc2hlcywgd2hlcmUgZWFjaCBpcyBhIGhhc2ggbWFwIG9mIHRoZSBjb2xv
Y2F0aW9uCj4+ICtwcmVmZXJlbmNlIG9mIEM8JHNpZD4sIGFjY29yZGluZyB0byB0aGUgY29sb2Nh
dGlvbiBydWxlcyBpbiBDPCRydWxlcz4gYW5kIHRoZQo+PiArc2VydmljZSBsb2NhdGlvbnMgaW4g
Qzwkb25saW5lX25vZGVfdXNhZ2U+Lgo+PiArCj4+ICtUaGUgZmlyc3QgaGFzaCBpcyB0aGUgcG9z
aXRpdmUgY29sb2NhdGlvbiBwcmVmZXJlbmNlLCB3aGVyZSBlYWNoIGVsZW1lbnQKPj4gK3JlcHJl
c2VudHMgcHJvcGVydGllcyBmb3IgaG93IG11Y2ggQzwkc2lkPiBwcmVmZXJzIHRvIGJlIG9uIHRo
ZSBub2RlLgo+PiArQ3VycmVudGx5LCB0aGlzIGlzIGEgYmluYXJ5IEM8JHN0cmljdD4gZmllbGQs
IHdoaWNoIG1lYW5zIGVpdGhlciBpdCBzaG91bGQgYmUKPj4gK3RoZXJlIChDPDA+KSBvciBtdXN0
IGJlIHRoZXJlIChDPDE+KS4KPj4gKwo+PiArVGhlIHNlY29uZCBoYXNoIGlzIHRoZSBuZWdhdGl2
ZSBjb2xvY2F0aW9uIHByZWZlcmVuY2UsIHdoZXJlIGVhY2ggZWxlbWVudAo+PiArcmVwcmVzZW50
cyBwcm9wZXJ0aWVzIGZvciBob3cgbXVjaCBDPCRzaWQ+IHByZWZlcnMgbm90IHRvIGJlIG9uIHRo
ZSBub2RlLgo+PiArQ3VycmVudGx5LCB0aGlzIGlzIGEgYmluYXJ5IEM8JHN0cmljdD4gZmllbGQs
IHdoaWNoIG1lYW5zIGVpdGhlciBpdCBzaG91bGQgbm90Cj4+ICtiZSB0aGVyZSAoQzwwPikgb3Ig
bXVzdCBub3QgYmUgdGhlcmUgKEM8MT4pLgo+PiArCj4+ICs9Y3V0Cj4+ICsKPj4gK3N1YiBnZXRf
Y29sb2NhdGlvbl9wcmVmZXJlbmNlIHsKPj4gKyAgICBteSAoJHJ1bGVzLCAkc2lkLCAkb25saW5l
X25vZGVfdXNhZ2UpID0gQF87Cj4+ICsKPj4gKyAgICBteSAkc2VydmljZXMgPSBnZXRfY29sb2Nh
dGVkX3NlcnZpY2VzKCRydWxlcywgJHNpZCwgJG9ubGluZV9ub2RlX3VzYWdlKTsKPj4gKwo+PiAr
ICAgIG15ICR0b2dldGhlciA9IHt9Owo+PiArICAgIG15ICRzZXBhcmF0ZSA9IHt9Owo+PiArCj4+
ICsgICAgZm9yIG15ICRzZXJ2aWNlICh2YWx1ZXMgJSRzZXJ2aWNlcykgewo+PiArCW15ICRub2Rl
ID0gJHNlcnZpY2UtPntub2RlfTsKPj4gKwo+PiArCW5leHQgaWYgISRub2RlOwo+PiArCj4+ICsJ
bXkgJG5vZGVfc2V0ID0gJHNlcnZpY2UtPnthZmZpbml0eX0gZXEgJ3RvZ2V0aGVyJyA/ICR0b2dl
dGhlciA6ICRzZXBhcmF0ZTsKPj4gKwkkbm9kZV9zZXQtPnskbm9kZX0tPntzdHJpY3R9ID0gJG5v
ZGVfc2V0LT57JG5vZGV9LT57c3RyaWN0fSB8fCAkc2VydmljZS0+e3N0cmljdH07Cj4+ICsgICAg
fQo+PiArCj4+ICsgICAgcmV0dXJuICgkdG9nZXRoZXIsICRzZXBhcmF0ZSk7Cj4+ICt9Cj4+ICsK
Pj4gKz1oZWFkMyBhcHBseV9wb3NpdGl2ZV9jb2xvY2F0aW9uX3J1bGVzKCR0b2dldGhlciwgJGFs
bG93ZWRfbm9kZXMpCj4+ICsKPj4gK0FwcGxpZXMgdGhlIHBvc2l0aXZlIGNvbG9jYXRpb24gcHJl
ZmVyZW5jZSBDPCR0b2dldGhlcj4gb24gdGhlIGFsbG93ZWQgbm9kZQo+PiAraGFzaCBzZXQgQzwk
YWxsb3dlZF9ub2Rlcz4gZGlyZWN0bHkuCj4+ICsKPj4gK1Bvc2l0aXZlIGNvbG9jYXRpb24gbWVh
bnMga2VlcGluZyBzZXJ2aWNlcyB0b2dldGhlciBvbiBhIHNpbmdsZSBub2RlLCBhbmQKPj4gK3Ro
ZXJlZm9yZSBtaW5pbWl6aW5nIHRoZSBzZXBhcmF0aW9uIG9mIHNlcnZpY2VzLgo+PiArCj4+ICtU
aGUgYWxsb3dlZCBub2RlIGhhc2ggc2V0IEM8JGFsbG93ZWRfbm9kZXM+IGlzIGV4cGVjdGVkIHRv
IGNvbnRhaW4gYW55IG5vZGUsCj4+ICt3aGljaCBpcyBhdmFpbGFibGUgdG8gdGhlIHNlcnZpY2Us
IGkuZS4gZWFjaCBub2RlIGlzIGN1cnJlbnRseSBvbmxpbmUsIGlzCj4+ICthdmFpbGFibGUgYWNj
b3JkaW5nIHRvIG90aGVyIGxvY2F0aW9uIGNvbnN0cmFpbnRzLCBhbmQgdGhlIHNlcnZpY2UgaGFz
IG5vdAo+PiArZmFpbGVkIHJ1bm5pbmcgdGhlcmUgeWV0Lgo+PiArCj4+ICs9Y3V0Cj4+ICsKPj4g
K3N1YiBhcHBseV9wb3NpdGl2ZV9jb2xvY2F0aW9uX3J1bGVzIHsKPj4gKyAgICBteSAoJHRvZ2V0
aGVyLCAkYWxsb3dlZF9ub2RlcykgPSBAXzsKPj4gKwo+PiArICAgIHJldHVybiBpZiBzY2FsYXIo
a2V5cyAlJHRvZ2V0aGVyKSA8IDE7Cj4+ICsKPj4gKyAgICBteSAkbWFuZGF0b3J5X25vZGVzID0g
e307Cj4+ICsgICAgbXkgJHBvc3NpYmxlX25vZGVzID0gUFZFOjpIQTo6VG9vbHM6OmludGVyc2Vj
dCgkYWxsb3dlZF9ub2RlcywgJHRvZ2V0aGVyKTsKPj4gKwo+PiArICAgIGZvciBteSAkbm9kZSAo
c29ydCBrZXlzICUkdG9nZXRoZXIpIHsKPj4gKwkkbWFuZGF0b3J5X25vZGVzLT57JG5vZGV9ID0g
MSBpZiAkdG9nZXRoZXItPnskbm9kZX0tPntzdHJpY3R9Owo+PiArICAgIH0KPj4gKwo+PiArICAg
IGlmIChzY2FsYXIga2V5cyAlJG1hbmRhdG9yeV9ub2Rlcykgewo+PiArCSMgbGltaXQgdG8gb25s
eSB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVzdCBiZSBvbi4KPj4gKwlmb3IgbXkgJG5vZGUgKGtl
eXMgJSRhbGxvd2VkX25vZGVzKSB7Cj4+ICsJICAgIG5leHQgaWYgZXhpc3RzKCRtYW5kYXRvcnlf
bm9kZXMtPnskbm9kZX0pOwo+PiArCj4+ICsJICAgIGRlbGV0ZSAkYWxsb3dlZF9ub2Rlcy0+eyRu
b2RlfTsKPj4gKwl9Cj4+ICsgICAgfSBlbHNpZiAoc2NhbGFyIGtleXMgJSRwb3NzaWJsZV9ub2Rl
cykgewo+IAo+IEkgYW0gbm90IHN1cmUgSSBmb2xsb3cgdGhpcyBsb2dpYyBoZXJlLi4gaWYgdGhl
cmUgYXJlIGFueSBzdHJpY3QKPiByZXF1aXJlbWVudHMsIHdlIG9ubHkgaG9ub3IgdGhvc2UuLiBp
ZiB0aGVyZSBhcmUgbm8gc3RyaWN0IHJlcXVpcmVtZW50cywKPiB3ZSBvbmx5IGhvbm9yIHRoZSBu
b24tc3RyaWN0IG9uZXM/CgpQbGVhc2UgY29ycmVjdCBtZSBpZiBJJ20gd3JvbmcsIGJ1dCBhdCBs
ZWFzdCBmb3IgbXkgdW5kZXJzdGFuZGluZyB0aGlzIApzZWVtcyByaWdodCwgYmVjYXVzZSB0aGUg
bm9kZXMgaW4gJHRvZ2V0aGVyIGFyZSB0aGUgbm9kZXMsIHdoaWNoIG90aGVyIApjby1sb2NhdGVk
IHNlcnZpY2VzIGFyZSBhbHJlYWR5IHJ1bm5pbmcgb24uCgpJZiB0aGVyZSBpcyBhIGNvLWxvY2F0
ZWQgc2VydmljZSBhbHJlYWR5IHJ1bm5pbmcgc29tZXdoZXJlIGFuZCB0aGUgCnNlcnZpY2VzIE1V
U1QgYmUga2VwdCB0b2dldGhlciwgdGhlbiB0aGVyZSB3aWxsIGJlIGFuIGVudHJ5IGxpa2UgJ25v
ZGUzJyAKPT4geyBzdHJpY3QgPT4gMSB9IGluICR0b2dldGhlci4gQUZBSUNTIHdlIGNhbiB0aGVu
IGlnbm9yZSBhbnkgCm5vbi1zdHJpY3Qgbm9kZXMgaGVyZSwgYmVjYXVzZSB3ZSBhbHJlYWR5IGtu
b3cgd2hlcmUgdGhlIHNlcnZpY2UgTVVTVCBydW4uCgpJZiB0aGVyZSBpcyBhIGNvLWxvY2F0ZWQg
c2VydmljZSBhbHJlYWR5IHJ1bm5pbmcgc29tZXdoZXJlIGFuZCB0aGUgCnNlcnZpY2VzIFNIT1VM
RCBiZSBrZXB0IHRvZ2V0aGVyLCB0aGVuIHRoZXJlIHdpbGwgYmUgb25lIG9yIG1vcmUgCmVudHJp
ZXMsIGUuZy4gJHRvZ2V0aGVyID0geyAnbm9kZTEnID0+IHsgc3RyaWN0ID0+IDAgfSwgJ25vZGUy
JyA9PiB7IApzdHJpY3QgPT4gMCB9IH07CgpJZiB0aGVyZSBpcyBubyBjby1sb2NhdGVkIHNlcnZp
Y2UgYWxyZWFkeSBydW5uaW5nIHNvbWV3aGVyZSwgdGhlbiAKJHRvZ2V0aGVyID0ge307IGFuZCB0
aGlzIHN1YnJvdXRpbmUgd29uJ3QgZG8gYW55dGhpbmcgdG8gJGFsbG93ZWRfbm9kZXMuCgpJbiB0
aGVvcnksIHdlIGNvdWxkIGFzc3VtZSB0aGF0ICUkbWFuZGF0b3J5X25vZGVzIGhhcyBhbHdheXMg
b25seSBvbmUgCm5vZGUsIGJlY2F1c2UgaXQgaXMgbWFuZGF0b3J5LiBCdXQgY3VycmVudGx5LCB3
ZSBkbyBub3QgaGluZGVyIHVzZXJzIAptYW51YWxseSBtaWdyYXRpbmcgYWdhaW5zdCBjb2xvY2F0
aW9uIHJ1bGVzIChtYXliZSB3ZSBzaG91bGQ/KSBvciB3aGF0IAppZiBydWxlcyBzdWRkZW5seSBj
aGFuZ2UgZnJvbSBub24tc3RyaWN0IHRvIHN0cmljdC4gV2UgZG8gbm90IAphdXRvLW1pZ3JhdGUg
aWYgcnVsZXMgY2hhbmdlIChtYXliZSB3ZSBzaG91bGQ/KS4KCi0tLS0tCgpPbiBhbm90aGVyIG5v
dGUsIGludGVyc2VjdCgpIGhlcmUgaXMgdXNlZCB3aXRoICR0b2dldGhlciAoYW5kIApzZXRfZGlm
ZmVyZW5jZSgpIHdpdGggJHNlcGFyYXRlIGJlbG93KSwgd2hpY2ggZ29lcyBhZ2FpbnN0IHdoYXQg
SSBzYWlkIAppbiBwYXRjaCAjNSB0byBvbmx5IHVzZSBoYXNoIHNldHMsIGJ1dCBhcyBpdCB0cmll
cyB0byBnZXQgb25seSB0aGUgdHJ1dGggCnZhbHVlIGFueXdheSwgaXQgd2FzIGZpbmUgaGVyZS4g
SSdsbCBtYWtlIHRoYXQgbW9yZSByb2J1c3QgaW4gYSB2MS4KCj4gCj4+ICsJIyBsaW1pdCB0byB0
aGUgcG9zc2libGUgbm9kZXMgdGhlIHNlcnZpY2Ugc2hvdWxkIGJlIG9uLCBpZiB0aGVyZSBhcmUg
YW55Lgo+PiArCWZvciBteSAkbm9kZSAoa2V5cyAlJGFsbG93ZWRfbm9kZXMpIHsKPj4gKwkgICAg
bmV4dCBpZiBleGlzdHMoJHBvc3NpYmxlX25vZGVzLT57JG5vZGV9KTsKPj4gKwo+PiArCSAgICBk
ZWxldGUgJGFsbG93ZWRfbm9kZXMtPnskbm9kZX07Cj4+ICsJfQo+IAo+IHRoaXMgaXMgdGhlIHNh
bWUgY29kZSB0d2ljZSwganVzdCBvcGVyYXRpbmcgb24gZGlmZmVyZW50IGhhc2gKPiByZWZlcmVu
Y2VzLCBzbyBjb3VsZCBwcm9iYWJseSBiZSBhIGxvdCBzaG9ydGVyLiB0aGUgbmV4dCBhbmQgZGVs
ZXRlCj4gY291bGQgYWxzbyBiZSBjb21iaW5lZCAoYGRlbGV0ZSAuLiBpZiAhLi4uYCkuCgpZZXMs
IEkgd2FudGVkIHRvIGJyZWFrIGl0IGRvd24gbW9yZSBhbmQgd2lsbCBpbXByb3ZlIGl0LCB0aGFu
a3MgZm9yIHRoZSAKc3VnZ2VzdGlvbiB3aXRoIHRoZSBkZWxldGUgcG9zdC1pZiEKCkkgZ3Vlc3Mg
d2UgY2FuIGFsc28gbW92ZSB0aGUgZGVmaW5pdGlvbiArIGFzc2lnbm1lbnQgb2YgJHBvc3NpYmxl
X25vZGVzIApkb3duIGhlcmUgdG9vLCBhcyBpdCB3b24ndCBiZSBuZWVkZWQgZm9yIHRoZSAkbWFu
ZGF0b3J5X25vZGVzIGNhc2UsIApkZXBlbmRpbmcgaWYgdGhlIGdlbmVyYWwgYmVoYXZpb3Igd29u
J3QgYmUgY2hhbmdlZC4KCj4gCj4+ICsgICAgfQo+PiArfQo+PiArCj4+ICs9aGVhZDMgYXBwbHlf
bmVnYXRpdmVfY29sb2NhdGlvbl9ydWxlcygkc2VwYXJhdGUsICRhbGxvd2VkX25vZGVzKQo+PiAr
Cj4+ICtBcHBsaWVzIHRoZSBuZWdhdGl2ZSBjb2xvY2F0aW9uIHByZWZlcmVuY2UgQzwkc2VwYXJh
dGU+IG9uIHRoZSBhbGxvd2VkIG5vZGUKPj4gK2hhc2ggc2V0IEM8JGFsbG93ZWRfbm9kZXM+IGRp
cmVjdGx5Lgo+PiArCj4+ICtOZWdhdGl2ZSBjb2xvY2F0aW9uIG1lYW5zIGtlZXBpbmcgc2Vydmlj
ZXMgc2VwYXJhdGUgb24gbXVsdGlwbGUgbm9kZXMsIGFuZAo+PiArdGhlcmVmb3JlIG1heGltaXpp
bmcgdGhlIHNlcGFyYXRpb24gb2Ygc2VydmljZXMuCj4+ICsKPj4gK1RoZSBhbGxvd2VkIG5vZGUg
aGFzaCBzZXQgQzwkYWxsb3dlZF9ub2Rlcz4gaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhbnkgbm9k
ZSwKPj4gK3doaWNoIGlzIGF2YWlsYWJsZSB0byB0aGUgc2VydmljZSwgaS5lLiBlYWNoIG5vZGUg
aXMgY3VycmVudGx5IG9ubGluZSwgaXMKPj4gK2F2YWlsYWJsZSBhY2NvcmRpbmcgdG8gb3RoZXIg
bG9jYXRpb24gY29uc3RyYWludHMsIGFuZCB0aGUgc2VydmljZSBoYXMgbm90Cj4+ICtmYWlsZWQg
cnVubmluZyB0aGVyZSB5ZXQuCj4+ICsKPj4gKz1jdXQKPj4gKwo+PiArc3ViIGFwcGx5X25lZ2F0
aXZlX2NvbG9jYXRpb25fcnVsZXMgewo+PiArICAgIG15ICgkc2VwYXJhdGUsICRhbGxvd2VkX25v
ZGVzKSA9IEBfOwo+PiArCj4+ICsgICAgcmV0dXJuIGlmIHNjYWxhcihrZXlzICUkc2VwYXJhdGUp
IDwgMTsKPj4gKwo+PiArICAgIG15ICRtYW5kYXRvcnlfbm9kZXMgPSB7fTsKPj4gKyAgICBteSAk
cG9zc2libGVfbm9kZXMgPSBQVkU6OkhBOjpUb29sczo6c2V0X2RpZmZlcmVuY2UoJGFsbG93ZWRf
bm9kZXMsICRzZXBhcmF0ZSk7Cj4gCj4gdGhpcyBpcyBjb25mdXNpbmcgb3IgSSBtaXN1bmRlcnN0
YW5kIHNvbWV0aGluZyBoZXJlLCBzZWUgYmVsb3cuLgo+IAo+PiArCj4+ICsgICAgZm9yIG15ICRu
b2RlIChzb3J0IGtleXMgJSRzZXBhcmF0ZSkgewo+PiArCSRtYW5kYXRvcnlfbm9kZXMtPnskbm9k
ZX0gPSAxIGlmICRzZXBhcmF0ZS0+eyRub2RlfS0+e3N0cmljdH07Cj4+ICsgICAgfQo+PiArCj4+
ICsgICAgaWYgKHNjYWxhciBrZXlzICUkbWFuZGF0b3J5X25vZGVzKSB7Cj4+ICsJIyBsaW1pdCB0
byB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVzdCBub3QgYmUgb24uCj4gCj4gdGhpcyBpcyBtaXNz
aW5nIGEgbm90Pwo+IHdlIGFyZSBsaW1pdGluZyB0byB0aGUgbm9kZXMgdGhlIHNlcnZpY2UgbXVz
dCBub3Qgbm90IGJlIG9uIDotUAo+IAo+IHNob3VsZCB3ZSByZW5hbWUgbWFuZGF0b3J5X25vZGVz
IHRvIGZvcmJpZGRlbl9ub2Rlcz8KCkdvb2QgaWRlYSwgeWVzIHRoaXMgd291bGQgYmUgYSBtdWNo
IGJldHRlciBmaXR0aW5nIG5hbWUuIFdoZW4gSSB3cm90ZSAKJG1hbmRhdG9yeV9ub2RlcyBhcyBh
Ym92ZSwgSSB3YXMgYWx3YXlzIHRoaW5raW5nICdtYW5kYXRvcnkgdG8gbm90IGJlIAp0aGVyZScu
Li4KCj4gCj4+ICsJZm9yIG15ICRub2RlIChrZXlzICUkYWxsb3dlZF9ub2Rlcykgewo+IAo+IHRo
aXMgY291bGQganVzdCBsb29wIG92ZXIgdGhlIGZvcmJpZGRlbiBub2RlcyBhbmQgZGVsZXRlIHRo
ZW0gZnJvbQo+IGFsbG93ZWQgbm9kZXM/CgpZZXMsIHRoaXMgc2hvdWxkIGFsc28gYmUgcG9zc2li
bGUuIEkgdGhpbmsgSSBoYWQgYSBjb3VudGVyIGV4YW1wbGUgaW4gYW4gCmVhcmxpZXIgdmVyc2lv
biwgd2hlcmUgdGhpcyBkaWRuJ3Qgd29yaywgYnV0IG5vdyBpdCBzaG91bGQgbWFrZSBzZW5zZS4K
Cj4gCj4+ICsJICAgIG5leHQgaWYgIWV4aXN0cygkbWFuZGF0b3J5X25vZGVzLT57JG5vZGV9KTsK
Pj4gKwo+PiArCSAgICBkZWxldGUgJGFsbG93ZWRfbm9kZXMtPnskbm9kZX07Cj4+ICsJfQo+PiAr
ICAgIH0gZWxzaWYgKHNjYWxhciBrZXlzICUkcG9zc2libGVfbm9kZXMpIHsKPiAKPiBzaW1pbGFy
IHRvIGFib3ZlIC0gaWYgd2UgaGF2ZSBzdHJpY3QgZXhjbHVzaW9ucywgd2UgaG9ub3IgdGhlbSwg
YnV0IHdlCj4gaWdub3JlIHRoZSBub24tc3RyaWN0IGV4Y2x1c2lvbnMgdW5sZXNzIHRoZXJlIGFy
ZSBubyBzdHJpY3Qgb25lcz8KClNhbWUgcHJpbmNpcGxlIGFib3ZlLCBidXQgbm93ICRzZXBhcmF0
ZSBob2xkcyBhbGwgbm9kZXMgd2hlcmUgdGhlIAphbnRpLWNvbG9jYXRlZCBzZXJ2aWNlcyBhcmUg
YWxyZWFkeSBydW5uaW5nIG9uLCBzbyB3ZSdyZSB0cnlpbmcgdG8gbm90IApzZWxlY3QgYSBub2Rl
IGZyb20gdGhlcmUuCgo+IAo+PiArCSMgbGltaXQgdG8gdGhlIG5vZGVzIHRoZSBzZXJ2aWNlIHNo
b3VsZCBub3QgYmUgb24sIGlmIGFueS4KPj4gKwlmb3IgbXkgJG5vZGUgKGtleXMgJSRhbGxvd2Vk
X25vZGVzKSB7Cj4+ICsJICAgIG5leHQgaWYgZXhpc3RzKCRwb3NzaWJsZV9ub2Rlcy0+eyRub2Rl
fSk7Cj4+ICsKPj4gKwkgICAgZGVsZXRlICRhbGxvd2VkX25vZGVzLT57JG5vZGV9Owo+PiArCX0K
Pj4gKyAgICB9Cj4+ICt9Cj4+ICsKPj4gK3N1YiBhcHBseV9jb2xvY2F0aW9uX3J1bGVzIHsKPj4g
KyAgICBteSAoJHJ1bGVzLCAkc2lkLCAkYWxsb3dlZF9ub2RlcywgJG9ubGluZV9ub2RlX3VzYWdl
KSA9IEBfOwo+PiArCj4+ICsgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9jb2xv
Y2F0aW9uX3ByZWZlcmVuY2UoJHJ1bGVzLCAkc2lkLCAkb25saW5lX25vZGVfdXNhZ2UpOwo+PiAr
Cj4+ICsgICAgYXBwbHlfcG9zaXRpdmVfY29sb2NhdGlvbl9ydWxlcygkdG9nZXRoZXIsICRhbGxv
d2VkX25vZGVzKTsKPj4gKyAgICBhcHBseV9uZWdhdGl2ZV9jb2xvY2F0aW9uX3J1bGVzKCRzZXBh
cmF0ZSwgJGFsbG93ZWRfbm9kZXMpOwo+PiArfQo+PiArCj4+ICAgc3ViIHNlbGVjdF9zZXJ2aWNl
X25vZGUgewo+PiAtICAgIG15ICgkZ3JvdXBzLCAkb25saW5lX25vZGVfdXNhZ2UsICRzaWQsICRz
ZXJ2aWNlX2NvbmYsICRjdXJyZW50X25vZGUsICR0cnlfbmV4dCwgJHRyaWVkX25vZGVzLCAkbWFp
bnRlbmFuY2VfZmFsbGJhY2ssICRiZXN0X3Njb3JlZCkgPSBAXzsKPj4gKyAgICAjIFRPRE8gQ2xl
YW51cCB0aGlzIHNpZ25hdHVyZSBwb3N0LVJGQwo+PiArICAgIG15ICgkcnVsZXMsICRncm91cHMs
ICRvbmxpbmVfbm9kZV91c2FnZSwgJHNpZCwgJHNlcnZpY2VfY29uZiwgJGN1cnJlbnRfbm9kZSwg
JHRyeV9uZXh0LCAkdHJpZWRfbm9kZXMsICRtYWludGVuYW5jZV9mYWxsYmFjaywgJGJlc3Rfc2Nv
cmVkKSA9IEBfOwo+PiAgIAo+PiAgICAgICBteSAkZ3JvdXAgPSBnZXRfc2VydmljZV9ncm91cCgk
Z3JvdXBzLCAkb25saW5lX25vZGVfdXNhZ2UsICRzZXJ2aWNlX2NvbmYpOwo+PiAgIAo+PiBAQCAt
MTg5LDYgKzM4Miw4IEBAIHN1YiBzZWxlY3Rfc2VydmljZV9ub2RlIHsKPj4gICAKPj4gICAgICAg
cmV0dXJuICRjdXJyZW50X25vZGUgaWYgKCEkdHJ5X25leHQgJiYgISRiZXN0X3Njb3JlZCkgJiYg
JHByaV9ub2Rlcy0+eyRjdXJyZW50X25vZGV9Owo+PiAgIAo+PiArICAgIGFwcGx5X2NvbG9jYXRp
b25fcnVsZXMoJHJ1bGVzLCAkc2lkLCAkcHJpX25vZGVzLCAkb25saW5lX25vZGVfdXNhZ2UpOwo+
PiArCj4+ICAgICAgIG15ICRzY29yZXMgPSAkb25saW5lX25vZGVfdXNhZ2UtPnNjb3JlX25vZGVz
X3RvX3N0YXJ0X3NlcnZpY2UoJHNpZCwgJGN1cnJlbnRfbm9kZSk7Cj4+ICAgICAgIG15IEBub2Rl
cyA9IHNvcnQgewo+PiAgIAkkc2NvcmVzLT57JGF9IDw9PiAkc2NvcmVzLT57JGJ9IHx8ICRhIGNt
cCAkYgo+PiBAQCAtNzU4LDYgKzk1Myw3IEBAIHN1YiBuZXh0X3N0YXRlX3JlcXVlc3Rfc3RhcnQg
ewo+PiAgIAo+PiAgICAgICBpZiAoJHNlbGYtPntjcnN9LT57cmViYWxhbmNlX29uX3JlcXVlc3Rf
c3RhcnR9KSB7Cj4+ICAgCW15ICRzZWxlY3RlZF9ub2RlID0gc2VsZWN0X3NlcnZpY2Vfbm9kZSgK
Pj4gKwkgICAgJHNlbGYtPntydWxlc30sCj4+ICAgCSAgICAkc2VsZi0+e2dyb3Vwc30sCj4+ICAg
CSAgICAkc2VsZi0+e29ubGluZV9ub2RlX3VzYWdlfSwKPj4gICAJICAgICRzaWQsCj4+IEBAIC03
NzEsNiArOTY3LDkgQEAgc3ViIG5leHRfc3RhdGVfcmVxdWVzdF9zdGFydCB7Cj4+ICAgCW15ICRz
ZWxlY3RfdGV4dCA9ICRzZWxlY3RlZF9ub2RlIG5lICRjdXJyZW50X25vZGUgPyAnbmV3JyA6ICdj
dXJyZW50JzsKPj4gICAJJGhhZW52LT5sb2coJ2luZm8nLCAic2VydmljZSAkc2lkOiByZS1iYWxh
bmNlIHNlbGVjdGVkICRzZWxlY3RfdGV4dCBub2RlICRzZWxlY3RlZF9ub2RlIGZvciBzdGFydHVw
Iik7Cj4+ICAgCj4+ICsJIyBUT0RPIEl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGluZm9ybWF0
aW9uIHdvdWxkIGJlIHJldHJpZXZlZCBmcm9tICRzcy8kc2QgcG9zdC1SRkMKPj4gKwkkc2VsZi0+
e29ubGluZV9ub2RlX3VzYWdlfS0+cGluX3NlcnZpY2Vfbm9kZSgkc2lkLCAkc2VsZWN0ZWRfbm9k
ZSk7Cj4+ICsKPj4gICAJaWYgKCRzZWxlY3RlZF9ub2RlIG5lICRjdXJyZW50X25vZGUpIHsKPj4g
ICAJICAgICRjaGFuZ2Vfc2VydmljZV9zdGF0ZS0+KCRzZWxmLCAkc2lkLCAncmVxdWVzdF9zdGFy
dF9iYWxhbmNlJywgbm9kZSA9PiAkY3VycmVudF9ub2RlLCB0YXJnZXQgPT4gJHNlbGVjdGVkX25v
ZGUpOwo+PiAgIAkgICAgcmV0dXJuOwo+PiBAQCAtODk4LDYgKzEwOTcsNyBAQCBzdWIgbmV4dF9z
dGF0ZV9zdGFydGVkIHsKPj4gICAJICAgIH0KPj4gICAKPj4gICAJICAgIG15ICRub2RlID0gc2Vs
ZWN0X3NlcnZpY2Vfbm9kZSgKPj4gKwkJJHNlbGYtPntydWxlc30sCj4+ICAgCSAgICAgICAgJHNl
bGYtPntncm91cHN9LAo+PiAgIAkJJHNlbGYtPntvbmxpbmVfbm9kZV91c2FnZX0sCj4+ICAgCQkk
c2lkLAo+PiBAQCAtMTAwNCw2ICsxMjA0LDcgQEAgc3ViIG5leHRfc3RhdGVfcmVjb3Zlcnkgewo+
PiAgICAgICAkc2VsZi0+cmVjb21wdXRlX29ubGluZV9ub2RlX3VzYWdlKCk7ICMgd2Ugd2FudCB0
aGUgbW9zdCBjdXJyZW50IG5vZGUgc3RhdGUKPj4gICAKPj4gICAgICAgbXkgJHJlY292ZXJ5X25v
ZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAo+PiArCSRzZWxmLT57cnVsZXN9LAo+PiAgIAkkc2Vs
Zi0+e2dyb3Vwc30sCj4+ICAgCSRzZWxmLT57b25saW5lX25vZGVfdXNhZ2V9LAo+PiAgIAkkc2lk
LAo+PiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEucGwgYi9zcmMvdGVzdC90
ZXN0X2ZhaWxvdmVyMS5wbAo+PiBpbmRleCAzMDhlYWIzLi40Yzg0ZmJkIDEwMDc1NQo+PiAtLS0g
YS9zcmMvdGVzdC90ZXN0X2ZhaWxvdmVyMS5wbAo+PiArKysgYi9zcmMvdGVzdC90ZXN0X2ZhaWxv
dmVyMS5wbAo+PiBAQCAtOCw2ICs4LDggQEAgdXNlIFBWRTo6SEE6Okdyb3VwczsKPj4gICB1c2Ug
UFZFOjpIQTo6TWFuYWdlcjsKPj4gICB1c2UgUFZFOjpIQTo6VXNhZ2U6OkJhc2ljOwo+PiAgIAo+
PiArbXkgJHJ1bGVzID0ge307Cj4+ICsKPj4gICBteSAkZ3JvdXBzID0gUFZFOjpIQTo6R3JvdXBz
LT5wYXJzZV9jb25maWcoImdyb3Vwcy50bXAiLCA8PEVPRCk7Cj4+ICAgZ3JvdXA6IHByZWZlcl9u
b2RlMQo+PiAgIAlub2RlcyBub2RlMQo+PiBAQCAtMzEsNyArMzMsNyBAQCBzdWIgdGVzdCB7Cj4+
ICAgICAgIG15ICgkZXhwZWN0ZWRfbm9kZSwgJHRyeV9uZXh0KSA9IEBfOwo+PiAgICAgICAKPj4g
ICAgICAgbXkgJG5vZGUgPSBQVkU6OkhBOjpNYW5hZ2VyOjpzZWxlY3Rfc2VydmljZV9ub2RlCj4+
IC0JKCRncm91cHMsICRvbmxpbmVfbm9kZV91c2FnZSwgInZtOjExMSIsICRzZXJ2aWNlX2NvbmYs
ICRjdXJyZW50X25vZGUsICR0cnlfbmV4dCk7Cj4+ICsJKCRydWxlcywgJGdyb3VwcywgJG9ubGlu
ZV9ub2RlX3VzYWdlLCAidm06MTExIiwgJHNlcnZpY2VfY29uZiwgJGN1cnJlbnRfbm9kZSwgJHRy
eV9uZXh0KTsKPj4gICAKPj4gICAgICAgbXkgKHVuZGVmLCB1bmRlZiwgJGxpbmUpID0gY2FsbGVy
KCk7Cj4+ICAgICAgIGRpZSAidW5leHBlY3RlZCByZXN1bHQ6ICRub2RlICE9ICR7ZXhwZWN0ZWRf
bm9kZX0gYXQgbGluZSAkbGluZVxuIgo+PiAtLSAKPj4gMi4zOS41Cj4+Cj4+Cj4+Cj4+IF9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IHB2ZS1kZXZlbCBt
YWlsaW5nIGxpc3QKPj4gcHZlLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+IGh0dHBzOi8vbGlz
dHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1kZXZlbAo+Pgo+Pgo+
Pgo+IAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
Cj4gcHZlLWRldmVsIG1haWxpbmcgbGlzdAo+IHB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQo+
IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3B2ZS1k
ZXZlbAo+IAo+IAoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo
dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2
ZWwK