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 1siSSC-004VgM-Ff for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Aug 2024 05:39:49 +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 1siSSA-005Bea-Jk for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Aug 2024 05:39:47 +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 1siSSA-005Bd6-4v for pgsql-hackers@lists.postgresql.org; Mon, 26 Aug 2024 05:39:46 +0000 Received: from mail-lj1-x22a.google.com ([2a00:1450:4864:20::22a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1siSS6-001Wng-MU for pgsql-hackers@postgresql.org; Mon, 26 Aug 2024 05:39:46 +0000 Received: by mail-lj1-x22a.google.com with SMTP id 38308e7fff4ca-2f50966c469so11691591fa.3 for ; Sun, 25 Aug 2024 22:39:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1724650782; x=1725255582; 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=XxoLauTkZrW+quiy6lq0XBUCdipIlBF1wp0MPfRp0rA=; b=cPQXuoX7h6fcWshs8sxu+7W9tCay77/qbfwMbxQU7y9cv30nN2uYlYGzGTVJXG0ygh DXGEKsXZlGYC8EdjtEE41RjwluiIW4dthvP/5FFGJGVFvy7flXbIXSPwKIVjJkKyH8mj cykWz8hbYNA9uUXn5OqxKkgBWBrfgXbTg4UVZgadWnYaU5EMOoNx7Lc3uTuzgJvfhq+3 QUs7K5r4tR3uhXJkERFnhxUbuPHFJLureqFGvtRNfRSmOG5gQKSDOcDHY4jy7MUqNyoc 8ukSFs8LjQ3+u0sp0JhdAmB6YyIhqcllqutCB7W9sa5Q2hC+ybhFZ+s6yT7kn5s2H42f BVgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724650782; x=1725255582; 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=XxoLauTkZrW+quiy6lq0XBUCdipIlBF1wp0MPfRp0rA=; b=oIDSN2EZ0aaLr0OCuLFleBac2I+KdPVOGsZdQY+mh0rHfuqH84fM7f5g7n8VfAlQJV ecrzS6HfTwSx23XVRkrXLn/WgJNVYBYlHLQL7t378W3Jh/0L1I/1HyaYZ+l/ErIGdi/w TG4DCpT9rFXT6JtRVcxeoCnQszp78AfY0nAVi/ri6yUeRTsG2ns6F0UJTBnmkQkbMNYr 5/IdYk/NzzV6X8OlTf5PJjoL4HwGJnLCAn3hc7bRt7F9SsRMJyXclhVBfaK/FVTbEWyW ie8nuTbfz9pTboees7O95vmAzrYzqOq7C3Rkc6F78PiNqWc4kcYIeFyPKMHKT0Z8F4tJ Q/NQ== X-Forwarded-Encrypted: i=1; AJvYcCWU1GGPpKcyXOZNsMdWy26Fo3odzmRUm4Epzkpc1jt0k2IKCqwstcqw2qnzuS0bXhgpA2DeYVVoLlcL9Fvu@postgresql.org X-Gm-Message-State: AOJu0YyXFSRv7ReLaDjbUTI/Muv8veEJNaFduxF4Y9YpzdXmbKEqlm4P fMLdbM3TyNVOgqJc074bRBF3ShAj8D0ccZ3lPOTKSy8RAWSdMnofMbpmilxgrcoM6UVg8XYuZot Gm3XEV1MOLifTRi0exh1xwrf5XwA= X-Google-Smtp-Source: AGHT+IH2m6trgFCb3BNeTPmgDrwqMlebTgM5SStU8z1JBpxPdP3ykO21KtTHD6+sbS9B/qWIAZ5HScC/KeeYSkQJi8U= X-Received: by 2002:a2e:8014:0:b0:2f3:ee44:c6de with SMTP id 38308e7fff4ca-2f4f5776474mr46088171fa.27.1724650781267; Sun, 25 Aug 2024 22:39:41 -0700 (PDT) MIME-Version: 1.0 References: <20230603223824.o7iyochli2dwwi7k@alap3.anarazel.de> <6be6f58815dc0844fbe058edf56b4e735a6efc1c.camel@j-davis.com> <2280bf7241119bb88cbe0fe5eb36490cbd04c0c0.camel@j-davis.com> <12f1a2d8dd3b6305c0354f1c701f44b7be5e54eb.camel@j-davis.com> <8633171cb034aafc260fdf37df04b6c779aa1e2f.camel@j-davis.com> <229c4f7219ed164088dadc935df21e1cf125e191.camel@j-davis.com> In-Reply-To: From: Bharath Rupireddy Date: Mon, 26 Aug 2024 11:09:28 +0530 Message-ID: Subject: Re: Introduce new multi insert Table AM and improve performance of various SQL commands with it for Heap AM To: Jeff Davis Cc: Masahiko Sawada , PostgreSQL-development , Andres Freund , Dilip Kumar , Luc Vlaming , Justin Pryzby , Michael Paquier , Matthias van de Meent , Alexander Korotkov Content-Type: multipart/mixed; boundary="0000000000002e451e06208f8d57" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002e451e06208f8d57 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Jun 5, 2024 at 12:42=E2=80=AFPM Bharath Rupireddy wrote: > > Please find the v22 patches with the above changes. Please find the v23 patches after rebasing 0005 and adapting 0004 for 9758174e2e. -- Bharath Rupireddy PostgreSQL Contributors Team RDS Open Source Databases Amazon Web Services: https://aws.amazon.com --0000000000002e451e06208f8d57 Content-Type: application/x-patch; name="v23-0005-Use-new-multi-insert-table-AM-for-COPY.patch" Content-Disposition: attachment; filename="v23-0005-Use-new-multi-insert-table-AM-for-COPY.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0aiv5fl4 RnJvbSA1MTFkMGE2YWEzODUxNDA4Yjg4YTVkNWNjY2IxYTMxYWYyNmFhMDg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgQXVnIDIwMjQgMDQ6NTA6MDkgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyMyA1LzVdIFVzZSBuZXcgbXVsdGkgaW5zZXJ0IHRhYmxlIEFN IGZvciBDT1BZCgpUaGlzIGNvbW1pdCB1c2VzIHRoZSBuZXcgbXVsdGkgaW5zZXJ0IHRhYmxlIEFN IGFkZGVkIGJ5IGNvbW1pdAo8PENIQU5HRV9NRT4+IGZvciBDT1BZIC4uLiBGUk9NIGNvbW1hbmQu CgpBdXRob3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBKZWZmIERhdmlzCkRpc2N1 c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1ZpOWVU UllSJTNEZ2RjYTV3eHRqM0trXzlxOXFWY2N4c1MxaG5nVEdPQ2pQd1ElNDBtYWlsLmdtYWlsLmNv bQpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzg2MzMx NzFjYjAzNGFhZmMyNjBmZGYzN2RmMDRiNmM3NzlhYTFlMmYuY2FtZWwlNDBqLWRhdmlzLmNvbQot LS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgfCAyMzQgKysrKysr KysrKysrKysrLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFs LmggfCAgIDQgKy0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgfCAg IDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMmQzNDYyOTEzZS4uMjllMGU0OTdjMSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC03NCwxNCArNzQsMjUgQEAKICAqLwogI2RlZmluZSBN QVhfUEFSVElUSU9OX0JVRkZFUlMJMzIKIAordHlwZWRlZiBzdHJ1Y3QgQ29weU1vZGlmeUJ1ZmZl ckZsdXNoQ29udGV4dAoreworCUNvcHlGcm9tU3RhdGUgY3N0YXRlOworCVJlc3VsdFJlbEluZm8g KnJlc3VsdFJlbEluZm87CisJRVN0YXRlCSAgICplc3RhdGU7Cit9IENvcHlNb2RpZnlCdWZmZXJG bHVzaENvbnRleHQ7CisKIC8qIFN0b3JlcyBtdWx0aS1pbnNlcnQgZGF0YSByZWxhdGVkIHRvIGEg c2luZ2xlIHJlbGF0aW9uIGluIENvcHlGcm9tLiAqLwogdHlwZWRlZiBzdHJ1Y3QgQ29weU11bHRp SW5zZXJ0QnVmZmVyCiB7Ci0JVHVwbGVUYWJsZVNsb3QgKnNsb3RzW01BWF9CVUZGRVJFRF9UVVBM RVNdOyAvKiBBcnJheSB0byBzdG9yZSB0dXBsZXMgKi8KKwlUYWJsZU1vZGlmeVN0YXRlICptc3Rh dGU7CS8qIFRhYmxlIGluc2VydCBzdGF0ZTsgTlVMTCBpZiBmb3JlaWduIHRhYmxlICovCisJVHVw bGVUYWJsZVNsb3QgKipzbG90czsJCS8qIEFycmF5IHRvIHN0b3JlIHR1cGxlcyAqLwogCVJlc3Vs dFJlbEluZm8gKnJlc3VsdFJlbEluZm87CS8qIFJlc3VsdFJlbEluZm8gZm9yICdyZWxpZCcgKi8K LQlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0ZTsJLyogQnVsa0luc2VydFN0YXRlIGZvciB0aGlzIHJl bCBpZiBwbGFpbgotCQkJCQkJCQkgKiB0YWJsZTsgTlVMTCBpZiBmb3JlaWduIHRhYmxlICovCisJ VHVwbGVUYWJsZVNsb3QgKm11bHRpc2xvdDsKKwlDb3B5TW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0 ICptb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQ7CiAJaW50CQkJbnVzZWQ7CQkJLyogbnVtYmVy IG9mICdzbG90cycgY29udGFpbmluZyB0dXBsZXMgKi8KKwlpbnQJCQljdXJyc2xvdG5vOwkJLyog Q3VycmVudCBidWZmZXJlZCBzbG90IG51bWJlciB0aGF0J3MgYmVpbmcKKwkJCQkJCQkJICogZmx1 c2hlZDsgVXNlZCB0byBnZXQgY29ycmVjdCBjdXJfbGluZW5vIGZvcgorCQkJCQkJCQkgKiBlcnJv cnMgd2hpbGUgaW4gZmx1c2ggY2FsbGJhY2suICovCiAJdWludDY0CQlsaW5lbm9zW01BWF9CVUZG RVJFRF9UVVBMRVNdOwkvKiBMaW5lICMgb2YgdHVwbGUgaW4gY29weQogCQkJCQkJCQkJCQkJICog c3RyZWFtICovCiB9IENvcHlNdWx0aUluc2VydEJ1ZmZlcjsKQEAgLTEwMiw2ICsxMTMsNyBAQCB0 eXBlZGVmIHN0cnVjdCBDb3B5TXVsdGlJbnNlcnRJbmZvCiAJaW50CQkJdGlfb3B0aW9uczsJCS8q IHRhYmxlIGluc2VydCBvcHRpb25zICovCiB9IENvcHlNdWx0aUluc2VydEluZm87CiAKK3N0YXRp YyB2b2lkIENvcHlNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNrKHZvaWQgKmNvbnRleHQsIFR1cGxl VGFibGVTbG90ICpzbG90KTsKIAogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90b3R5cGVzICov CiBzdGF0aWMgdm9pZCBDbG9zZVBpcGVGcm9tUHJvZ3JhbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSk7 CkBAIC0yMjEsMTQgKzIzMywzNyBAQCBDb3B5TGltaXRQcmludG91dExlbmd0aChjb25zdCBjaGFy ICpzdHIpCiAgKiBSZXN1bHRSZWxJbmZvLgogICovCiBzdGF0aWMgQ29weU11bHRpSW5zZXJ0QnVm ZmVyICoKLUNvcHlNdWx0aUluc2VydEJ1ZmZlckluaXQoUmVzdWx0UmVsSW5mbyAqcnJpKQorQ29w eU11bHRpSW5zZXJ0QnVmZmVySW5pdChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sIFJlc3Vs dFJlbEluZm8gKnJyaSwKKwkJCQkJCSAgQ29weUZyb21TdGF0ZSBjc3RhdGUsIEVTdGF0ZSAqZXN0 YXRlKQogewogCUNvcHlNdWx0aUluc2VydEJ1ZmZlciAqYnVmZmVyOwogCiAJYnVmZmVyID0gKENv cHlNdWx0aUluc2VydEJ1ZmZlciAqKSBwYWxsb2Moc2l6ZW9mKENvcHlNdWx0aUluc2VydEJ1ZmZl cikpOwotCW1lbXNldChidWZmZXItPnNsb3RzLCAwLCBzaXplb2YoVHVwbGVUYWJsZVNsb3QgKikg KiBNQVhfQlVGRkVSRURfVFVQTEVTKTsKKworCWlmIChycmktPnJpX0Zkd1JvdXRpbmUgPT0gTlVM TCkKKwl7CisJCWJ1ZmZlci0+bW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0ID0gKENvcHlNb2Rp ZnlCdWZmZXJGbHVzaENvbnRleHQgKikgcGFsbG9jKHNpemVvZihDb3B5TW9kaWZ5QnVmZmVyRmx1 c2hDb250ZXh0KSk7CisJCWJ1ZmZlci0+bW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0LT5jc3Rh dGUgPSBjc3RhdGU7CisJCWJ1ZmZlci0+bW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0LT5yZXN1 bHRSZWxJbmZvID0gcnJpOworCQlidWZmZXItPm1vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dC0+ ZXN0YXRlID0gZXN0YXRlOworCisJCWJ1ZmZlci0+bXN0YXRlID0gdGFibGVfbW9kaWZ5X2JlZ2lu KHJyaS0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJCQlUTV9GTEFHX0JBU19CVUxLV1JJVEUs CisJCQkJCQkJCQkJCW1paW5mby0+bXljaWQsCisJCQkJCQkJCQkJCW1paW5mby0+dGlfb3B0aW9u cywKKwkJCQkJCQkJCQkJQ29weU1vZGlmeUJ1ZmZlckZsdXNoQ2FsbGJhY2ssCisJCQkJCQkJCQkJ CWJ1ZmZlci0+bW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0KTsKKwkJYnVmZmVyLT5zbG90cyA9 IE5VTEw7CisJCWJ1ZmZlci0+bXVsdGlzbG90ID0gTlVMTDsKKwl9CisJZWxzZQorCXsKKwkJYnVm ZmVyLT5tc3RhdGUgPSBOVUxMOworCQlidWZmZXItPnNsb3RzID0gcGFsbG9jMChzaXplb2YoVHVw bGVUYWJsZVNsb3QgKikgKiBNQVhfQlVGRkVSRURfVFVQTEVTKTsKKwkJYnVmZmVyLT5tdWx0aXNs b3QgPSBOVUxMOworCX0KKwogCWJ1ZmZlci0+cmVzdWx0UmVsSW5mbyA9IHJyaTsKLQlidWZmZXIt PmJpc3RhdGUgPSAocnJpLT5yaV9GZHdSb3V0aW5lID09IE5VTEwpID8gR2V0QnVsa0luc2VydFN0 YXRlKCkgOiBOVUxMOwogCWJ1ZmZlci0+bnVzZWQgPSAwOwogCiAJcmV0dXJuIGJ1ZmZlcjsKQEAg LTIzOSwxMSArMjc0LDEyIEBAIENvcHlNdWx0aUluc2VydEJ1ZmZlckluaXQoUmVzdWx0UmVsSW5m byAqcnJpKQogICovCiBzdGF0aWMgaW5saW5lIHZvaWQKIENvcHlNdWx0aUluc2VydEluZm9TZXR1 cEJ1ZmZlcihDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCi0JCQkJCQkJICAgUmVzdWx0UmVs SW5mbyAqcnJpKQorCQkJCQkJCSAgIFJlc3VsdFJlbEluZm8gKnJyaSwgQ29weUZyb21TdGF0ZSBj c3RhdGUsCisJCQkJCQkJICAgRVN0YXRlICplc3RhdGUpCiB7CiAJQ29weU11bHRpSW5zZXJ0QnVm ZmVyICpidWZmZXI7CiAKLQlidWZmZXIgPSBDb3B5TXVsdGlJbnNlcnRCdWZmZXJJbml0KHJyaSk7 CisJYnVmZmVyID0gQ29weU11bHRpSW5zZXJ0QnVmZmVySW5pdChtaWluZm8sIHJyaSwgY3N0YXRl LCBlc3RhdGUpOwogCiAJLyogU2V0dXAgYmFjay1saW5rIHNvIHdlIGNhbiBlYXNpbHkgZmluZCB0 aGlzIGJ1ZmZlciBhZ2FpbiAqLwogCXJyaS0+cmlfQ29weU11bHRpSW5zZXJ0QnVmZmVyID0gYnVm ZmVyOwpAQCAtMjc2LDcgKzMxMiw3IEBAIENvcHlNdWx0aUluc2VydEluZm9Jbml0KENvcHlNdWx0 aUluc2VydEluZm8gKm1paW5mbywgUmVzdWx0UmVsSW5mbyAqcnJpLAogCSAqIHR1cGxlcyB0aGVp ciB3YXkgZm9yIHRoZSBmaXJzdCB0aW1lLgogCSAqLwogCWlmIChycmktPnJpX1JlbGF0aW9uRGVz Yy0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCi0JCUNvcHlN dWx0aUluc2VydEluZm9TZXR1cEJ1ZmZlcihtaWluZm8sIHJyaSk7CisJCUNvcHlNdWx0aUluc2Vy dEluZm9TZXR1cEJ1ZmZlcihtaWluZm8sIHJyaSwgY3N0YXRlLCBlc3RhdGUpOwogfQogCiAvKgpA QCAtMzIwLDggKzM1Niw2IEBAIENvcHlNdWx0aUluc2VydEJ1ZmZlckZsdXNoKENvcHlNdWx0aUlu c2VydEluZm8gKm1paW5mbywKIAkJaW50CQkJYmF0Y2hfc2l6ZSA9IHJlc3VsdFJlbEluZm8tPnJp X0JhdGNoU2l6ZTsKIAkJaW50CQkJc2VudCA9IDA7CiAKLQkJQXNzZXJ0KGJ1ZmZlci0+YmlzdGF0 ZSA9PSBOVUxMKTsKLQogCQkvKiBFbnN1cmUgdGhhdCB0aGUgRkRXIHN1cHBvcnRzIGJhdGNoaW5n IGFuZCBpdCdzIGVuYWJsZWQgKi8KIAkJQXNzZXJ0KHJlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRp bmUtPkV4ZWNGb3JlaWduQmF0Y2hJbnNlcnQpOwogCQlBc3NlcnQoYmF0Y2hfc2l6ZSA+IDEpOwpA QCAtMzkzLDEzICs0MjcsOCBAQCBDb3B5TXVsdGlJbnNlcnRCdWZmZXJGbHVzaChDb3B5TXVsdGlJ bnNlcnRJbmZvICptaWluZm8sCiAJfQogCWVsc2UKIAl7Ci0JCUNvbW1hbmRJZAlteWNpZCA9IG1p aW5mby0+bXljaWQ7Ci0JCWludAkJCXRpX29wdGlvbnMgPSBtaWluZm8tPnRpX29wdGlvbnM7CiAJ CWJvb2wJCWxpbmVfYnVmX3ZhbGlkID0gY3N0YXRlLT5saW5lX2J1Zl92YWxpZDsKIAkJdWludDY0 CQlzYXZlX2N1cl9saW5lbm8gPSBjc3RhdGUtPmN1cl9saW5lbm87Ci0JCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKLQotCQlBc3NlcnQoYnVmZmVyLT5iaXN0YXRlICE9IE5VTEwpOwogCiAJCS8q CiAJCSAqIFByaW50IGVycm9yIGNvbnRleHQgaW5mb3JtYXRpb24gY29ycmVjdGx5LCBpZiBvbmUg b2YgdGhlIG9wZXJhdGlvbnMKQEAgLTQwNyw1NiArNDM2LDE4IEBAIENvcHlNdWx0aUluc2VydEJ1 ZmZlckZsdXNoKENvcHlNdWx0aUluc2VydEluZm8gKm1paW5mbywKIAkJICovCiAJCWNzdGF0ZS0+ bGluZV9idWZfdmFsaWQgPSBmYWxzZTsKIAotCQkvKgotCQkgKiB0YWJsZV9tdWx0aV9pbnNlcnQg bWF5IGxlYWsgbWVtb3J5LCBzbyBzd2l0Y2ggdG8gc2hvcnQtbGl2ZWQgbWVtb3J5Ci0JCSAqIGNv bnRleHQgYmVmb3JlIGNhbGxpbmcgaXQuCi0JCSAqLwotCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKEdldFBlclR1cGxlTWVtb3J5Q29udGV4dChlc3RhdGUpKTsKLQkJdGFibGVf bXVsdGlfaW5zZXJ0KHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJCSAgIHNs b3RzLAotCQkJCQkJICAgbnVzZWQsCi0JCQkJCQkgICBteWNpZCwKLQkJCQkJCSAgIHRpX29wdGlv bnMsCi0JCQkJCQkgICBidWZmZXItPmJpc3RhdGUpOwotCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkY29udGV4dCk7CisJCUFzc2VydChidWZmZXItPmN1cnJzbG90bm8gPD0gYnVmZmVyLT5udXNl ZCk7CisJCWJ1ZmZlci0+Y3VycnNsb3RubyA9IDA7CiAKLQkJZm9yIChpID0gMDsgaSA8IG51c2Vk OyBpKyspCi0JCXsKLQkJCS8qCi0JCQkgKiBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMsIHVwZGF0 ZSB0aGVtIGZvciBhbGwgdGhlIGluc2VydGVkCi0JCQkgKiB0dXBsZXMsIGFuZCBydW4gQUZURVIg Uk9XIElOU0VSVCB0cmlnZ2Vycy4KLQkJCSAqLwotCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051 bUluZGljZXMgPiAwKQotCQkJewotCQkJCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzOwotCi0JCQkJ Y3N0YXRlLT5jdXJfbGluZW5vID0gYnVmZmVyLT5saW5lbm9zW2ldOwotCQkJCXJlY2hlY2tJbmRl eGVzID0KLQkJCQkJRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCi0JCQkJCQkJ CQkJICBidWZmZXItPnNsb3RzW2ldLCBlc3RhdGUsIGZhbHNlLAotCQkJCQkJCQkJCSAgZmFsc2Us IE5VTEwsIE5JTCwgZmFsc2UpOwotCQkJCUV4ZWNBUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVz dWx0UmVsSW5mbywKLQkJCQkJCQkJCSBzbG90c1tpXSwgcmVjaGVja0luZGV4ZXMsCi0JCQkJCQkJ CQkgY3N0YXRlLT50cmFuc2l0aW9uX2NhcHR1cmUpOwotCQkJCWxpc3RfZnJlZShyZWNoZWNrSW5k ZXhlcyk7Ci0JCQl9CisJCXRhYmxlX21vZGlmeV9idWZmZXJfZmx1c2goYnVmZmVyLT5tc3RhdGUp OwogCi0JCQkvKgotCQkJICogVGhlcmUncyBubyBpbmRleGVzLCBidXQgc2VlIGlmIHdlIG5lZWQg dG8gcnVuIEFGVEVSIFJPVyBJTlNFUlQKLQkJCSAqIHRyaWdnZXJzIGFueXdheS4KLQkJCSAqLwot CQkJZWxzZSBpZiAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MgIT0gTlVMTCAmJgotCQkJCQkg KHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50cmlnX2luc2VydF9hZnRlcl9yb3cgfHwKLQkJ CQkJICByZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfbmV3X3RhYmxlKSkK LQkJCXsKLQkJCQljc3RhdGUtPmN1cl9saW5lbm8gPSBidWZmZXItPmxpbmVub3NbaV07Ci0JCQkJ RXhlY0FSSW5zZXJ0VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLAotCQkJCQkJCQkJIHNs b3RzW2ldLCBOSUwsCi0JCQkJCQkJCQkgY3N0YXRlLT50cmFuc2l0aW9uX2NhcHR1cmUpOwotCQkJ fQorCQlBc3NlcnQoYnVmZmVyLT5jdXJyc2xvdG5vIDw9IGJ1ZmZlci0+bnVzZWQpOworCQlidWZm ZXItPmN1cnJzbG90bm8gPSAwOwogCi0JCQlFeGVjQ2xlYXJUdXBsZShzbG90c1tpXSk7Ci0JCX0K KwkJLyoKKwkJICogSW5kZXhlcyBhcmUgdXBkYXRlZCBhbmQgQUZURVIgUk9XIElOU0VSVCB0cmln Z2VycyAoaWYgYW55KSBhcmUgcnVuCisJCSAqIGluIHRoZSBmbHVzaCBjYWxsYmFjayBDb3B5TW9k aWZ5QnVmZmVyRmx1c2hDYWxsYmFjay4KKwkJICovCiAKIAkJLyogVXBkYXRlIHRoZSByb3cgY291 bnRlciBhbmQgcHJvZ3Jlc3Mgb2YgdGhlIENPUFkgY29tbWFuZCAqLwogCQkqcHJvY2Vzc2VkICs9 IG51c2VkOwpAQCAtNDcyLDYgKzQ2Myw2MCBAQCBDb3B5TXVsdGlJbnNlcnRCdWZmZXJGbHVzaChD b3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiAJYnVmZmVyLT5udXNlZCA9IDA7CiB9CiAKK3N0 YXRpYyB2b2lkCitDb3B5TW9kaWZ5QnVmZmVyRmx1c2hDYWxsYmFjayh2b2lkICpjb250ZXh0LCBU dXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlDb3B5TW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0ICpj dHggPSAoQ29weU1vZGlmeUJ1ZmZlckZsdXNoQ29udGV4dCAqKSBjb250ZXh0OworCUNvcHlGcm9t U3RhdGUgY3N0YXRlID0gY3R4LT5jc3RhdGU7CisJUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m byA9IGN0eC0+cmVzdWx0UmVsSW5mbzsKKwlFU3RhdGUJICAgKmVzdGF0ZSA9IGN0eC0+ZXN0YXRl OworCUNvcHlNdWx0aUluc2VydEJ1ZmZlciAqYnVmZmVyID0gcmVzdWx0UmVsSW5mby0+cmlfQ29w eU11bHRpSW5zZXJ0QnVmZmVyOworCisJLyogUXVpY2sgZXhpdCBpZiBubyBpbmRleGVzIG9yIG5v IHRyaWdnZXJzICovCisJaWYgKCEocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5kaWNlcyA+IDAgfHwK KwkJICAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MgIT0gTlVMTCAmJgorCQkgICAocmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X2FmdGVyX3JvdyB8fAorCQkJcmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X25ld190YWJsZSkpKSkKKwkJcmV0dXJu OworCisJLyogQ2FsbGVyIG11c3QgdGFrZSBjYXJlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgdGhl IGluZGljZXMgKi8KKworCS8qCisJICogSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzLCB1cGRhdGUg dGhlbSBmb3IgYWxsIHRoZSBpbnNlcnRlZCB0dXBsZXMsIGFuZAorCSAqIHJ1biBBRlRFUiBST1cg SU5TRVJUIHRyaWdnZXJzLgorCSAqLworCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2Vz ID4gMCkKKwl7CisJCUxpc3QJICAgKnJlY2hlY2tJbmRleGVzOworCisJCWNzdGF0ZS0+Y3VyX2xp bmVubyA9IGJ1ZmZlci0+bGluZW5vc1tidWZmZXItPmN1cnJzbG90bm8rK107CisJCXJlY2hlY2tJ bmRleGVzID0KKwkJCUV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJ CQkgIHNsb3QsIGVzdGF0ZSwgZmFsc2UsCisJCQkJCQkJCSAgZmFsc2UsIE5VTEwsIE5JTCwgZmFs c2UpOworCQlFeGVjQVJJbnNlcnRUcmlnZ2Vycyhlc3RhdGUsIHJlc3VsdFJlbEluZm8sCisJCQkJ CQkJIHNsb3QsIHJlY2hlY2tJbmRleGVzLAorCQkJCQkJCSBjc3RhdGUtPnRyYW5zaXRpb25fY2Fw dHVyZSk7CisJCWxpc3RfZnJlZShyZWNoZWNrSW5kZXhlcyk7CisJfQorCisJLyoKKwkgKiBUaGVy ZSdzIG5vIGluZGV4ZXMsIGJ1dCBzZWUgaWYgd2UgbmVlZCB0byBydW4gQUZURVIgUk9XIElOU0VS VCB0cmlnZ2VycworCSAqIGFueXdheS4KKwkgKi8KKwllbHNlIGlmIChyZXN1bHRSZWxJbmZvLT5y aV9UcmlnRGVzYyAhPSBOVUxMICYmCisJCQkgKHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50 cmlnX2luc2VydF9hZnRlcl9yb3cgfHwKKwkJCSAgcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2Mt PnRyaWdfaW5zZXJ0X25ld190YWJsZSkpCisJeworCQljc3RhdGUtPmN1cl9saW5lbm8gPSBidWZm ZXItPmxpbmVub3NbYnVmZmVyLT5jdXJyc2xvdG5vKytdOworCQlFeGVjQVJJbnNlcnRUcmlnZ2Vy cyhlc3RhdGUsIHJlc3VsdFJlbEluZm8sCisJCQkJCQkJIHNsb3QsIE5JTCwKKwkJCQkJCQkgY3N0 YXRlLT50cmFuc2l0aW9uX2NhcHR1cmUpOworCX0KKworCUFzc2VydChidWZmZXItPmN1cnJzbG90 bm8gPD0gYnVmZmVyLT5udXNlZCk7Cit9CisKIC8qCiAgKiBEcm9wIHVzZWQgc2xvdHMgYW5kIGZy ZWUgbWVtYmVyIGZvciB0aGlzIGJ1ZmZlci4KICAqCkBAIC00OTIsMTkgKzUzNywxOCBAQCBDb3B5 TXVsdGlJbnNlcnRCdWZmZXJDbGVhbnVwKENvcHlNdWx0aUluc2VydEluZm8gKm1paW5mbywKIAog CWlmIChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lID09IE5VTEwpCiAJewotCQlBc3NlcnQo YnVmZmVyLT5iaXN0YXRlICE9IE5VTEwpOwotCQlGcmVlQnVsa0luc2VydFN0YXRlKGJ1ZmZlci0+ YmlzdGF0ZSk7CisJCXRhYmxlX21vZGlmeV9lbmQoYnVmZmVyLT5tc3RhdGUpOworCQlFeGVjRHJv cFNpbmdsZVR1cGxlVGFibGVTbG90KGJ1ZmZlci0+bXVsdGlzbG90KTsKKwkJcGZyZWUoYnVmZmVy LT5tb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQpOwogCX0KIAllbHNlCi0JCUFzc2VydChidWZm ZXItPmJpc3RhdGUgPT0gTlVMTCk7Ci0KLQkvKiBTaW5jZSB3ZSBvbmx5IGNyZWF0ZSBzbG90cyBv biBkZW1hbmQsIGp1c3QgZHJvcCB0aGUgbm9uLW51bGwgb25lcy4gKi8KLQlmb3IgKGkgPSAwOyBp IDwgTUFYX0JVRkZFUkVEX1RVUExFUyAmJiBidWZmZXItPnNsb3RzW2ldICE9IE5VTEw7IGkrKykK LQkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChidWZmZXItPnNsb3RzW2ldKTsKKwl7CisJ CS8qIFNpbmNlIHdlIG9ubHkgY3JlYXRlIHNsb3RzIG9uIGRlbWFuZCwganVzdCBkcm9wIHRoZSBu b24tbnVsbCBvbmVzLiAqLworCQlmb3IgKGkgPSAwOyBpIDwgTUFYX0JVRkZFUkVEX1RVUExFUyAm JiBidWZmZXItPnNsb3RzW2ldICE9IE5VTEw7IGkrKykKKwkJCUV4ZWNEcm9wU2luZ2xlVHVwbGVU YWJsZVNsb3QoYnVmZmVyLT5zbG90c1tpXSk7CiAKLQlpZiAocmVzdWx0UmVsSW5mby0+cmlfRmR3 Um91dGluZSA9PSBOVUxMKQotCQl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQocmVzdWx0UmVsSW5m by0+cmlfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkgbWlpbmZvLT50aV9vcHRpb25zKTsKKwkJcGZy ZWUoYnVmZmVyLT5zbG90cyk7CisJfQogCiAJcGZyZWUoYnVmZmVyKTsKIH0KQEAgLTU5OCwxNSAr NjQyLDM0IEBAIENvcHlNdWx0aUluc2VydEluZm9OZXh0RnJlZVNsb3QoQ29weU11bHRpSW5zZXJ0 SW5mbyAqbWlpbmZvLAogewogCUNvcHlNdWx0aUluc2VydEJ1ZmZlciAqYnVmZmVyID0gcnJpLT5y aV9Db3B5TXVsdGlJbnNlcnRCdWZmZXI7CiAJaW50CQkJbnVzZWQ7CisJVHVwbGVUYWJsZVNsb3Qg KnNsb3Q7CiAKIAlBc3NlcnQoYnVmZmVyICE9IE5VTEwpOwogCUFzc2VydChidWZmZXItPm51c2Vk IDwgTUFYX0JVRkZFUkVEX1RVUExFUyk7CiAKIAludXNlZCA9IGJ1ZmZlci0+bnVzZWQ7CiAKLQlp ZiAoYnVmZmVyLT5zbG90c1tudXNlZF0gPT0gTlVMTCkKLQkJYnVmZmVyLT5zbG90c1tudXNlZF0g PSB0YWJsZV9zbG90X2NyZWF0ZShycmktPnJpX1JlbGF0aW9uRGVzYywgTlVMTCk7Ci0JcmV0dXJu IGJ1ZmZlci0+c2xvdHNbbnVzZWRdOworCWlmIChycmktPnJpX0Zkd1JvdXRpbmUgPT0gTlVMTCkK Kwl7CisJCWlmIChidWZmZXItPm11bHRpc2xvdCA9PSBOVUxMKQorCQkJYnVmZmVyLT5tdWx0aXNs b3QgPSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihycmktPnJpX1JlbGF0aW9u RGVzYyksCisJCQkJCQkJCQkJCQkgICAmVFRTT3BzVmlydHVhbCk7CisKKwkJLyogQ2FsbGVyIG11 c3QgY2xlYXIgdGhlIHNsb3QgKi8KKwkJc2xvdCA9IGJ1ZmZlci0+bXVsdGlzbG90OworCX0KKwll bHNlCisJeworCQlpZiAoYnVmZmVyLT5zbG90c1tudXNlZF0gPT0gTlVMTCkKKwkJeworCQkJc2xv dCA9IHRhYmxlX3Nsb3RfY3JlYXRlKHJyaS0+cmlfUmVsYXRpb25EZXNjLCBOVUxMKTsKKwkJCWJ1 ZmZlci0+c2xvdHNbbnVzZWRdID0gc2xvdDsKKwkJfQorCQllbHNlCisJCQlzbG90ID0gYnVmZmVy LT5zbG90c1tudXNlZF07CisJfQorCisJcmV0dXJuIHNsb3Q7CiB9CiAKIC8qCkBAIC02MjAsNyAr NjgzLDExIEBAIENvcHlNdWx0aUluc2VydEluZm9TdG9yZShDb3B5TXVsdGlJbnNlcnRJbmZvICpt aWluZm8sIFJlc3VsdFJlbEluZm8gKnJyaSwKIAlDb3B5TXVsdGlJbnNlcnRCdWZmZXIgKmJ1ZmZl ciA9IHJyaS0+cmlfQ29weU11bHRpSW5zZXJ0QnVmZmVyOwogCiAJQXNzZXJ0KGJ1ZmZlciAhPSBO VUxMKTsKLQlBc3NlcnQoc2xvdCA9PSBidWZmZXItPnNsb3RzW2J1ZmZlci0+bnVzZWRdKTsKKwor I2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocnJpLT5yaV9GZHdSb3V0aW5lICE9IE5V TEwpCisJCUFzc2VydChzbG90ID09IGJ1ZmZlci0+c2xvdHNbYnVmZmVyLT5udXNlZF0pOworI2Vu ZGlmCiAKIAkvKiBTdG9yZSB0aGUgbGluZSBudW1iZXIgc28gd2UgY2FuIHByb3Blcmx5IHJlcG9y dCBhbnkgZXJyb3JzIGxhdGVyICovCiAJYnVmZmVyLT5saW5lbm9zW2J1ZmZlci0+bnVzZWRdID0g bGluZW5vOwpAQCAtNjI4LDYgKzY5NSwxNCBAQCBDb3B5TXVsdGlJbnNlcnRJbmZvU3RvcmUoQ29w eU11bHRpSW5zZXJ0SW5mbyAqbWlpbmZvLCBSZXN1bHRSZWxJbmZvICpycmksCiAJLyogUmVjb3Jk IHRoaXMgc2xvdCBhcyBiZWluZyB1c2VkICovCiAJYnVmZmVyLT5udXNlZCsrOwogCisJaWYgKHJy aS0+cmlfRmR3Um91dGluZSA9PSBOVUxMKQorCXsKKwkJQXNzZXJ0KHNsb3QgPT0gYnVmZmVyLT5t dWx0aXNsb3QpOworCQlidWZmZXItPmN1cnJzbG90bm8gPSAwOworCisJCXRhYmxlX21vZGlmeV9i dWZmZXJfaW5zZXJ0KGJ1ZmZlci0+bXN0YXRlLCBzbG90KTsKKwl9CisKIAkvKiBVcGRhdGUgaG93 IG1hbnkgdHVwbGVzIGFyZSBzdG9yZWQgYW5kIHRoZWlyIHNpemUgKi8KIAltaWluZm8tPmJ1ZmZl cmVkVHVwbGVzKys7CiAJbWlpbmZvLT5idWZmZXJlZEJ5dGVzICs9IHR1cGxlbjsKQEAgLTg0Miw3 ICs5MTcsNyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkvKgogCSAqIEl0J3Mg Z2VuZXJhbGx5IG1vcmUgZWZmaWNpZW50IHRvIHByZXBhcmUgYSBidW5jaCBvZiB0dXBsZXMgZm9y CiAJICogaW5zZXJ0aW9uLCBhbmQgaW5zZXJ0IHRoZW0gaW4gb25lCi0JICogdGFibGVfbXVsdGlf aW5zZXJ0KCkvRXhlY0ZvcmVpZ25CYXRjaEluc2VydCgpIGNhbGwsIHRoYW4gY2FsbAorCSAqIHRh YmxlX21vZGlmeV9idWZmZXJfaW5zZXJ0KCkvRXhlY0ZvcmVpZ25CYXRjaEluc2VydCgpIGNhbGws IHRoYW4gY2FsbAogCSAqIHRhYmxlX3R1cGxlX2luc2VydCgpL0V4ZWNGb3JlaWduSW5zZXJ0KCkg c2VwYXJhdGVseSBmb3IgZXZlcnkgdHVwbGUuCiAJICogSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVt YmVyIG9mIHJlYXNvbnMgd2h5IHdlIG1pZ2h0IG5vdCBiZSBhYmxlIHRvIGRvCiAJICogdGhpcy4g IFRoZXNlIGFyZSBleHBsYWluZWQgYmVsb3cuCkBAIC0xMDkyLDcgKzExNjcsOCBAQCBDb3B5RnJv bShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJCQl7CiAJCQkJCWlmIChyZXN1bHRSZWxJbmZvLT5y aV9Db3B5TXVsdGlJbnNlcnRCdWZmZXIgPT0gTlVMTCkKIAkJCQkJCUNvcHlNdWx0aUluc2VydElu Zm9TZXR1cEJ1ZmZlcigmbXVsdGlJbnNlcnRJbmZvLAotCQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJl bEluZm8pOworCQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8sIGNzdGF0ZSwKKwkJCQkJCQkJ CQkJCQkgICBlc3RhdGUpOwogCQkJCX0KIAkJCQllbHNlIGlmIChpbnNlcnRNZXRob2QgPT0gQ0lN X01VTFRJX0NPTkRJVElPTkFMICYmCiAJCQkJCQkgIUNvcHlNdWx0aUluc2VydEluZm9Jc0VtcHR5 KCZtdWx0aUluc2VydEluZm8pKQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eWZyb21faW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHlmcm9tX2ludGVybmFs LmgKaW5kZXggY2FkNTJmY2M3OC4uMTRhZGRiYzZmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvY29weWZyb21faW50ZXJuYWwuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9j b3B5ZnJvbV9pbnRlcm5hbC5oCkBAIC00Niw5ICs0Niw5IEBAIHR5cGVkZWYgZW51bSBFb2xUeXBl CiB0eXBlZGVmIGVudW0gQ29weUluc2VydE1ldGhvZAogewogCUNJTV9TSU5HTEUsCQkJCQkvKiB1 c2UgdGFibGVfdHVwbGVfaW5zZXJ0IG9yIEV4ZWNGb3JlaWduSW5zZXJ0ICovCi0JQ0lNX01VTFRJ LAkJCQkJLyogYWx3YXlzIHVzZSB0YWJsZV9tdWx0aV9pbnNlcnQgb3IKKwlDSU1fTVVMVEksCQkJ CQkvKiBhbHdheXMgdXNlIHRhYmxlX21vZGlmeV9idWZmZXJfaW5zZXJ0IG9yCiAJCQkJCQkJCSAq IEV4ZWNGb3JlaWduQmF0Y2hJbnNlcnQgKi8KLQlDSU1fTVVMVElfQ09ORElUSU9OQUwsCQkvKiB1 c2UgdGFibGVfbXVsdGlfaW5zZXJ0IG9yCisJQ0lNX01VTFRJX0NPTkRJVElPTkFMLAkJLyogdXNl IHRhYmxlX21vZGlmeV9idWZmZXJfaW5zZXJ0IG9yCiAJCQkJCQkJCSAqIEV4ZWNGb3JlaWduQmF0 Y2hJbnNlcnQgb25seSBpZiB2YWxpZCAqLwogfSBDb3B5SW5zZXJ0TWV0aG9kOwogCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CmluZGV4IDA3YTYxZDA4NmQuLmU4ODJkNGFiMTcgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CkBAIC00OTcsNiArNDk3LDcgQEAgQ29weUhlYWRlckNob2ljZQogQ29w eUluc2VydE1ldGhvZAogQ29weUxvZ1ZlcmJvc2l0eUNob2ljZQogQ29weU1ldGhvZAorQ29weU1v ZGlmeUJ1ZmZlckZsdXNoQ29udGV4dAogQ29weU11bHRpSW5zZXJ0QnVmZmVyCiBDb3B5TXVsdGlJ bnNlcnRJbmZvCiBDb3B5T25FcnJvckNob2ljZQotLSAKMi40My4wCgo= --0000000000002e451e06208f8d57 Content-Type: application/x-patch; name="v23-0002-Optimize-various-SQL-commands-with-new-multi-ins.patch" Content-Disposition: attachment; filename="v23-0002-Optimize-various-SQL-commands-with-new-multi-ins.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0aiv5fh1 RnJvbSBiZWIxOTI4YmJiZmFmNmZiMTQ2NmE1OGQ3ZmExZGViODQxMmU0N2FmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgQXVnIDIwMjQgMDQ6NDY6MzYgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyMyAyLzVdIE9wdGltaXplIHZhcmlvdXMgU1FMIGNvbW1hbmRz IHdpdGggbmV3IG11bHRpIGluc2VydCAKIHRhYmxlIEFNCgpUaGlzIGNvbW1pdCBvcHRpbWl6ZXMg dGhlIGZvbGxvd2luZyBjb21tYW5kcyBmb3IgaGVhcCBBTSB1c2luZyBuZXcKbXVsdGkgaW5zZXJ0 IHRhYmxlIEFNIGFkZGVkIGJ5IGNvbW1pdCA8PENIQU5HRV9NRT4+OgotIENSRUFURSBUQUJMRSBB UwotIENSRUFURSBNQVRFUklBTElaRUQgVklFVwotIFJFRlJFU0ggTUFURVJJQUxJWkVEIFZJRVcK LSBBTFRFUiBUQUJMRSBmbGF2b3VycyByZXN1bHRpbmcgaW4gdGFibGUgcmV3cml0ZXMKCkF1dGhv cjogQmhhcmF0aCBSdXBpcmVkZHkKUmV2aWV3ZWQtYnk6IEplZmYgRGF2aXMKRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUxqMkFDVmk5ZVRSWVIlM0Rn ZGNhNXd4dGozS2tfOXE5cVZjY3hzUzFobmdUR09DalB3USU0MG1haWwuZ21haWwuY29tCkRpc2N1 c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvODYzMzE3MWNiMDM0 YWFmYzI2MGZkZjM3ZGYwNGI2Yzc3OWFhMWUyZi5jYW1lbCU0MGotZGF2aXMuY29tCi0tLQogc3Jj L2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYyAgfCAyNiArKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jICAgfCAyNSArKysrKysrKysrLS0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyB8IDMwICsrKysr KysrKystLS0tLS0tLS0tLS0tLS0tLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25z KCspLCA1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9j cmVhdGVhcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMuYwppbmRleCAwYjYyOWIx Zjc5Li44Mzc4NTk3ZjM2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVh cy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMKQEAgLTUzLDkgKzUzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIGZpbGxlZCBieSBpbnRvcmVs X3N0YXJ0dXA6ICovCiAJUmVsYXRpb24JcmVsOwkJCS8qIHJlbGF0aW9uIHRvIHdyaXRlIHRvICov CiAJT2JqZWN0QWRkcmVzcyByZWxhZGRyOwkJLyogYWRkcmVzcyBvZiByZWwsIGZvciBFeGVjQ3Jl YXRlVGFibGVBcyAqLwotCUNvbW1hbmRJZAlvdXRwdXRfY2lkOwkJLyogY21pbiB0byBpbnNlcnQg aW4gb3V0cHV0IHR1cGxlcyAqLwotCWludAkJCXRpX29wdGlvbnM7CQkvKiB0YWJsZV90dXBsZV9p bnNlcnQgcGVyZm9ybWFuY2Ugb3B0aW9ucyAqLwotCUJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlOwkv KiBidWxrIGluc2VydCBzdGF0ZSAqLworCVRhYmxlTW9kaWZ5U3RhdGUgKm1zdGF0ZTsJLyogdGFi bGUgaW5zZXJ0IHN0YXRlICovCiB9IERSX2ludG9yZWw7CiAKIC8qIHV0aWxpdHkgZnVuY3Rpb25z IGZvciBDVEFTIGRlZmluaXRpb24gY3JlYXRpb24gKi8KQEAgLTU0NywxNyArNTQ1LDIwIEBAIGlu dG9yZWxfc3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVz YyB0eXBlaW5mbykKIAkgKi8KIAlteVN0YXRlLT5yZWwgPSBpbnRvUmVsYXRpb25EZXNjOwogCW15 U3RhdGUtPnJlbGFkZHIgPSBpbnRvUmVsYXRpb25BZGRyOwotCW15U3RhdGUtPm91dHB1dF9jaWQg PSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOwotCW15U3RhdGUtPnRpX29wdGlvbnMgPSBUQUJM RV9JTlNFUlRfU0tJUF9GU007CiAKIAkvKgogCSAqIElmIFdJVEggTk8gREFUQSBpcyBzcGVjaWZp ZWQsIHRoZXJlIGlzIG5vIG5lZWQgdG8gc2V0IHVwIHRoZSBzdGF0ZSBmb3IKIAkgKiBidWxrIGlu c2VydHMgYXMgdGhlcmUgYXJlIG5vIHR1cGxlcyB0byBpbnNlcnQuCiAJICovCiAJaWYgKCFpbnRv LT5za2lwRGF0YSkKLQkJbXlTdGF0ZS0+YmlzdGF0ZSA9IEdldEJ1bGtJbnNlcnRTdGF0ZSgpOwor CQlteVN0YXRlLT5tc3RhdGUgPSB0YWJsZV9tb2RpZnlfYmVnaW4oaW50b1JlbGF0aW9uRGVzYywK KwkJCQkJCQkJCQkJIFRNX0ZMQUdfQkFTX0JVTEtXUklURSwKKwkJCQkJCQkJCQkJIEdldEN1cnJl bnRDb21tYW5kSWQodHJ1ZSksCisJCQkJCQkJCQkJCSBUQUJMRV9JTlNFUlRfU0tJUF9GU00sCisJ CQkJCQkJCQkJCSBOVUxMLAorCQkJCQkJCQkJCQkgTlVMTCk7CiAJZWxzZQotCQlteVN0YXRlLT5i aXN0YXRlID0gTlVMTDsKKwkJbXlTdGF0ZS0+bXN0YXRlID0gTlVMTDsKIAogCS8qCiAJICogVmFs aWQgc21ncl90YXJnYmxvY2sgaW1wbGllcyBzb21ldGhpbmcgYWxyZWFkeSB3cm90ZSB0byB0aGUg cmVsYXRpb24uCkBAIC01ODUsMTEgKzU4Niw3IEBAIGludG9yZWxfcmVjZWl2ZShUdXBsZVRhYmxl U2xvdCAqc2xvdCwgRGVzdFJlY2VpdmVyICpzZWxmKQogCQkgKiB3b3VsZCBub3QgYmUgY2hlYXAg ZWl0aGVyLiBUaGlzIGFsc28gZG9lc24ndCBhbGxvdyBhY2Nlc3NpbmcgcGVyLUFNCiAJCSAqIGRh dGEgKHNheSBhIHR1cGxlJ3MgeG1pbiksIGJ1dCBzaW5jZSB3ZSBkb24ndCBkbyB0aGF0IGhlcmUu Li4KIAkJICovCi0JCXRhYmxlX3R1cGxlX2luc2VydChteVN0YXRlLT5yZWwsCi0JCQkJCQkgICBz bG90LAotCQkJCQkJICAgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJCSAgIG15U3RhdGUtPnRp X29wdGlvbnMsCi0JCQkJCQkgICBteVN0YXRlLT5iaXN0YXRlKTsKKwkJdGFibGVfbW9kaWZ5X2J1 ZmZlcl9pbnNlcnQobXlTdGF0ZS0+bXN0YXRlLCBzbG90KTsKIAl9CiAKIAkvKiBXZSBrbm93IHRo aXMgaXMgYSBuZXdseSBjcmVhdGVkIHJlbGF0aW9uLCBzbyB0aGVyZSBhcmUgbm8gaW5kZXhlcyAq LwpAQCAtNjA3LDEwICs2MDQsNyBAQCBpbnRvcmVsX3NodXRkb3duKERlc3RSZWNlaXZlciAqc2Vs ZikKIAlJbnRvQ2xhdXNlICppbnRvID0gbXlTdGF0ZS0+aW50bzsKIAogCWlmICghaW50by0+c2tp cERhdGEpCi0JewotCQlGcmVlQnVsa0luc2VydFN0YXRlKG15U3RhdGUtPmJpc3RhdGUpOwotCQl0 YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobXlTdGF0ZS0+cmVsLCBteVN0YXRlLT50aV9vcHRpb25z KTsKLQl9CisJCXRhYmxlX21vZGlmeV9lbmQobXlTdGF0ZS0+bXN0YXRlKTsKIAogCS8qIGNsb3Nl IHJlbCwgYnV0IGtlZXAgbG9jayB1bnRpbCBjb21taXQgKi8KIAl0YWJsZV9jbG9zZShteVN0YXRl LT5yZWwsIE5vTG9jayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3 LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggOTFmMGZkNmVhMy4uZjAz NmFiYmViMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5jCisrKyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDgsOSArNDgsNyBAQCB0eXBlZGVm IHN0cnVjdAogCU9pZAkJCXRyYW5zaWVudG9pZDsJLyogT0lEIG9mIG5ldyBoZWFwIGludG8gd2hp Y2ggdG8gc3RvcmUgKi8KIAkvKiBUaGVzZSBmaWVsZHMgYXJlIGZpbGxlZCBieSB0cmFuc2llbnRy ZWxfc3RhcnR1cDogKi8KIAlSZWxhdGlvbgl0cmFuc2llbnRyZWw7CS8qIHJlbGF0aW9uIHRvIHdy aXRlIHRvICovCi0JQ29tbWFuZElkCW91dHB1dF9jaWQ7CQkvKiBjbWluIHRvIGluc2VydCBpbiBv dXRwdXQgdHVwbGVzICovCi0JaW50CQkJdGlfb3B0aW9uczsJCS8qIHRhYmxlX3R1cGxlX2luc2Vy dCBwZXJmb3JtYW5jZSBvcHRpb25zICovCi0JQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7CS8qIGJ1 bGsgaW5zZXJ0IHN0YXRlICovCisJVGFibGVNb2RpZnlTdGF0ZSAqbXN0YXRlOwkvKiB0YWJsZSBp bnNlcnQgc3RhdGUgKi8KIH0gRFJfdHJhbnNpZW50cmVsOwogCiBzdGF0aWMgaW50CW1hdHZpZXdf bWFpbnRlbmFuY2VfZGVwdGggPSAwOwpAQCAtNDkxLDkgKzQ4OSwxMyBAQCB0cmFuc2llbnRyZWxf c3RhcnR1cChEZXN0UmVjZWl2ZXIgKnNlbGYsIGludCBvcGVyYXRpb24sIFR1cGxlRGVzYyB0eXBl aW5mbykKIAkgKiBGaWxsIHByaXZhdGUgZmllbGRzIG9mIG15U3RhdGUgZm9yIHVzZSBieSBsYXRl ciByb3V0aW5lcwogCSAqLwogCW15U3RhdGUtPnRyYW5zaWVudHJlbCA9IHRyYW5zaWVudHJlbDsK LQlteVN0YXRlLT5vdXRwdXRfY2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKLQlteVN0 YXRlLT50aV9vcHRpb25zID0gVEFCTEVfSU5TRVJUX1NLSVBfRlNNIHwgVEFCTEVfSU5TRVJUX0ZS T1pFTjsKLQlteVN0YXRlLT5iaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisJbXlTdGF0 ZS0+bXN0YXRlID0gdGFibGVfbW9kaWZ5X2JlZ2luKHRyYW5zaWVudHJlbCwKKwkJCQkJCQkJCQkg VE1fRkxBR19CQVNfQlVMS1dSSVRFLAorCQkJCQkJCQkJCSBHZXRDdXJyZW50Q29tbWFuZElkKHRy dWUpLAorCQkJCQkJCQkJCSBUQUJMRV9JTlNFUlRfU0tJUF9GU00gfAorCQkJCQkJCQkJCSBUQUJM RV9JTlNFUlRfRlJPWkVOLAorCQkJCQkJCQkJCSBOVUxMLAorCQkJCQkJCQkJCSBOVUxMKTsKIAog CS8qCiAJICogVmFsaWQgc21ncl90YXJnYmxvY2sgaW1wbGllcyBzb21ldGhpbmcgYWxyZWFkeSB3 cm90ZSB0byB0aGUgcmVsYXRpb24uCkBAIC01MTgsMTIgKzUyMCw3IEBAIHRyYW5zaWVudHJlbF9y ZWNlaXZlKFR1cGxlVGFibGVTbG90ICpzbG90LCBEZXN0UmVjZWl2ZXIgKnNlbGYpCiAJICogY2hl YXAgZWl0aGVyLiBUaGlzIGFsc28gZG9lc24ndCBhbGxvdyBhY2Nlc3NpbmcgcGVyLUFNIGRhdGEg KHNheSBhCiAJICogdHVwbGUncyB4bWluKSwgYnV0IHNpbmNlIHdlIGRvbid0IGRvIHRoYXQgaGVy ZS4uLgogCSAqLwotCi0JdGFibGVfdHVwbGVfaW5zZXJ0KG15U3RhdGUtPnRyYW5zaWVudHJlbCwK LQkJCQkJICAgc2xvdCwKLQkJCQkJICAgbXlTdGF0ZS0+b3V0cHV0X2NpZCwKLQkJCQkJICAgbXlT dGF0ZS0+dGlfb3B0aW9ucywKLQkJCQkJICAgbXlTdGF0ZS0+YmlzdGF0ZSk7CisJdGFibGVfbW9k aWZ5X2J1ZmZlcl9pbnNlcnQobXlTdGF0ZS0+bXN0YXRlLCBzbG90KTsKIAogCS8qIFdlIGtub3cg dGhpcyBpcyBhIG5ld2x5IGNyZWF0ZWQgcmVsYXRpb24sIHNvIHRoZXJlIGFyZSBubyBpbmRleGVz ICovCiAKQEAgLTUzOCw5ICs1MzUsNyBAQCB0cmFuc2llbnRyZWxfc2h1dGRvd24oRGVzdFJlY2Vp dmVyICpzZWxmKQogewogCURSX3RyYW5zaWVudHJlbCAqbXlTdGF0ZSA9IChEUl90cmFuc2llbnRy ZWwgKikgc2VsZjsKIAotCUZyZWVCdWxrSW5zZXJ0U3RhdGUobXlTdGF0ZS0+YmlzdGF0ZSk7Ci0K LQl0YWJsZV9maW5pc2hfYnVsa19pbnNlcnQobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBteVN0YXRl LT50aV9vcHRpb25zKTsKKwl0YWJsZV9tb2RpZnlfZW5kKG15U3RhdGUtPm1zdGF0ZSk7CiAKIAkv KiBjbG9zZSB0cmFuc2llbnRyZWwsIGJ1dCBrZWVwIGxvY2sgdW50aWwgY29tbWl0ICovCiAJdGFi bGVfY2xvc2UobXlTdGF0ZS0+dHJhbnNpZW50cmVsLCBOb0xvY2spOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwppbmRleCBkYWMzOWRmODNhLi4zY2E1NDQ4YTcyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJs ZWNtZHMuYwpAQCAtNTk1NCwxMCArNTk1NCw4IEBAIEFUUmV3cml0ZVRhYmxlKEFsdGVyZWRUYWJs ZUluZm8gKnRhYiwgT2lkIE9JRE5ld0hlYXAsIExPQ0tNT0RFIGxvY2ttb2RlKQogCWludAkJCWk7 CiAJTGlzdENlbGwgICAqbDsKIAlFU3RhdGUJICAgKmVzdGF0ZTsKLQlDb21tYW5kSWQJbXljaWQ7 Ci0JQnVsa0luc2VydFN0YXRlIGJpc3RhdGU7Ci0JaW50CQkJdGlfb3B0aW9uczsKIAlFeHByU3Rh dGUgICpwYXJ0cXVhbHN0YXRlID0gTlVMTDsKKwlUYWJsZU1vZGlmeVN0YXRlICptc3RhdGUgPSBO VUxMOwogCiAJLyoKIAkgKiBPcGVuIHRoZSByZWxhdGlvbihzKS4gIFdlIGhhdmUgc3VyZWx5IGFs cmVhZHkgbG9ja2VkIHRoZSBleGlzdGluZwpAQCAtNTk3NiwxOCArNTk3NCwxNCBAQCBBVFJld3Jp dGVUYWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwLCBMT0NLTU9ERSBs b2NrbW9kZSkKIAkgKiBQcmVwYXJlIGEgQnVsa0luc2VydFN0YXRlIGFuZCBvcHRpb25zIGZvciB0 YWJsZV90dXBsZV9pbnNlcnQuICBUaGUgRlNNCiAJICogaXMgZW1wdHksIHNvIGRvbid0IGJvdGhl ciB1c2luZyBpdC4KIAkgKi8KLQlpZiAobmV3cmVsKQotCXsKLQkJbXljaWQgPSBHZXRDdXJyZW50 Q29tbWFuZElkKHRydWUpOwotCQliaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7Ci0JCXRp X29wdGlvbnMgPSBUQUJMRV9JTlNFUlRfU0tJUF9GU007Ci0JfQotCWVsc2UKKwlpZiAobmV3cmVs ICYmIG1zdGF0ZSA9PSBOVUxMKQogCXsKLQkJLyoga2VlcCBjb21waWxlciBxdWlldCBhYm91dCB1 c2luZyB0aGVzZSB1bmluaXRpYWxpemVkICovCi0JCW15Y2lkID0gMDsKLQkJYmlzdGF0ZSA9IE5V TEw7Ci0JCXRpX29wdGlvbnMgPSAwOworCQltc3RhdGUgPSB0YWJsZV9tb2RpZnlfYmVnaW4obmV3 cmVsLAorCQkJCQkJCQkJVE1fRkxBR19CQVNfQlVMS1dSSVRFLAorCQkJCQkJCQkJR2V0Q3VycmVu dENvbW1hbmRJZCh0cnVlKSwKKwkJCQkJCQkJCVRBQkxFX0lOU0VSVF9TS0lQX0ZTTSwKKwkJCQkJ CQkJCU5VTEwsCisJCQkJCQkJCQlOVUxMKTsKIAl9CiAKIAkvKgpAQCAtNjI4NSw4ICs2Mjc5LDcg QEAgQVRSZXdyaXRlVGFibGUoQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBPaWQgT0lETmV3SGVhcCwg TE9DS01PREUgbG9ja21vZGUpCiAKIAkJCS8qIFdyaXRlIHRoZSB0dXBsZSBvdXQgdG8gdGhlIG5l dyByZWxhdGlvbiAqLwogCQkJaWYgKG5ld3JlbCkKLQkJCQl0YWJsZV90dXBsZV9pbnNlcnQobmV3 cmVsLCBpbnNlcnRzbG90LCBteWNpZCwKLQkJCQkJCQkJICAgdGlfb3B0aW9ucywgYmlzdGF0ZSk7 CisJCQkJdGFibGVfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQobXN0YXRlLCBpbnNlcnRzbG90KTsKIAog CQkJUmVzZXRFeHByQ29udGV4dChlY29udGV4dCk7CiAKQEAgLTYzMDcsMTAgKzYzMDAsNyBAQCBB VFJld3JpdGVUYWJsZShBbHRlcmVkVGFibGVJbmZvICp0YWIsIE9pZCBPSUROZXdIZWFwLCBMT0NL TU9ERSBsb2NrbW9kZSkKIAl0YWJsZV9jbG9zZShvbGRyZWwsIE5vTG9jayk7CiAJaWYgKG5ld3Jl bCkKIAl7Ci0JCUZyZWVCdWxrSW5zZXJ0U3RhdGUoYmlzdGF0ZSk7Ci0KLQkJdGFibGVfZmluaXNo X2J1bGtfaW5zZXJ0KG5ld3JlbCwgdGlfb3B0aW9ucyk7Ci0KKwkJdGFibGVfbW9kaWZ5X2VuZCht c3RhdGUpOwogCQl0YWJsZV9jbG9zZShuZXdyZWwsIE5vTG9jayk7CiAJfQogfQotLSAKMi40My4w Cgo= --0000000000002e451e06208f8d57 Content-Type: application/x-patch; name="v23-0004-Optimize-Logical-Replication-Apply-with-new-mult.patch" Content-Disposition: attachment; filename="v23-0004-Optimize-Logical-Replication-Apply-with-new-mult.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0aiv5fk3 RnJvbSBhMTU3OWJjZjU4Zjc0ZDFlMzEyMWI4MWMyNDljMDI5ZTQ3MDI5N2YwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgQXVnIDIwMjQgMDQ6NDk6MjkgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyMyA0LzVdIE9wdGltaXplIExvZ2ljYWwgUmVwbGljYXRpb24g QXBwbHkgd2l0aCBuZXcgbXVsdGkKIGluc2VydCB0YWJsZSBBTQoKVGhpcyBjb21taXQgb3B0aW1p emVzIHRoZSBMb2dpY2FsIFJlcGxpY2F0aW9uIEFwcGx5IGZvciBoZWFwIEFNCnVzaW5nIG5ldyBt dWx0aSBpbnNlcnQgdGFibGUgQU0gYWRkZWQgYnkgY29tbWl0IDw8Q0hBTkdFX01FPj4uCgpBdXRo b3I6IEJoYXJhdGggUnVwaXJlZGR5ClJldmlld2VkLWJ5OiBKZWZmIERhdmlzCkRpc2N1c3Npb246 IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FMajJBQ1ZpOWVUUllSJTNE Z2RjYTV3eHRqM0trXzlxOXFWY2N4c1MxaG5nVEdPQ2pQd1ElNDBtYWlsLmdtYWlsLmNvbQpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkLzg2MzMxNzFjYjAz NGFhZmMyNjBmZGYzN2RmMDRiNmM3NzlhYTFlMmYuY2FtZWwlNDBqLWRhdmlzLmNvbQotLS0KIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSZXBsaWNhdGlvbi5jICAgfCAgNDEgKystCiBzcmMvYmFj a2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Byb3RvLmMgIHwgIDI0ICsrCiBzcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jIHwgMzc1ICsrKysrKysrKysrKysrKysrKysrKyst CiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgIHwgICA0ICsKIHNyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2NvbmZsaWN0LmggICAgICAgfCAgIDYgKwogc3JjL2luY2x1ZGUv cmVwbGljYXRpb24vbG9naWNhbHByb3RvLmggICB8ICAgMiArCiBzcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdCAgICAgICAgIHwgICAyICsKIDcgZmlsZXMgY2hhbmdlZCwgNDQwIGluc2Vy dGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSZXBsaWNhdGlvbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0 aW9uLmMKaW5kZXggMTA4NmNiYzk2Mi4uYmMxYmEzZTVhOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1JlcGxpY2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1JlcGxpY2F0aW9uLmMKQEAgLTUzMSw3ICs1MzEsNyBAQCByZXRyeToKICAqIENoZWNrIGFs bCB0aGUgdW5pcXVlIGluZGV4ZXMgaW4gJ3JlY2hlY2tJbmRleGVzJyBmb3IgY29uZmxpY3Qgd2l0 aCB0aGUKICAqIHR1cGxlIGluICdyZW1vdGVzbG90JyBhbmQgcmVwb3J0IGlmIGZvdW5kLgogICov Ci1zdGF0aWMgdm9pZAordm9pZAogQ2hlY2tBbmRSZXBvcnRDb25mbGljdChSZXN1bHRSZWxJbmZv ICpyZXN1bHRSZWxJbmZvLCBFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJICAgQ29uZmxpY3RUeXBlIHR5 cGUsIExpc3QgKnJlY2hlY2tJbmRleGVzLAogCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2VhcmNo c2xvdCwgVHVwbGVUYWJsZVNsb3QgKnJlbW90ZXNsb3QpCkBAIC02NDYsNiArNjQ2LDQ1IEBAIEV4 ZWNTaW1wbGVSZWxhdGlvbkluc2VydChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCX0K IH0KIAordm9pZAorRXhlY1JlbGF0aW9uTXVsdGlJbnNlcnQoVGFibGVNb2RpZnlTdGF0ZSAqTXVs dGlJbnNlcnRTdGF0ZSwKKwkJCQkJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJ CQlFU3RhdGUgKmVzdGF0ZSwgVHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJYm9vbAkJc2tpcF90 dXBsZSA9IGZhbHNlOworCVJlbGF0aW9uCXJlbCA9IHJlc3VsdFJlbEluZm8tPnJpX1JlbGF0aW9u RGVzYzsKKworCS8qIEZvciBub3cgd2Ugc3VwcG9ydCBvbmx5IHRhYmxlcy4gKi8KKwlBc3NlcnQo cmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTik7CisKKwlDaGVja0NtZFJl cGxpY2FJZGVudGl0eShyZWwsIENNRF9JTlNFUlQpOworCisJLyogQkVGT1JFIFJPVyBJTlNFUlQg VHJpZ2dlcnMgKi8KKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MgJiYKKwkJcmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X2JlZm9yZV9yb3cpCisJeworCQlpZiAo IUV4ZWNCUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgc2xvdCkpCisJCQlz a2lwX3R1cGxlID0gdHJ1ZTsJLyogImRvIG5vdGhpbmciICovCisJfQorCisJaWYgKCFza2lwX3R1 cGxlKQorCXsKKwkJLyogQ29tcHV0ZSBzdG9yZWQgZ2VuZXJhdGVkIGNvbHVtbnMgKi8KKwkJaWYg KHJlbC0+cmRfYXR0LT5jb25zdHIgJiYKKwkJCXJlbC0+cmRfYXR0LT5jb25zdHItPmhhc19nZW5l cmF0ZWRfc3RvcmVkKQorCQkJRXhlY0NvbXB1dGVTdG9yZWRHZW5lcmF0ZWQocmVzdWx0UmVsSW5m bywgZXN0YXRlLCBzbG90LAorCQkJCQkJCQkJICAgQ01EX0lOU0VSVCk7CisKKwkJLyogQ2hlY2sg dGhlIGNvbnN0cmFpbnRzIG9mIHRoZSB0dXBsZSAqLworCQlpZiAocmVsLT5yZF9hdHQtPmNvbnN0 cikKKwkJCUV4ZWNDb25zdHJhaW50cyhyZXN1bHRSZWxJbmZvLCBzbG90LCBlc3RhdGUpOworCQlp ZiAocmVsLT5yZF9yZWwtPnJlbGlzcGFydGl0aW9uKQorCQkJRXhlY1BhcnRpdGlvbkNoZWNrKHJl c3VsdFJlbEluZm8sIHNsb3QsIGVzdGF0ZSwgdHJ1ZSk7CisKKwkJdGFibGVfbW9kaWZ5X2J1ZmZl cl9pbnNlcnQoTXVsdGlJbnNlcnRTdGF0ZSwgc2xvdCk7CisJfQorfQorCiAvKgogICogRmluZCB0 aGUgc2VhcmNoc2xvdCB0dXBsZSBhbmQgdXBkYXRlIGl0IHdpdGggZGF0YSBpbiB0aGUgc2xvdCwK ICAqIHVwZGF0ZSB0aGUgaW5kZXhlcywgYW5kIGV4ZWN1dGUgYW55IGNvbnN0cmFpbnRzIGFuZCBw ZXItcm93IHRyaWdnZXJzLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9n aWNhbC9wcm90by5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9wcm90by5jCmlu ZGV4IDk4MGY2ZTI3NDEuLjBlNzA1MGRiYTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvcHJvdG8uYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dp Y2FsL3Byb3RvLmMKQEAgLTQyNyw2ICs0MjcsMzAgQEAgbG9naWNhbHJlcF93cml0ZV9pbnNlcnQo U3RyaW5nSW5mbyBvdXQsIFRyYW5zYWN0aW9uSWQgeGlkLCBSZWxhdGlvbiByZWwsCiAJbG9naWNh bHJlcF93cml0ZV90dXBsZShvdXQsIHJlbCwgbmV3c2xvdCwgYmluYXJ5LCBjb2x1bW5zKTsKIH0K IAorTG9naWNhbFJlcFJlbElkCitsb2dpY2FscmVwX3JlYWRfcmVsaWQoU3RyaW5nSW5mbyBpbikK K3sKKwlMb2dpY2FsUmVwUmVsSWQgcmVsaWQ7CisKKwkvKiByZWFkIHRoZSByZWxhdGlvbiBpZCAq LworCXJlbGlkID0gcHFfZ2V0bXNnaW50KGluLCA0KTsKKworCXJldHVybiByZWxpZDsKK30KKwor dm9pZAorbG9naWNhbHJlcF9yZWFkX2luc2VydF92MihTdHJpbmdJbmZvIGluLCBMb2dpY2FsUmVw VHVwbGVEYXRhICpuZXd0dXApCit7CisJY2hhcgkJYWN0aW9uOworCisJYWN0aW9uID0gcHFfZ2V0 bXNnYnl0ZShpbik7CisJaWYgKGFjdGlvbiAhPSAnTicpCisJCWVsb2coRVJST1IsICJleHBlY3Rl ZCBuZXcgdHVwbGUgYnV0IGdvdCAlZCIsCisJCQkgYWN0aW9uKTsKKworCWxvZ2ljYWxyZXBfcmVh ZF90dXBsZShpbiwgbmV3dHVwKTsKK30KKwogLyoKICAqIFJlYWQgSU5TRVJUIGZyb20gc3RyZWFt LgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2Vy LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCmluZGV4IDM4YzI4 OTUzMDcuLjc4NzMxNTJjMDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xv Z2ljYWwvd29ya2VyLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3Jr ZXIuYwpAQCAtMTQ4LDcgKzE0OCw2IEBACiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpbmNsdWRl ICJhY2Nlc3MvdGFibGUuaCIKLSNpbmNsdWRlICJhY2Nlc3MvdGFibGVhbS5oIgogI2luY2x1ZGUg ImFjY2Vzcy90d29waGFzZS5oIgogI2luY2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAi Y2F0YWxvZy9pbmRleGluZy5oIgpAQCAtNDE0LDYgKzQxMywzMCBAQCBzdGF0aWMgaW5saW5lIHZv aWQgcmVzZXRfYXBwbHlfZXJyb3JfY29udGV4dF9pbmZvKHZvaWQpOwogc3RhdGljIFRyYW5zQXBw bHlBY3Rpb24gZ2V0X3RyYW5zYWN0aW9uX2FwcGx5X2FjdGlvbihUcmFuc2FjdGlvbklkIHhpZCwK IAkJCQkJCQkJCQkJCQkgUGFyYWxsZWxBcHBseVdvcmtlckluZm8gKip3aW5mbyk7CiAKK3R5cGVk ZWYgZW51bSBMUk11bHRpSW5zZXJ0UmV0dXJuU3RhdHVzCit7CisJTFJfTVVMVElfSU5TRVJUX05P TkUgPSAwLAorCUxSX01VTFRJX0lOU0VSVF9SRUxfU0tJUFBFRCwKKwlMUl9NVUxUSV9JTlNFUlRf RElTQUxMT1dFRCwKKwlMUl9NVUxUSV9JTlNFUlRfRE9ORSwKK30gTFJNdWx0aUluc2VydFJldHVy blN0YXR1czsKKworc3RhdGljIFRhYmxlTW9kaWZ5U3RhdGUgKk11bHRpSW5zZXJ0U3RhdGUgPSBO VUxMOworc3RhdGljIExvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqTGFzdFJlbCA9IE5VTEw7CitzdGF0 aWMgTG9naWNhbFJlcFJlbElkIExhc3RNdWx0aUluc2VydFJlbElkID0gSW52YWxpZE9pZDsKK3N0 YXRpYyBBcHBseUV4ZWN1dGlvbkRhdGEgKkxhc3RFRGF0YSA9IE5VTEw7CitzdGF0aWMgVHVwbGVU YWJsZVNsb3QgKkxhc3RSZW1vdGVTbG90ID0gTlVMTDsKKwordHlwZWRlZiBzdHJ1Y3QgTFJNb2Rp ZnlCdWZmZXJGbHVzaENvbnRleHQKK3sKKwlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOwor CUVTdGF0ZQkgICAqZXN0YXRlOworfSBMUk1vZGlmeUJ1ZmZlckZsdXNoQ29udGV4dDsKKworc3Rh dGljIExSTW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0ICptb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRl eHQgPSBOVUxMOworc3RhdGljIHZvaWQgTFJNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNrKHZvaWQg KmNvbnRleHQsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKK3N0YXRpYyB2b2lkIEZpbmlzaE11bHRp SW5zZXJ0cyh2b2lkKTsKKwogLyoKICAqIEZvcm0gdGhlIG9yaWdpbiBuYW1lIGZvciB0aGUgc3Vi c2NyaXB0aW9uLgogICoKQEAgLTEwMTUsNiArMTAzOCw4IEBAIGFwcGx5X2hhbmRsZV9jb21taXQo U3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBDb21taXREYXRhIGNvbW1pdF9kYXRhOwogCisJ RmluaXNoTXVsdGlJbnNlcnRzKCk7CisKIAlsb2dpY2FscmVwX3JlYWRfY29tbWl0KHMsICZjb21t aXRfZGF0YSk7CiAKIAlpZiAoY29tbWl0X2RhdGEuY29tbWl0X2xzbiAhPSByZW1vdGVfZmluYWxf bHNuKQpAQCAtMTA0MSw2ICsxMDY2LDggQEAgYXBwbHlfaGFuZGxlX2JlZ2luX3ByZXBhcmUoU3Ry aW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBQcmVwYXJlZFR4bkRhdGEgYmVnaW5fZGF0YTsKIAor CUZpbmlzaE11bHRpSW5zZXJ0cygpOworCiAJLyogVGFibGVzeW5jIHNob3VsZCBuZXZlciByZWNl aXZlIHByZXBhcmUuICovCiAJaWYgKGFtX3RhYmxlc3luY193b3JrZXIoKSkKIAkJZXJlcG9ydChF UlJPUiwKQEAgLTExMDcsNiArMTEzNCw4IEBAIGFwcGx5X2hhbmRsZV9wcmVwYXJlKFN0cmluZ0lu Zm8gcykKIHsKIAlMb2dpY2FsUmVwUHJlcGFyZWRUeG5EYXRhIHByZXBhcmVfZGF0YTsKIAorCUZp bmlzaE11bHRpSW5zZXJ0cygpOworCiAJbG9naWNhbHJlcF9yZWFkX3ByZXBhcmUocywgJnByZXBh cmVfZGF0YSk7CiAKIAlpZiAocHJlcGFyZV9kYXRhLnByZXBhcmVfbHNuICE9IHJlbW90ZV9maW5h bF9sc24pCkBAIC0xMTc5LDYgKzEyMDgsOCBAQCBhcHBseV9oYW5kbGVfY29tbWl0X3ByZXBhcmVk KFN0cmluZ0luZm8gcykKIAlMb2dpY2FsUmVwQ29tbWl0UHJlcGFyZWRUeG5EYXRhIHByZXBhcmVf ZGF0YTsKIAljaGFyCQlnaWRbR0lEU0laRV07CiAKKwlGaW5pc2hNdWx0aUluc2VydHMoKTsKKwog CWxvZ2ljYWxyZXBfcmVhZF9jb21taXRfcHJlcGFyZWQocywgJnByZXBhcmVfZGF0YSk7CiAJc2V0 X2FwcGx5X2Vycm9yX2NvbnRleHRfeGFjdChwcmVwYXJlX2RhdGEueGlkLCBwcmVwYXJlX2RhdGEu Y29tbWl0X2xzbik7CiAKQEAgLTEyMjgsNiArMTI1OSw4IEBAIGFwcGx5X2hhbmRsZV9yb2xsYmFj a19wcmVwYXJlZChTdHJpbmdJbmZvIHMpCiAJTG9naWNhbFJlcFJvbGxiYWNrUHJlcGFyZWRUeG5E YXRhIHJvbGxiYWNrX2RhdGE7CiAJY2hhcgkJZ2lkW0dJRFNJWkVdOwogCisJRmluaXNoTXVsdGlJ bnNlcnRzKCk7CisKIAlsb2dpY2FscmVwX3JlYWRfcm9sbGJhY2tfcHJlcGFyZWQocywgJnJvbGxi YWNrX2RhdGEpOwogCXNldF9hcHBseV9lcnJvcl9jb250ZXh0X3hhY3Qocm9sbGJhY2tfZGF0YS54 aWQsIHJvbGxiYWNrX2RhdGEucm9sbGJhY2tfZW5kX2xzbik7CiAKQEAgLTEyOTAsNiArMTMyMyw4 IEBAIGFwcGx5X2hhbmRsZV9zdHJlYW1fcHJlcGFyZShTdHJpbmdJbmZvIHMpCiAJLyogU2F2ZSB0 aGUgbWVzc2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCiAJU3RyaW5nSW5mb0RhdGEgb3Jp Z2luYWxfbXNnID0gKnM7CiAKKwlGaW5pc2hNdWx0aUluc2VydHMoKTsKKwogCWlmIChpbl9zdHJl YW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RF X1BST1RPQ09MX1ZJT0xBVElPTiksCkBAIC0xMzE3LDYgKzEzNTIsOCBAQCBhcHBseV9oYW5kbGVf c3RyZWFtX3ByZXBhcmUoU3RyaW5nSW5mbyBzKQogCQkJYXBwbHlfc3Bvb2xlZF9tZXNzYWdlcyhN eUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LAogCQkJCQkJCQkgICBwcmVwYXJlX2Rh dGEueGlkLCBwcmVwYXJlX2RhdGEucHJlcGFyZV9sc24pOwogCisJCQlGaW5pc2hNdWx0aUluc2Vy dHMoKTsKKwogCQkJLyogTWFyayB0aGUgdHJhbnNhY3Rpb24gYXMgcHJlcGFyZWQuICovCiAJCQlh cHBseV9oYW5kbGVfcHJlcGFyZV9pbnRlcm5hbCgmcHJlcGFyZV9kYXRhKTsKIApAQCAtMTQyOCw2 ICsxNDY1LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9wcmVwYXJlKFN0cmluZ0luZm8gcykKIHN0 YXRpYyB2b2lkCiBhcHBseV9oYW5kbGVfb3JpZ2luKFN0cmluZ0luZm8gcykKIHsKKwlGaW5pc2hN dWx0aUluc2VydHMoKTsKKwogCS8qCiAJICogT1JJR0lOIG1lc3NhZ2UgY2FuIG9ubHkgY29tZSBp bnNpZGUgc3RyZWFtaW5nIHRyYW5zYWN0aW9uIG9yIGluc2lkZQogCSAqIHJlbW90ZSB0cmFuc2Fj dGlvbiBhbmQgYmVmb3JlIGFueSBhY3R1YWwgd3JpdGVzLgpAQCAtMTQ5NCw2ICsxNTMzLDggQEAg YXBwbHlfaGFuZGxlX3N0cmVhbV9zdGFydChTdHJpbmdJbmZvIHMpCiAJLyogU2F2ZSB0aGUgbWVz c2FnZSBiZWZvcmUgaXQgaXMgY29uc3VtZWQuICovCiAJU3RyaW5nSW5mb0RhdGEgb3JpZ2luYWxf bXNnID0gKnM7CiAKKwlGaW5pc2hNdWx0aUluc2VydHMoKTsKKwogCWlmIChpbl9zdHJlYW1lZF90 cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RP Q09MX1ZJT0xBVElPTiksCkBAIC0xNjQ5LDYgKzE2OTAsOCBAQCBhcHBseV9oYW5kbGVfc3RyZWFt X3N0b3AoU3RyaW5nSW5mbyBzKQogCVBhcmFsbGVsQXBwbHlXb3JrZXJJbmZvICp3aW5mbzsKIAlU cmFuc0FwcGx5QWN0aW9uIGFwcGx5X2FjdGlvbjsKIAorCUZpbmlzaE11bHRpSW5zZXJ0cygpOwor CiAJaWYgKCFpbl9zdHJlYW1lZF90cmFuc2FjdGlvbikKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiksCkBAIC0xODQyLDYgKzE4ODUsOCBA QCBhcHBseV9oYW5kbGVfc3RyZWFtX2Fib3J0KFN0cmluZ0luZm8gcykKIAlTdHJpbmdJbmZvRGF0 YSBvcmlnaW5hbF9tc2cgPSAqczsKIAlib29sCQl0b3BsZXZlbF94YWN0OwogCisJRmluaXNoTXVs dGlJbnNlcnRzKCk7CisKIAlpZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQo RVJST1IsCiAJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLApAQCAtMjE1 OSw2ICsyMjA0LDggQEAgYXBwbHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQog CS8qIFNhdmUgdGhlIG1lc3NhZ2UgYmVmb3JlIGl0IGlzIGNvbnN1bWVkLiAqLwogCVN0cmluZ0lu Zm9EYXRhIG9yaWdpbmFsX21zZyA9ICpzOwogCisJRmluaXNoTXVsdGlJbnNlcnRzKCk7CisKIAlp ZiAoaW5fc3RyZWFtZWRfdHJhbnNhY3Rpb24pCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNv ZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9MQVRJT04pLApAQCAtMjE4MCw2ICsyMjI3LDggQEAgYXBw bHlfaGFuZGxlX3N0cmVhbV9jb21taXQoU3RyaW5nSW5mbyBzKQogCQkJYXBwbHlfc3Bvb2xlZF9t ZXNzYWdlcyhNeUxvZ2ljYWxSZXBXb3JrZXItPnN0cmVhbV9maWxlc2V0LCB4aWQsCiAJCQkJCQkJ CSAgIGNvbW1pdF9kYXRhLmNvbW1pdF9sc24pOwogCisJCQlGaW5pc2hNdWx0aUluc2VydHMoKTsK KwogCQkJYXBwbHlfaGFuZGxlX2NvbW1pdF9pbnRlcm5hbCgmY29tbWl0X2RhdGEpOwogCiAJCQkv KiBVbmxpbmsgdGhlIGZpbGVzIHdpdGggc2VyaWFsaXplZCBjaGFuZ2VzIGFuZCBzdWJ4YWN0IGlu Zm8uICovCkBAIC0yMzIzLDYgKzIzNzIsOCBAQCBhcHBseV9oYW5kbGVfcmVsYXRpb24oU3RyaW5n SW5mbyBzKQogewogCUxvZ2ljYWxSZXBSZWxhdGlvbiAqcmVsOwogCisJRmluaXNoTXVsdGlJbnNl cnRzKCk7CisKIAlpZiAoaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxfUkVQX01T R19SRUxBVElPTiwgcykpCiAJCXJldHVybjsKIApAQCAtMjM0Niw2ICsyMzk3LDggQEAgYXBwbHlf aGFuZGxlX3R5cGUoU3RyaW5nSW5mbyBzKQogewogCUxvZ2ljYWxSZXBUeXAgdHlwOwogCisJRmlu aXNoTXVsdGlJbnNlcnRzKCk7CisKIAlpZiAoaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExP R0lDQUxfUkVQX01TR19UWVBFLCBzKSkKIAkJcmV0dXJuOwogCkBAIC0yMzg0LDE2ICsyNDM3LDE1 MCBAQCBUYXJnZXRQcml2aWxlZ2VzQ2hlY2soUmVsYXRpb24gcmVsLCBBY2xNb2RlIG1vZGUpCiAJ CQkJCQlSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKSkpOwogfQogCi0vKgotICogSGFuZGxl IElOU0VSVCBtZXNzYWdlLgotICovCitzdGF0aWMgdm9pZAorRmluaXNoTXVsdGlJbnNlcnRzKHZv aWQpCit7CisJTG9naWNhbFJlcE1zZ1R5cGUgc2F2ZWRfY29tbWFuZDsKKworCWlmIChNdWx0aUlu c2VydFN0YXRlID09IE5VTEwpCisJCXJldHVybjsKKworCUFzc2VydChPaWRJc1ZhbGlkKExhc3RN dWx0aUluc2VydFJlbElkKSk7CisJQXNzZXJ0KExhc3RFRGF0YSAhPSBOVUxMKTsKKworCS8qIFNl dCByZWxhdGlvbiBmb3IgZXJyb3IgY2FsbGJhY2sgKi8KKwlhcHBseV9lcnJvcl9jYWxsYmFja19h cmcucmVsID0gTGFzdFJlbDsKKworCS8qIFNldCBjdXJyZW50IGNvbW1hbmQgZm9yIGVycm9yIGNh bGxiYWNrICovCisJc2F2ZWRfY29tbWFuZCA9IGFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5jb21t YW5kOworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5jb21tYW5kID0gTE9HSUNBTF9SRVBfTVNH X0lOU0VSVDsKKworCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNsb3QoTGFzdFJlbW90ZVNsb3Qp OworCUxhc3RSZW1vdGVTbG90ID0gTlVMTDsKKworCXRhYmxlX21vZGlmeV9lbmQoTXVsdGlJbnNl cnRTdGF0ZSk7CisJTXVsdGlJbnNlcnRTdGF0ZSA9IE5VTEw7CisJTGFzdE11bHRpSW5zZXJ0UmVs SWQgPSBJbnZhbGlkT2lkOworCisJcGZyZWUobW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0KTsK Kwltb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQgPSBOVUxMOworCisJRXhlY0Nsb3NlSW5kaWNl cyhMYXN0RURhdGEtPnRhcmdldFJlbEluZm8pOworCisJZmluaXNoX2VkYXRhKExhc3RFRGF0YSk7 CisJTGFzdEVEYXRhID0gTlVMTDsKKworCS8qIFJlc2V0IHJlbGF0aW9uIGZvciBlcnJvciBjYWxs YmFjayAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwgPSBOVUxMOworCisJLyogUmVz ZXQgdGhlIGN1cnJlbnQgY29tbWFuZCAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5jb21t YW5kID0gc2F2ZWRfY29tbWFuZDsKKworCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKExhc3RSZWwsIE5v TG9jayk7CisJTGFzdFJlbCA9IE5VTEw7CisKKwllbmRfcmVwbGljYXRpb25fc3RlcCgpOworfQog CiBzdGF0aWMgdm9pZAotYXBwbHlfaGFuZGxlX2luc2VydChTdHJpbmdJbmZvIHMpCitMUk1vZGlm eUJ1ZmZlckZsdXNoQ2FsbGJhY2sodm9pZCAqY29udGV4dCwgVHVwbGVUYWJsZVNsb3QgKnNsb3Qp Cit7CisJTFJNb2RpZnlCdWZmZXJGbHVzaENvbnRleHQgKmN0eCA9IChMUk1vZGlmeUJ1ZmZlckZs dXNoQ29udGV4dCAqKSBjb250ZXh0OworCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8gPSBj dHgtPnJlc3VsdFJlbEluZm87CisJRVN0YXRlCSAgICplc3RhdGUgPSBjdHgtPmVzdGF0ZTsKKwlM b2dpY2FsUmVwTXNnVHlwZSBzYXZlZF9jb21tYW5kOworCisJLyogUXVpY2sgZXhpdCBpZiBubyBp bmRleGVzIG9yIG5vIHRyaWdnZXJzICovCisJaWYgKCEocmVzdWx0UmVsSW5mby0+cmlfTnVtSW5k aWNlcyA+IDAgfHwKKwkJICAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MgIT0gTlVMTCAmJgor CQkgICAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X2FmdGVyX3JvdyB8 fAorCQkJcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X25ld190YWJsZSkp KSkKKwkJcmV0dXJuOworCisJLyogU2V0IHJlbGF0aW9uIGZvciBlcnJvciBjYWxsYmFjayAqLwor CWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwgPSBMYXN0UmVsOworCisJLyogU2V0IGN1cnJl bnQgY29tbWFuZCBmb3IgZXJyb3IgY2FsbGJhY2sgKi8KKwlzYXZlZF9jb21tYW5kID0gYXBwbHlf ZXJyb3JfY2FsbGJhY2tfYXJnLmNvbW1hbmQ7CisJYXBwbHlfZXJyb3JfY2FsbGJhY2tfYXJnLmNv bW1hbmQgPSBMT0dJQ0FMX1JFUF9NU0dfSU5TRVJUOworCisJLyogQ2FsbGVyIG11c3QgdGFrZSBj YXJlIG9mIG9wZW5pbmcgYW5kIGNsb3NpbmcgdGhlIGluZGljZXMgKi8KKworCS8qCisJICogSWYg dGhlcmUgYXJlIGFueSBpbmRleGVzLCB1cGRhdGUgdGhlbSBmb3IgYWxsIHRoZSBpbnNlcnRlZCB0 dXBsZXMsIGFuZAorCSAqIHJ1biBBRlRFUiBST1cgSU5TRVJUIHRyaWdnZXJzLgorCSAqLworCWlm IChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCkKKwl7CisJCUxpc3QJICAgKnJlY2hl Y2tJbmRleGVzOworCQlMaXN0CSAgICpjb25mbGljdGluZGV4ZXM7CisJCWJvb2wJCWNvbmZsaWN0 ID0gZmFsc2U7CisKKwkJY29uZmxpY3RpbmRleGVzID0gcmVzdWx0UmVsSW5mby0+cmlfb25Db25m bGljdEFyYml0ZXJJbmRleGVzOworCQlyZWNoZWNrSW5kZXhlcyA9CisJCQlFeGVjSW5zZXJ0SW5k ZXhUdXBsZXMocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJICBzbG90LCBlc3RhdGUsIGZhbHNlLAor CQkJCQkJCQkgIGNvbmZsaWN0aW5kZXhlcyA/IHRydWUgOiBmYWxzZSwKKwkJCQkJCQkJICAmY29u ZmxpY3QsCisJCQkJCQkJCSAgY29uZmxpY3RpbmRleGVzLCBmYWxzZSk7CisKKwkJLyoKKwkJICog Q2hlY2tzIHRoZSBjb25mbGljdCBpbmRleGVzIHRvIGZldGNoIHRoZSBjb25mbGljdGluZyBsb2Nh bCB0dXBsZQorCQkgKiBhbmQgcmVwb3J0cyB0aGUgY29uZmxpY3QuIFdlIHBlcmZvcm0gdGhpcyBj aGVjayBoZXJlLCBpbnN0ZWFkIG9mCisJCSAqIHBlcmZvcm1pbmcgYW4gYWRkaXRpb25hbCBpbmRl eCBzY2FuIGJlZm9yZSB0aGUgYWN0dWFsIGluc2VydGlvbiBhbmQKKwkJICogcmVwb3J0aW5nIHRo ZSBjb25mbGljdCBpZiBhbnkgY29uZmxpY3RpbmcgdHVwbGVzIGFyZSBmb3VuZC4gVGhpcyBpcwor CQkgKiB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgZXhlY3V0aW5nIHRoZSBleHRyYSBzY2FuIGZv ciBlYWNoIElOU0VSVAorCQkgKiBvcGVyYXRpb24sIGV2ZW4gd2hlbiBubyBjb25mbGljdCBhcmlz ZXMsIHdoaWNoIGNvdWxkIGludHJvZHVjZQorCQkgKiBzaWduaWZpY2FudCBvdmVyaGVhZCB0byBy ZXBsaWNhdGlvbiwgcGFydGljdWxhcmx5IGluIGNhc2VzIHdoZXJlCisJCSAqIGNvbmZsaWN0cyBh cmUgcmFyZS4KKwkJICoKKwkJICogWFhYIE9UT0gsIHRoaXMgY291bGQgbGVhZCB0byBjbGVhbi11 cCBlZmZvcnQgZm9yIGRlYWQgdHVwbGVzIGFkZGVkCisJCSAqIGluIGhlYXAgYW5kIGluZGV4IGlu IGNhc2Ugb2YgY29uZmxpY3RzLiBCdXQgYXMgY29uZmxpY3RzIHNob3VsZG4ndAorCQkgKiBiZSBh IGZyZXF1ZW50IHRoaW5nIHNvIHdlIHByZWZlcnJlZCB0byBzYXZlIHRoZSBwZXJmb3JtYW5jZQor CQkgKiBvdmVyaGVhZCBvZiBleHRyYSBzY2FuIGJlZm9yZSBlYWNoIGluc2VydGlvbi4KKwkJICov CisJCWlmIChjb25mbGljdCkKKwkJCUNoZWNrQW5kUmVwb3J0Q29uZmxpY3QocmVzdWx0UmVsSW5m bywgZXN0YXRlLCBDVF9JTlNFUlRfRVhJU1RTLAorCQkJCQkJCQkgICByZWNoZWNrSW5kZXhlcywg TlVMTCwgc2xvdCk7CisKKwkJRXhlY0FSSW5zZXJ0VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJ bmZvLAorCQkJCQkJCSBzbG90LCByZWNoZWNrSW5kZXhlcywKKwkJCQkJCQkgTlVMTCk7CisKKwkJ bGlzdF9mcmVlKHJlY2hlY2tJbmRleGVzKTsKKwl9CisKKwkvKgorCSAqIFRoZXJlJ3Mgbm8gaW5k ZXhlcywgYnV0IHNlZSBpZiB3ZSBuZWVkIHRvIHJ1biBBRlRFUiBST1cgSU5TRVJUIHRyaWdnZXJz CisJICogYW55d2F5LgorCSAqLworCWVsc2UgaWYgKHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNj ICE9IE5VTEwgJiYKKwkJCSAocmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0 X2FmdGVyX3JvdyB8fAorCQkJICByZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNl cnRfbmV3X3RhYmxlKSkKKwl7CisJCUV4ZWNBUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0 UmVsSW5mbywKKwkJCQkJCQkgc2xvdCwgTklMLAorCQkJCQkJCSBOVUxMKTsKKwl9CisKKwkvKgor CSAqIFhYWCB3ZSBzaG91bGQgaW4gdGhlb3J5IHBhc3MgYSBUcmFuc2l0aW9uQ2FwdHVyZVN0YXRl IG9iamVjdCB0byB0aGUKKwkgKiBhYm92ZSB0byBjYXB0dXJlIHRyYW5zaXRpb24gdHVwbGVzLCBi dXQgYWZ0ZXIgc3RhdGVtZW50IHRyaWdnZXJzIGRvbid0CisJICogYWN0dWFsbHkgZ2V0IGZpcmVk IGJ5IHJlcGxpY2F0aW9uIHlldCBhbnl3YXkKKwkgKi8KKworCS8qIFJlc2V0IHJlbGF0aW9uIGZv ciBlcnJvciBjYWxsYmFjayAqLworCWFwcGx5X2Vycm9yX2NhbGxiYWNrX2FyZy5yZWwgPSBOVUxM OworCisJLyogUmVzZXQgdGhlIGN1cnJlbnQgY29tbWFuZCAqLworCWFwcGx5X2Vycm9yX2NhbGxi YWNrX2FyZy5jb21tYW5kID0gc2F2ZWRfY29tbWFuZDsKK30KKworc3RhdGljIExSTXVsdGlJbnNl cnRSZXR1cm5TdGF0dXMKK2RvX211bHRpX2luc2VydHMoU3RyaW5nSW5mbyBzLCBMb2dpY2FsUmVw UmVsSWQgKnJlbGlkKQogewogCUxvZ2ljYWxSZXBSZWxNYXBFbnRyeSAqcmVsOwogCUxvZ2ljYWxS ZXBUdXBsZURhdGEgbmV3dHVwOwotCUxvZ2ljYWxSZXBSZWxJZCByZWxpZDsKIAlVc2VyQ29udGV4 dCB1Y3h0OwogCUFwcGx5RXhlY3V0aW9uRGF0YSAqZWRhdGE7CiAJRVN0YXRlCSAgICplc3RhdGU7 CkBAIC0yNDAxLDE3ICsyNTg4LDE0MyBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8g cykKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKIAlib29sCQlydW5fYXNfb3duZXI7CiAKKwlpZiAo TXVsdGlJbnNlcnRTdGF0ZSA9PSBOVUxMKQorCQliZWdpbl9yZXBsaWNhdGlvbl9zdGVwKCk7CisK KwkqcmVsaWQgPSBsb2dpY2FscmVwX3JlYWRfcmVsaWQocyk7CisKKwlpZiAoTXVsdGlJbnNlcnRT dGF0ZSAhPSBOVUxMICYmCisJCShMYXN0TXVsdGlJbnNlcnRSZWxJZCAhPSBJbnZhbGlkT2lkICYm CisJCSAqcmVsaWQgIT0gSW52YWxpZE9pZCAmJgorCQkgTGFzdE11bHRpSW5zZXJ0UmVsSWQgIT0g KnJlbGlkKSkKKwkJRmluaXNoTXVsdGlJbnNlcnRzKCk7CisKKwlpZiAoTXVsdGlJbnNlcnRTdGF0 ZSA9PSBOVUxMKQorCQlyZWwgPSBsb2dpY2FscmVwX3JlbF9vcGVuKCpyZWxpZCwgUm93RXhjbHVz aXZlTG9jayk7CisJZWxzZQorCQlyZWwgPSBMYXN0UmVsOworCisJaWYgKCFzaG91bGRfYXBwbHlf Y2hhbmdlc19mb3JfcmVsKHJlbCkpCisJeworCQlBc3NlcnQoTXVsdGlJbnNlcnRTdGF0ZSA9PSBO VUxMKTsKKworCQkvKgorCQkgKiBUaGUgcmVsYXRpb24gY2FuJ3QgYmVjb21lIGludGVyZXN0aW5n IGluIHRoZSBtaWRkbGUgb2YgdGhlCisJCSAqIHRyYW5zYWN0aW9uIHNvIGl0J3Mgc2FmZSB0byB1 bmxvY2sgaXQuCisJCSAqLworCQlsb2dpY2FscmVwX3JlbF9jbG9zZShyZWwsIFJvd0V4Y2x1c2l2 ZUxvY2spOworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlyZXR1cm4gTFJfTVVMVElfSU5T RVJUX1JFTF9TS0lQUEVEOworCX0KKworCS8qIEZvciBhIHBhcnRpdGlvbmVkIHRhYmxlLCBsZXQn cyBub3QgZG8gbXVsdGkgaW5zZXJ0cy4gKi8KKwlpZiAocmVsLT5sb2NhbHJlbC0+cmRfcmVsLT5y ZWxraW5kID09IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUpCisJeworCQlBc3NlcnQoTXVsdGlJ bnNlcnRTdGF0ZSA9PSBOVUxMKTsKKworCQkvKgorCQkgKiBUaGUgcmVsYXRpb24gY2FuJ3QgYmVj b21lIGludGVyZXN0aW5nIGluIHRoZSBtaWRkbGUgb2YgdGhlCisJCSAqIHRyYW5zYWN0aW9uIHNv IGl0J3Mgc2FmZSB0byB1bmxvY2sgaXQuCisJCSAqLworCQlsb2dpY2FscmVwX3JlbF9jbG9zZShy ZWwsIFJvd0V4Y2x1c2l2ZUxvY2spOworCQllbmRfcmVwbGljYXRpb25fc3RlcCgpOworCQlyZXR1 cm4gTFJfTVVMVElfSU5TRVJUX0RJU0FMTE9XRUQ7CisJfQorCiAJLyoKLQkgKiBRdWljayByZXR1 cm4gaWYgd2UgYXJlIHNraXBwaW5nIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgb3IgaGFuZGxp bmcKLQkgKiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCisJICogTWFrZSBzdXJlIHRoYXQgYW55IHVz ZXItc3VwcGxpZWQgY29kZSBydW5zIGFzIHRoZSB0YWJsZSBvd25lciwgdW5sZXNzCisJICogdGhl IHVzZXIgaGFzIG9wdGVkIG91dCBvZiB0aGF0IGJlaGF2aW9yLgogCSAqLwotCWlmIChpc19za2lw cGluZ19jaGFuZ2VzKCkgfHwKLQkJaGFuZGxlX3N0cmVhbWVkX3RyYW5zYWN0aW9uKExPR0lDQUxf UkVQX01TR19JTlNFUlQsIHMpKQotCQlyZXR1cm47CisJcnVuX2FzX293bmVyID0gTXlTdWJzY3Jp cHRpb24tPnJ1bmFzb3duZXI7CisJaWYgKCFydW5fYXNfb3duZXIpCisJCVN3aXRjaFRvVW50cnVz dGVkVXNlcihyZWwtPmxvY2FscmVsLT5yZF9yZWwtPnJlbG93bmVyLCAmdWN4dCk7CisKKwkvKiBT ZXQgcmVsYXRpb24gZm9yIGVycm9yIGNhbGxiYWNrICovCisJYXBwbHlfZXJyb3JfY2FsbGJhY2tf YXJnLnJlbCA9IHJlbDsKKworCWlmIChNdWx0aUluc2VydFN0YXRlID09IE5VTEwpCisJeworCQlv bGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oVG9wVHJhbnNhY3Rpb25Db250ZXh0KTsKKwor CQkvKiBJbml0aWFsaXplIHRoZSBleGVjdXRvciBzdGF0ZS4gKi8KKwkJTGFzdEVEYXRhID0gZWRh dGEgPSBjcmVhdGVfZWRhdGFfZm9yX3JlbGF0aW9uKHJlbCk7CisJCWVzdGF0ZSA9IGVkYXRhLT5l c3RhdGU7CisKKwkJTGFzdFJlbW90ZVNsb3QgPSByZW1vdGVzbG90ID0gTWFrZVR1cGxlVGFibGVT bG90KFJlbGF0aW9uR2V0RGVzY3IocmVsLT5sb2NhbHJlbCksCisJCQkJCQkJCQkJCQkJCSAmVFRT T3BzVmlydHVhbCk7CisKKwkJbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0ID0gKExSTW9kaWZ5 QnVmZmVyRmx1c2hDb250ZXh0ICopIHBhbGxvYyhzaXplb2YoTFJNb2RpZnlCdWZmZXJGbHVzaENv bnRleHQpKTsKKwkJbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0LT5yZXN1bHRSZWxJbmZvID0g ZWRhdGEtPnRhcmdldFJlbEluZm87CisJCW1vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dC0+ZXN0 YXRlID0gZXN0YXRlOworCisJCU11bHRpSW5zZXJ0U3RhdGUgPSB0YWJsZV9tb2RpZnlfYmVnaW4o ZWRhdGEtPnRhcmdldFJlbEluZm8tPnJpX1JlbGF0aW9uRGVzYywKKwkJCQkJCQkJCQkJICBUTV9G TEFHX0JBU19CVUxLV1JJVEUsCisJCQkJCQkJCQkJCSAgR2V0Q3VycmVudENvbW1hbmRJZCh0cnVl KSwKKwkJCQkJCQkJCQkJICAwLAorCQkJCQkJCQkJCQkgIExSTW9kaWZ5QnVmZmVyRmx1c2hDYWxs YmFjaywKKwkJCQkJCQkJCQkJICBtb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQpOworCQlMYXN0 UmVsID0gcmVsOworCQlMYXN0TXVsdGlJbnNlcnRSZWxJZCA9ICpyZWxpZDsKKworCQkvKiBXZSBt dXN0IG9wZW4gaW5kZXhlcyBoZXJlLiAqLworCQlFeGVjT3BlbkluZGljZXMoZWRhdGEtPnRhcmdl dFJlbEluZm8sIHRydWUpOworCQlJbml0Q29uZmxpY3RJbmRleGVzKGVkYXRhLT50YXJnZXRSZWxJ bmZvKTsKKworCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKKwl9CisJZWxzZQorCXsK KwkJQ29tbWFuZElkCWNpZDsKKworCQllZGF0YSA9IExhc3RFRGF0YTsKKwkJZXN0YXRlID0gZWRh dGEtPmVzdGF0ZTsKKwkJUmVzZXRFeHByQ29udGV4dChHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVz dGF0ZSkpOworCQlFeGVjQ2xlYXJUdXBsZShMYXN0UmVtb3RlU2xvdCk7CisJCXJlbW90ZXNsb3Qg PSBMYXN0UmVtb3RlU2xvdDsKKwkJY2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKKwkJ TXVsdGlJbnNlcnRTdGF0ZS0+Y2lkID0gY2lkOworCQllc3RhdGUtPmVzX291dHB1dF9jaWQgPSBj aWQ7CisJfQorCisJLyogUHJvY2VzcyBhbmQgc3RvcmUgcmVtb3RlIHR1cGxlIGluIHRoZSBzbG90 ICovCisJbG9naWNhbHJlcF9yZWFkX2luc2VydF92MihzLCAmbmV3dHVwKTsKKwlvbGRjdHggPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8oR2V0UGVyVHVwbGVNZW1vcnlDb250ZXh0KGVzdGF0ZSkpOwor CXNsb3Rfc3RvcmVfZGF0YShyZW1vdGVzbG90LCByZWwsICZuZXd0dXApOworCXNsb3RfZmlsbF9k ZWZhdWx0cyhyZWwsIGVzdGF0ZSwgcmVtb3Rlc2xvdCk7CisJTWVtb3J5Q29udGV4dFN3aXRjaFRv KG9sZGN0eCk7CisKKwlUYXJnZXRQcml2aWxlZ2VzQ2hlY2soZWRhdGEtPnRhcmdldFJlbEluZm8t PnJpX1JlbGF0aW9uRGVzYywgQUNMX0lOU0VSVCk7CisJRXhlY1JlbGF0aW9uTXVsdGlJbnNlcnQo TXVsdGlJbnNlcnRTdGF0ZSwgZWRhdGEtPnRhcmdldFJlbEluZm8sIGVzdGF0ZSwgcmVtb3Rlc2xv dCk7CisKKwkvKiBSZXNldCByZWxhdGlvbiBmb3IgZXJyb3IgY2FsbGJhY2sgKi8KKwlhcHBseV9l cnJvcl9jYWxsYmFja19hcmcucmVsID0gTlVMTDsKKworCWlmICghcnVuX2FzX293bmVyKQorCQlS ZXN0b3JlVXNlckNvbnRleHQoJnVjeHQpOworCisJQXNzZXJ0KE11bHRpSW5zZXJ0U3RhdGUgIT0g TlVMTCk7CisKKwlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJcmV0dXJuIExSX01VTFRJ X0lOU0VSVF9ET05FOworfQorCitzdGF0aWMgYm9vbAorZG9fc2luZ2xlX2luc2VydHMoU3RyaW5n SW5mbyBzLCBMb2dpY2FsUmVwUmVsSWQgcmVsaWQpCit7CisJTG9naWNhbFJlcFJlbE1hcEVudHJ5 ICpyZWw7CisJTG9naWNhbFJlcFR1cGxlRGF0YSBuZXd0dXA7CisJVXNlckNvbnRleHQgdWN4dDsK KwlBcHBseUV4ZWN1dGlvbkRhdGEgKmVkYXRhOworCUVTdGF0ZQkgICAqZXN0YXRlOworCVR1cGxl VGFibGVTbG90ICpyZW1vdGVzbG90OworCU1lbW9yeUNvbnRleHQgb2xkY3R4OworCWJvb2wJCXJ1 bl9hc19vd25lcjsKKworCUFzc2VydChyZWxpZCAhPSBJbnZhbGlkT2lkKTsKIAogCWJlZ2luX3Jl cGxpY2F0aW9uX3N0ZXAoKTsKIAotCXJlbGlkID0gbG9naWNhbHJlcF9yZWFkX2luc2VydChzLCAm bmV3dHVwKTsKIAlyZWwgPSBsb2dpY2FscmVwX3JlbF9vcGVuKHJlbGlkLCBSb3dFeGNsdXNpdmVM b2NrKTsKIAlpZiAoIXNob3VsZF9hcHBseV9jaGFuZ2VzX2Zvcl9yZWwocmVsKSkKIAl7CkBAIC0y NDIxLDcgKzI3MzQsNyBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAkJICov CiAJCWxvZ2ljYWxyZXBfcmVsX2Nsb3NlKHJlbCwgUm93RXhjbHVzaXZlTG9jayk7CiAJCWVuZF9y ZXBsaWNhdGlvbl9zdGVwKCk7Ci0JCXJldHVybjsKKwkJcmV0dXJuIGZhbHNlOwogCX0KIAogCS8q CkBAIC0yNDQzLDYgKzI3NTYsNyBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykK IAkJCQkJCQkJCQkmVFRTT3BzVmlydHVhbCk7CiAKIAkvKiBQcm9jZXNzIGFuZCBzdG9yZSByZW1v dGUgdHVwbGUgaW4gdGhlIHNsb3QgKi8KKwlsb2dpY2FscmVwX3JlYWRfaW5zZXJ0X3YyKHMsICZu ZXd0dXApOwogCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBsZU1lbW9y eUNvbnRleHQoZXN0YXRlKSk7CiAJc2xvdF9zdG9yZV9kYXRhKHJlbW90ZXNsb3QsIHJlbCwgJm5l d3R1cCk7CiAJc2xvdF9maWxsX2RlZmF1bHRzKHJlbCwgZXN0YXRlLCByZW1vdGVzbG90KTsKQEAg LTI0NjcsNiArMjc4MSwzNSBAQCBhcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKIAls b2dpY2FscmVwX3JlbF9jbG9zZShyZWwsIE5vTG9jayk7CiAKIAllbmRfcmVwbGljYXRpb25fc3Rl cCgpOworCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBIYW5kbGUgSU5TRVJUIG1lc3NhZ2Uu CisgKi8KK3N0YXRpYyB2b2lkCithcHBseV9oYW5kbGVfaW5zZXJ0KFN0cmluZ0luZm8gcykKK3sK KwlMUk11bHRpSW5zZXJ0UmV0dXJuU3RhdHVzIG1pX3N0YXR1czsKKwlMb2dpY2FsUmVwUmVsSWQg cmVsaWQ7CisKKwkvKgorCSAqIFF1aWNrIHJldHVybiBpZiB3ZSBhcmUgc2tpcHBpbmcgZGF0YSBt b2RpZmljYXRpb24gY2hhbmdlcyBvciBoYW5kbGluZworCSAqIHN0cmVhbWVkIHRyYW5zYWN0aW9u cy4KKwkgKi8KKwlpZiAoaXNfc2tpcHBpbmdfY2hhbmdlcygpIHx8CisJCWhhbmRsZV9zdHJlYW1l ZF90cmFuc2FjdGlvbihMT0dJQ0FMX1JFUF9NU0dfSU5TRVJULCBzKSkKKwkJcmV0dXJuOworCisJ bWlfc3RhdHVzID0gZG9fbXVsdGlfaW5zZXJ0cyhzLCAmcmVsaWQpOworCWlmIChtaV9zdGF0dXMg PT0gTFJfTVVMVElfSU5TRVJUX1JFTF9TS0lQUEVEIHx8CisJCW1pX3N0YXR1cyA9PSBMUl9NVUxU SV9JTlNFUlRfRE9ORSkKKwkJcmV0dXJuOworCisJZG9fc2luZ2xlX2luc2VydHMocywgcmVsaWQp OworCisJcmV0dXJuOwogfQogCiAvKgpAQCAtMjU1NCw2ICsyODk3LDggQEAgYXBwbHlfaGFuZGxl X3VwZGF0ZShTdHJpbmdJbmZvIHMpCiAJTWVtb3J5Q29udGV4dCBvbGRjdHg7CiAJYm9vbAkJcnVu X2FzX293bmVyOwogCisJRmluaXNoTXVsdGlJbnNlcnRzKCk7CisKIAkvKgogCSAqIFF1aWNrIHJl dHVybiBpZiB3ZSBhcmUgc2tpcHBpbmcgZGF0YSBtb2RpZmljYXRpb24gY2hhbmdlcyBvciBoYW5k bGluZwogCSAqIHN0cmVhbWVkIHRyYW5zYWN0aW9ucy4KQEAgLTI3NjEsNiArMzEwNiw4IEBAIGFw cGx5X2hhbmRsZV9kZWxldGUoU3RyaW5nSW5mbyBzKQogCU1lbW9yeUNvbnRleHQgb2xkY3R4Owog CWJvb2wJCXJ1bl9hc19vd25lcjsKIAorCUZpbmlzaE11bHRpSW5zZXJ0cygpOworCiAJLyoKIAkg KiBRdWljayByZXR1cm4gaWYgd2UgYXJlIHNraXBwaW5nIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5n ZXMgb3IgaGFuZGxpbmcKIAkgKiBzdHJlYW1lZCB0cmFuc2FjdGlvbnMuCkBAIC0zMjQ1LDYgKzM1 OTIsOCBAQCBhcHBseV9oYW5kbGVfdHJ1bmNhdGUoU3RyaW5nSW5mbyBzKQogCUxpc3RDZWxsICAg KmxjOwogCUxPQ0tNT0RFCWxvY2ttb2RlID0gQWNjZXNzRXhjbHVzaXZlTG9jazsKIAorCUZpbmlz aE11bHRpSW5zZXJ0cygpOworCiAJLyoKIAkgKiBRdWljayByZXR1cm4gaWYgd2UgYXJlIHNraXBw aW5nIGRhdGEgbW9kaWZpY2F0aW9uIGNoYW5nZXMgb3IgaGFuZGxpbmcKIAkgKiBzdHJlYW1lZCB0 cmFuc2FjdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5o IGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA2OWMzZWJmZjAwLi4xN2Iy ZTQyNjgzIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE0LDYgKzE0LDcgQEAKICNpZm5k ZWYgRVhFQ1VUT1JfSAogI2RlZmluZSBFWEVDVVRPUl9ICiAKKyNpbmNsdWRlICJhY2Nlc3MvdGFi bGVhbS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNkZXNjLmgiCiAjaW5jbHVkZSAiZm1nci5o IgogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCkBAIC02NjgsNiArNjY5LDkgQEAgZXh0 ZXJuIGJvb2wgUmVsYXRpb25GaW5kUmVwbFR1cGxlU2VxKFJlbGF0aW9uIHJlbCwgTG9ja1R1cGxl TW9kZSBsb2NrbW9kZSwKIAogZXh0ZXJuIHZvaWQgRXhlY1NpbXBsZVJlbGF0aW9uSW5zZXJ0KFJl c3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJCQkgRVN0YXRlICplc3RhdGUsIFR1 cGxlVGFibGVTbG90ICpzbG90KTsKK2V4dGVybiB2b2lkIEV4ZWNSZWxhdGlvbk11bHRpSW5zZXJ0 KFRhYmxlTW9kaWZ5U3RhdGUgKk11bHRpSW5zZXJ0U3RhdGUsCisJCQkJCQkJCQlSZXN1bHRSZWxJ bmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJRVN0YXRlICplc3RhdGUsIFR1cGxlVGFibGVT bG90ICpzbG90KTsKIGV4dGVybiB2b2lkIEV4ZWNTaW1wbGVSZWxhdGlvblVwZGF0ZShSZXN1bHRS ZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQkJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLCBFUFFTdGF0 ZSAqZXBxc3RhdGUsCiAJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3QgKnNlYXJjaHNsb3QsIFR1cGxl VGFibGVTbG90ICpzbG90KTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Nv bmZsaWN0LmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9jb25mbGljdC5oCmluZGV4IDAyY2I4 NGRhN2UuLjNiN2M5MTBiMDMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2Nv bmZsaWN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vY29uZmxpY3QuaApAQCAtNTUs NCArNTUsMTAgQEAgZXh0ZXJuIHZvaWQgUmVwb3J0QXBwbHlDb25mbGljdChFU3RhdGUgKmVzdGF0 ZSwgUmVzdWx0UmVsSW5mbyAqcmVsaW5mbywKIAkJCQkJCQkJUmVwT3JpZ2luSWQgbG9jYWxvcmln aW4sIFRpbWVzdGFtcFR6IGxvY2FsdHMpOwogZXh0ZXJuIHZvaWQgSW5pdENvbmZsaWN0SW5kZXhl cyhSZXN1bHRSZWxJbmZvICpyZWxJbmZvKTsKIAorZXh0ZXJuIHZvaWQgQ2hlY2tBbmRSZXBvcnRD b25mbGljdChSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkgICBFU3RhdGUg KmVzdGF0ZSwgQ29uZmxpY3RUeXBlIHR5cGUsCisJCQkJCQkJCSAgIExpc3QgKnJlY2hlY2tJbmRl eGVzLAorCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2VhcmNoc2xvdCwKKwkJCQkJCQkJICAg VHVwbGVUYWJsZVNsb3QgKnJlbW90ZXNsb3QpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxwcm90by5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRp b24vbG9naWNhbHByb3RvLmgKaW5kZXggYzQwOTYzOGEyZS4uM2YzYTdmMGEzMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKKysrIGIvc3JjL2luY2x1 ZGUvcmVwbGljYXRpb24vbG9naWNhbHByb3RvLmgKQEAgLTIyNiw2ICsyMjYsOCBAQCBleHRlcm4g dm9pZCBsb2dpY2FscmVwX3dyaXRlX2luc2VydChTdHJpbmdJbmZvIG91dCwgVHJhbnNhY3Rpb25J ZCB4aWQsCiAJCQkJCQkJCQlSZWxhdGlvbiByZWwsCiAJCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAq bmV3c2xvdCwKIAkJCQkJCQkJCWJvb2wgYmluYXJ5LCBCaXRtYXBzZXQgKmNvbHVtbnMpOworZXh0 ZXJuIExvZ2ljYWxSZXBSZWxJZCBsb2dpY2FscmVwX3JlYWRfcmVsaWQoU3RyaW5nSW5mbyBpbik7 CitleHRlcm4gdm9pZCBsb2dpY2FscmVwX3JlYWRfaW5zZXJ0X3YyKFN0cmluZ0luZm8gaW4sIExv Z2ljYWxSZXBUdXBsZURhdGEgKm5ld3R1cCk7CiBleHRlcm4gTG9naWNhbFJlcFJlbElkIGxvZ2lj YWxyZXBfcmVhZF9pbnNlcnQoU3RyaW5nSW5mbyBpbiwgTG9naWNhbFJlcFR1cGxlRGF0YSAqbmV3 dHVwKTsKIGV4dGVybiB2b2lkIGxvZ2ljYWxyZXBfd3JpdGVfdXBkYXRlKFN0cmluZ0luZm8gb3V0 LCBUcmFuc2FjdGlvbklkIHhpZCwKIAkJCQkJCQkJCVJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKaW5kZXggZGU1Njk5ZTA3OC4uMDdhNjFkMDg2ZCAxMDA2NDQKLS0tIGEvc3Jj L3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5 cGVkZWZzLmxpc3QKQEAgLTE0NzUsNiArMTQ3NSw4IEBAIExQVEhSRUFEX1NUQVJUX1JPVVRJTkUK IExQVFNUUgogTFBWT0lECiBMUFdTVFIKK0xSTW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0CitMUk11 bHRpSW5zZXJ0UmV0dXJuU3RhdHVzCiBMU0VHCiBMVUlECiBMVlJlbFN0YXRlCi0tIAoyLjQzLjAK Cg== --0000000000002e451e06208f8d57 Content-Type: application/x-patch; name="v23-0001-Introduce-new-Table-AM-for-multi-inserts.patch" Content-Disposition: attachment; filename="v23-0001-Introduce-new-Table-AM-for-multi-inserts.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0aiv5fa0 RnJvbSA5ODQ2ZDRlOWQ4NDVkMjVjOWI1N2EwNTRiNDI4MDMwMTllNDFjMGU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgQXVnIDIwMjQgMDQ6NDU6NDcgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyMyAxLzVdIEludHJvZHVjZSBuZXcgVGFibGUgQU0gZm9yIG11 bHRpIGluc2VydHMKClVudGlsIG5vdywgaXQncyB0aGUgQ09QWSAuLi4gRlJPTSBjb21tYW5kIHVz aW5nIG11bHRpIGluc2VydHMKKGkuZS4gYnVmZmVyIHNvbWUgdHVwbGVzIGFuZCBpbnNlcnRzIHRo ZW0gdG8gdGFibGUgYXQgb25jZSkuClZhcmlvdXMgb3RoZXIgY29tbWFuZHMgY2FuIGJlbmVmaXQg ZnJvbSB0aGlzIG11bHRpIGluc2VydApsb2dpYyBbUmV1c2FibGVdLgoKQWxzbywgdGhlcmUncyBh IG5lZWQgdG8gaGF2ZSB0aGVzZSBtdWx0aSBpbnNlcnQgQU1zCihBY2Nlc3MgTWV0aG9kcykgYXMg c2Nhbi1saWtlIEFQSSBbVXNhYmlsaXR5XS4KCkFsc28sIHRoZXJlJ3MgYSBuZWVkIGFsbG93IHZh cmlvdXMgdGFibGUgQU1zIGRlZmluZSB0aGVpciBvd24KYnVmZmVyaW5nIGFuZCBmbHVzaGluZyBz dHJhdGVneSBbRmxleGliaWxpdHldLgoKVGhpcyBjb21taXQgaW50cm9kdWNlcywgbmV3IHRhYmxl IEFNcyBmb3IgbXVsdGkgaW5zZXJ0cyB0byBoZWxwCmFjaGlldmUgYWxsIG9mIHRoZSBhYm92ZS4K ClVwY29taW5nIGNvbW1pdHMgd2lsbCBoYXZlIHRoZXNlIG5ldyB0YWJsZSBBTXMgYmVpbmcgdXNl ZCBmb3IKdmFyaW91cyBvdGhlciBjb21tYW5kcy4KCkF1dGhvcjogQmhhcmF0aCBSdXBpcmVkZHkK UmV2aWV3ZWQtYnk6IEplZmYgRGF2aXMKRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNx bC5vcmcvbWVzc2FnZS1pZC8yMDIwMDkyNDAyNDEyOC5reWszcjVnN2RudTNmeHh4QGFsYXAzLmFu YXJhemVsLmRlCkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvQ0FMajJBQ1ZpOWVUUllSJTNEZ2RjYTV3eHRqM0trXzlxOXFWY2N4c1MxaG5nVEdPQ2pQd1El NDBtYWlsLmdtYWlsLmNvbQpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9t ZXNzYWdlLWlkLzg2MzMxNzFjYjAzNGFhZmMyNjBmZGYzN2RmMDRiNmM3NzlhYTFlMmYuY2FtZWwl NDBqLWRhdmlzLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAg ICAgfCAxOTcgKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMgfCAgIDYgKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxl YW1hcGkuYyAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAg ICAgIHwgIDM4ICsrKysrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAgICAgICAg IHwgIDgwICsrKysrKysrKwogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgICAg ICB8ICAgMyArCiA2IGZpbGVzIGNoYW5nZWQsIDMyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCA5MWIyMDE0N2EwLi44NmQ2MGU0NzZi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtNjUsNiArNjUsNyBAQAogI2luY2x1ZGUg InV0aWxzL2RhdHVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5j bHVkZSAidXRpbHMvaW52YWwuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgogI2luY2x1 ZGUgInV0aWxzL3JlbGNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgogI2luY2x1 ZGUgInV0aWxzL3NwY2NhY2hlLmgiCkBAIC0xMTMsNyArMTE0LDcgQEAgc3RhdGljIGludAlib3R0 b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVPcCAqZGVsc3RhdGUpOwogc3RhdGlj IFhMb2dSZWNQdHIgbG9nX2hlYXBfbmV3X2NpZChSZWxhdGlvbiByZWxhdGlvbiwgSGVhcFR1cGxl IHR1cCk7CiBzdGF0aWMgSGVhcFR1cGxlIEV4dHJhY3RSZXBsaWNhSWRlbnRpdHkoUmVsYXRpb24g cmVsYXRpb24sIEhlYXBUdXBsZSB0cCwgYm9vbCBrZXlfcmVxdWlyZWQsCiAJCQkJCQkJCQkJYm9v bCAqY29weSk7Ci0KK3N0YXRpYyB2b2lkIGhlYXBfbW9kaWZ5X2luc2VydF9lbmRfY2FsbGJhY2so VGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUpOwogCiAvKgogICogRWFjaCB0dXBsZSBsb2NrIG1vZGUg aGFzIGEgY29ycmVzcG9uZGluZyBoZWF2eXdlaWdodCBsb2NrLCBhbmQgb25lIG9yIHR3bwpAQCAt MjYxMiw2ICsyNjEzLDIwMCBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwg VHVwbGVUYWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAJcGdzdGF0X2NvdW50X2hlYXBf aW5zZXJ0KHJlbGF0aW9uLCBudHVwbGVzKTsKIH0KIAorLyoKKyAqIEluaXRpYWxpemUgaGVhcCBt b2RpZnkgc3RhdGUuCisgKi8KK1RhYmxlTW9kaWZ5U3RhdGUgKgoraGVhcF9tb2RpZnlfYmVnaW4o UmVsYXRpb24gcmVsLCBpbnQgbW9kaWZ5X2ZsYWdzLAorCQkJCSAgQ29tbWFuZElkIGNpZCwgaW50 IG9wdGlvbnMsCisJCQkJICBUYWJsZU1vZGlmeUJ1ZmZlckZsdXNoQ2FsbGJhY2sgbW9kaWZ5X2J1 ZmZlcl9mbHVzaF9jYWxsYmFjaywKKwkJCQkgIHZvaWQgKm1vZGlmeV9idWZmZXJfZmx1c2hfY29u dGV4dCkKK3sKKwlUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZTsKKwlNZW1vcnlDb250ZXh0IGNvbnRl eHQ7CisJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCisJY29udGV4dCA9IEFsbG9jU2V0Q29u dGV4dENyZWF0ZShUb3BUcmFuc2FjdGlvbkNvbnRleHQsCisJCQkJCQkJCQkiaGVhcF9tb2RpZnkg bWVtb3J5IGNvbnRleHQiLAorCQkJCQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwlv bGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKGNvbnRleHQpOworCXN0YXRlID0gcGFs bG9jMChzaXplb2YoVGFibGVNb2RpZnlTdGF0ZSkpOworCXN0YXRlLT5yZWwgPSByZWw7CisJc3Rh dGUtPm1vZGlmeV9mbGFncyA9IG1vZGlmeV9mbGFnczsKKwlzdGF0ZS0+bWVtX2N4dCA9IGNvbnRl eHQ7CisJc3RhdGUtPmNpZCA9IGNpZDsKKwlzdGF0ZS0+b3B0aW9ucyA9IG9wdGlvbnM7CisJc3Rh dGUtPm1vZGlmeV9idWZmZXJfZmx1c2hfY2FsbGJhY2sgPSBtb2RpZnlfYnVmZmVyX2ZsdXNoX2Nh bGxiYWNrOworCXN0YXRlLT5tb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQgPSBtb2RpZnlfYnVm ZmVyX2ZsdXNoX2NvbnRleHQ7CisJc3RhdGUtPm1vZGlmeV9lbmRfY2FsbGJhY2sgPSBOVUxMOwkv KiBUbyBiZSBpbnN0YWxsZWQgbGF6aWx5ICovCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNv bnRleHQpOworCisJcmV0dXJuIHN0YXRlOworfQorCisvKgorICogU3RvcmUgcGFzc2VkLWluIHR1 cGxlIGludG8gaW4tbWVtb3J5IGJ1ZmZlcmVkIHNsb3RzLiBXaGVuIGZ1bGwsIGluc2VydAorICog bXVsdGlwbGUgdHVwbGVzIGZyb20gdGhlIGJ1ZmZlcnMgaW50byBoZWFwLgorICovCit2b2lkCito ZWFwX21vZGlmeV9idWZmZXJfaW5zZXJ0KFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlLAorCQkJCQkJ ICBUdXBsZVRhYmxlU2xvdCAqc2xvdCkKK3sKKwlUdXBsZVRhYmxlU2xvdCAqZHN0c2xvdDsKKwlI ZWFwSW5zZXJ0U3RhdGUgKmlzdGF0ZTsKKwlIZWFwTXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZTsK KwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKHN0YXRlLT5tZW1fY3h0KTsKKworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5p dGlhbGl6ZSBoZWFwIGluc2VydCBzdGF0ZSAqLworCWlmIChzdGF0ZS0+ZGF0YSA9PSBOVUxMKQor CXsKKwkJaXN0YXRlID0gKEhlYXBJbnNlcnRTdGF0ZSAqKSBwYWxsb2MwKHNpemVvZihIZWFwSW5z ZXJ0U3RhdGUpKTsKKwkJaXN0YXRlLT5iaXN0YXRlID0gTlVMTDsKKwkJaXN0YXRlLT5taXN0YXRl ID0gTlVMTDsKKwkJc3RhdGUtPmRhdGEgPSBpc3RhdGU7CisJCW1pc3RhdGUgPSAoSGVhcE11bHRp SW5zZXJ0U3RhdGUgKikgcGFsbG9jMChzaXplb2YoSGVhcE11bHRpSW5zZXJ0U3RhdGUpKTsKKwkJ bWlzdGF0ZS0+c2xvdHMgPSAoVHVwbGVUYWJsZVNsb3QgKiopIHBhbGxvYzAoc2l6ZW9mKFR1cGxl VGFibGVTbG90ICopICogSEVBUF9NQVhfQlVGRkVSRURfU0xPVFMpOworCQlpc3RhdGUtPm1pc3Rh dGUgPSBtaXN0YXRlOworCQltaXN0YXRlLT5tZW1fY3h0ID0gQWxsb2NTZXRDb250ZXh0Q3JlYXRl KEN1cnJlbnRNZW1vcnlDb250ZXh0LAorCQkJCQkJCQkJCQkJICJoZWFwX211bHRpX2luc2VydCBt ZW1vcnkgY29udGV4dCIsCisJCQkJCQkJCQkJCQkgQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisK KwkJaWYgKChzdGF0ZS0+bW9kaWZ5X2ZsYWdzICYgVE1fRkxBR19CQVNfQlVMS1dSSVRFKSAhPSAw KQorCQkJaXN0YXRlLT5iaXN0YXRlID0gR2V0QnVsa0luc2VydFN0YXRlKCk7CisKKwkJc3RhdGUt Pm1vZGlmeV9lbmRfY2FsbGJhY2sgPSBoZWFwX21vZGlmeV9pbnNlcnRfZW5kX2NhbGxiYWNrOwor CX0KKworCWlzdGF0ZSA9IChIZWFwSW5zZXJ0U3RhdGUgKikgc3RhdGUtPmRhdGE7CisJQXNzZXJ0 KGlzdGF0ZS0+bWlzdGF0ZSAhPSBOVUxMKTsKKwltaXN0YXRlID0gaXN0YXRlLT5taXN0YXRlOwor CisJZHN0c2xvdCA9IG1pc3RhdGUtPnNsb3RzW21pc3RhdGUtPmN1cl9zbG90c107CisJaWYgKGRz dHNsb3QgPT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIFdlIHVzZSB2aXJ0dWFsIHR1cGxlIHNsb3Rz IGJ1ZmZlcmVkIHNsb3RzIGZvciBsZXZlcmFnaW5nIHRoZQorCQkgKiBvcHRpbWl6YXRpb24gaXQg cHJvdmlkZXMgdG8gbWluaW1pemUgcGh5c2ljYWwgZGF0YSBjb3B5aW5nLiBUaGUKKwkJICogdmly dHVhbCBzbG90IGdldHMgbWF0ZXJpYWxpemVkIHdoZW4gd2UgY29weSAodmlhIGJlbG93CisJCSAq IEV4ZWNDb3B5U2xvdCkgdGhlIHR1cGxlcyBmcm9tIHRoZSBzb3VyY2Ugc2xvdCB3aGljaCBjYW4g YmUgb2YgYW55CisJCSAqIHR5cGUuIFRoaXMgd2F5LCBpdCBpcyBlbnN1cmVkIHRoYXQgdGhlIHR1 cGxlIHN0b3JhZ2UgZG9lc24ndCBkZXBlbmQKKwkJICogb24gZXh0ZXJuYWwgbWVtb3J5LCBiZWNh dXNlIGFsbCB0aGUgZGF0dW1zIHRoYXQgYXJlbid0IHBhc3NlZCBieQorCQkgKiB2YWx1ZSBhcmUg Y29waWVkIGludG8gdGhlIHNsb3QncyBtZW1vcnkgY29udGV4dC4KKwkJICovCisJCWRzdHNsb3Qg PSBNYWtlVHVwbGVUYWJsZVNsb3QoUmVsYXRpb25HZXREZXNjcihzdGF0ZS0+cmVsKSwKKwkJCQkJ CQkJCSAmVFRTT3BzVmlydHVhbCk7CisJCW1pc3RhdGUtPnNsb3RzW21pc3RhdGUtPmN1cl9zbG90 c10gPSBkc3RzbG90OworCX0KKworCUFzc2VydChUVFNfSVNfVklSVFVBTChkc3RzbG90KSk7CisK KwkvKgorCSAqIE5vdGUgdGhhdCB0aGUgY29weSBjbGVhcnMgdGhlIHByZXZpb3VzIGRlc3RpbmF0 aW9uIHNsb3QgY29udGVudHMsIHNvCisJICogdGhlcmUncyBubyBuZWVkIG9mIGV4cGxpY2l0IEV4 ZWNDbGVhclR1cGxlIGhlcmUuCisJICovCisJRXhlY0NvcHlTbG90KGRzdHNsb3QsIHNsb3QpOwor CisJbWlzdGF0ZS0+Y3VyX3Nsb3RzKys7CisKKwlpZiAobWlzdGF0ZS0+Y3VyX3Nsb3RzID49IEhF QVBfTUFYX0JVRkZFUkVEX1NMT1RTKQorCQloZWFwX21vZGlmeV9idWZmZXJfZmx1c2goc3RhdGUp OworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworfQorCisvKgorICogSW5z ZXJ0IG11bHRpcGxlIHR1cGxlcyBmcm9tIGluLW1lbW9yeSBidWZmZXJlZCBzbG90cyBpbnRvIGhl YXAuCisgKi8KK3ZvaWQKK2hlYXBfbW9kaWZ5X2J1ZmZlcl9mbHVzaChUYWJsZU1vZGlmeVN0YXRl ICpzdGF0ZSkKK3sKKwlIZWFwSW5zZXJ0U3RhdGUgKmlzdGF0ZTsKKwlIZWFwTXVsdGlJbnNlcnRT dGF0ZSAqbWlzdGF0ZTsKKwlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CisKKwkvKiBRdWljayBl eGl0IGlmIHdlIGhhdmVuJ3QgaW5zZXJ0ZWQgYW55dGhpbmcgeWV0ICovCisJaWYgKHN0YXRlLT5k YXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWlzdGF0ZSA9IChIZWFwSW5zZXJ0U3RhdGUgKikg c3RhdGUtPmRhdGE7CisJQXNzZXJ0KGlzdGF0ZS0+bWlzdGF0ZSAhPSBOVUxMKTsKKwltaXN0YXRl ID0gaXN0YXRlLT5taXN0YXRlOworCisJLyogUXVpY2sgZXhpdCBpZiB3ZSBoYXZlIGZsdXNoZWQg YWxyZWFkeSAqLworCWlmIChtaXN0YXRlLT5jdXJfc2xvdHMgPT0gMCkKKwkJcmV0dXJuOworCisJ LyoKKwkgKiBoZWFwX211bHRpX2luc2VydCBtYXkgbGVhayBtZW1vcnksIHNvIHN3aXRjaCB0byBz aG9ydC1saXZlZCBtZW1vcnkKKwkgKiBjb250ZXh0IGJlZm9yZSBjYWxsaW5nIGl0LgorCSAqLwor CW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8obWlzdGF0ZS0+bWVtX2N4dCk7CisK KwloZWFwX211bHRpX2luc2VydChzdGF0ZS0+cmVsLCBtaXN0YXRlLT5zbG90cywgbWlzdGF0ZS0+ Y3VyX3Nsb3RzLAorCQkJCQkgIHN0YXRlLT5jaWQsIHN0YXRlLT5vcHRpb25zLCBpc3RhdGUtPmJp c3RhdGUpOworCisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOworCU1lbW9yeUNv bnRleHRSZXNldChtaXN0YXRlLT5tZW1fY3h0KTsKKworCWlmIChzdGF0ZS0+bW9kaWZ5X2J1ZmZl cl9mbHVzaF9jYWxsYmFjayAhPSBOVUxMKQorCXsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBtaXN0 YXRlLT5jdXJfc2xvdHM7IGkrKykKKwkJCXN0YXRlLT5tb2RpZnlfYnVmZmVyX2ZsdXNoX2NhbGxi YWNrKHN0YXRlLT5tb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQsCisJCQkJCQkJCQkJCQltaXN0 YXRlLT5zbG90c1tpXSk7CisJfQorCisJbWlzdGF0ZS0+Y3VyX3Nsb3RzID0gMDsKK30KKworLyoK KyAqIEhlYXAgaW5zZXJ0IHNwZWNpZmljIGNhbGxiYWNrIHVzZWQgZm9yIHBlcmZvcm1pbmcgd29y ayBhdCB0aGUgZW5kIGxpa2UKKyAqIGZsdXNoaW5nIGJ1ZmZlcmVkIHR1cGxlcyBpZiBhbnksIGNs ZWFuaW5nIHVwIHRoZSBpbnNlcnQgc3RhdGUgYW5kIGJ1ZmZlcmVkCisgKiBzbG90cy4KKyAqLwor c3RhdGljIHZvaWQKK2hlYXBfbW9kaWZ5X2luc2VydF9lbmRfY2FsbGJhY2soVGFibGVNb2RpZnlT dGF0ZSAqc3RhdGUpCit7CisJSGVhcEluc2VydFN0YXRlICppc3RhdGU7CisKKwkvKiBRdWljayBl eGl0IGlmIHdlIGhhdmVuJ3QgaW5zZXJ0ZWQgYW55dGhpbmcgeWV0ICovCisJaWYgKHN0YXRlLT5k YXRhID09IE5VTEwpCisJCXJldHVybjsKKworCWlzdGF0ZSA9IChIZWFwSW5zZXJ0U3RhdGUgKikg c3RhdGUtPmRhdGE7CisKKwlpZiAoaXN0YXRlLT5taXN0YXRlICE9IE5VTEwpCisJeworCQlIZWFw TXVsdGlJbnNlcnRTdGF0ZSAqbWlzdGF0ZSA9IGlzdGF0ZS0+bWlzdGF0ZTsKKworCQloZWFwX21v ZGlmeV9idWZmZXJfZmx1c2goc3RhdGUpOworCisJCUFzc2VydChtaXN0YXRlLT5jdXJfc2xvdHMg PT0gMCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBIRUFQX01BWF9CVUZGRVJFRF9TTE9UUyAm JiBtaXN0YXRlLT5zbG90c1tpXSAhPSBOVUxMOyBpKyspCisJCQlFeGVjRHJvcFNpbmdsZVR1cGxl VGFibGVTbG90KG1pc3RhdGUtPnNsb3RzW2ldKTsKKworCQlNZW1vcnlDb250ZXh0RGVsZXRlKG1p c3RhdGUtPm1lbV9jeHQpOworCX0KKworCWlmIChpc3RhdGUtPmJpc3RhdGUgIT0gTlVMTCkKKwkJ RnJlZUJ1bGtJbnNlcnRTdGF0ZShpc3RhdGUtPmJpc3RhdGUpOworfQorCisvKgorICogQ2xlYW4g aGVhcCBtb2RpZnkgc3RhdGUuCisgKi8KK3ZvaWQKK2hlYXBfbW9kaWZ5X2VuZChUYWJsZU1vZGlm eVN0YXRlICpzdGF0ZSkKK3sKKwlpZiAoc3RhdGUtPm1vZGlmeV9lbmRfY2FsbGJhY2sgIT0gTlVM TCkKKwkJc3RhdGUtPm1vZGlmeV9lbmRfY2FsbGJhY2soc3RhdGUpOworCisJTWVtb3J5Q29udGV4 dERlbGV0ZShzdGF0ZS0+bWVtX2N4dCk7Cit9CisKIC8qCiAgKglzaW1wbGVfaGVhcF9pbnNlcnQg LSBpbnNlcnQgYSB0dXBsZQogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV9oYW5kbGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxl ci5jCmluZGV4IDFjNmRhMjg2ZDQuLjNjYWNmZGY4NzEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMjYxMSw2ICsyNjExLDEyIEBAIHN0YXRpYyBjb25zdCBU YWJsZUFtUm91dGluZSBoZWFwYW1fbWV0aG9kcyA9IHsKIAkudHVwbGVfaW5zZXJ0X3NwZWN1bGF0 aXZlID0gaGVhcGFtX3R1cGxlX2luc2VydF9zcGVjdWxhdGl2ZSwKIAkudHVwbGVfY29tcGxldGVf c3BlY3VsYXRpdmUgPSBoZWFwYW1fdHVwbGVfY29tcGxldGVfc3BlY3VsYXRpdmUsCiAJLm11bHRp X2luc2VydCA9IGhlYXBfbXVsdGlfaW5zZXJ0LAorCisJLnR1cGxlX21vZGlmeV9iZWdpbiA9IGhl YXBfbW9kaWZ5X2JlZ2luLAorCS50dXBsZV9tb2RpZnlfYnVmZmVyX2luc2VydCA9IGhlYXBfbW9k aWZ5X2J1ZmZlcl9pbnNlcnQsCisJLnR1cGxlX21vZGlmeV9idWZmZXJfZmx1c2ggPSBoZWFwX21v ZGlmeV9idWZmZXJfZmx1c2gsCisJLnR1cGxlX21vZGlmeV9lbmQgPSBoZWFwX21vZGlmeV9lbmQs CisKIAkudHVwbGVfZGVsZXRlID0gaGVhcGFtX3R1cGxlX2RlbGV0ZSwKIAkudHVwbGVfdXBkYXRl ID0gaGVhcGFtX3R1cGxlX3VwZGF0ZSwKIAkudHVwbGVfbG9jayA9IGhlYXBhbV90dXBsZV9sb2Nr LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW1hcGkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtYXBpLmMKaW5kZXggZTliNTk4MjU2Zi4uNzcy ZjI5YjFiNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW1hcGku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbWFwaS5jCkBAIC05Nyw2ICs5 NywxMSBAQCBHZXRUYWJsZUFtUm91dGluZShPaWQgYW1oYW5kbGVyKQogCUFzc2VydChyb3V0aW5l LT5zY2FuX3NhbXBsZV9uZXh0X2Jsb2NrICE9IE5VTEwpOwogCUFzc2VydChyb3V0aW5lLT5zY2Fu X3NhbXBsZV9uZXh0X3R1cGxlICE9IE5VTEwpOwogCisJQXNzZXJ0KHJvdXRpbmUtPnR1cGxlX21v ZGlmeV9iZWdpbiAhPSBOVUxMKTsKKwlBc3NlcnQocm91dGluZS0+dHVwbGVfbW9kaWZ5X2J1ZmZl cl9pbnNlcnQgIT0gTlVMTCk7CisJQXNzZXJ0KHJvdXRpbmUtPnR1cGxlX21vZGlmeV9idWZmZXJf Zmx1c2ggIT0gTlVMTCk7CisJQXNzZXJ0KHJvdXRpbmUtPnR1cGxlX21vZGlmeV9lbmQgIT0gTlVM TCk7CisKIAlyZXR1cm4gcm91dGluZTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDllOWFlYzg4 YTYuLjhjNDRhNzgwOGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTI3MSw2ICsyNzEsMzIgQEAgdHlw ZWRlZiBlbnVtCiAJUFJVTkVfVkFDVVVNX0NMRUFOVVAsCQkvKiBWQUNVVU0gMm5kIGhlYXAgcGFz cyAqLwogfSBQcnVuZVJlYXNvbjsKIAorLyoKKyAqIE1heGltdW0gbnVtYmVyIG9mIHNsb3RzIHRo YXQgbXVsdGktaW5zZXJ0IGJ1ZmZlcnMgY2FuIGhvbGQuCisgKgorICogQ2F1dGlvbjogRG9uJ3Qg bWFrZSB0aGlzIHRvbyBiaWcsIGFzIHdlIGNvdWxkIGVuZCB1cCB3aXRoIHRoaXMgbWFueSB0dXBs ZXMKKyAqIHN0b3JlZCBpbiBtdWx0aSBpbnNlcnQgYnVmZmVyLgorICovCisjZGVmaW5lIEhFQVBf TUFYX0JVRkZFUkVEX1NMT1RTCQkxMDAwCisKK3R5cGVkZWYgc3RydWN0IEhlYXBNdWx0aUluc2Vy dFN0YXRlCit7CisJLyogQXJyYXkgb2YgYnVmZmVyZWQgc2xvdHMgKi8KKwlUdXBsZVRhYmxlU2xv dCAqKnNsb3RzOworCisJLyogTnVtYmVyIG9mIGJ1ZmZlcmVkIHNsb3RzIGN1cnJlbnRseSBoZWxk ICovCisJaW50CQkJY3VyX3Nsb3RzOworCisJTWVtb3J5Q29udGV4dCBtZW1fY3h0OworfSBIZWFw TXVsdGlJbnNlcnRTdGF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgSGVhcEluc2VydFN0YXRlCit7CisJ c3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKmJpc3RhdGU7CisJSGVhcE11bHRpSW5zZXJ0U3Rh dGUgKm1pc3RhdGU7Cit9IEhlYXBJbnNlcnRTdGF0ZTsKKworCiAvKiAtLS0tLS0tLS0tLS0tLS0t CiAgKgkJZnVuY3Rpb24gcHJvdG90eXBlcyBmb3IgaGVhcCBhY2Nlc3MgbWV0aG9kCiAgKgpAQCAt MzIxLDYgKzM0NywxOCBAQCBleHRlcm4gdm9pZCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlv biwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIGV4dGVybiB2b2lkIGhlYXBfbXVsdGlf aW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBzdHJ1Y3QgVHVwbGVUYWJsZVNsb3QgKipzbG90cywK IAkJCQkJCQkgIGludCBudHVwbGVzLCBDb21tYW5kSWQgY2lkLCBpbnQgb3B0aW9ucywKIAkJCQkJ CQkgIEJ1bGtJbnNlcnRTdGF0ZSBiaXN0YXRlKTsKKworZXh0ZXJuIFRhYmxlTW9kaWZ5U3RhdGUg KmhlYXBfbW9kaWZ5X2JlZ2luKFJlbGF0aW9uIHJlbCwKKwkJCQkJCQkJCQkgICBpbnQgbW9kaWZ5 X2ZsYWdzLAorCQkJCQkJCQkJCSAgIENvbW1hbmRJZCBjaWQsCisJCQkJCQkJCQkJICAgaW50IG9w dGlvbnMsCisJCQkJCQkJCQkJICAgVGFibGVNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNrIG1vZGlm eV9idWZmZXJfZmx1c2hfY2FsbGJhY2ssCisJCQkJCQkJCQkJICAgdm9pZCAqbW9kaWZ5X2J1ZmZl cl9mbHVzaF9jb250ZXh0KTsKK2V4dGVybiB2b2lkIGhlYXBfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQo VGFibGVNb2RpZnlTdGF0ZSAqc3RhdGUsCisJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpzbG90 KTsKK2V4dGVybiB2b2lkIGhlYXBfbW9kaWZ5X2J1ZmZlcl9mbHVzaChUYWJsZU1vZGlmeVN0YXRl ICpzdGF0ZSk7CitleHRlcm4gdm9pZCBoZWFwX21vZGlmeV9lbmQoVGFibGVNb2RpZnlTdGF0ZSAq c3RhdGUpOworCiBleHRlcm4gVE1fUmVzdWx0IGhlYXBfZGVsZXRlKFJlbGF0aW9uIHJlbGF0aW9u LCBJdGVtUG9pbnRlciB0aWQsCiAJCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3Nz Y2hlY2ssIGJvb2wgd2FpdCwKIAkJCQkJCQkgc3RydWN0IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBi b29sIGNoYW5naW5nUGFydCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBkYTY2MTI4OWMxLi4wODNk OWFjODIwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKQEAgLTI1NSw2ICsyNTUsMzkgQEAgdHlwZWRlZiBz dHJ1Y3QgVE1fSW5kZXhEZWxldGVPcAogCVRNX0luZGV4U3RhdHVzICpzdGF0dXM7CiB9IFRNX0lu ZGV4RGVsZXRlT3A7CiAKKy8qIFRhYmxlIG1vZGlmeSBmbGFncyAqLworCisvKiBVc2UgQkFTX0JV TEtXUklURSBidWZmZXIgYWNjZXNzIHN0cmF0ZWd5ICovCisjZGVmaW5lIFRNX0ZMQUdfQkFTX0JV TEtXUklURQkweDAwMDAwMQorCitzdHJ1Y3QgVGFibGVNb2RpZnlTdGF0ZTsKKworLyogQ2FsbGJh Y2sgaW52b2tlZCBmb3IgZWFjaCB0dXBsZSB0aGF0IGdldHMgZmx1c2hlZCB0byBkaXNrIGZyb20g YnVmZmVyICovCit0eXBlZGVmIHZvaWQgKCpUYWJsZU1vZGlmeUJ1ZmZlckZsdXNoQ2FsbGJhY2sp ICh2b2lkICpjb250ZXh0LAorCQkJCQkJCQkJCQkJVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCisv KiBUYWJsZSBBTSBzcGVjaWZpYyBjYWxsYmFjayB0aGF0IGdldHMgY2FsbGVkIGluIHRhYmxlX21v ZGlmeV9lbmQoKSAqLwordHlwZWRlZiB2b2lkICgqVGFibGVNb2RpZnlFbmRDYWxsYmFjaykgKHN0 cnVjdCBUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSk7CisKKy8qIEhvbGRzIHRhYmxlIG1vZGlmeSBz dGF0ZSAqLwordHlwZWRlZiBzdHJ1Y3QgVGFibGVNb2RpZnlTdGF0ZQoreworCVJlbGF0aW9uCXJl bDsKKwlpbnQJCQltb2RpZnlfZmxhZ3M7CisJTWVtb3J5Q29udGV4dCBtZW1fY3h0OworCUNvbW1h bmRJZAljaWQ7CisJaW50CQkJb3B0aW9uczsKKworCS8qIEZsdXNoIGNhbGxiYWNrIGFuZCBpdHMg Y29udGV4dCAqLworCVRhYmxlTW9kaWZ5QnVmZmVyRmx1c2hDYWxsYmFjayBtb2RpZnlfYnVmZmVy X2ZsdXNoX2NhbGxiYWNrOworCXZvaWQJICAgKm1vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dDsK KworCS8qIFRhYmxlIEFNIHNwZWNpZmljIGRhdGEgKi8KKwl2b2lkCSAgICpkYXRhOworCisJVGFi bGVNb2RpZnlFbmRDYWxsYmFjayBtb2RpZnlfZW5kX2NhbGxiYWNrOworfSBUYWJsZU1vZGlmeVN0 YXRlOworCiAvKiAib3B0aW9ucyIgZmxhZyBiaXRzIGZvciB0YWJsZV90dXBsZV9pbnNlcnQgKi8K IC8qIFRBQkxFX0lOU0VSVF9TS0lQX1dBTCB3YXMgMHgwMDAxOyBSZWxhdGlvbk5lZWRzV0FMKCkg bm93IGdvdmVybnMgKi8KICNkZWZpbmUgVEFCTEVfSU5TRVJUX1NLSVBfRlNNCQkweDAwMDIKQEAg LTU3OCw2ICs2MTEsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgVGFibGVBbVJvdXRpbmUKIAl2b2lkCQko KmZpbmlzaF9idWxrX2luc2VydCkgKFJlbGF0aW9uIHJlbCwgaW50IG9wdGlvbnMpOwogCiAKKwkv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKwkgKiBUYWJsZSBNb2RpZnkgcmVsYXRlZCBmdW5jdGlvbnMuCisJ ICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisJICovCisJVGFibGVNb2RpZnlTdGF0ZSAqKCp0dXBsZV9tb2Rp ZnlfYmVnaW4pIChSZWxhdGlvbiByZWwsCisJCQkJCQkJCQkJCSBpbnQgbW9kaWZ5X2ZsYWdzLAor CQkJCQkJCQkJCQkgQ29tbWFuZElkIGNpZCwKKwkJCQkJCQkJCQkJIGludCBvcHRpb25zLAorCQkJ CQkJCQkJCQkgVGFibGVNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNrIG1vZGlmeV9idWZmZXJfZmx1 c2hfY2FsbGJhY2ssCisJCQkJCQkJCQkJCSB2b2lkICptb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRl eHQpOworCXZvaWQJCSgqdHVwbGVfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQpIChUYWJsZU1vZGlmeVN0 YXRlICpzdGF0ZSwKKwkJCQkJCQkJCQkJICAgVHVwbGVUYWJsZVNsb3QgKnNsb3QpOworCXZvaWQJ CSgqdHVwbGVfbW9kaWZ5X2J1ZmZlcl9mbHVzaCkgKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlKTsK Kwl2b2lkCQkoKnR1cGxlX21vZGlmeV9lbmQpIChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSk7CisK IAkvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KIAkgKiBEREwgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgogCSAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpAQCAtMTU5OSw2ICsxNjQ3LDM4IEBAIHRhYmxlX2ZpbmlzaF9idWxr X2luc2VydChSZWxhdGlvbiByZWwsIGludCBvcHRpb25zKQogCQlyZWwtPnJkX3RhYmxlYW0tPmZp bmlzaF9idWxrX2luc2VydChyZWwsIG9wdGlvbnMpOwogfQogCisvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqIFRhYmxlIE1vZGlmeSByZWxhdGVkIGZ1bmN0aW9ucy4KKyAqIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCitzdGF0aWMgaW5saW5lIFRhYmxlTW9kaWZ5U3RhdGUgKgordGFibGVfbW9kaWZ5X2JlZ2lu KFJlbGF0aW9uIHJlbCwgaW50IG1vZGlmeV9mbGFncywgQ29tbWFuZElkIGNpZCwgaW50IG9wdGlv bnMsCisJCQkJICAgVGFibGVNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNrIG1vZGlmeV9idWZmZXJf Zmx1c2hfY2FsbGJhY2ssCisJCQkJICAgdm9pZCAqbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0 KQoreworCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9iZWdpbihyZWwsIG1v ZGlmeV9mbGFncywKKwkJCQkJCQkJCQkJICAgY2lkLCBvcHRpb25zLAorCQkJCQkJCQkJCQkgICBt b2RpZnlfYnVmZmVyX2ZsdXNoX2NhbGxiYWNrLAorCQkJCQkJCQkJCQkgICBtb2RpZnlfYnVmZmVy X2ZsdXNoX2NvbnRleHQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3RhYmxlX21vZGlmeV9i dWZmZXJfaW5zZXJ0KFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xv dCkKK3sKKwlzdGF0ZS0+cmVsLT5yZF90YWJsZWFtLT50dXBsZV9tb2RpZnlfYnVmZmVyX2luc2Vy dChzdGF0ZSwgc2xvdCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAordGFibGVfbW9kaWZ5X2J1 ZmZlcl9mbHVzaChUYWJsZU1vZGlmeVN0YXRlICpzdGF0ZSkKK3sKKwlzdGF0ZS0+cmVsLT5yZF90 YWJsZWFtLT50dXBsZV9tb2RpZnlfYnVmZmVyX2ZsdXNoKHN0YXRlKTsKK30KKworc3RhdGljIGlu bGluZSB2b2lkCit0YWJsZV9tb2RpZnlfZW5kKFRhYmxlTW9kaWZ5U3RhdGUgKnN0YXRlKQorewor CXN0YXRlLT5yZWwtPnJkX3RhYmxlYW0tPnR1cGxlX21vZGlmeV9lbmQoc3RhdGUpOworfQogCiAv KiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KICAqIERETCByZWxhdGVkIGZ1bmN0aW9uYWxpdHkuCmRpZmYgLS1n aXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CmluZGV4IDllOTUxYTllNmYuLjUzODEzMmU2ZjQgMTAwNjQ0Ci0tLSBh L3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0CkBAIC0xMTQ1LDYgKzExNDUsOCBAQCBIZWFkbGluZUpzb25TdGF0ZQog SGVhZGxpbmVQYXJzZWRUZXh0CiBIZWFkbGluZVdvcmRFbnRyeQogSGVhcENoZWNrQ29udGV4dAor SGVhcEluc2VydFN0YXRlCitIZWFwTXVsdGlJbnNlcnRTdGF0ZQogSGVhcFBhZ2VGcmVlemUKIEhl YXBTY2FuRGVzYwogSGVhcFR1cGxlCkBAIC0yODY5LDYgKzI4NzEsNyBAQCBUYWJsZUZ1bmNTY2Fu U3RhdGUKIFRhYmxlRnVuY1R5cGUKIFRhYmxlSW5mbwogVGFibGVMaWtlQ2xhdXNlCitUYWJsZU1v ZGlmeVN0YXRlCiBUYWJsZVNhbXBsZUNsYXVzZQogVGFibGVTY2FuRGVzYwogVGFibGVTY2FuRGVz Y0RhdGEKLS0gCjIuNDMuMAoK --0000000000002e451e06208f8d57 Content-Type: application/x-patch; name="v23-0003-Optimize-INSERT-INTO-SELECT-with-new-multi-inser.patch" Content-Disposition: attachment; filename="v23-0003-Optimize-INSERT-INTO-SELECT-with-new-multi-inser.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m0aiv5fi2 RnJvbSA0NzlhMTVlZWJmYWMyOWY2Y2I4N2JhOWU2MDNhNjE3OWZiODUwZjllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCaGFyYXRoIFJ1cGlyZWRkeSA8YmhhcmF0aC5ydXBpcmVkZHlm b3Jwb3N0Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IE1vbiwgMjYgQXVnIDIwMjQgMDQ6NDc6NDYgKzAw MDAKU3ViamVjdDogW1BBVENIIHYyMyAzLzVdIE9wdGltaXplIElOU0VSVCBJTlRPIFNFTEVDVCB3 aXRoIG5ldyBtdWx0aSBpbnNlcnQKIHRhYmxlIEFNCgpUaGlzIGNvbW1pdCBvcHRpbWl6ZXMgdGhl IElOU0VSVCBJTlRPIFNFTEVDVCBxdWVyeSBmb3IgaGVhcCBBTQp1c2luZyBuZXcgbXVsdGkgaW5z ZXJ0IHRhYmxlIEFNIGFkZGVkIGJ5IGNvbW1pdCA8PENIQU5HRV9NRT4+LgoKQXV0aG9yOiBCaGFy YXRoIFJ1cGlyZWRkeQpSZXZpZXdlZC1ieTogSmVmZiBEYXZpcwpEaXNjdXNzaW9uOiBodHRwczov L3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBTGoyQUNWaTllVFJZUiUzRGdkY2E1d3h0 ajNLa185cTlxVmNjeHNTMWhuZ1RHT0NqUHdRJTQwbWFpbC5nbWFpbC5jb20KRGlzY3Vzc2lvbjog aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC84NjMzMTcxY2IwMzRhYWZjMjYw ZmRmMzdkZjA0YjZjNzc5YWExZTJmLmNhbWVsJTQwai1kYXZpcy5jb20KLS0tCiBzcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyB8IDE3MCArKysrKysrKysrKysrKysrKysrKysr LS0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAgICAgICB8ICAgMSArCiAyIGZp bGVzIGNoYW5nZWQsIDE1MyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCmluZGV4IDhiZjRjODBkNGEuLjAzZGQzNzIyMjcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlUYWJsZS5jCkBAIC0xMjMsNiArMTIzLDE4 IEBAIHR5cGVkZWYgc3RydWN0IFVwZGF0ZUNvbnRleHQKIAlMb2NrVHVwbGVNb2RlIGxvY2ttb2Rl OwogfSBVcGRhdGVDb250ZXh0OwogCit0eXBlZGVmIHN0cnVjdCBJbnNlcnRNb2RpZnlCdWZmZXJG bHVzaENvbnRleHQKK3sKKwlSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvOworCUVTdGF0ZQkg ICAqZXN0YXRlOworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGU7Cit9IEluc2VydE1vZGlmeUJ1 ZmZlckZsdXNoQ29udGV4dDsKKworc3RhdGljIEluc2VydE1vZGlmeUJ1ZmZlckZsdXNoQ29udGV4 dCAqaW5zZXJ0X21vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dCA9IE5VTEw7CitzdGF0aWMgVGFi bGVNb2RpZnlTdGF0ZSAqdGFibGVfbW9kaWZ5X3N0YXRlID0gTlVMTDsKKworc3RhdGljIHZvaWQg SW5zZXJ0TW9kaWZ5QnVmZmVyRmx1c2hDYWxsYmFjayh2b2lkICpjb250ZXh0LAorCQkJCQkJCQkJ CQlUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CiAKIHN0YXRpYyB2b2lkIEV4ZWNCYXRjaEluc2VydChN b2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJl bEluZm8sCkBAIC03MzUsNiArNzQ3LDU1IEBAIEV4ZWNHZXRVcGRhdGVOZXdUdXBsZShSZXN1bHRS ZWxJbmZvICpyZWxpbmZvLAogCXJldHVybiBFeGVjUHJvamVjdChuZXdQcm9qKTsKIH0KIAorc3Rh dGljIHZvaWQKK0luc2VydE1vZGlmeUJ1ZmZlckZsdXNoQ2FsbGJhY2sodm9pZCAqY29udGV4dCwg VHVwbGVUYWJsZVNsb3QgKnNsb3QpCit7CisJSW5zZXJ0TW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0 ICpjdHggPSAoSW5zZXJ0TW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0ICopIGNvbnRleHQ7CisJUmVz dWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyA9IGN0eC0+cmVzdWx0UmVsSW5mbzsKKwlFU3RhdGUJ ICAgKmVzdGF0ZSA9IGN0eC0+ZXN0YXRlOworCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBj dHgtPm10c3RhdGU7CisKKwkvKiBRdWljayBleGl0IGlmIG5vIGluZGV4ZXMgb3Igbm8gdHJpZ2dl cnMgKi8KKwlpZiAoIShyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4gMCB8fAorCQkgIChy ZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyAhPSBOVUxMICYmCisJCSAgIChyZXN1bHRSZWxJbmZv LT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfYWZ0ZXJfcm93IHx8CisJCQlyZXN1bHRSZWxJbmZv LT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfbmV3X3RhYmxlKSkpKQorCQlyZXR1cm47CisKKwkv KiBDYWxsZXIgbXVzdCB0YWtlIGNhcmUgb2Ygb3BlbmluZyBhbmQgY2xvc2luZyB0aGUgaW5kaWNl cyAqLworCisJLyoKKwkgKiBJZiB0aGVyZSBhcmUgYW55IGluZGV4ZXMsIHVwZGF0ZSB0aGVtIGZv ciBhbGwgdGhlIGluc2VydGVkIHR1cGxlcywgYW5kCisJICogcnVuIEFGVEVSIFJPVyBJTlNFUlQg dHJpZ2dlcnMuCisJICovCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwKQor CXsKKwkJTGlzdAkgICAqcmVjaGVja0luZGV4ZXM7CisKKwkJcmVjaGVja0luZGV4ZXMgPQorCQkJ RXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCisJCQkJCQkJCSAgc2xvdCwgZXN0 YXRlLCBmYWxzZSwKKwkJCQkJCQkJICBmYWxzZSwgTlVMTCwgTklMLCBmYWxzZSk7CisJCUV4ZWNB Ukluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKKwkJCQkJCQkgc2xvdCwgcmVj aGVja0luZGV4ZXMsCisJCQkJCQkJIG10c3RhdGUtPm10X3RyYW5zaXRpb25fY2FwdHVyZSk7CisJ CWxpc3RfZnJlZShyZWNoZWNrSW5kZXhlcyk7CisJfQorCisJLyoKKwkgKiBUaGVyZSdzIG5vIGlu ZGV4ZXMsIGJ1dCBzZWUgaWYgd2UgbmVlZCB0byBydW4gQUZURVIgUk9XIElOU0VSVCB0cmlnZ2Vy cworCSAqIGFueXdheS4KKwkgKi8KKwllbHNlIGlmIChyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVz YyAhPSBOVUxMICYmCisJCQkgKHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50cmlnX2luc2Vy dF9hZnRlcl9yb3cgfHwKKwkJCSAgcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5z ZXJ0X25ld190YWJsZSkpCisJeworCQlFeGVjQVJJbnNlcnRUcmlnZ2Vycyhlc3RhdGUsIHJlc3Vs dFJlbEluZm8sCisJCQkJCQkJIHNsb3QsIE5JTCwKKwkJCQkJCQkgbXRzdGF0ZS0+bXRfdHJhbnNp dGlvbl9jYXB0dXJlKTsKKwl9Cit9CisKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqCQlFeGVjSW5zZXJ0CiAgKgpA QCAtNzYwLDcgKzgyMSw4IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0 LAogCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJICAgYm9vbCBjYW5TZXRUYWcsCiAJCSAg IFR1cGxlVGFibGVTbG90ICoqaW5zZXJ0ZWRfdHVwbGUsCi0JCSAgIFJlc3VsdFJlbEluZm8gKipp bnNlcnRfZGVzdHJlbCkKKwkJICAgUmVzdWx0UmVsSW5mbyAqKmluc2VydF9kZXN0cmVsLAorCQkg ICBib29sIGNhbk11bHRpSW5zZXJ0KQogewogCU1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUgPSBj b250ZXh0LT5tdHN0YXRlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gY29udGV4dC0+ZXN0YXRlOwpA QCAtNzczLDYgKzgzNSw3IEBAIEV4ZWNJbnNlcnQoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0 LAogCU9uQ29uZmxpY3RBY3Rpb24gb25jb25mbGljdCA9IG5vZGUtPm9uQ29uZmxpY3RBY3Rpb247 CiAJUGFydGl0aW9uVHVwbGVSb3V0aW5nICpwcm91dGUgPSBtdHN0YXRlLT5tdF9wYXJ0aXRpb25f dHVwbGVfcm91dGluZzsKIAlNZW1vcnlDb250ZXh0IG9sZENvbnRleHQ7CisJYm9vbAkJYXJfaW5z ZXJ0X3RyaWdnZXJzX2V4ZWN1dGVkID0gZmFsc2U7CiAKIAkvKgogCSAqIElmIHRoZSBpbnB1dCBy ZXN1bHQgcmVsYXRpb24gaXMgYSBwYXJ0aXRpb25lZCB0YWJsZSwgZmluZCB0aGUgbGVhZgpAQCAt MTEzOCwxNyArMTIwMSw1MyBAQCBFeGVjSW5zZXJ0KE1vZGlmeVRhYmxlQ29udGV4dCAqY29udGV4 dCwKIAkJfQogCQllbHNlCiAJCXsKLQkJCS8qIGluc2VydCB0aGUgdHVwbGUgbm9ybWFsbHkgKi8K LQkJCXRhYmxlX3R1cGxlX2luc2VydChyZXN1bHRSZWxhdGlvbkRlc2MsIHNsb3QsCi0JCQkJCQkJ ICAgZXN0YXRlLT5lc19vdXRwdXRfY2lkLAotCQkJCQkJCSAgIDAsIE5VTEwpOworCQkJaWYgKGNh bk11bHRpSW5zZXJ0ICYmCisJCQkJcHJvdXRlID09IE5VTEwgJiYKKwkJCQlyZXN1bHRSZWxJbmZv LT5yaV9XaXRoQ2hlY2tPcHRpb25zID09IE5JTCAmJgorCQkJCXJlc3VsdFJlbEluZm8tPnJpX3By b2plY3RSZXR1cm5pbmcgPT0gTlVMTCkKKwkJCXsKKwkJCQlpZiAoaW5zZXJ0X21vZGlmeV9idWZm ZXJfZmx1c2hfY29udGV4dCA9PSBOVUxMKQorCQkJCXsKKwkJCQkJaW5zZXJ0X21vZGlmeV9idWZm ZXJfZmx1c2hfY29udGV4dCA9CisJCQkJCQkoSW5zZXJ0TW9kaWZ5QnVmZmVyRmx1c2hDb250ZXh0 ICopIHBhbGxvYzAoc2l6ZW9mKEluc2VydE1vZGlmeUJ1ZmZlckZsdXNoQ29udGV4dCkpOworCQkJ CQlpbnNlcnRfbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0LT5yZXN1bHRSZWxJbmZvID0gcmVz dWx0UmVsSW5mbzsKKwkJCQkJaW5zZXJ0X21vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dC0+ZXN0 YXRlID0gZXN0YXRlOworCQkJCQlpbnNlcnRfbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0LT5t dHN0YXRlID0gbXRzdGF0ZTsKKwkJCQl9CiAKLQkJCS8qIGluc2VydCBpbmRleCBlbnRyaWVzIGZv ciB0dXBsZSAqLwotCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwKQotCQkJ CXJlY2hlY2tJbmRleGVzID0gRXhlY0luc2VydEluZGV4VHVwbGVzKHJlc3VsdFJlbEluZm8sCi0J CQkJCQkJCQkJCQkJICAgc2xvdCwgZXN0YXRlLCBmYWxzZSwKLQkJCQkJCQkJCQkJCQkgICBmYWxz ZSwgTlVMTCwgTklMLAotCQkJCQkJCQkJCQkJCSAgIGZhbHNlKTsKKwkJCQlpZiAodGFibGVfbW9k aWZ5X3N0YXRlID09IE5VTEwpCisJCQkJeworCQkJCQl0YWJsZV9tb2RpZnlfc3RhdGUgPSB0YWJs ZV9tb2RpZnlfYmVnaW4ocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLAorCQkJCQkJCQkJ CQkJCQkJMCwKKwkJCQkJCQkJCQkJCQkJCWVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCwKKwkJCQkJCQkJ CQkJCQkJCTAsCisJCQkJCQkJCQkJCQkJCQlJbnNlcnRNb2RpZnlCdWZmZXJGbHVzaENhbGxiYWNr LAorCQkJCQkJCQkJCQkJCQkJaW5zZXJ0X21vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dCk7CisJ CQkJfQorCisJCQkJdGFibGVfbW9kaWZ5X2J1ZmZlcl9pbnNlcnQodGFibGVfbW9kaWZ5X3N0YXRl LCBzbG90KTsKKwkJCQlhcl9pbnNlcnRfdHJpZ2dlcnNfZXhlY3V0ZWQgPSB0cnVlOworCQkJfQor CQkJZWxzZQorCQkJeworCQkJCS8qIGluc2VydCB0aGUgdHVwbGUgbm9ybWFsbHkgKi8KKwkJCQl0 YWJsZV90dXBsZV9pbnNlcnQocmVzdWx0UmVsYXRpb25EZXNjLCBzbG90LAorCQkJCQkJCQkgICBl c3RhdGUtPmVzX291dHB1dF9jaWQsCisJCQkJCQkJCSAgIDAsIE5VTEwpOworCisJCQkJLyogaW5z ZXJ0IGluZGV4IGVudHJpZXMgZm9yIHR1cGxlICovCisJCQkJaWYgKHJlc3VsdFJlbEluZm8tPnJp X051bUluZGljZXMgPiAwKQorCQkJCQlyZWNoZWNrSW5kZXhlcyA9IEV4ZWNJbnNlcnRJbmRleFR1 cGxlcyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCQkJCQkgICBzbG90LCBlc3RhdGUsIGZhbHNl LAorCQkJCQkJCQkJCQkJCQkgICBmYWxzZSwgTlVMTCwgTklMLAorCQkJCQkJCQkJCQkJCQkgICBm YWxzZSk7CisKKwkJCQlFeGVjQVJJbnNlcnRUcmlnZ2Vycyhlc3RhdGUsIHJlc3VsdFJlbEluZm8s IHNsb3QsIHJlY2hlY2tJbmRleGVzLAorCQkJCQkJCQkJIG10c3RhdGUtPm10X3RyYW5zaXRpb25f Y2FwdHVyZSk7CisKKwkJCQlsaXN0X2ZyZWUocmVjaGVja0luZGV4ZXMpOworCQkJCWFyX2luc2Vy dF90cmlnZ2Vyc19leGVjdXRlZCA9IHRydWU7CisJCQl9CiAJCX0KIAl9CiAKQEAgLTExODIsMTAg KzEyODEsMTIgQEAgRXhlY0luc2VydChNb2RpZnlUYWJsZUNvbnRleHQgKmNvbnRleHQsCiAJfQog CiAJLyogQUZURVIgUk9XIElOU0VSVCBUcmlnZ2VycyAqLwotCUV4ZWNBUkluc2VydFRyaWdnZXJz KGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywgc2xvdCwgcmVjaGVja0luZGV4ZXMsCi0JCQkJCQkgYXJf aW5zZXJ0X3RyaWdfdGNzKTsKLQotCWxpc3RfZnJlZShyZWNoZWNrSW5kZXhlcyk7CisJaWYgKCFh cl9pbnNlcnRfdHJpZ2dlcnNfZXhlY3V0ZWQpCisJeworCQlFeGVjQVJJbnNlcnRUcmlnZ2Vycyhl c3RhdGUsIHJlc3VsdFJlbEluZm8sIHNsb3QsIHJlY2hlY2tJbmRleGVzLAorCQkJCQkJCSBhcl9p bnNlcnRfdHJpZ190Y3MpOworCQlsaXN0X2ZyZWUocmVjaGVja0luZGV4ZXMpOworCX0KIAogCS8q CiAJICogQ2hlY2sgYW55IFdJVEggQ0hFQ0sgT1BUSU9OIGNvbnN0cmFpbnRzIGZyb20gcGFyZW50 IHZpZXdzLiAgV2UgYXJlCkBAIC0xODgxLDcgKzE5ODIsNyBAQCBFeGVjQ3Jvc3NQYXJ0aXRpb25V cGRhdGUoTW9kaWZ5VGFibGVDb250ZXh0ICpjb250ZXh0LAogCS8qIFR1cGxlIHJvdXRpbmcgc3Rh cnRzIGZyb20gdGhlIHJvb3QgdGFibGUuICovCiAJY29udGV4dC0+Y3BVcGRhdGVSZXR1cm5pbmdT bG90ID0KIAkJRXhlY0luc2VydChjb250ZXh0LCBtdHN0YXRlLT5yb290UmVzdWx0UmVsSW5mbywg c2xvdCwgY2FuU2V0VGFnLAotCQkJCSAgIGluc2VydGVkX3R1cGxlLCBpbnNlcnRfZGVzdHJlbCk7 CisJCQkJICAgaW5zZXJ0ZWRfdHVwbGUsIGluc2VydF9kZXN0cmVsLCBmYWxzZSk7CiAKIAkvKgog CSAqIFJlc2V0IHRoZSB0cmFuc2l0aW9uIHN0YXRlIHRoYXQgbWF5IHBvc3NpYmx5IGhhdmUgYmVl biB3cml0dGVuIGJ5CkBAIC0zMzg1LDcgKzM0ODYsNyBAQCBFeGVjTWVyZ2VOb3RNYXRjaGVkKE1v ZGlmeVRhYmxlQ29udGV4dCAqY29udGV4dCwgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywK IAkJCQltdHN0YXRlLT5tdF9tZXJnZV9hY3Rpb24gPSBhY3Rpb247CiAKIAkJCQlyc2xvdCA9IEV4 ZWNJbnNlcnQoY29udGV4dCwgbXRzdGF0ZS0+cm9vdFJlc3VsdFJlbEluZm8sCi0JCQkJCQkJCSAg IG5ld3Nsb3QsIGNhblNldFRhZywgTlVMTCwgTlVMTCk7CisJCQkJCQkJCSAgIG5ld3Nsb3QsIGNh blNldFRhZywgTlVMTCwgTlVMTCwgZmFsc2UpOwogCQkJCW10c3RhdGUtPm10X21lcmdlX2luc2Vy dGVkICs9IDE7CiAJCQkJYnJlYWs7CiAJCQljYXNlIENNRF9OT1RISU5HOgpAQCAtMzc3MCw2ICsz ODcxLDEwIEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAlIZWFwVHVwbGVE YXRhIG9sZHR1cGRhdGE7CiAJSGVhcFR1cGxlCW9sZHR1cGxlOwogCUl0ZW1Qb2ludGVyIHR1cGxl aWQ7CisJYm9vbAkJY2FuTXVsdGlJbnNlcnQgPSBmYWxzZTsKKworCXRhYmxlX21vZGlmeV9zdGF0 ZSA9IE5VTEw7CisJaW5zZXJ0X21vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dCA9IE5VTEw7CiAK IAlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCkBAIC0zODY1LDYgKzM5NzAsMTAgQEAgRXhlY01v ZGlmeVRhYmxlKFBsYW5TdGF0ZSAqcHN0YXRlKQogCQlpZiAoVHVwSXNOdWxsKGNvbnRleHQucGxh blNsb3QpKQogCQkJYnJlYWs7CiAKKwkJaWYgKG9wZXJhdGlvbiA9PSBDTURfSU5TRVJUICYmCisJ CQlub2RlVGFnKHN1YnBsYW5zdGF0ZSkgPT0gVF9TZXFTY2FuU3RhdGUpCisJCQljYW5NdWx0aUlu c2VydCA9IHRydWU7CisKIAkJLyoKIAkJICogV2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgcmVzdWx0 IHJlbGF0aW9ucywgZWFjaCB0dXBsZSBjb250YWlucyBhCiAJCSAqIGp1bmsgY29sdW1uIHRoYXQg Z2l2ZXMgdGhlIE9JRCBvZiB0aGUgcmVsIGZyb20gd2hpY2ggaXQgY2FtZS4KQEAgLTQwNzgsNyAr NDE4Nyw3IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQkJRXhlY0lu aXRJbnNlcnRQcm9qZWN0aW9uKG5vZGUsIHJlc3VsdFJlbEluZm8pOwogCQkJCXNsb3QgPSBFeGVj R2V0SW5zZXJ0TmV3VHVwbGUocmVzdWx0UmVsSW5mbywgY29udGV4dC5wbGFuU2xvdCk7CiAJCQkJ c2xvdCA9IEV4ZWNJbnNlcnQoJmNvbnRleHQsIHJlc3VsdFJlbEluZm8sIHNsb3QsCi0JCQkJCQkJ CSAgbm9kZS0+Y2FuU2V0VGFnLCBOVUxMLCBOVUxMKTsKKwkJCQkJCQkJICBub2RlLT5jYW5TZXRU YWcsIE5VTEwsIE5VTEwsIGNhbk11bHRpSW5zZXJ0KTsKIAkJCQlicmVhazsKIAogCQkJY2FzZSBD TURfVVBEQVRFOgpAQCAtNDEzNyw2ICs0MjQ2LDE3IEBAIEV4ZWNNb2RpZnlUYWJsZShQbGFuU3Rh dGUgKnBzdGF0ZSkKIAkJCXJldHVybiBzbG90OwogCX0KIAorCWlmICh0YWJsZV9tb2RpZnlfc3Rh dGUgIT0gTlVMTCkKKwl7CisJCUFzc2VydChvcGVyYXRpb24gPT0gQ01EX0lOU0VSVCk7CisKKwkJ dGFibGVfbW9kaWZ5X2VuZCh0YWJsZV9tb2RpZnlfc3RhdGUpOworCQl0YWJsZV9tb2RpZnlfc3Rh dGUgPSBOVUxMOworCisJCXBmcmVlKGluc2VydF9tb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQp OworCQlpbnNlcnRfbW9kaWZ5X2J1ZmZlcl9mbHVzaF9jb250ZXh0ID0gTlVMTDsKKwl9CisKIAkv KgogCSAqIEluc2VydCByZW1haW5pbmcgdHVwbGVzIGZvciBiYXRjaCBpbnNlcnQuCiAJICovCkBA IC00MjQ5LDYgKzQzNjksOSBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2Rl LCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAltdHN0YXRlLT5tdF9tZXJnZV91cGRhdGVk ID0gMDsKIAltdHN0YXRlLT5tdF9tZXJnZV9kZWxldGVkID0gMDsKIAorCXRhYmxlX21vZGlmeV9z dGF0ZSA9IE5VTEw7CisJaW5zZXJ0X21vZGlmeV9idWZmZXJfZmx1c2hfY29udGV4dCA9IE5VTEw7 CisKIAkvKi0tLS0tLS0tLS0KIAkgKiBSZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMg aXMgdGhlIHNhbWUgYXM6CiAJICoKQEAgLTQ3MDIsNiArNDgyNSwxNyBAQCBFeGVjRW5kTW9kaWZ5 VGFibGUoTW9kaWZ5VGFibGVTdGF0ZSAqbm9kZSkKIHsKIAlpbnQJCQlpOwogCisJaWYgKHRhYmxl X21vZGlmeV9zdGF0ZSAhPSBOVUxMKQorCXsKKwkJQXNzZXJ0KG5vZGUtPm9wZXJhdGlvbiA9PSBD TURfSU5TRVJUKTsKKworCQl0YWJsZV9tb2RpZnlfZW5kKHRhYmxlX21vZGlmeV9zdGF0ZSk7CisJ CXRhYmxlX21vZGlmeV9zdGF0ZSA9IE5VTEw7CisKKwkJcGZyZWUoaW5zZXJ0X21vZGlmeV9idWZm ZXJfZmx1c2hfY29udGV4dCk7CisJCWluc2VydF9tb2RpZnlfYnVmZmVyX2ZsdXNoX2NvbnRleHQg PSBOVUxMOworCX0KKwogCS8qCiAJICogQWxsb3cgYW55IEZEV3MgdG8gc2h1dCBkb3duCiAJICov CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUzODEzMmU2ZjQuLmRlNTY5OWUwNzggMTAw NjQ0Ci0tLSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29s cy9wZ2luZGVudC90eXBlZGVmcy5saXN0CkBAIC0xMTg0LDYgKzExODQsNyBAQCBJbXBvcnRGb3Jl aWduU2NoZW1hX2Z1bmN0aW9uCiBJbXBvcnRRdWFsCiBJblByb2dyZXNzRW50CiBJblByb2dyZXNz SU8KK0luc2VydE1vZGlmeUJ1ZmZlckZsdXNoQ29udGV4dAogSW5jbHVkZVdhbAogSW5jbHVzaW9u T3BhcXVlCiBJbmNyZW1lbnRWYXJTdWJsZXZlbHNVcF9jb250ZXh0Ci0tIAoyLjQzLjAKCg== --0000000000002e451e06208f8d57--