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 1tzxZp-009DM2-Hz for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Apr 2025 12:52:17 +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 1tzxZo-00DRWQ-4g for pgsql-hackers@arkaria.postgresql.org; Wed, 02 Apr 2025 12:52: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 1tzxZn-00DRWI-MY for pgsql-hackers@lists.postgresql.org; Wed, 02 Apr 2025 12:52:15 +0000 Received: from mail-ua1-x92f.google.com ([2607:f8b0:4864:20::92f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tzxZl-002xzr-0S for pgsql-hackers@postgresql.org; Wed, 02 Apr 2025 12:52:15 +0000 Received: by mail-ua1-x92f.google.com with SMTP id a1e0cc1a2514c-86b31db3c3bso2813955241.3 for ; Wed, 02 Apr 2025 05:52:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1743598331; x=1744203131; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=mY3s84oTY3syPSjaj38cybDli5QiFJi5y5MwXOquXyI=; b=HDLwT5iJizGQSNUdHhjiGEg301sbI/gj2TDyyRiEt1qM809wzhbToL1z4OaXCIrbhc DJ0YsglzsuE/ky1F1Za49R/58EutIGf9yRpzKTYBeUcDMxnYQ9il3X/wDF/RJpEDB8F0 FiFFNcI4oWgh7mga7r4vSAO2fePJDwst1adL4rzxaZGDh7gLuGnPP870gDhXm743s0sa hrGc+s4DKlCTuerTrpd/OYTxauj1n7mPajFFvg1reg13KtxTPUzOwXZp7j+gbBlZuesg 1X4QCdO97u16ry7ZgGpPPNUIhlCr9hMTiK/3LK0ePJcZZ325nQOVu9kcqDiPm7WeV3x0 KAQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1743598331; x=1744203131; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=mY3s84oTY3syPSjaj38cybDli5QiFJi5y5MwXOquXyI=; b=D0wUuqX9ouUOgrM4RxXDhD93vN5QtLi0I77n464ZKvIlE8+PERR/sT76ElYift3Gnm QWHrAASOu+VWp5AWjcs9MywzWne+vvYIq8rN5G56z75wxXv/9zz/Sw2AZmwaEOUodNEb T6V9DRN1VcPYXZTNySIO7zVrDXzpCtv+YZfdHM2sskE9xHhkP1cuugg1REJNaAJCpwPv gvW9Y9svqhB2mDs6IYbe9JeZT5pvOFjl639KEbap/GHBteMevL8HJT1OAUm8Qhb/HwbU UnxBgG8iWTmdMLkzuJ2XR1SovMTxFMgOsYCUGW6XzlKWv31RU4+bJVVJigcm9YIBSmus VNRQ== X-Forwarded-Encrypted: i=1; AJvYcCXdwb3UtBpxg3c+24yiawnMx1z2t/ZSNrwh/uKjBW/Pn5WCZ65uG+G6iVHcGXhEPbDl2058nWwMlFJG6Kw9@postgresql.org X-Gm-Message-State: AOJu0Yy0IOqZqcolDBI5MZ+UCJzGIkWtf/dRURs/wpN048rgvxydXrPC SAJpwHjTlcENQOJq+leNTxpQkuD21ZRbeb25k3gKXdYGCcKIIl5MUz8cl4lSMJyIz55RzlOF6yx p3q5LxhbnqCppeyFyzqygDs/1XTc= X-Gm-Gg: ASbGnctz2O+0F+B5Gb5qw6JzzVQTNgxgJ7YjdF8P/gXs1AMGnL6dpRSZh6fVq+q/+ya 6r89kJZrdQL7lPfw9b+wGkxUXlmA0bU6MDTAvTHrXjK7STzryRtYaGEwcZkxRldheD2Sn65XynY 0Cr2OLIoz2jctlYiyomhE+V45q9OP/buProjH8 X-Google-Smtp-Source: AGHT+IHp5+Yx8L2zGroJs1O7Lbt8Psnj7LG25LLr6mWvS+1TMGjL653RPb5U6na0Z0oThze+g0kIYvXMSqxFN3zovaM= X-Received: by 2002:a05:6102:3f14:b0:4c1:935a:2446 with SMTP id ada2fe7eead31-4c6d3960923mr12602501137.19.1743598331253; Wed, 02 Apr 2025 05:52:11 -0700 (PDT) MIME-Version: 1.0 References: <202501311208.mihe6qhpw2fq@alvherre.pgsql> In-Reply-To: From: Ashutosh Bapat Date: Wed, 2 Apr 2025 18:21:59 +0530 X-Gm-Features: AQ5f1Jp1lQ8bPS3UzwwUVBRpiE4Z1qat3FsV7eQHyRz1L_gW5UCUsD2wIU3BiXw Message-ID: Subject: Re: Reducing memory consumed by RestrictInfo list translations in partitionwise join planning To: Amit Langote Cc: David Rowley , Alvaro Herrera , Dmitry Dolgov <9erthalion6@gmail.com>, tomas@vondra.me, vignesh C , pgsql-hackers , Richard Guo Content-Type: multipart/mixed; boundary="0000000000002ab8750631cb1fe3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002ab8750631cb1fe3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 2, 2025 at 1:00=E2=80=AFPM Amit Langote wrote: > > I'm feeling good about this version, but let me know if you have any > further thoughts / comments. Thanks for incorporating the changes and fixing initial hash table size. + #define EC_DERIVES_HASH_THRESHOLD 32 Given that the constant is being used only at a single place, we don't need a macro. But I am not against the macro. PFA patch set with some minor edits in 0003. Also I have edited commit message of 0001 and 0002. In the commit messages of 0002, 1. mentioning that the lookup happens only for join clause generation is not accurate, since we lookup EM =3D constant clauses as well which are not join clauses. 2. In the second paragraph em1 and em2 are mentioned without mentioning what are they. I have rephrased it so as to avoid mentioning names of structure member. -- Best Wishes, Ashutosh Bapat --0000000000002ab8750631cb1fe3 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Add-assertion-to-verify-derived-clause-has--20250402.patch" Content-Disposition: attachment; filename="0001-Add-assertion-to-verify-derived-clause-has--20250402.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8zxdhss0 RnJvbSAyMDhmMjMxYTU3NDMxYmZhMTI2ZGM2YzQxYWYzMDJmZDVkNzYxMTMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgMjQgTWFyIDIwMjUgMjE6MTc6NDYgKzA5MDAKU3ViamVjdDogW1BBVENIIDEv M10gQWRkIGFzc2VydGlvbiB0byB2ZXJpZnkgZGVyaXZlZCBjbGF1c2UgaGFzIGNvbnN0YW50IFJI UwoKZmluZF9kZXJpdmVkX2NsYXVzZV9mb3JfZWNfbWVtYmVyKCkgc2VhcmNoZXMgZm9yIGEgcHJl dmlvdXNseS1kZXJpdmVkCmNsYXVzZSB0aGF0IGVxdWF0ZXMgYSBub24tY29uc3RhbnQgRXF1aXZh bGVuY2VNZW1iZXIgdG8gYSBjb25zdGFudC4KSXQgaXMgb25seSBjYWxsZWQgZm9yIEVxdWl2YWxl bmNlQ2xhc3NlcyB3aXRoIGVjX2hhc19jb25zdCBzZXQsIGFuZAp3aXRoIGEgbm9uLWNvbnN0YW50 IG1lbWJlciB0aGUgRXF1aXZhbGVuY2VNZW1iZXIgdG8gc2VhcmNoIGZvci4KClRoZSBtYXRjaGVk IGNsYXVzZSBpcyBleHBlY3RlZCB0byBoYXZlIHRoZSBub24tY29uc3RhbnQgbWVtYmVyIG9uIHRo ZQpsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlIGNvbnN0YW50IEVxdWl2YWxlbmNlTWVtYmVyIG9uIHRo ZSByaWdodC4KCkFzc2VydCB0aGF0IHRoZSBSSFMgaXMgaW5kZWVkIGEgY29uc3RhbnQsIHRvIGNh dGNoIHZpb2xhdGlvbnMgb2YgdGhpcwpzdHJ1Y3R1cmUgYW5kIGVuZm9yY2UgYXNzdW1wdGlvbnMg bWFkZSBieQpnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGllc19jb25zdCgpLgoKQXV0aG9y OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUV4SFc1c2NNeHlGUnFPRkU2T0RtQmlXMnJuVkJFbWVF Y0EtcDRXX0N5dUVpa1VSZEFAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6 ZXIvcGF0aC9lcXVpdmNsYXNzLmMgfCAzICsrKwogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9u cygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3Mu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwppbmRleCAwZjllY2Y1 ZWU4Yi4uNDkzYTk1ZDI2Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRo L2VxdWl2Y2xhc3MuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNz LmMKQEAgLTI2NjQsNyArMjY2NCwxMCBAQCBmaW5kX2Rlcml2ZWRfY2xhdXNlX2Zvcl9lY19tZW1i ZXIoRXF1aXZhbGVuY2VDbGFzcyAqZWMsCiAJCSAqIG1lbWJlcnMgb24gdGhlIGxlZnQgc2lkZSBv ZiBkZXJpdmVkIGNsYXVzZXMuCiAJCSAqLwogCQlpZiAocmluZm8tPmxlZnRfZW0gPT0gZW0pCisJ CXsKKwkJCUFzc2VydChyaW5mby0+cmlnaHRfZW0tPmVtX2lzX2NvbnN0KTsKIAkJCXJldHVybiBy aW5mbzsKKwkJfQogCX0KIAlyZXR1cm4gTlVMTDsKIH0KCmJhc2UtY29tbWl0OiA0M2RjYThhMTE2 MjRkMDJkZGUyYjRiZDM0OGQ3N2I3MDQ1YzBkZmJjCi0tIAoyLjM0LjEKCg== --0000000000002ab8750631cb1fe3 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Make-derived-clause-lookup-in-EquivalenceCl-20250402.patch" Content-Disposition: attachment; filename="0002-Make-derived-clause-lookup-in-EquivalenceCl-20250402.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8zxdhsw1 RnJvbSBlNDg0MTU0MzMwZDJhNmVkOTBhZDU0MmY0ZDlmZmE0NjNmMWFiOWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgMiBBcHIgMjAyNSAxNTozMTozMCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggMi8z XSBNYWtlIGRlcml2ZWQgY2xhdXNlIGxvb2t1cCBpbiBFcXVpdmFsZW5jZUNsYXNzIG1vcmUKIGVm ZmljaWVudAoKRGVyaXZlZCBjbGF1c2VzIGFyZSBzdG9yZWQgaW4gZWNfZGVyaXZlcywgYSBMaXN0 IG9mIFJlc3RyaWN0SW5mb3MuClRoZXNlIGNsYXVzZXMgYXJlIGxvb2tlZCB1cCBsYXRlciB1c2lu ZyB0aGUgbGVmdCBhbmQgcmlnaHQKRXF1aXZhbGVuY2VNZW1iZXJzIGFuZCB0aGUgY2xhdXNlJ3Mg cGFyZW50IEVDLgoKVGhpcyBsaW5lYXIgc2VhcmNoIGJlY29tZXMgZXhwZW5zaXZlIGluIHF1ZXJp ZXMgd2l0aCBtYW55IGpvaW5zIG9yCnBhcnRpdGlvbnMsIHdoZXJlIGVjX2Rlcml2ZXMgbWF5IGNv bnRhaW4gdGhvdXNhbmRzIG9mIGVudHJpZXMuIEluCnBhcnRpY3VsYXIsIGNyZWF0ZV9qb2luX2Ns YXVzZSgpIGNhbiBzcGVuZCBzaWduaWZpY2FudCB0aW1lIHNjYW5uaW5nCnRoaXMgbGlzdC4KClRv IGltcHJvdmUgcGVyZm9ybWFuY2UsIGludHJvZHVjZSBhIGhhc2ggdGFibGUgKGVjX2Rlcml2ZXNf aGFzaCkgdGhhdAppcyBidWlsdCB3aGVuIHRoZSBsaXN0IHJlYWNoZXMgMzIgZW50cmllcyAtLSB0 aGUgc2FtZSB0aHJlc2hvbGQgdXNlZApmb3Igam9pbl9yZWxfaGFzaC4gVGhlIG9yaWdpbmFsIGxp c3QgaXMgcmV0YWluZWQgYWxvbmdzaWRlIHRoZSBoYXNoCnRhYmxlIHRvIHN1cHBvcnQgRUMgbWVy Z2luZyBhbmQgc2VyaWFsaXphdGlvbgooX291dEVxdWl2YWxlbmNlQ2xhc3MoKSkuCgpFYWNoIGNs YXVzZSBpcyBzdG9yZWQgaW4gdGhlIGhhc2ggdGFibGUgdXNpbmcgYSBjYW5vbmljYWxpemVkIGtl eTogdGhlCkVxdWl2YWxlbmNlTWVtYmVyIHdpdGggdGhlIGxvd2VyIG1lbW9yeSBhZGRyZXNzIGlz IHBsYWNlZCBpbiB0aGUga2V5CmJlZm9yZSB0aGUgb25lIHdpdGggdGhlIGhpZ2hlciBtZW1vcnkg YWRkcmVzcy4gVGhpcyBhdm9pZHMgc3RvcmluZyBvcgpzZWFyY2hpbmcgZm9yIGJvdGggcGVybXV0 YXRpb25zIG9mIHRoZSBzYW1lIGNsYXVzZS4gRm9yIGNsYXVzZXMKaW52b2x2aW5nIGEgY29uc3Rh bnQgRU0sIHRoZSBrZXkgc3RvcmVzIE5VTEwgZm9sbG93ZWQgYnkgdGhlCm5vbi1jb25zdGFudCBF TS4KClRoZSBoYXNoIHRhYmxlIGlzIGluaXRpYWxpemVkIHVzaW5nIGxpc3RfbGVuZ3RoKGVjX2Rl cml2ZXNfbGlzdCkgYXMKdGhlIHNpemUgaGludC4gc2ltcGxlaGFzaCBpbnRlcm5hbGx5IGFkanVz dHMgdGhpcyB0byB0aGUgbmV4dCBwb3dlciBvZgp0d28gYWZ0ZXIgZGl2aWRpbmcgYnkgdGhlIGZp bGxmYWN0b3IsIHNvIHRoaXMgdHlwaWNhbGx5IHJlc3VsdHMgaW4gYXQKbGVhc3QgNjQgYnVja2V0 cyBuZWFyIHRoZSB0aHJlc2hvbGQgLS0gYXZvaWRpbmcgaW1tZWRpYXRlIHJlc2l6aW5nCndoaWxl IGFkYXB0aW5nIHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGVudHJpZXMuCgpUaGUgbG9va3VwIGxv Z2ljIGZvciBkZXJpdmVkIGNsYXVzZXMgaXMgbm93IGNlbnRyYWxpemVkIGluCmVjX3NlYXJjaF9k ZXJpdmVkX2NsYXVzZV9mb3JfZW1zKCksIHdoaWNoIGNvbnN1bHRzIHRoZSBoYXNoIHRhYmxlIHdo ZW4KYXZhaWxhYmxlIGFuZCBmYWxscyBiYWNrIHRvIHRoZSBsaXN0IG90aGVyd2lzZS4KClRoZSBu ZXcgZWNfY2xlYXJfZGVyaXZlZF9jbGF1c2VzKCkgYWx3YXlzIGZyZWVzIGVjX2Rlcml2ZXNfbGlz dCwgZXZlbgp0aG91Z2ggc29tZSBvZiB0aGUgb3JpZ2luYWwgY29kZSBwYXRocyB0aGF0IGNsZWFy ZWQgdGhlIG9sZAplY19kZXJpdmVzIGZpZWxkIGRpZCBub3QuIFRoaXMgZW5zdXJlcyBjb25zaXN0 ZW50IGNsZWFudXAgYW5kIGF2b2lkcwpsZWFraW5nIG1lbW9yeSB3aGVuIHRoZSBsaXN0IGdyb3dz IGxhcmdlLgoKQW4gYXNzZXJ0aW9uIG9yaWdpbmFsbHkgcGxhY2VkIGluIGZpbmRfZGVyaXZlZF9j bGF1c2VfZm9yX2VjX21lbWJlcigpCmlzIG1vdmVkIGludG8gZWNfc2VhcmNoX2Rlcml2ZWRfY2xh dXNlX2Zvcl9lbXMoKSBzbyB0aGF0IGl0IGlzCmVuZm9yY2VkIGNvbnNpc3RlbnRseSwgcmVnYXJk bGVzcyBvZiB3aGV0aGVyIHRoZSBoYXNoIHRhYmxlIG9yIGxpc3QgaXMKdXNlZCBmb3IgbG9va3Vw LgoKVGhpcyBkZXNpZ24gaW5jb3Jwb3JhdGVzIHN1Z2dlc3Rpb25zIGJ5IERhdmlkIFJvd2xleSwg d2hvIHByb3Bvc2VkCmJvdGggdGhlIGtleSBjYW5vbmljYWxpemF0aW9uIGFuZCBndWlkYW5jZSBv biBpbml0aWFsIHNpemluZyB0bwpiYWxhbmNlIG1lbW9yeSB1c2FnZSBhbmQgQ1BVIGVmZmljaWVu Y3kuCgpBdXRob3I6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQW1pdCBMYW5nb3RlIDxhbWl0bGFuZ290ZTA5QGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IERhdmlkIFJvd2xleSA8ZGdyb3dsZXltbEBnbWFpbC5jb20+ClRlc3RlZC1ieTog RG1pdHJ5IERvbGdvdiA8OWVydGhhbGlvbjZAZ21haWwuY29tPgpUZXN0ZWQtYnk6IEFsdmFybyBI ZXJyZXJhIDxhbHZoZXJyZUBhbHZoLm5vLWlwLm9yZz4KVGVzdGVkLWJ5OiBBbWl0IExhbmdvdGUg PGFtaXRsYW5nb3RlMDlAZ21haWwuY29tPgpUZXN0ZWQtYnk6IERhdmlkIFJvd2xleSA8ZGdyb3ds ZXltbEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FFeEhXNXZa aVF0V1U2bW9zekxQNWlaOGdMWF9aQVViZ0VYMER4R0x4OVBHV0N0cVVnQG1haWwuZ21haWwuY29t Ci0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgICAgICAgICAgICAgfCAgIDMgKy0K IHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMgICAgIHwgICAzICstCiBzcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9lcXVpdmNsYXNzLmMgICB8IDQzOCArKysrKysrKysrKysr KysrKystLS0tCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYyB8ICAg NSArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAgfCAgMTcgKy0K IHNyYy9pbmNsdWRlL29wdGltaXplci9wYXRocy5oICAgICAgICAgICAgIHwgICA0ICstCiBzcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICAgICB8ICAgMiArCiA3IGZpbGVzIGNo YW5nZWQsIDM5MiBpbnNlcnRpb25zKCspLCA4MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3Mu YwppbmRleCBiYjliZGQ2NzE5Mi4uNTU3ZjA2ZTM0NGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL291dGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAt NDY3LDcgKzQ2Nyw4IEBAIF9vdXRFcXVpdmFsZW5jZUNsYXNzKFN0cmluZ0luZm8gc3RyLCBjb25z dCBFcXVpdmFsZW5jZUNsYXNzICpub2RlKQogCVdSSVRFX09JRF9GSUVMRChlY19jb2xsYXRpb24p OwogCVdSSVRFX05PREVfRklFTEQoZWNfbWVtYmVycyk7CiAJV1JJVEVfTk9ERV9GSUVMRChlY19z b3VyY2VzKTsKLQlXUklURV9OT0RFX0ZJRUxEKGVjX2Rlcml2ZXMpOworCS8qIE9ubHkgZWNfZGVy aXZlc19saXN0IGlzIHdyaXR0ZW47IGhhc2ggaXMgbm90IHNlcmlhbGl6ZWQuICovCisJV1JJVEVf Tk9ERV9GSUVMRChlY19kZXJpdmVzX2xpc3QpOwogCVdSSVRFX0JJVE1BUFNFVF9GSUVMRChlY19y ZWxpZHMpOwogCVdSSVRFX0JPT0xfRklFTEQoZWNfaGFzX2NvbnN0KTsKIAlXUklURV9CT09MX0ZJ RUxEKGVjX2hhc192b2xhdGlsZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGF0aC9jb3N0c2l6ZS5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNpemUuYwpp bmRleCBmNmY3N2I4ZmUxOS4uYzQ3NGM3YTA2YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv Y29zdHNpemUuYwpAQCAtNTg0OCw3ICs1ODQ4LDggQEAgZ2V0X2ZvcmVpZ25fa2V5X2pvaW5fc2Vs ZWN0aXZpdHkoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJaWYgKGVjICYmIGVjLT5lY19oYXNfY29u c3QpCiAJCQkJewogCQkJCQlFcXVpdmFsZW5jZU1lbWJlciAqZW0gPSBma2luZm8tPmZrX2VjbGFz c19tZW1iZXJbaV07Ci0JCQkJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBmaW5kX2Rlcml2ZWRfY2xh dXNlX2Zvcl9lY19tZW1iZXIoZWMsCisJCQkJCVJlc3RyaWN0SW5mbyAqcmluZm8gPSBmaW5kX2Rl cml2ZWRfY2xhdXNlX2Zvcl9lY19tZW1iZXIocm9vdCwKKwkJCQkJCQkJCQkJCQkJCQkJCQllYywK IAkJCQkJCQkJCQkJCQkJCQkJCQllbSk7CiAKIAkJCQkJaWYgKHJpbmZvKQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCmluZGV4IDQ5M2E5NWQyNmNjLi44NTNkMzkwNDU3NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCisrKyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwpAQCAtMjAsNiArMjAsNyBA QAogCiAjaW5jbHVkZSAiYWNjZXNzL3N0cmF0bnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ190 eXBlLmgiCisjaW5jbHVkZSAiY29tbW9uL2hhc2hmbi5oIgogI2luY2x1ZGUgIm5vZGVzL21ha2Vm dW5jcy5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9hcHBlbmRpbmZvLmgiCkBAIC03Miw3ICs3Myw1NiBAQCBzdGF0aWMgQml0bWFwc2V0ICpnZXRf ZWNsYXNzX2luZGV4ZXNfZm9yX3JlbGlkcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJ CVJlbGlkcyByZWxpZHMpOwogc3RhdGljIEJpdG1hcHNldCAqZ2V0X2NvbW1vbl9lY2xhc3NfaW5k ZXhlcyhQbGFubmVySW5mbyAqcm9vdCwgUmVsaWRzIHJlbGlkczEsCiAJCQkJCQkJCQkJCVJlbGlk cyByZWxpZHMyKTsKK3N0YXRpYyB2b2lkIGVjX2J1aWxkX2Rlcml2ZXNfaGFzaChQbGFubmVySW5m byAqcm9vdCwgRXF1aXZhbGVuY2VDbGFzcyAqZWMpOworc3RhdGljIHZvaWQgZWNfYWRkX2Rlcml2 ZWRfY2xhdXNlcyhFcXVpdmFsZW5jZUNsYXNzICplYywgTGlzdCAqY2xhdXNlcyk7CitzdGF0aWMg dm9pZCBlY19hZGRfZGVyaXZlZF9jbGF1c2UoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlc3RyaWN0 SW5mbyAqY2xhdXNlKTsKK3N0YXRpYyB2b2lkIGVjX2FkZF9jbGF1c2VfdG9fZGVyaXZlc19oYXNo KEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBSZXN0cmljdEluZm8gKnJpbmZvKTsKK3N0YXRpYyBSZXN0 cmljdEluZm8gKmVjX3NlYXJjaF9jbGF1c2VfZm9yX2VtcyhQbGFubmVySW5mbyAqcm9vdCwgRXF1 aXZhbGVuY2VDbGFzcyAqZWMsCisJCQkJCQkJCQkJCSAgRXF1aXZhbGVuY2VNZW1iZXIgKmxlZnRl bSwKKwkJCQkJCQkJCQkJICBFcXVpdmFsZW5jZU1lbWJlciAqcmlnaHRlbSwKKwkJCQkJCQkJCQkJ ICBFcXVpdmFsZW5jZUNsYXNzICpwYXJlbnRfZWMpOworc3RhdGljIFJlc3RyaWN0SW5mbyAqZWNf c2VhcmNoX2Rlcml2ZWRfY2xhdXNlX2Zvcl9lbXMoUGxhbm5lckluZm8gKnJvb3QsCisJCQkJCQkJ CQkJCQkJICBFcXVpdmFsZW5jZUNsYXNzICplYywKKwkJCQkJCQkJCQkJCQkgIEVxdWl2YWxlbmNl TWVtYmVyICpsZWZ0ZW0sCisJCQkJCQkJCQkJCQkJICBFcXVpdmFsZW5jZU1lbWJlciAqcmlnaHRl bSwKKwkJCQkJCQkJCQkJCQkgIEVxdWl2YWxlbmNlQ2xhc3MgKnBhcmVudF9lYyk7CiAKKy8qCisg KiBIYXNoIGtleSBpZGVudGlmeWluZyBhIGRlcml2ZWQgY2xhdXNlLgorICoKKyAqIFRoaXMgc3Ry dWN0dXJlIHNob3VsZCBub3QgYmUgZmlsbGVkIG1hbnVhbGx5LiBVc2UgZmlsbF9lY19kZXJpdmVz X2tleSgpIHRvCisgKiBzZXQgaXQgdXAgaW4gY2Fub25pY2FsIGZvcm0uCisgKi8KK3R5cGVkZWYg c3RydWN0Cit7CisJRXF1aXZhbGVuY2VNZW1iZXIgKmVtMTsKKwlFcXVpdmFsZW5jZU1lbWJlciAq ZW0yOworCUVxdWl2YWxlbmNlQ2xhc3MgKnBhcmVudF9lYzsKK30gRUNEZXJpdmVzS2V5OworCisv KiBIYXNoIHRhYmxlIGVudHJ5IGluIGVjX2Rlcml2ZXNfaGFzaC4gKi8KK3R5cGVkZWYgc3RydWN0 Cit7CisJdWludDMyCQlzdGF0dXM7CisJRUNEZXJpdmVzS2V5IGtleTsKKwlSZXN0cmljdEluZm8g KnJpbmZvOworfSBFQ0Rlcml2ZXNFbnRyeTsKKworLyogVGhyZXNob2xkIGZvciBzd2l0Y2hpbmcg ZnJvbSBsaXN0IHRvIGhhc2ggdGFibGUgKi8KKyNkZWZpbmUgRUNfREVSSVZFU19IQVNIX1RIUkVT SE9MRCAzMgorCisjZGVmaW5lIFNIX1BSRUZJWCAgICAgICAgICAgICAgIGRlcml2ZXMKKyNkZWZp bmUgU0hfRUxFTUVOVF9UWVBFCQkJRUNEZXJpdmVzRW50cnkKKyNkZWZpbmUgU0hfS0VZX1RZUEUg ICAgICAgICAgICAgRUNEZXJpdmVzS2V5CisjZGVmaW5lIFNIX0tFWSAgICAgICAgICAgICAgICAg IGtleQorI2RlZmluZSBTSF9IQVNIX0tFWSh0Yiwga2V5KQlcCisJaGFzaF9ieXRlcygoY29uc3Qg dW5zaWduZWQgY2hhciAqKSAmKGtleSksIHNpemVvZihFQ0Rlcml2ZXNLZXkpKQorI2RlZmluZSBT SF9FUVVBTCh0YiwgYSwgYikJXAorCSgoYSkuZW0xID09IChiKS5lbTEgJiYgKGEpLmVtMiA9PSAo YikuZW0yICYmIChhKS5wYXJlbnRfZWMgPT0gKGIpLnBhcmVudF9lYykKKyNkZWZpbmUgU0hfU0NP UEUgICAgICAgICAgICAgICAgc3RhdGljIGlubGluZQorI2RlZmluZSBTSF9ERUNMQVJFCisjZGVm aW5lIFNIX0RFRklORQorI2luY2x1ZGUgImxpYi9zaW1wbGVoYXNoLmgiCiAKIC8qCiAgKiBwcm9j ZXNzX2VxdWl2YWxlbmNlCkBAIC0zNDIsNyArMzkyLDEyIEBAIHByb2Nlc3NfZXF1aXZhbGVuY2Uo UGxhbm5lckluZm8gKnJvb3QsCiAJCSAqLwogCQllYzEtPmVjX21lbWJlcnMgPSBsaXN0X2NvbmNh dChlYzEtPmVjX21lbWJlcnMsIGVjMi0+ZWNfbWVtYmVycyk7CiAJCWVjMS0+ZWNfc291cmNlcyA9 IGxpc3RfY29uY2F0KGVjMS0+ZWNfc291cmNlcywgZWMyLT5lY19zb3VyY2VzKTsKLQkJZWMxLT5l Y19kZXJpdmVzID0gbGlzdF9jb25jYXQoZWMxLT5lY19kZXJpdmVzLCBlYzItPmVjX2Rlcml2ZXMp OworCisJCS8qCisJCSAqIEFwcGVuZHMgZWMyJ3MgZGVyaXZlZCBjbGF1c2VzIHRvIGVjMS0+ZWNf ZGVyaXZlc19saXN0IGFuZCBhZGRzIHRoZW0KKwkJICogdG8gZWMxLT5lY19kZXJpdmVzX2hhc2gg aWYgcHJlc2VudC4KKwkJICovCisJCWVjX2FkZF9kZXJpdmVkX2NsYXVzZXMoZWMxLCBlYzItPmVj X2Rlcml2ZXNfbGlzdCk7CiAJCWVjMS0+ZWNfcmVsaWRzID0gYm1zX2pvaW4oZWMxLT5lY19yZWxp ZHMsIGVjMi0+ZWNfcmVsaWRzKTsKIAkJZWMxLT5lY19oYXNfY29uc3QgfD0gZWMyLT5lY19oYXNf Y29uc3Q7CiAJCS8qIGNhbid0IG5lZWQgdG8gc2V0IGhhc192b2xhdGlsZSAqLwpAQCAtMzU1LDcg KzQxMCw3IEBAIHByb2Nlc3NfZXF1aXZhbGVuY2UoUGxhbm5lckluZm8gKnJvb3QsCiAJCS8qIGp1 c3QgdG8gYXZvaWQgZGVidWdnaW5nIGNvbmZ1c2lvbiB3LyBkYW5nbGluZyBwb2ludGVyczogKi8K IAkJZWMyLT5lY19tZW1iZXJzID0gTklMOwogCQllYzItPmVjX3NvdXJjZXMgPSBOSUw7Ci0JCWVj Mi0+ZWNfZGVyaXZlcyA9IE5JTDsKKwkJZWNfY2xlYXJfZGVyaXZlZF9jbGF1c2VzKGVjMik7CiAJ CWVjMi0+ZWNfcmVsaWRzID0gTlVMTDsKIAkJZWMxLT5lY19zb3VyY2VzID0gbGFwcGVuZChlYzEt PmVjX3NvdXJjZXMsIHJlc3RyaWN0aW5mbyk7CiAJCWVjMS0+ZWNfbWluX3NlY3VyaXR5ID0gTWlu KGVjMS0+ZWNfbWluX3NlY3VyaXR5LApAQCAtNDEyLDcgKzQ2Nyw4IEBAIHByb2Nlc3NfZXF1aXZh bGVuY2UoUGxhbm5lckluZm8gKnJvb3QsCiAJCWVjLT5lY19jb2xsYXRpb24gPSBjb2xsYXRpb247 CiAJCWVjLT5lY19tZW1iZXJzID0gTklMOwogCQllYy0+ZWNfc291cmNlcyA9IGxpc3RfbWFrZTEo cmVzdHJpY3RpbmZvKTsKLQkJZWMtPmVjX2Rlcml2ZXMgPSBOSUw7CisJCWVjLT5lY19kZXJpdmVz X2xpc3QgPSBOSUw7CisJCWVjLT5lY19kZXJpdmVzX2hhc2ggPSBOVUxMOwogCQllYy0+ZWNfcmVs aWRzID0gTlVMTDsKIAkJZWMtPmVjX2hhc19jb25zdCA9IGZhbHNlOwogCQllYy0+ZWNfaGFzX3Zv bGF0aWxlID0gZmFsc2U7CkBAIC02NzEsNyArNzI3LDggQEAgZ2V0X2VjbGFzc19mb3Jfc29ydF9l eHByKFBsYW5uZXJJbmZvICpyb290LAogCW5ld2VjLT5lY19jb2xsYXRpb24gPSBjb2xsYXRpb247 CiAJbmV3ZWMtPmVjX21lbWJlcnMgPSBOSUw7CiAJbmV3ZWMtPmVjX3NvdXJjZXMgPSBOSUw7Ci0J bmV3ZWMtPmVjX2Rlcml2ZXMgPSBOSUw7CisJbmV3ZWMtPmVjX2Rlcml2ZXNfbGlzdCA9IE5JTDsK KwluZXdlYy0+ZWNfZGVyaXZlc19oYXNoID0gTlVMTDsKIAluZXdlYy0+ZWNfcmVsaWRzID0gTlVM TDsKIAluZXdlYy0+ZWNfaGFzX2NvbnN0ID0gZmFsc2U7CiAJbmV3ZWMtPmVjX2hhc192b2xhdGls ZSA9IGNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKChOb2RlICopIGV4cHIpOwpAQCAtMTAyNiw4 ICsxMDgzLDggQEAgcmVsYXRpb25fY2FuX2JlX3NvcnRlZF9lYXJseShQbGFubmVySW5mbyAqcm9v dCwgUmVsT3B0SW5mbyAqcmVsLAogICogc2Nhbm5pbmcgb2YgdGhlIHF1YWxzIGFuZCBiZWZvcmUg UGF0aCBjb25zdHJ1Y3Rpb24gYmVnaW5zLgogICoKICAqIFdlIG1ha2Ugbm8gYXR0ZW1wdCB0byBh dm9pZCBnZW5lcmF0aW5nIGR1cGxpY2F0ZSBSZXN0cmljdEluZm9zIGhlcmU6IHdlCi0gKiBkb24n dCBzZWFyY2ggZWNfc291cmNlcyBvciBlY19kZXJpdmVzIGZvciBtYXRjaGVzLiAgSXQgZG9lc24n dCByZWFsbHkKLSAqIHNlZW0gd29ydGggdGhlIHRyb3VibGUgdG8gZG8gc28uCisgKiBkb24ndCBz ZWFyY2ggZXhpc3Rpbmcgc291cmNlIG9yIGRlcml2ZWQgY2xhdXNlcyBpbiB0aGUgRUMgZm9yIG1h dGNoZXMuICBJdAorICogZG9lc24ndCByZWFsbHkgc2VlbSB3b3J0aCB0aGUgdHJvdWJsZSB0byBk byBzby4KICAqLwogdm9pZAogZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2VxdWFsaXRpZXMoUGxhbm5l ckluZm8gKnJvb3QpCkBAIC0xMTg4LDExICsxMjQ1LDExIEBAIGdlbmVyYXRlX2Jhc2VfaW1wbGll ZF9lcXVhbGl0aWVzX2NvbnN0KFBsYW5uZXJJbmZvICpyb290LAogCiAJCS8qCiAJCSAqIElmIHRo ZSBjbGF1c2UgZGlkbid0IGRlZ2VuZXJhdGUgdG8gYSBjb25zdGFudCwgZmlsbCBpbiB0aGUgY29y cmVjdAotCQkgKiBtYXJraW5ncyBmb3IgYSBtZXJnZWpvaW5hYmxlIGNsYXVzZSwgYW5kIHNhdmUg aXQgaW4gZWNfZGVyaXZlcy4gKFdlCi0JCSAqIHdpbGwgbm90IHJlLXVzZSBzdWNoIGNsYXVzZXMg ZGlyZWN0bHksIGJ1dCBzZWxlY3Rpdml0eSBlc3RpbWF0aW9uCi0JCSAqIG1heSBjb25zdWx0IHRo ZSBsaXN0IGxhdGVyLiAgTm90ZSB0aGF0IHRoaXMgdXNlIG9mIGVjX2Rlcml2ZXMgZG9lcwotCQkg KiBub3Qgb3ZlcmxhcCB3aXRoIGl0cyB1c2UgZm9yIGpvaW4gY2xhdXNlcywgc2luY2Ugd2UgbmV2 ZXIgZ2VuZXJhdGUKLQkJICogam9pbiBjbGF1c2VzIGZyb20gYW4gZWNfaGFzX2NvbnN0IGVjbGFz cy4pCisJCSAqIG1hcmtpbmdzIGZvciBhIG1lcmdlam9pbmFibGUgY2xhdXNlLCBhbmQgc2F2ZSBp dCBhcyBhIGRlcml2ZWQKKwkJICogY2xhdXNlLiAoV2Ugd2lsbCBub3QgcmUtdXNlIHN1Y2ggY2xh dXNlcyBkaXJlY3RseSwgYnV0IHNlbGVjdGl2aXR5CisJCSAqIGVzdGltYXRpb24gbWF5IGNvbnN1 bHQgdGhvc2UgbGF0ZXIuICBOb3RlIHRoYXQgdGhpcyB1c2Ugb2YgZGVyaXZlZAorCQkgKiBjbGF1 c2VzIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBpdHMgdXNlIGZvciBqb2luIGNsYXVzZXMsIHNpbmNl IHdlCisJCSAqIG5ldmVyIGdlbmVyYXRlIGpvaW4gY2xhdXNlcyBmcm9tIGFuIGVjX2hhc19jb25z dCBlY2xhc3MuKQogCQkgKi8KIAkJaWYgKHJpbmZvICYmIHJpbmZvLT5tZXJnZW9wZmFtaWxpZXMp CiAJCXsKQEAgLTEyMDAsNyArMTI1Nyw3IEBAIGdlbmVyYXRlX2Jhc2VfaW1wbGllZF9lcXVhbGl0 aWVzX2NvbnN0KFBsYW5uZXJJbmZvICpyb290LAogCQkJcmluZm8tPmxlZnRfZWMgPSByaW5mby0+ cmlnaHRfZWMgPSBlYzsKIAkJCXJpbmZvLT5sZWZ0X2VtID0gY3VyX2VtOwogCQkJcmluZm8tPnJp Z2h0X2VtID0gY29uc3RfZW07Ci0JCQllYy0+ZWNfZGVyaXZlcyA9IGxhcHBlbmQoZWMtPmVjX2Rl cml2ZXMsIHJpbmZvKTsKKwkJCWVjX2FkZF9kZXJpdmVkX2NsYXVzZShlYywgcmluZm8pOwogCQl9 CiAJfQogfQpAQCAtMTI2NSwxMCArMTMyMiwxMCBAQCBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1 YWxpdGllc19ub19jb25zdChQbGFubmVySW5mbyAqcm9vdCwKIAogCQkJLyoKIAkJCSAqIElmIHRo ZSBjbGF1c2UgZGlkbid0IGRlZ2VuZXJhdGUgdG8gYSBjb25zdGFudCwgZmlsbCBpbiB0aGUKLQkJ CSAqIGNvcnJlY3QgbWFya2luZ3MgZm9yIGEgbWVyZ2Vqb2luYWJsZSBjbGF1c2UuICBXZSBkb24n dCBwdXQgaXQKLQkJCSAqIGluIGVjX2Rlcml2ZXMgaG93ZXZlcjsgd2UgZG9uJ3QgY3VycmVudGx5 IG5lZWQgdG8gcmUtZmluZCBzdWNoCi0JCQkgKiBjbGF1c2VzLCBhbmQgd2UgZG9uJ3Qgd2FudCB0 byBjbHV0dGVyIHRoYXQgbGlzdCB3aXRoIG5vbi1qb2luCi0JCQkgKiBjbGF1c2VzLgorCQkJICog Y29ycmVjdCBtYXJraW5ncyBmb3IgYSBtZXJnZWpvaW5hYmxlIGNsYXVzZS4gIFdlIGRvbid0IHJl Y29yZAorCQkJICogaXQgYXMgYSBkZXJpdmVkIGNsYXVzZSwgc2luY2Ugd2UgZG9uJ3QgY3VycmVu dGx5IG5lZWQgdG8KKwkJCSAqIHJlLWZpbmQgc3VjaCBjbGF1c2VzLCBhbmQgZG9uJ3Qgd2FudCB0 byBjbHV0dGVyIHRoZQorCQkJICogZGVyaXZlZC1jbGF1c2Ugc2V0IHdpdGggbm9uLWpvaW4gY2xh dXNlcy4KIAkJCSAqLwogCQkJaWYgKHJpbmZvICYmIHJpbmZvLT5tZXJnZW9wZmFtaWxpZXMpCiAJ CQl7CkBAIC0xMzY5LDcgKzE0MjYsNyBAQCBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGll c19icm9rZW4oUGxhbm5lckluZm8gKnJvb3QsCiAgKiB3ZSBjb25zaWRlciBkaWZmZXJlbnQgam9p biBwYXRocywgd2UgYXZvaWQgZ2VuZXJhdGluZyBtdWx0aXBsZSBjb3BpZXM6CiAgKiB3aGVuZXZl ciB3ZSBzZWxlY3QgYSBwYXJ0aWN1bGFyIHBhaXIgb2YgRXF1aXZhbGVuY2VNZW1iZXJzIHRvIGpv aW4sCiAgKiB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIHBhaXIgbWF0Y2hlcyBhbnkgb3JpZ2luYWwg Y2xhdXNlIChpbiBlY19zb3VyY2VzKQotICogb3IgcHJldmlvdXNseS1idWlsdCBjbGF1c2UgKGlu IGVjX2Rlcml2ZXMpLiAgVGhpcyBzYXZlcyBtZW1vcnkgYW5kIGFsbG93cworICogb3IgcHJldmlv dXNseS1idWlsdCBkZXJpdmVkIGNsYXVzZS4gIFRoaXMgc2F2ZXMgbWVtb3J5IGFuZCBhbGxvd3MK ICAqIHJlLXVzZSBvZiBpbmZvcm1hdGlvbiBjYWNoZWQgaW4gUmVzdHJpY3RJbmZvcy4gIFdlIGFs c28gYXZvaWQgZ2VuZXJhdGluZwogICogY29tbXV0YXRpdmUgZHVwbGljYXRlcywgaS5lLiBpZiB0 aGUgYWxnb3JpdGhtIHNlbGVjdHMgImEueCA9IGIueSIgYnV0CiAgKiB3ZSBhbHJlYWR5IGhhdmUg ImIueSA9IGEueCIsIHdlIHJldHVybiB0aGUgZXhpc3RpbmcgY2xhdXNlLgpAQCAtMTc1NCw5ICsx ODExLDkgQEAgZ2VuZXJhdGVfam9pbl9pbXBsaWVkX2VxdWFsaXRpZXNfYnJva2VuKFBsYW5uZXJJ bmZvICpyb290LAogCS8qCiAJICogSWYgd2UgaGF2ZSB0byB0cmFuc2xhdGUsIGp1c3QgYnJ1dGUt Zm9yY2UgYXBwbHkgYWRqdXN0X2FwcGVuZHJlbF9hdHRycwogCSAqIHRvIGFsbCB0aGUgUmVzdHJp Y3RJbmZvcyBhdCBvbmNlLiAgVGhpcyB3aWxsIHJlc3VsdCBpbiByZXR1cm5pbmcKLQkgKiBSZXN0 cmljdEluZm9zIHRoYXQgYXJlIG5vdCBsaXN0ZWQgaW4gZWNfZGVyaXZlcywgYnV0IHRoZXJlIHNo b3VsZG4ndCBiZQotCSAqIGFueSBkdXBsaWNhdGlvbiwgYW5kIGl0J3MgYSBzdWZmaWNpZW50bHkg bmFycm93IGNvcm5lciBjYXNlIHRoYXQgd2UKLQkgKiBzaG91bGRuJ3Qgc3dlYXQgdG9vIG11Y2gg b3ZlciBpdCBhbnl3YXkuCisJICogUmVzdHJpY3RJbmZvcyB0aGF0IGFyZSBub3QgaW5jbHVkZWQg aW4gRUMncyBkZXJpdmVkIGNsYXVzZXMsIGJ1dCB0aGVyZQorCSAqIHNob3VsZG4ndCBiZSBhbnkg ZHVwbGljYXRpb24sIGFuZCBpdCdzIGEgc3VmZmljaWVudGx5IG5hcnJvdyBjb3JuZXIKKwkgKiBj YXNlIHRoYXQgd2Ugc2hvdWxkbid0IHN3ZWF0IHRvbyBtdWNoIG92ZXIgaXQgYW55d2F5LgogCSAq CiAJICogU2luY2UgaW5uZXJfcmVsIG1pZ2h0IGJlIGFuIGluZGlyZWN0IGRlc2NlbmRhbnQgb2Yg dGhlIGJhc2VyZWwKIAkgKiBtZW50aW9uZWQgaW4gdGhlIGVjX3NvdXJjZXMgY2xhdXNlcywgd2Ug aGF2ZSB0byBiZSBwcmVwYXJlZCB0byBhcHBseQpAQCAtMTgyMyw0MyArMTg4MCwxMSBAQCBjcmVh dGVfam9pbl9jbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsCiB7CiAJUmVzdHJpY3RJbmZvICpyaW5m bzsKIAlSZXN0cmljdEluZm8gKnBhcmVudF9yaW5mbyA9IE5VTEw7Ci0JTGlzdENlbGwgICAqbGM7 CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OwogCi0JLyoKLQkgKiBTZWFyY2ggdG8gc2VlIGlm IHdlIGFscmVhZHkgYnVpbHQgYSBSZXN0cmljdEluZm8gZm9yIHRoaXMgcGFpciBvZgotCSAqIEVx dWl2YWxlbmNlTWVtYmVycy4gIFdlIGNhbiB1c2UgZWl0aGVyIG9yaWdpbmFsIHNvdXJjZSBjbGF1 c2VzIG9yCi0JICogcHJldmlvdXNseS1kZXJpdmVkIGNsYXVzZXMsIGFuZCBhIGNvbW11dGF0b3Ig Y2xhdXNlIGlzIGFjY2VwdGFibGUuCi0JICoKLQkgKiBXZSB1c2VkIHRvIHZlcmlmeSB0aGF0IG9w bm8gbWF0Y2hlcywgYnV0IHRoYXQgc2VlbXMgcmVkdW5kYW50OiBldmVuIGlmCi0JICogaXQncyBu b3QgaWRlbnRpY2FsLCBpdCdkIGJldHRlciBoYXZlIHRoZSBzYW1lIGVmZmVjdHMsIG9yIHRoZSBv cGVyYXRvcgotCSAqIGZhbWlsaWVzIHdlJ3JlIHVzaW5nIGFyZSBicm9rZW4uCi0JICovCi0JZm9y ZWFjaChsYywgZWMtPmVjX3NvdXJjZXMpCi0JewotCQlyaW5mbyA9IChSZXN0cmljdEluZm8gKikg bGZpcnN0KGxjKTsKLQkJaWYgKHJpbmZvLT5sZWZ0X2VtID09IGxlZnRlbSAmJgotCQkJcmluZm8t PnJpZ2h0X2VtID09IHJpZ2h0ZW0gJiYKLQkJCXJpbmZvLT5wYXJlbnRfZWMgPT0gcGFyZW50X2Vj KQotCQkJcmV0dXJuIHJpbmZvOwotCQlpZiAocmluZm8tPmxlZnRfZW0gPT0gcmlnaHRlbSAmJgot CQkJcmluZm8tPnJpZ2h0X2VtID09IGxlZnRlbSAmJgotCQkJcmluZm8tPnBhcmVudF9lYyA9PSBw YXJlbnRfZWMpCi0JCQlyZXR1cm4gcmluZm87Ci0JfQotCi0JZm9yZWFjaChsYywgZWMtPmVjX2Rl cml2ZXMpCi0JewotCQlyaW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0KGxjKTsKLQkJaWYg KHJpbmZvLT5sZWZ0X2VtID09IGxlZnRlbSAmJgotCQkJcmluZm8tPnJpZ2h0X2VtID09IHJpZ2h0 ZW0gJiYKLQkJCXJpbmZvLT5wYXJlbnRfZWMgPT0gcGFyZW50X2VjKQotCQkJcmV0dXJuIHJpbmZv OwotCQlpZiAocmluZm8tPmxlZnRfZW0gPT0gcmlnaHRlbSAmJgotCQkJcmluZm8tPnJpZ2h0X2Vt ID09IGxlZnRlbSAmJgotCQkJcmluZm8tPnBhcmVudF9lYyA9PSBwYXJlbnRfZWMpCi0JCQlyZXR1 cm4gcmluZm87Ci0JfQorCXJpbmZvID0gZWNfc2VhcmNoX2NsYXVzZV9mb3JfZW1zKHJvb3QsIGVj LCBsZWZ0ZW0sIHJpZ2h0ZW0sIHBhcmVudF9lYyk7CisJaWYgKHJpbmZvKQorCQlyZXR1cm4gcmlu Zm87CiAKIAkvKgogCSAqIE5vdCB0aGVyZSwgc28gYnVpbGQgaXQsIGluIHBsYW5uZXIgY29udGV4 dCBzbyB3ZSBjYW4gcmUtdXNlIGl0LiAoTm90CkBAIC0xOTIzLDcgKzE5NDgsNyBAQCBjcmVhdGVf am9pbl9jbGF1c2UoUGxhbm5lckluZm8gKnJvb3QsCiAJcmluZm8tPmxlZnRfZW0gPSBsZWZ0ZW07 CiAJcmluZm8tPnJpZ2h0X2VtID0gcmlnaHRlbTsKIAkvKiBhbmQgc2F2ZSBpdCBmb3IgcG9zc2li bGUgcmUtdXNlICovCi0JZWMtPmVjX2Rlcml2ZXMgPSBsYXBwZW5kKGVjLT5lY19kZXJpdmVzLCBy aW5mbyk7CisJZWNfYWRkX2Rlcml2ZWRfY2xhdXNlKGVjLCByaW5mbyk7CiAKIAlNZW1vcnlDb250 ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CiAKQEAgLTI2NDgsMjggKzI2NzMsMTQgQEAgbWF0Y2hf ZWNsYXNzZXNfdG9fZm9yZWlnbl9rZXlfY29sKFBsYW5uZXJJbmZvICpyb290LAogICogUmV0dXJu cyBOVUxMIGlmIG5vIHN1Y2ggY2xhdXNlIGNhbiBiZSBmb3VuZC4KICAqLwogUmVzdHJpY3RJbmZv ICoKLWZpbmRfZGVyaXZlZF9jbGF1c2VfZm9yX2VjX21lbWJlcihFcXVpdmFsZW5jZUNsYXNzICpl YywKK2ZpbmRfZGVyaXZlZF9jbGF1c2VfZm9yX2VjX21lbWJlcihQbGFubmVySW5mbyAqcm9vdCwK KwkJCQkJCQkJICBFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJCQkJCQkJICBFcXVpdmFsZW5jZU1l bWJlciAqZW0pCiB7Ci0JTGlzdENlbGwgICAqbGM7Ci0KIAlBc3NlcnQoZWMtPmVjX2hhc19jb25z dCk7CiAJQXNzZXJ0KCFlbS0+ZW1faXNfY29uc3QpOwotCWZvcmVhY2gobGMsIGVjLT5lY19kZXJp dmVzKQotCXsKLQkJUmVzdHJpY3RJbmZvICpyaW5mbyA9IChSZXN0cmljdEluZm8gKikgbGZpcnN0 KGxjKTsKIAotCQkvKgotCQkgKiBnZW5lcmF0ZV9iYXNlX2ltcGxpZWRfZXF1YWxpdGllc19jb25z dCB3aWxsIGhhdmUgcHV0IG5vbi1jb25zdAotCQkgKiBtZW1iZXJzIG9uIHRoZSBsZWZ0IHNpZGUg b2YgZGVyaXZlZCBjbGF1c2VzLgotCQkgKi8KLQkJaWYgKHJpbmZvLT5sZWZ0X2VtID09IGVtKQot CQl7Ci0JCQlBc3NlcnQocmluZm8tPnJpZ2h0X2VtLT5lbV9pc19jb25zdCk7Ci0JCQlyZXR1cm4g cmluZm87Ci0JCX0KLQl9Ci0JcmV0dXJuIE5VTEw7CisJcmV0dXJuIGVjX3NlYXJjaF9kZXJpdmVk X2NsYXVzZV9mb3JfZW1zKHJvb3QsIGVjLCBlbSwgTlVMTCwgTlVMTCk7CiB9CiAKIApAQCAtMzQ0 MiwzICszNDUzLDI4NCBAQCBnZXRfY29tbW9uX2VjbGFzc19pbmRleGVzKFBsYW5uZXJJbmZvICpy b290LCBSZWxpZHMgcmVsaWRzMSwgUmVsaWRzIHJlbGlkczIpCiAJLyogQ2FsY3VsYXRlIGFuZCBy ZXR1cm4gdGhlIGNvbW1vbiBFQyBpbmRleGVzLCByZWN5Y2xpbmcgdGhlIGxlZnQgaW5wdXQuICov CiAJcmV0dXJuIGJtc19pbnRfbWVtYmVycyhyZWwxZWNzLCByZWwyZWNzKTsKIH0KKworLyoKKyAq IGVjX2J1aWxkX2Rlcml2ZXNfaGFzaAorICoJICBDb25zdHJ1Y3QgdGhlIGF1eGlsaWFyeSBoYXNo IHRhYmxlIGZvciBkZXJpdmVkIGNsYXVzZSBsb29rdXBzLgorICovCitzdGF0aWMgdm9pZAorZWNf YnVpbGRfZGVyaXZlc19oYXNoKFBsYW5uZXJJbmZvICpyb290LCBFcXVpdmFsZW5jZUNsYXNzICpl YykKK3sKKwlBc3NlcnQoIWVjLT5lY19kZXJpdmVzX2hhc2gpOworCisJLyoKKwkgKiBDcmVhdGUg dGhlIGhhc2ggdGFibGUuCisJICoKKwkgKiBXZSBwYXNzIGxpc3RfbGVuZ3RoKGVjLT5lY19kZXJp dmVzX2xpc3QpIGFzIHRoZSBpbml0aWFsIHNpemUuCisJICogU2ltcGxlaGFzaCB3aWxsIGRpdmlk ZSB0aGlzIGJ5IHRoZSBmaWxsZmFjdG9yICh0eXBpY2FsbHkgMC45KSBhbmQgcm91bmQKKwkgKiB1 cCB0byB0aGUgbmV4dCBwb3dlciBvZiB0d28sIHNvIHRoaXMgd2lsbCB1c3VhbGx5IGdpdmUgdXMg YXQgbGVhc3QgNjQKKwkgKiBidWNrZXRzIGFyb3VuZCB0aGUgdGhyZXNob2xkLiBUaGF0IGF2b2lk cyBpbW1lZGlhdGUgcmVzaXppbmcgd2l0aG91dAorCSAqIGhhcmRjb2RpbmcgYSBzcGVjaWZpYyBz aXplLgorCSAqLworCWVjLT5lY19kZXJpdmVzX2hhc2ggPSBkZXJpdmVzX2NyZWF0ZShyb290LT5w bGFubmVyX2N4dCwKKwkJCQkJCQkJCQkgbGlzdF9sZW5ndGgoZWMtPmVjX2Rlcml2ZXNfbGlzdCks CisJCQkJCQkJCQkJIE5VTEwpOworCisJZm9yZWFjaF9ub2RlKFJlc3RyaWN0SW5mbywgcmluZm8s IGVjLT5lY19kZXJpdmVzX2xpc3QpCisJCWVjX2FkZF9jbGF1c2VfdG9fZGVyaXZlc19oYXNoKGVj LCByaW5mbyk7Cit9CisKKy8qCisgKiBlY19hZGRfZGVyaXZlZF9jbGF1c2UKKyAqCQlBZGQgYSBj bGF1c2UgdG8gdGhlIHNldCBvZiBkZXJpdmVkIGNsYXVzZXMgZm9yIHRoZSBnaXZlbgorICoJCUVx dWl2YWxlbmNlQ2xhc3MuIEFsd2F5cyBhcHBlbmRzIHRvIGVjX2Rlcml2ZXNfbGlzdDsgYWxzbyBh ZGRzCisgKgkJdG8gZWNfZGVyaXZlc19oYXNoIGlmIGl0IGV4aXN0cy4KKyAqCisgKiBBbHNvIGFz c2VydHMgZXhwZWN0ZWQgaW52YXJpYW50cyBvZiBkZXJpdmVkIGNsYXVzZXMuCisgKi8KK3N0YXRp YyB2b2lkCitlY19hZGRfZGVyaXZlZF9jbGF1c2UoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIFJlc3Ry aWN0SW5mbyAqY2xhdXNlKQoreworCS8qCisJICogQ29uc3RhbnQsIGlmIHByZXNlbnQsIGlzIGFs d2F5cyBwbGFjZWQgb24gdGhlIFJIUzsgc2VlCisJICogZ2VuZXJhdGVfYmFzZV9pbXBsaWVkX2Vx dWFsaXRpZXNfY29uc3QoKS4gTEhTIGlzIG5ldmVyIGEgY29uc3RhbnQuCisJICovCisJQXNzZXJ0 KCFjbGF1c2UtPmxlZnRfZW0tPmVtX2lzX2NvbnN0KTsKKworCS8qCisJICogQ2xhdXNlcyBjb250 YWluaW5nIGEgY29uc3RhbnQgYXJlIG5ldmVyIGNvbnNpZGVyZWQgcmVkdW5kYW50LCBzbworCSAq IHBhcmVudF9lYyBpcyBub3Qgc2V0LgorCSAqLworCUFzc2VydCghY2xhdXNlLT5wYXJlbnRfZWMg fHwgIWNsYXVzZS0+cmlnaHRfZW0tPmVtX2lzX2NvbnN0KTsKKworCWVjLT5lY19kZXJpdmVzX2xp c3QgPSBsYXBwZW5kKGVjLT5lY19kZXJpdmVzX2xpc3QsIGNsYXVzZSk7CisJaWYgKGVjLT5lY19k ZXJpdmVzX2hhc2gpCisJCWVjX2FkZF9jbGF1c2VfdG9fZGVyaXZlc19oYXNoKGVjLCBjbGF1c2Up OworfQorCisvKgorICogZWNfYWRkX2Rlcml2ZWRfY2xhdXNlcworICoJCUFkZCBhIGxpc3Qgb2Yg Y2xhdXNlcyB0byB0aGUgc2V0IG9mIGNsYXVzZXMgZGVyaXZlZCBmcm9tIHRoZSBnaXZlbgorICoJ CUVxdWl2YWxlbmNlQ2xhc3M7IGFkZGluZyB0byB0aGUgbGlzdCBhbmQgaGFzaCB0YWJsZSBpZiBu ZWVkZWQuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIGVjX2FkZF9kZXJpdmVk X2NsYXVzZSgpIGJ1dCBvcHRpbWl6ZWQgZm9yIGFkZGluZworICogbXVsdGlwbGUgY2xhdXNlcyBh dCBhIHRpbWUgdG8gdGhlIGVjX2Rlcml2ZXNfbGlzdC4gIFRoZSBhc3NlcnRpb25zIGZyb20KKyAq IGVjX2FkZF9kZXJpdmVkX2NsYXVzZSgpIGFyZSBub3QgcmVwZWF0ZWQgaGVyZSwgYXMgdGhlIGlu cHV0IGNsYXVzZXMgYXJlCisgKiBhc3N1bWVkIHRvIGhhdmUgYWxyZWFkeSBiZWVuIHZhbGlkYXRl ZC4KKyAqLworc3RhdGljIHZvaWQKK2VjX2FkZF9kZXJpdmVkX2NsYXVzZXMoRXF1aXZhbGVuY2VD bGFzcyAqZWMsIExpc3QgKmNsYXVzZXMpCit7CisJZWMtPmVjX2Rlcml2ZXNfbGlzdCA9IGxpc3Rf Y29uY2F0KGVjLT5lY19kZXJpdmVzX2xpc3QsIGNsYXVzZXMpOworCWlmIChlYy0+ZWNfZGVyaXZl c19oYXNoKQorCQlmb3JlYWNoX25vZGUoUmVzdHJpY3RJbmZvLCByaW5mbywgY2xhdXNlcykKKwkJ CWVjX2FkZF9jbGF1c2VfdG9fZGVyaXZlc19oYXNoKGVjLCByaW5mbyk7Cit9CisKKy8qCisgKiBm aWxsX2VjX2Rlcml2ZXNfa2V5CisgKgkJQ29tcHV0ZSBhIGNhbm9uaWNhbCBrZXkgZm9yIGVjX2Rl cml2ZXNfaGFzaCBsb29rdXAgb3IgaW5zZXJ0aW9uLgorICoKKyAqIERlcml2ZWQgY2xhdXNlcyBh cmUgbG9va2VkIHVwIHVzaW5nIGEgcGFpciBvZiBFcXVpdmFsZW5jZU1lbWJlcnMgYW5kIGEKKyAq IHBhcmVudCBFcXVpdmFsZW5jZUNsYXNzLiBUbyBhdm9pZCBzdG9yaW5nIG9yIHNlYXJjaGluZyBm b3IgYm90aCBFTSBvcmRlcmluZ3MsCisgKiB3ZSBjYW5vbmljYWxpemUgdGhlIGtleToKKyAqCisg KiAtIEZvciBjbGF1c2VzIGludm9sdmluZyB0d28gbm9uLWNvbnN0YW50IEVNcywgZW0xIGlzIHNl dCB0byB0aGUgRU0gd2l0aCBsb3dlcgorICogICBtZW1vcnkgYWRkcmVzcyBhbmQgZW0yIGlzIHNl dCB0byB0aGUgb3RoZXIgb25lLgorICogLSBGb3IgY2xhdXNlcyBpbnZvbHZpbmcgYSBjb25zdGFu dCBFTSwgdGhlIGNhbGxlciBtdXN0IHBhc3MgdGhlIG5vbi1jb25zdGFudAorICogICBFTSBhcyBs ZWZ0ZW0gYW5kIE5VTEwgYXMgcmlnaHRlbTsgd2UgdGhlbiBzZXQgZW0xID0gTlVMTCBhbmQgZW0y ID0gbGVmdGVtLgorICovCitzdGF0aWMgaW5saW5lIHZvaWQKK2ZpbGxfZWNfZGVyaXZlc19rZXko RUNEZXJpdmVzS2V5ICprZXksCisJCQkJCUVxdWl2YWxlbmNlTWVtYmVyICpsZWZ0ZW0sCisJCQkJ CUVxdWl2YWxlbmNlTWVtYmVyICpyaWdodGVtLAorCQkJCQlFcXVpdmFsZW5jZUNsYXNzICpwYXJl bnRfZWMpCit7CisJQXNzZXJ0KGxlZnRlbSk7CQkJCS8qIEFsd2F5cyByZXF1aXJlZCBmb3IgbG9v a3VwIG9yIGluc2VydGlvbiAqLworCisJaWYgKHJpZ2h0ZW0gPT0gTlVMTCkKKwl7CisJCWtleS0+ ZW0xID0gTlVMTDsKKwkJa2V5LT5lbTIgPSBsZWZ0ZW07CisJfQorCWVsc2UgaWYgKGxlZnRlbSA8 IHJpZ2h0ZW0pCisJeworCQlrZXktPmVtMSA9IGxlZnRlbTsKKwkJa2V5LT5lbTIgPSByaWdodGVt OworCX0KKwllbHNlCisJeworCQlrZXktPmVtMSA9IHJpZ2h0ZW07CisJCWtleS0+ZW0yID0gbGVm dGVtOworCX0KKwlrZXktPnBhcmVudF9lYyA9IHBhcmVudF9lYzsKK30KKworLyoKKyAqIGVjX2Fk ZF9jbGF1c2VfdG9fZGVyaXZlc19oYXNoCisgKgkJQWRkIGEgZGVyaXZlZCBjbGF1c2UgdG8gZWNf ZGVyaXZlc19oYXNoIGluIHRoZSBnaXZlbiBFcXVpdmFsZW5jZUNsYXNzLgorICoKKyAqIEVhY2gg Y2xhdXNlIGlzIGFzc29jaWF0ZWQgd2l0aCBhIGNhbm9uaWNhbGl6ZWQga2V5LiBGb3IgY29uc3Rh bnQtY29udGFpbmluZworICogY2xhdXNlcywgb25seSB0aGUgbm9uLWNvbnN0YW50IEVNIGlzIHVz ZWQgZm9yIGxvb2t1cDsgc2VlIGNvbW1lbnRzIGluCisgKiBmaWxsX2VjX2Rlcml2ZXNfa2V5KCku CisgKi8KK3N0YXRpYyB2b2lkCitlY19hZGRfY2xhdXNlX3RvX2Rlcml2ZXNfaGFzaChFcXVpdmFs ZW5jZUNsYXNzICplYywgUmVzdHJpY3RJbmZvICpyaW5mbykKK3sKKwlFQ0Rlcml2ZXNLZXkga2V5 OworCUVDRGVyaXZlc0VudHJ5ICplbnRyeTsKKwlib29sCQlmb3VuZDsKKworCS8qCisJICogQ29u c3RhbnRzIGFyZSBhbHdheXMgcGxhY2VkIG9uIHRoZSBSSFM7IHNlZQorCSAqIGdlbmVyYXRlX2Jh c2VfaW1wbGllZF9lcXVhbGl0aWVzX2NvbnN0KCkuCisJICovCisJQXNzZXJ0KCFyaW5mby0+bGVm dF9lbS0+ZW1faXNfY29uc3QpOworCisJLyoKKwkgKiBDbGF1c2VzIGNvbnRhaW5pbmcgYSBjb25z dGFudCBhcmUgbmV2ZXIgY29uc2lkZXJlZCByZWR1bmRhbnQsIHNvCisJICogcGFyZW50X2VjIGlz IG5vdCBzZXQuCisJICovCisJQXNzZXJ0KCFyaW5mby0+cGFyZW50X2VjIHx8ICFyaW5mby0+cmln aHRfZW0tPmVtX2lzX2NvbnN0KTsKKworCS8qCisJICogU2VlIGZpbGxfZWNfZGVyaXZlc19rZXko KSBmb3IgZGV0YWlsczogd2UgdXNlIGEgY2Fub25pY2FsaXplZCBrZXkgdG8KKwkgKiBhdm9pZCBz dG9yaW5nIGJvdGggRU0gb3JkZXJpbmdzLiBGb3IgY29uc3RhbnQgRU1zLCBvbmx5IHRoZQorCSAq IG5vbi1jb25zdGFudCBFTSBpcyBpbmNsdWRlZCBpbiB0aGUga2V5LgorCSAqLworCWZpbGxfZWNf ZGVyaXZlc19rZXkoJmtleSwKKwkJCQkJCXJpbmZvLT5sZWZ0X2VtLAorCQkJCQkJcmluZm8tPnJp Z2h0X2VtLT5lbV9pc19jb25zdCA/IE5VTEwgOiByaW5mby0+cmlnaHRfZW0sCisJCQkJCQlyaW5m by0+cGFyZW50X2VjKTsKKwllbnRyeSA9IGRlcml2ZXNfaW5zZXJ0KGVjLT5lY19kZXJpdmVzX2hh c2gsIGtleSwgJmZvdW5kKTsKKwlBc3NlcnQoIWZvdW5kKTsKKwllbnRyeS0+cmluZm8gPSByaW5m bzsKK30KKworLyoKKyAqIGVjX2NsZWFyX2Rlcml2ZWRfY2xhdXNlcworICogICAgICBSZXNldCBl Y19kZXJpdmVzX2xpc3QgYW5kIGVjX2Rlcml2ZXNfaGFzaC4KKyAqCisgKiBXZSBkZXN0cm95IHRo ZSBoYXNoIHRhYmxlIGV4cGxpY2l0bHksIHNpbmNlIGl0IG1heSBjb25zdW1lIHNpZ25pZmljYW50 CisgKiBzcGFjZS4gVGhlIGxpc3QgaG9sZHMgdGhlIHNhbWUgc2V0IG9mIGVudHJpZXMgYW5kIGNh biBiZWNvbWUgZXF1YWxseSBsYXJnZQorICogd2hlbiB0aG91c2FuZHMgb2YgcGFydGl0aW9ucyBh cmUgaW52b2x2ZWQsIHNvIHdlIGZyZWUgaXQgYXMgd2VsbCAtLSBldmVuCisgKiB0aG91Z2ggd2Ug ZG8gbm90IHR5cGljYWxseSBmcmVlIGxpc3RzLgorICovCit2b2lkCitlY19jbGVhcl9kZXJpdmVk X2NsYXVzZXMoRXF1aXZhbGVuY2VDbGFzcyAqZWMpCit7CisJbGlzdF9mcmVlKGVjLT5lY19kZXJp dmVzX2xpc3QpOworCWVjLT5lY19kZXJpdmVzX2xpc3QgPSBOSUw7CisKKwlpZiAoZWMtPmVjX2Rl cml2ZXNfaGFzaCkKKwl7CisJCWRlcml2ZXNfZGVzdHJveShlYy0+ZWNfZGVyaXZlc19oYXNoKTsK KwkJZWMtPmVjX2Rlcml2ZXNfaGFzaCA9IE5VTEw7CisJfQorfQorCisvKgorICogZWNfc2VhcmNo X2NsYXVzZV9mb3JfZW1zCisgKgkJU2VhcmNoIGZvciBhbiBleGlzdGluZyBSZXN0cmljdEluZm8g dGhhdCBlcXVhdGVzIHRoZSBnaXZlbiBwYWlyCisgKgkJb2YgRXF1aXZhbGVuY2VNZW1iZXJzLCBl aXRoZXIgZnJvbSBlY19zb3VyY2VzIG9yIGVjX2Rlcml2ZXMuCisgKgorICogV2UgYWNjZXB0IGNs YXVzZXMgaW4gZWl0aGVyIG9wZXJhbmQgb3JkZXIsIHNvIGNvbW11dGF0b3JzIGFyZSBtYXRjaGVk LiBXZQorICogdXNlZCB0byByZXF1aXJlIG1hdGNoaW5nIG9wZXJhdG9yIE9JRHMsIGJ1dCBkcm9w cGVkIHRoYXQgc2luY2UgYW55CisgKiBzZW1hbnRpY2FsbHkgZGlmZmVyZW50IG9wZXJhdG9yIGhl cmUgd291bGQgaW5kaWNhdGUgYSBicm9rZW4gb3BlcmF0b3IKKyAqIGZhbWlseS4KKyAqCisgKiBS ZXR1cm5zIE5VTEwgaWYgbm8gbWF0Y2hpbmcgY2xhdXNlIGlzIGZvdW5kLgorICovCisKK3N0YXRp YyBSZXN0cmljdEluZm8gKgorZWNfc2VhcmNoX2NsYXVzZV9mb3JfZW1zKFBsYW5uZXJJbmZvICpy b290LCBFcXVpdmFsZW5jZUNsYXNzICplYywKKwkJCQkJCSBFcXVpdmFsZW5jZU1lbWJlciAqbGVm dGVtLCBFcXVpdmFsZW5jZU1lbWJlciAqcmlnaHRlbSwKKwkJCQkJCSBFcXVpdmFsZW5jZUNsYXNz ICpwYXJlbnRfZWMpCit7CisJLyogQ2hlY2sgb3JpZ2luYWwgc291cmNlIGNsYXVzZXMgKi8KKwlm b3JlYWNoX25vZGUoUmVzdHJpY3RJbmZvLCByaW5mbywgZWMtPmVjX3NvdXJjZXMpCisJeworCQlp ZiAocmluZm8tPmxlZnRfZW0gPT0gbGVmdGVtICYmCisJCQlyaW5mby0+cmlnaHRfZW0gPT0gcmln aHRlbSAmJgorCQkJcmluZm8tPnBhcmVudF9lYyA9PSBwYXJlbnRfZWMpCisJCQlyZXR1cm4gcmlu Zm87CisJCWlmIChyaW5mby0+bGVmdF9lbSA9PSByaWdodGVtICYmCisJCQlyaW5mby0+cmlnaHRf ZW0gPT0gbGVmdGVtICYmCisJCQlyaW5mby0+cGFyZW50X2VjID09IHBhcmVudF9lYykKKwkJCXJl dHVybiByaW5mbzsKKwl9CisKKwkvKiBOb3QgZm91bmQgaW4gZWNfc291cmNlczsgc2VhcmNoIGRl cml2ZWQgY2xhdXNlcyAqLworCXJldHVybiBlY19zZWFyY2hfZGVyaXZlZF9jbGF1c2VfZm9yX2Vt cyhyb290LCBlYywgbGVmdGVtLCByaWdodGVtLAorCQkJCQkJCQkJCQlwYXJlbnRfZWMpOworfQor CisvKgorICogZWNfc2VhcmNoX2Rlcml2ZWRfY2xhdXNlX2Zvcl9lbXMKKyAqCQlTZWFyY2ggZm9y IGFuIGV4aXN0aW5nIGRlcml2ZWQgY2xhdXNlIGJldHdlZW4gdHdvIEVxdWl2YWxlbmNlTWVtYmVy cy4KKyAqCisgKiBJZiB0aGUgbnVtYmVyIG9mIGRlcml2ZWQgY2xhdXNlcyBleGNlZWRzIGEgdGhy ZXNob2xkLCBzd2l0Y2ggdG8gaGFzaCB0YWJsZQorICogbG9va3VwOyBvdGhlcndpc2UsIHNjYW4g ZWNfZGVyaXZlc19saXN0IGxpbmVhcmx5LgorICoKKyAqIENsYXVzZXMgaW52b2x2aW5nIGNvbnN0 YW50cyBhcmUgbG9va2VkIHVwIGJ5IHBhc3NpbmcgdGhlIG5vbi1jb25zdGFudCBFTQorICogYXMg bGVmdGVtIGFuZCBzZXR0aW5nIHJpZ2h0ZW0gdG8gTlVMTC4gSW4gdGhhdCBjYXNlLCB3ZSBleHBl Y3QgdG8gZmluZCBhCisgKiBjbGF1c2Ugd2l0aCBhIGNvbnN0YW50IG9uIHRoZSBSSFMuCisgKgor ICogV2hpbGUgc2VhcmNoaW5nIHRoZSBsaXN0LCB3ZSBjb21wYXJlIGVhY2ggZ2l2ZW4gRU0gd2l0 aCBib3RoIHNpZGVzIG9mIGVhY2gKKyAqIGNsYXVzZS4gQnV0IGZvciBoYXNoIHRhYmxlIGxvb2t1 cHMsIHdlIGNvbnN0cnVjdCBhIGNhbm9uaWNhbGl6ZWQga2V5IGFuZAorICogcGVyZm9ybSBhIHNp bmdsZSBsb29rdXAuCisgKi8KK3N0YXRpYyBSZXN0cmljdEluZm8gKgorZWNfc2VhcmNoX2Rlcml2 ZWRfY2xhdXNlX2Zvcl9lbXMoUGxhbm5lckluZm8gKnJvb3QsIEVxdWl2YWxlbmNlQ2xhc3MgKmVj LAorCQkJCQkJCQkgRXF1aXZhbGVuY2VNZW1iZXIgKmxlZnRlbSwKKwkJCQkJCQkJIEVxdWl2YWxl bmNlTWVtYmVyICpyaWdodGVtLAorCQkJCQkJCQkgRXF1aXZhbGVuY2VDbGFzcyAqcGFyZW50X2Vj KQoreworCS8qIFN3aXRjaCB0byB1c2luZyBoYXNoIGxvb2t1cCB3aGVuIGxpc3QgZ3Jvd3MgInRv byBsb25nIi4gKi8KKwlpZiAoIWVjLT5lY19kZXJpdmVzX2hhc2ggJiYKKwkJbGlzdF9sZW5ndGgo ZWMtPmVjX2Rlcml2ZXNfbGlzdCkgPj0gRUNfREVSSVZFU19IQVNIX1RIUkVTSE9MRCkKKwkJZWNf YnVpbGRfZGVyaXZlc19oYXNoKHJvb3QsIGVjKTsKKworCS8qIFBlcmZvcm0gaGFzaCB0YWJsZSBs b29rdXAgaWYgYXZhaWxhYmxlICovCisJaWYgKGVjLT5lY19kZXJpdmVzX2hhc2gpCisJeworCQlF Q0Rlcml2ZXNLZXkga2V5OworCQlSZXN0cmljdEluZm8gKnJpbmZvOworCQlFQ0Rlcml2ZXNFbnRy eSAqZW50cnk7CisKKwkJZmlsbF9lY19kZXJpdmVzX2tleSgma2V5LCBsZWZ0ZW0sIHJpZ2h0ZW0s IHBhcmVudF9lYyk7CisJCWVudHJ5ID0gZGVyaXZlc19sb29rdXAoZWMtPmVjX2Rlcml2ZXNfaGFz aCwga2V5KTsKKwkJaWYgKGVudHJ5KQorCQl7CisJCQlyaW5mbyA9IGVudHJ5LT5yaW5mbzsKKwkJ CUFzc2VydChyaW5mbyk7CisJCQlBc3NlcnQocmlnaHRlbSB8fCByaW5mby0+cmlnaHRfZW0tPmVt X2lzX2NvbnN0KTsKKwkJCXJldHVybiByaW5mbzsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBG YWxsYmFjayB0byBsaW5lYXIgc2VhcmNoIG92ZXIgZWNfZGVyaXZlc19saXN0ICovCisJCWZvcmVh Y2hfbm9kZShSZXN0cmljdEluZm8sIHJpbmZvLCBlYy0+ZWNfZGVyaXZlc19saXN0KQorCQl7CisJ CQkvKiBIYW5kbGUgc3BlY2lhbCBjYXNlOiBsb29rdXAgYnkgbm9uLWNvbnN0IEVNIGFsb25lICov CisJCQlpZiAoIXJpZ2h0ZW0gJiYKKwkJCQlyaW5mby0+bGVmdF9lbSA9PSBsZWZ0ZW0pCisJCQl7 CisJCQkJLyogU2VlIHRoZSBjb21tZW50IGFib3ZlIGluIGhhc2ggcGF0aCBmb3IgcmF0aW9uYWxl LiAqLworCQkJCUFzc2VydChyaW5mby0+cmlnaHRfZW0tPmVtX2lzX2NvbnN0KTsKKwkJCQlyZXR1 cm4gcmluZm87CisJCQl9CisJCQlpZiAocmluZm8tPmxlZnRfZW0gPT0gbGVmdGVtICYmCisJCQkJ cmluZm8tPnJpZ2h0X2VtID09IHJpZ2h0ZW0gJiYKKwkJCQlyaW5mby0+cGFyZW50X2VjID09IHBh cmVudF9lYykKKwkJCQlyZXR1cm4gcmluZm87CisJCQlpZiAocmluZm8tPmxlZnRfZW0gPT0gcmln aHRlbSAmJgorCQkJCXJpbmZvLT5yaWdodF9lbSA9PSBsZWZ0ZW0gJiYKKwkJCQlyaW5mby0+cGFy ZW50X2VjID09IHBhcmVudF9lYykKKwkJCQlyZXR1cm4gcmluZm87CisJCX0KKwl9CisKKwlyZXR1 cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5 emVqb2lucy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vYW5hbHl6ZWpvaW5zLmMKaW5k ZXggOGE4ZDRhMmFmMzMuLmFlMjA2OTFjYTkxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9hbmFseXplam9pbnMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9hbmFseXplam9pbnMuYwpAQCAtNzQ5LDcgKzc0OSw3IEBAIHJlbW92ZV9yZWxfZnJvbV9lY2xh c3MoRXF1aXZhbGVuY2VDbGFzcyAqZWMsIFNwZWNpYWxKb2luSW5mbyAqc2ppbmZvLAogCSAqIGRy b3AgdGhlbS4gIChBdCB0aGlzIHBvaW50LCBhbnkgc3VjaCBjbGF1c2VzIHdvdWxkIGJlIGJhc2Ug cmVzdHJpY3Rpb24KIAkgKiBjbGF1c2VzLCB3aGljaCB3ZSdkIG5vdCBuZWVkIGFueW1vcmUgYW55 d2F5LikKIAkgKi8KLQllYy0+ZWNfZGVyaXZlcyA9IE5JTDsKKwllY19jbGVhcl9kZXJpdmVkX2Ns YXVzZXMoZWMpOwogfQogCiAvKgpAQCAtMTU0NCw4ICsxNTQ0LDcgQEAgdXBkYXRlX2VjbGFzc2Vz KEVxdWl2YWxlbmNlQ2xhc3MgKmVjLCBpbnQgZnJvbSwgaW50IHRvKQogCWxpc3RfZnJlZShlYy0+ ZWNfbWVtYmVycyk7CiAJZWMtPmVjX21lbWJlcnMgPSBuZXdfbWVtYmVyczsKIAotCWxpc3RfZnJl ZShlYy0+ZWNfZGVyaXZlcyk7Ci0JZWMtPmVjX2Rlcml2ZXMgPSBOVUxMOworCWVjX2NsZWFyX2Rl cml2ZWRfY2xhdXNlcyhlYyk7CiAKIAkvKiBVcGRhdGUgRUMgc291cmNlIGV4cHJlc3Npb25zICov CiAJZm9yZWFjaF9ub2RlKFJlc3RyaWN0SW5mbywgcmluZm8sIGVjLT5lY19zb3VyY2VzKQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rl cy9wYXRobm9kZXMuaAppbmRleCBjMjRhMWZjODUxNC4uZTI5ZDI2YTE4MTQgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3Bh dGhub2Rlcy5oCkBAIC0xNDAzLDYgKzE0MDMsMTggQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pbkRvbWFp bgogICogZW50cnk6IGNvbnNpZGVyIFNFTEVDVCByYW5kb20oKSBBUyBhLCByYW5kb20oKSBBUyBi IC4uLiBPUkRFUiBCWSBiLGEuCiAgKiBTbyB3ZSByZWNvcmQgdGhlIFNvcnRHcm91cFJlZiBvZiB0 aGUgb3JpZ2luYXRpbmcgc29ydCBjbGF1c2UuCiAgKgorICogRGVyaXZlZCBlcXVhbGl0eSBjbGF1 c2VzIGFyZSBzdG9yZWQgaW4gZWNfZGVyaXZlc19saXN0LiBGb3Igc21hbGwgcXVlcmllcywKKyAq IHRoaXMgbGlzdCBpcyBzY2FubmVkIGRpcmVjdGx5IGR1cmluZyBsb29rdXAuIEZvciBsYXJnZXIg cXVlcmllcyAtLSBlLmcuLAorICogd2l0aCBtYW55IHBhcnRpdGlvbnMgb3Igam9pbnMgLS0gYSBo YXNoIHRhYmxlIChlY19kZXJpdmVzX2hhc2gpIGlzIGJ1aWx0CisgKiB3aGVuIHRoZSBsaXN0IGdy b3dzIGJleW9uZCBhIHRocmVzaG9sZCwgZm9yIGZhc3RlciBsb29rdXAuIFdoZW4gcHJlc2VudCwK KyAqIHRoZSBoYXNoIHRhYmxlIGNvbnRhaW5zIHRoZSBzYW1lIFJlc3RyaWN0SW5mb3MgYW5kIGlz IG1haW50YWluZWQgYWxvbmdzaWRlCisgKiB0aGUgbGlzdC4gV2UgcmV0YWluIHRoZSBsaXN0IGV2 ZW4gd2hlbiB0aGUgaGFzaCBpcyB1c2VkIHRvIHNpbXBsaWZ5CisgKiBzZXJpYWxpemF0aW9uIChl LmcuLCBpbiBfb3V0RXF1aXZhbGVuY2VDbGFzcygpKSBhbmQgc3VwcG9ydAorICogRXF1aXZhbGVu Y2VDbGFzcyBtZXJnaW5nLgorICoKKyAqIEluIGNvbnRyYXN0LCBlY19zb3VyY2VzIGhvbGRzIGVx dWFsaXR5IGNsYXVzZXMgdGhhdCBhcHBlYXIgZGlyZWN0bHkgaW4gdGhlCisgKiBxdWVyeS4gVGhl c2UgYXJlIHR5cGljYWxseSBmZXcgYW5kIGRvIG5vdCByZXF1aXJlIGEgaGFzaCB0YWJsZSBmb3Ig bG9va3VwLgorICoKICAqIE5COiBpZiBlY19tZXJnZWQgaXNuJ3QgTlVMTCwgdGhpcyBjbGFzcyBo YXMgYmVlbiBtZXJnZWQgaW50byBhbm90aGVyLCBhbmQKICAqIHNob3VsZCBiZSBpZ25vcmVkIGlu IGZhdm9yIG9mIHVzaW5nIHRoZSBwb2ludGVkLXRvIGNsYXNzLgogICoKQEAgLTE0MjIsNyArMTQz NCwxMCBAQCB0eXBlZGVmIHN0cnVjdCBFcXVpdmFsZW5jZUNsYXNzCiAJT2lkCQkJZWNfY29sbGF0 aW9uOwkvKiBjb2xsYXRpb24sIGlmIGRhdGF0eXBlcyBhcmUgY29sbGF0YWJsZSAqLwogCUxpc3QJ ICAgKmVjX21lbWJlcnM7CQkvKiBsaXN0IG9mIEVxdWl2YWxlbmNlTWVtYmVycyAqLwogCUxpc3QJ ICAgKmVjX3NvdXJjZXM7CQkvKiBsaXN0IG9mIGdlbmVyYXRpbmcgUmVzdHJpY3RJbmZvcyAqLwot CUxpc3QJICAgKmVjX2Rlcml2ZXM7CQkvKiBsaXN0IG9mIGRlcml2ZWQgUmVzdHJpY3RJbmZvcyAq LworCUxpc3QJICAgKmVjX2Rlcml2ZXNfbGlzdDsJLyogbGlzdCBvZiBkZXJpdmVkIFJlc3RyaWN0 SW5mb3MgKi8KKwlzdHJ1Y3QgZGVyaXZlc19oYXNoICplY19kZXJpdmVzX2hhc2g7CS8qIG9wdGlv bmFsIGhhc2ggdGFibGUgZm9yIGZhc3QKKwkJCQkJCQkJCQkJICogbG9va3VwOyBjb250YWlucyBz YW1lCisJCQkJCQkJCQkJCSAqIFJlc3RyaWN0SW5mb3MgYXMgbGlzdCAqLwogCVJlbGlkcwkJZWNf cmVsaWRzOwkJLyogYWxsIHJlbGlkcyBhcHBlYXJpbmcgaW4gZWNfbWVtYmVycywgZXhjZXB0CiAJ CQkJCQkJCSAqIGZvciBjaGlsZCBtZW1iZXJzIChzZWUgYmVsb3cpICovCiAJYm9vbAkJZWNfaGFz X2NvbnN0OwkvKiBhbnkgcHNldWRvY29uc3RhbnRzIGluIGVjX21lbWJlcnM/ICovCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcGF0aHMuaCBiL3NyYy9pbmNsdWRlL29wdGltaXpl ci9wYXRocy5oCmluZGV4IGJjNWRmZDdkYjQxLi4xNmRjNGQ1ZWU4MiAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvb3B0aW1pemVyL3BhdGhzLmgKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Bh dGhzLmgKQEAgLTE2Nyw3ICsxNjcsOCBAQCBleHRlcm4gYm9vbCBleHByc19rbm93bl9lcXVhbChQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqaXRlbTEsIE5vZGUgKml0ZW0yLAogZXh0ZXJuIEVxdWl2 YWxlbmNlQ2xhc3MgKm1hdGNoX2VjbGFzc2VzX3RvX2ZvcmVpZ25fa2V5X2NvbChQbGFubmVySW5m byAqcm9vdCwKIAkJCQkJCQkJCQkJCQkJICAgRm9yZWlnbktleU9wdEluZm8gKmZraW5mbywKIAkJ CQkJCQkJCQkJCQkJICAgaW50IGNvbG5vKTsKLWV4dGVybiBSZXN0cmljdEluZm8gKmZpbmRfZGVy aXZlZF9jbGF1c2VfZm9yX2VjX21lbWJlcihFcXVpdmFsZW5jZUNsYXNzICplYywKK2V4dGVybiBS ZXN0cmljdEluZm8gKmZpbmRfZGVyaXZlZF9jbGF1c2VfZm9yX2VjX21lbWJlcihQbGFubmVySW5m byAqcm9vdCwKKwkJCQkJCQkJCQkJCQkgICBFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJCQkJCQkJ CQkJCQkgICBFcXVpdmFsZW5jZU1lbWJlciAqZW0pOwogZXh0ZXJuIHZvaWQgYWRkX2NoaWxkX3Jl bF9lcXVpdmFsZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkgICBBcHBlbmRSZWxJ bmZvICphcHBpbmZvLApAQCAtMTk3LDYgKzE5OCw3IEBAIGV4dGVybiBib29sIGVjbGFzc191c2Vm dWxfZm9yX21lcmdpbmcoUGxhbm5lckluZm8gKnJvb3QsCiBleHRlcm4gYm9vbCBpc19yZWR1bmRh bnRfZGVyaXZlZF9jbGF1c2UoUmVzdHJpY3RJbmZvICpyaW5mbywgTGlzdCAqY2xhdXNlbGlzdCk7 CiBleHRlcm4gYm9vbCBpc19yZWR1bmRhbnRfd2l0aF9pbmRleGNsYXVzZXMoUmVzdHJpY3RJbmZv ICpyaW5mbywKIAkJCQkJCQkJCQkgICBMaXN0ICppbmRleGNsYXVzZXMpOworZXh0ZXJuIHZvaWQg ZWNfY2xlYXJfZGVyaXZlZF9jbGF1c2VzKEVxdWl2YWxlbmNlQ2xhc3MgKmVjKTsKIAogLyoKICAq IHBhdGhrZXlzLmMKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNDQ5YmFmYzEyM2MuLmQw ZWQ4OTViZWEyIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAor KysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNjY4LDYgKzY2OCw4IEBA IER1bXBhYmxlT2JqZWN0V2l0aEFjbAogRHluYW1pY0ZpbGVMaXN0CiBEeW5hbWljWm9uZUFiYnJl dgogRUNfS0VZCitFQ0Rlcml2ZXNLZXkKK0VDRGVyaXZlc0VudHJ5CiBFREdFCiBFTkdJTkUKIEVP TV9mbGF0dGVuX2ludG9fbWV0aG9kCi0tIAoyLjM0LjEKCg== --0000000000002ab8750631cb1fe3 Content-Type: text/x-patch; charset="US-ASCII"; name="0003-Minor-edits-20250402.patch" Content-Disposition: attachment; filename="0003-Minor-edits-20250402.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m8zxdhsy2 RnJvbSAxMzQ3NmE0NmExNDZiYTgxZjBiZTZjMTJiYjRjMDUwNGYzM2FmY2Q3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdt YWlsLmNvbT4KRGF0ZTogV2VkLCAyIEFwciAyMDI1IDE3OjMxOjM1ICswNTMwClN1YmplY3Q6IFtQ QVRDSCAzLzNdIE1pbm9yIGVkaXRzIDEuIEZpeGVkIGluZGVudGF0aW9uIGluIFNIXyBkZWNsYXJh dGlvbnMgMi4KIFJlbW92ZWQgYSByZWR1bmRhbnQgY29tbWVudCAzLiBGaXggc2VudGVuY2VzIGlu IGEgZnVuY3Rpb24gcHJvbG9ndWUuCgpBc2h1dG9zaCBCYXBhdAotLS0KIHNyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYyB8IDggKysrLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAz IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgv ZXF1aXZjbGFzcy5jCmluZGV4IDg1M2QzOTA0NTc3Li4zZjE2NGZhMmIzZSAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvZXF1aXZjbGFzcy5jCisrKyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wYXRoL2VxdWl2Y2xhc3MuYwpAQCAtMTE3LDcgKzExNyw3IEBAIHR5cGVkZWYg c3RydWN0CiAjZGVmaW5lIFNIX0tFWSAgICAgICAgICAgICAgICAgIGtleQogI2RlZmluZSBTSF9I QVNIX0tFWSh0Yiwga2V5KQlcCiAJaGFzaF9ieXRlcygoY29uc3QgdW5zaWduZWQgY2hhciAqKSAm KGtleSksIHNpemVvZihFQ0Rlcml2ZXNLZXkpKQotI2RlZmluZSBTSF9FUVVBTCh0YiwgYSwgYikJ XAorI2RlZmluZSBTSF9FUVVBTCh0YiwgYSwgYikJCVwKIAkoKGEpLmVtMSA9PSAoYikuZW0xICYm IChhKS5lbTIgPT0gKGIpLmVtMiAmJiAoYSkucGFyZW50X2VjID09IChiKS5wYXJlbnRfZWMpCiAj ZGVmaW5lIFNIX1NDT1BFICAgICAgICAgICAgICAgIHN0YXRpYyBpbmxpbmUKICNkZWZpbmUgU0hf REVDTEFSRQpAQCAtMzYzNCwxMCArMzYzNCw5IEBAIGVjX2NsZWFyX2Rlcml2ZWRfY2xhdXNlcyhF cXVpdmFsZW5jZUNsYXNzICplYykKICAqCQlTZWFyY2ggZm9yIGFuIGV4aXN0aW5nIFJlc3RyaWN0 SW5mbyB0aGF0IGVxdWF0ZXMgdGhlIGdpdmVuIHBhaXIKICAqCQlvZiBFcXVpdmFsZW5jZU1lbWJl cnMsIGVpdGhlciBmcm9tIGVjX3NvdXJjZXMgb3IgZWNfZGVyaXZlcy4KICAqCi0gKiBXZSBhY2Nl cHQgY2xhdXNlcyBpbiBlaXRoZXIgb3BlcmFuZCBvcmRlciwgc28gY29tbXV0YXRvcnMgYXJlIG1h dGNoZWQuIFdlCisgKiBSZXR1cm4gYSBjbGF1c2Ugd2l0aCBtYXRjaGluZyBvcGVyYW5kcyBpbiBn aXZlbiBvcmRlciBvciBjb21tdXRlZCBvcmRlci4gV2UKICAqIHVzZWQgdG8gcmVxdWlyZSBtYXRj aGluZyBvcGVyYXRvciBPSURzLCBidXQgZHJvcHBlZCB0aGF0IHNpbmNlIGFueQotICogc2VtYW50 aWNhbGx5IGRpZmZlcmVudCBvcGVyYXRvciBoZXJlIHdvdWxkIGluZGljYXRlIGEgYnJva2VuIG9w ZXJhdG9yCi0gKiBmYW1pbHkuCisgKiBzZW1hbnRpY2FsbHkgZGlmZmVyZW50IG9wZXJhdG9yIGhl cmUgd291bGQgaW5kaWNhdGUgYSBicm9rZW4gb3BlcmF0b3IgZmFtaWx5LgogICoKICAqIFJldHVy bnMgTlVMTCBpZiBubyBtYXRjaGluZyBjbGF1c2UgaXMgZm91bmQuCiAgKi8KQEAgLTM3MTcsNyAr MzcxNiw2IEBAIGVjX3NlYXJjaF9kZXJpdmVkX2NsYXVzZV9mb3JfZW1zKFBsYW5uZXJJbmZvICpy b290LCBFcXVpdmFsZW5jZUNsYXNzICplYywKIAkJCWlmICghcmlnaHRlbSAmJgogCQkJCXJpbmZv LT5sZWZ0X2VtID09IGxlZnRlbSkKIAkJCXsKLQkJCQkvKiBTZWUgdGhlIGNvbW1lbnQgYWJvdmUg aW4gaGFzaCBwYXRoIGZvciByYXRpb25hbGUuICovCiAJCQkJQXNzZXJ0KHJpbmZvLT5yaWdodF9l bS0+ZW1faXNfY29uc3QpOwogCQkJCXJldHVybiByaW5mbzsKIAkJCX0KLS0gCjIuMzQuMQoK --0000000000002ab8750631cb1fe3--