From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 899311FF15E for ; Mon, 24 Nov 2025 18:04:25 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 4D0D12C42; Mon, 24 Nov 2025 18:04:34 +0100 (CET) From: Samuel Rufinatscha To: pbs-devel@lists.proxmox.com Date: Mon, 24 Nov 2025 18:04:19 +0100 Message-ID: <20251124170423.303300-3-s.rufinatscha@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251124170423.303300-1-s.rufinatscha@proxmox.com> References: <20251124170423.303300-1-s.rufinatscha@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1764003833560 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.154 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 POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pbs-devel] [PATCH proxmox-backup v5 2/4] partial fix #6049: datastore: impl ConfigVersionCache fast path for lookups 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pbs-devel-bounces@lists.proxmox.com Sender: "pbs-devel" UmVwZWF0ZWQgL3N0YXR1cyByZXF1ZXN0cyBjYXVzZWQgbG9va3VwX2RhdGFzdG9yZSgpIHRvIHJl LXJlYWQgYW5kCnBhcnNlIGRhdGFzdG9yZS5jZmcgb24gZXZlcnkgY2FsbC4gVGhlIGlzc3VlIHdh cyBtZW50aW9uZWQgaW4gcmVwb3J0CiM2MDQ5IFsxXS4gY2FyZ28tZmxhbWVncmFwaCBbMl0gY29u ZmlybWVkIHRoYXQgdGhlIGhvdCBwYXRoIGlzCmRvbWluYXRlZCBieSBwYnNfY29uZmlnOjpkYXRh c3RvcmU6OmNvbmZpZygpIChjb25maWcgcGFyc2luZykuCgpUaGlzIHBhdGNoIGltcGxlbWVudHMg Y2FjaGluZyBvZiB0aGUgZ2xvYmFsIGRhdGFzdG9yZS5jZmcgdXNpbmcgdGhlCmdlbmVyYXRpb24g bnVtYmVycyBmcm9tIHRoZSBzaGFyZWQgY29uZmlnIHZlcnNpb24gY2FjaGUuIEl0IGNhY2hlcyB0 aGUKZGF0YXN0b3JlLmNmZyBhbG9uZyB3aXRoIHRoZSBnZW5lcmF0aW9uIG51bWJlciBhbmQsIHdo ZW4gYSBzdWJzZXF1ZW50Cmxvb2t1cCBzZWVzIHRoZSBzYW1lIGdlbmVyYXRpb24sIGl0IHJldXNl cyB0aGUgY2FjaGVkIGNvbmZpZyB3aXRob3V0CnJlLXJlYWRpbmcgaXQgZnJvbSBkaXNrLiBJZiB0 aGUgZ2VuZXJhdGlvbiBkaWZmZXJzCihvciB0aGUgY2FjaGUgaXMgdW5hdmFpbGFibGUpLCB0aGUg Y29uZmlnIGlzIHJlLXJlYWQgZnJvbSBkaXNrLgpJZiBgdXBkYXRlX2NhY2hlID0gdHJ1ZWAsIHRo ZSBuZXcgY29uZmlnIGFuZCBjdXJyZW50IGdlbmVyYXRpb24gYXJlCnBlcnNpc3RlZCBpbiB0aGUg Y2FjaGUuIEluIHRoaXMgY2FzZSwgY2FsbGVycyBtdXN0IGhvbGQgdGhlIGRhdGFzdG9yZQpjb25m aWcgbG9jayB0byBhdm9pZCByYWNpbmcgd2l0aCBjb25jdXJyZW50IGNvbmZpZyBjaGFuZ2VzLgpJ ZiBgdXBkYXRlX2NhY2hlYCBpcyBgZmFsc2VgIGFuZCBnZW5lcmF0aW9uIGRpZCBub3QgbWF0Y2gs IHRoZSBmcmVzaGx5CnJlYWQgY29uZmlnIGlzIHJldHVybmVkIGJ1dCB0aGUgY2FjaGUgaXMgbGVm dCB1bmNoYW5nZWQuIElmCmBDb25maWdWZXJzaW9uQ2FjaGVgIGlzIG5vdCBhdmFpbGFibGUsIHRo ZSBjb25maWcgaXMgYWx3YXlzIHJlYWQgZnJvbQpkaXNrIGFuZCBgTm9uZWAgaXMgcmV0dXJuZWQg YXMgZ2VuZXJhdGlvbi4KCkJlaGF2aW9yYWwgbm90ZXMKCi0gVGhlIGdlbmVyYXRpb24gaXMgYnVt cGVkIHZpYSB0aGUgZXhpc3Rpbmcgc2F2ZV9jb25maWcoKSBwYXRoLCBzbwogIEFQSS1kcml2ZW4g Y29uZmlnIGNoYW5nZXMgYXJlIGRldGVjdGVkIGltbWVkaWF0ZWx5LgotIE1hbnVhbCBlZGl0cyB0 byBkYXRhc3RvcmUuY2ZnIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoaXMgaXMgY292ZXJlZCBpbiBhCiAg ZGVkaWNhdGVkIHBhdGNoIGluIHRoaXMgc2VyaWVzLgotIERhdGFTdG9yZTo6ZHJvcCBzdGlsbCBw ZXJmb3JtcyBhIGNvbmZpZyByZWFkIG9uIHRoZSBjb21tb24gcGF0aDsKICBhbHNvIGNvdmVyZWQg aW4gYSBkZWRpY2F0ZWQgcGF0Y2ggaW4gdGhpcyBzZXJpZXMuCgpMaW5rcwoKWzFdIEJ1Z3ppbGxh OiBodHRwczovL2J1Z3ppbGxhLnByb3htb3guY29tL3Nob3dfYnVnLmNnaT9pZD02MDQ5ClsyXSBj YXJnby1mbGFtZWdyYXBoOiBodHRwczovL2dpdGh1Yi5jb20vZmxhbWVncmFwaC1ycy9mbGFtZWdy YXBoCgpGaXhlczogIzYwNDkKU2lnbmVkLW9mZi1ieTogU2FtdWVsIFJ1ZmluYXRzY2hhIDxzLnJ1 ZmluYXRzY2hhQHByb3htb3guY29tPgotLS0KQ2hhbmdlczoKCkZyb20gdjEg4oaSIHYyLCB0aGFu a3MgQEZhYmlhbgotIE1vdmVkIHRoZSBDb25maWdWZXJzaW9uQ2FjaGUgY2hhbmdlcyBpbnRvIGl0 cyBvd24gcGF0Y2guCi0gSW50cm9kdWNlZCB0aGUgZ2xvYmFsIHN0YXRpYyBEQVRBU1RPUkVfQ09O RklHX0NBQ0hFIHRvIHN0b3JlIHRoZQpmdWxseSBwYXJzZWQgZGF0YXN0b3JlLmNmZyBpbnN0ZWFk LCBhbG9uZyB3aXRoIGl0cyBnZW5lcmF0aW9uIG51bWJlci4KICBJbnRyb2R1Y2VkIERhdGFzdG9y ZUNvbmZpZ0NhY2hlIHN0cnVjdCB0byBob2xkIGJvdGguCi0gUmVtb3ZlZCBhbmQgcmVwbGFjZWQg dGhlIENhY2hlZERhdGFzdG9yZUNvbmZpZ1RhZyBmaWVsZCBvZgogIERhdGFTdG9yZUltcGwgd2l0 aCBhIGdlbmVyYXRpb24gbnVtYmVyIGZpZWxkIG9ubHkgKE9wdGlvbjx1c2l6ZT4pCiAgdG8gdmFs aWRhdGUgRGF0YVN0b3JlSW1wbCByZXVzZS4KLSBBZGRlZCBEYXRhU3RvcmU6OmRhdGFzdG9yZV9z ZWN0aW9uX2NvbmZpZ19jYWNoZWQoKSBoZWxwZXIgZnVuY3Rpb24KICB0byBlbmNhcHN1bGF0ZSB0 aGUgY2FjaGluZyBsb2dpYyBhbmQgc2ltcGxpZnkgcmV1c2UuCi0gTW9kaWZpZWQgRGF0YVN0b3Jl Ojpsb29rdXBfZGF0YXN0b3JlKCkgdG8gdXNlIHRoZSBuZXcgaGVscGVyLgoKRnJvbSB2MiDihpIg djMKTm8gY2hhbmdlcwoKRnJvbSB2MyDihpIgdjQsIHRoYW5rcyBARmFiaWFuCi0gUmVzdHJ1Y3R1 cmVkIHRoZSB2ZXJzaW9uIGNhY2hlIGNoZWNrcyBpbgogIGRhdGFzdG9yZV9zZWN0aW9uX2NvbmZp Z19jYWNoZWQoKSwgdG8gc2ltcGxpZnkgdGhlIGxvZ2ljLgotIEFkZGVkIHVwZGF0ZV9jYWNoZSBw YXJhbWV0ZXIgdG8gZGF0YXN0b3JlX3NlY3Rpb25fY29uZmlnX2NhY2hlZCgpIHRvCiAgY29udHJv bCBjYWNoZSB1cGRhdGVzLgoKRnJvbSB2NCDihpIgdjUKLSBSZWJhc2VkIG9ubHksIG5vIGNoYW5n ZXMKCiBwYnMtZGF0YXN0b3JlL0NhcmdvLnRvbWwgICAgICAgfCAgIDEgKwogcGJzLWRhdGFzdG9y ZS9zcmMvZGF0YXN0b3JlLnJzIHwgMTM4ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0t LQogMiBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvcGJzLWRhdGFzdG9yZS9DYXJnby50b21sIGIvcGJzLWRhdGFzdG9yZS9DYXJn by50b21sCmluZGV4IDhjZTkzMGE5Li40MmY0OWE3YiAxMDA2NDQKLS0tIGEvcGJzLWRhdGFzdG9y ZS9DYXJnby50b21sCisrKyBiL3Bicy1kYXRhc3RvcmUvQ2FyZ28udG9tbApAQCAtNDAsNiArNDAs NyBAQCBwcm94bW94LWlvLndvcmtzcGFjZSA9IHRydWUKIHByb3htb3gtbGFuZy53b3Jrc3BhY2U9 dHJ1ZQogcHJveG1veC1zMy1jbGllbnQgPSB7IHdvcmtzcGFjZSA9IHRydWUsIGZlYXR1cmVzID0g WyAiaW1wbCIgXSB9CiBwcm94bW94LXNjaGVtYSA9IHsgd29ya3NwYWNlID0gdHJ1ZSwgZmVhdHVy ZXMgPSBbICJhcGktbWFjcm8iIF0gfQorcHJveG1veC1zZWN0aW9uLWNvbmZpZy53b3Jrc3BhY2Ug PSB0cnVlCiBwcm94bW94LXNlcmRlID0geyB3b3Jrc3BhY2UgPSB0cnVlLCBmZWF0dXJlcyA9IFsg InNlcmRlX2pzb24iIF0gfQogcHJveG1veC1zeXMud29ya3NwYWNlID0gdHJ1ZQogcHJveG1veC1z eXN0ZW1kLndvcmtzcGFjZSA9IHRydWUKZGlmZiAtLWdpdCBhL3Bicy1kYXRhc3RvcmUvc3JjL2Rh dGFzdG9yZS5ycyBiL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwppbmRleCAzNjU1MGZm Ni4uYzljYjVkNjUgMTAwNjQ0Ci0tLSBhL3Bicy1kYXRhc3RvcmUvc3JjL2RhdGFzdG9yZS5ycwor KysgYi9wYnMtZGF0YXN0b3JlL3NyYy9kYXRhc3RvcmUucnMKQEAgLTM0LDcgKzM0LDggQEAgdXNl IHBic19hcGlfdHlwZXM6OnsKICAgICBNYWludGVuYW5jZVR5cGUsIE9wZXJhdGlvbiwgVVBJRCwK IH07CiB1c2UgcGJzX2NvbmZpZzo6czM6OlMzX0NGR19UWVBFX0lEOwotdXNlIHBic19jb25maWc6 OkJhY2t1cExvY2tHdWFyZDsKK3VzZSBwYnNfY29uZmlnOjp7QmFja3VwTG9ja0d1YXJkLCBDb25m aWdWZXJzaW9uQ2FjaGV9OwordXNlIHByb3htb3hfc2VjdGlvbl9jb25maWc6OlNlY3Rpb25Db25m aWdEYXRhOwogCiB1c2UgY3JhdGU6OmJhY2t1cF9pbmZvOjp7CiAgICAgQmFja3VwRGlyLCBCYWNr dXBHcm91cCwgQmFja3VwSW5mbywgT0xEX0xPQ0tJTkcsIFBST1RFQ1RFRF9NQVJLRVJfRklMRU5B TUUsCkBAIC00OCw2ICs0OSwxNyBAQCB1c2UgY3JhdGU6OnMzOjpTM19DT05URU5UX1BSRUZJWDsK IHVzZSBjcmF0ZTo6dGFza190cmFja2luZzo6e3NlbGYsIHVwZGF0ZV9hY3RpdmVfb3BlcmF0aW9u c307CiB1c2UgY3JhdGU6OntEYXRhQmxvYiwgTG9jYWxEYXRhc3RvcmVMcnVDYWNoZX07CiAKKy8v IENhY2hlIGZvciBmdWxseSBwYXJzZWQgZGF0YXN0b3JlLmNmZworc3RydWN0IERhdGFzdG9yZUNv bmZpZ0NhY2hlIHsKKyAgICAvLyBQYXJzZWQgZGF0YXN0b3JlLmNmZyBmaWxlCisgICAgY29uZmln OiBBcmM8U2VjdGlvbkNvbmZpZ0RhdGE+LAorICAgIC8vIEdlbmVyYXRpb24gbnVtYmVyIGZyb20g Q29uZmlnVmVyc2lvbkNhY2hlCisgICAgbGFzdF9nZW5lcmF0aW9uOiB1c2l6ZSwKK30KKworc3Rh dGljIERBVEFTVE9SRV9DT05GSUdfQ0FDSEU6IExhenlMb2NrPE11dGV4PE9wdGlvbjxEYXRhc3Rv cmVDb25maWdDYWNoZT4+PiA9CisgICAgTGF6eUxvY2s6Om5ldyh8fCBNdXRleDo6bmV3KE5vbmUp KTsKKwogc3RhdGljIERBVEFTVE9SRV9NQVA6IExhenlMb2NrPE11dGV4PEhhc2hNYXA8U3RyaW5n LCBBcmM8RGF0YVN0b3JlSW1wbD4+Pj4gPQogICAgIExhenlMb2NrOjpuZXcofHwgTXV0ZXg6Om5l dyhIYXNoTWFwOjpuZXcoKSkpOwogCkBAIC0xNDksMTEgKzE2MSwxMyBAQCBwdWIgc3RydWN0IERh dGFTdG9yZUltcGwgewogICAgIGxhc3RfZ2Nfc3RhdHVzOiBNdXRleDxHYXJiYWdlQ29sbGVjdGlv blN0YXR1cz4sCiAgICAgdmVyaWZ5X25ldzogYm9vbCwKICAgICBjaHVua19vcmRlcjogQ2h1bmtP cmRlciwKLSAgICBsYXN0X2RpZ2VzdDogT3B0aW9uPFt1ODsgMzJdPiwKICAgICBzeW5jX2xldmVs OiBEYXRhc3RvcmVGU3luY0xldmVsLAogICAgIGJhY2tlbmRfY29uZmlnOiBEYXRhc3RvcmVCYWNr ZW5kQ29uZmlnLAogICAgIGxydV9zdG9yZV9jYWNoaW5nOiBPcHRpb248TG9jYWxEYXRhc3RvcmVM cnVDYWNoZT4sCiAgICAgdGhyZWFkX3NldHRpbmdzOiBEYXRhc3RvcmVUaHJlYWRTZXR0aW5ncywK KyAgICAvLy8gRGF0YXN0b3JlIGdlbmVyYXRpb24gbnVtYmVyIGZyb20gYENvbmZpZ1ZlcnNpb25D YWNoZWAgYXQgY3JlYXRpb24gdGltZSwgdXNlZCB0bworICAgIC8vLyB2YWxpZGF0ZSByZXVzZSBv ZiB0aGlzIGNhY2hlZCBgRGF0YVN0b3JlSW1wbGAuCisgICAgY29uZmlnX2dlbmVyYXRpb246IE9w dGlvbjx1c2l6ZT4sCiB9CiAKIGltcGwgRGF0YVN0b3JlSW1wbCB7CkBAIC0xNjYsMTEgKzE4MCwx MSBAQCBpbXBsIERhdGFTdG9yZUltcGwgewogICAgICAgICAgICAgbGFzdF9nY19zdGF0dXM6IE11 dGV4OjpuZXcoR2FyYmFnZUNvbGxlY3Rpb25TdGF0dXM6OmRlZmF1bHQoKSksCiAgICAgICAgICAg ICB2ZXJpZnlfbmV3OiBmYWxzZSwKICAgICAgICAgICAgIGNodW5rX29yZGVyOiBEZWZhdWx0Ojpk ZWZhdWx0KCksCi0gICAgICAgICAgICBsYXN0X2RpZ2VzdDogTm9uZSwKICAgICAgICAgICAgIHN5 bmNfbGV2ZWw6IERlZmF1bHQ6OmRlZmF1bHQoKSwKICAgICAgICAgICAgIGJhY2tlbmRfY29uZmln OiBEZWZhdWx0OjpkZWZhdWx0KCksCiAgICAgICAgICAgICBscnVfc3RvcmVfY2FjaGluZzogTm9u ZSwKICAgICAgICAgICAgIHRocmVhZF9zZXR0aW5nczogRGVmYXVsdDo6ZGVmYXVsdCgpLAorICAg ICAgICAgICAgY29uZmlnX2dlbmVyYXRpb246IE5vbmUsCiAgICAgICAgIH0pCiAgICAgfQogfQpA QCAtMjg2LDYgKzMwMCw1NSBAQCBpbXBsIERhdGFzdG9yZVRocmVhZFNldHRpbmdzIHsKICAgICB9 CiB9CiAKKy8vLyBSZXR1cm5zIHRoZSBwYXJzZWQgZGF0YXN0b3JlIGNvbmZpZyAoYGRhdGFzdG9y ZS5jZmdgKSBhbmQgaXRzCisvLy8gZ2VuZXJhdGlvbi4KKy8vLworLy8vIFVzZXMgYENvbmZpZ1Zl cnNpb25DYWNoZWAgdG8gZGV0ZWN0IHN0YWxlIGVudHJpZXM6CisvLy8gLSBJZiB0aGUgY2FjaGVk IGdlbmVyYXRpb24gbWF0Y2hlcyB0aGUgY3VycmVudCBnZW5lcmF0aW9uLCB0aGUKKy8vLyAgIGNh Y2hlZCBjb25maWcgaXMgcmV0dXJuZWQuCisvLy8gLSBPdGhlcndpc2UgdGhlIGNvbmZpZyBpcyBy ZS1yZWFkIGZyb20gZGlzay4gSWYgYHVwZGF0ZV9jYWNoZWAgaXMKKy8vLyAgIGB0cnVlYCwgdGhl IG5ldyBjb25maWcgYW5kIGN1cnJlbnQgZ2VuZXJhdGlvbiBhcmUgc3RvcmVkIGluIHRoZQorLy8v ICAgY2FjaGUuIENhbGxlcnMgdGhhdCBzZXQgYHVwZGF0ZV9jYWNoZSA9IHRydWVgIG11c3QgaG9s ZCB0aGUKKy8vLyAgIGRhdGFzdG9yZSBjb25maWcgbG9jayB0byBhdm9pZCByYWNpbmcgd2l0aCBj b25jdXJyZW50IGNvbmZpZworLy8vICAgY2hhbmdlcy4KKy8vLyAtIElmIGB1cGRhdGVfY2FjaGVg IGlzIGBmYWxzZWAsIHRoZSBmcmVzaGx5IHJlYWQgY29uZmlnIGlzIHJldHVybmVkCisvLy8gICBi dXQgdGhlIGNhY2hlIGlzIGxlZnQgdW5jaGFuZ2VkLgorLy8vCisvLy8gSWYgYENvbmZpZ1ZlcnNp b25DYWNoZWAgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGNvbmZpZyBpcyBhbHdheXMgcmVhZAorLy8v IGZyb20gZGlzayBhbmQgYE5vbmVgIGlzIHJldHVybmVkIGFzIHRoZSBnZW5lcmF0aW9uLgorZm4g ZGF0YXN0b3JlX3NlY3Rpb25fY29uZmlnX2NhY2hlZCgKKyAgICB1cGRhdGVfY2FjaGU6IGJvb2ws CispIC0+IFJlc3VsdDwoQXJjPFNlY3Rpb25Db25maWdEYXRhPiwgT3B0aW9uPHVzaXplPiksIEVy cm9yPiB7CisgICAgbGV0IG11dCBjb25maWdfY2FjaGUgPSBEQVRBU1RPUkVfQ09ORklHX0NBQ0hF LmxvY2soKS51bndyYXAoKTsKKworICAgIGlmIGxldCBPayh2ZXJzaW9uX2NhY2hlKSA9IENvbmZp Z1ZlcnNpb25DYWNoZTo6bmV3KCkgeworICAgICAgICBsZXQgY3VycmVudF9nZW4gPSB2ZXJzaW9u X2NhY2hlLmRhdGFzdG9yZV9nZW5lcmF0aW9uKCk7CisgICAgICAgIGlmIGxldCBTb21lKGNhY2hl ZCkgPSBjb25maWdfY2FjaGUuYXNfcmVmKCkgeworICAgICAgICAgICAgLy8gRmFzdCBwYXRoOiBy ZS11c2UgY2FjaGVkIGRhdGFzdG9yZS5jZmcKKyAgICAgICAgICAgIGlmIGNhY2hlZC5sYXN0X2dl bmVyYXRpb24gPT0gY3VycmVudF9nZW4geworICAgICAgICAgICAgICAgIHJldHVybiBPaygoY2Fj aGVkLmNvbmZpZy5jbG9uZSgpLCBTb21lKGNhY2hlZC5sYXN0X2dlbmVyYXRpb24pKSk7CisgICAg ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gU2xvdyBwYXRoOiByZS1yZWFkIGRhdGFz dG9yZS5jZmcKKyAgICAgICAgbGV0IChjb25maWdfcmF3LCBfZGlnZXN0KSA9IHBic19jb25maWc6 OmRhdGFzdG9yZTo6Y29uZmlnKCk/OworICAgICAgICBsZXQgY29uZmlnID0gQXJjOjpuZXcoY29u ZmlnX3Jhdyk7CisKKyAgICAgICAgaWYgdXBkYXRlX2NhY2hlIHsKKyAgICAgICAgICAgICpjb25m aWdfY2FjaGUgPSBTb21lKERhdGFzdG9yZUNvbmZpZ0NhY2hlIHsKKyAgICAgICAgICAgICAgICBj b25maWc6IGNvbmZpZy5jbG9uZSgpLAorICAgICAgICAgICAgICAgIGxhc3RfZ2VuZXJhdGlvbjog Y3VycmVudF9nZW4sCisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAgIE9rKChj b25maWcsIFNvbWUoY3VycmVudF9nZW4pKSkKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBGYWxs YmFjayBwYXRoLCBubyBjb25maWcgdmVyc2lvbiBjYWNoZTogcmVhZCBkYXRhc3RvcmUuY2ZnIGFu ZCByZXR1cm4gTm9uZSBhcyBnZW5lcmF0aW9uCisgICAgICAgICpjb25maWdfY2FjaGUgPSBOb25l OworICAgICAgICBsZXQgKGNvbmZpZ19yYXcsIF9kaWdlc3QpID0gcGJzX2NvbmZpZzo6ZGF0YXN0 b3JlOjpjb25maWcoKT87CisgICAgICAgIE9rKChBcmM6Om5ldyhjb25maWdfcmF3KSwgTm9uZSkp CisgICAgfQorfQorCiBpbXBsIERhdGFTdG9yZSB7CiAgICAgLy8gVGhpcyBvbmUganVzdCBwYW5p Y3Mgb24gZXZlcnl0aGluZwogICAgICNbZG9jKGhpZGRlbildCkBAIC0zNjMsNTYgKzQyNiw2MyBA QCBpbXBsIERhdGFTdG9yZSB7CiAgICAgICAgIG5hbWU6ICZzdHIsCiAgICAgICAgIG9wZXJhdGlv bjogT3B0aW9uPE9wZXJhdGlvbj4sCiAgICAgKSAtPiBSZXN1bHQ8QXJjPERhdGFTdG9yZT4sIEVy cm9yPiB7Ci0gICAgICAgIC8vIEF2b2lkIFRPQ1RPVSBiZXR3ZWVuIGNoZWNraW5nIG1haW50ZW5h bmNlIG1vZGUgYW5kIHVwZGF0aW5nIGFjdGl2ZSBvcGVyYXRpb24gY291bnRlciwgYXMKLSAgICAg ICAgLy8gd2UgdXNlIGl0IHRvIGRlY2lkZSB3aGV0aGVyIGl0IGlzIG9rYXkgdG8gZGVsZXRlIHRo ZSBkYXRhc3RvcmUuCisgICAgICAgIC8vIEF2b2lkIFRPQ1RPVSBiZXR3ZWVuIGNoZWNraW5nIG1h aW50ZW5hbmNlIG1vZGUgYW5kIHVwZGF0aW5nIGFjdGl2ZSBvcGVyYXRpb25zLgogICAgICAgICBs ZXQgX2NvbmZpZ19sb2NrID0gcGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpsb2NrX2NvbmZpZygpPzsK IAotICAgICAgICAvLyB3ZSBjb3VsZCB1c2UgdGhlIENvbmZpZ1ZlcnNpb25DYWNoZSdzIGdlbmVy YXRpb24gZm9yIHN0YWxlbmVzcyBkZXRlY3Rpb24sIGJ1dCAgd2UgbG9hZAotICAgICAgICAvLyB0 aGUgY29uZmlnIGFueXdheSAtPiBqdXN0IHVzZSBkaWdlc3QsIGFkZGl0aW9uYWwgYmVuZWZpdDog bWFudWFsIGNoYW5nZXMgZ2V0IGRldGVjdGVkCi0gICAgICAgIGxldCAoY29uZmlnLCBkaWdlc3Qp ID0gcGJzX2NvbmZpZzo6ZGF0YXN0b3JlOjpjb25maWcoKT87Ci0gICAgICAgIGxldCBjb25maWc6 IERhdGFTdG9yZUNvbmZpZyA9IGNvbmZpZy5sb29rdXAoImRhdGFzdG9yZSIsIG5hbWUpPzsKKyAg ICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IGRhdGFzdG9yZS5jZmcgZ2VuZXJhdGlvbiBudW1iZXIg YW5kIGNhY2hlZCBjb25maWcKKyAgICAgICAgbGV0IChzZWN0aW9uX2NvbmZpZywgZ2VuX251bSkg PSBkYXRhc3RvcmVfc2VjdGlvbl9jb25maWdfY2FjaGVkKHRydWUpPzsKKworICAgICAgICBsZXQg ZGF0YXN0b3JlX2NmZzogRGF0YVN0b3JlQ29uZmlnID0gc2VjdGlvbl9jb25maWcubG9va3VwKCJk YXRhc3RvcmUiLCBuYW1lKT87CisgICAgICAgIGxldCBtYWludGVuYW5jZV9tb2RlID0gZGF0YXN0 b3JlX2NmZy5nZXRfbWFpbnRlbmFuY2VfbW9kZSgpOworICAgICAgICBsZXQgbW91bnRfc3RhdHVz ID0gZ2V0X2RhdGFzdG9yZV9tb3VudF9zdGF0dXMoJmRhdGFzdG9yZV9jZmcpOwogCi0gICAgICAg IGlmIGxldCBTb21lKG1haW50ZW5hbmNlX21vZGUpID0gY29uZmlnLmdldF9tYWludGVuYW5jZV9t b2RlKCkgewotICAgICAgICAgICAgaWYgbGV0IEVycihlcnJvcikgPSBtYWludGVuYW5jZV9tb2Rl LmNoZWNrKG9wZXJhdGlvbikgeworICAgICAgICBpZiBsZXQgU29tZShtbSkgPSAmbWFpbnRlbmFu Y2VfbW9kZSB7CisgICAgICAgICAgICBpZiBsZXQgRXJyKGVycm9yKSA9IG1tLmNoZWNrKG9wZXJh dGlvbi5jbG9uZSgpKSB7CiAgICAgICAgICAgICAgICAgYmFpbCEoImRhdGFzdG9yZSAne25hbWV9 JyBpcyB1bmF2YWlsYWJsZToge2Vycm9yfSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAK LSAgICAgICAgaWYgZ2V0X2RhdGFzdG9yZV9tb3VudF9zdGF0dXMoJmNvbmZpZykgPT0gU29tZShm YWxzZSkgewotICAgICAgICAgICAgbGV0IG11dCBkYXRhc3RvcmVfY2FjaGUgPSBEQVRBU1RPUkVf TUFQLmxvY2soKS51bndyYXAoKTsKLSAgICAgICAgICAgIGRhdGFzdG9yZV9jYWNoZS5yZW1vdmUo JmNvbmZpZy5uYW1lKTsKLSAgICAgICAgICAgIGJhaWwhKCJkYXRhc3RvcmUgJ3t9JyBpcyBub3Qg bW91bnRlZCIsIGNvbmZpZy5uYW1lKTsKKyAgICAgICAgbGV0IG11dCBkYXRhc3RvcmVfY2FjaGUg PSBEQVRBU1RPUkVfTUFQLmxvY2soKS51bndyYXAoKTsKKworICAgICAgICBpZiBtb3VudF9zdGF0 dXMgPT0gU29tZShmYWxzZSkgeworICAgICAgICAgICAgZGF0YXN0b3JlX2NhY2hlLnJlbW92ZSgm ZGF0YXN0b3JlX2NmZy5uYW1lKTsKKyAgICAgICAgICAgIGJhaWwhKCJkYXRhc3RvcmUgJ3t9JyBp cyBub3QgbW91bnRlZCIsIGRhdGFzdG9yZV9jZmcubmFtZSk7CiAgICAgICAgIH0KIAotICAgICAg ICBsZXQgbXV0IGRhdGFzdG9yZV9jYWNoZSA9IERBVEFTVE9SRV9NQVAubG9jaygpLnVud3JhcCgp OwotICAgICAgICBsZXQgZW50cnkgPSBkYXRhc3RvcmVfY2FjaGUuZ2V0KG5hbWUpOwotCi0gICAg ICAgIC8vIHJldXNlIGNodW5rIHN0b3JlIHNvIHRoYXQgd2Uga2VlcCB1c2luZyB0aGUgc2FtZSBw cm9jZXNzIGxvY2tlciBpbnN0YW5jZSEKLSAgICAgICAgbGV0IGNodW5rX3N0b3JlID0gaWYgbGV0 IFNvbWUoZGF0YXN0b3JlKSA9ICZlbnRyeSB7Ci0gICAgICAgICAgICBsZXQgbGFzdF9kaWdlc3Qg PSBkYXRhc3RvcmUubGFzdF9kaWdlc3QuYXNfcmVmKCk7Ci0gICAgICAgICAgICBpZiBsZXQgU29t ZSh0cnVlKSA9IGxhc3RfZGlnZXN0Lm1hcCh8bGFzdF9kaWdlc3R8IGxhc3RfZGlnZXN0ID09ICZk aWdlc3QpIHsKLSAgICAgICAgICAgICAgICBpZiBsZXQgU29tZShvcGVyYXRpb24pID0gb3BlcmF0 aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2FjdGl2ZV9vcGVyYXRpb25zKG5hbWUs IG9wZXJhdGlvbiwgMSk/OworICAgICAgICAvLyBSZS11c2UgRGF0YVN0b3JlSW1wbAorICAgICAg ICBpZiBsZXQgU29tZShleGlzdGluZykgPSBkYXRhc3RvcmVfY2FjaGUuZ2V0KG5hbWUpLmNsb25l ZCgpIHsKKyAgICAgICAgICAgIGlmIGxldCAoU29tZShsYXN0X2dlbmVyYXRpb24pLCBTb21lKGdl bl9udW0pKSA9IChleGlzdGluZy5jb25maWdfZ2VuZXJhdGlvbiwgZ2VuX251bSkgeworICAgICAg ICAgICAgICAgIGlmIGxhc3RfZ2VuZXJhdGlvbiA9PSBnZW5fbnVtIHsKKyAgICAgICAgICAgICAg ICAgICAgaWYgbGV0IFNvbWUob3ApID0gb3BlcmF0aW9uIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHVwZGF0ZV9hY3RpdmVfb3BlcmF0aW9ucyhuYW1lLCBvcCwgMSk/OworICAgICAgICAgICAg ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9rKEFyYzo6bmV3KFNlbGYg eworICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXI6IGV4aXN0aW5nLAorICAgICAgICAgICAg ICAgICAgICAgICAgb3BlcmF0aW9uLAorICAgICAgICAgICAgICAgICAgICB9KSk7CiAgICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBPayhBcmM6Om5ldyhTZWxmIHsKLSAg ICAgICAgICAgICAgICAgICAgaW5uZXI6IEFyYzo6Y2xvbmUoZGF0YXN0b3JlKSwKLSAgICAgICAg ICAgICAgICAgICAgb3BlcmF0aW9uLAotICAgICAgICAgICAgICAgIH0pKTsKICAgICAgICAgICAg IH0KLSAgICAgICAgICAgIEFyYzo6Y2xvbmUoJmRhdGFzdG9yZS5jaHVua19zdG9yZSkKKyAgICAg ICAgfQorCisgICAgICAgIC8vIChSZSlidWlsZCBEYXRhU3RvcmVJbXBsCisKKyAgICAgICAgLy8g UmV1c2UgY2h1bmsgc3RvcmUgc28gdGhhdCB3ZSBrZWVwIHVzaW5nIHRoZSBzYW1lIHByb2Nlc3Mg bG9ja2VyIGluc3RhbmNlIQorICAgICAgICBsZXQgY2h1bmtfc3RvcmUgPSBpZiBsZXQgU29tZShl eGlzdGluZykgPSBkYXRhc3RvcmVfY2FjaGUuZ2V0KG5hbWUpIHsKKyAgICAgICAgICAgIEFyYzo6 Y2xvbmUoJmV4aXN0aW5nLmNodW5rX3N0b3JlKQogICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgbGV0IHR1bmluZzogRGF0YXN0b3JlVHVuaW5nID0gc2VyZGVfanNvbjo6ZnJvbV92YWx1ZSgK ICAgICAgICAgICAgICAgICBEYXRhc3RvcmVUdW5pbmc6OkFQSV9TQ0hFTUEKLSAgICAgICAgICAg ICAgICAgICAgLnBhcnNlX3Byb3BlcnR5X3N0cmluZyhjb25maWcudHVuaW5nLmFzX2RlcmVmKCku dW53cmFwX29yKCIiKSk/LAorICAgICAgICAgICAgICAgICAgICAucGFyc2VfcHJvcGVydHlfc3Ry aW5nKGRhdGFzdG9yZV9jZmcudHVuaW5nLmFzX2RlcmVmKCkudW53cmFwX29yKCIiKSk/LAogICAg ICAgICAgICAgKT87CiAgICAgICAgICAgICBBcmM6Om5ldyhDaHVua1N0b3JlOjpvcGVuKAogICAg ICAgICAgICAgICAgIG5hbWUsCi0gICAgICAgICAgICAgICAgY29uZmlnLmFic29sdXRlX3BhdGgo KSwKKyAgICAgICAgICAgICAgICBkYXRhc3RvcmVfY2ZnLmFic29sdXRlX3BhdGgoKSwKICAgICAg ICAgICAgICAgICB0dW5pbmcuc3luY19sZXZlbC51bndyYXBfb3JfZGVmYXVsdCgpLAogICAgICAg ICAgICAgKT8pCiAgICAgICAgIH07CiAKLSAgICAgICAgbGV0IGRhdGFzdG9yZSA9IERhdGFTdG9y ZTo6d2l0aF9zdG9yZV9hbmRfY29uZmlnKGNodW5rX3N0b3JlLCBjb25maWcsIFNvbWUoZGlnZXN0 KSk/OworICAgICAgICBsZXQgZGF0YXN0b3JlID0gRGF0YVN0b3JlOjp3aXRoX3N0b3JlX2FuZF9j b25maWcoY2h1bmtfc3RvcmUsIGRhdGFzdG9yZV9jZmcsIGdlbl9udW0pPzsKIAogICAgICAgICBs ZXQgZGF0YXN0b3JlID0gQXJjOjpuZXcoZGF0YXN0b3JlKTsKICAgICAgICAgZGF0YXN0b3JlX2Nh Y2hlLmluc2VydChuYW1lLnRvX3N0cmluZygpLCBkYXRhc3RvcmUuY2xvbmUoKSk7CkBAIC01MTQs NyArNTg0LDcgQEAgaW1wbCBEYXRhU3RvcmUgewogICAgIGZuIHdpdGhfc3RvcmVfYW5kX2NvbmZp ZygKICAgICAgICAgY2h1bmtfc3RvcmU6IEFyYzxDaHVua1N0b3JlPiwKICAgICAgICAgY29uZmln OiBEYXRhU3RvcmVDb25maWcsCi0gICAgICAgIGxhc3RfZGlnZXN0OiBPcHRpb248W3U4OyAzMl0+ LAorICAgICAgICBnZW5lcmF0aW9uOiBPcHRpb248dXNpemU+LAogICAgICkgLT4gUmVzdWx0PERh dGFTdG9yZUltcGwsIEVycm9yPiB7CiAgICAgICAgIGxldCBtdXQgZ2Nfc3RhdHVzX3BhdGggPSBj aHVua19zdG9yZS5iYXNlX3BhdGgoKTsKICAgICAgICAgZ2Nfc3RhdHVzX3BhdGgucHVzaCgiLmdj LXN0YXR1cyIpOwpAQCAtNTc5LDExICs2NDksMTEgQEAgaW1wbCBEYXRhU3RvcmUgewogICAgICAg ICAgICAgbGFzdF9nY19zdGF0dXM6IE11dGV4OjpuZXcoZ2Nfc3RhdHVzKSwKICAgICAgICAgICAg IHZlcmlmeV9uZXc6IGNvbmZpZy52ZXJpZnlfbmV3LnVud3JhcF9vcihmYWxzZSksCiAgICAgICAg ICAgICBjaHVua19vcmRlcjogdHVuaW5nLmNodW5rX29yZGVyLnVud3JhcF9vcl9kZWZhdWx0KCks Ci0gICAgICAgICAgICBsYXN0X2RpZ2VzdCwKICAgICAgICAgICAgIHN5bmNfbGV2ZWw6IHR1bmlu Zy5zeW5jX2xldmVsLnVud3JhcF9vcl9kZWZhdWx0KCksCiAgICAgICAgICAgICBiYWNrZW5kX2Nv bmZpZywKICAgICAgICAgICAgIGxydV9zdG9yZV9jYWNoaW5nLAogICAgICAgICAgICAgdGhyZWFk X3NldHRpbmdzLAorICAgICAgICAgICAgY29uZmlnX2dlbmVyYXRpb246IGdlbmVyYXRpb24sCiAg ICAgICAgIH0pCiAgICAgfQogCi0tIAoyLjQ3LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KcGJzLWRldmVsIG1haWxpbmcgbGlzdApwYnMtZGV2ZWxA bGlzdHMucHJveG1veC5jb20KaHR0cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxt YW4vbGlzdGluZm8vcGJzLWRldmVsCg==