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 837F81FF170 for ; Thu, 10 Jul 2025 17:09:52 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 1675937914; Thu, 10 Jul 2025 17:10:29 +0200 (CEST) From: =?UTF-8?q?Fabian=20Gr=C3=BCnbichler?= To: pve-devel@lists.proxmox.com Date: Thu, 10 Jul 2025 17:09:51 +0200 Message-Id: <20250710150952.327724-2-f.gruenbichler@proxmox.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250710150952.327724-1-f.gruenbichler@proxmox.com> References: <20250710150952.327724-1-f.gruenbichler@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL -1.454 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 URIBL_BLACK 3 Contains an URL listed in the URIBL blacklist [plugin.pm] Subject: [pve-devel] [PATCH FOLLOW-UP storage 2/3] helpers: move qemu_img* to Common module 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" U2lnbmVkLW9mZi1ieTogRmFiaWFuIEdyw7xuYmljaGxlciA8Zi5ncnVlbmJpY2hsZXJAcHJveG1v eC5jb20+Ci0tLQogc3JjL1BWRS9TdG9yYWdlL0NvbW1vbi5wbSAgICB8IDE0NyArKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0KIHNyYy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4ucG0gfCAg MTAgKy0tCiBzcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtICAgIHwgMTUzICsrKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDE1MiBpbnNlcnRpb25zKCsp LCAxNTggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlL0NvbW1vbi5w bSBiL3NyYy9QVkUvU3RvcmFnZS9Db21tb24ucG0KaW5kZXggYWE4OWU2OC4uNzFkMTIzYSAxMDA2 NDQKLS0tIGEvc3JjL1BWRS9TdG9yYWdlL0NvbW1vbi5wbQorKysgYi9zcmMvUFZFL1N0b3JhZ2Uv Q29tbW9uLnBtCkBAIC0xMTEsMTggKzExMSw3IEBAIHN1YiBkZWFsbG9jYXRlIDogcHJvdG90eXBl KCQkJCkgewogICAgIH0KIH0KIAotPXBvZAotCi09aGVhZDMgcnVuX3FlbXVfaW1nX2pzb24KLQot ICAgIHJ1bl9xZW11X2ltZ19qc29uKCRjbWQsICR0aW1lb3V0KQotCi1FeGVjdXRlIHFlbXVfaW1n IGNvbW1hbmQgQzwkY21kPiB3aXRoIGEgdGltZW91dCBDPCR0aW1lb3V0Pi4KLVBhcnNlIHRoZSBv dXRwdXQgcmVzdWx0IGFuZCByZXR1cm4gYSBqc29uLgotCi09Y3V0Ci0KLXN1YiBydW5fcWVtdV9p bWdfanNvbiB7CitteSBzdWIgcnVuX3FlbXVfaW1nX2pzb24gewogICAgIG15ICgkY21kLCAkdGlt ZW91dCkgPSBAXzsKICAgICBteSAkanNvbiA9ICcnOwogICAgIG15ICRlcnJfb3V0cHV0ID0gJyc7 CkBAIC0xNDMsNCArMTMyLDEzOCBAQCBzdWIgcnVuX3FlbXVfaW1nX2pzb24gewogICAgIH0KICAg ICByZXR1cm4gJGpzb247CiB9CisKKz1wb2QKKworPWhlYWQzIHFlbXVfaW1nX2NyZWF0ZQorCisg ICAgcWVtdV9pbWdfY3JlYXRlKCRmbXQsICRzaXplLCAkcGF0aCwgJG9wdGlvbnMpCisKK0NyZWF0 ZSBhIG5ldyBxZW11IGltYWdlIHdpdGggYSBzcGVjaWZpYyBmb3JtYXQgQzwkZm9ybWF0PiBhbmQg c2l6ZSBDPCRzaXplPiBmb3IgYSB0YXJnZXQgQzwkcGF0aD4uCisKK0M8JG9wdGlvbnM+IGN1cnJl bnRseSBhbGxvd3Mgc2V0dGluZyB0aGUgQzxwcmVhbGxvY2F0aW9uPiB2YWx1ZQorCis9Y3V0CisK K3N1YiBxZW11X2ltZ19jcmVhdGUgeworICAgIG15ICgkZm10LCAkc2l6ZSwgJHBhdGgsICRvcHRp b25zKSA9IEBfOworCisgICAgbXkgJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcnLCAnY3JlYXRl J107CisKKyAgICBwdXNoIEAkY21kLCAnLW8nLCAicHJlYWxsb2NhdGlvbj0kb3B0aW9ucy0+e3By ZWFsbG9jYXRpb259IgorICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zLT57cHJlYWxsb2NhdGlv bn0pOworCisgICAgcHVzaCBAJGNtZCwgJy1mJywgJGZtdCwgJHBhdGgsICIke3NpemV9SyI7CisK KyAgICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gInVuYWJsZSB0byBjcmVhdGUgaW1hZ2Ui KTsKK30KKworPXBvZAorCis9aGVhZDMgcWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tlZAorCisg ICAgcWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tlZCgkcGF0aCwgJGJhY2tpbmdfcGF0aCwgJGJh Y2tpbmdfZm9ybWF0LCAkb3B0aW9ucykKKworQ3JlYXRlIGEgbmV3IHFlbXUgcWNvdzIgaW1hZ2Ug QzwkcGF0aD4gdXNpbmcgYW4gZXhpc3RpbmcgYmFja2luZyBpbWFnZSBDPCRiYWNraW5nX3BhdGg+ IHdpdGggYmFja2luZ19mb3JtYXQgQzwkYmFja2luZ19mb3JtYXQ+LgorCitDPCRvcHRpb25zPiBj dXJyZW50bHkgYWxsb3dzIHNldHRpbmcgdGhlIEM8cHJlYWxsb2NhdGlvbj4gdmFsdWUuCisKKz1j dXQKKworc3ViIHFlbXVfaW1nX2NyZWF0ZV9xY293Ml9iYWNrZWQgeworICAgIG15ICgkcGF0aCwg JGJhY2tpbmdfcGF0aCwgJGJhY2tpbmdfZm9ybWF0LCAkb3B0aW9ucykgPSBAXzsKKworICAgIG15 ICRjbWQgPSBbCisgICAgICAgICcvdXNyL2Jpbi9xZW11LWltZycsCisgICAgICAgICdjcmVhdGUn LAorICAgICAgICAnLUYnLAorICAgICAgICAkYmFja2luZ19mb3JtYXQsCisgICAgICAgICctYics CisgICAgICAgICRiYWNraW5nX3BhdGgsCisgICAgICAgICctZicsCisgICAgICAgICdxY293Mics CisgICAgICAgICRwYXRoLAorICAgIF07CisKKyAgICAjIFRPRE8gbWFrZSB0aGlzIGNvbmZpZ3Vy YWJsZSBmb3IgYWxsIHZvbHVtZXMvdHlwZXMgYW5kIHBhc3MgaW4gdmlhICRvcHRpb25zCisgICAg bXkgJG9wdHMgPSBbJ2V4dGVuZGVkX2wyPW9uJywgJ2NsdXN0ZXJfc2l6ZT0xMjhrJ107CisKKyAg ICBwdXNoIEAkb3B0cywgInByZWFsbG9jYXRpb249JG9wdGlvbnMtPntwcmVhbGxvY2F0aW9ufSIK KyAgICAgICAgaWYgZGVmaW5lZCgkb3B0aW9ucy0+e3ByZWFsbG9jYXRpb259KTsKKyAgICBwdXNo IEAkY21kLCAnLW8nLCBqb2luKCcsJywgQCRvcHRzKSBpZiBAJG9wdHMgPiAwOworCisgICAgcnVu X2NvbW1hbmQoJGNtZCwgZXJybXNnID0+ICJ1bmFibGUgdG8gY3JlYXRlIGltYWdlIik7Cit9CisK Kz1wb2QKKworPWhlYWQzIHFlbXVfaW1nX2luZm8KKworICAgIHFlbXVfaW1nX2luZm8oJGZpbGVu YW1lLCAkZmlsZV9mb3JtYXQsICR0aW1lb3V0LCAkZm9sbG93X2JhY2tpbmdfZmlsZXMpCisKK1Jl dHVybnMgYSBqc29uIHdpdGggcWVtdSBpbWFnZSBDPCRmaWxlbmFtZT4gaW5mb3JtYXRpb25zIHdp dGggZm9ybWF0IDwkZmlsZV9mb3JtYXQ+LgorSWYgQzwkZm9sbG93X2JhY2tpbmdfZmlsZXM+IG9w dGlvbiBpcyBkZWZpbmVkLCByZXR1cm4gYSBqc29uIHdpdGggdGhlIHdob2xlIGNoYWluCitvZiBi YWNraW5nIGZpbGVzIGltYWdlcy4KKworPWN1dAorCitzdWIgcWVtdV9pbWdfaW5mbyB7CisgICAg bXkgKCRmaWxlbmFtZSwgJGZpbGVfZm9ybWF0LCAkdGltZW91dCwgJGZvbGxvd19iYWNraW5nX2Zp bGVzKSA9IEBfOworCisgICAgbXkgJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcnLCAnaW5mbycs ICctLW91dHB1dD1qc29uJywgJGZpbGVuYW1lXTsKKyAgICBwdXNoICRjbWQtPkAqLCAnLWYnLCAk ZmlsZV9mb3JtYXQgaWYgJGZpbGVfZm9ybWF0OworICAgIHB1c2ggJGNtZC0+QCosICctLWJhY2tp bmctY2hhaW4nIGlmICRmb2xsb3dfYmFja2luZ19maWxlczsKKworICAgIHJldHVybiBydW5fcWVt dV9pbWdfanNvbigkY21kLCAkdGltZW91dCk7Cit9CisKKz1wb2QKKworPWhlYWQzIHFlbXVfaW1n X21lYXN1cmUKKworICAgIHFlbXVfaW1nX21lYXN1cmUoJHNpemUsICRmbXQsICR0aW1lb3V0LCAk b3B0aW9ucykKKworUmV0dXJucyBhIGpzb24gd2l0aCB0aGUgbWF4aW11bSBzaXplIGluY2x1ZGlu ZyBhbGwgbWV0YWRhdGFzIG92ZXJoZWFkIGZvciBhbiBpbWFnZSB3aXRoIGZvcm1hdCBDPCRmbXQ+ IGFuZCBvcmlnaW5hbCBzaXplIEM8JHNpemU+S2IuCisKK0M8JG9wdGlvbnM+IGFsbG93cyBzcGVj aWZ5aW5nIHFlbXUtaW1nIG9wdGlvbnMgdGhhdCBtaWdodCBhZmZlY3QgdGhlIHNpemluZyBjYWxj dWxhdGlvbiwgc3VjaCBhcyBjbHVzdGVyIHNpemUuCisKKz1jdXQKKworc3ViIHFlbXVfaW1nX21l YXN1cmUgeworICAgIG15ICgkc2l6ZSwgJGZtdCwgJHRpbWVvdXQsICRvcHRpb25zKSA9IEBfOwor CisgICAgZGllICJmb3JtYXQgaXMgbWlzc2luZyIgaWYgISRmbXQ7CisKKyAgICBteSAkY21kID0g WycvdXNyL2Jpbi9xZW11LWltZycsICdtZWFzdXJlJywgJy0tb3V0cHV0PWpzb24nLCAnLS1zaXpl JywgIiR7c2l6ZX1LIiwgJy1PJywgJGZtdF07CisgICAgaWYgKCRvcHRpb25zKSB7CisgICAgICAg IHB1c2ggJGNtZC0+QCosICctbycsIGpvaW4oJywnLCBAJG9wdGlvbnMpIGlmIEAkb3B0aW9ucyA+ IDA7CisgICAgfQorICAgIHJldHVybiBydW5fcWVtdV9pbWdfanNvbigkY21kLCAkdGltZW91dCk7 Cit9CisKKz1wb2QKKworPWhlYWQzIHFlbXVfaW1nX3Jlc2l6ZQorCisgICAgcWVtdV9pbWdfcmVz aXplKCRzY2ZnLCAkcGF0aCwgJGZvcm1hdCwgJHNpemUsICRwcmVhbGxvY2F0aW9uLCAkdGltZW91 dCkKKworUmVzaXplIGEgcWVtdSBpbWFnZSBDPCRwYXRoPiB3aXRoIGZvcm1hdCBDPCRmb3JtYXQ+ IHRvIGEgdGFyZ2V0IEtiIHNpemUgQzwkc2l6ZT4uCitEZWZhdWx0IHRpbWVvdXQgQzwkdGltZW91 dD4gaXMgMTBzIGlmIG5vdCBzcGVjaWZpZWQuCitDPCRwcmVhbGxvY2F0aW9uPiBhbGxvd3MgdG8g c3BlY2lmeSB0aGUgcHJlYWxsb2NhdGlvbiBvcHRpb24gZm9yIHRoZSByZXNpemUgb3BlcmF0aW9u LgorCis9Y3V0CisKK3N1YiBxZW11X2ltZ19yZXNpemUgeworICAgIG15ICgkc2NmZywgJHBhdGgs ICRmb3JtYXQsICRzaXplLCAkcHJlYWxsb2NhdGlvbiwgJHRpbWVvdXQpID0gQF87CisKKyAgICBk aWUgImZvcm1hdCBpcyBtaXNzaW5nIiBpZiAhJGZvcm1hdDsKKworICAgIG15ICRjbWQgPSBbJy91 c3IvYmluL3FlbXUtaW1nJywgJ3Jlc2l6ZSddOworICAgIHB1c2ggJGNtZC0+QCosICItLXByZWFs bG9jYXRpb249JHByZWFsbG9jYXRpb24iIGlmICRwcmVhbGxvY2F0aW9uOworICAgIHB1c2ggJGNt ZC0+QCosICctZicsICRmb3JtYXQsICRwYXRoLCAkc2l6ZTsKKworICAgICR0aW1lb3V0ID0gMTAg aWYgISR0aW1lb3V0OworICAgIHJ1bl9jb21tYW5kKCRjbWQsIHRpbWVvdXQgPT4gJHRpbWVvdXQp OworfQorCiAxOwpkaWZmIC0tZ2l0IGEvc3JjL1BWRS9TdG9yYWdlL0xWTVBsdWdpbi5wbSBiL3Ny Yy9QVkUvU3RvcmFnZS9MVk1QbHVnaW4ucG0KaW5kZXggZjkwZGYxOC4uNGI2MGUzMiAxMDA2NDQK LS0tIGEvc3JjL1BWRS9TdG9yYWdlL0xWTVBsdWdpbi5wbQorKysgYi9zcmMvUFZFL1N0b3JhZ2Uv TFZNUGx1Z2luLnBtCkBAIC01ODQsOSArNTg0LDkgQEAgbXkgc3ViIGx2bV9xY293Ml9mb3JtYXQg ewogICAgIH07CiAgICAgaWYgKCRiYWNraW5nX3NuYXApIHsKICAgICAgICAgbXkgJGJhY2tpbmdf cGF0aCA9ICRjbGFzcy0+cGF0aCgkc2NmZywgJG5hbWUsICRzdG9yZWlkLCAkYmFja2luZ19zbmFw KTsKLSAgICAgICAgUFZFOjpTdG9yYWdlOjpQbHVnaW46OnFlbXVfaW1nX2NyZWF0ZV9xY293Ml9i YWNrZWQoJHBhdGgsICRiYWNraW5nX3BhdGgsICRmbXQsICRvcHRpb25zKTsKKyAgICAgICAgUFZF OjpTdG9yYWdlOjpDb21tb246OnFlbXVfaW1nX2NyZWF0ZV9xY293Ml9iYWNrZWQoJHBhdGgsICRi YWNraW5nX3BhdGgsICRmbXQsICRvcHRpb25zKTsKICAgICB9IGVsc2UgewotICAgICAgICBQVkU6 OlN0b3JhZ2U6OlBsdWdpbjo6cWVtdV9pbWdfY3JlYXRlKCRmbXQsICRzaXplLCAkcGF0aCwgJG9w dGlvbnMpOworICAgICAgICBQVkU6OlN0b3JhZ2U6OkNvbW1vbjo6cWVtdV9pbWdfY3JlYXRlKCRm bXQsICRzaXplLCAkcGF0aCwgJG9wdGlvbnMpOwogICAgIH0KIH0KIApAQCAtNTk4LDcgKzU5OCw3 IEBAIG15IHN1YiBjYWxjdWxhdGVfbHZtX3NpemUgewogCiAgICAgbXkgJG9wdGlvbnMgPSAkYmFj a2luZ19zbmFwID8gWydleHRlbmRlZF9sMj1vbicsICdjbHVzdGVyX3NpemU9MTI4ayddIDogW107 CiAKLSAgICBteSAkanNvbiA9IFBWRTo6U3RvcmFnZTo6UGx1Z2luOjpxZW11X2ltZ19tZWFzdXJl KCRzaXplLCAkZm10LCA1LCAkb3B0aW9ucyk7CisgICAgbXkgJGpzb24gPSBQVkU6OlN0b3JhZ2U6 OkNvbW1vbjo6cWVtdV9pbWdfbWVhc3VyZSgkc2l6ZSwgJGZtdCwgNSwgJG9wdGlvbnMpOwogICAg IGRpZSAiZmFpbGVkIHRvIHF1ZXJ5IGZpbGUgaW5mb3JtYXRpb24gd2l0aCBxZW11LWltZyBtZWFz dXJlXG4iIGlmICEkanNvbjsKICAgICBteSAkaW5mbyA9IGV2YWwgeyBkZWNvZGVfanNvbigkanNv bikgfTsKICAgICBpZiAoJEApIHsKQEAgLTg3MSw4ICs4NzEsOCBAQCBzdWIgdm9sdW1lX3Jlc2l6 ZSB7CiAgICAgKTsKIAogICAgIGlmICghJHJ1bm5pbmcgJiYgJGZvcm1hdCBlcSAncWNvdzInKSB7 Ci0gICAgICAgIG15ICRwcmVhbGxvY2F0aW9uID0gUFZFOjpTdG9yYWdlOjpQbHVnaW46OnByZWFs bG9jYXRpb25fY21kX29wdCgkc2NmZywgJGZtdCk7Ci0gICAgICAgIFBWRTo6U3RvcmFnZTo6UGx1 Z2luOjpxZW11X2ltZ19yZXNpemUoJHBhdGgsICRmb3JtYXQsICRzaXplLCAkcHJlYWxsb2NhdGlv biwgMTApOworICAgICAgICBteSAkcHJlYWxsb2NhdGlvbiA9IFBWRTo6U3RvcmFnZTo6UGx1Z2lu OjpwcmVhbGxvY2F0aW9uX2NtZF9vcHQoJHNjZmcsICRmb3JtYXQpOworICAgICAgICBQVkU6OlN0 b3JhZ2U6OkNvbW1vbjo6cWVtdV9pbWdfcmVzaXplKCRwYXRoLCAkZm9ybWF0LCAkc2l6ZSwgJHBy ZWFsbG9jYXRpb24sIDEwKTsKICAgICB9CiAKICAgICByZXR1cm4gMTsKZGlmZiAtLWdpdCBhL3Ny Yy9QVkUvU3RvcmFnZS9QbHVnaW4ucG0gYi9zcmMvUFZFL1N0b3JhZ2UvUGx1Z2luLnBtCmluZGV4 IDZlYjkxYjcuLmFlZTE0NWYgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvU3RvcmFnZS9QbHVnaW4ucG0K KysrIGIvc3JjL1BWRS9TdG9yYWdlL1BsdWdpbi5wbQpAQCAtNTEsMTAgKzUxLDYgQEAgb3VyICRS QVdfUFJFQUxMT0NBVElPTiA9IHsKICAgICBmdWxsID0+IDEsCiB9OwogCi1teSAkUUNPVzJfQ0xV U1RFUlMgPSB7Ci0gICAgYmFja2VkID0+IFsnZXh0ZW5kZWRfbDI9b24nLCAnY2x1c3Rlcl9zaXpl PTEyOGsnXSwKLX07Ci0KIG91ciAkTUFYX1ZPTFVNRVNfUEVSX0dVRVNUID0gMTAyNDsKIAogY2Zz X3JlZ2lzdGVyX2ZpbGUoCkBAIC02NDAsMTM3ICs2MzYsNiBAQCBzdWIgcHJlYWxsb2NhdGlvbl9j bWRfb3B0IHsKICAgICByZXR1cm47CiB9CiAKLT1wb2QKLQotPWhlYWQzIHFlbXVfaW1nX2NyZWF0 ZQotCi0gICAgcWVtdV9pbWdfY3JlYXRlKCRmbXQsICRzaXplLCAkcGF0aCwgJG9wdGlvbnMpCi0K LUNyZWF0ZSBhIG5ldyBxZW11IGltYWdlIHdpdGggYSBzcGVjaWZpYyBmb3JtYXQgQzwkZm9ybWF0 PiBhbmQgc2l6ZSBDPCRzaXplPiBmb3IgYSB0YXJnZXQgQzwkcGF0aD4uCi0KLUM8JG9wdGlvbnM+ IGN1cnJlbnRseSBhbGxvd3Mgc2V0dGluZyB0aGUgQzxwcmVhbGxvY2F0aW9uPiB2YWx1ZQotCi09 Y3V0Ci0KLXN1YiBxZW11X2ltZ19jcmVhdGUgewotICAgIG15ICgkZm10LCAkc2l6ZSwgJHBhdGgs ICRvcHRpb25zKSA9IEBfOwotCi0gICAgbXkgJGNtZCA9IFsnL3Vzci9iaW4vcWVtdS1pbWcnLCAn Y3JlYXRlJ107Ci0KLSAgICBwdXNoIEAkY21kLCAnLW8nLCAicHJlYWxsb2NhdGlvbj0kb3B0aW9u cy0+e3ByZWFsbG9jYXRpb259IgotICAgICAgICBpZiBkZWZpbmVkKCRvcHRpb25zLT57cHJlYWxs b2NhdGlvbn0pOwotCi0gICAgcHVzaCBAJGNtZCwgJy1mJywgJGZtdCwgJHBhdGgsICIke3NpemV9 SyI7Ci0KLSAgICBydW5fY29tbWFuZCgkY21kLCBlcnJtc2cgPT4gInVuYWJsZSB0byBjcmVhdGUg aW1hZ2UiKTsKLX0KLQotPXBvZAotCi09aGVhZDMgcWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tl ZAotCi0gICAgcWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tlZCgkcGF0aCwgJGJhY2tpbmdfcGF0 aCwgJGJhY2tpbmdfZm9ybWF0LCAkb3B0aW9ucykKLQotQ3JlYXRlIGEgbmV3IHFlbXUgcWNvdzIg aW1hZ2UgQzwkcGF0aD4gdXNpbmcgYW4gZXhpc3RpbmcgYmFja2luZyBpbWFnZSBDPCRiYWNraW5n X3BhdGg+IHdpdGggYmFja2luZ19mb3JtYXQgQzwkYmFja2luZ19mb3JtYXQ+LgotCi1DPCRvcHRp b25zPiBjdXJyZW50bHkgYWxsb3dzIHNldHRpbmcgdGhlIEM8cHJlYWxsb2NhdGlvbj4gdmFsdWUu Ci0KLT1jdXQKLQotc3ViIHFlbXVfaW1nX2NyZWF0ZV9xY293Ml9iYWNrZWQgewotICAgIG15ICgk cGF0aCwgJGJhY2tpbmdfcGF0aCwgJGJhY2tpbmdfZm9ybWF0LCAkb3B0aW9ucykgPSBAXzsKLQot ICAgIG15ICRjbWQgPSBbCi0gICAgICAgICcvdXNyL2Jpbi9xZW11LWltZycsCi0gICAgICAgICdj cmVhdGUnLAotICAgICAgICAnLUYnLAotICAgICAgICAkYmFja2luZ19mb3JtYXQsCi0gICAgICAg ICctYicsCi0gICAgICAgICRiYWNraW5nX3BhdGgsCi0gICAgICAgICctZicsCi0gICAgICAgICdx Y293MicsCi0gICAgICAgICRwYXRoLAotICAgIF07Ci0KLSAgICBteSAkb3B0cyA9ICRRQ09XMl9D TFVTVEVSUy0+e2JhY2tlZH07Ci0KLSAgICBwdXNoIEAkb3B0cywgJG9wdGlvbnMtPntwcmVhbGxv Y2F0aW9ufSBpZiBkZWZpbmVkKCRvcHRpb25zLT57cHJlYWxsb2NhdGlvbn0pOwotICAgIHB1c2gg QCRjbWQsICctbycsIGpvaW4oJywnLCBAJG9wdHMpIGlmIEAkb3B0cyA+IDA7Ci0KLSAgICBydW5f Y29tbWFuZCgkY21kLCBlcnJtc2cgPT4gInVuYWJsZSB0byBjcmVhdGUgaW1hZ2UiKTsKLX0KLQot PXBvZAotCi09aGVhZDMgcWVtdV9pbWdfaW5mbwotCi0gICAgcWVtdV9pbWdfaW5mbygkZmlsZW5h bWUsICRmaWxlX2Zvcm1hdCwgJHRpbWVvdXQsICRmb2xsb3dfYmFja2luZ19maWxlcykKLQotUmV0 dXJucyBhIGpzb24gd2l0aCBxZW11IGltYWdlIEM8JGZpbGVuYW1lPiBpbmZvcm1hdGlvbnMgd2l0 aCBmb3JtYXQgPCRmaWxlX2Zvcm1hdD4uCi1JZiBDPCRmb2xsb3dfYmFja2luZ19maWxlcz4gb3B0 aW9uIGlzIGRlZmluZWQsIHJldHVybiBhIGpzb24gd2l0aCB0aGUgd2hvbGUgY2hhaW4KLW9mIGJh Y2tpbmcgZmlsZXMgaW1hZ2VzLgotCi09Y3V0Ci0KLXN1YiBxZW11X2ltZ19pbmZvIHsKLSAgICBt eSAoJGZpbGVuYW1lLCAkZmlsZV9mb3JtYXQsICR0aW1lb3V0LCAkZm9sbG93X2JhY2tpbmdfZmls ZXMpID0gQF87Ci0KLSAgICBteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdpbmZvJywg Jy0tb3V0cHV0PWpzb24nLCAkZmlsZW5hbWVdOwotICAgIHB1c2ggJGNtZC0+QCosICctZicsICRm aWxlX2Zvcm1hdCBpZiAkZmlsZV9mb3JtYXQ7Ci0gICAgcHVzaCAkY21kLT5AKiwgJy0tYmFja2lu Zy1jaGFpbicgaWYgJGZvbGxvd19iYWNraW5nX2ZpbGVzOwotCi0gICAgcmV0dXJuIFBWRTo6U3Rv cmFnZTo6Q29tbW9uOjpydW5fcWVtdV9pbWdfanNvbigkY21kLCAkdGltZW91dCk7Ci19Ci0KLT1w b2QKLQotPWhlYWQzIHFlbXVfaW1nX21lYXN1cmUKLQotICAgIHFlbXVfaW1nX21lYXN1cmUoJHNp emUsICRmbXQsICR0aW1lb3V0LCAkb3B0aW9ucykKLQotUmV0dXJucyBhIGpzb24gd2l0aCB0aGUg bWF4aW11bSBzaXplIGluY2x1ZGluZyBhbGwgbWV0YWRhdGFzIG92ZXJoZWFkIGZvciBhbiBpbWFn ZSB3aXRoIGZvcm1hdCBDPCRmbXQ+IGFuZCBvcmlnaW5hbCBzaXplIEM8JHNpemU+S2IuCi0KLUM8 JG9wdGlvbnM+IGFsbG93cyBzcGVjaWZ5aW5nIHFlbXUtaW1nIG9wdGlvbnMgdGhhdCBtaWdodCBh ZmZlY3QgdGhlIHNpemluZyBjYWxjdWxhdGlvbiwgc3VjaCBhcyBjbHVzdGVyIHNpemUuCi0KLT1j dXQKLQotc3ViIHFlbXVfaW1nX21lYXN1cmUgewotICAgIG15ICgkc2l6ZSwgJGZtdCwgJHRpbWVv dXQsICRvcHRpb25zKSA9IEBfOwotCi0gICAgZGllICJmb3JtYXQgaXMgbWlzc2luZyIgaWYgISRm bXQ7Ci0KLSAgICBteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWltZycsICdtZWFzdXJlJywgJy0t b3V0cHV0PWpzb24nLCAnLS1zaXplJywgIiR7c2l6ZX1LIiwgJy1PJywgJGZtdF07Ci0gICAgaWYg KCRvcHRpb25zKSB7Ci0gICAgICAgIHB1c2ggJGNtZC0+QCosICctbycsIGpvaW4oJywnLCBAJG9w dGlvbnMpIGlmIEAkb3B0aW9ucyA+IDA7Ci0gICAgfQotICAgIHJldHVybiBQVkU6OlN0b3JhZ2U6 OkNvbW1vbjo6cnVuX3FlbXVfaW1nX2pzb24oJGNtZCwgJHRpbWVvdXQpOwotfQotCi09cG9kCi0K LT1oZWFkMyBxZW11X2ltZ19yZXNpemUKLQotICAgIHFlbXVfaW1nX3Jlc2l6ZSgkc2NmZywgJHBh dGgsICRmb3JtYXQsICRzaXplLCAkcHJlYWxsb2NhdGlvbiwgJHRpbWVvdXQpCi0KLVJlc2l6ZSBh IHFlbXUgaW1hZ2UgQzwkcGF0aD4gd2l0aCBmb3JtYXQgQzwkZm9ybWF0PiB0byBhIHRhcmdldCBL YiBzaXplIEM8JHNpemU+LgotRGVmYXVsdCB0aW1lb3V0IEM8JHRpbWVvdXQ+IGlzIDEwcyBpZiBu b3Qgc3BlY2lmaWVkLgotQzwkcHJlYWxsb2NhdGlvbj4gYWxsb3dzIHRvIHNwZWNpZnkgdGhlIHBy ZWFsbG9jYXRpb24gb3B0aW9uIGZvciB0aGUgcmVzaXplIG9wZXJhdGlvbi4KLQotPWN1dAotCi1z dWIgcWVtdV9pbWdfcmVzaXplIHsKLSAgICBteSAoJHNjZmcsICRwYXRoLCAkZm9ybWF0LCAkc2l6 ZSwgJHByZWFsbG9jYXRpb24sICR0aW1lb3V0KSA9IEBfOwotCi0gICAgZGllICJmb3JtYXQgaXMg bWlzc2luZyIgaWYgISRmb3JtYXQ7Ci0KLSAgICBteSAkY21kID0gWycvdXNyL2Jpbi9xZW11LWlt ZycsICdyZXNpemUnXTsKLSAgICBwdXNoICRjbWQtPkAqLCAiLS1wcmVhbGxvY2F0aW9uPSRwcmVh bGxvY2F0aW9uIiBpZiAkcHJlYWxsb2NhdGlvbjsKLSAgICBwdXNoICRjbWQtPkAqLCAnLWYnLCAk Zm9ybWF0LCAkcGF0aCwgJHNpemU7Ci0KLSAgICAkdGltZW91dCA9IDEwIGlmICEkdGltZW91dDsK LSAgICBydW5fY29tbWFuZCgkY21kLCB0aW1lb3V0ID0+ICR0aW1lb3V0KTsKLX0KLQogIyBTdG9y YWdlIGltcGxlbWVudGF0aW9uCiAKICMgY2FsbGVkIGR1cmluZyBhZGRpdGlvbiBvZiBzdG9yYWdl IChiZWZvcmUgdGhlIG5ldyBzdG9yYWdlIGNvbmZpZyBnb3Qgd3JpdHRlbikKQEAgLTEwNzYsNyAr OTQxLDkgQEAgc3ViIGNsb25lX2ltYWdlIHsKICAgICAgICAgbXkgJG9wdGlvbnMgPSB7CiAgICAg ICAgICAgICBwcmVhbGxvY2F0aW9uID0+IHByZWFsbG9jYXRpb25fY21kX29wdCgkc2NmZywgJGZv cm1hdCksCiAgICAgICAgIH07Ci0gICAgICAgIHFlbXVfaW1nX2NyZWF0ZV9xY293Ml9iYWNrZWQo JHBhdGgsICIuLi8kYmFzZXZtaWQvJGJhc2VuYW1lIiwgJGZvcm1hdCwgJG9wdGlvbnMpOworICAg ICAgICBQVkU6OlN0b3JhZ2U6OkNvbW1vbjo6cWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tlZCgK KyAgICAgICAgICAgICRwYXRoLCAiLi4vJGJhc2V2bWlkLyRiYXNlbmFtZSIsICRmb3JtYXQsICRv cHRpb25zLAorICAgICAgICApOwogICAgIH07CiAgICAgbXkgJGVyciA9ICRAOwogCkBAIC0xMTE3 LDcgKzk4NCw3IEBAIHN1YiBhbGxvY19pbWFnZSB7CiAgICAgICAgIG15ICRwcmVhbGxvY2F0aW9u ID0gcHJlYWxsb2NhdGlvbl9jbWRfb3B0KCRzY2ZnLCAkZm10KTsKICAgICAgICAgbXkgJG9wdGlv bnMgPSB7fTsKICAgICAgICAgJG9wdGlvbnMtPntwcmVhbGxvY2F0aW9ufSA9ICRwcmVhbGxvY2F0 aW9uIGlmICRwcmVhbGxvY2F0aW9uOwotICAgICAgICBldmFsIHsgcWVtdV9pbWdfY3JlYXRlKCRm bXQsICRzaXplLCAkcGF0aCwgJG9wdGlvbnMpIH07CisgICAgICAgIGV2YWwgeyBQVkU6OlN0b3Jh Z2U6OkNvbW1vbjo6cWVtdV9pbWdfY3JlYXRlKCRmbXQsICRzaXplLCAkcGF0aCwgJG9wdGlvbnMp IH07CiAgICAgICAgIGlmICgkQCkgewogICAgICAgICAgICAgdW5saW5rICRwYXRoOwogICAgICAg ICAgICAgcm1kaXIgJGltYWdlZGlyOwpAQCAtMTEzOSw3ICsxMDA2LDExIEBAIG15IHN1YiBhbGxv Y19iYWNrZWRfaW1hZ2UgewogICAgICRvcHRpb25zLT57cHJlYWxsb2NhdGlvbn0gPSAkcHJlYWxs b2NhdGlvbiBpZiAkcHJlYWxsb2NhdGlvbjsKICAgICBteSAkYmFja2luZ192b2xuYW1lID0gZ2V0 X3NuYXBfbmFtZSgkY2xhc3MsICR2b2xuYW1lLCAkYmFja2luZ19zbmFwKTsKICAgICAjcWVtdV9p bWcgdXNlIHJlbGF0aXZlIHBhdGggZnJvbSBiYXNlIGltYWdlIGZvciB0aGUgYmFja2luZ192b2xu YW1lIGJ5IGRlZmF1bHQKLSAgICBldmFsIHsgcWVtdV9pbWdfY3JlYXRlX3Fjb3cyX2JhY2tlZCgk cGF0aCwgJGJhY2tpbmdfdm9sbmFtZSwgJGJhY2tpbmdfZm9ybWF0LCAkb3B0aW9ucykgfTsKKyAg ICBldmFsIHsKKyAgICAgICAgUFZFOjpTdG9yYWdlOjpDb21tb246OnFlbXVfaW1nX2NyZWF0ZV9x Y293Ml9iYWNrZWQoCisgICAgICAgICAgICAkcGF0aCwgJGJhY2tpbmdfdm9sbmFtZSwgJGJhY2tp bmdfZm9ybWF0LCAkb3B0aW9ucywKKyAgICAgICAgKTsKKyAgICB9OwogICAgIGlmICgkQCkgewog ICAgICAgICB1bmxpbmsgJHBhdGg7CiAgICAgICAgIGRpZSAiJEAiOwpAQCAtMTI3MSw3ICsxMTQy LDcgQEAgc3ViIGZpbGVfc2l6ZV9pbmZvIHsKICAgICAgICAgICAgICJmaWxlX3NpemVfaW5mbzog JyRmaWxlbmFtZSc6IGZhbGxpbmcgYmFjayB0byAncmF3JyBmcm9tIHVua25vd24gZm9ybWF0ICck ZmlsZV9mb3JtYXQnXG4iOwogICAgICAgICAkZmlsZV9mb3JtYXQgPSAncmF3JzsKICAgICB9Ci0g ICAgbXkgJGpzb24gPSBxZW11X2ltZ19pbmZvKCRmaWxlbmFtZSwgJGZpbGVfZm9ybWF0LCAkdGlt ZW91dCk7CisgICAgbXkgJGpzb24gPSBQVkU6OlN0b3JhZ2U6OkNvbW1vbjo6cWVtdV9pbWdfaW5m bygkZmlsZW5hbWUsICRmaWxlX2Zvcm1hdCwgJHRpbWVvdXQpOwogICAgIGlmICghJGpzb24pIHsK ICAgICAgICAgZGllICJmYWlsZWQgdG8gcXVlcnkgZmlsZSBpbmZvcm1hdGlvbiB3aXRoIHFlbXUt aW1nXG4iIGlmICR1bnRydXN0ZWQ7CiAgICAgICAgICMgc2tpcCBkZWNvZGluZyBpZiB0aGVyZSB3 YXMgbm8gb3V0cHV0LCBlLmcuIGlmIHRoZXJlIHdhcyBhIHRpbWVvdXQuCkBAIC0xMzg3LDcgKzEy NTgsNyBAQCBzdWIgdm9sdW1lX3Jlc2l6ZSB7CiAgICAgbXkgJGZvcm1hdCA9ICgkY2xhc3MtPnBh cnNlX3ZvbG5hbWUoJHZvbG5hbWUpKVs2XTsKIAogICAgIG15ICRwcmVhbGxvY2F0aW9uID0gcHJl YWxsb2NhdGlvbl9jbWRfb3B0KCRzY2ZnLCAkZm9ybWF0KTsKLSAgICBxZW11X2ltZ19yZXNpemUo JHBhdGgsICRmb3JtYXQsICRzaXplLCAkcHJlYWxsb2NhdGlvbiwgMTApOworICAgIFBWRTo6U3Rv cmFnZTo6Q29tbW9uOjpxZW11X2ltZ19yZXNpemUoJHBhdGgsICRmb3JtYXQsICRzaXplLCAkcHJl YWxsb2NhdGlvbiwgMTApOwogCiAgICAgcmV0dXJuIHVuZGVmOwogfQpAQCAtMTg3OSw3ICsxNzUw LDcgQEAgc3ViIHZvbHVtZV9zbmFwc2hvdF9pbmZvIHsKICAgICBteSAoJHZ0eXBlLCAkbmFtZSwg JHZtaWQsICRiYXNlbmFtZSwgJGJhc2V2bWlkLCAkaXNCYXNlLCAkZm9ybWF0KSA9CiAgICAgICAg ICRjbGFzcy0+cGFyc2Vfdm9sbmFtZSgkdm9sbmFtZSk7CiAKLSAgICBteSAkanNvbiA9IHFlbXVf aW1nX2luZm8oJHBhdGgsIHVuZGVmLCAxMCwgMSk7CisgICAgbXkgJGpzb24gPSBQVkU6OlN0b3Jh Z2U6OkNvbW1vbjo6cWVtdV9pbWdfaW5mbygkcGF0aCwgdW5kZWYsIDEwLCAxKTsKICAgICBkaWUg ImZhaWxlZCB0byBxdWVyeSBmaWxlIGluZm9ybWF0aW9uIHdpdGggcWVtdS1pbWdcbiIgaWYgISRq c29uOwogICAgIG15ICRqc29uX2RlY29kZSA9IGV2YWwgeyBkZWNvZGVfanNvbigkanNvbikgfTsK ICAgICBpZiAoJEApIHsKLS0gCjIuMzkuNQoKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpwdmUtZGV2ZWwgbWFpbGluZyBsaXN0CnB2ZS1kZXZlbEBsaXN0 cy5wcm94bW94LmNvbQpodHRwczovL2xpc3RzLnByb3htb3guY29tL2NnaS1iaW4vbWFpbG1hbi9s aXN0aW5mby9wdmUtZGV2ZWwK