Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2FF6-0004pA-Kz for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Dec 2021 16:22:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1n2FF4-0004OS-JK for pgsql-hackers@arkaria.postgresql.org; Tue, 28 Dec 2021 16:22:26 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2FF4-0004OJ-5o for pgsql-hackers@lists.postgresql.org; Tue, 28 Dec 2021 16:22:26 +0000 Received: from wout2-smtp.messagingengine.com ([64.147.123.25]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n2FEq-0004z8-KN for pgsql-hackers@postgresql.org; Tue, 28 Dec 2021 16:22:25 +0000 Received: from compute6.internal (compute6.nyi.internal [10.202.2.46]) by mailout.west.internal (Postfix) with ESMTP id 158A23201134 for ; Tue, 28 Dec 2021 11:22:07 -0500 (EST) Received: from mailfrontend2 ([10.202.2.163]) by compute6.internal (MEProxy); Tue, 28 Dec 2021 11:22:08 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:message-id :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender :x-me-sender:x-sasl-enc; s=fm1; bh=IrDf2BQ8CaFbJblDQJOuVLQShzIgh oDIgvoJuo53FX8=; b=A0Kc/Mtl3tQwfQlVBIfj+XlHd4oroeZj9sMXXLQ7pdzPb b50c003ihrGS+ddC1hGuRs1tu0PsYh+krONo2pFaXLDT3ik+syZWiAiwDRc2DRvu plctlFGO8NxNBi9sh/TquxpsQOy7tSttRMC2VoxvRlkI3+VXUOc0aLk4Wy/J0UGE 3mGRdBao7p3TpgRPVYmMejjb5dITFzofJZCZIEAklcKocK0PTzr0OH2UmePlM75f Kqw+JcIfaUhm36cpeG2aEBXSw14EkrPnDNmUrx+qL/VDiFFS28PlU1X0ke4mjsyN mTws43ged/B0QnAcpU1NIAninxoogbZgf7F6sjZ0Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvuddrudduledgkeelucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucenucfjughrpegtkfffgggfhffuvfesmhdtreertd efjeenucfhrhhomheprfgvthgvrhcugfhishgvnhhtrhgruhhtuceophgvthgvrhdrvghi shgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomheqnecuggftrfgrthhtvg hrnhepteevuedvieekieeghfevfffhhfdvjeevleelfeeikeeikedvffegteekuddtfeel necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepphgvth gvrhdrvghishgvnhhtrhgruhhtsegvnhhtvghrphhrihhsvggusgdrtghomh X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 28 Dec 2021 11:22:05 -0500 (EST) Content-Type: multipart/mixed; boundary="------------0gSzA6rVarw3UNheI0svPnVG" Message-ID: Date: Tue, 28 Dec 2021 17:22:04 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:91.0) Gecko/20100101 Thunderbird/91.4.0 Content-Language: en-US From: Peter Eisentraut Subject: parse/analyze API refactoring To: pgsql-hackers List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------0gSzA6rVarw3UNheI0svPnVG Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I have found some of the parse/analyze API calls confusing one too many times, so here I'm proposing some renaming and refactoring. Notionally, there are three parallel ways to call the parse/analyze phase: with fixed parameters (for example, used by SPI), with variable parameters (for example, used by PREPARE), and with a parser callback (for example, used to parse the body of SQL functions). Some of the involved functions were confusingly named and made this API structure more confusing. For example, at the top level there are pg_analyze_and_rewrite() and pg_analyze_and_rewrite_params(). You'd think the first one doesn't take parameters and the second one takes parameters. But the truth is, the first one takes fixed parameters and the second one takes a parser callback. The parser callback can be used to parse parameters, but also other things. There isn't any variant that takes variable parameters; that code is sprinkled around other places altogether. One level below that, there is parse_analyze() (for fixed parameters) and parse_analyze_varparams() (good name). But there is no analogous function for the callback variant; that code is spread out in pg_analyze_and_rewrite_params(). And then there are parse_fixed_parameters() and parse_variable_parameters(). But they don't do any parsing at all. They just set up callbacks for the parsing to follow. This doesn't need to be so confusing. With the attached patch set, the calls end up: pg_analyze_and_rewrite_fixedparams() -> parse_analyze_fixedparams() -> setup_parse_fixed_parameters() pg_analyze_and_rewrite_varparams() [new] -> parse_analyze_varparams() -> setup_parse_variable_parameters() pg_analyze_and_rewrite_withcb() -> parse_analyze_withcb() [new] -> (nothing needed here) (The "withcb" naming maybe isn't great; better ideas welcome.) Not included in this patch set, but food for further thought: The pg_analyze_and_rewrite_*() functions aren't all that useful (anymore). One might as well write pg_rewrite_query(parse_analyze_xxx(...)) The only things that pg_analyze_and_rewrite_*() do in addition to that is handle log_parser_stats, which could be moved into parse_analyze_*(), and TRACE_POSTGRESQL_QUERY_REWRITE_*(), which IMO doesn't make sense to begin with and should be in pg_rewrite_query(). --------------0gSzA6rVarw3UNheI0svPnVG Content-Type: text/plain; charset=UTF-8; name="v1-0001-Parse-analyze-function-renaming.patch" Content-Disposition: attachment; filename="v1-0001-Parse-analyze-function-renaming.patch" Content-Transfer-Encoding: base64 RnJvbSA5YTcyY2VhZGViZDZiOTMwOWZlMDE1N2MxY2QxODFiMjllZThiZDUyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyOCBEZWMgMjAyMSAwOTowMTo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEgMS8zXSBQYXJzZS9hbmFseXplIGZ1bmN0aW9uIHJlbmFtaW5nCgpUaGVy ZSBhcmUgdGhyZWUgcGFyYWxsZWwgd2F5cyB0byBjYWxsIHBhcnNlL2FuYWx5emU6IHdpdGgg Zml4ZWQKcGFyYW1ldGVycywgd2l0aCB2YXJpYWJsZSBwYXJhbWV0ZXJzLCBhbmQgYnkgc3Vw cGx5aW5nIHlvdXIgb3duIHBhcnNlcgpjYWxsYmFjay4gIFNvbWUgb2YgdGhlIGludm9sdmVk IGZ1bmN0aW9ucyB3ZXJlIGNvbmZ1c2luZ2x5IG5hbWVkIGFuZAptYWRlIHRoaXMgQVBJIHN0 cnVjdHVyZSBtb3JlIGNvbmZ1c2luZy4gIFRoaXMgcGF0Y2ggcmVuYW1lcyBzb21lIGZ1bmN0 aW9ucyB0bwptYWtlIHRoaXMgY2xlYXJlcjoKCnBhcnNlX2FuYWx5emUoKSAtPiBwYXJzZV9h bmFseXplX2ZpeGVkcGFyYW1zKCkKcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZSgpIC0+IHBnX2Fu YWx5emVfYW5kX3Jld3JpdGVfZml4ZWRwYXJhbXMoKQoKKE90aGVyd2lzZSBvbmUgbWlnaHQg dGhpbmsgdGhpcyB2YXJpYW50IGRvZXNuJ3QgYWNjZXB0IHBhcmFtZXRlcnMsIGJ1dAppbiBm YWN0IGFsbCB0aHJlZSB3YXlzIGFjY2VwdCBwYXJhbWV0ZXJzLikKCnBnX2FuYWx5emVfYW5k X3Jld3JpdGVfcGFyYW1zKCkgLT4gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV93aXRoY2IoKQoK KEJlZm9yZSwgYW5kIGFsc28gd2hlbiBjb25zaWRlcmluZyBwZ19hbmFseXplX2FuZF9yZXdy aXRlKCksIG9uZSBtaWdodAp0aGluayB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBwYXNzIHBh cmFtZXRlcnMuICBNb3Jlb3ZlciwgdGhlIHBhcnNlcgpjYWxsYmFjayBkb2Vzbid0IG5lY2Vz c2FyaWx5IG5lZWQgdG8gcGFyc2Ugb25seSBwYXJhbWV0ZXJzLCBpdCdzIGp1c3QKb25lIG9m IHRoZSB0aGluZ3MgaXQgY291bGQgZG8uKQoKcGFyc2VfZml4ZWRfcGFyYW1ldGVycygpIC0+ IHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoKQpwYXJzZV92YXJpYWJsZV9wYXJhbWV0 ZXJzKCkgLT4gc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVycygpCgooVGhlc2UgZnVu Y3Rpb25zIGRvbid0IGFjdHVhbGx5IGRvIGFueSBwYXJzaW5nLCB0aGV5IGp1c3Qgc2V0IHVw CmNhbGxiYWNrcyB0byB1c2UgZHVyaW5nIHBhcnNpbmcgbGF0ZXIuKQoKVGhpcyBwYXRjaCBh bHNvIGFkZHMgc29tZSBjb25zdCBkZWNvcmF0aW9ucyB0byB0aGUgZml4ZWQtcGFyYW1ldGVy cwpBUEksIHNvIHRoZSBkaXN0aW5jdGlvbiBmcm9tIHRoZSB2YXJpYWJsZS1wYXJhbWV0ZXJz IEFQSSBpcyBtb3JlCmNsZWFyLgotLS0KIHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5j ICAgICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYyAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMgICAgIHwgIDIgKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NjaGVtYWNtZHMuYyAgICB8ICAyICstCiBzcmMvYmFj a2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvY29t bWFuZHMvdmlldy5jICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1 bmN0aW9ucy5jICAgICB8ICAyICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYyAgICAg ICAgICAgfCAgOCArKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNl cy5jIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgICAgICAgICB8IDEw ICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9wYXJhbS5jICAgICB8ICA4 ICsrKystLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfdXRpbGNtZC5jICAgfCAgMiAr LQogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgICAgICAgIHwgMTcgKysrKysrKysr LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICB8ICA0ICsr LS0KIHNyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmggICAgICAgICB8ICA0ICsrLS0KIHNy Yy9pbmNsdWRlL3BhcnNlci9wYXJzZV9wYXJhbS5oICAgICB8ICA2ICsrKy0tLQogc3JjL2lu Y2x1ZGUvdGNvcC90Y29wcHJvdC5oICAgICAgICAgIHwgIDYgKysrLS0tCiAxNyBmaWxlcyBj aGFuZ2VkLCA0MSBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3Byb2MuYyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHJvYy5jCmluZGV4IDI1ZDM1MjMwZDAuLjhkZmZjYjNhMTkgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2NhdGFsb2cvcGdfcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cv cGdfcHJvYy5jCkBAIC05NDcsNyArOTQ3LDcgQEAgZm1ncl9zcWxfdmFsaWRhdG9yKFBHX0ZV TkNUSU9OX0FSR1MpCiAJCQkJCVJhd1N0bXQgICAgKnBhcnNldHJlZSA9IGxmaXJzdF9ub2Rl KFJhd1N0bXQsIGxjKTsKIAkJCQkJTGlzdAkgICAqcXVlcnl0cmVlX3N1Ymxpc3Q7CiAKLQkJ CQkJcXVlcnl0cmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX3BhcmFtcyhw YXJzZXRyZWUsCisJCQkJCXF1ZXJ5dHJlZV9zdWJsaXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3 cml0ZV93aXRoY2IocGFyc2V0cmVlLAogCQkJCQkJCQkJCQkJCQkJCQkgIHByb3NyYywKIAkJ CQkJCQkJCQkJCQkJCQkJICAoUGFyc2VyU2V0dXBIb29rKSBzcWxfZm5fcGFyc2VyX3NldHVw LAogCQkJCQkJCQkJCQkJCQkJCQkgIHBpbmZvLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwppbmRl eCBiNmVhY2Q1YmFhLi4zNzhmMmIyMzJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21t YW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8uYwpAQCAt NDM5LDcgKzQzOSw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJICog UnVuIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdyaXRlLiAgTm90ZSB0aGlzIGFsc28gYWNxdWly ZXMgc3VmZmljaWVudAogCQkgKiBsb2NrcyBvbiB0aGUgc291cmNlIHRhYmxlKHMpLgogCQkg Ki8KLQkJcmV3cml0dGVuID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShyYXdfcXVlcnksCisJ CXJld3JpdHRlbiA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfZml4ZWRwYXJhbXMocmF3X3F1 ZXJ5LAogCQkJCQkJCQkJCSAgIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LCBOVUxMLCAwLAogCQkJ CQkJCQkJCSAgIE5VTEwpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9l eHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IGVh YTc2YWY0N2IuLjQ2YjhjYTlhMDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCkBA IC03NDYsNyArNzQ2LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIgKnNxbCkK IAkJLyogQmUgc3VyZSBwYXJzZXIgY2FuIHNlZSBhbnkgRERMIGRvbmUgc28gZmFyICovCiAJ CUNvbW1hbmRDb3VudGVySW5jcmVtZW50KCk7CiAKLQkJc3RtdF9saXN0ID0gcGdfYW5hbHl6 ZV9hbmRfcmV3cml0ZShwYXJzZXRyZWUsCisJCXN0bXRfbGlzdCA9IHBnX2FuYWx5emVfYW5k X3Jld3JpdGVfZml4ZWRwYXJhbXMocGFyc2V0cmVlLAogCQkJCQkJCQkJCSAgIHNxbCwKIAkJ CQkJCQkJCQkgICBOVUxMLAogCQkJCQkJCQkJCSAgIDAsCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9zY2hlbWFjbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9zY2hl bWFjbWRzLmMKaW5kZXggNmM2YWI5ZWUzNC4uMGMzNzZlMDcwZCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvY29tbWFuZHMvc2NoZW1hY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3NjaGVtYWNtZHMuYwpAQCAtMTcyLDcgKzE3Miw3IEBAIENyZWF0ZVNjaGVtYUNvbW1h bmQoQ3JlYXRlU2NoZW1hU3RtdCAqc3RtdCwgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsCiAJ LyoKIAkgKiBFeGVjdXRlIGVhY2ggY29tbWFuZCBjb250YWluZWQgaW4gdGhlIENSRUFURSBT Q0hFTUEuICBTaW5jZSB0aGUgZ3JhbW1hcgogCSAqIGFsbG93cyBvbmx5IHV0aWxpdHkgY29t bWFuZHMgaW4gQ1JFQVRFIFNDSEVNQSwgdGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzCi0JICog dGhlbSB0aHJvdWdoIHBhcnNlX2FuYWx5emUoKSBvciB0aGUgcmV3cml0ZXI7IHdlIGNhbiBq dXN0IGhhbmQgdGhlbQorCSAqIHRoZW0gdGhyb3VnaCBwYXJzZV9hbmFseXplXyooKSBvciB0 aGUgcmV3cml0ZXI7IHdlIGNhbiBqdXN0IGhhbmQgdGhlbQogCSAqIHN0cmFpZ2h0IHRvIFBy b2Nlc3NVdGlsaXR5LgogCSAqLwogCWZvcmVhY2gocGFyc2V0cmVlX2l0ZW0sIHBhcnNldHJl ZV9saXN0KQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwppbmRleCA0NWU1OWUzZDVjLi40 MWIwZWFjOTdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMu YworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYwpAQCAtMTI5MjAsNyAr MTI5MjAsNyBAQCBBVFBvc3RBbHRlclR5cGVQYXJzZShPaWQgb2xkSWQsIE9pZCBvbGRSZWxJ ZCwgT2lkIHJlZlJlbElkLCBjaGFyICpjbWQsCiAJLyoKIAkgKiBXZSBleHBlY3QgdGhhdCB3 ZSB3aWxsIGdldCBvbmx5IEFMVEVSIFRBQkxFIGFuZCBDUkVBVEUgSU5ERVgKIAkgKiBzdGF0 ZW1lbnRzLiBIZW5jZSwgdGhlcmUgaXMgbm8gbmVlZCB0byBwYXNzIHRoZW0gdGhyb3VnaAot CSAqIHBhcnNlX2FuYWx5emUoKSBvciB0aGUgcmV3cml0ZXIsIGJ1dCBpbnN0ZWFkIHdlIG5l ZWQgdG8gcGFzcyB0aGVtCisJICogcGFyc2VfYW5hbHl6ZV8qKCkgb3IgdGhlIHJld3JpdGVy LCBidXQgaW5zdGVhZCB3ZSBuZWVkIHRvIHBhc3MgdGhlbQogCSAqIHRocm91Z2ggcGFyc2Vf dXRpbGNtZC5jIHRvIG1ha2UgdGhlbSByZWFkeSBmb3IgZXhlY3V0aW9uLgogCSAqLwogCXJh d19wYXJzZXRyZWVfbGlzdCA9IHJhd19wYXJzZXIoY21kLCBSQVdfUEFSU0VfREVGQVVMVCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92aWV3LmMgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy92aWV3LmMKaW5kZXggNGRmMDVhMGIzMy4uOGI2MjU0Y2ZjZSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCisrKyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL3ZpZXcuYwpAQCAtNDIzLDcgKzQyMyw3IEBAIERlZmluZVZpZXcoVmlld1N0bXQg KnN0bXQsIGNvbnN0IGNoYXIgKnF1ZXJ5U3RyaW5nLAogCXJhd3N0bXQtPnN0bXRfbG9jYXRp b24gPSBzdG10X2xvY2F0aW9uOwogCXJhd3N0bXQtPnN0bXRfbGVuID0gc3RtdF9sZW47CiAK LQl2aWV3UGFyc2UgPSBwYXJzZV9hbmFseXplKHJhd3N0bXQsIHF1ZXJ5U3RyaW5nLCBOVUxM LCAwLCBOVUxMKTsKKwl2aWV3UGFyc2UgPSBwYXJzZV9hbmFseXplX2ZpeGVkcGFyYW1zKHJh d3N0bXQsIHF1ZXJ5U3RyaW5nLCBOVUxMLCAwLCBOVUxMKTsKIAogCS8qCiAJICogVGhlIGdy YW1tYXIgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSByZXN1bHQgaXMgYSBzaW5nbGUgU0VMRUNU IFF1ZXJ5LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwppbmRleCAyOTZlNTRlNjBhLi5m ZDg3ODU1NWVlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtNzE4LDcgKzcx OCw3IEBAIGluaXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lkIGNv bGxhdGlvbiwgYm9vbCBsYXp5RXZhbE9LKQogCQkJUmF3U3RtdCAgICAqcGFyc2V0cmVlID0g bGZpcnN0X25vZGUoUmF3U3RtdCwgbGMpOwogCQkJTGlzdAkgICAqcXVlcnlUcmVlX3N1Ymxp c3Q7CiAKLQkJCXF1ZXJ5VHJlZV9zdWJsaXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9w YXJhbXMocGFyc2V0cmVlLAorCQkJcXVlcnlUcmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2Fu ZF9yZXdyaXRlX3dpdGhjYihwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCQkJCQkgIGZjYWNoZS0+ c3JjLAogCQkJCQkJCQkJCQkJCQkJICAoUGFyc2VyU2V0dXBIb29rKSBzcWxfZm5fcGFyc2Vy X3NldHVwLAogCQkJCQkJCQkJCQkJCQkJICBmY2FjaGUtPnBpbmZvLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGku YwppbmRleCAwNTY4YWUxMjNmLi45NTk4OWYyMzdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9zcGkuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9zcGkuYwpAQCAt MjE2NSw3ICsyMTY1LDcgQEAgX1NQSV9wcmVwYXJlX3BsYW4oY29uc3QgY2hhciAqc3JjLCBT UElQbGFuUHRyIHBsYW4pCiAJCWlmIChwbGFuLT5wYXJzZXJTZXR1cCAhPSBOVUxMKQogCQl7 CiAJCQlBc3NlcnQocGxhbi0+bmFyZ3MgPT0gMCk7Ci0JCQlzdG10X2xpc3QgPSBwZ19hbmFs eXplX2FuZF9yZXdyaXRlX3BhcmFtcyhwYXJzZXRyZWUsCisJCQlzdG10X2xpc3QgPSBwZ19h bmFseXplX2FuZF9yZXdyaXRlX3dpdGhjYihwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCQkJICBz cmMsCiAJCQkJCQkJCQkJCQkJICBwbGFuLT5wYXJzZXJTZXR1cCwKIAkJCQkJCQkJCQkJCQkg IHBsYW4tPnBhcnNlclNldHVwQXJnLApAQCAtMjE3Myw3ICsyMTczLDcgQEAgX1NQSV9wcmVw YXJlX3BsYW4oY29uc3QgY2hhciAqc3JjLCBTUElQbGFuUHRyIHBsYW4pCiAJCX0KIAkJZWxz ZQogCQl7Ci0JCQlzdG10X2xpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlKHBhcnNldHJl ZSwKKwkJCXN0bXRfbGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfZml4ZWRwYXJhbXMo cGFyc2V0cmVlLAogCQkJCQkJCQkJCQkgICBzcmMsCiAJCQkJCQkJCQkJCSAgIHBsYW4tPmFy Z3R5cGVzLAogCQkJCQkJCQkJCQkgICBwbGFuLT5uYXJncywKQEAgLTI0MDIsNyArMjQwMiw3 IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0 ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQllbHNlIGlmIChwbGFuLT5wYXJzZXJTZXR1cCAhPSBO VUxMKQogCQkJewogCQkJCUFzc2VydChwbGFuLT5uYXJncyA9PSAwKTsKLQkJCQlzdG10X2xp c3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX3BhcmFtcyhwYXJzZXRyZWUsCisJCQkJc3Rt dF9saXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV93aXRoY2IocGFyc2V0cmVlLAogCQkJ CQkJCQkJCQkJCQkgIHNyYywKIAkJCQkJCQkJCQkJCQkJICBwbGFuLT5wYXJzZXJTZXR1cCwK IAkJCQkJCQkJCQkJCQkJICBwbGFuLT5wYXJzZXJTZXR1cEFyZywKQEAgLTI0MTAsNyArMjQx MCw3IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQSVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhl Y3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJc3RtdF9s aXN0ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShwYXJzZXRyZWUsCisJCQkJc3RtdF9saXN0 ID0gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhwYXJzZXRyZWUsCiAJCQkJ CQkJCQkJCQkgICBzcmMsCiAJCQkJCQkJCQkJCQkgICBwbGFuLT5hcmd0eXBlcywKIAkJCQkJ CQkJCQkJCSAgIHBsYW4tPm5hcmdzLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3V0aWwvY2xhdXNlcy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNl cy5jCmluZGV4IDg3M2U0M2JmZTYuLjk0NzM1Y2YwZTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6 ZXIvdXRpbC9jbGF1c2VzLmMKQEAgLTUwNTcsNyArNTA1Nyw3IEBAIGlubGluZV9zZXRfcmV0 dXJuaW5nX2Z1bmN0aW9uKFBsYW5uZXJJbmZvICpyb290LCBSYW5nZVRibEVudHJ5ICpydGUp CiAJCWlmIChsaXN0X2xlbmd0aChyYXdfcGFyc2V0cmVlX2xpc3QpICE9IDEpCiAJCQlnb3Rv IGZhaWw7CiAKLQkJcXVlcnl0cmVlX2xpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX3Bh cmFtcyhsaW5pdGlhbChyYXdfcGFyc2V0cmVlX2xpc3QpLAorCQlxdWVyeXRyZWVfbGlzdCA9 IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfd2l0aGNiKGxpbml0aWFsKHJhd19wYXJzZXRyZWVf bGlzdCksCiAJCQkJCQkJCQkJCQkJICAgc3JjLAogCQkJCQkJCQkJCQkJCSAgIChQYXJzZXJT ZXR1cEhvb2spIHNxbF9mbl9wYXJzZXJfc2V0dXAsCiAJCQkJCQkJCQkJCQkJICAgcGluZm8s IE5VTEwpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKaW5kZXggMTQ2ZWU4ZGQxZS4uNTZjNThkMjYz ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBib29s IHRlc3RfcmF3X2V4cHJlc3Npb25fY292ZXJhZ2UoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4 dCk7CiAKIAogLyoKLSAqIHBhcnNlX2FuYWx5emUKKyAqIHBhcnNlX2FuYWx5emVfZml4ZWRw YXJhbXMKICAqCQlBbmFseXplIGEgcmF3IHBhcnNlIHRyZWUgYW5kIHRyYW5zZm9ybSBpdCB0 byBRdWVyeSBmb3JtLgogICoKICAqIE9wdGlvbmFsbHksIGluZm9ybWF0aW9uIGFib3V0ICRu IHBhcmFtZXRlciB0eXBlcyBjYW4gYmUgc3VwcGxpZWQuCkBAIC0xMDcsOCArMTA3LDggQEAg c3RhdGljIGJvb2wgdGVzdF9yYXdfZXhwcmVzc2lvbl9jb3ZlcmFnZShOb2RlICpub2RlLCB2 b2lkICpjb250ZXh0KTsKICAqIGEgZHVtbXkgQ01EX1VUSUxJVFkgUXVlcnkgbm9kZS4KICAq LwogUXVlcnkgKgotcGFyc2VfYW5hbHl6ZShSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCi0JCQkgIE9pZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcywK K3BhcnNlX2FuYWx5emVfZml4ZWRwYXJhbXMoUmF3U3RtdCAqcGFyc2VUcmVlLCBjb25zdCBj aGFyICpzb3VyY2VUZXh0LAorCQkJICBjb25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBudW1Q YXJhbXMsCiAJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KQogewogCVBhcnNlU3Rh dGUgKnBzdGF0ZSA9IG1ha2VfcGFyc2VzdGF0ZShOVUxMKTsKQEAgLTEyMCw3ICsxMjAsNyBA QCBwYXJzZV9hbmFseXplKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNl VGV4dCwKIAlwc3RhdGUtPnBfc291cmNldGV4dCA9IHNvdXJjZVRleHQ7CiAKIAlpZiAobnVt UGFyYW1zID4gMCkKLQkJcGFyc2VfZml4ZWRfcGFyYW1ldGVycyhwc3RhdGUsIHBhcmFtVHlw ZXMsIG51bVBhcmFtcyk7CisJCXNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMocHN0YXRl LCBwYXJhbVR5cGVzLCBudW1QYXJhbXMpOwogCiAJcHN0YXRlLT5wX3F1ZXJ5RW52ID0gcXVl cnlFbnY7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCBwYXJzZV9hbmFseXplX3ZhcnBhcmFtcyhS YXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAKIAlwc3RhdGUt PnBfc291cmNldGV4dCA9IHNvdXJjZVRleHQ7CiAKLQlwYXJzZV92YXJpYWJsZV9wYXJhbWV0 ZXJzKHBzdGF0ZSwgcGFyYW1UeXBlcywgbnVtUGFyYW1zKTsKKwlzZXR1cF9wYXJzZV92YXJp YWJsZV9wYXJhbWV0ZXJzKHBzdGF0ZSwgcGFyYW1UeXBlcywgbnVtUGFyYW1zKTsKIAogCXF1 ZXJ5ID0gdHJhbnNmb3JtVG9wTGV2ZWxTdG10KHBzdGF0ZSwgcGFyc2VUcmVlKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3BhcmFtLmMgYi9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfcGFyYW0uYwppbmRleCA2OGE1NTM0MzkzLi5iOTcyNmUwNzU3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0uYworKysgYi9zcmMv YmFja2VuZC9wYXJzZXIvcGFyc2VfcGFyYW0uYwpAQCAtMzUsNyArMzUsNyBAQAogCiB0eXBl ZGVmIHN0cnVjdCBGaXhlZFBhcmFtU3RhdGUKIHsKLQlPaWQJCSAgICpwYXJhbVR5cGVzOwkJ LyogYXJyYXkgb2YgcGFyYW1ldGVyIHR5cGUgT0lEcyAqLworCWNvbnN0IE9pZCAgKnBhcmFt VHlwZXM7CQkvKiBhcnJheSBvZiBwYXJhbWV0ZXIgdHlwZSBPSURzICovCiAJaW50CQkJbnVt UGFyYW1zOwkJLyogbnVtYmVyIG9mIGFycmF5IGVudHJpZXMgKi8KIH0gRml4ZWRQYXJhbVN0 YXRlOwogCkBAIC02NCw4ICs2NCw4IEBAIHN0YXRpYyBib29sIHF1ZXJ5X2NvbnRhaW5zX2V4 dGVybl9wYXJhbXNfd2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpOwogICogU2V0 IHVwIHRvIHByb2Nlc3MgYSBxdWVyeSBjb250YWluaW5nIHJlZmVyZW5jZXMgdG8gZml4ZWQg cGFyYW1ldGVycy4KICAqLwogdm9pZAotcGFyc2VfZml4ZWRfcGFyYW1ldGVycyhQYXJzZVN0 YXRlICpwc3RhdGUsCi0JCQkJCSAgIE9pZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcykK K3NldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAorCQkJ CQkgICBjb25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBudW1QYXJhbXMpCiB7CiAJRml4ZWRQ YXJhbVN0YXRlICpwYXJzdGF0ZSA9IHBhbGxvYyhzaXplb2YoRml4ZWRQYXJhbVN0YXRlKSk7 CiAKQEAgLTgwLDcgKzgwLDcgQEAgcGFyc2VfZml4ZWRfcGFyYW1ldGVycyhQYXJzZVN0YXRl ICpwc3RhdGUsCiAgKiBTZXQgdXAgdG8gcHJvY2VzcyBhIHF1ZXJ5IGNvbnRhaW5pbmcgcmVm ZXJlbmNlcyB0byB2YXJpYWJsZSBwYXJhbWV0ZXJzLgogICovCiB2b2lkCi1wYXJzZV92YXJp YWJsZV9wYXJhbWV0ZXJzKFBhcnNlU3RhdGUgKnBzdGF0ZSwKK3NldHVwX3BhcnNlX3Zhcmlh YmxlX3BhcmFtZXRlcnMoUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJICBPaWQgKipwYXJh bVR5cGVzLCBpbnQgKm51bVBhcmFtcykKIHsKIAlWYXJQYXJhbVN0YXRlICpwYXJzdGF0ZSA9 IHBhbGxvYyhzaXplb2YoVmFyUGFyYW1TdGF0ZSkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV91 dGlsY21kLmMKaW5kZXggMmQ4NTdhMzAxYi4uNDY0ZGM2YzMxYiAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcGFyc2VyL3BhcnNlX3V0aWxjbWQuYworKysgYi9zcmMvYmFja2VuZC9wYXJz ZXIvcGFyc2VfdXRpbGNtZC5jCkBAIC0zLDcgKzMsNyBAQAogICogcGFyc2VfdXRpbGNtZC5j CiAgKgkgIFBlcmZvcm0gcGFyc2UgYW5hbHlzaXMgd29yayBmb3IgdmFyaW91cyB1dGlsaXR5 IGNvbW1hbmRzCiAgKgotICogRm9ybWVybHkgd2UgZGlkIHRoaXMgd29yayBkdXJpbmcgcGFy c2VfYW5hbHl6ZSgpIGluIGFuYWx5emUuYy4gIEhvd2V2ZXIKKyAqIEZvcm1lcmx5IHdlIGRp ZCB0aGlzIHdvcmsgZHVyaW5nIHBhcnNlX2FuYWx5emVfKigpIGluIGFuYWx5emUuYy4gIEhv d2V2ZXIKICAqIHRoYXQgaXMgZmFpcmx5IHVuc2FmZSBpbiB0aGUgcHJlc2VuY2Ugb2YgcXVl cnl0cmVlIGNhY2hpbmcsIHNpbmNlIGFueQogICogZGF0YWJhc2Ugc3RhdGUgdGhhdCB3ZSBk ZXBlbmQgb24gaW4gbWFraW5nIHRoZSB0cmFuc2Zvcm1hdGlvbnMgbWlnaHQgYmUKICAqIG9i c29sZXRlIGJ5IHRoZSB0aW1lIHRoZSB1dGlsaXR5IGNvbW1hbmQgaXMgZXhlY3V0ZWQ7IGFu ZCB1dGlsaXR5IGNvbW1hbmRzCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3Rn cmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggODJkZTAxY2RjNi4u ZTg2Mjc1Yzc4MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisr KyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNjQwLDggKzY0MCw4IEBAIHBn X3BhcnNlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKICAqIE5PVEU6IGZvciBy ZWFzb25zIG1lbnRpb25lZCBhYm92ZSwgdGhpcyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gcmF3 IHBhcnNpbmcuCiAgKi8KIExpc3QgKgotcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShSYXdTdG10 ICpwYXJzZXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKLQkJCQkJICAgT2lkICpw YXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLAorcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9maXhl ZHBhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywK KwkJCQkJICAgY29uc3QgT2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLAogCQkJCQkg ICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlRdWVyeQkgICAqcXVlcnk7CkBA IC02NTUsNyArNjU1LDcgQEAgcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShSYXdTdG10ICpwYXJz ZXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAlpZiAobG9nX3BhcnNlcl9zdGF0 cykKIAkJUmVzZXRVc2FnZSgpOwogCi0JcXVlcnkgPSBwYXJzZV9hbmFseXplKHBhcnNldHJl ZSwgcXVlcnlfc3RyaW5nLCBwYXJhbVR5cGVzLCBudW1QYXJhbXMsCisJcXVlcnkgPSBwYXJz ZV9hbmFseXplX2ZpeGVkcGFyYW1zKHBhcnNldHJlZSwgcXVlcnlfc3RyaW5nLCBwYXJhbVR5 cGVzLCBudW1QYXJhbXMsCiAJCQkJCQkgIHF1ZXJ5RW52KTsKIAogCWlmIChsb2dfcGFyc2Vy X3N0YXRzKQpAQCAtNjcyLDEyICs2NzIsMTMgQEAgcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZShS YXdTdG10ICpwYXJzZXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIH0KIAogLyoK LSAqIERvIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdyaXRpbmcuICBUaGlzIGlzIHRoZSBzYW1l IGFzIHBnX2FuYWx5emVfYW5kX3Jld3JpdGUKLSAqIGV4Y2VwdCB0aGF0IGV4dGVybmFsLXBh cmFtZXRlciByZXNvbHV0aW9uIGlzIGRldGVybWluZWQgYnkgcGFyc2VyIGNhbGxiYWNrCi0g KiBob29rcyBpbnN0ZWFkIG9mIGEgZml4ZWQgbGlzdCBvZiBwYXJhbWV0ZXIgZGF0YXR5cGVz LgorICogRG8gcGFyc2UgYW5hbHlzaXMgYW5kIHJld3JpdGluZy4gIFRoaXMgaXMgdGhlIHNh bWUgYXMKKyAqIHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfKiBleGNlcHQgdGhhdCwgaW5zdGVh ZCBvZiBhIGZpeGVkIGxpc3Qgb2YgcGFyYW1ldGVyCisgKiBkYXRhdHlwZXMsIGEgcGFyc2Vy IGNhbGxiYWNrIGlzIHN1cHBsaWVkIHRoYXQgY2FuIGRvIGV4dGVybmFsLXBhcmFtZXRlcgor ICogcmVzb2x1dGlvbiBhbmQgcG9zc2libHkgb3RoZXIgdGhpbmdzLgogICovCiBMaXN0ICoK LXBnX2FuYWx5emVfYW5kX3Jld3JpdGVfcGFyYW1zKFJhd1N0bXQgKnBhcnNldHJlZSwKK3Bn X2FuYWx5emVfYW5kX3Jld3JpdGVfd2l0aGNiKFJhd1N0bXQgKnBhcnNldHJlZSwKIAkJCQkJ CQkgIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkgIFBhcnNlclNldHVwSG9v ayBwYXJzZXJTZXR1cCwKIAkJCQkJCQkgIHZvaWQgKnBhcnNlclNldHVwQXJnLApAQCAtMTEy OCw3ICsxMTI5LDcgQEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3Ry aW5nKQogCQllbHNlCiAJCQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKE1l c3NhZ2VDb250ZXh0KTsKIAotCQlxdWVyeXRyZWVfbGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jl d3JpdGUocGFyc2V0cmVlLCBxdWVyeV9zdHJpbmcsCisJCXF1ZXJ5dHJlZV9saXN0ID0gcGdf YW5hbHl6ZV9hbmRfcmV3cml0ZV9maXhlZHBhcmFtcyhwYXJzZXRyZWUsIHF1ZXJ5X3N0cmlu ZywKIAkJCQkJCQkJCQkJCU5VTEwsIDAsIE5VTEwpOwogCiAJCXBsYW50cmVlX2xpc3QgPSBw Z19wbGFuX3F1ZXJpZXMocXVlcnl0cmVlX2xpc3QsIHF1ZXJ5X3N0cmluZywKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQv dXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggNjc2N2VhZThmMi4uMjg4NzFmMDE3NiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIv c3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTY4MiwxMyArNjgyLDEz IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAogCWlmIChyYXd0cmVlID09IE5VTEwpCiAJCXRsaXN0ID0gTklMOwogCWVsc2UgaWYgKHBs YW5zb3VyY2UtPnBhcnNlclNldHVwICE9IE5VTEwpCi0JCXRsaXN0ID0gcGdfYW5hbHl6ZV9h bmRfcmV3cml0ZV9wYXJhbXMocmF3dHJlZSwKKwkJdGxpc3QgPSBwZ19hbmFseXplX2FuZF9y ZXdyaXRlX3dpdGhjYihyYXd0cmVlLAogCQkJCQkJCQkJCQkgIHBsYW5zb3VyY2UtPnF1ZXJ5 X3N0cmluZywKIAkJCQkJCQkJCQkJICBwbGFuc291cmNlLT5wYXJzZXJTZXR1cCwKIAkJCQkJ CQkJCQkJICBwbGFuc291cmNlLT5wYXJzZXJTZXR1cEFyZywKIAkJCQkJCQkJCQkJICBxdWVy eUVudik7CiAJZWxzZQotCQl0bGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGUocmF3dHJl ZSwKKwkJdGxpc3QgPSBwZ19hbmFseXplX2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKHJhd3Ry ZWUsCiAJCQkJCQkJCQkgICBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkg ICBwbGFuc291cmNlLT5wYXJhbV90eXBlcywKIAkJCQkJCQkJCSAgIHBsYW5zb3VyY2UtPm51 bV9wYXJhbXMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oIGIv c3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAppbmRleCBhMGYwYmQzOGQ3Li5lMDE5YmM5 YjFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJzZXIvYW5hbHl6ZS5oCisrKyBiL3Ny Yy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmgKQEAgLTI0LDggKzI0LDggQEAgdHlwZWRlZiB2 b2lkICgqcG9zdF9wYXJzZV9hbmFseXplX2hvb2tfdHlwZSkgKFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIGV4dGVybiBQR0RMTElNUE9SVCBwb3N0X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBv c3RfcGFyc2VfYW5hbHl6ZV9ob29rOwogCiAKLWV4dGVybiBRdWVyeSAqcGFyc2VfYW5hbHl6 ZShSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCi0JCQkJCQkJ T2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudik7CitleHRlcm4gUXVlcnkgKnBhcnNlX2FuYWx5emVfZml4ZWRwYXJhbXMoUmF3U3Rt dCAqcGFyc2VUcmVlLCBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAorCQkJCQkJCWNvbnN0IE9p ZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcywgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlF bnYpOwogZXh0ZXJuIFF1ZXJ5ICpwYXJzZV9hbmFseXplX3ZhcnBhcmFtcyhSYXdTdG10ICpw YXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCQkgIE9pZCAqKnBh cmFtVHlwZXMsIGludCAqbnVtUGFyYW1zKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv cGFyc2VyL3BhcnNlX3BhcmFtLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcGFyYW0u aAppbmRleCBiNDJmZmYyOTZjLi5lNzA2OWRmNmFjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9wYXJzZXIvcGFyc2VfcGFyYW0uaAorKysgYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2Vf cGFyYW0uaApAQCAtMTUsOSArMTUsOSBAQAogCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX25v ZGUuaCIKIAotZXh0ZXJuIHZvaWQgcGFyc2VfZml4ZWRfcGFyYW1ldGVycyhQYXJzZVN0YXRl ICpwc3RhdGUsCi0JCQkJCQkJCSAgIE9pZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcyk7 Ci1leHRlcm4gdm9pZCBwYXJzZV92YXJpYWJsZV9wYXJhbWV0ZXJzKFBhcnNlU3RhdGUgKnBz dGF0ZSwKK2V4dGVybiB2b2lkIHNldHVwX3BhcnNlX2ZpeGVkX3BhcmFtZXRlcnMoUGFyc2VT dGF0ZSAqcHN0YXRlLAorCQkJCQkJCQkgICBjb25zdCBPaWQgKnBhcmFtVHlwZXMsIGludCBu dW1QYXJhbXMpOworZXh0ZXJuIHZvaWQgc2V0dXBfcGFyc2VfdmFyaWFibGVfcGFyYW1ldGVy cyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkgIE9pZCAqKnBhcmFtVHlwZXMsIGlu dCAqbnVtUGFyYW1zKTsKIGV4dGVybiB2b2lkIGNoZWNrX3ZhcmlhYmxlX3BhcmFtZXRlcnMo UGFyc2VTdGF0ZSAqcHN0YXRlLCBRdWVyeSAqcXVlcnkpOwogZXh0ZXJuIGJvb2wgcXVlcnlf Y29udGFpbnNfZXh0ZXJuX3BhcmFtcyhRdWVyeSAqcXVlcnkpOwpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvdGNvcC90Y29wcHJvdC5oIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29wcHJvdC5o CmluZGV4IDVjNzcwNzVhZWQuLmFmMDU2ZmU0M2EgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3Rjb3AvdGNvcHByb3QuaAorKysgYi9zcmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKQEAg LTQ1LDExICs0NSwxMSBAQCBleHRlcm4gUEdETExJTVBPUlQgaW50IGxvZ19zdGF0ZW1lbnQ7 CiAKIGV4dGVybiBMaXN0ICpwZ19wYXJzZV9xdWVyeShjb25zdCBjaGFyICpxdWVyeV9zdHJp bmcpOwogZXh0ZXJuIExpc3QgKnBnX3Jld3JpdGVfcXVlcnkoUXVlcnkgKnF1ZXJ5KTsKLWV4 dGVybiBMaXN0ICpwZ19hbmFseXplX2FuZF9yZXdyaXRlKFJhd1N0bXQgKnBhcnNldHJlZSwK K2V4dGVybiBMaXN0ICpwZ19hbmFseXplX2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKFJhd1N0 bXQgKnBhcnNldHJlZSwKIAkJCQkJCQkJCWNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKLQkJ CQkJCQkJCU9pZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcywKKwkJCQkJCQkJCWNvbnN0 IE9pZCAqcGFyYW1UeXBlcywgaW50IG51bVBhcmFtcywKIAkJCQkJCQkJCVF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52KTsKLWV4dGVybiBMaXN0ICpwZ19hbmFseXplX2FuZF9yZXdyaXRl X3BhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsCitleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9h bmRfcmV3cml0ZV93aXRoY2IoUmF3U3RtdCAqcGFyc2V0cmVlLAogCQkJCQkJCQkJCSAgIGNv bnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywKIAkJCQkJCQkJCQkgICBQYXJzZXJTZXR1cEhvb2sg cGFyc2VyU2V0dXAsCiAJCQkJCQkJCQkJICAgdm9pZCAqcGFyc2VyU2V0dXBBcmcsCgpiYXNl LWNvbW1pdDogY2FiNWI5YWIyYzA2NmJhOTA0ZjEzZGUyNjgxODcyZGNkYTMxZTIwNwotLSAK Mi4zNC4xCgo= --------------0gSzA6rVarw3UNheI0svPnVG Content-Type: text/plain; charset=UTF-8; name="v1-0002-Add-pg_analyze_and_rewrite_varparams.patch" Content-Disposition: attachment; filename="v1-0002-Add-pg_analyze_and_rewrite_varparams.patch" Content-Transfer-Encoding: base64 RnJvbSBiMWUzNmQ0YjQ5Y2MzNzEzOGNlY2JiZDljMWYxMjhmOWMxZGY2NWY0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyOCBEZWMgMjAyMSAwOTowMTo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEgMi8zXSBBZGQgcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV92YXJwYXJhbXMo KQoKVGhpcyBuZXcgZnVuY3Rpb24gZXh0cmFjdHMgY29tbW9uIGNvZGUgZnJvbSBQcmVwYXJl UXVlcnkoKSBhbmQKZXhlY19wYXJzZV9tZXNzYWdlKCkuICBJdCBpcyB0aGVuIGV4YWN0bHkg YW5hbG9nb3VzIHRvIHRoZSBleGlzdGluZwpwZ19hbmFseXplX2FuZF9yZXdyaXRlX2ZpeGVk cGFyYW1zKCkgYW5kCnBnX2FuYWx5emVfYW5kX3Jld3JpdGVfd2l0aGNiKCkuCgpUbyB1bmlm eSB0aGVzZSB0d28gY29kZSBwYXRocywgdGhpcyBtYWtlcyBQcmVwYXJlUXVlcnkoKSBub3cg c3ViamVjdAp0byBsb2dfcGFyc2VyX3N0YXRzLiAgQWxzbywgYm90aCBwYXRocyBub3cgaW52 b2tlClRSQUNFX1BPU1RHUkVTUUxfUVVFUllfUkVXUklURV9TVEFSVCgpLiAgUHJlcGFyZVF1 ZXJ5KCkgbm8gbG9uZ2VyCmNoZWNrcyB3aGV0aGVyIGEgdXRpbGl0eSBzdGF0ZW1lbnQgd2Fz IHNwZWNpZmllZC4gIFRoZSBncmFtbWFyIGRvZXNuJ3QKYWxsb3cgdGhhdCBhbnl3YXksIGFu ZCBleGVjX3BhcnNlX21lc3NhZ2UoKSBzdXBwb3J0cyBpdCwgc28KcmVzdHJpY3RpbmcgaXQg ZG9lc24ndCBzZWVtIG5lY2Vzc2FyeS4KClRoaXMgYWxzbyBhZGRzIFF1ZXJ5RW52aXJvbm1l bnQgc3VwcG9ydCB0byB0aGUgKnZhcnBhcmFtcyBmdW5jdGlvbnMsCmZvciBjb25zaXN0ZW5j eSB3aXRoIGl0cyBjb3VzaW5zLCBldmVuIHRob3VnaCBpdCBpcyBub3QgdXNlZCByaWdodApu b3cuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIHwgNDMgKystLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jICAgfCAgNSArLQogc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICAgIHwgOTUgKysrKysrKysrKysrKysrKysrKysrKyst LS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCAgIHwgIDIgKy0KIHNy Yy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCAgICB8ICA1ICsrCiA1IGZpbGVzIGNoYW5nZWQs IDc4IGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBh cmUuYwppbmRleCA1ZTAzYzdjNWFhLi45ZDBkMjcxODRjIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJl cGFyZS5jCkBAIC02Miw5ICs2Miw3IEBAIFByZXBhcmVRdWVyeShQYXJzZVN0YXRlICpwc3Rh dGUsIFByZXBhcmVTdG10ICpzdG10LAogCUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7 CiAJT2lkCQkgICAqYXJndHlwZXMgPSBOVUxMOwogCWludAkJCW5hcmdzOwotCVF1ZXJ5CSAg ICpxdWVyeTsKIAlMaXN0CSAgICpxdWVyeV9saXN0OwotCWludAkJCWk7CiAKIAkvKgogCSAq IERpc2FsbG93IGVtcHR5LXN0cmluZyBzdGF0ZW1lbnQgbmFtZSAoY29uZmxpY3RzIHdpdGgg cHJvdG9jb2wtbGV2ZWwKQEAgLTk2LDYgKzk0LDcgQEAgUHJlcGFyZVF1ZXJ5KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgUHJlcGFyZVN0bXQgKnN0bXQsCiAKIAlpZiAobmFyZ3MpCiAJeworCQlp bnQJCQlpOwogCQlMaXN0Q2VsbCAgICpsOwogCiAJCWFyZ3R5cGVzID0gKE9pZCAqKSBwYWxs b2MobmFyZ3MgKiBzaXplb2YoT2lkKSk7CkBAIC0xMTQsNDQgKzExMywxMCBAQCBQcmVwYXJl UXVlcnkoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQcmVwYXJlU3RtdCAqc3RtdCwKIAkgKiBBbmFs eXplIHRoZSBzdGF0ZW1lbnQgdXNpbmcgdGhlc2UgcGFyYW1ldGVyIHR5cGVzIChhbnkgcGFy YW1ldGVycwogCSAqIHBhc3NlZCBpbiBmcm9tIGFib3ZlIHVzIHdpbGwgbm90IGJlIHZpc2li bGUgdG8gaXQpLCBhbGxvd2luZwogCSAqIGluZm9ybWF0aW9uIGFib3V0IHVua25vd24gcGFy YW1ldGVycyB0byBiZSBkZWR1Y2VkIGZyb20gY29udGV4dC4KKwkgKiBSZXdyaXRlIHRoZSBx dWVyeS4gVGhlIHJlc3VsdCBjb3VsZCBiZSAwLCAxLCBvciBtYW55IHF1ZXJpZXMuCiAJICov Ci0JcXVlcnkgPSBwYXJzZV9hbmFseXplX3ZhcnBhcmFtcyhyYXdzdG10LCBwc3RhdGUtPnBf c291cmNldGV4dCwKLQkJCQkJCQkJCSZhcmd0eXBlcywgJm5hcmdzKTsKLQotCS8qCi0JICog Q2hlY2sgdGhhdCBhbGwgcGFyYW1ldGVyIHR5cGVzIHdlcmUgZGV0ZXJtaW5lZC4KLQkgKi8K LQlmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykKLQl7Ci0JCU9pZAkJCWFyZ3R5cGUgPSBh cmd0eXBlc1tpXTsKLQotCQlpZiAoYXJndHlwZSA9PSBJbnZhbGlkT2lkIHx8IGFyZ3R5cGUg PT0gVU5LTk9XTk9JRCkKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNP REVfSU5ERVRFUk1JTkFURV9EQVRBVFlQRSksCi0JCQkJCSBlcnJtc2coImNvdWxkIG5vdCBk ZXRlcm1pbmUgZGF0YSB0eXBlIG9mIHBhcmFtZXRlciAkJWQiLAotCQkJCQkJCWkgKyAxKSkp OwotCX0KLQotCS8qCi0JICogZ3JhbW1hciBvbmx5IGFsbG93cyBQcmVwYXJhYmxlU3RtdCwg c28gdGhpcyBjaGVjayBzaG91bGQgYmUgcmVkdW5kYW50Ci0JICovCi0Jc3dpdGNoIChxdWVy eS0+Y29tbWFuZFR5cGUpCi0JewotCQljYXNlIENNRF9TRUxFQ1Q6Ci0JCWNhc2UgQ01EX0lO U0VSVDoKLQkJY2FzZSBDTURfVVBEQVRFOgotCQljYXNlIENNRF9ERUxFVEU6Ci0JCQkvKiBP SyAqLwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQllcmVwb3J0KEVSUk9SLAotCQkJCQko ZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUFNUQVRFTUVOVF9ERUZJTklUSU9OKSwKLQkJCQkJ IGVycm1zZygidXRpbGl0eSBzdGF0ZW1lbnRzIGNhbm5vdCBiZSBwcmVwYXJlZCIpKSk7Ci0J CQlicmVhazsKLQl9Ci0KLQkvKiBSZXdyaXRlIHRoZSBxdWVyeS4gVGhlIHJlc3VsdCBjb3Vs ZCBiZSAwLCAxLCBvciBtYW55IHF1ZXJpZXMuICovCi0JcXVlcnlfbGlzdCA9IFF1ZXJ5UmV3 cml0ZShxdWVyeSk7CisJcXVlcnlfbGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVfdmFy cGFyYW1zKHJhd3N0bXQsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQkJCQkJCQkJCQkJICAm YXJndHlwZXMsICZuYXJncywgTlVMTCk7CiAKIAkvKiBGaW5pc2ggZmlsbGluZyBpbiB0aGUg Q2FjaGVkUGxhblNvdXJjZSAqLwogCUNvbXBsZXRlQ2FjaGVkUGxhbihwbGFuc291cmNlLApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9hbmFseXplLmMKaW5kZXggNTZjNThkMjYzZC4uNGE5ZDIxMmIyMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvYW5hbHl6ZS5jCkBAIC0xNDgsNyArMTQ4LDggQEAgcGFyc2VfYW5hbHl6ZV9maXhl ZHBhcmFtcyhSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAg Ki8KIFF1ZXJ5ICoKIHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQgKnBhcnNlVHJl ZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKLQkJCQkJCU9pZCAqKnBhcmFtVHlwZXMsIGlu dCAqbnVtUGFyYW1zKQorCQkJCQkJT2lkICoqcGFyYW1UeXBlcywgaW50ICpudW1QYXJhbXMs CisJCQkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKIHsKIAlQYXJzZVN0YXRlICpw c3RhdGUgPSBtYWtlX3BhcnNlc3RhdGUoTlVMTCk7CiAJUXVlcnkJICAgKnF1ZXJ5OwpAQCAt MTYwLDYgKzE2MSw4IEBAIHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQgKnBhcnNl VHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAogCXNldHVwX3BhcnNlX3ZhcmlhYmxl X3BhcmFtZXRlcnMocHN0YXRlLCBwYXJhbVR5cGVzLCBudW1QYXJhbXMpOwogCisJcHN0YXRl LT5wX3F1ZXJ5RW52ID0gcXVlcnlFbnY7CisKIAlxdWVyeSA9IHRyYW5zZm9ybVRvcExldmVs U3RtdChwc3RhdGUsIHBhcnNlVHJlZSk7CiAKIAkvKiBtYWtlIHN1cmUgYWxsIGlzIHdlbGwg d2l0aCBwYXJhbWV0ZXIgdHlwZXMgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3Av cG9zdGdyZXMuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCBlODYyNzVj NzgxLi44YWRlMTM5OTRmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC02NDAsOSArNjQwLDEx IEBAIHBnX3BhcnNlX3F1ZXJ5KGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZykKICAqIE5PVEU6 IGZvciByZWFzb25zIG1lbnRpb25lZCBhYm92ZSwgdGhpcyBtdXN0IGJlIHNlcGFyYXRlIGZy b20gcmF3IHBhcnNpbmcuCiAgKi8KIExpc3QgKgotcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV9m aXhlZHBhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZywKLQkJCQkJICAgY29uc3QgT2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLAotCQkJ CQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudikKK3BnX2FuYWx5emVfYW5kX3Jld3Jp dGVfZml4ZWRwYXJhbXMoUmF3U3RtdCAqcGFyc2V0cmVlLAorCQkJCQkJCQkgICBjb25zdCBj aGFyICpxdWVyeV9zdHJpbmcsCisJCQkJCQkJCSAgIGNvbnN0IE9pZCAqcGFyYW1UeXBlcywK KwkJCQkJCQkJICAgaW50IG51bVBhcmFtcywKKwkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVu dCAqcXVlcnlFbnYpCiB7CiAJUXVlcnkJICAgKnF1ZXJ5OwogCUxpc3QJICAgKnF1ZXJ5dHJl ZV9saXN0OwpAQCAtNjcxLDYgKzY3Myw1OSBAQCBwZ19hbmFseXplX2FuZF9yZXdyaXRlX2Zp eGVkcGFyYW1zKFJhd1N0bXQgKnBhcnNldHJlZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n LAogCXJldHVybiBxdWVyeXRyZWVfbGlzdDsKIH0KIAorLyoKKyAqIERvIHBhcnNlIGFuYWx5 c2lzIGFuZCByZXdyaXRpbmcuICBUaGlzIGlzIHRoZSBzYW1lIGFzCisgKiBwZ19hbmFseXpl X2FuZF9yZXdyaXRlX2ZpeGVkcGFyYW1zKCkgZXhjZXB0IHRoYXQgaXQncyBva2F5IHRvIGRl ZHVjZQorICogaW5mb3JtYXRpb24gYWJvdXQgJG4gc3ltYm9sIGRhdGF0eXBlcyBmcm9tIGNv bnRleHQuCisgKi8KK0xpc3QgKgorcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV92YXJwYXJhbXMo UmF3U3RtdCAqcGFyc2V0cmVlLAorCQkJCQkJCQkgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n LAorCQkJCQkJCQkgT2lkICoqcGFyYW1UeXBlcywKKwkJCQkJCQkJIGludCAqbnVtUGFyYW1z LAorCQkJCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJUXVlcnkJICAg KnF1ZXJ5OworCUxpc3QJICAgKnF1ZXJ5dHJlZV9saXN0OworCisJVFJBQ0VfUE9TVEdSRVNR TF9RVUVSWV9SRVdSSVRFX1NUQVJUKHF1ZXJ5X3N0cmluZyk7CisKKwkvKgorCSAqICgxKSBQ ZXJmb3JtIHBhcnNlIGFuYWx5c2lzLgorCSAqLworCWlmIChsb2dfcGFyc2VyX3N0YXRzKQor CQlSZXNldFVzYWdlKCk7CisKKwlxdWVyeSA9IHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKHBh cnNldHJlZSwgcXVlcnlfc3RyaW5nLCBwYXJhbVR5cGVzLCBudW1QYXJhbXMsCisJCQkJCQkg IHF1ZXJ5RW52KTsKKworCS8qCisJICogQ2hlY2sgYWxsIHBhcmFtZXRlciB0eXBlcyBnb3Qg ZGV0ZXJtaW5lZC4KKwkgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8ICpudW1QYXJhbXM7IGkr KykKKwl7CisJCU9pZAkJCXB0eXBlID0gKCpwYXJhbVR5cGVzKVtpXTsKKworCQlpZiAocHR5 cGUgPT0gSW52YWxpZE9pZCB8fCBwdHlwZSA9PSBVTktOT1dOT0lEKQorCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTkRFVEVSTUlOQVRFX0RBVEFUWVBFKSwK KwkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWluZSBkYXRhIHR5cGUgb2YgcGFyYW1l dGVyICQlZCIsCisJCQkJCQkJaSArIDEpKSk7CisJfQorCisJaWYgKGxvZ19wYXJzZXJfc3Rh dHMpCisJCVNob3dVc2FnZSgiUEFSU0UgQU5BTFlTSVMgU1RBVElTVElDUyIpOworCisJLyoK KwkgKiAoMikgUmV3cml0ZSB0aGUgcXVlcmllcywgYXMgbmVjZXNzYXJ5CisJICovCisJcXVl cnl0cmVlX2xpc3QgPSBwZ19yZXdyaXRlX3F1ZXJ5KHF1ZXJ5KTsKKworCVRSQUNFX1BPU1RH UkVTUUxfUVVFUllfUkVXUklURV9ET05FKHF1ZXJ5X3N0cmluZyk7CisKKwlyZXR1cm4gcXVl cnl0cmVlX2xpc3Q7Cit9CisKIC8qCiAgKiBEbyBwYXJzZSBhbmFseXNpcyBhbmQgcmV3cml0 aW5nLiAgVGhpcyBpcyB0aGUgc2FtZSBhcwogICogcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV8q IGV4Y2VwdCB0aGF0LCBpbnN0ZWFkIG9mIGEgZml4ZWQgbGlzdCBvZiBwYXJhbWV0ZXIKQEAg LTE0MTIsNyArMTQ2Nyw2IEBAIGV4ZWNfcGFyc2VfbWVzc2FnZShjb25zdCBjaGFyICpxdWVy eV9zdHJpbmcsCS8qIHN0cmluZyB0byBleGVjdXRlICovCiAKIAlpZiAocGFyc2V0cmVlX2xp c3QgIT0gTklMKQogCXsKLQkJUXVlcnkJICAgKnF1ZXJ5OwogCQlib29sCQlzbmFwc2hvdF9z ZXQgPSBmYWxzZTsKIAogCQlyYXdfcGFyc2VfdHJlZSA9IGxpbml0aWFsX25vZGUoUmF3U3Rt dCwgcGFyc2V0cmVlX2xpc3QpOwpAQCAtMTQ1MiwzNCArMTUwNiwxMyBAQCBleGVjX3BhcnNl X21lc3NhZ2UoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAkvKiBzdHJpbmcgdG8gZXhlY3V0 ZSAqLwogCQkvKgogCQkgKiBBbmFseXplIGFuZCByZXdyaXRlIHRoZSBxdWVyeS4gIE5vdGUg dGhhdCB0aGUgb3JpZ2luYWxseSBzcGVjaWZpZWQKIAkJICogcGFyYW1ldGVyIHNldCBpcyBu b3QgcmVxdWlyZWQgdG8gYmUgY29tcGxldGUsIHNvIHdlIGhhdmUgdG8gdXNlCi0JCSAqIHBh cnNlX2FuYWx5emVfdmFycGFyYW1zKCkuCi0JCSAqLwotCQlpZiAobG9nX3BhcnNlcl9zdGF0 cykKLQkJCVJlc2V0VXNhZ2UoKTsKLQotCQlxdWVyeSA9IHBhcnNlX2FuYWx5emVfdmFycGFy YW1zKHJhd19wYXJzZV90cmVlLAotCQkJCQkJCQkJCXF1ZXJ5X3N0cmluZywKLQkJCQkJCQkJ CQkmcGFyYW1UeXBlcywKLQkJCQkJCQkJCQkmbnVtUGFyYW1zKTsKLQotCQkvKgotCQkgKiBD aGVjayBhbGwgcGFyYW1ldGVyIHR5cGVzIGdvdCBkZXRlcm1pbmVkLgorCQkgKiBwZ19hbmFs eXplX2FuZF9yZXdyaXRlX3ZhcnBhcmFtcygpLgogCQkgKi8KLQkJZm9yIChpbnQgaSA9IDA7 IGkgPCBudW1QYXJhbXM7IGkrKykKLQkJewotCQkJT2lkCQkJcHR5cGUgPSBwYXJhbVR5cGVz W2ldOwotCi0JCQlpZiAocHR5cGUgPT0gSW52YWxpZE9pZCB8fCBwdHlwZSA9PSBVTktOT1dO T0lEKQotCQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0lOREVU RVJNSU5BVEVfREFUQVRZUEUpLAotCQkJCQkJIGVycm1zZygiY291bGQgbm90IGRldGVybWlu ZSBkYXRhIHR5cGUgb2YgcGFyYW1ldGVyICQlZCIsCi0JCQkJCQkJCWkgKyAxKSkpOwotCQl9 Ci0KLQkJaWYgKGxvZ19wYXJzZXJfc3RhdHMpCi0JCQlTaG93VXNhZ2UoIlBBUlNFIEFOQUxZ U0lTIFNUQVRJU1RJQ1MiKTsKLQotCQlxdWVyeXRyZWVfbGlzdCA9IHBnX3Jld3JpdGVfcXVl cnkocXVlcnkpOworCQlxdWVyeXRyZWVfbGlzdCA9IHBnX2FuYWx5emVfYW5kX3Jld3JpdGVf dmFycGFyYW1zKHJhd19wYXJzZV90cmVlLAorCQkJCQkJCQkJCQkJCQkgIHF1ZXJ5X3N0cmlu ZywKKwkJCQkJCQkJCQkJCQkJICAmcGFyYW1UeXBlcywKKwkJCQkJCQkJCQkJCQkJICAmbnVt UGFyYW1zLAorCQkJCQkJCQkJCQkJCQkgIE5VTEwpOwogCiAJCS8qIERvbmUgd2l0aCB0aGUg c25hcHNob3QgdXNlZCBmb3IgcGFyc2luZyAqLwogCQlpZiAoc25hcHNob3Rfc2V0KQpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCBiL3NyYy9pbmNsdWRlL3Bh cnNlci9hbmFseXplLmgKaW5kZXggZTAxOWJjOWIxZS4uYjFjNTkyYzZjNiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaAorKysgYi9zcmMvaW5jbHVkZS9wYXJz ZXIvYW5hbHl6ZS5oCkBAIC0yNyw3ICsyNyw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCBwb3N0 X3BhcnNlX2FuYWx5emVfaG9va190eXBlIHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rOwogZXh0 ZXJuIFF1ZXJ5ICpwYXJzZV9hbmFseXplX2ZpeGVkcGFyYW1zKFJhd1N0bXQgKnBhcnNlVHJl ZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQljb25zdCBPaWQgKnBhcmFtVHlw ZXMsIGludCBudW1QYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4dGVy biBRdWVyeSAqcGFyc2VfYW5hbHl6ZV92YXJwYXJhbXMoUmF3U3RtdCAqcGFyc2VUcmVlLCBj b25zdCBjaGFyICpzb3VyY2VUZXh0LAotCQkJCQkJCQkJICBPaWQgKipwYXJhbVR5cGVzLCBp bnQgKm51bVBhcmFtcyk7CisJCQkJCQkJCQkgIE9pZCAqKnBhcmFtVHlwZXMsIGludCAqbnVt UGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKIGV4dGVybiBRdWVyeSAq cGFyc2Vfc3ViX2FuYWx5emUoTm9kZSAqcGFyc2VUcmVlLCBQYXJzZVN0YXRlICpwYXJlbnRQ YXJzZVN0YXRlLAogCQkJCQkJCQlDb21tb25UYWJsZUV4cHIgKnBhcmVudENURSwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Rjb3AvdGNvcHByb3QuaCBiL3NyYy9pbmNsdWRlL3Rjb3Av dGNvcHByb3QuaAppbmRleCBhZjA1NmZlNDNhLi4zN2JjZThjZGI1IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS90Y29wL3Rjb3Bwcm90LmgKKysrIGIvc3JjL2luY2x1ZGUvdGNvcC90Y29w cHJvdC5oCkBAIC00OSw2ICs0OSwxMSBAQCBleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9hbmRf cmV3cml0ZV9maXhlZHBhcmFtcyhSYXdTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkJCQljb25z dCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQljb25zdCBPaWQgKnBhcmFtVHlwZXMs IGludCBudW1QYXJhbXMsCiAJCQkJCQkJCQlRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7 CitleHRlcm4gTGlzdCAqcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV92YXJwYXJhbXMoUmF3U3Rt dCAqcGFyc2V0cmVlLAorCQkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywK KwkJCQkJCQkJCQkJICBPaWQgKipwYXJhbVR5cGVzLAorCQkJCQkJCQkJCQkgIGludCAqbnVt UGFyYW1zLAorCQkJCQkJCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKIGV4 dGVybiBMaXN0ICpwZ19hbmFseXplX2FuZF9yZXdyaXRlX3dpdGhjYihSYXdTdG10ICpwYXJz ZXRyZWUsCiAJCQkJCQkJCQkJICAgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAogCQkJCQkJ CQkJCSAgIFBhcnNlclNldHVwSG9vayBwYXJzZXJTZXR1cCwKLS0gCjIuMzQuMQoK --------------0gSzA6rVarw3UNheI0svPnVG Content-Type: text/plain; charset=UTF-8; name="v1-0003-Add-parse_analyze_withcb.patch" Content-Disposition: attachment; filename="v1-0003-Add-parse_analyze_withcb.patch" Content-Transfer-Encoding: base64 RnJvbSA5YmFhZDVkZWYzZDlhNGI0NDJhNTkxYjlmNjI4NjA0NGMzNTRmODlkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAyOCBEZWMgMjAyMSAwOTowMTo0NSArMDEwMApTdWJqZWN0 OiBbUEFUQ0ggdjEgMy8zXSBBZGQgcGFyc2VfYW5hbHl6ZV93aXRoY2IoKQoKVGhpcyBleHRy YWN0cyBjb2RlIGZyb20gcGdfYW5hbHl6ZV9hbmRfcmV3cml0ZV93aXRoY2IoKSBpbnRvIGEK c2VwYXJhdGUgZnVuY3Rpb24gdGhhdCBtaXJyb3JzIHRoZSBleGlzdGluZwpwYXJzZV9hbmFs eXplX2ZpeGVkcGFyYW1zKCkgYW5kIHBhcnNlX2FuYWx5emVfdmFycGFyYW1zKCkuCi0tLQog c3JjL2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyB8IDM4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jICB8IDIyICsr LS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5emUuaCB8ICA1 ICsrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMgYi9zcmMv YmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5jCmluZGV4IDRhOWQyMTJiMjIuLjZmNGNjMWI5ZGIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXplLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcGFyc2VyL2FuYWx5emUuYwpAQCAtMTgxLDYgKzE4MSw0NCBAQCBwYXJzZV9hbmFs eXplX3ZhcnBhcmFtcyhSYXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRl eHQsCiAJcmV0dXJuIHF1ZXJ5OwogfQogCisvKgorICogcGFyc2VfYW5hbHl6ZV93aXRoY2IK KyAqCisgKiBUaGlzIHZhcmlhbnQgaXMgdXNlZCB3aGVuIHRoZSBjYWxsZXIgc3VwcGxpZXMg dGhlaXIgb3duIHBhcnNlciBjYWxsYmFjayB0bworICogcmVzb2x2ZSBwYXJhbWV0ZXJzIGFu ZCBwb3NzaWJseSBvdGhlciB0aGluZ3MuCisgKi8KK1F1ZXJ5ICoKK3BhcnNlX2FuYWx5emVf d2l0aGNiKFJhd1N0bXQgKnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKKwkJ CQkJIFBhcnNlclNldHVwSG9vayBwYXJzZXJTZXR1cCwKKwkJCQkJIHZvaWQgKnBhcnNlclNl dHVwQXJnLAorCQkJCQkgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYpCit7CisJUGFyc2VT dGF0ZSAqcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOworCVF1ZXJ5CSAgICpxdWVy eTsKKwlKdW1ibGVTdGF0ZSAqanN0YXRlID0gTlVMTDsKKworCUFzc2VydChzb3VyY2VUZXh0 ICE9IE5VTEwpOyAvKiByZXF1aXJlZCBhcyBvZiA4LjQgKi8KKworCXBzdGF0ZS0+cF9zb3Vy Y2V0ZXh0ID0gc291cmNlVGV4dDsKKwlwc3RhdGUtPnBfcXVlcnlFbnYgPSBxdWVyeUVudjsK KwkoKnBhcnNlclNldHVwKSAocHN0YXRlLCBwYXJzZXJTZXR1cEFyZyk7CisKKwlxdWVyeSA9 IHRyYW5zZm9ybVRvcExldmVsU3RtdChwc3RhdGUsIHBhcnNlVHJlZSk7CisKKwlpZiAoSXNR dWVyeUlkRW5hYmxlZCgpKQorCQlqc3RhdGUgPSBKdW1ibGVRdWVyeShxdWVyeSwgc291cmNl VGV4dCk7CisKKwlpZiAocG9zdF9wYXJzZV9hbmFseXplX2hvb2spCisJCSgqcG9zdF9wYXJz ZV9hbmFseXplX2hvb2spIChwc3RhdGUsIHF1ZXJ5LCBqc3RhdGUpOworCisJZnJlZV9wYXJz ZXN0YXRlKHBzdGF0ZSk7CisKKwlwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHF1ZXJ5LT5xdWVy eUlkLCBmYWxzZSk7CisKKwlyZXR1cm4gcXVlcnk7Cit9CisKKwogLyoKICAqIHBhcnNlX3N1 Yl9hbmFseXplCiAgKgkJRW50cnkgcG9pbnQgZm9yIHJlY3Vyc2l2ZWx5IGFuYWx5emluZyBh IHN1Yi1zdGF0ZW1lbnQuCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVz LmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOGFkZTEzOTk0Zi4uYTY0 NmUzNGQ0YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCisrKyBi L3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtNzM5LDEyICs3MzksOCBAQCBwZ19h bmFseXplX2FuZF9yZXdyaXRlX3dpdGhjYihSYXdTdG10ICpwYXJzZXRyZWUsCiAJCQkJCQkJ ICB2b2lkICpwYXJzZXJTZXR1cEFyZywKIAkJCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1 ZXJ5RW52KQogewotCVBhcnNlU3RhdGUgKnBzdGF0ZTsKIAlRdWVyeQkgICAqcXVlcnk7CiAJ TGlzdAkgICAqcXVlcnl0cmVlX2xpc3Q7Ci0JSnVtYmxlU3RhdGUgKmpzdGF0ZSA9IE5VTEw7 Ci0KLQlBc3NlcnQocXVlcnlfc3RyaW5nICE9IE5VTEwpOwkvKiByZXF1aXJlZCBhcyBvZiA4 LjQgKi8KIAogCVRSQUNFX1BPU1RHUkVTUUxfUVVFUllfUkVXUklURV9TVEFSVChxdWVyeV9z dHJpbmcpOwogCkBAIC03NTQsMjIgKzc1MCw4IEBAIHBnX2FuYWx5emVfYW5kX3Jld3JpdGVf d2l0aGNiKFJhd1N0bXQgKnBhcnNldHJlZSwKIAlpZiAobG9nX3BhcnNlcl9zdGF0cykKIAkJ UmVzZXRVc2FnZSgpOwogCi0JcHN0YXRlID0gbWFrZV9wYXJzZXN0YXRlKE5VTEwpOwotCXBz dGF0ZS0+cF9zb3VyY2V0ZXh0ID0gcXVlcnlfc3RyaW5nOwotCXBzdGF0ZS0+cF9xdWVyeUVu diA9IHF1ZXJ5RW52OwotCSgqcGFyc2VyU2V0dXApIChwc3RhdGUsIHBhcnNlclNldHVwQXJn KTsKLQotCXF1ZXJ5ID0gdHJhbnNmb3JtVG9wTGV2ZWxTdG10KHBzdGF0ZSwgcGFyc2V0cmVl KTsKLQotCWlmIChJc1F1ZXJ5SWRFbmFibGVkKCkpCi0JCWpzdGF0ZSA9IEp1bWJsZVF1ZXJ5 KHF1ZXJ5LCBxdWVyeV9zdHJpbmcpOwotCi0JaWYgKHBvc3RfcGFyc2VfYW5hbHl6ZV9ob29r KQotCQkoKnBvc3RfcGFyc2VfYW5hbHl6ZV9ob29rKSAocHN0YXRlLCBxdWVyeSwganN0YXRl KTsKLQotCWZyZWVfcGFyc2VzdGF0ZShwc3RhdGUpOwotCi0JcGdzdGF0X3JlcG9ydF9xdWVy eV9pZChxdWVyeS0+cXVlcnlJZCwgZmFsc2UpOworCXF1ZXJ5ID0gcGFyc2VfYW5hbHl6ZV93 aXRoY2IocGFyc2V0cmVlLCBxdWVyeV9zdHJpbmcsIHBhcnNlclNldHVwLCBwYXJzZXJTZXR1 cEFyZywKKwkJCQkJCQkJIHF1ZXJ5RW52KTsKIAogCWlmIChsb2dfcGFyc2VyX3N0YXRzKQog CQlTaG93VXNhZ2UoIlBBUlNFIEFOQUxZU0lTIFNUQVRJU1RJQ1MiKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL3BhcnNlci9hbmFseXplLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvYW5h bHl6ZS5oCmluZGV4IGIxYzU5MmM2YzYuLjQyM2I5NTY4NjkgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3BhcnNlci9hbmFseXplLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2FuYWx5 emUuaApAQCAtMTQsNiArMTQsNyBAQAogI2lmbmRlZiBBTkFMWVpFX0gKICNkZWZpbmUgQU5B TFlaRV9ICiAKKyNpbmNsdWRlICJub2Rlcy9wYXJhbXMuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2Vfbm9kZS5oIgogI2luY2x1ZGUgInV0aWxzL3F1ZXJ5anVtYmxlLmgiCiAKQEAgLTI4 LDYgKzI5LDEwIEBAIGV4dGVybiBRdWVyeSAqcGFyc2VfYW5hbHl6ZV9maXhlZHBhcmFtcyhS YXdTdG10ICpwYXJzZVRyZWUsIGNvbnN0IGNoYXIgKnNvdXJjZVRlCiAJCQkJCQkJY29uc3Qg T2lkICpwYXJhbVR5cGVzLCBpbnQgbnVtUGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVy eUVudik7CiBleHRlcm4gUXVlcnkgKnBhcnNlX2FuYWx5emVfdmFycGFyYW1zKFJhd1N0bXQg KnBhcnNlVHJlZSwgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCQkJCQkJCSAgT2lkICoq cGFyYW1UeXBlcywgaW50ICpudW1QYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52 KTsKK2V4dGVybiBRdWVyeSAqcGFyc2VfYW5hbHl6ZV93aXRoY2IoUmF3U3RtdCAqcGFyc2VU cmVlLCBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAorCQkJCQkJCQkgICBQYXJzZXJTZXR1cEhv b2sgcGFyc2VyU2V0dXAsCisJCQkJCQkJCSAgIHZvaWQgKnBhcnNlclNldHVwQXJnLAorCQkJ CQkJCQkgICBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudik7CiAKIGV4dGVybiBRdWVyeSAq cGFyc2Vfc3ViX2FuYWx5emUoTm9kZSAqcGFyc2VUcmVlLCBQYXJzZVN0YXRlICpwYXJlbnRQ YXJzZVN0YXRlLAogCQkJCQkJCQlDb21tb25UYWJsZUV4cHIgKnBhcmVudENURSwKLS0gCjIu MzQuMQoK --------------0gSzA6rVarw3UNheI0svPnVG--