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 D6DF51FF187 for ; Mon, 3 Nov 2025 11:22:17 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 3A06F17D0C; Mon, 3 Nov 2025 11:21:39 +0100 (CET) From: Daniel Kral To: pve-devel@lists.proxmox.com Date: Mon, 3 Nov 2025 11:19:54 +0100 Message-ID: <20251103102118.153666-11-d.kral@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251103102118.153666-1-d.kral@proxmox.com> References: <20251103102118.153666-1-d.kral@proxmox.com> MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1762165266773 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.015 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 ha-manager v3 10/21] compile ha rules to a more compact representation 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" VGhlIGluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgZmV0Y2hpbmcgYSBoYSByZXNvdXJjZSdzIHJ1 bGVzIGluIHRoZQpzY2hlZHVsZXIgYW5kIG90aGVyIHVzZXJzIGlzIHJhdGhlciBpbmVmZmljaWVu dCBhcyBpdCBuZWVkcyB0byBnbwp0aHJvdWdoIHRoZSByYXcgcnVsZXMgaGFzaCBtYXAgYW5kIGdh dGhlcnMgcXVpdGUgYSBsb3Qgb2YgaW5mb3JtYXRpb24Kd2hpY2ggZG9lc24ndCBjaGFuZ2UgdW5s ZXNzIHRoZSBIQSBydWxlcyBuZWVkIHRvIGJlIHJlLXRyYW5zbGF0ZWQKYW55d2F5LgoKVGhlcmVm b3JlIGFkZCBhIGNvbXBpbGUgc3RhZ2Ugd2hlbiByZS10cmFuc2xhdGluZyB0aGUgSEEgcnVsZXMs IHdoaWNoCmNvbXBpbGVzIGVhY2ggcnVsZSBwbHVnaW4ncyBydWxlcyBpbnRvIGEgbW9yZSBjb21w YWN0IGRhdGEgc3RydWN0dXJlLgpUaGlzIHJlZHVjZXMgdGhlIHVubmVjZXNzYXJ5IHJlY29tcHV0 YXRpb24gb2YgaW52YXJpYW50IGRhdGEgZG9uZSBpbiB0aGUKaG90IHBhdGggb2YgdGhlIHNjaGVk dWxlcidzIHNlbGVjdF9zZXJ2aWNlX25vZGUoLi4uKS4KCkEgYmVuY2htYXJrIGRvbmUgd2l0aCBO WVRQcm9mIFswXSBzaG93cyB0aGUgZm9sbG93aW5nIHJ1bnRpbWUKaW1wcm92ZW1lbnQsIHdoZXJl IGVhY2ggZHVyYXRpb24gaXMgdGhlIGF2ZXJhZ2UgdGltZSBuZWVkZWQgcGVyIGNhbGwuClRoZSBi ZW5jaG1hcmsgd2FzIGRvbmUgYnkgc3RhcnRpbmcgdXAgYSAzLW5vZGUgY2x1c3RlciB3aXRoIDEy MDAKY29uZmlndXJlZCBIQSByZXNvdXJjZXMsIHdoZXJlIGVhY2ggSEEgcmVzb3VyY2UgaXMgaW4g YSBub2RlIGFmZmluaXR5CnJ1bGUgYW5kIGEgbmVnYXRpdmUgcmVzb3VyY2UgYWZmaW5pdHkgdG8g dHdvIG90aGVyIEhBIHJlc291cmNlcy4KCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0rCnwgRnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAg fCBCZWZvcmUgfCBBZnRlciB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tKy0tLS0tLS0rCnwgc2VsZWN0X3NlcnZpY2Vfbm9kZSAgICAgICAgICAgICAgfCAxMC41 bXMgfCA0NMK1cyAgfAp8IGdldF9ub2RlX2FmZmluaXR5ICAgICAgICAgICAgICAgIHwgNS4yNm1z IHwgMTDCtXMgIHwKfCBnZXRfcmVzb3VyY2VfYWZmaW5pdHkgICAgICAgICAgICB8IDUuMTdtcyB8 IDEywrVzICB8CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tKy0t LS0tLS0rCgpbMF0gaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0RldmVsOjpOWVRQcm9mCgpTaWdu ZWQtb2ZmLWJ5OiBEYW5pZWwgS3JhbCA8ZC5rcmFsQHByb3htb3guY29tPgotLS0KY2hhbmdlcyBz aW5jZSB2MjoKICAtIG1pbm9yIGNoYW5nZXMgZHVlIHRvIHJlYmFzZQogIC0gZmFjdG9yIG91dCAk cmVzb3VyY2VfYWZmaW5pdHkgaW4gZ2V0X3Jlc291cmNlX21vdGlvbl9pbmZvKC4uLikgdG8KICAg IGFsaWduIGl0IHdpdGggb3RoZXIgdXNhZ2VzIG9mIHRoZXNlIGhlbHBlcnMgYW5kIGluIHByZXBh cmF0aW9uIG9mCiAgICBhbm90aGVyIHBhdGNoIHNlcmllcyB3aGljaCB3aWxsIHVzZSAkbm9kZV9h ZmZpbml0eSB0b28KCiBzcmMvUFZFL0hBL0NvbmZpZy5wbSAgICAgICAgICAgICAgICAgfCAgIDkg KystCiBzcmMvUFZFL0hBL01hbmFnZXIucG0gICAgICAgICAgICAgICAgfCAgMzEgKysrKy0tLS0K IHNyYy9QVkUvSEEvUnVsZXMucG0gICAgICAgICAgICAgICAgICB8ICA1OSArKysrKysrKysrKysr KysKIHNyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtICAgICB8ICA4MCArKysrKysrKysr LS0tLS0tLS0tLQogc3JjL1BWRS9IQS9SdWxlcy9SZXNvdXJjZUFmZmluaXR5LnBtIHwgMTA1ICsr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEucGwgICAg ICAgICAgIHwgIDE1ICsrKy0KIDYgZmlsZXMgY2hhbmdlZCwgMTg3IGluc2VydGlvbnMoKyksIDEx MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvUFZFL0hBL0NvbmZpZy5wbSBiL3NyYy9Q VkUvSEEvQ29uZmlnLnBtCmluZGV4IGJkODdhMGFiLi41NDhhODllNiAxMDA2NDQKLS0tIGEvc3Jj L1BWRS9IQS9Db25maWcucG0KKysrIGIvc3JjL1BWRS9IQS9Db25maWcucG0KQEAgLTIyNCw3ICsy MjQsNyBAQCBzdWIgcmVhZF9hbmRfY2hlY2tfcnVsZXNfY29uZmlnIHsKICAgICByZXR1cm4gJHJ1 bGVzOwogfQogCi1zdWIgcmVhZF9hbmRfY2hlY2tfZWZmZWN0aXZlX3J1bGVzX2NvbmZpZyB7Citz dWIgcmVhZF9hbmRfY29tcGlsZV9ydWxlc19jb25maWcgewogCiAgICAgbXkgJHJ1bGVzID0gcmVh ZF9hbmRfY2hlY2tfcnVsZXNfY29uZmlnKCk7CiAKQEAgLTIzOSw3ICsyMzksNyBAQCBzdWIgcmVh ZF9hbmRfY2hlY2tfZWZmZWN0aXZlX3J1bGVzX2NvbmZpZyB7CiAKICAgICBQVkU6OkhBOjpSdWxl cy0+dHJhbnNmb3JtKCRydWxlcywgJG5vZGVzKTsKIAotICAgIHJldHVybiAkcnVsZXM7CisgICAg cmV0dXJuIFBWRTo6SEE6OlJ1bGVzLT5jb21waWxlKCRydWxlcywgJG5vZGVzKTsKIH0KIAogc3Vi IHdyaXRlX3J1bGVzX2NvbmZpZyB7CkBAIC0zOTEsOCArMzkxLDkgQEAgc3ViIGdldF9yZXNvdXJj ZV9tb3Rpb25faW5mbyB7CiAgICAgICAgIG15ICRzcyA9ICRtYW5hZ2VyX3N0YXR1cy0+e3NlcnZp Y2Vfc3RhdHVzfTsKICAgICAgICAgbXkgJG5zID0gJG1hbmFnZXJfc3RhdHVzLT57bm9kZV9zdGF0 dXN9OwogCi0gICAgICAgIG15ICRydWxlcyA9IHJlYWRfYW5kX2NoZWNrX2VmZmVjdGl2ZV9ydWxl c19jb25maWcoKTsKLSAgICAgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9hZmZp bml0aXZlX3Jlc291cmNlcygkcnVsZXMsICRzaWQpOworICAgICAgICBteSAkY29tcGlsZWRfcnVs ZXMgPSByZWFkX2FuZF9jb21waWxlX3J1bGVzX2NvbmZpZygpOworICAgICAgICBteSAkcmVzb3Vy Y2VfYWZmaW5pdHkgPSAkY29tcGlsZWRfcnVsZXMtPnsncmVzb3VyY2UtYWZmaW5pdHknfTsKKyAg ICAgICAgbXkgKCR0b2dldGhlciwgJHNlcGFyYXRlKSA9IGdldF9hZmZpbml0aXZlX3Jlc291cmNl cygkcmVzb3VyY2VfYWZmaW5pdHksICRzaWQpOwogCiAgICAgICAgIGZvciBteSAkY3NpZCAoc29y dCBrZXlzICUkdG9nZXRoZXIpIHsKICAgICAgICAgICAgIG5leHQgaWYgIWRlZmluZWQoJHNzLT57 JGNzaWR9KTsKZGlmZiAtLWdpdCBhL3NyYy9QVkUvSEEvTWFuYWdlci5wbSBiL3NyYy9QVkUvSEEv TWFuYWdlci5wbQppbmRleCBhMjZiZGU3Ni4uZTE3ZTMyMDkgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUv SEEvTWFuYWdlci5wbQorKysgYi9zcmMvUFZFL0hBL01hbmFnZXIucG0KQEAgLTEyNiwxMiArMTI2 LDEyIEBAIHN1YiBmbHVzaF9tYXN0ZXJfc3RhdHVzIHsKIAogPWhlYWQzIHNlbGVjdF9zZXJ2aWNl X25vZGUoLi4uKQogCi09aGVhZDMgc2VsZWN0X3NlcnZpY2Vfbm9kZSgkcnVsZXMsICRvbmxpbmVf bm9kZV91c2FnZSwgJHNpZCwgJHNlcnZpY2VfY29uZiwgJHNzLCAkbm9kZV9wcmVmZXJlbmNlKQor PWhlYWQzIHNlbGVjdF9zZXJ2aWNlX25vZGUoJGNvbXBpbGVkX3J1bGVzLCAkb25saW5lX25vZGVf dXNhZ2UsICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVfcHJlZmVyZW5jZSkKIAogVXNl ZCB0byBzZWxlY3QgdGhlIGJlc3QgZml0dGluZyBub2RlIGZvciB0aGUgc2VydmljZSBDPCRzaWQ+ LCB3aXRoIHRoZQotY29uZmlndXJhdGlvbiBDPCRzZXJ2aWNlX2NvbmY+LCBhY2NvcmRpbmcgdG8g dGhlIHJ1bGVzIGRlZmluZWQgaW4gQzwkcnVsZXM+LAotYXZhaWxhYmxlIG5vZGUgdXRpbGl6YXRp b24gaW4gQzwkb25saW5lX25vZGVfdXNhZ2U+LCB0aGUgc2VydmljZSBzdGF0ZXMgaW4KLUM8JHNz PiBhbmQgdGhlIGdpdmVuIEM8JG5vZGVfcHJlZmVyZW5jZT4uCitjb25maWd1cmF0aW9uIEM8JHNl cnZpY2VfY29uZj4sIGFjY29yZGluZyB0byB0aGUgcnVsZXMgZGVmaW5lZCBpbgorQzwkY29tcGls ZWRfcnVsZXM+LCBhdmFpbGFibGUgbm9kZSB1dGlsaXphdGlvbiBpbiBDPCRvbmxpbmVfbm9kZV91 c2FnZT4sIHRoZQorc2VydmljZSBzdGF0ZXMgaW4gQzwkc3M+IGFuZCB0aGUgZ2l2ZW4gQzwkbm9k ZV9wcmVmZXJlbmNlPi4KIAogVGhlIEM8JG5vZGVfcHJlZmVyZW5jZT4gY2FuIGJlIHNldCB0bzoK IApAQCAtMTQ4LDcgKzE0OCw3IEBAIFRoZSBDPCRub2RlX3ByZWZlcmVuY2U+IGNhbiBiZSBzZXQg dG86CiA9Y3V0CiAKIHN1YiBzZWxlY3Rfc2VydmljZV9ub2RlIHsKLSAgICBteSAoJHJ1bGVzLCAk b25saW5lX25vZGVfdXNhZ2UsICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVfcHJlZmVy ZW5jZSkgPSBAXzsKKyAgICBteSAoJGNvbXBpbGVkX3J1bGVzLCAkb25saW5lX25vZGVfdXNhZ2Us ICRzaWQsICRzZXJ2aWNlX2NvbmYsICRzcywgJG5vZGVfcHJlZmVyZW5jZSkgPSBAXzsKIAogICAg IGRpZSAiJyRub2RlX3ByZWZlcmVuY2UnIGlzIG5vdCBhIHZhbGlkIG5vZGVfcHJlZmVyZW5jZSBm b3Igc2VsZWN0X3NlcnZpY2Vfbm9kZVxuIgogICAgICAgICBpZiAkbm9kZV9wcmVmZXJlbmNlICF+ IG0vKG5vbmV8YmVzdC1zY29yZXx0cnktbmV4dCkvOwpAQCAtMTU2LDEzICsxNTYsMTUgQEAgc3Vi IHNlbGVjdF9zZXJ2aWNlX25vZGUgewogICAgIG15ICRzZCA9ICRzcy0+eyRzaWR9OwogICAgIG15 ICgkY3VycmVudF9ub2RlLCAkdHJpZWRfbm9kZXMsICRtYWludGVuYW5jZV9mYWxsYmFjaykgPQog ICAgICAgICAkc2QtPkB7cXcobm9kZSBmYWlsZWRfbm9kZXMgbWFpbnRlbmFuY2Vfbm9kZSl9Owor ICAgIG15ICgkbm9kZV9hZmZpbml0eSwgJHJlc291cmNlX2FmZmluaXR5KSA9CisgICAgICAgICRj b21waWxlZF9ydWxlcy0+QHtxdyhub2RlLWFmZmluaXR5IHJlc291cmNlLWFmZmluaXR5KX07CiAK ICAgICBteSAkb25saW5lX25vZGVzID0geyBtYXAgeyAkXyA9PiAxIH0gJG9ubGluZV9ub2RlX3Vz YWdlLT5saXN0X25vZGVzKCkgfTsKLSAgICBteSAoJGFsbG93ZWRfbm9kZXMsICRwcmlfbm9kZXMp ID0gZ2V0X25vZGVfYWZmaW5pdHkoJHJ1bGVzLCAkc2lkLCAkb25saW5lX25vZGVzKTsKKyAgICBt eSAoJGFsbG93ZWRfbm9kZXMsICRwcmlfbm9kZXMpID0gZ2V0X25vZGVfYWZmaW5pdHkoJG5vZGVf YWZmaW5pdHksICRzaWQsICRvbmxpbmVfbm9kZXMpOwogCiAgICAgcmV0dXJuIHVuZGVmIGlmICEl JHByaV9ub2RlczsKIAotICAgIG15ICgkdG9nZXRoZXIsICRzZXBhcmF0ZSkgPSBnZXRfcmVzb3Vy Y2VfYWZmaW5pdHkoJHJ1bGVzLCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpOworICAgIG15ICgk dG9nZXRoZXIsICRzZXBhcmF0ZSkgPSBnZXRfcmVzb3VyY2VfYWZmaW5pdHkoJHJlc291cmNlX2Fm ZmluaXR5LCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpOwogCiAgICAgIyBzdGF5IG9uIGN1cnJl bnQgbm9kZSBpZiBwb3NzaWJsZSAoYXZvaWRzIHJhbmRvbSBtaWdyYXRpb25zKQogICAgIGlmICgK QEAgLTM4OSw3ICszOTEsOCBAQCBzdWIgZXhlY3V0ZV9taWdyYXRpb24gewogCiAgICAgbXkgKCRo YWVudiwgJHNzKSA9ICRzZWxmLT5Ae3F3KGhhZW52IHNzKX07CiAKLSAgICBteSAoJHRvZ2V0aGVy LCAkc2VwYXJhdGUpID0gZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzKCRzZWxmLT57cnVsZXN9LCAk c2lkKTsKKyAgICBteSAkcmVzb3VyY2VfYWZmaW5pdHkgPSAkc2VsZi0+e2NvbXBpbGVkX3J1bGVz fS0+eydyZXNvdXJjZS1hZmZpbml0eSd9OworICAgIG15ICgkdG9nZXRoZXIsICRzZXBhcmF0ZSkg PSBnZXRfYWZmaW5pdGl2ZV9yZXNvdXJjZXMoJHJlc291cmNlX2FmZmluaXR5LCAkc2lkKTsKIAog ICAgIGZvciBteSAkY3NpZCAoc29ydCBrZXlzICUkc2VwYXJhdGUpIHsKICAgICAgICAgbmV4dCBp ZiAhZGVmaW5lZCgkc3MtPnskY3NpZH0pOwpAQCAtNzE5LDcgKzcyMiw3IEBAIHN1YiBtYW5hZ2Ug ewogICAgIFBWRTo6SEE6Okdyb3Vwczo6bWlncmF0ZV9ncm91cHNfdG9fcmVzb3VyY2VzKCRzZWxm LT57Z3JvdXBzfSwgJHNjKTsKIAogICAgIGlmICgKLSAgICAgICAgISRzZWxmLT57cnVsZXN9Cisg ICAgICAgICEkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfQogICAgICAgICB8fCAkaGFzX2NoYW5nZWRf bm9kZWxpc3QKICAgICAgICAgfHwgJG5ld19ydWxlcy0+e2RpZ2VzdH0gbmUgJHNlbGYtPntsYXN0 X3J1bGVzX2RpZ2VzdH0KICAgICAgICAgfHwgJHNlbGYtPntncm91cHN9LT57ZGlnZXN0fSBuZSAk c2VsZi0+e2xhc3RfZ3JvdXBzX2RpZ2VzdH0KQEAgLTczMSw5ICs3MzQsOSBAQCBzdWIgbWFuYWdl IHsKICAgICAgICAgbXkgJG1lc3NhZ2VzID0gUFZFOjpIQTo6UnVsZXMtPnRyYW5zZm9ybSgkbmV3 X3J1bGVzLCAkbm9kZXMpOwogICAgICAgICAkaGFlbnYtPmxvZygnaW5mbycsICRfKSBmb3IgQCRt ZXNzYWdlczsKIAotICAgICAgICAkc2VsZi0+e3J1bGVzfSA9ICRuZXdfcnVsZXM7CisgICAgICAg ICRzZWxmLT57Y29tcGlsZWRfcnVsZXN9ID0gUFZFOjpIQTo6UnVsZXMtPmNvbXBpbGUoJG5ld19y dWxlcywgJG5vZGVzKTsKIAotICAgICAgICAkc2VsZi0+e2xhc3RfcnVsZXNfZGlnZXN0fSA9ICRz ZWxmLT57cnVsZXN9LT57ZGlnZXN0fTsKKyAgICAgICAgJHNlbGYtPntsYXN0X3J1bGVzX2RpZ2Vz dH0gPSAkbmV3X3J1bGVzLT57ZGlnZXN0fTsKICAgICAgICAgJHNlbGYtPntsYXN0X2dyb3Vwc19k aWdlc3R9ID0gJHNlbGYtPntncm91cHN9LT57ZGlnZXN0fTsKICAgICAgICAgJHNlbGYtPntsYXN0 X3NlcnZpY2VzX2RpZ2VzdH0gPSAkc2VydmljZXNfZGlnZXN0OwogICAgIH0KQEAgLTk5MSw3ICs5 OTQsNyBAQCBzdWIgbmV4dF9zdGF0ZV9yZXF1ZXN0X3N0YXJ0IHsKIAogICAgIGlmICgkc2VsZi0+ e2Nyc30tPntyZWJhbGFuY2Vfb25fcmVxdWVzdF9zdGFydH0pIHsKICAgICAgICAgbXkgJHNlbGVj dGVkX25vZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAotICAgICAgICAgICAgJHNlbGYtPntydWxl c30sCisgICAgICAgICAgICAkc2VsZi0+e2NvbXBpbGVkX3J1bGVzfSwKICAgICAgICAgICAgICRz ZWxmLT57b25saW5lX25vZGVfdXNhZ2V9LAogICAgICAgICAgICAgJHNpZCwKICAgICAgICAgICAg ICRjZCwKQEAgLTExNTgsNyArMTE2MSw3IEBAIHN1YiBuZXh0X3N0YXRlX3N0YXJ0ZWQgewogICAg ICAgICAgICAgfQogCiAgICAgICAgICAgICBteSAkbm9kZSA9IHNlbGVjdF9zZXJ2aWNlX25vZGUo Ci0gICAgICAgICAgICAgICAgJHNlbGYtPntydWxlc30sCisgICAgICAgICAgICAgICAgJHNlbGYt Pntjb21waWxlZF9ydWxlc30sCiAgICAgICAgICAgICAgICAgJHNlbGYtPntvbmxpbmVfbm9kZV91 c2FnZX0sCiAgICAgICAgICAgICAgICAgJHNpZCwKICAgICAgICAgICAgICAgICAkY2QsCkBAIC0x MjcyLDcgKzEyNzUsNyBAQCBzdWIgbmV4dF9zdGF0ZV9yZWNvdmVyeSB7CiAgICAgbXkgJGZlbmNl ZF9ub2RlID0gJHNkLT57bm9kZX07ICMgZm9yIGxvZ2dpbmcgcHVycG9zZQogCiAgICAgbXkgJHJl Y292ZXJ5X25vZGUgPSBzZWxlY3Rfc2VydmljZV9ub2RlKAotICAgICAgICAkc2VsZi0+e3J1bGVz fSwKKyAgICAgICAgJHNlbGYtPntjb21waWxlZF9ydWxlc30sCiAgICAgICAgICRzZWxmLT57b25s aW5lX25vZGVfdXNhZ2V9LAogICAgICAgICAkc2lkLAogICAgICAgICAkY2QsCmRpZmYgLS1naXQg YS9zcmMvUFZFL0hBL1J1bGVzLnBtIGIvc3JjL1BWRS9IQS9SdWxlcy5wbQppbmRleCBhMDc1ZmVh Yy4uNjljNTMzNTYgMTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMucG0KKysrIGIvc3JjL1BW RS9IQS9SdWxlcy5wbQpAQCAtNDcsNiArNDcsMTIgQEAgRWFjaCBJPHJ1bGUgcGx1Z2luPiBpcyBy ZXF1aXJlZCB0byBpbXBsZW1lbnQgdGhlIG1ldGhvZHMgQzxMPHR5cGUoKT4+LAogQzxMPHByb3Bl cnRpZXMoKT4+LCBhbmQgQzxMPG9wdGlvbnM+PiBmcm9tIHRoZSBDPEw8UFZFOjpTZWN0aW9uQ29u ZmlnPj4gdG8KIGV4dGVuZCB0aGUgcHJvcGVydGllcyBvZiB0aGlzIEk8YmFzZSBwbHVnaW4+IHdp dGggcGx1Z2luLXNwZWNpZmljIHByb3BlcnRpZXMuCiAKK0VhY2ggSTxydWxlIHBsdWdpbj4gaXMg cmVxdWlyZWQgdG8gaW1wbGVtZW50IHRoZSBtZXRob2QKK0M8TDw8IHBsdWdpbl9jb21waWxlKCl8 LyRjbGFzcy0+cGx1Z2luX2NvbXBpbGUoLi4uKSA+Pj4gdG8gZGlzdGlsbCBhIGNvbXBpbGVkCity ZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9yZSB2ZXJib3NlIEM8JHJ1bGVzPiBmcm9tIHRoZSBjb25m aWcgZmlsZSwgd2hpY2ggaXMKK3JldHVybmVkIGJ5IEM8TDw8IGNvbXBpbGUoKXwvJGNsYXNzLT5j b21waWxlKC4uLikgPj4+IHRvIGJlIG1vcmUgYXBwcm9wcmlhdGUKK2FuZCBlZmZpY2llbnQgZm9y IHRoZSBzY2hlZHVsZXIgYW5kIG90aGVyIHVzZXJzLgorCiA9aGVhZDIgUkVHSVNURVJJTkcgQ0hF Q0tTCiAKIEluIG9yZGVyIHRvIEM8TDw8IHJlZ2lzdGVyIGNoZWNrc3wvJGNsYXNzLT5yZWdpc3Rl cl9jaGVjayguLi4pID4+PiBmb3IgYSBydWxlCkBAIC00NTMsNiArNDU5LDU5IEBAIHN1YiB0cmFu c2Zvcm0gOiBwcm90b3R5cGUoJCQkKSB7CiAgICAgcmV0dXJuICRtZXNzYWdlczsKIH0KIAorPWhl YWQzICRjbGFzcy0+cGx1Z2luX2NvbXBpbGUoLi4uKQorCis9aGVhZDMgJGNsYXNzLT5wbHVnaW5f Y29tcGlsZSgkcnVsZXMsICRub2RlcykKKworQjxNQU5EQVRPUlk6PiBNdXN0IGJlIGltcGxlbWVu dGVkIGluIGEgSTxydWxlIHBsdWdpbj4uCisKK0NhbGxlZCBpbiBDPCRjbGFzcy0+Y29tcGlsZSgk cnVsZXMsICRub2Rlcyk+IGluIG9yZGVyIHRvIGdldCBhIG1vcmUgY29tcGFjdAorcmVwcmVzZW50 YXRpb24gb2YgdGhlIHJ1bGUgcGx1Z2luJ3MgcnVsZXMgaW4gQzwkcnVsZXM+LCB3aGljaCBob2xk cyBvbmx5IHRoZQorcmVsZXZhbnQgaW5mb3JtYXRpb24gZm9yIHRoZSBzY2hlZHVsZXIgYW5kIG90 aGVyIHVzZXJzLgorCitDPCRub2Rlcz4gaXMgYSBsaXN0IG9mIHRoZSBjb25maWd1cmVkIGNsdXN0 ZXIgbm9kZXMuCisKKz1jdXQKKworc3ViIHBsdWdpbl9jb21waWxlIHsKKyAgICBteSAoJGNsYXNz LCAkcnVsZXMsICRub2RlcykgPSBAXzsKKworICAgIGRpZSAiaW1wbGVtZW50IGluIHN1YmNsYXNz IjsKK30KKworPWhlYWQzICRjbGFzcy0+Y29tcGlsZSguLi4pCisKKz1oZWFkMyAkY2xhc3MtPmNv bXBpbGUoJHJ1bGVzLCAkbm9kZXMpCisKK0NvbXBpbGVzIGFuZCByZXR1cm5zIGEgaGFzaCwgd2hl cmUgZWFjaCBrZXktdmFsdWUgcGFpciByZXByZXNlbnRzIGEgcnVsZQorcGx1Z2luJ3MgbW9yZSBj b21wYWN0IHJlcHJlc2VudGF0aW9uIGNvbXBpbGVkIGZyb20gdGhlIG1vcmUgdmVyYm9zZSBydWxl cworZGVmaW5lZCBpbiBDPCRydWxlcz4uCisKK0M8JG5vZGVzPiBpcyBhIGxpc3Qgb2YgdGhlIGNv bmZpZ3VyZWQgY2x1c3RlciBub2Rlcy4KKworVGhlIHRyYW5zZm9ybWF0aW9uIHRvIHRoZSBjb21w YWN0IHJlcHJlc2VudGF0aW9uIGZvciBlYWNoIHJ1bGUgcGx1Z2luIGlzCitpbXBsZW1lbnRlZCBp biBDPEw8PCBwbHVnaW5fY29tcGlsZSgpfC8kY2xhc3MtPnBsdWdpbl9jb21waWxlKC4uLikgPj4+ LgorCis9Y3V0CisKK3N1YiBjb21waWxlIHsKKyAgICBteSAoJGNsYXNzLCAkcnVsZXMsICRub2Rl cykgPSBAXzsKKworICAgIG15ICRjb21waWxlZF9ydWxlcyA9IHt9OworCisgICAgZm9yIG15ICR0 eXBlIChAJHR5cGVzKSB7CisgICAgICAgIG15ICRwbHVnaW4gPSAkY2xhc3MtPmxvb2t1cCgkdHlw ZSk7CisgICAgICAgIG15ICRjb21waWxlZF9wbHVnaW5fcnVsZXMgPSAkcGx1Z2luLT5wbHVnaW5f Y29tcGlsZSgkcnVsZXMsICRub2Rlcyk7CisKKyAgICAgICAgZGllICJwbHVnaW5fY29tcGlsZSgu Li4pIG9mIHR5cGUgJyR0eXBlJyBtdXN0IHJldHVybiBoYXNoIHJlZmVyZW5jZVxuIgorICAgICAg ICAgICAgaWYgcmVmKCRjb21waWxlZF9wbHVnaW5fcnVsZXMpIG5lICdIQVNIJzsKKworICAgICAg ICAkY29tcGlsZWRfcnVsZXMtPnskdHlwZX0gPSAkY29tcGlsZWRfcGx1Z2luX3J1bGVzOworICAg IH0KKworICAgIHJldHVybiAkY29tcGlsZWRfcnVsZXM7Cit9CisKID1oZWFkMSBGVU5DVElPTlMK IAogPWN1dApkaWZmIC0tZ2l0IGEvc3JjL1BWRS9IQS9SdWxlcy9Ob2RlQWZmaW5pdHkucG0gYi9z cmMvUFZFL0hBL1J1bGVzL05vZGVBZmZpbml0eS5wbQppbmRleCAxMTFmZjZmZS4uYWRlZjk3ZDAg MTAwNjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtCisrKyBiL3NyYy9Q VkUvSEEvUnVsZXMvTm9kZUFmZmluaXR5LnBtCkBAIC0xNTUsNiArMTU1LDQwIEBAIHN1YiBnZXRf cGx1Z2luX2NoZWNrX2FyZ3VtZW50cyB7CiAgICAgcmV0dXJuICRyZXN1bHQ7CiB9CiAKK3N1YiBw bHVnaW5fY29tcGlsZSB7CisgICAgbXkgKCRjbGFzcywgJHJ1bGVzLCAkbm9kZXMpID0gQF87CisK KyAgICBteSAkbm9kZV9hZmZpbml0eSA9IHt9OworCisgICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVh Y2hfcnVsZSgKKyAgICAgICAgJHJ1bGVzLAorICAgICAgICBzdWIgeworICAgICAgICAgICAgbXkg KCRydWxlKSA9IEBfOworCisgICAgICAgICAgICBteSAkZWZmZWN0aXZlX25vZGVzID0gZGNsb25l KCRydWxlLT57bm9kZXN9KTsKKworICAgICAgICAgICAgIyBhZGQgcmVtYWluaW5nIG5vZGVzIHdp dGggbG93IHByaW9yaXR5IGZvciBub24tc3RyaWN0IG5vZGUgYWZmaW5pdHkKKyAgICAgICAgICAg IGlmICghJHJ1bGUtPntzdHJpY3R9KSB7CisgICAgICAgICAgICAgICAgZm9yIG15ICRub2RlIChA JG5vZGVzKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQgaWYgZGVmaW5lZCgkZWZmZWN0aXZl X25vZGVzLT57JG5vZGV9KTsKKworICAgICAgICAgICAgICAgICAgICAkZWZmZWN0aXZlX25vZGVz LT57JG5vZGV9ID0geyBwcmlvcml0eSA9PiAtMSB9OworICAgICAgICAgICAgICAgIH0KKyAgICAg ICAgICAgIH0KKworICAgICAgICAgICAgZm9yIG15ICRzaWQgKGtleXMgJHJ1bGUtPntyZXNvdXJj ZXN9LT4lKikgeworICAgICAgICAgICAgICAgICRub2RlX2FmZmluaXR5LT57JHNpZH0gPSB7Cisg ICAgICAgICAgICAgICAgICAgIG5vZGVzID0+ICRlZmZlY3RpdmVfbm9kZXMsCisgICAgICAgICAg ICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgdHlwZSA9PiAnbm9k ZS1hZmZpbml0eScsCisgICAgICAgIGV4Y2x1ZGVfZGlzYWJsZWRfcnVsZXMgPT4gMSwKKyAgICAp OworCisgICAgcmV0dXJuICRub2RlX2FmZmluaXR5OworfQorCiA9aGVhZDEgTk9ERSBBRkZJTklU WSBSVUxFIENIRUNLRVJTCiAKID1jdXQKQEAgLTIxNywzMCArMjUxLDEwIEBAIF9fUEFDS0FHRV9f LT5yZWdpc3Rlcl9jaGVjaygKIAogPWN1dAogCi1teSAkZ2V0X3Jlc291cmNlX25vZGVfYWZmaW5p dHlfcnVsZSA9IHN1YiB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCkgPSBAXzsKLQotICAgICMgd2l0 aCB0aGUgY3VycmVudCByZXN0cmljdGlvbiBhIHJlc291cmNlIGNhbiBvbmx5IGJlIGluIG9uZSBu b2RlIGFmZmluaXR5IHJ1bGUKLSAgICBteSAkbm9kZV9hZmZpbml0eV9ydWxlOwotICAgIFBWRTo6 SEE6OlJ1bGVzOjpmb3JlYWNoX3J1bGUoCi0gICAgICAgICRydWxlcywKLSAgICAgICAgc3ViIHsK LSAgICAgICAgICAgIG15ICgkcnVsZSkgPSBAXzsKLQotICAgICAgICAgICAgJG5vZGVfYWZmaW5p dHlfcnVsZSA9IGRjbG9uZSgkcnVsZSkgaWYgISRub2RlX2FmZmluaXR5X3J1bGU7Ci0gICAgICAg IH0sCi0gICAgICAgIHNpZCA9PiAkc2lkLAotICAgICAgICB0eXBlID0+ICdub2RlLWFmZmluaXR5 JywKLSAgICAgICAgZXhjbHVkZV9kaXNhYmxlZF9ydWxlcyA9PiAxLAotICAgICk7Ci0KLSAgICBy ZXR1cm4gJG5vZGVfYWZmaW5pdHlfcnVsZTsKLX07Ci0KLT1oZWFkMyBnZXRfbm9kZV9hZmZpbml0 eSgkcnVsZXMsICRzaWQsICRvbmxpbmVfbm9kZXMpCis9aGVhZDMgZ2V0X25vZGVfYWZmaW5pdHko JG5vZGVfYWZmaW5pdHksICRzaWQsICRvbmxpbmVfbm9kZXMpCiAKIFJldHVybnMgYSBsaXN0IG9m IHR3byBoYXNoZXMgcmVwcmVzZW50aW5nIHRoZSBub2RlIGFmZmluaXR5IG9mIEM8JHNpZD4KLWFj Y29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBydWxlcyBpbiBDPCRydWxlcz4gYW5kIHRoZSBh dmFpbGFibGUgbm9kZXMgaW4KK2FjY29yZGluZyB0byB0aGUgbm9kZSBhZmZpbml0eSBDPCRub2Rl X2FmZmluaXR5PiBhbmQgdGhlIGF2YWlsYWJsZSBub2RlcyBpbgogdGhlIEM8JG9ubGluZV9ub2Rl cz4gaGFzaC4KIAogVGhlIGZpcnN0IGhhc2ggaXMgYSBoYXNoIHNldCBvZiBhdmFpbGFibGUgbm9k ZXMsIGkuZS4gbm9kZXMgd2hlcmUgdGhlCkBAIC0yNTIsMzAgKzI2NiwxNCBAQCBJZiB0aGVyZSBh cmUgbm8gYXZhaWxhYmxlIG5vZGVzIGF0IGFsbCwgcmV0dXJucyBDPHVuZGVmPi4KID1jdXQKIAog c3ViIGdldF9ub2RlX2FmZmluaXR5IDogcHJvdG90eXBlKCQkJCkgewotICAgIG15ICgkcnVsZXMs ICRzaWQsICRvbmxpbmVfbm9kZXMpID0gQF87CisgICAgbXkgKCRub2RlX2FmZmluaXR5LCAkc2lk LCAkb25saW5lX25vZGVzKSA9IEBfOwogCi0gICAgbXkgJG5vZGVfYWZmaW5pdHlfcnVsZSA9ICRn ZXRfcmVzb3VyY2Vfbm9kZV9hZmZpbml0eV9ydWxlLT4oJHJ1bGVzLCAkc2lkKTsKLQotICAgICMg ZGVmYXVsdCB0byBhIG5vZGUgYWZmaW5pdHkgcnVsZSB3aXRoIGFsbCBhdmFpbGFibGUgbm9kZXMK LSAgICBpZiAoISRub2RlX2FmZmluaXR5X3J1bGUpIHsKLSAgICAgICAgZm9yIG15ICRub2RlIChr ZXlzICUkb25saW5lX25vZGVzKSB7Ci0gICAgICAgICAgICAkbm9kZV9hZmZpbml0eV9ydWxlLT57 bm9kZXN9LT57JG5vZGV9ID0geyBwcmlvcml0eSA9PiAwIH07Ci0gICAgICAgIH0KLSAgICB9Ci0K LSAgICAjIGFkZCByZW1haW5pbmcgbm9kZXMgd2l0aCBsb3cgcHJpb3JpdHkgZm9yIG5vbi1zdHJp Y3Qgbm9kZSBhZmZpbml0eSBydWxlcwotICAgIGlmICghJG5vZGVfYWZmaW5pdHlfcnVsZS0+e3N0 cmljdH0pIHsKLSAgICAgICAgZm9yIG15ICRub2RlIChrZXlzICUkb25saW5lX25vZGVzKSB7Ci0g ICAgICAgICAgICBuZXh0IGlmIGRlZmluZWQoJG5vZGVfYWZmaW5pdHlfcnVsZS0+e25vZGVzfS0+ eyRub2RlfSk7Ci0KLSAgICAgICAgICAgICRub2RlX2FmZmluaXR5X3J1bGUtPntub2Rlc30tPnsk bm9kZX0gPSB7IHByaW9yaXR5ID0+IC0xIH07Ci0gICAgICAgIH0KLSAgICB9CisgICAgcmV0dXJu ICgkb25saW5lX25vZGVzLCAkb25saW5lX25vZGVzKSBpZiAhZGVmaW5lZCgkbm9kZV9hZmZpbml0 eS0+eyRzaWR9KTsKIAogICAgIG15ICRhbGxvd2VkX25vZGVzID0ge307CiAgICAgbXkgJHByaW9y aXRpemVkX25vZGVzID0ge307CiAKLSAgICB3aGlsZSAobXkgKCRub2RlLCAkcHJvcHMpID0gZWFj aCAleyAkbm9kZV9hZmZpbml0eV9ydWxlLT57bm9kZXN9IH0pIHsKKyAgICB3aGlsZSAobXkgKCRu b2RlLCAkcHJvcHMpID0gZWFjaCAkbm9kZV9hZmZpbml0eS0+eyRzaWR9LT57bm9kZXN9LT4lKikg ewogICAgICAgICBuZXh0IGlmICFkZWZpbmVkKCRvbmxpbmVfbm9kZXMtPnskbm9kZX0pOyAjIG5v ZGUgaXMgb2ZmbGluZQogCiAgICAgICAgICRhbGxvd2VkX25vZGVzLT57JG5vZGV9ID0gMTsKZGlm ZiAtLWdpdCBhL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbSBiL3NyYy9QVkUv SEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQppbmRleCA0YTZlODYyNy4uYzQ0ZDRmMGIgMTAw NjQ0Ci0tLSBhL3NyYy9QVkUvSEEvUnVsZXMvUmVzb3VyY2VBZmZpbml0eS5wbQorKysgYi9zcmMv UFZFL0hBL1J1bGVzL1Jlc291cmNlQWZmaW5pdHkucG0KQEAgLTEwMSw2ICsxMDEsMzUgQEAgc3Vi IGdldF9wbHVnaW5fY2hlY2tfYXJndW1lbnRzIHsKICAgICByZXR1cm4gJHJlc3VsdDsKIH0KIAor c3ViIHBsdWdpbl9jb21waWxlIHsKKyAgICBteSAoJGNsYXNzLCAkcnVsZXMsICRub2RlcykgPSBA XzsKKworICAgIG15ICRwb3NpdGl2ZSA9IHt9OworICAgIG15ICRuZWdhdGl2ZSA9IHt9OworCisg ICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVhY2hfcnVsZSgKKyAgICAgICAgJHJ1bGVzLAorICAgICAg ICBzdWIgeworICAgICAgICAgICAgbXkgKCRydWxlLCAkcnVsZWlkKSA9IEBfOworCisgICAgICAg ICAgICBteSAkYWZmaW5pdHlfc2V0ID0gJHJ1bGUtPnthZmZpbml0eX0gZXEgJ3Bvc2l0aXZlJyA/ ICRwb3NpdGl2ZSA6ICRuZWdhdGl2ZTsKKworICAgICAgICAgICAgZm9yIG15ICRzaWQgKGtleXMg JHJ1bGUtPntyZXNvdXJjZXN9LT4lKikgeworICAgICAgICAgICAgICAgIGZvciBteSAkY3NpZCAo a2V5cyAkcnVsZS0+e3Jlc291cmNlc30tPiUqKSB7CisgICAgICAgICAgICAgICAgICAgICRhZmZp bml0eV9zZXQtPnskc2lkfS0+eyRjc2lkfSA9IDEgaWYgJGNzaWQgbmUgJHNpZDsKKyAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIHR5cGUgPT4gJ3Jl c291cmNlLWFmZmluaXR5JywKKyAgICAgICAgZXhjbHVkZV9kaXNhYmxlZF9ydWxlcyA9PiAxLAor ICAgICk7CisKKyAgICByZXR1cm4geworICAgICAgICBwb3NpdGl2ZSA9PiAkcG9zaXRpdmUsCisg ICAgICAgIG5lZ2F0aXZlID0+ICRuZWdhdGl2ZSwKKyAgICB9OworfQorCiA9aGVhZDEgUkVTT1VS Q0UgQUZGSU5JVFkgUlVMRSBDSEVDS0VSUwogCiA9Y3V0CkBAIC00MDQsMTIgKzQzMywxMiBAQCBf X1BBQ0tBR0VfXy0+cmVnaXN0ZXJfdHJhbnNmb3JtKHN1YiB7CiAKID1jdXQKIAotPWhlYWQzIGdl dF9hZmZpbml0aXZlX3Jlc291cmNlcygkcnVsZXMsICRzaWQpCis9aGVhZDMgZ2V0X2FmZmluaXRp dmVfcmVzb3VyY2VzKCRyZXNvdXJjZV9hZmZpbml0eSwgJHNpZCkKIAogUmV0dXJucyBhIGxpc3Qg b2YgdHdvIGhhc2ggc2V0cywgd2hlcmUgdGhlIGZpcnN0IGhhc2ggc2V0IGNvbnRhaW5zIHRoZQog cmVzb3VyY2VzLCB3aGljaCBDPCRzaWQ+IGlzIHBvc2l0aXZlbHkgYWZmaW5pdGl2ZSB0bywgYW5k IHRoZSBzZWNvbmQgaGFzaAogY29udGFpbnMgdGhlIHJlc291cmNlcywgd2hpY2ggQzwkc2lkPiBp cyBuZWdhdGl2ZWx5IGFmZmluaXRpdmUgdG8sIGFjb3JkaW5nIHRvCi10aGUgcmVzb3VyY2UgYWZm aW5pdHkgcnVsZXMgaW4gQzwkcnVsZXM+LgordGhlIHJlc291cmNlJ3MgcmVzb3VyY2UgYWZmaW5p dHkgaW4gQzwkcmVzb3VyY2VfYWZmaW5pdHk+LgogCiBOb3RlIHRoYXQgYSByZXNvdXJjZSBDPCRz aWQ+IGJlY29tZXMgcGFydCBvZiBhbnkgbmVnYXRpdmUgYWZmaW5pdHkgcmVsYXRpb24KIG9mIGl0 cyBwb3NpdGl2ZWx5IGFmZmluaXRpdmUgcmVzb3VyY2VzLgpAQCAtNDMwLDM2ICs0NTksMjAgQEAg YWZmaW5pdGl2ZSB0byBDPCdjdDoyMDAnPiBhbmQgQzwnY3Q6MjAxJz4sIHRoZSByZXR1cm5lZCB2 YWx1ZSB3aWxsIGJlOgogPWN1dAogCiBzdWIgZ2V0X2FmZmluaXRpdmVfcmVzb3VyY2VzIDogcHJv dG90eXBlKCQkKSB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCkgPSBAXzsKKyAgICBteSAoJHJlc291 cmNlX2FmZmluaXR5LCAkc2lkKSA9IEBfOwogCi0gICAgbXkgJHRvZ2V0aGVyID0ge307Ci0gICAg bXkgJHNlcGFyYXRlID0ge307Ci0KLSAgICBQVkU6OkhBOjpSdWxlczo6Zm9yZWFjaF9ydWxlKAot ICAgICAgICAkcnVsZXMsCi0gICAgICAgIHN1YiB7Ci0gICAgICAgICAgICBteSAoJHJ1bGUsICRy dWxlaWQpID0gQF87Ci0KLSAgICAgICAgICAgIG15ICRhZmZpbml0eV9zZXQgPSAkcnVsZS0+e2Fm ZmluaXR5fSBlcSAncG9zaXRpdmUnID8gJHRvZ2V0aGVyIDogJHNlcGFyYXRlOwotCi0gICAgICAg ICAgICBmb3IgbXkgJGNzaWQgKHNvcnQga2V5cyAleyAkcnVsZS0+e3Jlc291cmNlc30gfSkgewot ICAgICAgICAgICAgICAgICRhZmZpbml0eV9zZXQtPnskY3NpZH0gPSAxIGlmICRjc2lkIG5lICRz aWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHNpZCA9PiAkc2lkLAotICAg ICAgICB0eXBlID0+ICdyZXNvdXJjZS1hZmZpbml0eScsCi0gICAgICAgIGV4Y2x1ZGVfZGlzYWJs ZWRfcnVsZXMgPT4gMSwKLSAgICApOworICAgIG15ICR0b2dldGhlciA9ICRyZXNvdXJjZV9hZmZp bml0eS0+e3Bvc2l0aXZlfS0+eyRzaWR9IC8vIHt9OworICAgIG15ICRzZXBhcmF0ZSA9ICRyZXNv dXJjZV9hZmZpbml0eS0+e25lZ2F0aXZlfS0+eyRzaWR9IC8vIHt9OwogCiAgICAgcmV0dXJuICgk dG9nZXRoZXIsICRzZXBhcmF0ZSk7CiB9CiAKLT1oZWFkMyBnZXRfcmVzb3VyY2VfYWZmaW5pdHko JHJ1bGVzLCAkc2lkLCAkc3MsICRvbmxpbmVfbm9kZXMpCis9aGVhZDMgZ2V0X3Jlc291cmNlX2Fm ZmluaXR5KCRyZXNvdXJjZV9hZmZpbml0eSwgJHNpZCwgJHNzLCAkb25saW5lX25vZGVzKQogCiBS ZXR1cm5zIGEgbGlzdCBvZiB0d28gaGFzaGVzLCB3aGVyZSB0aGUgZmlyc3QgZGVzY3JpYmVzIHRo ZSBwb3NpdGl2ZSByZXNvdXJjZQogYWZmaW5pdHkgYW5kIHRoZSBzZWNvbmQgaGFzaCBkZXNjcmli ZXMgdGhlIG5lZ2F0aXZlIHJlc291cmNlIGFmZmluaXR5IGZvcgotcmVzb3VyY2UgQzwkc2lkPiBh Y2NvcmRpbmcgdG8gdGhlIHJlc291cmNlIGFmZmluaXR5IHJ1bGVzIGluIEM8JHJ1bGVzPiwgdGhl Ci1zZXJ2aWNlIHN0YXR1cyBDPCRzcz4gYW5kIHRoZSBDPCRvbmxpbmVfbm9kZXM+IGhhc2guCity ZXNvdXJjZSBDPCRzaWQ+IGFjY29yZGluZyB0byB0aGUgcmVzb3VyY2UncyByZXNvdXJjZSBhZmZp bml0eSBydWxlcyBpbgorQzwkcmVzb3VyY2VfYWZmaW5pdHk+LCB0aGUgc2VydmljZSBzdGF0dXMg Qzwkc3M+IGFuZCB0aGUgQzwkb25saW5lX25vZGVzPiBoYXNoLgogCiBGb3IgdGhlIHBvc2l0aXZl IHJlc291cmNlIGFmZmluaXR5IG9mIGEgcmVzb3VyY2UgQzwkc2lkPiwgZWFjaCBlbGVtZW50IGlu IHRoZQogaGFzaCByZXByZXNlbnRzIGFuIG9ubGluZSBub2RlLCB3aGVyZSBvdGhlciByZXNvdXJj ZXMsIHdoaWNoIEM8JHNpZD4gaXMgaW4KQEAgLTQ4OCwzOCArNTAxLDMyIEBAIHJlc291cmNlIEM8 JHNpZD4gaXMgaW4gYSBuZWdhdGl2ZSBhZmZpbml0eSB3aXRoLCB0aGUgcmV0dXJuZWQgdmFsdWUg d2lsbCBiZToKID1jdXQKIAogc3ViIGdldF9yZXNvdXJjZV9hZmZpbml0eSA6IHByb3RvdHlwZSgk JCQkKSB7Ci0gICAgbXkgKCRydWxlcywgJHNpZCwgJHNzLCAkb25saW5lX25vZGVzKSA9IEBfOwor ICAgIG15ICgkcmVzb3VyY2VfYWZmaW5pdHksICRzaWQsICRzcywgJG9ubGluZV9ub2RlcykgPSBA XzsKIAogICAgIG15ICR0b2dldGhlciA9IHt9OwogICAgIG15ICRzZXBhcmF0ZSA9IHt9OwogCi0g ICAgUFZFOjpIQTo6UnVsZXM6OmZvcmVhY2hfcnVsZSgKLSAgICAgICAgJHJ1bGVzLAotICAgICAg ICBzdWIgewotICAgICAgICAgICAgbXkgKCRydWxlKSA9IEBfOworICAgIG15ICgkcG9zaXRpdmUs ICRuZWdhdGl2ZSkgPSBnZXRfYWZmaW5pdGl2ZV9yZXNvdXJjZXMoJHJlc291cmNlX2FmZmluaXR5 LCAkc2lkKTsKIAotICAgICAgICAgICAgZm9yIG15ICRjc2lkIChrZXlzICV7ICRydWxlLT57cmVz b3VyY2VzfSB9KSB7Ci0gICAgICAgICAgICAgICAgbmV4dCBpZiAkY3NpZCBlcSAkc2lkOworICAg IG15ICRnZXRfdXNlZF9zZXJ2aWNlX25vZGVzID0gc3ViIHsKKyAgICAgICAgbXkgKCRzaWQpID0g QF87CisgICAgICAgIG15ICgkc3RhdGUsICRub2RlLCAkdGFyZ2V0KSA9ICRzcy0+eyRzaWR9LT5A e3F3KHN0YXRlIG5vZGUgdGFyZ2V0KX07CisgICAgICAgIHJldHVybiBQVkU6OkhBOjpVc2FnZTo6 Z2V0X3VzZWRfc2VydmljZV9ub2Rlcygkb25saW5lX25vZGVzLCAkc3RhdGUsICRub2RlLCAkdGFy Z2V0KTsKKyAgICB9OwogCi0gICAgICAgICAgICAgICAgbXkgKCRzdGF0ZSwgJG5vZGUsICR0YXJn ZXQpID0gJHNzLT57JGNzaWR9LT5Ae3F3KHN0YXRlIG5vZGUgdGFyZ2V0KX07Ci0gICAgICAgICAg ICAgICAgbXkgKCRjdXJyZW50X25vZGUsICR0YXJnZXRfbm9kZSkgPQotICAgICAgICAgICAgICAg ICAgICBQVkU6OkhBOjpVc2FnZTo6Z2V0X3VzZWRfc2VydmljZV9ub2Rlcygkb25saW5lX25vZGVz LCAkc3RhdGUsICRub2RlLCAkdGFyZ2V0KTsKKyAgICBmb3IgbXkgJGNzaWQgKGtleXMgJHBvc2l0 aXZlLT4lKikgeworICAgICAgICBteSAoJGN1cnJlbnRfbm9kZSwgJHRhcmdldF9ub2RlKSA9ICRn ZXRfdXNlZF9zZXJ2aWNlX25vZGVzLT4oJGNzaWQpOwogCi0gICAgICAgICAgICAgICAgaWYgKCRy dWxlLT57YWZmaW5pdHl9IGVxICdwb3NpdGl2ZScpIHsKLSAgICAgICAgICAgICAgICAgICAgJHRv Z2V0aGVyLT57JGN1cnJlbnRfbm9kZX0rKyBpZiBkZWZpbmVkKCRjdXJyZW50X25vZGUpOwotICAg ICAgICAgICAgICAgICAgICAkdG9nZXRoZXItPnskdGFyZ2V0X25vZGV9KysgaWYgZGVmaW5lZCgk dGFyZ2V0X25vZGUpOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKCRydWxlLT57YWZmaW5pdHl9 IGVxICduZWdhdGl2ZScpIHsKLSAgICAgICAgICAgICAgICAgICAgJHNlcGFyYXRlLT57JGN1cnJl bnRfbm9kZX0gPSAxIGlmIGRlZmluZWQoJGN1cnJlbnRfbm9kZSk7Ci0gICAgICAgICAgICAgICAg ICAgICRzZXBhcmF0ZS0+eyR0YXJnZXRfbm9kZX0gPSAxIGlmIGRlZmluZWQoJHRhcmdldF9ub2Rl KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkaWUgInVu aW1wbGVtZW50ZWQgcmVzb3VyY2UgYWZmaW5pdHkgdHlwZSAkcnVsZS0+e2FmZmluaXR5fVxuIjsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICAgIHNp ZCA9PiAkc2lkLAotICAgICAgICB0eXBlID0+ICdyZXNvdXJjZS1hZmZpbml0eScsCi0gICAgICAg IGV4Y2x1ZGVfZGlzYWJsZWRfcnVsZXMgPT4gMSwKLSAgICApOworICAgICAgICAkdG9nZXRoZXIt PnskY3VycmVudF9ub2RlfSsrIGlmIGRlZmluZWQoJGN1cnJlbnRfbm9kZSk7CisgICAgICAgICR0 b2dldGhlci0+eyR0YXJnZXRfbm9kZX0rKyBpZiBkZWZpbmVkKCR0YXJnZXRfbm9kZSk7CisgICAg fQorCisgICAgZm9yIG15ICRjc2lkIChrZXlzICRuZWdhdGl2ZS0+JSopIHsKKyAgICAgICAgbXkg KCRjdXJyZW50X25vZGUsICR0YXJnZXRfbm9kZSkgPSAkZ2V0X3VzZWRfc2VydmljZV9ub2Rlcy0+ KCRjc2lkKTsKKworICAgICAgICAkc2VwYXJhdGUtPnskY3VycmVudF9ub2RlfSA9IDEgaWYgZGVm aW5lZCgkY3VycmVudF9ub2RlKTsKKyAgICAgICAgJHNlcGFyYXRlLT57JHRhcmdldF9ub2RlfSA9 IDEgaWYgZGVmaW5lZCgkdGFyZ2V0X25vZGUpOworICAgIH0KIAogICAgIHJldHVybiAoJHRvZ2V0 aGVyLCAkc2VwYXJhdGUpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdF9mYWlsb3ZlcjEu cGwgYi9zcmMvdGVzdC90ZXN0X2ZhaWxvdmVyMS5wbAppbmRleCA0OTVkNGI0Yi4uMWQzMzZiZTAg MTAwNzU1Ci0tLSBhL3NyYy90ZXN0L3Rlc3RfZmFpbG92ZXIxLnBsCisrKyBiL3NyYy90ZXN0L3Rl c3RfZmFpbG92ZXIxLnBsCkBAIC0yMSwxMSArMjEsMTMgQEAgbm9kZS1hZmZpbml0eTogcHJlZmVy X25vZGUxCiAJbm9kZXMgbm9kZTEKIEVPRAogCitteSAkbm9kZXMgPSBbJ25vZGUxJywgJ25vZGUy JywgJ25vZGUzJ107CisKK215ICRjb21waWxlZF9ydWxlcyA9IFBWRTo6SEE6OlJ1bGVzLT5jb21w aWxlKCRydWxlcywgJG5vZGVzKTsKKwogIyBSZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgYmFz aWMgcGx1Z2luIGRvZXNuJ3QgdXNlIHRoZSBoYWVudi4KIG15ICRvbmxpbmVfbm9kZV91c2FnZSA9 IFBWRTo6SEE6OlVzYWdlOjpCYXNpYy0+bmV3KCk7Ci0kb25saW5lX25vZGVfdXNhZ2UtPmFkZF9u b2RlKCJub2RlMSIpOwotJG9ubGluZV9ub2RlX3VzYWdlLT5hZGRfbm9kZSgibm9kZTIiKTsKLSRv bmxpbmVfbm9kZV91c2FnZS0+YWRkX25vZGUoIm5vZGUzIik7Ciskb25saW5lX25vZGVfdXNhZ2Ut PmFkZF9ub2RlKCRfKSBmb3IgQCRub2RlczsKIAogbXkgJHNlcnZpY2VfY29uZiA9IHsKICAgICBu b2RlID0+ICdub2RlMScsCkBAIC00Niw3ICs0OCwxMiBAQCBzdWIgdGVzdCB7CiAgICAgbXkgJHNl bGVjdF9ub2RlX3ByZWZlcmVuY2UgPSAkdHJ5X25leHQgPyAndHJ5LW5leHQnIDogJ25vbmUnOwog CiAgICAgbXkgJG5vZGUgPSBQVkU6OkhBOjpNYW5hZ2VyOjpzZWxlY3Rfc2VydmljZV9ub2RlKAot ICAgICAgICAkcnVsZXMsICRvbmxpbmVfbm9kZV91c2FnZSwgIiRzaWQiLCAkc2VydmljZV9jb25m LCAkc3MsICRzZWxlY3Rfbm9kZV9wcmVmZXJlbmNlLAorICAgICAgICAkY29tcGlsZWRfcnVsZXMs CisgICAgICAgICRvbmxpbmVfbm9kZV91c2FnZSwKKyAgICAgICAgJHNpZCwKKyAgICAgICAgJHNl cnZpY2VfY29uZiwKKyAgICAgICAgJHNzLAorICAgICAgICAkc2VsZWN0X25vZGVfcHJlZmVyZW5j ZSwKICAgICApOwogCiAgICAgbXkgKHVuZGVmLCB1bmRlZiwgJGxpbmUpID0gY2FsbGVyKCk7Ci0t IAoyLjQ3LjMKCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KcHZlLWRldmVsIG1haWxpbmcgbGlzdApwdmUtZGV2ZWxAbGlzdHMucHJveG1veC5jb20KaHR0 cHM6Ly9saXN0cy5wcm94bW94LmNvbS9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vcHZlLWRldmVs Cg==