Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ux33e-00ACDl-WC for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 12:39:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1ux33b-000pJd-Su for pgsql-hackers@arkaria.postgresql.org; Fri, 12 Sep 2025 12:39:16 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1ux33b-000pJR-Al for pgsql-hackers@lists.postgresql.org; Fri, 12 Sep 2025 12:39:16 +0000 Received: from mail.postgrespro.ru ([93.174.132.70]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1ux33X-000OF3-0g for pgsql-hackers@lists.postgresql.org; Fri, 12 Sep 2025 12:39:15 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1757680750; bh=He2Mazouql4cMBK8NwDrUNCjvHTBIAU7kBrh6t7qZtU=; h=Message-ID:Date:User-Agent:From:Subject:To:From; b=gmTu5lEGZphrGzjA+/jCaPJ3yN30EU1aVPws/DobAdknLlYAzLJf7MfRsSJj7SZNI NgG/aCbeKrhhI6ZhWFatJWgyVrh6l8NNyhwTTkSiwpYi8MygI1hWBYjxjmVxeAYAzj Ed3Wo/eIY1kL2ynAs47cyPA0ArIwaSCJdpxLx7CMS5zn0WjtAaEgIOeMtweKUY2dp2 01wtWllrHA2veTYGdkgSOOF73vLM0FfgWGsfeKtGf1bZrgVtMes1wJq11r5JLu1Z9M X2TtGpOJYQeRHjJ4BzEIoTeJ/7PCRfDSyiTO51BLd6kp9jdmkUby+ydxIVvq1csb14 BzLWGh/z3Qbsw== Received: from [172.30.51.226] (debian11-template.l.postgrespro.ru [192.168.2.254]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: m.melnikov@postgrespro.ru) by mail.postgrespro.ru (Postfix/465) with ESMTPSA id 272EE609C5 for ; Fri, 12 Sep 2025 15:39:10 +0300 (MSK) Content-Type: multipart/mixed; boundary="------------aOgJilnOwuNG06l09NpQHeBw" Message-ID: <80621c00-aba6-483c-88b1-a845461d1165@postgrespro.ru> Date: Fri, 12 Sep 2025 15:39:09 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: "Maksim.Melnikov" Subject: Preferred use of macro GetPGProcByNumber To: pgsql-hackers@lists.postgresql.org X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/09/12 11:55:00 #27811856 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------aOgJilnOwuNG06l09NpQHeBw Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Hello hackers, I've noticed some places where elements of ProcGlobal->allProcs are addressed directly via arr index. But in proc.h macros GetPGProcByNumber exist, that was added to get proc objects by index, so I suggest minor refactoring 'ProcGlobal->allProcs[index]' -> 'GetPGProcByNumber(index)'. Please, see attached patch, branched from rev 6ede13d1b5f. Best regards Melnikov Maksim --------------aOgJilnOwuNG06l09NpQHeBw Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Preferred-use-of-macro-GetPGProcByNumber.patch" Content-Disposition: attachment; filename="v1-0001-Preferred-use-of-macro-GetPGProcByNumber.patch" Content-Transfer-Encoding: base64 RnJvbSBmMDNiNTk2ZThmZDNmYTgwZjg2ODQzYmFiYjE3MDRmYWU0MDMyNDgwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBNYWtzaW0gTWVsbmlrb3YgPG0ubWVsbmlrb3ZAcG9z dGdyZXNwcm8ucnU+CkRhdGU6IEZyaSwgMTIgU2VwIDIwMjUgMTU6MTc6MzkgKzAzMDAKU3Vi amVjdDogW1BBVENIIHYxXSBQcmVmZXJyZWQgdXNlIG9mIG1hY3JvIEdldFBHUHJvY0J5TnVt YmVyLgoKTWlub3IgcmVmYWN0b3JpbmcsIHVzaW5nIG9mIEdldFBHUHJvY0J5TnVtYmVyKGlu ZGV4KSBtYWNyb3MKaW5zdGVhZCBvZiBQcm9jR2xvYmFsLT5hbGxQcm9jc1tpbmRleF0uCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jICAgICAgfCAgNCArLQogc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyAgICAgICAgfCAgMiArLQogc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMgfCAgMiArLQogc3JjL2JhY2tlbmQvc3Rv cmFnZS9idWZmZXIvZnJlZWxpc3QuYyAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY2FycmF5LmMgICAgfCA2NCArKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYyAgICAgICAgfCAgNiArLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgIHwgIDIgKy0KIDcgZmlsZXMgY2hhbmdl ZCwgMzkgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vY2xvZy5jCmluZGV4IGU4MGZiZTEwOWNmLi5iYmRjY2UzOTk5MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY2xvZy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2Nsb2cuYwpAQCAtNTc0LDcgKzU3NCw3IEBAIFRyYW5zYWN0aW9u R3JvdXBVcGRhdGVYaWRTdGF0dXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0 dXMsCiAJLyogV2FsayB0aGUgbGlzdCBhbmQgdXBkYXRlIHRoZSBzdGF0dXMgb2YgYWxsIFhJ RHMuICovCiAJd2hpbGUgKG5leHRpZHggIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAl7Ci0J CVBHUFJPQwkgICAqbmV4dHByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3NbbmV4dGlkeF07 CisJCVBHUFJPQwkgICAqbmV4dHByb2MgPSBHZXRQR1Byb2NCeU51bWJlcihuZXh0aWR4KTsK IAkJaW50NjQJCXRoaXNwYWdlbm8gPSBuZXh0cHJvYy0+Y2xvZ0dyb3VwTWVtYmVyUGFnZTsK IAogCQkvKgpAQCAtNjMzLDcgKzYzMyw3IEBAIFRyYW5zYWN0aW9uR3JvdXBVcGRhdGVYaWRT dGF0dXMoVHJhbnNhY3Rpb25JZCB4aWQsIFhpZFN0YXR1cyBzdGF0dXMsCiAJICovCiAJd2hp bGUgKHdha2VpZHggIT0gSU5WQUxJRF9QUk9DX05VTUJFUikKIAl7Ci0JCVBHUFJPQwkgICAq d2FrZXByb2MgPSAmUHJvY0dsb2JhbC0+YWxsUHJvY3Nbd2FrZWlkeF07CisJCVBHUFJPQwkg ICAqd2FrZXByb2MgPSBHZXRQR1Byb2NCeU51bWJlcih3YWtlaWR4KTsKIAogCQl3YWtlaWR4 ID0gcGdfYXRvbWljX3JlYWRfdTMyKCZ3YWtlcHJvYy0+Y2xvZ0dyb3VwTmV4dCk7CiAJCXBn X2F0b21pY193cml0ZV91MzIoJndha2Vwcm9jLT5jbG9nR3JvdXBOZXh0LCBJTlZBTElEX1BS T0NfTlVNQkVSKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNo LmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCmluZGV4IDc4ZTM5ZTVmODY2 Li5hMzU4OTViYWJlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2Fy Y2guYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCkBAIC0yODksNyAr Mjg5LDcgQEAgUGdBcmNoV2FrZXVwKHZvaWQpCiAJICogYmUgcmVsYXVuY2hlZCBzaG9ydGx5 IGFuZCB3aWxsIHN0YXJ0IGFyY2hpdmluZy4KIAkgKi8KIAlpZiAoYXJjaF9wZ3Byb2NubyAh PSBJTlZBTElEX1BST0NfTlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJv Y3NbYXJjaF9wZ3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJU2V0TGF0Y2goJkdldFBHUHJvY0J5 TnVtYmVyKGFyY2hfcGdwcm9jbm8pLT5wcm9jTGF0Y2gpOwogfQogCiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKaW5kZXggZTFmMTQyZjIwYzcuLjY5NDYxZWE5 YTc5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIu YworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuYwpAQCAtNjQ5 LDcgKzY0OSw3IEBAIFdha2V1cFdhbFN1bW1hcml6ZXIodm9pZCkKIAlMV0xvY2tSZWxlYXNl KFdBTFN1bW1hcml6ZXJMb2NrKTsKIAogCWlmIChwZ3Byb2NubyAhPSBJTlZBTElEX1BST0Nf TlVNQkVSKQotCQlTZXRMYXRjaCgmUHJvY0dsb2JhbC0+YWxsUHJvY3NbcGdwcm9jbm9dLnBy b2NMYXRjaCk7CisJCVNldExhdGNoKCZHZXRQR1Byb2NCeU51bWJlcihwZ3Byb2NubyktPnBy b2NMYXRjaCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1 ZmZlci9mcmVlbGlzdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3Qu YwppbmRleCAwMTkwOWJlMDI3Mi4uMmZiZDI1NGU0YmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMjM5LDcgKzIzOSw3IEBAIFN0cmF0ZWd5R2V0QnVm ZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LCB1aW50MzIgKmJ1Zl9zdGF0ZSwg Ym9vbCAqZnJvbV9yCiAJCSAqIGFjdHVhbGx5IGZpbmUgYmVjYXVzZSBwcm9jTGF0Y2ggaXNu J3QgZXZlciBmcmVlZCwgc28gd2UganVzdCBjYW4KIAkJICogcG90ZW50aWFsbHkgc2V0IHRo ZSB3cm9uZyBwcm9jZXNzJyAob3Igbm8gcHJvY2VzcycpIGxhdGNoLgogCQkgKi8KLQkJU2V0 TGF0Y2goJlByb2NHbG9iYWwtPmFsbFByb2NzW2Jnd3Byb2Nub10ucHJvY0xhdGNoKTsKKwkJ U2V0TGF0Y2goJkdldFBHUHJvY0J5TnVtYmVyKGJnd3Byb2NubyktPnByb2NMYXRjaCk7CiAJ fQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJh eS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggMjAwZjcy YzZlMjUuLmQzYjk2ODBiNTYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXku YwpAQCAtMjY4LDggKzI2OCw2IEBAIHR5cGVkZWYgZW51bSBLQVhDb21wcmVzc1JlYXNvbgog CiBzdGF0aWMgUHJvY0FycmF5U3RydWN0ICpwcm9jQXJyYXk7CiAKLXN0YXRpYyBQR1BST0Mg KmFsbFByb2NzOwotCiAvKgogICogQ2FjaGUgdG8gcmVkdWNlIG92ZXJoZWFkIG9mIHJlcGVh dGVkIGNhbGxzIHRvIFRyYW5zYWN0aW9uSWRJc0luUHJvZ3Jlc3MoKQogICovCkBAIC00NDQs OCArNDQyLDYgQEAgUHJvY0FycmF5U2htZW1Jbml0KHZvaWQpCiAJCVRyYW5zYW1WYXJpYWJs ZXMtPnhhY3RDb21wbGV0aW9uQ291bnQgPSAxOwogCX0KIAotCWFsbFByb2NzID0gUHJvY0ds b2JhbC0+YWxsUHJvY3M7Ci0KIAkvKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBLbm93bkFz c2lnbmVkWGlkcyBhcnJheXMgdG9vLCBpZiBuZWVkZWQgKi8KIAlpZiAoRW5hYmxlSG90U3Rh bmRieSkKIAl7CkBAIC01MDIsNyArNDk4LDcgQEAgUHJvY0FycmF5QWRkKFBHUFJPQyAqcHJv YykKIAkJaW50CQkJdGhpc19wcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07CiAK IAkJQXNzZXJ0KHRoaXNfcHJvY25vID49IDAgJiYgdGhpc19wcm9jbm8gPCAoYXJyYXlQLT5t YXhQcm9jcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpKTsKLQkJQXNzZXJ0KGFsbFByb2NzW3Ro aXNfcHJvY25vXS5wZ3hhY3RvZmYgPT0gaW5kZXgpOworCQlBc3NlcnQoR2V0UEdQcm9jQnlO dW1iZXIodGhpc19wcm9jbm8pLT5wZ3hhY3RvZmYgPT0gaW5kZXgpOwogCiAJCS8qIElmIHdl IGhhdmUgZm91bmQgb3VyIHJpZ2h0IHBvc2l0aW9uIGluIHRoZSBhcnJheSwgYnJlYWsgKi8K IAkJaWYgKHRoaXNfcHJvY25vID4gcGdwcm9jbm8pCkBAIC01MzgsOSArNTM0LDkgQEAgUHJv Y0FycmF5QWRkKFBHUFJPQyAqcHJvYykKIAkJaW50CQkJcHJvY25vID0gYXJyYXlQLT5wZ3By b2Nub3NbaW5kZXhdOwogCiAJCUFzc2VydChwcm9jbm8gPj0gMCAmJiBwcm9jbm8gPCAoYXJy YXlQLT5tYXhQcm9jcyArIE5VTV9BVVhJTElBUllfUFJPQ1MpKTsKLQkJQXNzZXJ0KGFsbFBy b2NzW3Byb2Nub10ucGd4YWN0b2ZmID09IGluZGV4IC0gMSk7CisJCUFzc2VydChHZXRQR1By b2NCeU51bWJlcihwcm9jbm8pLT5wZ3hhY3RvZmYgPT0gaW5kZXggLSAxKTsKIAotCQlhbGxQ cm9jc1twcm9jbm9dLnBneGFjdG9mZiA9IGluZGV4OworCQlHZXRQR1Byb2NCeU51bWJlcihw cm9jbm8pLT5wZ3hhY3RvZmYgPSBpbmRleDsKIAl9CiAKIAkvKgpAQCAtNTgxLDcgKzU3Nyw3 IEBAIFByb2NBcnJheVJlbW92ZShQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0ZXN0 WGlkKQogCW15b2ZmID0gcHJvYy0+cGd4YWN0b2ZmOwogCiAJQXNzZXJ0KG15b2ZmID49IDAg JiYgbXlvZmYgPCBhcnJheVAtPm51bVByb2NzKTsKLQlBc3NlcnQoUHJvY0dsb2JhbC0+YWxs UHJvY3NbYXJyYXlQLT5wZ3Byb2Nub3NbbXlvZmZdXS5wZ3hhY3RvZmYgPT0gbXlvZmYpOwor CUFzc2VydChHZXRQR1Byb2NCeU51bWJlcihhcnJheVAtPnBncHJvY25vc1tteW9mZl0pLT5w Z3hhY3RvZmYgPT0gbXlvZmYpOwogCiAJaWYgKFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGxhdGVz dFhpZCkpCiAJewpAQCAtNjM2LDkgKzYzMiw5IEBAIFByb2NBcnJheVJlbW92ZShQR1BST0Mg KnByb2MsIFRyYW5zYWN0aW9uSWQgbGF0ZXN0WGlkKQogCQlpbnQJCQlwcm9jbm8gPSBhcnJh eVAtPnBncHJvY25vc1tpbmRleF07CiAKIAkJQXNzZXJ0KHByb2NubyA+PSAwICYmIHByb2Nu byA8IChhcnJheVAtPm1heFByb2NzICsgTlVNX0FVWElMSUFSWV9QUk9DUykpOwotCQlBc3Nl cnQoYWxsUHJvY3NbcHJvY25vXS5wZ3hhY3RvZmYgLSAxID09IGluZGV4KTsKKwkJQXNzZXJ0 KEdldFBHUHJvY0J5TnVtYmVyKHByb2NubyktPnBneGFjdG9mZiAtIDEgPT0gaW5kZXgpOwog Ci0JCWFsbFByb2NzW3Byb2Nub10ucGd4YWN0b2ZmID0gaW5kZXg7CisJCUdldFBHUHJvY0J5 TnVtYmVyKHByb2NubyktPnBneGFjdG9mZiA9IGluZGV4OwogCX0KIAogCS8qCkBAIC04NjAs NyArODU2LDcgQEAgUHJvY0FycmF5R3JvdXBDbGVhclhpZChQR1BST0MgKnByb2MsIFRyYW5z YWN0aW9uSWQgbGF0ZXN0WGlkKQogCS8qIFdhbGsgdGhlIGxpc3QgYW5kIGNsZWFyIGFsbCBY SURzLiAqLwogCXdoaWxlIChuZXh0aWR4ICE9IElOVkFMSURfUFJPQ19OVU1CRVIpCiAJewot CQlQR1BST0MJICAgKm5leHRwcm9jID0gJmFsbFByb2NzW25leHRpZHhdOworCQlQR1BST0MJ ICAgKm5leHRwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIobmV4dGlkeCk7CiAKIAkJUHJvY0Fy cmF5RW5kVHJhbnNhY3Rpb25JbnRlcm5hbChuZXh0cHJvYywgbmV4dHByb2MtPnByb2NBcnJh eUdyb3VwTWVtYmVyWGlkKTsKIApAQCAtODgwLDcgKzg3Niw3IEBAIFByb2NBcnJheUdyb3Vw Q2xlYXJYaWQoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVzdFhpZCkKIAkgKi8K IAl3aGlsZSAod2FrZWlkeCAhPSBJTlZBTElEX1BST0NfTlVNQkVSKQogCXsKLQkJUEdQUk9D CSAgICpuZXh0cHJvYyA9ICZhbGxQcm9jc1t3YWtlaWR4XTsKKwkJUEdQUk9DCSAgICpuZXh0 cHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKHdha2VpZHgpOwogCiAJCXdha2VpZHggPSBwZ19h dG9taWNfcmVhZF91MzIoJm5leHRwcm9jLT5wcm9jQXJyYXlHcm91cE5leHQpOwogCQlwZ19h dG9taWNfd3JpdGVfdTMyKCZuZXh0cHJvYy0+cHJvY0FycmF5R3JvdXBOZXh0LCBJTlZBTElE X1BST0NfTlVNQkVSKTsKQEAgLTE1MjYsNyArMTUyMiw3IEBAIFRyYW5zYWN0aW9uSWRJc0lu UHJvZ3Jlc3MoVHJhbnNhY3Rpb25JZCB4aWQpCiAJCXB4aWRzID0gb3RoZXJfc3VieGlkc3Rh dGVzW3BneGFjdG9mZl0uY291bnQ7CiAJCXBnX3JlYWRfYmFycmllcigpOwkJLyogcGFpcnMg d2l0aCBiYXJyaWVyIGluIEdldE5ld1RyYW5zYWN0aW9uSWQoKSAqLwogCQlwZ3Byb2NubyA9 IGFycmF5UC0+cGdwcm9jbm9zW3BneGFjdG9mZl07Ci0JCXByb2MgPSAmYWxsUHJvY3NbcGdw cm9jbm9dOworCQlwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCQlmb3Ig KGogPSBweGlkcyAtIDE7IGogPj0gMDsgai0tKQogCQl7CiAJCQkvKiBGZXRjaCB4aWQganVz dCBvbmNlIC0gc2VlIEdldE5ld1RyYW5zYWN0aW9uSWQgKi8KQEAgLTE3NDAsNyArMTczNiw3 IEBAIENvbXB1dGVYaWRIb3Jpem9ucyhDb21wdXRlWGlkSG9yaXpvbnNSZXN1bHQgKmgpCiAJ Zm9yIChpbnQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJvY3M7IGluZGV4Kysp CiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJ UEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJUEdQUk9DCSAgICpw cm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCQlpbnQ4CQlzdGF0dXNGbGFn cyA9IFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzW2luZGV4XTsKIAkJVHJhbnNhY3Rpb25JZCB4 aWQ7CiAJCVRyYW5zYWN0aW9uSWQgeG1pbjsKQEAgLTIyMjQsNyArMjIyMCw3IEBAIEdldFNu YXBzaG90RGF0YShTbmFwc2hvdCBzbmFwc2hvdCkKIAkJCVRyYW5zYWN0aW9uSWQgeGlkID0g VUlOVDMyX0FDQ0VTU19PTkNFKG90aGVyX3hpZHNbcGd4YWN0b2ZmXSk7CiAJCQl1aW50OAkJ c3RhdHVzRmxhZ3M7CiAKLQkJCUFzc2VydChhbGxQcm9jc1thcnJheVAtPnBncHJvY25vc1tw Z3hhY3RvZmZdXS5wZ3hhY3RvZmYgPT0gcGd4YWN0b2ZmKTsKKwkJCUFzc2VydChHZXRQR1By b2NCeU51bWJlcihhcnJheVAtPnBncHJvY25vc1twZ3hhY3RvZmZdKS0+cGd4YWN0b2ZmID09 IHBneGFjdG9mZik7CiAKIAkJCS8qCiAJCQkgKiBJZiB0aGUgdHJhbnNhY3Rpb24gaGFzIG5v IFhJRCBhc3NpZ25lZCwgd2UgY2FuIHNraXAgaXQ7IGl0CkBAIC0yMjk4LDcgKzIyOTQsNyBA QCBHZXRTbmFwc2hvdERhdGEoU25hcHNob3Qgc25hcHNob3QpCiAJCQkJCWlmIChuc3VieGlk cyA+IDApCiAJCQkJCXsKIAkJCQkJCWludAkJCXBncHJvY25vID0gcGdwcm9jbm9zW3BneGFj dG9mZl07Ci0JCQkJCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9dOwor CQkJCQkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwog CiAJCQkJCQlwZ19yZWFkX2JhcnJpZXIoKTsJLyogcGFpcnMgd2l0aCBHZXROZXdUcmFuc2Fj dGlvbklkICovCiAKQEAgLTI0OTksNyArMjQ5NSw3IEBAIFByb2NBcnJheUluc3RhbGxJbXBv cnRlZFhtaW4oVHJhbnNhY3Rpb25JZCB4bWluLAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8 IGFycmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFy cmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2Nz W3BncHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdw cm9jbm8pOwogCQlpbnQJCQlzdGF0dXNGbGFncyA9IFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdz W2luZGV4XTsKIAkJVHJhbnNhY3Rpb25JZCB4aWQ7CiAKQEAgLTI3MjUsNyArMjcyMSw3IEBA IEdldFJ1bm5pbmdUcmFuc2FjdGlvbkRhdGEodm9pZCkKIAkJaWYgKFRyYW5zYWN0aW9uSWRQ cmVjZWRlcyh4aWQsIG9sZGVzdERhdGFiYXNlUnVubmluZ1hpZCkpCiAJCXsKIAkJCWludAkJ CXBncHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdOwotCQkJUEdQUk9DCSAgICpw cm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJCVBHUFJPQwkgICAqcHJvYyA9IEdldFBH UHJvY0J5TnVtYmVyKHBncHJvY25vKTsKIAogCQkJaWYgKHByb2MtPmRhdGFiYXNlSWQgPT0g TXlEYXRhYmFzZUlkKQogCQkJCW9sZGVzdERhdGFiYXNlUnVubmluZ1hpZCA9IHhpZDsKQEAg LTI3NTYsNyArMjc1Miw3IEBAIEdldFJ1bm5pbmdUcmFuc2FjdGlvbkRhdGEodm9pZCkKIAkJ Zm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsgaW5kZXgrKykKIAkJ ewogCQkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07Ci0JCQlQ R1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9dOworCQkJUEdQUk9DCSAgICpw cm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCQkJaW50CQkJbnN1YnhpZHM7 CiAKIAkJCS8qCkBAIC0yODU4LDcgKzI4NTQsNyBAQCBHZXRPbGRlc3RBY3RpdmVUcmFuc2Fj dGlvbklkKGJvb2wgaW5Db21taXRPbmx5LCBib29sIGFsbERicykKIAl7CiAJCVRyYW5zYWN0 aW9uSWQgeGlkOwogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4 XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJUEdQUk9D CSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCiAJCS8qIEZldGNo IHhpZCBqdXN0IG9uY2UgLSBzZWUgR2V0TmV3VHJhbnNhY3Rpb25JZCAqLwogCQl4aWQgPSBV SU5UMzJfQUNDRVNTX09OQ0Uob3RoZXJfeGlkc1tpbmRleF0pOwpAQCAtMzAyMCw3ICszMDE2 LDcgQEAgR2V0VmlydHVhbFhJRHNEZWxheWluZ0Noa3B0KGludCAqbnZ4aWRzLCBpbnQgdHlw ZSkKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBhcnJheVAtPm51bVByb2NzOyBpbmRleCsr KQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tpbmRleF07Ci0J CVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1twZ3Byb2Nub107CisJCVBHUFJPQwkgICAq cHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKHBncHJvY25vKTsKIAogCQlpZiAoKHByb2MtPmRl bGF5Q2hrcHRGbGFncyAmIHR5cGUpICE9IDApCiAJCXsKQEAgLTMwNjEsNyArMzA1Nyw3IEBA IEhhdmVWaXJ0dWFsWElEc0RlbGF5aW5nQ2hrcHQoVmlydHVhbFRyYW5zYWN0aW9uSWQgKnZ4 aWRzLCBpbnQgbnZ4aWRzLCBpbnQgdHlwZSkKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBh cnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJh eVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1tw Z3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKHBncHJv Y25vKTsKIAkJVmlydHVhbFRyYW5zYWN0aW9uSWQgdnhpZDsKIAogCQlHRVRfVlhJRF9GUk9N X1BHUFJPQyh2eGlkLCAqcHJvYyk7CkBAIC0zMTg5LDcgKzMxODUsNyBAQCBCYWNrZW5kUGlk R2V0UHJvY1dpdGhMb2NrKGludCBwaWQpCiAKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBh cnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFs bFByb2NzW2FycmF5UC0+cGdwcm9jbm9zW2luZGV4XV07CisJCVBHUFJPQwkgICAqcHJvYyA9 IEdldFBHUHJvY0J5TnVtYmVyKGFycmF5UC0+cGdwcm9jbm9zW2luZGV4XSk7CiAKIAkJaWYg KHByb2MtPnBpZCA9PSBwaWQpCiAJCXsKQEAgLTMyMzIsNyArMzIyOCw3IEBAIEJhY2tlbmRY aWRHZXRQaWQoVHJhbnNhY3Rpb25JZCB4aWQpCiAJCWlmIChvdGhlcl94aWRzW2luZGV4XSA9 PSB4aWQpCiAJCXsKIAkJCWludAkJCXBncHJvY25vID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5k ZXhdOwotCQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJCVBH UFJPQwkgICAqcHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKHBncHJvY25vKTsKIAogCQkJcmVz dWx0ID0gcHJvYy0+cGlkOwogCQkJYnJlYWs7CkBAIC0zMzAxLDcgKzMyOTcsNyBAQCBHZXRD dXJyZW50VmlydHVhbFhJRHMoVHJhbnNhY3Rpb25JZCBsaW1pdFhtaW4sIGJvb2wgZXhjbHVk ZVhtaW4wLAogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJvY3M7IGlu ZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4 XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJUEdQUk9D CSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCQl1aW50OAkJc3Rh dHVzRmxhZ3MgPSBQcm9jR2xvYmFsLT5zdGF0dXNGbGFnc1tpbmRleF07CiAKIAkJaWYgKHBy b2MgPT0gTXlQcm9jKQpAQCAtMzQwMyw3ICszMzk5LDcgQEAgR2V0Q29uZmxpY3RpbmdWaXJ0 dWFsWElEcyhUcmFuc2FjdGlvbklkIGxpbWl0WG1pbiwgT2lkIGRiT2lkKQogCWZvciAoaW5k ZXggPSAwOyBpbmRleCA8IGFycmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCiAJewogCQlpbnQJ CQlwZ3Byb2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJUEdQUk9DCSAgICpw cm9jID0gJmFsbFByb2NzW3BncHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQ cm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCiAJCS8qIEV4Y2x1ZGUgcHJlcGFyZWQgdHJhbnNh Y3Rpb25zICovCiAJCWlmIChwcm9jLT5waWQgPT0gMCkKQEAgLTM0NjgsNyArMzQ2NCw3IEBA IFNpZ25hbFZpcnR1YWxUcmFuc2FjdGlvbihWaXJ0dWFsVHJhbnNhY3Rpb25JZCB2eGlkLCBQ cm9jU2lnbmFsUmVhc29uIHNpZ21vZGUsCiAJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJy YXlQLT5udW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXBncHJvY25vID0gYXJyYXlQ LT5wZ3Byb2Nub3NbaW5kZXhdOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdw cm9jbm9dOworCQlQR1BST0MJICAgKnByb2MgPSBHZXRQR1Byb2NCeU51bWJlcihwZ3Byb2Nu byk7CiAJCVZpcnR1YWxUcmFuc2FjdGlvbklkIHByb2N2eGlkOwogCiAJCUdFVF9WWElEX0ZS T01fUEdQUk9DKHByb2N2eGlkLCAqcHJvYyk7CkBAIC0zNTIzLDcgKzM1MTksNyBAQCBNaW5p bXVtQWN0aXZlQmFja2VuZHMoaW50IG1pbikKIAlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBh cnJheVAtPm51bVByb2NzOyBpbmRleCsrKQogCXsKIAkJaW50CQkJcGdwcm9jbm8gPSBhcnJh eVAtPnBncHJvY25vc1tpbmRleF07Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZhbGxQcm9jc1tw Z3Byb2Nub107CisJCVBHUFJPQwkgICAqcHJvYyA9IEdldFBHUHJvY0J5TnVtYmVyKHBncHJv Y25vKTsKIAogCQkvKgogCQkgKiBTaW5jZSB3ZSdyZSBub3QgaG9sZGluZyBhIGxvY2ssIG5l ZWQgdG8gYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoCkBAIC0zNTY5LDcgKzM1NjUsNyBAQCBD b3VudERCQmFja2VuZHMoT2lkIGRhdGFiYXNlaWQpCiAJZm9yIChpbmRleCA9IDA7IGluZGV4 IDwgYXJyYXlQLT5udW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXBncHJvY25vID0g YXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJv Y3NbcGdwcm9jbm9dOworCQlQR1BST0MJICAgKnByb2MgPSBHZXRQR1Byb2NCeU51bWJlcihw Z3Byb2Nubyk7CiAKIAkJaWYgKHByb2MtPnBpZCA9PSAwKQogCQkJY29udGludWU7CQkJLyog ZG8gbm90IGNvdW50IHByZXBhcmVkIHhhY3RzICovCkBAIC0zNTk4LDcgKzM1OTQsNyBAQCBD b3VudERCQ29ubmVjdGlvbnMoT2lkIGRhdGFiYXNlaWQpCiAJZm9yIChpbmRleCA9IDA7IGlu ZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsgaW5kZXgrKykKIAl7CiAJCWludAkJCXBncHJvY25v ID0gYXJyYXlQLT5wZ3Byb2Nub3NbaW5kZXhdOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxs UHJvY3NbcGdwcm9jbm9dOworCQlQR1BST0MJICAgKnByb2MgPSBHZXRQR1Byb2NCeU51bWJl cihwZ3Byb2Nubyk7CiAKIAkJaWYgKHByb2MtPnBpZCA9PSAwKQogCQkJY29udGludWU7CQkJ LyogZG8gbm90IGNvdW50IHByZXBhcmVkIHhhY3RzICovCkBAIC0zNjI5LDcgKzM2MjUsNyBA QCBDYW5jZWxEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZWlkLCBQcm9jU2lnbmFsUmVhc29uIHNp Z21vZGUsIGJvb2wgY29uZmxpY3RQZW5kaW5nKQogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8 IGFycmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFy cmF5UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2Nz W3BncHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdw cm9jbm8pOwogCiAJCWlmIChkYXRhYmFzZWlkID09IEludmFsaWRPaWQgfHwgcHJvYy0+ZGF0 YWJhc2VJZCA9PSBkYXRhYmFzZWlkKQogCQl7CkBAIC0zNjcwLDcgKzM2NjYsNyBAQCBDb3Vu dFVzZXJCYWNrZW5kcyhPaWQgcm9sZWlkKQogCWZvciAoaW5kZXggPSAwOyBpbmRleCA8IGFy cmF5UC0+bnVtUHJvY3M7IGluZGV4KyspCiAJewogCQlpbnQJCQlwZ3Byb2NubyA9IGFycmF5 UC0+cGdwcm9jbm9zW2luZGV4XTsKLQkJUEdQUk9DCSAgICpwcm9jID0gJmFsbFByb2NzW3Bn cHJvY25vXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9j bm8pOwogCiAJCWlmIChwcm9jLT5waWQgPT0gMCkKIAkJCWNvbnRpbnVlOwkJCS8qIGRvIG5v dCBjb3VudCBwcmVwYXJlZCB4YWN0cyAqLwpAQCAtMzczMyw3ICszNzI5LDcgQEAgQ291bnRP dGhlckRCQmFja2VuZHMoT2lkIGRhdGFiYXNlSWQsIGludCAqbmJhY2tlbmRzLCBpbnQgKm5w cmVwYXJlZCkKIAkJZm9yIChpbmRleCA9IDA7IGluZGV4IDwgYXJyYXlQLT5udW1Qcm9jczsg aW5kZXgrKykKIAkJewogCQkJaW50CQkJcGdwcm9jbm8gPSBhcnJheVAtPnBncHJvY25vc1tp bmRleF07Ci0JCQlQR1BST0MJICAgKnByb2MgPSAmYWxsUHJvY3NbcGdwcm9jbm9dOworCQkJ UEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIocGdwcm9jbm8pOwogCQkJdWlu dDgJCXN0YXR1c0ZsYWdzID0gUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3NbaW5kZXhdOwogCiAJ CQlpZiAocHJvYy0+ZGF0YWJhc2VJZCAhPSBkYXRhYmFzZUlkKQpAQCAtMzc5OSw3ICszNzk1 LDcgQEAgVGVybWluYXRlT3RoZXJEQkJhY2tlbmRzKE9pZCBkYXRhYmFzZUlkKQogCWZvciAo aSA9IDA7IGkgPCBwcm9jQXJyYXktPm51bVByb2NzOyBpKyspCiAJewogCQlpbnQJCQlwZ3By b2NubyA9IGFycmF5UC0+cGdwcm9jbm9zW2ldOwotCQlQR1BST0MJICAgKnByb2MgPSAmYWxs UHJvY3NbcGdwcm9jbm9dOworCQlQR1BST0MJICAgKnByb2MgPSBHZXRQR1Byb2NCeU51bWJl cihwZ3Byb2Nubyk7CiAKIAkJaWYgKHByb2MtPmRhdGFiYXNlSWQgIT0gZGF0YWJhc2VJZCkK IAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xv Y2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggNGNjN2Y2NDVj MzEuLjk0NDFkZjk1NTZhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTI4NzYs NyArMjg3Niw3IEBAIEZhc3RQYXRoVHJhbnNmZXJSZWxhdGlvbkxvY2tzKExvY2tNZXRob2Qg bG9ja01ldGhvZFRhYmxlLCBjb25zdCBMT0NLVEFHICpsb2NrdGFnCiAJICovCiAJZm9yIChp ID0gMDsgaSA8IFByb2NHbG9iYWwtPmFsbFByb2NDb3VudDsgaSsrKQogCXsKLQkJUEdQUk9D CSAgICpwcm9jID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2ldOworCQlQR1BST0MJICAgKnBy b2MgPSBHZXRQR1Byb2NCeU51bWJlcihpKTsKIAkJdWludDMyCQlqOwogCiAJCUxXTG9ja0Fj cXVpcmUoJnByb2MtPmZwSW5mb0xvY2ssIExXX0VYQ0xVU0lWRSk7CkBAIC0zMTM1LDcgKzMx MzUsNyBAQCBHZXRMb2NrQ29uZmxpY3RzKGNvbnN0IExPQ0tUQUcgKmxvY2t0YWcsIExPQ0tN T0RFIGxvY2ttb2RlLCBpbnQgKmNvdW50cCkKIAkJICovCiAJCWZvciAoaSA9IDA7IGkgPCBQ cm9jR2xvYmFsLT5hbGxQcm9jQ291bnQ7IGkrKykKIAkJewotCQkJUEdQUk9DCSAgICpwcm9j ID0gJlByb2NHbG9iYWwtPmFsbFByb2NzW2ldOworCQkJUEdQUk9DCSAgICpwcm9jID0gR2V0 UEdQcm9jQnlOdW1iZXIoaSk7CiAJCQl1aW50MzIJCWo7CiAKIAkJCS8qIEEgYmFja2VuZCBu ZXZlciBibG9ja3MgaXRzZWxmICovCkBAIC0zODIyLDcgKzM4MjIsNyBAQCBHZXRMb2NrU3Rh dHVzRGF0YSh2b2lkKQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBQcm9jR2xvYmFsLT5hbGxQ cm9jQ291bnQ7ICsraSkKIAl7Ci0JCVBHUFJPQwkgICAqcHJvYyA9ICZQcm9jR2xvYmFsLT5h bGxQcm9jc1tpXTsKKwkJUEdQUk9DCSAgICpwcm9jID0gR2V0UEdQcm9jQnlOdW1iZXIoaSk7 CiAKIAkJLyogU2tpcCBiYWNrZW5kcyB3aXRoIHBpZD0wLCBhcyB0aGV5IGRvbid0IGhvbGQg ZmFzdC1wYXRoIGxvY2tzICovCiAJCWlmIChwcm9jLT5waWQgPT0gMCkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdl L2xtZ3IvcHJvYy5jCmluZGV4IGU5ZWYwZmJmZTMyLi42ZDQ2YTNmMzc0MCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0xOTg4LDcgKzE5ODgsNyBAQCBQcm9jU2VuZFNpZ25h bChQcm9jTnVtYmVyIHByb2NOdW1iZXIpCiAJaWYgKHByb2NOdW1iZXIgPCAwIHx8IHByb2NO dW1iZXIgPj0gUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50KQogCQllbG9nKEVSUk9SLCAicHJv Y051bWJlciBvdXQgb2YgcmFuZ2UiKTsKIAotCVNldExhdGNoKCZQcm9jR2xvYmFsLT5hbGxQ cm9jc1twcm9jTnVtYmVyXS5wcm9jTGF0Y2gpOworCVNldExhdGNoKCZHZXRQR1Byb2NCeU51 bWJlcihwcm9jTnVtYmVyKS0+cHJvY0xhdGNoKTsKIH0KIAogLyoKLS0gCjIuNDMuMAoK --------------aOgJilnOwuNG06l09NpQHeBw--