From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 940911FF15C for ; Wed, 13 Nov 2024 15:04:51 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5D06816C77; Wed, 13 Nov 2024 15:04:52 +0100 (CET) Message-ID: <5e99d832-50b3-475a-a886-ff83f0c007a1@proxmox.com> Date: Wed, 13 Nov 2024 15:04:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird To: =?UTF-8?Q?Fabian_Gr=C3=BCnbichler?= , Proxmox Backup Server development discussion References: <20241105140153.282980-1-c.ebner@proxmox.com> <20241105140153.282980-5-c.ebner@proxmox.com> <1731330267.220wgkqhtc.astroid@yuna.none> <39def709-3df0-4182-8179-8be4022f0f9e@proxmox.com> <1731506079.pge8n3f5vc.astroid@yuna.none> Content-Language: en-US, de-DE From: Christian Ebner In-Reply-To: <1731506079.pge8n3f5vc.astroid@yuna.none> X-SPAM-LEVEL: Spam detection results: 0 AWL -0.370 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 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: Re: [pbs-devel] [PATCH proxmox-backup 4/4] fix #5853: client: pxar: exclude stale files on metadata read X-BeenThere: pbs-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Backup Server development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Backup Server development discussion Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" T24gMTEvMTMvMjQgMTQ6NTUsIEZhYmlhbiBHcsO8bmJpY2hsZXIgd3JvdGU6Cj4gT24gTm92ZW1i ZXIgMTMsIDIwMjQgMjo0NSBwbSwgQ2hyaXN0aWFuIEVibmVyIHdyb3RlOgo+PiBPbiAxMS8xMS8y NCAxNDozNywgRmFiaWFuIEdyw7xuYmljaGxlciB3cm90ZToKPj4+IGJlaGF2aW91ciB3aXNlIHRo aXMgc2VlbXMgb2theSB0byBtZSwgYnV0IGlmIHBvc3NpYmxlLCBJJ2QgYXZvaWQgYWxsIHRoZQo+ Pj4gcmV0dXJuIHZhbHVlIHR1cGxlcywgc2VlIGRldGFpbGVkIGNvbW1lbnRzIGJlbG93Li4KPj4K Pj4gQWdyZWVkLCBJIGFtIG5vdCBhIGZhbiBvZiBwYXNzaW5nIHRoZSBzdGFsZSBmaWxlIGhhbmRs ZSBlcnJvciBpbmZvIGFsb25nCj4+IGEgdGhlIGJvb2xlYW4gaW4gdGhlIHJldHVybiB2YWx1ZSBh cyB3ZWxsLgo+Pgo+PiBCdXQgdW5mb3J0dW5hdGVseSBwYXNzaW5nIGFsb25nIHRoZSBlcnJvciB3 aXRob3V0IGxvb3NpbmcgcHJlLWV4aXN0aW5nCj4+IGVycm9yIGNvbnRleHQgYW5kIHN3aXRjaGlu ZyBhbGwgdGhlIGBnZXRfbWV0YWRhdGFgIHJlbGF0ZWQgZnVuY3Rpb25zIHRvCj4+IHJldHVybiBh biBgRXJybm9gIGlzIG5vdCBwb3NzaWJsZSBhcyBpcy4KPj4KPj4gRS5nLiBgcHJvY2Vzc19hY2xg IHJldHVybnMgYW4gYGFueWhvdzo6RXJyb3JgIChjb3VsZCBiZSBkZWZpbmVkIHRvCj4+IHJldHVy biBhbiBlLmcuIGBFcnJubzo6RUlOVkFMSURgIGluc3RlYWQ/KSwgc3BlY2lhbCBoYW5kbGluZyBv Zgo+PiBgRXJybm86OkUyQklHYCBmb3IgdGhlIHhhdHRyIGNhc2Ugb25seSwgLi4uCj4+Cj4+IFRo ZSBjdXJyZW50IGFwcHJvYWNoIHdhcyBjaG9vc2VuIHRvIGtlZXAgdGhlIGN1cnJlbnQgYW55aG93 IGVycm9yCj4+IGNvbnRleHQgY2xvc2UgdG8gdGhlIGFjdHVhbCBlcnJvcnMgd2hlbiB0aGV5IG9j Y3VyLgo+IAo+IEkgdGhpbmsgdGhhdCBzaG91bGQgYmUgc29sdmFibGUgd2l0aCBzb21lIHJlZmFj dG9yaW5nL2RlZmluaW5nIG9mIGEKPiBwcm9wZXIgZXJyb3IgdHlwZS4uCj4gCj4gYnV0IHlvdSBj YW4gYWxzbyBhdHRlbXB0IHRvIGRvd25jYXN0IHRoZSBhbnlob3cgZXJyb3IgdG8gZ2V0IHRoZSBF U1RBTEU/CgpBaCB0cnVlLCB0aGFua3MgZm9yIHRoZSBwb2ludGVyIQoKSSB3aWxsIHNlbmQgYSBu ZXcgdmVyc2lvbiBvZiB0aGUgcGF0Y2hlcyBpbmNvcnBvcmF0aW5nIHlvdXIgZmVlZGJhY2suCgo+ IAo+PiAgICA+IE9uIE5vdmVtYmVyIDUsIDIwMjQgMzowMSBwbSwgQ2hyaXN0aWFuIEVibmVyIHdy b3RlOgo+Pj4+IFNraXAgYW5kIHdhcm4gdGhlIHVzZXIgZm9yIGZpbGVzIHdoaWNoIHJldHVybmVk IGEgc3RhbGUgZmlsZSBoYW5kbGUKPj4+PiBlcnJvciB3aGlsZSByZWFkaW5nIHRoZSBtZXRhZGF0 YSBhc3NvY2lhdGVkIHRvIHRoYXQgZmlsZS4KPj4+Pgo+Pj4+IEluc3RlYWQgb2YgcmV0dXJuaW5n IHdpdGggYW4gZXJyb3Igd2hlbiBnZXR0aW5nIHRoZSBtZXRhZGF0YSwgcmV0dXJuCj4+Pj4gYSBi b29sZWFuIGZsYWcgc2lnbmFsaW5nIGlmIGEgc3RhbGUgZmlsZSBoYW5kbGUgaGFzIGJlZW4gZW5j b3VudGVyZWQuCj4+Pj4KPj4+PiBMaW5rIHRvIGlzc3VlIGluIGJ1Z3RyYWNrZXI6Cj4+Pj4gaHR0 cHM6Ly9idWd6aWxsYS5wcm94bW94LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NTg1Mwo+Pj4+Cj4+Pj4g TGluayB0byB0aHJlYWQgaW4gY29tbXVuaXR5IGZvcnVtOgo+Pj4+IGh0dHBzOi8vZm9ydW0ucHJv eG1veC5jb20vdGhyZWFkcy8xNTY4MjIvCj4+Pj4KPj4+PiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3Rp YW4gRWJuZXIgPGMuZWJuZXJAcHJveG1veC5jb20+Cj4+Pj4gLS0tCj4+Pj4gICAgcGJzLWNsaWVu dC9zcmMvcHhhci9jcmVhdGUucnMgfCAxMDAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLQo+Pj4+ICAgIDEgZmlsZSBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlv bnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9wYnMtY2xpZW50L3NyYy9weGFyL2NyZWF0ZS5y cyBiL3Bicy1jbGllbnQvc3JjL3B4YXIvY3JlYXRlLnJzCj4+Pj4gaW5kZXggMmE4NDQ5MjJjLi44 NWJlMDBkYjQgMTAwNjQ0Cj4+Pj4gLS0tIGEvcGJzLWNsaWVudC9zcmMvcHhhci9jcmVhdGUucnMK Pj4+PiArKysgYi9wYnMtY2xpZW50L3NyYy9weGFyL2NyZWF0ZS5ycwo+Pj4+IEBAIC0yMjgsNyAr MjI4LDcgQEAgd2hlcmUKPj4+PiAgICAgICAgbGV0IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxh Z3M6OmZyb21fbWFnaWMoZnNfbWFnaWMpOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgc3RhdCA9 IG5peDo6c3lzOjpzdGF0Ojpmc3RhdChzb3VyY2VfZGlyLmFzX3Jhd19mZCgpKT87Cj4+Pj4gLSAg ICBsZXQgbWV0YWRhdGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAgICBsZXQgKG1ldGFkYXRhLCBz dGFsZV9mZCkgPSBnZXRfbWV0YWRhdGEoCj4+Pgo+Pj4gc3RhbGVfZmQgaGVyZSBpcyBub3QgdXNl ZCBhdCBhbGwuLgo+Pgo+PiBZZXMsIHRoYXQgb25lIHNob3VsZCBsZWFkIHRvIGEgaGFyZCBlcnJv ciBhcyB5b3UgbWVudGlvbmVkLCBzbyBzaG91bGQgYmUKPj4gaGFuZGxlZCBhY2NvcmRpbmdseS4g SSB3aWxsIGFkYXB0IHRoaXMgdG8gYmUgYSBoYXJkIGVycm9yLgo+Pgo+Pj4KPj4+PiAgICAgICAg ICAgIHNvdXJjZV9kaXIuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAmc3RhdCwKPj4+PiAg ICAgICAgICAgIGZlYXR1cmVfZmxhZ3MgJiBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+IEBAIC03NDQs NyArNzQ0LDcgQEAgaW1wbCBBcmNoaXZlciB7Cj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIE9r KCgpKTsKPj4+PiAgICAgICAgICAgIH0KPj4+PiAgICAKPj4+PiAtICAgICAgICBsZXQgbWV0YWRh dGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAgICAgICAgbGV0IChtZXRhZGF0YSwgc3RhbGVfZmQp ID0gZ2V0X21ldGFkYXRhKAo+Pj4KPj4+IHRoaXMgb25lIGlzIHVzZWQKPj4+Cj4+Pj4gICAgICAg ICAgICAgICAgZmQuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAgICAgc3RhdCwKPj4+PiAg ICAgICAgICAgICAgICBzZWxmLmZsYWdzKCksCj4+Pj4gQEAgLTc1Myw2ICs3NTMsMTEgQEAgaW1w bCBBcmNoaXZlciB7Cj4+Pj4gICAgICAgICAgICAgICAgc2VsZi5za2lwX2UyYmlnX3hhdHRyLAo+ Pj4+ICAgICAgICAgICAgKT87Cj4+Pj4gICAgCj4+Pj4gKyAgICAgICAgaWYgc3RhbGVfZmQgewo+ Pj4+ICsgICAgICAgICAgICBsb2c6Ondhcm4hKCJTdGFsZSBmaWxlaGFuZGxlIGVuY291bnRlcmVk LCBza2lwIHs6P30iLCBzZWxmLnBhdGgpOwo+Pj4+ICsgICAgICAgICAgICByZXR1cm4gT2soKCkp Owo+Pj4+ICsgICAgICAgIH0KPj4+Cj4+PiBmb3IgdGhpcyB3YXJuaW5nLi4gYnV0IGdldF9tZXRh ZGF0YSBhbHJlYWR5IGxvZ3MgKHBvdGVudGlhbGx5IG11bHRpcGxlCj4+PiB0aW1lcyA7KSkgdGhh dCB0aGluZ3MgYXJlIGluY29tcGxldGUgY2F1c2Ugb2YgdGhlIHN0YWxlIGZpbGVoYW5kbGUsIHRo aXMKPj4+IG9ubHkgYWRkcyB0aGUgcGF0aCBjb250ZXh0Li4KPj4KPj4gYnV0IGhlcmUgdGhlcmUg aXMgYWxzbyBhbiBlYXJseSByZXR1cm4sIG5vdCBqdXN0IHRoZSBsb2cuLi4gdGhpcyBza2lwcwo+ PiBvdmVyIGFkZGluZyB0aGlzIGVudHJ5LCBhbmQgYW55IHN1YiBlbnRyaWVzIGlmIHRoZSBlbnRy eSBpcyBhIGRpcmVjdG9yeS4KPj4KPj4gVGhlIGxvZ2dpbmcgY291bGQgaG93ZXZlciBiZSBtb3Zl ZCB0byB0aGUgZ2V0X21ldGFkYXRhIGNhbGwgYW5kIG9ubHkgYmUKPj4gbG9nZ2VkIG9uY2UsIGFn cmVlZC4KPj4KPj4+Cj4+Pj4gKwo+Pj4+ICAgICAgICAgICAgaWYgc2VsZi5wcmV2aW91c19wYXls b2FkX2luZGV4LmlzX25vbmUoKSB7Cj4+Pj4gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKPj4+ PiAgICAgICAgICAgICAgICAgICAgLmFkZF9lbnRyeV90b19hcmNoaXZlKGVuY29kZXIsICZtdXQg Tm9uZSwgY19maWxlX25hbWUsIHN0YXQsIGZkLCAmbWV0YWRhdGEsIE5vbmUpCj4+Pj4gQEAgLTEz MDEsNyArMTMwNiwxNCBAQCBpbXBsIEFyY2hpdmVyIHsKPj4+PiAgICAgICAgICAgIGZpbGVfbmFt ZTogJlBhdGgsCj4+Pj4gICAgICAgICAgICBtZXRhZGF0YTogJk1ldGFkYXRhLAo+Pj4+ICAgICAg ICApIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4+PiAtICAgICAgICBsZXQgZGVzdCA9IG5peDo6 ZmNudGw6OnJlYWRsaW5rYXQoZmQuYXNfcmF3X2ZkKCksICZiIiJbLi5dKT87Cj4+Pj4gKyAgICAg ICAgbGV0IGRlc3QgPSBtYXRjaCBuaXg6OmZjbnRsOjpyZWFkbGlua2F0KGZkLmFzX3Jhd19mZCgp LCAmYiIiWy4uXSkgewo+Pj4+ICsgICAgICAgICAgICBPayhkZXN0KSA9PiBkZXN0LAo+Pj4+ICsg ICAgICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gewo+Pj4+ICsgICAgICAgICAgICAgICAg bG9nOjp3YXJuISgiU3RhbGUgZmlsZSBoYW5kbGUgZW5jb3VudGVyZWQsIHNraXAge2ZpbGVfbmFt ZTo/fSIpOwo+Pj4+ICsgICAgICAgICAgICAgICAgcmV0dXJuIE9rKCgpKTsKPj4+PiArICAgICAg ICAgICAgfQo+Pj4+ICsgICAgICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gRXJyKGVyci5pbnRv KCkpLAo+Pj4+ICsgICAgICAgIH07Cj4+Pj4gICAgICAgICAgICBlbmNvZGVyLmFkZF9zeW1saW5r KG1ldGFkYXRhLCBmaWxlX25hbWUsIGRlc3QpLmF3YWl0PzsKPj4+PiAgICAgICAgICAgIE9rKCgp KQo+Pj4+ICAgICAgICB9Cj4+Pj4gQEAgLTEzOTcsOSArMTQwOSwxMCBAQCBmbiBnZXRfbWV0YWRh dGEoCj4+Pj4gICAgICAgIGZzX21hZ2ljOiBpNjQsCj4+Pj4gICAgICAgIGZzX2ZlYXR1cmVfZmxh Z3M6ICZtdXQgRmxhZ3MsCj4+Pj4gICAgICAgIHNraXBfZTJiaWdfeGF0dHI6IGJvb2wsCj4+Pj4g LSkgLT4gUmVzdWx0PE1ldGFkYXRhLCBFcnJvcj4gewo+Pj4+ICspIC0+IFJlc3VsdDwoTWV0YWRh dGEsIGJvb2wpLCBFcnJvcj4gewo+Pj4+ICAgICAgICAvLyByZXF1aXJlZCBmb3Igc29tZSBvZiB0 aGVzZQo+Pj4+ICAgICAgICBsZXQgcHJvY19wYXRoID0gUGF0aDo6bmV3KCIvcHJvYy9zZWxmL2Zk LyIpLmpvaW4oZmQudG9fc3RyaW5nKCkpOwo+Pj4+ICsgICAgbGV0IG11dCBzdGFsZV9mZCA9IGZh bHNlOwo+Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgbXV0IG1ldGEgPSBNZXRhZGF0YSB7Cj4+Pj4g ICAgICAgICAgICBzdGF0OiBweGFyOjpTdGF0IHsKPj4+PiBAQCAtMTQxMiwxOCArMTQyNSwyNyBA QCBmbiBnZXRfbWV0YWRhdGEoCj4+Pj4gICAgICAgICAgICAuLkRlZmF1bHQ6OmRlZmF1bHQoKQo+ Pj4+ICAgICAgICB9Owo+Pj4+ICAgIAo+Pj4+IC0gICAgZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+ PiArICAgIGlmIGdldF94YXR0cl9mY2Fwc19hY2woCj4+Pgo+Pj4gb25seSBjYWxsIHNpdGUsIGNv dWxkIGp1c3QgYnViYmxlIHVwIEVTVEFMRQo+Pgo+PiBBcyBtZW50aW9uZWQsIHRoaXMgaGFzIDIg aXNzdWVzOiBMb3NzIG9mIGFueWhvdyBlcnJvciBjb250ZXh0IGZvciB3aGljaAo+PiBzdWItZnVu Y3Rpb24gdGhlIEVycm5vIG9jY3VycmVkIGFuZCBzdWItZnVuY3Rpb25zIGxpa2UgYHByb2Nlc3Nf YWNsYAo+PiB3aGljaCBkbyBub3QgcmVseSBvbiBmZmkgY2FsbHMgYXQgYWxsLCByZXR1cm5pbmcg cGxhaW4gYGFueWhvdzo6RXJyb3JgLAo+PiB3aGljaCBncmFudGVkIGNvdWxkIGJlIHJlZGVmaW5l ZCB0byByZXR1cm4gYW4gRXJybm8uCj4+Cj4+Pgo+Pj4+ICAgICAgICAgICAgJm11dCBtZXRhLAo+ Pj4+ICAgICAgICAgICAgZmQsCj4+Pj4gICAgICAgICAgICAmcHJvY19wYXRoLAo+Pj4+ICAgICAg ICAgICAgZmxhZ3MsCj4+Pj4gICAgICAgICAgICBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+ICAgICAg ICAgICAgc2tpcF9lMmJpZ194YXR0ciwKPj4+PiAtICAgICk/Owo+Pj4+IC0gICAgZ2V0X2NoYXR0 cigmbXV0IG1ldGEsIGZkKT87Cj4+Pj4gKyAgICApPyB7Cj4+Pj4gKyAgICAgICAgc3RhbGVfZmQg PSB0cnVlOwo+Pj4+ICsgICAgICAgIGxvZzo6d2FybiEoIlN0YWxlIGZpbGVoYW5kbGUsIHhhdHRy cyBpbmNvbXBsZXRlIik7Cj4+Pj4gKyAgICB9Cj4+Pj4gKyAgICBpZiBnZXRfY2hhdHRyKCZtdXQg bWV0YSwgZmQpPyB7Cj4+Pgo+Pj4gc2FtZQo+Pj4KPj4+PiArICAgICAgICBzdGFsZV9mZCA9IHRy dWU7Cj4+Pj4gKyAgICAgICAgbG9nOjp3YXJuISgiU3RhbGUgZmlsZWhhbmRsZSwgY2hhdHRyIGlu Y29tcGxldGUiKTsKPj4+PiArICAgIH0KPj4+PiAgICAgICAgZ2V0X2ZhdF9hdHRyKCZtdXQgbWV0 YSwgZmQsIGZzX21hZ2ljKT87Cj4+Pj4gLSAgICBnZXRfcXVvdGFfcHJvamVjdF9pZCgmbXV0IG1l dGEsIGZkLCBmbGFncywgZnNfbWFnaWMpPzsKPj4+PiAtICAgIE9rKG1ldGEpCj4+Pj4gKyAgICBp ZiBnZXRfcXVvdGFfcHJvamVjdF9pZCgmbXV0IG1ldGEsIGZkLCBmbGFncywgZnNfbWFnaWMpPyB7 Cj4+Pgo+Pj4gc2FtZQo+Pj4KPj4+PiArICAgICAgICBzdGFsZV9mZCA9IHRydWU7Cj4+Pj4gKyAg ICAgICAgbG9nOjp3YXJuISgiU3RhbGUgZmlsZWhhbmRsZSwgcXVvdGEgIHByb2plY3QgaWQgaW5j b21wbGV0ZSIpOwo+Pj4+ICsgICAgfQo+Pj4KPj4+IHNlZSBhYm92ZSBhbmQgd2F5IGRvd24gYmVs b3csIElNSE8gYWxsIG9mIHRoZXNlIGNvdWxkIGp1c3QgYnViYmxlIHVwIHRoZSBlcnJvci4uCj4+ Pgo+Pj4+ICsgICAgT2soKG1ldGEsIHN0YWxlX2ZkKSkKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4g ICAgZm4gZ2V0X2ZjYXBzKAo+Pj4+IEBAIC0xNDMxLDIyICsxNDUzLDIzIEBAIGZuIGdldF9mY2Fw cygKPj4+PiAgICAgICAgZmQ6IFJhd0ZkLAo+Pj4+ICAgICAgICBmbGFnczogRmxhZ3MsCj4+Pj4g ICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3M6ICZtdXQgRmxhZ3MsCj4+Pj4gLSkgLT4gUmVzdWx0PCgp LCBFcnJvcj4gewo+Pj4+ICspIC0+IFJlc3VsdDxib29sLCBFcnJvcj4gewo+Pj4KPj4+IHRoaXMg aXMgb25seSBjYWxsZWQgYnkgZ2V0X3hhdHRyX2ZjYXBzX2FjbCwgc28gY291bGQganVzdCBidWJi bGUgdXAKPj4+IEVTVEFMRSBhcyB3ZWxsLi4KPj4+Cj4+Pj4gICAgICAgIGlmICFmbGFncy5jb250 YWlucyhGbGFnczo6V0lUSF9GQ0FQUykgewo+Pj4+IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+ Pj4gKyAgICAgICAgcmV0dXJuIE9rKGZhbHNlKTsKPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+ ICAgICAgICBtYXRjaCB4YXR0cjo6ZmdldHhhdHRyKGZkLCB4YXR0cjo6WEFUVFJfTkFNRV9GQ0FQ Uykgewo+Pj4+ICAgICAgICAgICAgT2soZGF0YSkgPT4gewo+Pj4+ICAgICAgICAgICAgICAgIG1l dGEuZmNhcHMgPSBTb21lKHB4YXI6OmZvcm1hdDo6RkNhcHMgeyBkYXRhIH0pOwo+Pj4+IC0gICAg ICAgICAgICBPaygoKSkKPj4+PiArICAgICAgICAgICAgT2soZmFsc2UpCj4+Pj4gICAgICAgICAg ICB9Cj4+Pj4gLSAgICAgICAgRXJyKEVycm5vOjpFTk9EQVRBKSA9PiBPaygoKSksCj4+Pj4gKyAg ICAgICAgRXJyKEVycm5vOjpFTk9EQVRBKSA9PiBPayhmYWxzZSksCj4+Pj4gICAgICAgICAgICBF cnIoRXJybm86OkVPUE5PVFNVUFApID0+IHsKPj4+PiAgICAgICAgICAgICAgICBmc19mZWF0dXJl X2ZsYWdzLnJlbW92ZShGbGFnczo6V0lUSF9GQ0FQUyk7Cj4+Pj4gLSAgICAgICAgICAgIE9rKCgp KQo+Pj4+ICsgICAgICAgICAgICBPayhmYWxzZSkKPj4+PiAgICAgICAgICAgIH0KPj4+PiAtICAg ICAgICBFcnIoRXJybm86OkVCQURGKSA9PiBPaygoKSksIC8vIHN5bWxpbmtzCj4+Pj4gKyAgICAg ICAgRXJyKEVycm5vOjpFQkFERikgPT4gT2soZmFsc2UpLCAvLyBzeW1saW5rcwo+Pj4+ICsgICAg ICAgIEVycihFcnJubzo6RVNUQUxFKSA9PiBPayh0cnVlKSwKPj4+PiAgICAgICAgICAgIEVycihl cnIpID0+IEVycihlcnIpLmNvbnRleHQoImZhaWxlZCB0byByZWFkIGZpbGUgY2FwYWJpbGl0aWVz IiksCj4+Pj4gICAgICAgIH0KPj4+PiAgICB9Cj4+Pj4gQEAgLTE0NTgsMzIgKzE0ODEsMzUgQEAg Zm4gZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+PiAgICAgICAgZmxhZ3M6IEZsYWdzLAo+Pj4+ICAg ICAgICBmc19mZWF0dXJlX2ZsYWdzOiAmbXV0IEZsYWdzLAo+Pj4+ICAgICAgICBza2lwX2UyYmln X3hhdHRyOiBib29sLAo+Pj4+IC0pIC0+IFJlc3VsdDwoKSwgRXJyb3I+IHsKPj4+PiArKSAtPiBS ZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4+PiAgICAgICAgaWYgIWZsYWdzLmNvbnRhaW5zKEZsYWdz OjpXSVRIX1hBVFRSUykgewo+Pj4+IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAgICAg ICAgcmV0dXJuIE9rKGZhbHNlKTsKPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+ICAgICAgICBs ZXQgeGF0dHJzID0gbWF0Y2ggeGF0dHI6OmZsaXN0eGF0dHIoZmQpIHsKPj4+PiAgICAgICAgICAg IE9rKG5hbWVzKSA9PiBuYW1lcywKPj4+PiAgICAgICAgICAgIEVycihFcnJubzo6RU9QTk9UU1VQ UCkgPT4gewo+Pj4+ICAgICAgICAgICAgICAgIGZzX2ZlYXR1cmVfZmxhZ3MucmVtb3ZlKEZsYWdz OjpXSVRIX1hBVFRSUyk7Cj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAg ICAgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgICAgICB9Cj4+Pj4gICAgICAg ICAgICBFcnIoRXJybm86OkUyQklHKSA9PiB7Cj4+Pj4gICAgICAgICAgICAgICAgbWF0Y2ggc2tp cF9lMmJpZ194YXR0ciB7Cj4+Pj4gLSAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPaygo KSksCj4+Pj4gKyAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPayhmYWxzZSksCj4+Pj4g ICAgICAgICAgICAgICAgICAgIGZhbHNlID0+IHsKPj4+PiAgICAgICAgICAgICAgICAgICAgICAg IGJhaWwhKCJ7fSAodHJ5IC0tc2tpcC1lMmJpZy14YXR0cikiLCBFcnJubzo6RTJCSUcudG9fc3Ry aW5nKCkpOwo+Pj4+ICAgICAgICAgICAgICAgICAgICB9Cj4+Pj4gICAgICAgICAgICAgICAgfTsK Pj4+PiAgICAgICAgICAgIH0KPj4+PiAtICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiByZXR1 cm4gT2soKCkpLCAvLyBzeW1saW5rcwo+Pj4+ICsgICAgICAgIEVycihFcnJubzo6RUJBREYpID0+ IHJldHVybiBPayhmYWxzZSksIC8vIHN5bWxpbmtzCj4+Pj4gKyAgICAgICAgRXJyKEVycm5vOjpF U1RBTEUpID0+IHJldHVybiBPayh0cnVlKSwKPj4+Cj4+PiBzZWUgYWJvdmUKPj4+Cj4+Pj4gICAg ICAgICAgICBFcnIoZXJyKSA9PiByZXR1cm4gRXJyKGVycikuY29udGV4dCgiZmFpbGVkIHRvIHJl YWQgeGF0dHJzIiksCj4+Pj4gICAgICAgIH07Cj4+Pj4gICAgCj4+Pj4gICAgICAgIGZvciBhdHRy IGluICZ4YXR0cnMgewo+Pj4+ICAgICAgICAgICAgaWYgeGF0dHI6OmlzX3NlY3VyaXR5X2NhcGFi aWxpdHkoYXR0cikgewo+Pj4+IC0gICAgICAgICAgICBnZXRfZmNhcHMobWV0YSwgZmQsIGZsYWdz LCBmc19mZWF0dXJlX2ZsYWdzKT87Cj4+Pj4gKyAgICAgICAgICAgIGlmIGdldF9mY2FwcyhtZXRh LCBmZCwgZmxhZ3MsIGZzX2ZlYXR1cmVfZmxhZ3MpPyB7Cj4+Pj4gKyAgICAgICAgICAgICAgICBy ZXR1cm4gT2sodHJ1ZSk7Cj4+Pgo+Pj4gc2VlIGFib3ZlCj4+Pgo+Pj4+ICsgICAgICAgICAgICB9 Cj4+Pj4gICAgICAgICAgICAgICAgY29udGludWU7Cj4+Pj4gICAgICAgICAgICB9Cj4+Pj4gICAg Cj4+Pj4gQEAgLTE1MDUsMzUgKzE1MzEsMzcgQEAgZm4gZ2V0X3hhdHRyX2ZjYXBzX2FjbCgKPj4+ PiAgICAgICAgICAgICAgICBFcnIoRXJybm86OkVCQURGKSA9PiAoKSwgICAvLyBzeW1saW5rcywg c2hvdWxkbid0IGJlIGFibGUgdG8gcmVhY2ggdGhpcyBlaXRoZXIKPj4+PiAgICAgICAgICAgICAg ICBFcnIoRXJybm86OkUyQklHKSA9PiB7Cj4+Pj4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNr aXBfZTJiaWdfeGF0dHIgewo+Pj4+IC0gICAgICAgICAgICAgICAgICAgIHRydWUgPT4gcmV0dXJu IE9rKCgpKSwKPj4+PiArICAgICAgICAgICAgICAgICAgICB0cnVlID0+IHJldHVybiBPayhmYWxz ZSksCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSA9PiB7Cj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgYmFpbCEoInt9ICh0cnkgLS1za2lwLWUyYmlnLXhhdHRyKSIsIEVy cm5vOjpFMkJJRy50b19zdHJpbmcoKSk7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICB9Cj4+ Pj4gICAgICAgICAgICAgICAgICAgIH07Cj4+Pj4gICAgICAgICAgICAgICAgfQo+Pj4+ICsgICAg ICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gcmV0dXJuIE9rKHRydWUpLCAvLyBzeW1saW5r cwo+Pj4KPj4+IHNhbWUgaGVyZSAoYW5kIHN0cmF5IGNvcHktcGFzdGUgY29tbWVudCBJIGd1ZXNz PykKPj4+Cj4+Pj4gICAgICAgICAgICAgICAgRXJyKGVycikgPT4gewo+Pj4+ICAgICAgICAgICAg ICAgICAgICByZXR1cm4gRXJyKGVycikuY29udGV4dChmb3JtYXQhKCJlcnJvciByZWFkaW5nIGV4 dGVuZGVkIGF0dHJpYnV0ZSB7YXR0cjo/fSIpKQo+Pj4+ICAgICAgICAgICAgICAgIH0KPj4+PiAg ICAgICAgICAgIH0KPj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+IC0gICAgT2soKCkpCj4+Pj4g KyAgICBPayhmYWxzZSkKPj4+PiAgICB9Cj4+Pj4gICAgCj4+Pj4gLWZuIGdldF9jaGF0dHIobWV0 YWRhdGE6ICZtdXQgTWV0YWRhdGEsIGZkOiBSYXdGZCkgLT4gUmVzdWx0PCgpLCBFcnJvcj4gewo+ Pj4+ICtmbiBnZXRfY2hhdHRyKG1ldGFkYXRhOiAmbXV0IE1ldGFkYXRhLCBmZDogUmF3RmQpIC0+ IFJlc3VsdDxib29sLCBFcnJvcj4gewo+Pj4+ICAgICAgICBsZXQgbXV0IGF0dHI6IGxpYmM6OmNf bG9uZyA9IDA7Cj4+Pj4gICAgCj4+Pj4gICAgICAgIG1hdGNoIHVuc2FmZSB7IGZzOjpyZWFkX2F0 dHJfZmQoZmQsICZtdXQgYXR0cikgfSB7Cj4+Pj4gICAgICAgICAgICBPayhfKSA9PiAoKSwKPj4+ PiArICAgICAgICBFcnIoRXJybm86OkVTVEFMRSkgPT4gcmV0dXJuIE9rKHRydWUpLAo+Pj4+ICAg ICAgICAgICAgRXJyKGVycm5vKSBpZiBlcnJub19pc191bnN1cHBvcnRlZChlcnJubykgPT4gewo+ Pj4+IC0gICAgICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4+ICsgICAgICAgICAgICByZXR1cm4g T2soZmFsc2UpOwo+Pj4+ICAgICAgICAgICAgfQo+Pj4+ICAgICAgICAgICAgRXJyKGVycikgPT4g cmV0dXJuIEVycihlcnIpLmNvbnRleHQoImZhaWxlZCB0byByZWFkIGZpbGUgYXR0cmlidXRlcyIp LAo+Pj4+ICAgICAgICB9Cj4+Pj4gICAgCj4+Pj4gICAgICAgIG1ldGFkYXRhLnN0YXQuZmxhZ3Mg fD0gRmxhZ3M6OmZyb21fY2hhdHRyKGF0dHIpLmJpdHMoKTsKPj4+PiAgICAKPj4+PiAtICAgIE9r KCgpKQo+Pj4+ICsgICAgT2soZmFsc2UpCj4+Pj4gICAgfQo+Pj4+ICAgIAo+Pj4+ICAgIGZuIGdl dF9mYXRfYXR0cihtZXRhZGF0YTogJm11dCBNZXRhZGF0YSwgZmQ6IFJhd0ZkLCBmc19tYWdpYzog aTY0KSAtPiBSZXN1bHQ8KCksIEVycm9yPiB7Cj4+Pj4gQEAgLTE1NjQsMzAgKzE1OTIsMzQgQEAg Zm4gZ2V0X3F1b3RhX3Byb2plY3RfaWQoCj4+Pj4gICAgICAgIGZkOiBSYXdGZCwKPj4+PiAgICAg ICAgZmxhZ3M6IEZsYWdzLAo+Pj4+ICAgICAgICBtYWdpYzogaTY0LAo+Pj4+IC0pIC0+IFJlc3Vs dDwoKSwgRXJyb3I+IHsKPj4+PiArKSAtPiBSZXN1bHQ8Ym9vbCwgRXJyb3I+IHsKPj4+Cj4+PiBz ZWUgYWJvdmUKPj4+Cj4+Pj4gICAgICAgIGlmICEobWV0YWRhdGEuaXNfZGlyKCkgfHwgbWV0YWRh dGEuaXNfcmVndWxhcl9maWxlKCkpIHsKPj4+PiAtICAgICAgICByZXR1cm4gT2soKCkpOwo+Pj4+ ICsgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgIH0KPj4+PiAgICAKPj4+PiAg ICAgICAgaWYgIWZsYWdzLmNvbnRhaW5zKEZsYWdzOjpXSVRIX1FVT1RBX1BST0pJRCkgewo+Pj4+ IC0gICAgICAgIHJldHVybiBPaygoKSk7Cj4+Pj4gKyAgICAgICAgcmV0dXJuIE9rKGZhbHNlKTsK Pj4+PiAgICAgICAgfQo+Pj4+ICAgIAo+Pj4+ICAgICAgICB1c2UgcHJveG1veF9zeXM6OmxpbnV4 OjptYWdpYzo6KjsKPj4+PiAgICAKPj4+PiAgICAgICAgbWF0Y2ggbWFnaWMgewo+Pj4+ICAgICAg ICAgICAgRVhUNF9TVVBFUl9NQUdJQyB8IFhGU19TVVBFUl9NQUdJQyB8IEZVU0VfU1VQRVJfTUFH SUMgfCBaRlNfU1VQRVJfTUFHSUMgPT4gKCksCj4+Pj4gLSAgICAgICAgXyA9PiByZXR1cm4gT2so KCkpLAo+Pj4+ICsgICAgICAgIF8gPT4gcmV0dXJuIE9rKGZhbHNlKSwKPj4+PiAgICAgICAgfQo+ Pj4+ICAgIAo+Pj4+ICAgICAgICBsZXQgbXV0IGZzeGF0dHIgPSBmczo6RlNYQXR0cjo6ZGVmYXVs dCgpOwo+Pj4+ICAgICAgICBsZXQgcmVzID0gdW5zYWZlIHsgZnM6OmZzX2lvY19mc2dldHhhdHRy KGZkLCAmbXV0IGZzeGF0dHIpIH07Cj4+Pj4gICAgCj4+Pj4gKyAgICBpZiBsZXQgRXJyKEVycm5v OjpFU1RBTEUpID0gcmVzIHsKPj4+PiArICAgICAgICByZXR1cm4gT2sodHJ1ZSk7Cj4+Pj4gKyAg ICB9Cj4+Pj4gKwo+Pj4+ICAgICAgICAvLyBPbiBzb21lIEZVU0UgZmlsZXN5c3RlbXMgaXQgY2Fu IGhhcHBlbiB0aGF0IGlvY3RsIGlzIG5vdCBzdXBwb3J0ZWQuCj4+Pj4gICAgICAgIC8vIEZvciB0 aGVzZSBjYXNlcyBwcm9qaWQgaXMgc2V0IHRvIDAgd2hpbGUgdGhlIGVycm9yIGlzIGlnbm9yZWQu Cj4+Pj4gICAgICAgIGlmIGxldCBFcnIoZXJybm8pID0gcmVzIHsKPj4+PiAgICAgICAgICAgIGlm IGVycm5vX2lzX3Vuc3VwcG9ydGVkKGVycm5vKSB7Cj4+Pj4gLSAgICAgICAgICAgIHJldHVybiBP aygoKSk7Cj4+Pj4gKyAgICAgICAgICAgIHJldHVybiBPayhmYWxzZSk7Cj4+Pj4gICAgICAgICAg ICB9IGVsc2Ugewo+Pj4+ICAgICAgICAgICAgICAgIHJldHVybiBFcnIoZXJybm8pLmNvbnRleHQo ImVycm9yIHdoaWxlIHJlYWRpbmcgcXVvdGEgcHJvamVjdCBpZCIpOwo+Pj4+ICAgICAgICAgICAg fQo+Pj4+IEBAIC0xNTk3LDcgKzE2MjksNyBAQCBmbiBnZXRfcXVvdGFfcHJvamVjdF9pZCgKPj4+ PiAgICAgICAgaWYgcHJvamlkICE9IDAgewo+Pj4+ICAgICAgICAgICAgbWV0YWRhdGEucXVvdGFf cHJvamVjdF9pZCA9IFNvbWUocHhhcjo6Zm9ybWF0OjpRdW90YVByb2plY3RJZCB7IHByb2ppZCB9 KTsKPj4+PiAgICAgICAgfQo+Pj4+IC0gICAgT2soKCkpCj4+Pj4gKyAgICBPayhmYWxzZSkKPj4+ PiAgICB9Cj4+Pj4gICAgCj4+Pj4gICAgZm4gZ2V0X2FjbCgKPj4+PiBAQCAtMTg0MCw3ICsxODcy LDcgQEAgbW9kIHRlc3RzIHsKPj4+PiAgICAgICAgICAgIGxldCBmc19tYWdpYyA9IGRldGVjdF9m c190eXBlKGRpci5hc19yYXdfZmQoKSkudW53cmFwKCk7Cj4+Pj4gICAgICAgICAgICBsZXQgc3Rh dCA9IG5peDo6c3lzOjpzdGF0Ojpmc3RhdChkaXIuYXNfcmF3X2ZkKCkpLnVud3JhcCgpOwo+Pj4+ ICAgICAgICAgICAgbGV0IG11dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMo ZnNfbWFnaWMpOwo+Pj4+IC0gICAgICAgIGxldCBtZXRhZGF0YSA9IGdldF9tZXRhZGF0YSgKPj4+ PiArICAgICAgICBsZXQgKG1ldGFkYXRhLCBfKSA9IGdldF9tZXRhZGF0YSgKPj4+Cj4+PiBubyB1 c2Ugb2YgdGhlIG5ldyByZXR1cm4gdmFsdWUKPj4+Cj4+Pj4gICAgICAgICAgICAgICAgZGlyLmFz X3Jhd19mZCgpLAo+Pj4+ICAgICAgICAgICAgICAgICZzdGF0LAo+Pj4+ICAgICAgICAgICAgICAg IGZzX2ZlYXR1cmVfZmxhZ3MsCj4+Pj4gQEAgLTE5MzcsNyArMTk2OSw3IEBAIG1vZCB0ZXN0cyB7 Cj4+Pj4gICAgICAgICAgICAgICAgbGV0IHN0YXQgPSBuaXg6OnN5czo6c3RhdDo6ZnN0YXQoc291 cmNlX2Rpci5hc19yYXdfZmQoKSkudW53cmFwKCk7Cj4+Pj4gICAgICAgICAgICAgICAgbGV0IG11 dCBmc19mZWF0dXJlX2ZsYWdzID0gRmxhZ3M6OmZyb21fbWFnaWMoZnNfbWFnaWMpOwo+Pj4+ICAg IAo+Pj4+IC0gICAgICAgICAgICBsZXQgbWV0YWRhdGEgPSBnZXRfbWV0YWRhdGEoCj4+Pj4gKyAg ICAgICAgICAgIGxldCAobWV0YWRhdGEsIF8pID0gZ2V0X21ldGFkYXRhKAo+Pj4KPj4+IG5vIHVz ZSBlaXRoZXIuLiBzbyB3b3VsZG4ndCBpdCBtYWtlIG1vcmUgc2Vuc2UgdG8gcGFzcyBpbiBhIHBh dGggYW5kIGxvZwo+Pj4gdGhlIGNvbnRleHQgcmlnaHQgaW4gZ2V0X21ldGFkYXRhPyBvciB0cmVh dCB0aGUgc3RhbGUgRkQgYXMgYW4gZXJyb3IsCj4+PiBhbmQgYWRkIHRoZSBjb250ZXh0L3BhdGgg YXMgcGFydCBvZiBlcnJvciBoYW5kbGluZz8KPj4KPj4gVGhlIGZpcnN0IGFwcHJvYWNoIHNlZW1z IGJldHRlciwgd2lsbCBob3dldmVyIG5vdCBoZWxwIHRvIGRpZmZlcmVudGlhdGUKPj4gdGhlICho YXJkKSBlcnJvcnMgZnJvbSB0aGUgc29mdCBlcnJvciBFU1RBTEUsIHdoaWNoIHJlcXVpcmVzIHRv IHNraXAKPj4gb3ZlciBlbnRyaWVzIGF0IHRoZSBgZ2V0X21ldGFkYXRhYCBjYWxsIHNpZGUgY29u ZGl0aW9uYWxseS4KPj4KPj4gUmV0dXJuaW5nIHRoZSBzdGFsZSBmaWxlIGhhbmRsZSBlcnJvciBh cyBgQW55aG93OjpFcnJvcmAgYWxzbyBkb2VzIG5vdAo+PiBhbGxvdyB0byBkaXN0aW5ndWlzaCBm cm9tIG90aGVyIChoYXJkKSBlcnJvcnMsIHNvIGFnYWluIGl0IGNhbm5vdCBiZQo+PiBoYW5kbGVk IGFzIHNvZnQgZXJyb3IgYXQgdGhlIGNhbGwgc2l0ZS4KPj4KPj4gQW5kIHJldHVybmluZyBhbGwg ZXJyb3JzIGFzIGBFcnJub2AgaGFzIHRoZSBsb3NzIG9mIGVycm9yIGNvbnRleHQgaXNzdWUKPj4g YXMgZGVzY3JpYmVkIGFib3ZlLgo+Pgo+PiBJIHdpbGwgc2VlIGlmIEkgY2FuIGNvdmVyIHRoaXMg YmV0dGVyIGJ5IHJlZmFjdG9yaW5nIHRoZSBjb2RlLCBhcyBtb3N0Cj4+IG9mIHRoZSBoZWxwZXJz IGhhdmUgYSBzaW5nbGUgY2FsbCBzaWRlLCBzbyBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8KPj4g cmVvcmdhbml6ZSB3aXRob3V0IG11Y2ggc2lkZSBlZmZlY3RzLgo+Pgo+Pj4KPj4+IHRoZSBmb3Vy IGNhbGwgc2l0ZXMgYXJlOgo+Pj4gLSB0d28gcmVsYXRlZCB0byB0ZXN0cywgd2UgY2FuIHByb2Jh Ymx5IHRyZWF0IEVTVEFMRSBhcyBoYXJkIGVycm9yIHRoZXJlCj4+PiAtIHRoZSBvbmUgZm9yIG9i dGFpbmluZyB0aGUgbWV0YWRhdGEgb2YgdGhlIHNvdXJjZSBkaXIgb2YgdGhlIGFyY2hpdmUsCj4+ PiAgICAgaWYgdGhhdCBpcyBzdGFsZSB3ZSBjYW4ndCBjcmVhdGUgYW4gYXJjaGl2ZSAtPiBoYXJk IGVycm9yIGFzIHdlbGwKPj4+IC0gYWRkaW5nIGFuIGVudHJ5OiBmb3IgdGhlIHN0YWxlIGNhc2Us IHdlIGFscmVhZHkgbG9nIGEgd2FybmluZyBhbmQKPj4+ICAgICBwcm9jZWVkIHdpdGggdGhlIG5l eHQgZW50cnksIHNvIHdlIGRvbid0IGJlbmVmaXQgZnJvbSB0aGUgZmFjdCB0aGF0Cj4+PiAgICAg KGluY29tcGxldGUpIG1ldGFkYXRhIGFuZCB0aGUgc3RhbGVuZXNzIGlzIHJldHVybmVkLCBhcyBv cHBvc2VkIHRvCj4+PiAgICAganVzdCB0cmVhdGluZyBFU1RBTEUgYXMgYW4gZXJyb3IgdGhhdCB3 ZSBjYW4gImNhdGNoIiBhbmQgaGFuZGxlLi4KPj4+Cj4+Pj4gICAgICAgICAgICAgICAgICAgIHNv dXJjZV9kaXIuYXNfcmF3X2ZkKCksCj4+Pj4gICAgICAgICAgICAgICAgICAgICZzdGF0LAo+Pj4+ ICAgICAgICAgICAgICAgICAgICBmc19mZWF0dXJlX2ZsYWdzLAo+Pj4+IC0tIAo+Pj4+IDIuMzku NQo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+Pj4gcGJzLWRldmVsIG1haWxpbmcgbGlzdAo+Pj4+IHBicy1kZXZlbEBs aXN0cy5wcm94bW94LmNvbQo+Pj4+IGh0dHBzOi8vbGlzdHMucHJveG1veC5jb20vY2dpLWJpbi9t YWlsbWFuL2xpc3RpbmZvL3Bicy1kZXZlbAo+Pj4+Cj4+Pj4KPj4+Pgo+Pj4KPj4+Cj4+PiBfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4gcGJzLWRldmVs IG1haWxpbmcgbGlzdAo+Pj4gcGJzLWRldmVsQGxpc3RzLnByb3htb3guY29tCj4+PiBodHRwczov L2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2ZWwKPj4+ Cj4+Pgo+Pgo+PgoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpwYnMtZGV2ZWwgbWFpbGluZyBsaXN0CnBicy1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpo dHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wYnMtZGV2 ZWwK