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 7BB261FF15C for ; Fri, 11 Jul 2025 18:27:08 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 02BAE14D82; Fri, 11 Jul 2025 18:27:22 +0200 (CEST) From: =?UTF-8?q?Michael=20K=C3=B6ppl?= To: pve-devel@lists.proxmox.com Date: Fri, 11 Jul 2025 18:27:10 +0200 Message-ID: <20250711162711.133248-9-m.koeppl@proxmox.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250711162711.133248-1-m.koeppl@proxmox.com> References: <20250711162711.133248-1-m.koeppl@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.014 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH installer v4 7/8] common: add checks for valid subnet mask and IPv4 address within subnet X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" QWRkIGNoZWNrcyBmb3IgdmFsaWQgc3VibmV0IG1hc2sgKGdyZWF0ZXIgdGhhbiAvMCBhbmQgYXQg bW9zdCAvMzIgZm9yCklQdjQpLiBJbiBhZGRpdGlvbiwgY2hlY2sgaWYgdGhlIGFkZHJlc3MgZW50 ZXJlZCBieSB0aGUgdXNlciBpcyB2YWxpZAp3aXRoaW4gdGhlIGdpdmVuIHN1Ym5ldCwgaS5lLiBu b3QgYSBuZXR3b3JrIGFkZHJlc3Mgb3IgYnJvYWRjYXN0CmFkZHJlc3MuIC8zMSBpcyBjb25zaWRl cmVkIGFuIGV4Y2VwdGlvbiBpbiBhY2NvcmRhbmNlIHdpdGggUkZDMzAyMSBbMF0sCmNvbnNpZGVy aW5nIGFueSBvZiB0aGUgMiBhdmFpbGFibGUgYWRkcmVzc2VzIHRvIGJlIHZhbGlkIGhvc3QgYWRk cmVzc2VzLgoKWzBdIGh0dHBzOi8vZGF0YXRyYWNrZXIuaWV0Zi5vcmcvZG9jL2h0bWwvcmZjMzAy MQoKU2lnbmVkLW9mZi1ieTogTWljaGFlbCBLw7ZwcGwgPG0ua29lcHBsQHByb3htb3guY29tPgot LS0KIHByb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcGFyc2UtYW5zd2VyLnJzICB8ICAzICsK IC4uLi9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24gICAgICB8IDE5ICsrKysr CiAuLi4vcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sICAgICAgfCAxOCArKysr KwogLi4uL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsuanNvbiAgICAgIHwgIDMgKwog Li4uL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9tbCAgICAgIHwgMTggKysrKysK IC4uLi9pcHY0X2FuZF9zdWJuZXRfbWFza18zMy5qc29uICAgICAgICAgICAgICB8ICAzICsKIC4u Li9pcHY0X2FuZF9zdWJuZXRfbWFza18zMy50b21sICAgICAgICAgICAgICB8IDE4ICsrKysrCiBw cm94bW94LWluc3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzICAgICAgICAgfCA3MiArKysrKysr KysrKysrKy0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDEzOCBpbnNlcnRpb25zKCspLCAxNiBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3Rz L3Jlc291cmNlcy9wYXJzZV9hbnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLmpzb24KIGNyZWF0ZSBt b2RlIDEwMDY0NCBwcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9h bnN3ZXIvaXB2NF9hbmRfc3VibmV0XzMxLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94 LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2Fu ZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94 LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2Fu ZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLnRvbWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBwcm94bW94 LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2Fu ZF9zdWJuZXRfbWFza18zMy5qc29uCiBjcmVhdGUgbW9kZSAxMDA2NDQgcHJveG1veC1hdXRvLWlu c3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0 X21hc2tfMzMudG9tbAoKZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMv cGFyc2UtYW5zd2VyLnJzIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9wYXJzZS1hbnN3 ZXIucnMKaW5kZXggOGI3ZWFjNC4uODhmMzBhYSAxMDA2NDQKLS0tIGEvcHJveG1veC1hdXRvLWlu c3RhbGxlci90ZXN0cy9wYXJzZS1hbnN3ZXIucnMKKysrIGIvcHJveG1veC1hdXRvLWluc3RhbGxl ci90ZXN0cy9wYXJzZS1hbnN3ZXIucnMKQEAgLTEyNyw2ICsxMjcsNyBAQCBtb2QgdGVzdHMgewog ICAgICAgICAgICAgZnFkbl9mcm9tX2RoY3Bfbm9fZGhjcF9kb21haW5fd2l0aF9kZWZhdWx0X2Rv bWFpbiwKICAgICAgICAgICAgIGZ1bGxfZnFkbl9mcm9tX2RoY3Bfd2l0aF9kZWZhdWx0X2RvbWFp biwKICAgICAgICAgICAgIGhhc2hlZF9yb290X3Bhc3N3b3JkLAorICAgICAgICAgICAgaXB2NF9h bmRfc3VibmV0XzMxLAogICAgICAgICAgICAgbWluaW1hbCwKICAgICAgICAgICAgIG5pY19tYXRj aGluZywKICAgICAgICAgICAgIHNwZWNpZmljX25pYywKQEAgLTE0Niw2ICsxNDcsOCBAQCBtb2Qg dGVzdHMgewogICAgICAgICAgICAgZHVwbGljYXRlX2Rpc2ssCiAgICAgICAgICAgICBmcWRuX2Zy b21fZGhjcF9ub19kZWZhdWx0X2RvbWFpbiwKICAgICAgICAgICAgIGZxZG5faG9zdG5hbWVfb25s eSwKKyAgICAgICAgICAgIGlwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmssCisgICAgICAg ICAgICBpcHY0X2FuZF9zdWJuZXRfbWFza18zMywKICAgICAgICAgICAgIGx2bV9zd2Fwc2l6ZV9n cmVhdGVyX3RoYW5faGRzaXplLAogICAgICAgICAgICAgbm9fZnFkbl9mcm9tX2RoY3AsCiAgICAg ICAgICAgICBub19yb290X3Bhc3N3b3JkX3NldCwKZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1p bnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlci9pcHY0X2FuZF9zdWJuZXRfMzEu anNvbiBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dl ci9pcHY0X2FuZF9zdWJuZXRfMzEuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi4yYTQ3NWZlCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90 ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS5qc29uCkBAIC0w LDAgKzEsMTkgQEAKK3sKKyAgImF1dG9yZWJvb3QiOiAxLAorICAiY2lkciI6ICIxMC4xMC4xMC4x MC8zMSIsCisgICJjb3VudHJ5IjogImF0IiwKKyAgImRucyI6ICIxMC4xMC4xMC4xIiwKKyAgImRv bWFpbiI6ICJ0ZXN0aW5zdGFsbCIsCisgICJmaWxlc3lzIjogImV4dDQiLAorICAiZ2F0ZXdheSI6 ICIxMC4xMC4xMC4xIiwKKyAgImhkc2l6ZSI6IDIyMy41NzA4ODQ3MDQ1ODk4NCwKKyAgImV4aXN0 aW5nX3N0b3JhZ2VfYXV0b19yZW5hbWUiOiAxLAorICAiaG9zdG5hbWUiOiAicHZlYXV0byIsCisg ICJrZXltYXAiOiAiZGUiLAorICAibWFpbHRvIjogIm1haWxAbm8uaW52YWxpZCIsCisgICJtbmdt dF9uaWMiOiAiZW5wMTI5czBmMW5wMSIsCisgICJyb290X3Bhc3N3b3JkIjogeyAicGxhaW4iOiAi MTIzNDU2NzgiIH0sCisgICJ0YXJnZXRfaGQiOiAiL2Rldi9zZGEiLAorICAidGltZXpvbmUiOiAi RXVyb3BlL1ZpZW5uYSIsCisgICJmaXJzdF9ib290IjogeyAiZW5hYmxlZCI6IDAgfQorfQpkaWZm IC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5z d2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sIGIvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0 cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyL2lwdjRfYW5kX3N1Ym5ldF8zMS50b21sCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjYTZjYTUKLS0tIC9kZXYvbnVsbAorKysgYi9w cm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXIvaXB2NF9h bmRfc3VibmV0XzMxLnRvbWwKQEAgLTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tleWJvYXJkID0g ImRlIgorY291bnRyeSA9ICJhdCIKK2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFsbCIKK21haWx0 byA9ICJtYWlsQG5vLmludmFsaWQiCit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5hIgorcm9vdF9w YXNzd29yZCA9ICIxMjM0NTY3OCIKKworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJvbS1hbnN3ZXIi CitjaWRyID0gIjEwLjEwLjEwLjEwLzMxIgorZG5zID0gIjEwLjEwLjEwLjEiCitnYXRld2F5ID0g IjEwLjEwLjEwLjEiCitmaWx0ZXIuSURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5wMSIKKworW2Rp c2stc2V0dXBdCitmaWxlc3lzdGVtID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNkYSJdCmRpZmYg LS1naXQgYS9wcm94bW94LWF1dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3 ZXJfZmFpbC9pcHY0X2FuZF9zdWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24gYi9wcm94bW94LWF1 dG8taW5zdGFsbGVyL3Rlc3RzL3Jlc291cmNlcy9wYXJzZV9hbnN3ZXJfZmFpbC9pcHY0X2FuZF9z dWJuZXRfYWRkcl9pc19uZXR3b3JrLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uYjI4Njk5ZAotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIv dGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lz X25ldHdvcmsuanNvbgpAQCAtMCwwICsxLDMgQEAKK3sKKyAgInBhcnNlLWVycm9yIjogImVycm9y IHBhcnNpbmcgYW5zd2VyLnRvbWw6IEludmFsaWQgQ0lEUjogYWRkcmVzcyBpcyBhIG5ldHdvcmsg YWRkcmVzcyIKK30KZGlmZiAtLWdpdCBhL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVz b3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsu dG9tbCBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dl cl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9hZGRyX2lzX25ldHdvcmsudG9tbApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTkxNDFiCi0tLSAvZGV2L251bGwKKysrIGIvcHJveG1v eC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9h bmRfc3VibmV0X2FkZHJfaXNfbmV0d29yay50b21sCkBAIC0wLDAgKzEsMTggQEAKK1tnbG9iYWxd CitrZXlib2FyZCA9ICJkZSIKK2NvdW50cnkgPSAiYXQiCitmcWRuID0gInB2ZWF1dG8udGVzdGlu c3RhbGwiCittYWlsdG8gPSAibWFpbEBuby5pbnZhbGlkIgordGltZXpvbmUgPSAiRXVyb3BlL1Zp ZW5uYSIKK3Jvb3RfcGFzc3dvcmQgPSAiMTIzNDU2NzgiCisKK1tuZXR3b3JrXQorc291cmNlID0g ImZyb20tYW5zd2VyIgorY2lkciA9ICIxMC4xMC4xMC4zMi8yNyIKK2RucyA9ICIxMC4xMC4xMC4x IgorZ2F0ZXdheSA9ICIxMC4xMC4xMC4xIgorZmlsdGVyLklEX05FVF9OQU1FID0gImVucDEyOXMw ZjFucDEiCisKK1tkaXNrLXNldHVwXQorZmlsZXN5c3RlbSA9ICJleHQ0IgorZGlza19saXN0ID0g WyJzZGEiXQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJj ZXMvcGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMuanNvbiBiL3Byb3ht b3gtYXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRf YW5kX3N1Ym5ldF9tYXNrXzMzLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNmIyODg4YgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVz dHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLmpz b24KQEAgLTAsMCArMSwzIEBACit7CisgICAgInBhcnNlLWVycm9yIjogImVycm9yIHBhcnNpbmcg YW5zd2VyLnRvbWw6IEludmFsaWQgQ0lEUjogbWFzayBjYW5ub3QgYmUgZ3JlYXRlciB0aGFuIDMy IgorfQpkaWZmIC0tZ2l0IGEvcHJveG1veC1hdXRvLWluc3RhbGxlci90ZXN0cy9yZXNvdXJjZXMv cGFyc2VfYW5zd2VyX2ZhaWwvaXB2NF9hbmRfc3VibmV0X21hc2tfMzMudG9tbCBiL3Byb3htb3gt YXV0by1pbnN0YWxsZXIvdGVzdHMvcmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5k X3N1Ym5ldF9tYXNrXzMzLnRvbWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u MTZhNTYwZgotLS0gL2Rldi9udWxsCisrKyBiL3Byb3htb3gtYXV0by1pbnN0YWxsZXIvdGVzdHMv cmVzb3VyY2VzL3BhcnNlX2Fuc3dlcl9mYWlsL2lwdjRfYW5kX3N1Ym5ldF9tYXNrXzMzLnRvbWwK QEAgLTAsMCArMSwxOCBAQAorW2dsb2JhbF0KK2tleWJvYXJkID0gImRlIgorY291bnRyeSA9ICJh dCIKK2ZxZG4gPSAicHZlYXV0by50ZXN0aW5zdGFsbCIKK21haWx0byA9ICJtYWlsQG5vLmludmFs aWQiCit0aW1lem9uZSA9ICJFdXJvcGUvVmllbm5hIgorcm9vdF9wYXNzd29yZCA9ICIxMjM0NTY3 OCIKKworW25ldHdvcmtdCitzb3VyY2UgPSAiZnJvbS1hbnN3ZXIiCitjaWRyID0gIjEwLjEwLjEw LjEwLzMzIgorZG5zID0gIjEwLjEwLjEwLjEiCitnYXRld2F5ID0gIjEwLjEwLjEwLjEiCitmaWx0 ZXIuSURfTkVUX05BTUUgPSAiZW5wMTI5czBmMW5wMSIKKworW2Rpc2stc2V0dXBdCitmaWxlc3lz dGVtID0gImV4dDQiCitkaXNrX2xpc3QgPSBbInNkYSJdCmRpZmYgLS1naXQgYS9wcm94bW94LWlu c3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzIGIvcHJveG1veC1pbnN0YWxsZXItY29tbW9uL3Ny Yy91dGlscy5ycwppbmRleCAxZjIyNWM4Li45MjljYzZiIDEwMDY0NAotLS0gYS9wcm94bW94LWlu c3RhbGxlci1jb21tb24vc3JjL3V0aWxzLnJzCisrKyBiL3Byb3htb3gtaW5zdGFsbGVyLWNvbW1v bi9zcmMvdXRpbHMucnMKQEAgLTEsNyArMSw3IEBACiB1c2Ugc3RkOjp7CisgICAgZXJyb3I6OkVy cm9yLAogICAgIGZtdCwKICAgICBuZXQ6OntBZGRyUGFyc2VFcnJvciwgSXBBZGRyfSwKLSAgICBu dW06OlBhcnNlSW50RXJyb3IsCiAgICAgc3RyOjpGcm9tU3RyLAogfTsKIApAQCAtMTUsNyArMTUs MTEgQEAgcHViIGVudW0gQ2lkckFkZHJlc3NQYXJzZUVycm9yIHsKICAgICAvLy8gVGhlIElQIGFk ZHJlc3MgcGFydCBjb3VsZCBub3QgYmUgcGFyc2VkLgogICAgIEludmFsaWRBZGRyKEFkZHJQYXJz ZUVycm9yKSwKICAgICAvLy8gVGhlIG1hc2sgY291bGQgbm90IGJlIHBhcnNlZC4KLSAgICBJbnZh bGlkTWFzayhPcHRpb248UGFyc2VJbnRFcnJvcj4pLAorICAgIEludmFsaWRNYXNrKEJveDxkeW4g RXJyb3I+KSwKKyAgICAvLy8gVGhlIElQIGFkZHJlc3MgaXMgYSBuZXR3b3JrIGFkZHJlc3MuCisg ICAgSXNOZXR3b3JrQWRkciwKKyAgICAvLy8gVGhlIElQIGFkZHJlc3MgaXMgYSBicm9hZGNhc3Qg YWRkcmVzcy4KKyAgICBJc0Jyb2FkY2FzdEFkZHIsCiB9CiAKIGltcGwgZm10OjpEaXNwbGF5IGZv ciBDaWRyQWRkcmVzc1BhcnNlRXJyb3IgewpAQCAtMjcsOSArMzEsOSBAQCBpbXBsIGZtdDo6RGlz cGxheSBmb3IgQ2lkckFkZHJlc3NQYXJzZUVycm9yIHsKICAgICAgICAgICAgICAgICB3cml0ZSEo ZiwgIm5vIGRlbGltaXRlciBmb3Igc2VwYXJhdGluZyBhZGRyZXNzIGFuZCBtYXNrIHdhcyBmb3Vu ZCIpCiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBDaWRyQWRkcmVzc1BhcnNlRXJyb3I6Oklu dmFsaWRBZGRyKGVycikgPT4gd3JpdGUhKGYsICJ7ZXJyfSIpLAotICAgICAgICAgICAgQ2lkckFk ZHJlc3NQYXJzZUVycm9yOjpJbnZhbGlkTWFzayhlcnIpID0+IHsKLSAgICAgICAgICAgICAgICB3 cml0ZSEoZiwgIns6P30iLCBlcnIpCi0gICAgICAgICAgICB9CisgICAgICAgICAgICBDaWRyQWRk cmVzc1BhcnNlRXJyb3I6OkludmFsaWRNYXNrKGVycikgPT4gd3JpdGUhKGYsICJ7ZXJyfSIpLAor ICAgICAgICAgICAgQ2lkckFkZHJlc3NQYXJzZUVycm9yOjpJc05ldHdvcmtBZGRyID0+IHdyaXRl IShmLCAiYWRkcmVzcyBpcyBhIG5ldHdvcmsgYWRkcmVzcyIpLAorICAgICAgICAgICAgQ2lkckFk ZHJlc3NQYXJzZUVycm9yOjpJc0Jyb2FkY2FzdEFkZHIgPT4gd3JpdGUhKGYsICJhZGRyZXNzIGlz IGEgYnJvYWRjYXN0IGFkZHJlc3MiKSwKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTYzLDExICs2 NywxMCBAQCBpbXBsIENpZHJBZGRyZXNzIHsKICAgICBwdWIgZm4gbmV3PFQ6IEludG88SXBBZGRy Pj4oYWRkcjogVCwgbWFzazogdXNpemUpIC0+IFJlc3VsdDxTZWxmLCBDaWRyQWRkcmVzc1BhcnNl RXJyb3I+IHsKICAgICAgICAgbGV0IGFkZHIgPSBhZGRyLmludG8oKTsKIAotICAgICAgICBpZiBt YXNrID4gbWFza19saW1pdCgmYWRkcikgewotICAgICAgICAgICAgRXJyKENpZHJBZGRyZXNzUGFy c2VFcnJvcjo6SW52YWxpZE1hc2soTm9uZSkpCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAg ICBPayhTZWxmIHsgYWRkciwgbWFzayB9KQotICAgICAgICB9CisgICAgICAgIGNoZWNrX21hc2tf bGltaXQoJmFkZHIsIG1hc2spPzsKKyAgICAgICAgY2hlY2tfYWRkcl92YWxpZF9pbl9zdWJuZXQo JmFkZHIsIG1hc2spPzsKKworICAgICAgICBPayhTZWxmIHsgYWRkciwgbWFzayB9KQogICAgIH0K IAogICAgIC8vLyBSZXR1cm5zIG9ubHkgdGhlIElQIGFkZHJlc3MgcGFydCBvZiB0aGUgYWRkcmVz cy4KQEAgLTEwMywxMyArMTA2LDEyIEBAIGltcGwgRnJvbVN0ciBmb3IgQ2lkckFkZHJlc3Mgewog CiAgICAgICAgIGxldCBtYXNrID0gbWFzawogICAgICAgICAgICAgLnBhcnNlKCkKLSAgICAgICAg ICAgIC5tYXBfZXJyKHxlcnJ8IENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SW52YWxpZE1hc2soU29t ZShlcnIpKSk/OworICAgICAgICAgICAgLm1hcF9lcnIofGVycnwgQ2lkckFkZHJlc3NQYXJzZUVy cm9yOjpJbnZhbGlkTWFzayhCb3g6Om5ldyhlcnIpKSk/OwogCi0gICAgICAgIGlmIG1hc2sgPiBt YXNrX2xpbWl0KCZhZGRyKSB7Ci0gICAgICAgICAgICBFcnIoQ2lkckFkZHJlc3NQYXJzZUVycm9y OjpJbnZhbGlkTWFzayhOb25lKSkKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIE9rKFNl bGYgeyBhZGRyLCBtYXNrIH0pCi0gICAgICAgIH0KKyAgICAgICAgY2hlY2tfbWFza19saW1pdCgm YWRkciwgbWFzayk/OworICAgICAgICBjaGVja19hZGRyX3ZhbGlkX2luX3N1Ym5ldCgmYWRkciwg bWFzayk/OworCisgICAgICAgIE9rKFNlbGYgeyBhZGRyLCBtYXNrIH0pCiAgICAgfQogfQogCkBA IC0xMzUsNiArMTM3LDQ0IEBAIGZuIG1hc2tfbGltaXQoYWRkcjogJklwQWRkcikgLT4gdXNpemUg ewogICAgIGlmIGFkZHIuaXNfaXB2NCgpIHsgMzIgfSBlbHNlIHsgMTI4IH0KIH0KIAorZm4gY2hl Y2tfbWFza19saW1pdChhZGRyOiAmSXBBZGRyLCBtYXNrOiB1c2l6ZSkgLT4gUmVzdWx0PCgpLCBD aWRyQWRkcmVzc1BhcnNlRXJyb3I+IHsKKyAgICBsZXQgbGltaXQgPSBtYXNrX2xpbWl0KCZhZGRy KTsKKyAgICByZXR1cm4gaWYgbWFzayA+IGxpbWl0IHsKKyAgICAgICAgRXJyKENpZHJBZGRyZXNz UGFyc2VFcnJvcjo6SW52YWxpZE1hc2soCisgICAgICAgICAgICBmb3JtYXQhKCJtYXNrIGNhbm5v dCBiZSBncmVhdGVyIHRoYW4ge2xpbWl0fSIpLmludG8oKSwKKyAgICAgICAgKSkKKyAgICB9IGVs c2UgeworICAgICAgICBPaygoKSkKKyAgICB9OworfQorCitmbiBjaGVja19hZGRyX3ZhbGlkX2lu X3N1Ym5ldChhZGRyOiAmSXBBZGRyLCBtYXNrOiB1c2l6ZSkgLT4gUmVzdWx0PCgpLCBDaWRyQWRk cmVzc1BhcnNlRXJyb3I+IHsKKyAgICBtYXRjaCAmYWRkciB7CisgICAgICAgIElwQWRkcjo6VjQo YWRkcl92NCkgPT4geworICAgICAgICAgICAgaWYgbWFzayA+PSAzMSB7CisgICAgICAgICAgICAg ICAgcmV0dXJuIE9rKCgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGV0IG51bV9o b3N0X2JpdHMgPSAzMiAtIG1hc2s7CisgICAgICAgICAgICBsZXQgaG9zdF9wYXJ0X21hc2sgPSAo MXUzMiA8PCBudW1faG9zdF9iaXRzKSAtIDE7CisKKyAgICAgICAgICAgIGxldCBpcF9iaXRzID0g dTMyOjpmcm9tX2JlX2J5dGVzKGFkZHJfdjQub2N0ZXRzKCkpOworCisgICAgICAgICAgICBsZXQg bmV0d29ya19hZGRyID0gaXBfYml0cyAmICFob3N0X3BhcnRfbWFzazsKKyAgICAgICAgICAgIGxl dCBicm9hZGNhc3RfYWRkciA9IG5ldHdvcmtfYWRkciB8IGhvc3RfcGFydF9tYXNrOworCisgICAg ICAgICAgICBpZiBpcF9iaXRzID09IG5ldHdvcmtfYWRkciB7CisgICAgICAgICAgICAgICAgRXJy KENpZHJBZGRyZXNzUGFyc2VFcnJvcjo6SXNOZXR3b3JrQWRkcikKKyAgICAgICAgICAgIH0gZWxz ZSBpZiBpcF9iaXRzID09IGJyb2FkY2FzdF9hZGRyIHsKKyAgICAgICAgICAgICAgICBFcnIoQ2lk ckFkZHJlc3NQYXJzZUVycm9yOjpJc0Jyb2FkY2FzdEFkZHIpCisgICAgICAgICAgICB9IGVsc2Ug eworICAgICAgICAgICAgICAgIE9rKCgpKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg ICAgIElwQWRkcjo6VjYoXykgPT4gT2soKCkpLAorICAgIH0KK30KKwogLy8vIFBvc3NpYmxlIGVy cm9ycyB0aGF0IG1pZ2h0IG9jY3VyIHdoZW4gcGFyc2luZyBGUUROcy4KICNbZGVyaXZlKERlYnVn LCBFcSwgUGFydGlhbEVxKV0KIHB1YiBlbnVtIEZxZG5QYXJzZUVycm9yIHsKLS0gCjIuNDcuMgoK CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpwdmUtZGV2 ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0cy5wcm94bW94LmNvbQpodHRwczovL2xpc3Rz LnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9wdmUtZGV2ZWwK