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 1lqLr1-0000Nk-DL for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Jun 2021 20:28:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lqLqy-000212-Mb for pgsql-hackers@arkaria.postgresql.org; Mon, 07 Jun 2021 20:28:08 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lqLqx-0001zJ-Sq for pgsql-hackers@lists.postgresql.org; Mon, 07 Jun 2021 20:28:08 +0000 Received: from wforward4-smtp.messagingengine.com ([64.147.123.34]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lqLqn-0001Oy-Oe for pgsql-hackers@postgresql.org; Mon, 07 Jun 2021 20:28:06 +0000 Received: from compute2.internal (compute2.nyi.internal [10.202.2.42]) by mailforward.west.internal (Postfix) with ESMTP id 3A5E91832 for ; Mon, 7 Jun 2021 16:27:55 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute2.internal (MEProxy); Mon, 07 Jun 2021 16:27:55 -0400 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=fm3; bh=u9raNymlhh4E46ewLD/+cb5nfqAmY 0iDA6q/Qtr2S0Q=; b=p8eJtnoYrKfn9UuzbliidPP1dINuyTPG86HUIjl0697DA +Qryp27DpCVveSk2MRTdZjm1KyDj9rgkZlpTkDQZvXWyXa7kutXX+F1ep3p6RbMV sxRXvNv7oi8mVCTvHjcs6vPv5WesMJZYUoyKmhjb7x3knd59lI1g1/g3YDz3W52U dESVex0zzTOKMDDpgBJggUFCSOoemGivMABggIWK6pL2jeL/g5ikbO9IfshLjSBJ K3nFz+gwzmoZg7nEdwqmdAgd1YGr3VV6qfj0TsO5AQh82/Y3A0UbSOZDePSyGkuG sTY8oWyWccWQq/soObvoovPLq30j60YXX9o1miVMA== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfedtjedgudeglecutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecunecujfgurhephffuvffkffgfgggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeejteehveeuueeuudevteekgeefieefveettdeukeevteekffffieejheffgfej leenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvg htvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Mon, 7 Jun 2021 16:27:53 -0400 (EDT) From: Peter Eisentraut Subject: automatically generating node support functions To: pgsql-hackers Message-ID: Date: Mon, 7 Jun 2021 22:27:52 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.10.2 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------27A7BC2CABCF3DC0280417D2" Content-Language: en-US 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. --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit I wrote a script to automatically generate the node support functions (copy, equal, out, and read, as well as the node tags enum) from the struct definitions. The first eight patches are to clean up various inconsistencies to make parsing or generation easier. The interesting stuff is in patch 0009. For each of the four node support files, it creates two include files, e.g., copyfuncs.inc1.c and copyfuncs.inc2.c to include in the main file. All the scaffolding of the main file stays in place. In this patch, I have only ifdef'ed out the code to could be removed, mainly so that it won't constantly have merge conflicts. Eventually, that should all be changed to delete the code. When we do that, some code comments should probably be preserved elsewhere, so that will need another pass of consideration. I have tried to mostly make the coverage of the output match what is currently there. For example, one could do out/read coverage of utility statement nodes easily with this, but I have manually excluded those for now. The reason is mainly that it's easier to diff the before and after, and adding a bunch of stuff like this might require a separate analysis and review. Subtyping (TidScan -> Scan) is supported. For the hard cases, you can just write a manual function and exclude generating one. For the not so hard cases, there is a way of annotating struct fields to get special behaviors. For example, pg_node_attr(equal_ignore) has the field ignored in equal functions. There are a couple of additional minor issues mentioned in the script source. But basically, it all seems to work. --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0001-Rename-NodeTag-of-ExprState.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0001-Rename-NodeTag-of-ExprState.patch" RnJvbSBjNzgyODcxZDZjYzU5ZTJmZWQyMzJjNzhjMzA3ZDYzZTcyY2JiM2Q1IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE1OjQ1OjE0ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwMS8xMF0gUmVuYW1lIE5vZGVUYWcgb2YgRXhwclN0YXRlCgpSZW5hbWUg ZnJvbSB0YWcgdG8gdHlwZSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggYWxsIG90aGVyIG5vZGUg c3RydWN0cy4KLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwci5jIHwgNCArKy0t CiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgIHwgMiArLQogMiBmaWxlcyBjaGFu Z2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNFeHByLmMKaW5kZXggOGM5ZjhhNmFlYi4uYzZiYTExZDAzNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9leGVjRXhwci5jCkBAIC0zNjMsNyArMzYzLDcgQEAgRXhlY0J1aWxkUHJvamVjdGlvbklu Zm8oTGlzdCAqdGFyZ2V0TGlzdCwKIAogCXByb2pJbmZvLT5waV9leHByQ29udGV4dCA9IGVj b250ZXh0OwogCS8qIFdlIGVtYmVkIEV4cHJTdGF0ZSBpbnRvIFByb2plY3Rpb25JbmZvIGlu c3RlYWQgb2YgZG9pbmcgZXh0cmEgcGFsbG9jICovCi0JcHJvakluZm8tPnBpX3N0YXRlLnRh ZyA9IFRfRXhwclN0YXRlOworCXByb2pJbmZvLT5waV9zdGF0ZS50eXBlID0gVF9FeHByU3Rh dGU7CiAJc3RhdGUgPSAmcHJvakluZm8tPnBpX3N0YXRlOwogCXN0YXRlLT5leHByID0gKEV4 cHIgKikgdGFyZ2V0TGlzdDsKIAlzdGF0ZS0+cGFyZW50ID0gcGFyZW50OwpAQCAtNTMxLDcg KzUzMSw3IEBAIEV4ZWNCdWlsZFVwZGF0ZVByb2plY3Rpb24oTGlzdCAqdGFyZ2V0TGlzdCwK IAogCXByb2pJbmZvLT5waV9leHByQ29udGV4dCA9IGVjb250ZXh0OwogCS8qIFdlIGVtYmVk IEV4cHJTdGF0ZSBpbnRvIFByb2plY3Rpb25JbmZvIGluc3RlYWQgb2YgZG9pbmcgZXh0cmEg cGFsbG9jICovCi0JcHJvakluZm8tPnBpX3N0YXRlLnRhZyA9IFRfRXhwclN0YXRlOworCXBy b2pJbmZvLT5waV9zdGF0ZS50eXBlID0gVF9FeHByU3RhdGU7CiAJc3RhdGUgPSAmcHJvaklu Zm8tPnBpX3N0YXRlOwogCWlmIChldmFsVGFyZ2V0TGlzdCkKIAkJc3RhdGUtPmV4cHIgPSAo RXhwciAqKSB0YXJnZXRMaXN0OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCA3Nzk1YTY5 NDkwLi44ZmE5YzhhZmY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtNjAsNyArNjAs NyBAQCB0eXBlZGVmIERhdHVtICgqRXhwclN0YXRlRXZhbEZ1bmMpIChzdHJ1Y3QgRXhwclN0 YXRlICpleHByZXNzaW9uLAogCiB0eXBlZGVmIHN0cnVjdCBFeHByU3RhdGUKIHsKLQlOb2Rl VGFnCQl0YWc7CisJTm9kZVRhZwkJdHlwZTsKIAogCXVpbnQ4CQlmbGFnczsJCQkvKiBiaXRt YXNrIG9mIEVFT19GTEFHXyogYml0cywgc2VlIGFib3ZlICovCiAKLS0gCjIuMzEuMQoK --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0002-Rename-argument-of-_outValue.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0002-Rename-argument-of-_outValue.patch" RnJvbSA3NzQ2ZGRkNGYyYTk1MzQzMjJiMmI5MjI2MDA3NjM4ZDMxNDJjMGM3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE1OjQ3OjU2ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwMi8xMF0gUmVuYW1lIGFyZ3VtZW50IG9mIF9vdXRWYWx1ZSgpCgpSZW5h bWUgZnJvbSB2YWx1ZSB0byBub2RlLCBmb3IgY29uc2lzdGVuY3kgd2l0aCBzaW1pbGFyIGZ1 bmN0aW9ucy4KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIHwgMTYgKysrKysr KystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCAwNDY5NmY2MTNjLi5iNTRjNTdkMDlm IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTM0MDIsMTIgKzM0MDIsMTIgQEAgX291dEFF eHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBBX0V4cHIgKm5vZGUpCiB9CiAKIHN0YXRpYyB2 b2lkCi1fb3V0VmFsdWUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFZhbHVlICp2YWx1ZSkKK19v dXRWYWx1ZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgVmFsdWUgKm5vZGUpCiB7Ci0Jc3dpdGNo ICh2YWx1ZS0+dHlwZSkKKwlzd2l0Y2ggKG5vZGUtPnR5cGUpCiAJewogCQljYXNlIFRfSW50 ZWdlcjoKLQkJCWFwcGVuZFN0cmluZ0luZm8oc3RyLCAiJWQiLCB2YWx1ZS0+dmFsLml2YWwp OworCQkJYXBwZW5kU3RyaW5nSW5mbyhzdHIsICIlZCIsIG5vZGUtPnZhbC5pdmFsKTsKIAkJ CWJyZWFrOwogCQljYXNlIFRfRmxvYXQ6CiAKQEAgLTM0MTUsNyArMzQxNSw3IEBAIF9vdXRW YWx1ZShTdHJpbmdJbmZvIHN0ciwgY29uc3QgVmFsdWUgKnZhbHVlKQogCQkJICogV2UgYXNz dW1lIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIG51bWVyaWMgbGl0ZXJhbCBhbmQgc28gZG9lcyBu b3QKIAkJCSAqIG5lZWQgcXVvdGluZy4KIAkJCSAqLwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0 cmluZyhzdHIsIHZhbHVlLT52YWwuc3RyKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco c3RyLCBub2RlLT52YWwuc3RyKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfU3RyaW5nOgogCkBA IC0zNDI0LDIwICszNDI0LDIwIEBAIF9vdXRWYWx1ZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qg VmFsdWUgKnZhbHVlKQogCQkJICogYnV0IHdlIGRvbid0IHdhbnQgaXQgdG8gZG8gYW55dGhp bmcgd2l0aCBhbiBlbXB0eSBzdHJpbmcuCiAJCQkgKi8KIAkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKHN0ciwgJyInKTsKLQkJCWlmICh2YWx1ZS0+dmFsLnN0clswXSAhPSAnXDAnKQotCQkJ CW91dFRva2VuKHN0ciwgdmFsdWUtPnZhbC5zdHIpOworCQkJaWYgKG5vZGUtPnZhbC5zdHJb MF0gIT0gJ1wwJykKKwkJCQlvdXRUb2tlbihzdHIsIG5vZGUtPnZhbC5zdHIpOwogCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnIicpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9CaXRT dHJpbmc6CiAJCQkvKiBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBhbHJlYWR5IGhhcyBsZWFk aW5nICdiJyAqLwotCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsIHZhbHVlLT52YWwu c3RyKTsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCBub2RlLT52YWwuc3RyKTsK IAkJCWJyZWFrOwogCQljYXNlIFRfTnVsbDoKIAkJCS8qIHRoaXMgaXMgc2VlbiBvbmx5IHdp dGhpbiBBX0NvbnN0LCBub3QgaW4gdHJhbnNmb3JtZWQgdHJlZXMgKi8KIAkJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoc3RyLCAiTlVMTCIpOwogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6Ci0J CQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLCAoaW50KSB2YWx1 ZS0+dHlwZSk7CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQi LCAoaW50KSBub2RlLT50eXBlKTsKIAkJCWJyZWFrOwogCX0KIH0KLS0gCjIuMzEuMQoK --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0003-Rename-some-node-support-functions-for-consistenc.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v1-0003-Rename-some-node-support-functions-for-consistenc.pa"; filename*1="tch" RnJvbSA3MjgyZTkyNmE2NDkyMDQ2ZTMxODlmOGRkYzBjY2JiYmFiOGE0NzBiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE1OjUxOjM3ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwMy8xMF0gUmVuYW1lIHNvbWUgbm9kZSBzdXBwb3J0IGZ1bmN0aW9ucyBm b3IgY29uc2lzdGVuY3kKClNvbWUgbm9kZSBmdW5jdGlvbiBuYW1lcyBkaWRuJ3QgbWF0Y2gg dGhlaXIgbm9kZSB0eXBlIG5hbWVzIGV4YWN0bHkuCkZpeCB0aG9zZSBmb3IgY29uc2lzdGVu Y3kuCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgIHwgMTYgKysrKysrKyst LS0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jIHwgMTYgKysrKysrKyst LS0tLS0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgIHwgIDggKysrKy0tLS0K IDMgZmlsZXMgY2hhbmdlZCwgMjAgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCA2MjFmN2NlMDY4Li4zNWE4NWRmNDQyIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtMjcwMCw3ICsyNzAwLDcgQEAgX2NvcHlDb21tb25U YWJsZUV4cHIoY29uc3QgQ29tbW9uVGFibGVFeHByICpmcm9tKQogfQogCiBzdGF0aWMgQV9F eHByICoKLV9jb3B5QUV4cHIoY29uc3QgQV9FeHByICpmcm9tKQorX2NvcHlBX0V4cHIoY29u c3QgQV9FeHByICpmcm9tKQogewogCUFfRXhwcgkgICAqbmV3bm9kZSA9IG1ha2VOb2RlKEFf RXhwcik7CiAKQEAgLTI3MzYsNyArMjczNiw3IEBAIF9jb3B5UGFyYW1SZWYoY29uc3QgUGFy YW1SZWYgKmZyb20pCiB9CiAKIHN0YXRpYyBBX0NvbnN0ICoKLV9jb3B5QUNvbnN0KGNvbnN0 IEFfQ29uc3QgKmZyb20pCitfY29weUFfQ29uc3QoY29uc3QgQV9Db25zdCAqZnJvbSkKIHsK IAlBX0NvbnN0ICAgICpuZXdub2RlID0gbWFrZU5vZGUoQV9Db25zdCk7CiAKQEAgLTI3ODcs NyArMjc4Nyw3IEBAIF9jb3B5RnVuY0NhbGwoY29uc3QgRnVuY0NhbGwgKmZyb20pCiB9CiAK IHN0YXRpYyBBX1N0YXIgKgotX2NvcHlBU3Rhcihjb25zdCBBX1N0YXIgKmZyb20pCitfY29w eUFfU3Rhcihjb25zdCBBX1N0YXIgKmZyb20pCiB7CiAJQV9TdGFyCSAgICpuZXdub2RlID0g bWFrZU5vZGUoQV9TdGFyKTsKIApAQCAtMjc5NSw3ICsyNzk1LDcgQEAgX2NvcHlBU3Rhcihj b25zdCBBX1N0YXIgKmZyb20pCiB9CiAKIHN0YXRpYyBBX0luZGljZXMgKgotX2NvcHlBSW5k aWNlcyhjb25zdCBBX0luZGljZXMgKmZyb20pCitfY29weUFfSW5kaWNlcyhjb25zdCBBX0lu ZGljZXMgKmZyb20pCiB7CiAJQV9JbmRpY2VzICAqbmV3bm9kZSA9IG1ha2VOb2RlKEFfSW5k aWNlcyk7CiAKQEAgLTU3MTEsNyArNTcxMSw3IEBAIGNvcHlPYmplY3RJbXBsKGNvbnN0IHZv aWQgKmZyb20pCiAJCQlyZXR2YWwgPSBfY29weURyb3BTdWJzY3JpcHRpb25TdG10KGZyb20p OwogCQkJYnJlYWs7CiAJCWNhc2UgVF9BX0V4cHI6Ci0JCQlyZXR2YWwgPSBfY29weUFFeHBy KGZyb20pOworCQkJcmV0dmFsID0gX2NvcHlBX0V4cHIoZnJvbSk7CiAJCQlicmVhazsKIAkJ Y2FzZSBUX0NvbHVtblJlZjoKIAkJCXJldHZhbCA9IF9jb3B5Q29sdW1uUmVmKGZyb20pOwpA QCAtNTcyMCwxNiArNTcyMCwxNiBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9t KQogCQkJcmV0dmFsID0gX2NvcHlQYXJhbVJlZihmcm9tKTsKIAkJCWJyZWFrOwogCQljYXNl IFRfQV9Db25zdDoKLQkJCXJldHZhbCA9IF9jb3B5QUNvbnN0KGZyb20pOworCQkJcmV0dmFs ID0gX2NvcHlBX0NvbnN0KGZyb20pOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9GdW5jQ2FsbDoK IAkJCXJldHZhbCA9IF9jb3B5RnVuY0NhbGwoZnJvbSk7CiAJCQlicmVhazsKIAkJY2FzZSBU X0FfU3RhcjoKLQkJCXJldHZhbCA9IF9jb3B5QVN0YXIoZnJvbSk7CisJCQlyZXR2YWwgPSBf Y29weUFfU3Rhcihmcm9tKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfQV9JbmRpY2VzOgotCQkJ cmV0dmFsID0gX2NvcHlBSW5kaWNlcyhmcm9tKTsKKwkJCXJldHZhbCA9IF9jb3B5QV9JbmRp Y2VzKGZyb20pOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9BX0luZGlyZWN0aW9uOgogCQkJcmV0 dmFsID0gX2NvcHlBX0luZGlyZWN0aW9uKGZyb20pOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvbm9kZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5j CmluZGV4IDMwMzNjMTkzNGMuLmUwNGVjNDE5MDQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNz LmMKQEAgLTIzNjksNyArMjM2OSw3IEBAIF9lcXVhbEFsdGVyUG9saWN5U3RtdChjb25zdCBB bHRlclBvbGljeVN0bXQgKmEsIGNvbnN0IEFsdGVyUG9saWN5U3RtdCAqYikKIH0KIAogc3Rh dGljIGJvb2wKLV9lcXVhbEFFeHByKGNvbnN0IEFfRXhwciAqYSwgY29uc3QgQV9FeHByICpi KQorX2VxdWFsQV9FeHByKGNvbnN0IEFfRXhwciAqYSwgY29uc3QgQV9FeHByICpiKQogewog CUNPTVBBUkVfU0NBTEFSX0ZJRUxEKGtpbmQpOwogCUNPTVBBUkVfTk9ERV9GSUVMRChuYW1l KTsKQEAgLTIzOTksNyArMjM5OSw3IEBAIF9lcXVhbFBhcmFtUmVmKGNvbnN0IFBhcmFtUmVm ICphLCBjb25zdCBQYXJhbVJlZiAqYikKIH0KIAogc3RhdGljIGJvb2wKLV9lcXVhbEFDb25z dChjb25zdCBBX0NvbnN0ICphLCBjb25zdCBBX0NvbnN0ICpiKQorX2VxdWFsQV9Db25zdChj b25zdCBBX0NvbnN0ICphLCBjb25zdCBBX0NvbnN0ICpiKQogewogCWlmICghZXF1YWwoJmEt PnZhbCwgJmItPnZhbCkpCS8qIGhhY2sgZm9yIGluLWxpbmUgVmFsdWUgZmllbGQgKi8KIAkJ cmV0dXJuIGZhbHNlOwpAQCAtMjQyNywxMyArMjQyNywxMyBAQCBfZXF1YWxGdW5jQ2FsbChj b25zdCBGdW5jQ2FsbCAqYSwgY29uc3QgRnVuY0NhbGwgKmIpCiB9CiAKIHN0YXRpYyBib29s Ci1fZXF1YWxBU3Rhcihjb25zdCBBX1N0YXIgKmEsIGNvbnN0IEFfU3RhciAqYikKK19lcXVh bEFfU3Rhcihjb25zdCBBX1N0YXIgKmEsIGNvbnN0IEFfU3RhciAqYikKIHsKIAlyZXR1cm4g dHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wKLV9lcXVhbEFJbmRpY2VzKGNvbnN0IEFfSW5kaWNl cyAqYSwgY29uc3QgQV9JbmRpY2VzICpiKQorX2VxdWFsQV9JbmRpY2VzKGNvbnN0IEFfSW5k aWNlcyAqYSwgY29uc3QgQV9JbmRpY2VzICpiKQogewogCUNPTVBBUkVfU0NBTEFSX0ZJRUxE KGlzX3NsaWNlKTsKIAlDT01QQVJFX05PREVfRklFTEQobGlkeCk7CkBAIC0zNzAyLDcgKzM3 MDIsNyBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQogCQkJcmV0dmFs ID0gX2VxdWFsRHJvcFN1YnNjcmlwdGlvblN0bXQoYSwgYik7CiAJCQlicmVhazsKIAkJY2Fz ZSBUX0FfRXhwcjoKLQkJCXJldHZhbCA9IF9lcXVhbEFFeHByKGEsIGIpOworCQkJcmV0dmFs ID0gX2VxdWFsQV9FeHByKGEsIGIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9Db2x1bW5SZWY6 CiAJCQlyZXR2YWwgPSBfZXF1YWxDb2x1bW5SZWYoYSwgYik7CkBAIC0zNzExLDE2ICszNzEx LDE2IEBAIGVxdWFsKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCiAJCQlyZXR2YWwg PSBfZXF1YWxQYXJhbVJlZihhLCBiKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfQV9Db25zdDoK LQkJCXJldHZhbCA9IF9lcXVhbEFDb25zdChhLCBiKTsKKwkJCXJldHZhbCA9IF9lcXVhbEFf Q29uc3QoYSwgYik7CiAJCQlicmVhazsKIAkJY2FzZSBUX0Z1bmNDYWxsOgogCQkJcmV0dmFs ID0gX2VxdWFsRnVuY0NhbGwoYSwgYik7CiAJCQlicmVhazsKIAkJY2FzZSBUX0FfU3RhcjoK LQkJCXJldHZhbCA9IF9lcXVhbEFTdGFyKGEsIGIpOworCQkJcmV0dmFsID0gX2VxdWFsQV9T dGFyKGEsIGIpOwogCQkJYnJlYWs7CiAJCWNhc2UgVF9BX0luZGljZXM6Ci0JCQlyZXR2YWwg PSBfZXF1YWxBSW5kaWNlcyhhLCBiKTsKKwkJCXJldHZhbCA9IF9lcXVhbEFfSW5kaWNlcyhh LCBiKTsKIAkJCWJyZWFrOwogCQljYXNlIFRfQV9JbmRpcmVjdGlvbjoKIAkJCXJldHZhbCA9 IF9lcXVhbEFfSW5kaXJlY3Rpb24oYSwgYik7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9u b2Rlcy9vdXRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCBi NTRjNTdkMDlmLi5lZDA4ZjVhY2Y0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9v dXRmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTMzMjcs NyArMzMyNyw3IEBAIF9vdXRUYWJsZVNhbXBsZUNsYXVzZShTdHJpbmdJbmZvIHN0ciwgY29u c3QgVGFibGVTYW1wbGVDbGF1c2UgKm5vZGUpCiB9CiAKIHN0YXRpYyB2b2lkCi1fb3V0QUV4 cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEFfRXhwciAqbm9kZSkKK19vdXRBX0V4cHIoU3Ry aW5nSW5mbyBzdHIsIGNvbnN0IEFfRXhwciAqbm9kZSkKIHsKIAlXUklURV9OT0RFX1RZUEUo IkFFWFBSIik7CiAKQEAgLTM0NzUsNyArMzQ3NSw3IEBAIF9vdXRSYXdTdG10KFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBSYXdTdG10ICpub2RlKQogfQogCiBzdGF0aWMgdm9pZAotX291dEFD b25zdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgQV9Db25zdCAqbm9kZSkKK19vdXRBX0NvbnN0 KFN0cmluZ0luZm8gc3RyLCBjb25zdCBBX0NvbnN0ICpub2RlKQogewogCVdSSVRFX05PREVf VFlQRSgiQV9DT05TVCIpOwogCkBAIC00NDE2LDcgKzQ0MTYsNyBAQCBvdXROb2RlKFN0cmlu Z0luZm8gc3RyLCBjb25zdCB2b2lkICpvYmopCiAJCQkJX291dFRhYmxlU2FtcGxlQ2xhdXNl KHN0ciwgb2JqKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgVF9BX0V4cHI6Ci0JCQkJX291dEFF eHByKHN0ciwgb2JqKTsKKwkJCQlfb3V0QV9FeHByKHN0ciwgb2JqKTsKIAkJCQlicmVhazsK IAkJCWNhc2UgVF9Db2x1bW5SZWY6CiAJCQkJX291dENvbHVtblJlZihzdHIsIG9iaik7CkBA IC00NDI4LDcgKzQ0MjgsNyBAQCBvdXROb2RlKFN0cmluZ0luZm8gc3RyLCBjb25zdCB2b2lk ICpvYmopCiAJCQkJX291dFJhd1N0bXQoc3RyLCBvYmopOwogCQkJCWJyZWFrOwogCQkJY2Fz ZSBUX0FfQ29uc3Q6Ci0JCQkJX291dEFDb25zdChzdHIsIG9iaik7CisJCQkJX291dEFfQ29u c3Qoc3RyLCBvYmopOwogCQkJCWJyZWFrOwogCQkJY2FzZSBUX0FfU3RhcjoKIAkJCQlfb3V0 QV9TdGFyKHN0ciwgb2JqKTsKLS0gCjIuMzEuMQoK --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0004-Change-SeqScan-node-to-contain-Scan-node.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0004-Change-SeqScan-node-to-contain-Scan-node.patch" RnJvbSAwNmQyNDMzM2VhYmMzYzljNWVmNGRmOGVmMTAwZGJhYWFjZDNkYzE2IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE1OjU1OjQwICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwNC8xMF0gQ2hhbmdlIFNlcVNjYW4gbm9kZSB0byBjb250YWluIFNjYW4g bm9kZQoKVGhpcyBtYWtlcyB0aGUgc3RydWN0dXJlIG9mIGFsbCBTY2FuLWRlcml2ZWQgbm9k ZXMgdGhlIHNhbWUsCmluZGVwZW5kZW50IG9mIHdoZXRoZXIgdGhleSBoYXZlIGFkZGl0aW9u YWwgZmllbGRzLgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgICAg ICB8ICA0ICsrLS0KIHNyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jICAgICAgICAgICB8 ICAyICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMgfCAgNiAr KystLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyAgICB8IDEwICsr KysrLS0tLS0KIHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8ICA1 ICsrKystCiA1IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDA2NmY5YWUzN2Uu LjRkMmJmMTZhNmYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYwpAQCAtMTUx LDcgKzE1MSw3IEBAIEV4ZWNJbml0U2VxU2NhbihTZXFTY2FuICpub2RlLCBFU3RhdGUgKmVz dGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlzY2Fuc3RhdGUtPnNzLnNzX2N1cnJlbnRSZWxh dGlvbiA9CiAJCUV4ZWNPcGVuU2NhblJlbGF0aW9uKGVzdGF0ZSwKLQkJCQkJCQkgbm9kZS0+ c2NhbnJlbGlkLAorCQkJCQkJCSBub2RlLT5zY2FuLnNjYW5yZWxpZCwKIAkJCQkJCQkgZWZs YWdzKTsKIAogCS8qIGFuZCBjcmVhdGUgc2xvdCB3aXRoIHRoZSBhcHByb3ByaWF0ZSByb3d0 eXBlICovCkBAIC0xNjksNyArMTY5LDcgQEAgRXhlY0luaXRTZXFTY2FuKFNlcVNjYW4gKm5v ZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCSAqIGluaXRpYWxpemUgY2hpbGQg ZXhwcmVzc2lvbnMKIAkgKi8KIAlzY2Fuc3RhdGUtPnNzLnBzLnF1YWwgPQotCQlFeGVjSW5p dFF1YWwobm9kZS0+cGxhbi5xdWFsLCAoUGxhblN0YXRlICopIHNjYW5zdGF0ZSk7CisJCUV4 ZWNJbml0UXVhbChub2RlLT5zY2FuLnBsYW4ucXVhbCwgKFBsYW5TdGF0ZSAqKSBzY2Fuc3Rh dGUpOwogCiAJcmV0dXJuIHNjYW5zdGF0ZTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5k ZXggZjBiMzRlY2ZhYy4uZmVmNGRlOTRlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAg LTE4MzIsNyArMTgzMiw3IEBAIF9yZWFkU2VxU2Nhbih2b2lkKQogewogCVJFQURfTE9DQUxT X05PX0ZJRUxEUyhTZXFTY2FuKTsKIAotCVJlYWRDb21tb25TY2FuKGxvY2FsX25vZGUpOwor CVJlYWRDb21tb25TY2FuKCZsb2NhbF9ub2RlLT5zY2FuKTsKIAogCVJFQURfRE9ORSgpOwog fQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDQzOWU2 YjY0MjYuLjc2OWI1YTBjZjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVh dGVwbGFuLmMKQEAgLTI4NTgsNyArMjg1OCw3IEBAIGNyZWF0ZV9zZXFzY2FuX3BsYW4oUGxh bm5lckluZm8gKnJvb3QsIFBhdGggKmJlc3RfcGF0aCwKIAkJCQkJCQkgc2Nhbl9jbGF1c2Vz LAogCQkJCQkJCSBzY2FuX3JlbGlkKTsKIAotCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnNj YW5fcGxhbi0+cGxhbiwgYmVzdF9wYXRoKTsKKwljb3B5X2dlbmVyaWNfcGF0aF9pbmZvKCZz Y2FuX3BsYW4tPnNjYW4ucGxhbiwgYmVzdF9wYXRoKTsKIAogCXJldHVybiBzY2FuX3BsYW47 CiB9CkBAIC01MzcyLDEzICs1MzcyLDEzIEBAIG1ha2Vfc2Vxc2NhbihMaXN0ICpxcHRsaXN0 LAogCQkJIEluZGV4IHNjYW5yZWxpZCkKIHsKIAlTZXFTY2FuICAgICpub2RlID0gbWFrZU5v ZGUoU2VxU2Nhbik7Ci0JUGxhbgkgICAqcGxhbiA9ICZub2RlLT5wbGFuOworCVBsYW4JICAg KnBsYW4gPSAmbm9kZS0+c2Nhbi5wbGFuOwogCiAJcGxhbi0+dGFyZ2V0bGlzdCA9IHFwdGxp c3Q7CiAJcGxhbi0+cXVhbCA9IHFwcXVhbDsKIAlwbGFuLT5sZWZ0dHJlZSA9IE5VTEw7CiAJ cGxhbi0+cmlnaHR0cmVlID0gTlVMTDsKLQlub2RlLT5zY2FucmVsaWQgPSBzY2FucmVsaWQ7 CisJbm9kZS0+c2Nhbi5zY2FucmVsaWQgPSBzY2FucmVsaWQ7CiAKIAlyZXR1cm4gbm9kZTsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBi L3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA2MWNjZmQzMDBi Li42Y2IyZDczMWM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9z ZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBA IC01MTYsMTIgKzUxNiwxMiBAQCBzZXRfcGxhbl9yZWZzKFBsYW5uZXJJbmZvICpyb290LCBQ bGFuICpwbGFuLCBpbnQgcnRvZmZzZXQpCiAJCQl7CiAJCQkJU2VxU2NhbiAgICAqc3BsYW4g PSAoU2VxU2NhbiAqKSBwbGFuOwogCi0JCQkJc3BsYW4tPnNjYW5yZWxpZCArPSBydG9mZnNl dDsKLQkJCQlzcGxhbi0+cGxhbi50YXJnZXRsaXN0ID0KLQkJCQkJZml4X3NjYW5fbGlzdChy b290LCBzcGxhbi0+cGxhbi50YXJnZXRsaXN0LAorCQkJCXNwbGFuLT5zY2FuLnNjYW5yZWxp ZCArPSBydG9mZnNldDsKKwkJCQlzcGxhbi0+c2Nhbi5wbGFuLnRhcmdldGxpc3QgPQorCQkJ CQlmaXhfc2Nhbl9saXN0KHJvb3QsIHNwbGFuLT5zY2FuLnBsYW4udGFyZ2V0bGlzdCwKIAkJ CQkJCQkJICBydG9mZnNldCwgTlVNX0VYRUNfVExJU1QocGxhbikpOwotCQkJCXNwbGFuLT5w bGFuLnF1YWwgPQotCQkJCQlmaXhfc2Nhbl9saXN0KHJvb3QsIHNwbGFuLT5wbGFuLnF1YWws CisJCQkJc3BsYW4tPnNjYW4ucGxhbi5xdWFsID0KKwkJCQkJZml4X3NjYW5fbGlzdChyb290 LCBzcGxhbi0+c2Nhbi5wbGFuLnF1YWwsCiAJCQkJCQkJCSAgcnRvZmZzZXQsIE5VTV9FWEVD X1FVQUwocGxhbikpOwogCQkJfQogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmlu ZGV4IGFhYTNiNjVkMDQuLjM1ZmY5NGZiYjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBA IC0zNDgsNyArMzQ4LDEwIEBAIHR5cGVkZWYgc3RydWN0IFNjYW4KICAqCQlzZXF1ZW50aWFs IHNjYW4gbm9kZQogICogLS0tLS0tLS0tLS0tLS0tLQogICovCi10eXBlZGVmIFNjYW4gU2Vx U2NhbjsKK3R5cGVkZWYgc3RydWN0IFNlcVNjYW4KK3sKKwlTY2FuCQlzY2FuOworfSBTZXFT Y2FuOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKgkJdGFibGUgc2FtcGxlIHNjYW4gbm9k ZQotLSAKMi4zMS4xCgo= --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0005-Change-NestPath-node-to-contain-JoinPath-node.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v1-0005-Change-NestPath-node-to-contain-JoinPath-node.patch" RnJvbSBkM2RjN2E4M2UyM2ZlODlhMjc2NzcxNmE1MWMzZDE4MmYwNzE5MTQ4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjAwOjMxICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwNS8xMF0gQ2hhbmdlIE5lc3RQYXRoIG5vZGUgdG8gY29udGFpbiBKb2lu UGF0aCBub2RlCgpUaGlzIG1ha2VzIHRoZSBzdHJ1Y3R1cmUgb2YgYWxsIEpvaW5QYXRoLWRl cml2ZWQgbm9kZXMgdGhlIHNhbWUsCmluZGVwZW5kZW50IG9mIHdoZXRoZXIgdGhleSBoYXZl IGFkZGl0aW9uYWwgZmllbGRzLgotLS0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nv c3RzaXplLmMgICB8IDM1ICsrKysrKysrKysrKystLS0tLS0tLS0tLS0KIHNyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYyB8IDI0ICsrKysrKysrLS0tLS0tLS0tCiBz cmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jICAgfCAzMiArKysrKysrKysr Ky0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICAgICAg fCAgNSArKystCiA0IGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDQ1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3Rz aXplLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9jb3N0c2l6ZS5jCmluZGV4IDg1 NzdjN2IxMzguLjY0ODkxMzQyZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wYXRoL2Nvc3RzaXplLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29z dHNpemUuYwpAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBib29sIGNvc3RfcXVhbF9ldmFs X3dhbGtlcihOb2RlICpub2RlLCBjb3N0X3F1YWxfZXZhbF9jb250ZXh0ICpjb250ZXh0KTsK IHN0YXRpYyB2b2lkIGdldF9yZXN0cmljdGlvbl9xdWFsX2Nvc3QoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmJhc2VyZWwsCiAJCQkJCQkJCQkgIFBhcmFtUGF0aEluZm8gKnBh cmFtX2luZm8sCiAJCQkJCQkJCQkgIFF1YWxDb3N0ICpxcHF1YWxfY29zdCk7Ci1zdGF0aWMg Ym9vbCBoYXNfaW5kZXhlZF9qb2luX3F1YWxzKE5lc3RQYXRoICpqb2lucGF0aCk7CitzdGF0 aWMgYm9vbCBoYXNfaW5kZXhlZF9qb2luX3F1YWxzKE5lc3RQYXRoICpwYXRoKTsKIHN0YXRp YyBkb3VibGUgYXBwcm94X3R1cGxlX2NvdW50KFBsYW5uZXJJbmZvICpyb290LCBKb2luUGF0 aCAqcGF0aCwKIAkJCQkJCQkJIExpc3QgKnF1YWxzKTsKIHN0YXRpYyBkb3VibGUgY2FsY19q b2lucmVsX3NpemVfZXN0aW1hdGUoUGxhbm5lckluZm8gKnJvb3QsCkBAIC0yOTc4LDggKzI5 NzgsOCBAQCBmaW5hbF9jb3N0X25lc3Rsb29wKFBsYW5uZXJJbmZvICpyb290LCBOZXN0UGF0 aCAqcGF0aCwKIAkJCQkJSm9pbkNvc3RXb3Jrc3BhY2UgKndvcmtzcGFjZSwKIAkJCQkJSm9p blBhdGhFeHRyYURhdGEgKmV4dHJhKQogewotCVBhdGgJICAgKm91dGVyX3BhdGggPSBwYXRo LT5vdXRlcmpvaW5wYXRoOwotCVBhdGgJICAgKmlubmVyX3BhdGggPSBwYXRoLT5pbm5lcmpv aW5wYXRoOworCVBhdGgJICAgKm91dGVyX3BhdGggPSBwYXRoLT5qcGF0aC5vdXRlcmpvaW5w YXRoOworCVBhdGgJICAgKmlubmVyX3BhdGggPSBwYXRoLT5qcGF0aC5pbm5lcmpvaW5wYXRo OwogCWRvdWJsZQkJb3V0ZXJfcGF0aF9yb3dzID0gb3V0ZXJfcGF0aC0+cm93czsKIAlkb3Vi bGUJCWlubmVyX3BhdGhfcm93cyA9IGlubmVyX3BhdGgtPnJvd3M7CiAJQ29zdAkJc3RhcnR1 cF9jb3N0ID0gd29ya3NwYWNlLT5zdGFydHVwX2Nvc3Q7CkBAIC0yOTk0LDE4ICsyOTk0LDE4 IEBAIGZpbmFsX2Nvc3RfbmVzdGxvb3AoUGxhbm5lckluZm8gKnJvb3QsIE5lc3RQYXRoICpw YXRoLAogCWlmIChpbm5lcl9wYXRoX3Jvd3MgPD0gMCkKIAkJaW5uZXJfcGF0aF9yb3dzID0g MTsKIAkvKiBNYXJrIHRoZSBwYXRoIHdpdGggdGhlIGNvcnJlY3Qgcm93IGVzdGltYXRlICov Ci0JaWYgKHBhdGgtPnBhdGgucGFyYW1faW5mbykKLQkJcGF0aC0+cGF0aC5yb3dzID0gcGF0 aC0+cGF0aC5wYXJhbV9pbmZvLT5wcGlfcm93czsKKwlpZiAocGF0aC0+anBhdGgucGF0aC5w YXJhbV9pbmZvKQorCQlwYXRoLT5qcGF0aC5wYXRoLnJvd3MgPSBwYXRoLT5qcGF0aC5wYXRo LnBhcmFtX2luZm8tPnBwaV9yb3dzOwogCWVsc2UKLQkJcGF0aC0+cGF0aC5yb3dzID0gcGF0 aC0+cGF0aC5wYXJlbnQtPnJvd3M7CisJCXBhdGgtPmpwYXRoLnBhdGgucm93cyA9IHBhdGgt PmpwYXRoLnBhdGgucGFyZW50LT5yb3dzOwogCiAJLyogRm9yIHBhcnRpYWwgcGF0aHMsIHNj YWxlIHJvdyBlc3RpbWF0ZS4gKi8KLQlpZiAocGF0aC0+cGF0aC5wYXJhbGxlbF93b3JrZXJz ID4gMCkKKwlpZiAocGF0aC0+anBhdGgucGF0aC5wYXJhbGxlbF93b3JrZXJzID4gMCkKIAl7 Ci0JCWRvdWJsZQkJcGFyYWxsZWxfZGl2aXNvciA9IGdldF9wYXJhbGxlbF9kaXZpc29yKCZw YXRoLT5wYXRoKTsKKwkJZG91YmxlCQlwYXJhbGxlbF9kaXZpc29yID0gZ2V0X3BhcmFsbGVs X2Rpdmlzb3IoJnBhdGgtPmpwYXRoLnBhdGgpOwogCi0JCXBhdGgtPnBhdGgucm93cyA9Ci0J CQljbGFtcF9yb3dfZXN0KHBhdGgtPnBhdGgucm93cyAvIHBhcmFsbGVsX2Rpdmlzb3IpOwor CQlwYXRoLT5qcGF0aC5wYXRoLnJvd3MgPQorCQkJY2xhbXBfcm93X2VzdChwYXRoLT5qcGF0 aC5wYXRoLnJvd3MgLyBwYXJhbGxlbF9kaXZpc29yKTsKIAl9CiAKIAkvKgpAQCAtMzAxOCw3 ICszMDE4LDcgQEAgZmluYWxfY29zdF9uZXN0bG9vcChQbGFubmVySW5mbyAqcm9vdCwgTmVz dFBhdGggKnBhdGgsCiAKIAkvKiBjb3N0IG9mIGlubmVyLXJlbGF0aW9uIHNvdXJjZSBkYXRh ICh3ZSBhbHJlYWR5IGRlYWx0IHdpdGggb3V0ZXIgcmVsKSAqLwogCi0JaWYgKHBhdGgtPmpv aW50eXBlID09IEpPSU5fU0VNSSB8fCBwYXRoLT5qb2ludHlwZSA9PSBKT0lOX0FOVEkgfHwK KwlpZiAocGF0aC0+anBhdGguam9pbnR5cGUgPT0gSk9JTl9TRU1JIHx8IHBhdGgtPmpwYXRo LmpvaW50eXBlID09IEpPSU5fQU5USSB8fAogCQlleHRyYS0+aW5uZXJfdW5pcXVlKQogCXsK IAkJLyoKQEAgLTMxMzYsMTcgKzMxMzYsMTcgQEAgZmluYWxfY29zdF9uZXN0bG9vcChQbGFu bmVySW5mbyAqcm9vdCwgTmVzdFBhdGggKnBhdGgsCiAJfQogCiAJLyogQ1BVIGNvc3RzICov Ci0JY29zdF9xdWFsX2V2YWwoJnJlc3RyaWN0X3F1YWxfY29zdCwgcGF0aC0+am9pbnJlc3Ry aWN0aW5mbywgcm9vdCk7CisJY29zdF9xdWFsX2V2YWwoJnJlc3RyaWN0X3F1YWxfY29zdCwg cGF0aC0+anBhdGguam9pbnJlc3RyaWN0aW5mbywgcm9vdCk7CiAJc3RhcnR1cF9jb3N0ICs9 IHJlc3RyaWN0X3F1YWxfY29zdC5zdGFydHVwOwogCWNwdV9wZXJfdHVwbGUgPSBjcHVfdHVw bGVfY29zdCArIHJlc3RyaWN0X3F1YWxfY29zdC5wZXJfdHVwbGU7CiAJcnVuX2Nvc3QgKz0g Y3B1X3Blcl90dXBsZSAqIG50dXBsZXM7CiAKIAkvKiB0bGlzdCBldmFsIGNvc3RzIGFyZSBw YWlkIHBlciBvdXRwdXQgcm93LCBub3QgcGVyIHR1cGxlIHNjYW5uZWQgKi8KLQlzdGFydHVw X2Nvc3QgKz0gcGF0aC0+cGF0aC5wYXRodGFyZ2V0LT5jb3N0LnN0YXJ0dXA7Ci0JcnVuX2Nv c3QgKz0gcGF0aC0+cGF0aC5wYXRodGFyZ2V0LT5jb3N0LnBlcl90dXBsZSAqIHBhdGgtPnBh dGgucm93czsKKwlzdGFydHVwX2Nvc3QgKz0gcGF0aC0+anBhdGgucGF0aC5wYXRodGFyZ2V0 LT5jb3N0LnN0YXJ0dXA7CisJcnVuX2Nvc3QgKz0gcGF0aC0+anBhdGgucGF0aC5wYXRodGFy Z2V0LT5jb3N0LnBlcl90dXBsZSAqIHBhdGgtPmpwYXRoLnBhdGgucm93czsKIAotCXBhdGgt PnBhdGguc3RhcnR1cF9jb3N0ID0gc3RhcnR1cF9jb3N0OwotCXBhdGgtPnBhdGgudG90YWxf Y29zdCA9IHN0YXJ0dXBfY29zdCArIHJ1bl9jb3N0OworCXBhdGgtPmpwYXRoLnBhdGguc3Rh cnR1cF9jb3N0ID0gc3RhcnR1cF9jb3N0OworCXBhdGgtPmpwYXRoLnBhdGgudG90YWxfY29z dCA9IHN0YXJ0dXBfY29zdCArIHJ1bl9jb3N0OwogfQogCiAvKgpAQCAtNDc3NCw4ICs0Nzc0 LDkgQEAgY29tcHV0ZV9zZW1pX2FudGlfam9pbl9mYWN0b3JzKFBsYW5uZXJJbmZvICpyb290 LAogICogZXhwZW5zaXZlLgogICovCiBzdGF0aWMgYm9vbAotaGFzX2luZGV4ZWRfam9pbl9x dWFscyhOZXN0UGF0aCAqam9pbnBhdGgpCitoYXNfaW5kZXhlZF9qb2luX3F1YWxzKE5lc3RQ YXRoICpwYXRoKQogeworCUpvaW5QYXRoICAgKmpvaW5wYXRoID0gJnBhdGgtPmpwYXRoOwog CVJlbGlkcwkJam9pbnJlbGlkcyA9IGpvaW5wYXRoLT5wYXRoLnBhcmVudC0+cmVsaWRzOwog CVBhdGgJICAgKmlubmVycGF0aCA9IGpvaW5wYXRoLT5pbm5lcmpvaW5wYXRoOwogCUxpc3QJ ICAgKmluZGV4Y2xhdXNlczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL2NyZWF0ZXBsYW4uYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBs YW4uYwppbmRleCA3NjliNWEwY2Y3Li4wNmE4NTg4ZjRlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCkBAIC00MjI0LDggKzQyMjQsOCBAQCBjcmVhdGVf bmVzdGxvb3BfcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAlOZXN0TG9vcCAgICpqb2luX3Bs YW47CiAJUGxhbgkgICAqb3V0ZXJfcGxhbjsKIAlQbGFuCSAgICppbm5lcl9wbGFuOwotCUxp c3QJICAgKnRsaXN0ID0gYnVpbGRfcGF0aF90bGlzdChyb290LCAmYmVzdF9wYXRoLT5wYXRo KTsKLQlMaXN0CSAgICpqb2lucmVzdHJpY3RjbGF1c2VzID0gYmVzdF9wYXRoLT5qb2lucmVz dHJpY3RpbmZvOworCUxpc3QJICAgKnRsaXN0ID0gYnVpbGRfcGF0aF90bGlzdChyb290LCAm YmVzdF9wYXRoLT5qcGF0aC5wYXRoKTsKKwlMaXN0CSAgICpqb2lucmVzdHJpY3RjbGF1c2Vz ID0gYmVzdF9wYXRoLT5qcGF0aC5qb2lucmVzdHJpY3RpbmZvOwogCUxpc3QJICAgKmpvaW5j bGF1c2VzOwogCUxpc3QJICAgKm90aGVyY2xhdXNlczsKIAlSZWxpZHMJCW91dGVycmVsaWRz OwpAQCAtNDIzMywxMyArNDIzMywxMyBAQCBjcmVhdGVfbmVzdGxvb3BfcGxhbihQbGFubmVy SW5mbyAqcm9vdCwKIAlSZWxpZHMJCXNhdmVPdXRlclJlbHMgPSByb290LT5jdXJPdXRlclJl bHM7CiAKIAkvKiBOZXN0TG9vcCBjYW4gcHJvamVjdCwgc28gbm8gbmVlZCB0byBiZSBwaWNr eSBhYm91dCBjaGlsZCB0bGlzdHMgKi8KLQlvdXRlcl9wbGFuID0gY3JlYXRlX3BsYW5fcmVj dXJzZShyb290LCBiZXN0X3BhdGgtPm91dGVyam9pbnBhdGgsIDApOworCW91dGVyX3BsYW4g PSBjcmVhdGVfcGxhbl9yZWN1cnNlKHJvb3QsIGJlc3RfcGF0aC0+anBhdGgub3V0ZXJqb2lu cGF0aCwgMCk7CiAKIAkvKiBGb3IgYSBuZXN0bG9vcCwgaW5jbHVkZSBvdXRlciByZWxpZHMg aW4gY3VyT3V0ZXJSZWxzIGZvciBpbm5lciBzaWRlICovCiAJcm9vdC0+Y3VyT3V0ZXJSZWxz ID0gYm1zX3VuaW9uKHJvb3QtPmN1ck91dGVyUmVscywKLQkJCQkJCQkJICAgYmVzdF9wYXRo LT5vdXRlcmpvaW5wYXRoLT5wYXJlbnQtPnJlbGlkcyk7CisJCQkJCQkJCSAgIGJlc3RfcGF0 aC0+anBhdGgub3V0ZXJqb2lucGF0aC0+cGFyZW50LT5yZWxpZHMpOwogCi0JaW5uZXJfcGxh biA9IGNyZWF0ZV9wbGFuX3JlY3Vyc2Uocm9vdCwgYmVzdF9wYXRoLT5pbm5lcmpvaW5wYXRo LCAwKTsKKwlpbm5lcl9wbGFuID0gY3JlYXRlX3BsYW5fcmVjdXJzZShyb290LCBiZXN0X3Bh dGgtPmpwYXRoLmlubmVyam9pbnBhdGgsIDApOwogCiAJLyogUmVzdG9yZSBjdXJPdXRlclJl bHMgKi8KIAlibXNfZnJlZShyb290LT5jdXJPdXRlclJlbHMpOwpAQCAtNDI1MCwxMCArNDI1 MCwxMCBAQCBjcmVhdGVfbmVzdGxvb3BfcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAogCS8q IEdldCB0aGUgam9pbiBxdWFsIGNsYXVzZXMgKGluIHBsYWluIGV4cHJlc3Npb24gZm9ybSkg Ki8KIAkvKiBBbnkgcHNldWRvY29uc3RhbnQgY2xhdXNlcyBhcmUgaWdub3JlZCBoZXJlICov Ci0JaWYgKElTX09VVEVSX0pPSU4oYmVzdF9wYXRoLT5qb2ludHlwZSkpCisJaWYgKElTX09V VEVSX0pPSU4oYmVzdF9wYXRoLT5qcGF0aC5qb2ludHlwZSkpCiAJewogCQlleHRyYWN0X2Fj dHVhbF9qb2luX2NsYXVzZXMoam9pbnJlc3RyaWN0Y2xhdXNlcywKLQkJCQkJCQkJCWJlc3Rf cGF0aC0+cGF0aC5wYXJlbnQtPnJlbGlkcywKKwkJCQkJCQkJCWJlc3RfcGF0aC0+anBhdGgu cGF0aC5wYXJlbnQtPnJlbGlkcywKIAkJCQkJCQkJCSZqb2luY2xhdXNlcywgJm90aGVyY2xh dXNlcyk7CiAJfQogCWVsc2UKQEAgLTQyNjQsNyArNDI2NCw3IEBAIGNyZWF0ZV9uZXN0bG9v cF9wbGFuKFBsYW5uZXJJbmZvICpyb290LAogCX0KIAogCS8qIFJlcGxhY2UgYW55IG91dGVy LXJlbGF0aW9uIHZhcmlhYmxlcyB3aXRoIG5lc3Rsb29wIHBhcmFtcyAqLwotCWlmIChiZXN0 X3BhdGgtPnBhdGgucGFyYW1faW5mbykKKwlpZiAoYmVzdF9wYXRoLT5qcGF0aC5wYXRoLnBh cmFtX2luZm8pCiAJewogCQlqb2luY2xhdXNlcyA9IChMaXN0ICopCiAJCQlyZXBsYWNlX25l c3Rsb29wX3BhcmFtcyhyb290LCAoTm9kZSAqKSBqb2luY2xhdXNlcyk7CkBAIC00Mjc2LDcg KzQyNzYsNyBAQCBjcmVhdGVfbmVzdGxvb3BfcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAkg KiBJZGVudGlmeSBhbnkgbmVzdGxvb3AgcGFyYW1ldGVycyB0aGF0IHNob3VsZCBiZSBzdXBw bGllZCBieSB0aGlzIGpvaW4KIAkgKiBub2RlLCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSByb290 LT5jdXJPdXRlclBhcmFtcy4KIAkgKi8KLQlvdXRlcnJlbGlkcyA9IGJlc3RfcGF0aC0+b3V0 ZXJqb2lucGF0aC0+cGFyZW50LT5yZWxpZHM7CisJb3V0ZXJyZWxpZHMgPSBiZXN0X3BhdGgt PmpwYXRoLm91dGVyam9pbnBhdGgtPnBhcmVudC0+cmVsaWRzOwogCW5lc3RQYXJhbXMgPSBp ZGVudGlmeV9jdXJyZW50X25lc3Rsb29wX3BhcmFtcyhyb290LCBvdXRlcnJlbGlkcyk7CiAK IAlqb2luX3BsYW4gPSBtYWtlX25lc3Rsb29wKHRsaXN0LApAQCAtNDI4NSwxMCArNDI4NSwx MCBAQCBjcmVhdGVfbmVzdGxvb3BfcGxhbihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkg IG5lc3RQYXJhbXMsCiAJCQkJCQkJICBvdXRlcl9wbGFuLAogCQkJCQkJCSAgaW5uZXJfcGxh biwKLQkJCQkJCQkgIGJlc3RfcGF0aC0+am9pbnR5cGUsCi0JCQkJCQkJICBiZXN0X3BhdGgt PmlubmVyX3VuaXF1ZSk7CisJCQkJCQkJICBiZXN0X3BhdGgtPmpwYXRoLmpvaW50eXBlLAor CQkJCQkJCSAgYmVzdF9wYXRoLT5qcGF0aC5pbm5lcl91bmlxdWUpOwogCi0JY29weV9nZW5l cmljX3BhdGhfaW5mbygmam9pbl9wbGFuLT5qb2luLnBsYW4sICZiZXN0X3BhdGgtPnBhdGgp OworCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJmpvaW5fcGxhbi0+am9pbi5wbGFuLCAmYmVz dF9wYXRoLT5qcGF0aC5wYXRoKTsKIAogCXJldHVybiBqb2luX3BsYW47CiB9CmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5jIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3V0aWwvcGF0aG5vZGUuYwppbmRleCA5Y2U1Zjk1ZTNiLi5jZDZlZjFi YjMyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9wYXRobm9kZS5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci91dGlsL3BhdGhub2RlLmMKQEAgLTI0NDYs MTAgKzI0NDYsMTAgQEAgY3JlYXRlX25lc3Rsb29wX3BhdGgoUGxhbm5lckluZm8gKnJvb3Qs CiAJCXJlc3RyaWN0X2NsYXVzZXMgPSBqY2xhdXNlczsKIAl9CiAKLQlwYXRobm9kZS0+cGF0 aC5wYXRodHlwZSA9IFRfTmVzdExvb3A7Ci0JcGF0aG5vZGUtPnBhdGgucGFyZW50ID0gam9p bnJlbDsKLQlwYXRobm9kZS0+cGF0aC5wYXRodGFyZ2V0ID0gam9pbnJlbC0+cmVsdGFyZ2V0 OwotCXBhdGhub2RlLT5wYXRoLnBhcmFtX2luZm8gPQorCXBhdGhub2RlLT5qcGF0aC5wYXRo LnBhdGh0eXBlID0gVF9OZXN0TG9vcDsKKwlwYXRobm9kZS0+anBhdGgucGF0aC5wYXJlbnQg PSBqb2lucmVsOworCXBhdGhub2RlLT5qcGF0aC5wYXRoLnBhdGh0YXJnZXQgPSBqb2lucmVs LT5yZWx0YXJnZXQ7CisJcGF0aG5vZGUtPmpwYXRoLnBhdGgucGFyYW1faW5mbyA9CiAJCWdl dF9qb2lucmVsX3BhcmFtcGF0aGluZm8ocm9vdCwKIAkJCQkJCQkJICBqb2lucmVsLAogCQkJ CQkJCQkgIG91dGVyX3BhdGgsCkBAIC0yNDU3LDE3ICsyNDU3LDE3IEBAIGNyZWF0ZV9uZXN0 bG9vcF9wYXRoKFBsYW5uZXJJbmZvICpyb290LAogCQkJCQkJCQkgIGV4dHJhLT5zamluZm8s CiAJCQkJCQkJCSAgcmVxdWlyZWRfb3V0ZXIsCiAJCQkJCQkJCSAgJnJlc3RyaWN0X2NsYXVz ZXMpOwotCXBhdGhub2RlLT5wYXRoLnBhcmFsbGVsX2F3YXJlID0gZmFsc2U7Ci0JcGF0aG5v ZGUtPnBhdGgucGFyYWxsZWxfc2FmZSA9IGpvaW5yZWwtPmNvbnNpZGVyX3BhcmFsbGVsICYm CisJcGF0aG5vZGUtPmpwYXRoLnBhdGgucGFyYWxsZWxfYXdhcmUgPSBmYWxzZTsKKwlwYXRo bm9kZS0+anBhdGgucGF0aC5wYXJhbGxlbF9zYWZlID0gam9pbnJlbC0+Y29uc2lkZXJfcGFy YWxsZWwgJiYKIAkJb3V0ZXJfcGF0aC0+cGFyYWxsZWxfc2FmZSAmJiBpbm5lcl9wYXRoLT5w YXJhbGxlbF9zYWZlOwogCS8qIFRoaXMgaXMgYSBmb29saXNoIHdheSB0byBlc3RpbWF0ZSBw YXJhbGxlbF93b3JrZXJzLCBidXQgZm9yIG5vdy4uLiAqLwotCXBhdGhub2RlLT5wYXRoLnBh cmFsbGVsX3dvcmtlcnMgPSBvdXRlcl9wYXRoLT5wYXJhbGxlbF93b3JrZXJzOwotCXBhdGhu b2RlLT5wYXRoLnBhdGhrZXlzID0gcGF0aGtleXM7Ci0JcGF0aG5vZGUtPmpvaW50eXBlID0g am9pbnR5cGU7Ci0JcGF0aG5vZGUtPmlubmVyX3VuaXF1ZSA9IGV4dHJhLT5pbm5lcl91bmlx dWU7Ci0JcGF0aG5vZGUtPm91dGVyam9pbnBhdGggPSBvdXRlcl9wYXRoOwotCXBhdGhub2Rl LT5pbm5lcmpvaW5wYXRoID0gaW5uZXJfcGF0aDsKLQlwYXRobm9kZS0+am9pbnJlc3RyaWN0 aW5mbyA9IHJlc3RyaWN0X2NsYXVzZXM7CisJcGF0aG5vZGUtPmpwYXRoLnBhdGgucGFyYWxs ZWxfd29ya2VycyA9IG91dGVyX3BhdGgtPnBhcmFsbGVsX3dvcmtlcnM7CisJcGF0aG5vZGUt PmpwYXRoLnBhdGgucGF0aGtleXMgPSBwYXRoa2V5czsKKwlwYXRobm9kZS0+anBhdGguam9p bnR5cGUgPSBqb2ludHlwZTsKKwlwYXRobm9kZS0+anBhdGguaW5uZXJfdW5pcXVlID0gZXh0 cmEtPmlubmVyX3VuaXF1ZTsKKwlwYXRobm9kZS0+anBhdGgub3V0ZXJqb2lucGF0aCA9IG91 dGVyX3BhdGg7CisJcGF0aG5vZGUtPmpwYXRoLmlubmVyam9pbnBhdGggPSBpbm5lcl9wYXRo OworCXBhdGhub2RlLT5qcGF0aC5qb2lucmVzdHJpY3RpbmZvID0gcmVzdHJpY3RfY2xhdXNl czsKIAogCWZpbmFsX2Nvc3RfbmVzdGxvb3Aocm9vdCwgcGF0aG5vZGUsIHdvcmtzcGFjZSwg ZXh0cmEpOwogCkBAIC00MTEzLDEzICs0MTEzLDE1IEBAIGRvIHsgXAogCQljYXNlIFRfTmVz dFBhdGg6CiAJCQl7CiAJCQkJSm9pblBhdGggICAqanBhdGg7CisJCQkJTmVzdFBhdGggICAq bnBhdGg7CiAKLQkJCQlGTEFUX0NPUFlfUEFUSChqcGF0aCwgcGF0aCwgTmVzdFBhdGgpOwor CQkJCUZMQVRfQ09QWV9QQVRIKG5wYXRoLCBwYXRoLCBOZXN0UGF0aCk7CiAKKwkJCQlqcGF0 aCA9IChKb2luUGF0aCAqKSBucGF0aDsKIAkJCQlSRVBBUkFNRVRFUklaRV9DSElMRF9QQVRI KGpwYXRoLT5vdXRlcmpvaW5wYXRoKTsKIAkJCQlSRVBBUkFNRVRFUklaRV9DSElMRF9QQVRI KGpwYXRoLT5pbm5lcmpvaW5wYXRoKTsKIAkJCQlBREpVU1RfQ0hJTERfQVRUUlMoanBhdGgt PmpvaW5yZXN0cmljdGluZm8pOwotCQkJCW5ld19wYXRoID0gKFBhdGggKikganBhdGg7CisJ CQkJbmV3X3BhdGggPSAoUGF0aCAqKSBucGF0aDsKIAkJCX0KIAkJCWJyZWFrOwogCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCmluZGV4IGI3YjI4MTdhNWQuLmY4ZGRiOWU5MTAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25v ZGVzL3BhdGhub2Rlcy5oCkBAIC0xNTk1LDcgKzE1OTUsMTAgQEAgdHlwZWRlZiBzdHJ1Y3Qg Sm9pblBhdGgKICAqIEEgbmVzdGVkLWxvb3AgcGF0aCBuZWVkcyBubyBzcGVjaWFsIGZpZWxk cy4KICAqLwogCi10eXBlZGVmIEpvaW5QYXRoIE5lc3RQYXRoOwordHlwZWRlZiBzdHJ1Y3Qg TmVzdFBhdGgKK3sKKwlKb2luUGF0aAlqcGF0aDsKK30gTmVzdFBhdGg7CiAKIC8qCiAgKiBB IG1lcmdlam9pbiBwYXRoIGhhcyB0aGVzZSBmaWVsZHMuCi0tIAoyLjMxLjEKCg== --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0006-Add-missing-enum-tags-in-enums-used-in-nodes.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v1-0006-Add-missing-enum-tags-in-enums-used-in-nodes.patch" RnJvbSAzZDY2YmM2NzI1NTk0ZDVkMTg3ZmJkOWEwMjNhMGVkOTFiZjIyZWFhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjAzOjA3ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwNi8xMF0gQWRkIG1pc3NpbmcgZW51bSB0YWdzIGluIGVudW1zIHVzZWQg aW4gbm9kZXMKCi0tLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIHwgNCArKy0t CiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgfCAyICstCiBzcmMvaW5jbHVkZS9u b2Rlcy9wcmltbm9kZXMuaCAgfCAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w YXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXggZWY3 MzM0MjAxOS4uY2Q5MTE1ZGJiNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFy c2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtMTMz Nyw3ICsxMzM3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgU29ydEdyb3VwQ2xhdXNlCiAgKgogICog U0VUUyggU0lNUExFKDEsMiksIENVQkUoIFNJTVBMRSgzKSwgU0lNUExFKDQsNSkgKSApCiAg Ki8KLXR5cGVkZWYgZW51bQordHlwZWRlZiBlbnVtIEdyb3VwaW5nU2V0S2luZAogewogCUdS T1VQSU5HX1NFVF9FTVBUWSwKIAlHUk9VUElOR19TRVRfU0lNUExFLApAQCAtMjExMyw3ICsy MTEzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29weVN0bXQKICAqIHByZXNlcnZlIHRoZSBkaXN0 aW5jdGlvbiBpbiBWYXJpYWJsZVNldEtpbmQgZm9yIENyZWF0ZUNvbW1hbmRUYWcoKS4KICAq IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqLwotdHlwZWRlZiBlbnVtCit0eXBlZGVmIGVu dW0gVmFyaWFibGVTZXRLaW5kCiB7CiAJVkFSX1NFVF9WQUxVRSwJCQkJLyogU0VUIHZhciA9 IHZhbHVlICovCiAJVkFSX1NFVF9ERUZBVUxULAkJCS8qIFNFVCB2YXIgVE8gREVGQVVMVCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaAppbmRleCBmOGRkYjllOTEwLi4wM2M4MGMxNjIwIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9wYXRobm9kZXMuaApAQCAtMTUyNSw3ICsxNTI1LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUmVzdWx0Q2FjaGVQYXRoCiAgKiBpdCdzIGNvbnZlbmllbnQgdG8gaGF2ZSBhIFVu aXF1ZVBhdGggaW4gdGhlIHBhdGggdHJlZSB0byBzaWduYWwgdXBwZXItbGV2ZWwKICAqIHJv dXRpbmVzIHRoYXQgdGhlIGlucHV0IGlzIGtub3duIGRpc3RpbmN0LikKICAqLwotdHlwZWRl ZiBlbnVtCit0eXBlZGVmIGVudW0gVW5pcXVlUGF0aE1ldGhvZAogewogCVVOSVFVRV9QQVRI X05PT1AsCQkJLyogaW5wdXQgaXMga25vd24gdW5pcXVlIGFscmVhZHkgKi8KIAlVTklRVUVf UEFUSF9IQVNILAkJCS8qIHVzZSBoYXNoaW5nICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9wcmltbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCmlu ZGV4IDlhZTg1MWQ4NDcuLjM0MThlMjM4NzMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25v ZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBA IC0xMjA1LDcgKzEyMDUsNyBAQCB0eXBlZGVmIGVudW0gWG1sRXhwck9wCiAJSVNfRE9DVU1F TlQJCQkJCS8qIHhtbHZhbCBJUyBET0NVTUVOVCAqLwogfSBYbWxFeHByT3A7CiAKLXR5cGVk ZWYgZW51bQordHlwZWRlZiBlbnVtIFhtbE9wdGlvblR5cGUKIHsKIAlYTUxPUFRJT05fRE9D VU1FTlQsCiAJWE1MT1BUSU9OX0NPTlRFTlQKLS0gCjIuMzEuMQoK --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0007-Check-the-size-in-COPY_POINTER_FIELD.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0007-Check-the-size-in-COPY_POINTER_FIELD.patch" RnJvbSBiY2NhY2NhMDYxNzQ2NzI0YWU3Njg3YmU4MTY5YjlkNzRiMDlhY2YxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjA0OjEyICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwNy8xMF0gQ2hlY2sgdGhlIHNpemUgaW4gQ09QWV9QT0lOVEVSX0ZJRUxE CgppbnN0ZWFkIG9mIG1ha2luZyBlYWNoIGNhbGxlciBkbyBpdC4KLS0tCiBzcmMvYmFja2Vu ZC9ub2Rlcy9jb3B5ZnVuY3MuYyB8IDU0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCAzNWE4NWRmNDQyLi5kZGUyZDQ3MzM4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMv YmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNTcsOCArNTcsMTEgQEAKICNkZWZpbmUg Q09QWV9QT0lOVEVSX0ZJRUxEKGZsZG5hbWUsIHN6KSBcCiAJZG8geyBcCiAJCVNpemUJX3Np emUgPSAoc3opOyBcCi0JCW5ld25vZGUtPmZsZG5hbWUgPSBwYWxsb2MoX3NpemUpOyBcCi0J CW1lbWNweShuZXdub2RlLT5mbGRuYW1lLCBmcm9tLT5mbGRuYW1lLCBfc2l6ZSk7IFwKKwkJ aWYgKF9zaXplID4gMCkgXAorCQl7IFwKKwkJCW5ld25vZGUtPmZsZG5hbWUgPSBwYWxsb2Mo X3NpemUpOyBcCisJCQltZW1jcHkobmV3bm9kZS0+ZmxkbmFtZSwgZnJvbS0+ZmxkbmFtZSwg X3NpemUpOyBcCisJCX0gXAogCX0gd2hpbGUgKDApCiAKIC8qIENvcHkgYSBwYXJzZSBsb2Nh dGlvbiBmaWVsZCAoZm9yIENvcHksIHRoaXMgaXMgc2FtZSBhcyBzY2FsYXIgY2FzZSkgKi8K QEAgLTI5NiwxMiArMjk5LDkgQEAgX2NvcHlSZWN1cnNpdmVVbmlvbihjb25zdCBSZWN1cnNp dmVVbmlvbiAqZnJvbSkKIAkgKi8KIAlDT1BZX1NDQUxBUl9GSUVMRCh3dFBhcmFtKTsKIAlD T1BZX1NDQUxBUl9GSUVMRChudW1Db2xzKTsKLQlpZiAoZnJvbS0+bnVtQ29scyA+IDApCi0J ewotCQlDT1BZX1BPSU5URVJfRklFTEQoZHVwQ29sSWR4LCBmcm9tLT5udW1Db2xzICogc2l6 ZW9mKEF0dHJOdW1iZXIpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1cE9wZXJhdG9ycywg ZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1 cENvbGxhdGlvbnMsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7Ci0JfQorCUNPUFlf UE9JTlRFUl9GSUVMRChkdXBDb2xJZHgsIGZyb20tPm51bUNvbHMgKiBzaXplb2YoQXR0ck51 bWJlcikpOworCUNPUFlfUE9JTlRFUl9GSUVMRChkdXBPcGVyYXRvcnMsIGZyb20tPm51bUNv bHMgKiBzaXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKGR1cENvbGxhdGlvbnMs IGZyb20tPm51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQobnVt R3JvdXBzKTsKIAogCXJldHVybiBuZXdub2RlOwpAQCAtODk2LDEzICs4OTYsMTAgQEAgX2Nv cHlNZXJnZUpvaW4oY29uc3QgTWVyZ2VKb2luICpmcm9tKQogCUNPUFlfU0NBTEFSX0ZJRUxE KHNraXBfbWFya19yZXN0b3JlKTsKIAlDT1BZX05PREVfRklFTEQobWVyZ2VjbGF1c2VzKTsK IAludW1Db2xzID0gbGlzdF9sZW5ndGgoZnJvbS0+bWVyZ2VjbGF1c2VzKTsKLQlpZiAobnVt Q29scyA+IDApCi0JewotCQlDT1BZX1BPSU5URVJfRklFTEQobWVyZ2VGYW1pbGllcywgbnVt Q29scyAqIHNpemVvZihPaWQpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKG1lcmdlQ29sbGF0 aW9ucywgbnVtQ29scyAqIHNpemVvZihPaWQpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKG1l cmdlU3RyYXRlZ2llcywgbnVtQ29scyAqIHNpemVvZihpbnQpKTsKLQkJQ09QWV9QT0lOVEVS X0ZJRUxEKG1lcmdlTnVsbHNGaXJzdCwgbnVtQ29scyAqIHNpemVvZihib29sKSk7Ci0JfQor CUNPUFlfUE9JTlRFUl9GSUVMRChtZXJnZUZhbWlsaWVzLCBudW1Db2xzICogc2l6ZW9mKE9p ZCkpOworCUNPUFlfUE9JTlRFUl9GSUVMRChtZXJnZUNvbGxhdGlvbnMsIG51bUNvbHMgKiBz aXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKG1lcmdlU3RyYXRlZ2llcywgbnVt Q29scyAqIHNpemVvZihpbnQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQobWVyZ2VOdWxsc0Zp cnN0LCBudW1Db2xzICogc2l6ZW9mKGJvb2wpKTsKIAogCXJldHVybiBuZXdub2RlOwogfQpA QCAtMTA2NCwxMiArMTA2MSw5IEBAIF9jb3B5QWdnKGNvbnN0IEFnZyAqZnJvbSkKIAlDT1BZ X1NDQUxBUl9GSUVMRChhZ2dzdHJhdGVneSk7CiAJQ09QWV9TQ0FMQVJfRklFTEQoYWdnc3Bs aXQpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUNvbHMpOwotCWlmIChmcm9tLT5udW1Db2xz ID4gMCkKLQl7Ci0JCUNPUFlfUE9JTlRFUl9GSUVMRChncnBDb2xJZHgsIGZyb20tPm51bUNv bHMgKiBzaXplb2YoQXR0ck51bWJlcikpOwotCQlDT1BZX1BPSU5URVJfRklFTEQoZ3JwT3Bl cmF0b3JzLCBmcm9tLT5udW1Db2xzICogc2l6ZW9mKE9pZCkpOwotCQlDT1BZX1BPSU5URVJf RklFTEQoZ3JwQ29sbGF0aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKLQl9 CisJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycENvbElkeCwgZnJvbS0+bnVtQ29scyAqIHNpemVv ZihBdHRyTnVtYmVyKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKGdycE9wZXJhdG9ycywgZnJv bS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQoZ3JwQ29s bGF0aW9ucywgZnJvbS0+bnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAlDT1BZX1NDQUxBUl9G SUVMRChudW1Hcm91cHMpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKHRyYW5zaXRpb25TcGFjZSk7 CiAJQ09QWV9CSVRNQVBTRVRfRklFTEQoYWdnUGFyYW1zKTsKQEAgLTEwOTEsMTkgKzEwODUs MTMgQEAgX2NvcHlXaW5kb3dBZ2coY29uc3QgV2luZG93QWdnICpmcm9tKQogCiAJQ09QWV9T Q0FMQVJfRklFTEQod2lucmVmKTsKIAlDT1BZX1NDQUxBUl9GSUVMRChwYXJ0TnVtQ29scyk7 Ci0JaWYgKGZyb20tPnBhcnROdW1Db2xzID4gMCkKLQl7Ci0JCUNPUFlfUE9JTlRFUl9GSUVM RChwYXJ0Q29sSWR4LCBmcm9tLT5wYXJ0TnVtQ29scyAqIHNpemVvZihBdHRyTnVtYmVyKSk7 Ci0JCUNPUFlfUE9JTlRFUl9GSUVMRChwYXJ0T3BlcmF0b3JzLCBmcm9tLT5wYXJ0TnVtQ29s cyAqIHNpemVvZihPaWQpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKHBhcnRDb2xsYXRpb25z LCBmcm9tLT5wYXJ0TnVtQ29scyAqIHNpemVvZihPaWQpKTsKLQl9CisJQ09QWV9QT0lOVEVS X0ZJRUxEKHBhcnRDb2xJZHgsIGZyb20tPnBhcnROdW1Db2xzICogc2l6ZW9mKEF0dHJOdW1i ZXIpKTsKKwlDT1BZX1BPSU5URVJfRklFTEQocGFydE9wZXJhdG9ycywgZnJvbS0+cGFydE51 bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKHBhcnRDb2xsYXRp b25zLCBmcm9tLT5wYXJ0TnVtQ29scyAqIHNpemVvZihPaWQpKTsKIAlDT1BZX1NDQUxBUl9G SUVMRChvcmROdW1Db2xzKTsKLQlpZiAoZnJvbS0+b3JkTnVtQ29scyA+IDApCi0JewotCQlD T1BZX1BPSU5URVJfRklFTEQob3JkQ29sSWR4LCBmcm9tLT5vcmROdW1Db2xzICogc2l6ZW9m KEF0dHJOdW1iZXIpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKG9yZE9wZXJhdG9ycywgZnJv bS0+b3JkTnVtQ29scyAqIHNpemVvZihPaWQpKTsKLQkJQ09QWV9QT0lOVEVSX0ZJRUxEKG9y ZENvbGxhdGlvbnMsIGZyb20tPm9yZE51bUNvbHMgKiBzaXplb2YoT2lkKSk7Ci0JfQorCUNP UFlfUE9JTlRFUl9GSUVMRChvcmRDb2xJZHgsIGZyb20tPm9yZE51bUNvbHMgKiBzaXplb2Yo QXR0ck51bWJlcikpOworCUNPUFlfUE9JTlRFUl9GSUVMRChvcmRPcGVyYXRvcnMsIGZyb20t Pm9yZE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CisJQ09QWV9QT0lOVEVSX0ZJRUxEKG9yZENv bGxhdGlvbnMsIGZyb20tPm9yZE51bUNvbHMgKiBzaXplb2YoT2lkKSk7CiAJQ09QWV9TQ0FM QVJfRklFTEQoZnJhbWVPcHRpb25zKTsKIAlDT1BZX05PREVfRklFTEQoc3RhcnRPZmZzZXQp OwogCUNPUFlfTk9ERV9GSUVMRChlbmRPZmZzZXQpOwotLSAKMi4zMS4xCgo= --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0008-Remove-T_MemoryContext.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0008-Remove-T_MemoryContext.patch" RnJvbSAwMGZhOGU2N2ExNDFjOTBlMzhmY2JlYzQ1ZTFjYzIxMzVjNGZkYTVhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjA1OjE2ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwOC8xMF0gUmVtb3ZlIFRfTWVtb3J5Q29udGV4dAoKVGhpcyBpcyBhbiBh YnN0cmFjdCBub2RlIHRoYXQgc2hvdWxkbid0IGhhdmUgYSBub2RlIHRhZyBkZWZpbmVkLgot LS0KIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggfCAxIC0KIDEgZmlsZSBjaGFuZ2VkLCAx IGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCBi L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmgKaW5kZXggZDllNDE3YmNkNy4uNWUwNDlhNjdl MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAorKysgYi9zcmMvaW5j bHVkZS9ub2Rlcy9ub2Rlcy5oCkBAIC0yODQsNyArMjg0LDYgQEAgdHlwZWRlZiBlbnVtIE5v ZGVUYWcKIAkvKgogCSAqIFRBR1MgRk9SIE1FTU9SWSBOT0RFUyAobWVtbm9kZXMuaCkKIAkg Ki8KLQlUX01lbW9yeUNvbnRleHQsCiAJVF9BbGxvY1NldENvbnRleHQsCiAJVF9TbGFiQ29u dGV4dCwKIAlUX0dlbmVyYXRpb25Db250ZXh0LAotLSAKMi4zMS4xCgo= --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0009-Add-script-to-generate-node-support-functions.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v1-0009-Add-script-to-generate-node-support-functions.patch" RnJvbSA3OWRhNjhkYmEwNWUzZWEzYjUwNmM0ZWJmNmVhMWExYzFlMmRlNmYzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjA4OjU0ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAwOS8xMF0gQWRkIHNjcmlwdCB0byBnZW5lcmF0ZSBub2RlIHN1cHBvcnQg ZnVuY3Rpb25zCgotLS0KIHNyYy9iYWNrZW5kL01ha2VmaWxlICAgICAgICAgICAgICAgIHwg ICA4ICstCiBzcmMvYmFja2VuZC9ub2Rlcy8uZ2l0aWdub3JlICAgICAgICB8ICAgMyArCiBz cmMvYmFja2VuZC9ub2Rlcy9NYWtlZmlsZSAgICAgICAgICB8ICA1NSArKysKIHNyYy9iYWNr ZW5kL25vZGVzL2NvcHlmdW5jcy5jICAgICAgIHwgIDE1ICsKIHNyYy9iYWNrZW5kL25vZGVz L2VxdWFsZnVuY3MuYyAgICAgIHwgIDE5ICstCiBzcmMvYmFja2VuZC9ub2Rlcy9nZW5fbm9k ZV9zdHVmZi5wbCB8IDY0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9ub2Rlcy9vdXRmdW5jcy5jICAgICAgICB8ICAyNSArKwogc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMgICAgICAgfCAgMTkgKy0KIHNyYy9pbmNsdWRlL25vZGVzLy5naXRp Z25vcmUgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggICAgICAg ICAgIHwgICA4ICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgIHwgICAy ICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCAgICAgICB8IDExNiArKy0tLQog c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmggICAgICAgfCAgMTggKy0KIDEzIGZpbGVz IGNoYW5nZWQsIDg1NyBpbnNlcnRpb25zKCspLCA3NCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvYmFja2VuZC9ub2Rlcy8uZ2l0aWdub3JlCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3R1ZmYucGwKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmMvaW5jbHVkZS9ub2Rlcy8uZ2l0aWdub3JlCgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9NYWtlZmlsZQppbmRleCAwZGE4NDhi MWZkLi5hMzNkYjFhZTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9NYWtlZmlsZQorKysg Yi9zcmMvYmFja2VuZC9NYWtlZmlsZQpAQCAtMTQzLDExICsxNDMsMTUgQEAgc3RvcmFnZS9s bWdyL2x3bG9ja25hbWVzLmg6IHN0b3JhZ2UvbG1nci9nZW5lcmF0ZS1sd2xvY2tuYW1lcy5w bCBzdG9yYWdlL2xtZ3IvbHcKIHN1Ym1ha2UtY2F0YWxvZy1oZWFkZXJzOgogCSQoTUFLRSkg LUMgY2F0YWxvZyBkaXN0cHJlcCBnZW5lcmF0ZWQtaGVhZGVyLXN5bWxpbmtzCiAKKyMgcnVu IHRoaXMgdW5jb25kaXRpb25hbGx5IHRvIGF2b2lkIG5lZWRpbmcgdG8ga25vdyBpdHMgZGVw ZW5kZW5jaWVzIGhlcmU6CitzdWJtYWtlLW5vZGVzLWhlYWRlcnM6CisJJChNQUtFKSAtQyBu b2RlcyBkaXN0cHJlcCBnZW5lcmF0ZWQtaGVhZGVyLXN5bWxpbmtzCisKICMgcnVuIHRoaXMg dW5jb25kaXRpb25hbGx5IHRvIGF2b2lkIG5lZWRpbmcgdG8ga25vdyBpdHMgZGVwZW5kZW5j aWVzIGhlcmU6CiBzdWJtYWtlLXV0aWxzLWhlYWRlcnM6CiAJJChNQUtFKSAtQyB1dGlscyBk aXN0cHJlcCBnZW5lcmF0ZWQtaGVhZGVyLXN5bWxpbmtzCiAKLS5QSE9OWTogc3VibWFrZS1j YXRhbG9nLWhlYWRlcnMgc3VibWFrZS11dGlscy1oZWFkZXJzCisuUEhPTlk6IHN1Ym1ha2Ut Y2F0YWxvZy1oZWFkZXJzIHN1Ym1ha2Utbm9kZXMtaGVhZGVycyBzdWJtYWtlLXV0aWxzLWhl YWRlcnMKIAogIyBNYWtlIHN5bWxpbmtzIGZvciB0aGVzZSBoZWFkZXJzIGluIHRoZSBpbmNs dWRlIGRpcmVjdG9yeS4gVGhhdCB3YXkKICMgd2UgY2FuIGN1dCBkb3duIG9uIHRoZSAtSSBv cHRpb25zLiBBbHNvLCBhIHN5bWxpbmsgaXMgYXV0b21hdGljYWxseQpAQCAtMTYyLDcgKzE2 Niw3IEBAIHN1Ym1ha2UtdXRpbHMtaGVhZGVyczoKIAogLlBIT05ZOiBnZW5lcmF0ZWQtaGVh ZGVycwogCi1nZW5lcmF0ZWQtaGVhZGVyczogJCh0b3BfYnVpbGRkaXIpL3NyYy9pbmNsdWRl L3BhcnNlci9ncmFtLmggJCh0b3BfYnVpbGRkaXIpL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbHds b2NrbmFtZXMuaCBzdWJtYWtlLWNhdGFsb2ctaGVhZGVycyBzdWJtYWtlLXV0aWxzLWhlYWRl cnMKK2dlbmVyYXRlZC1oZWFkZXJzOiAkKHRvcF9idWlsZGRpcikvc3JjL2luY2x1ZGUvcGFy c2VyL2dyYW0uaCAkKHRvcF9idWlsZGRpcikvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2tu YW1lcy5oIHN1Ym1ha2UtY2F0YWxvZy1oZWFkZXJzIHN1Ym1ha2Utbm9kZXMtaGVhZGVycyBz dWJtYWtlLXV0aWxzLWhlYWRlcnMKIAogJCh0b3BfYnVpbGRkaXIpL3NyYy9pbmNsdWRlL3Bh cnNlci9ncmFtLmg6IHBhcnNlci9ncmFtLmgKIAlwcmVyZXFkaXI9YGNkICckKGRpciAkPCkn ID4vZGV2L251bGwgJiYgcHdkYCAmJiBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rl cy8uZ2l0aWdub3JlIGIvc3JjL2JhY2tlbmQvbm9kZXMvLmdpdGlnbm9yZQpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi4yMzJjNmUxODE3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvLmdpdGlnbm9yZQpAQCAtMCwwICsxLDMgQEAKKy9u b2RlLXN0dWZmLXN0YW1wCisvbm9kZXRhZ3MuaAorLypmdW5jcy5pbmM/LmMKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL25vZGVzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQvbm9kZXMvTWFr ZWZpbGUKaW5kZXggNWQyYjEyYTk5My4uZWI5MzE2NmU5ZSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvbm9kZXMvTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvTWFrZWZpbGUK QEAgLTMwLDMgKzMwLDU4IEBAIE9CSlMgPSBcCiAJdmFsdWUubwogCiBpbmNsdWRlICQodG9w X3NyY2Rpcikvc3JjL2JhY2tlbmQvY29tbW9uLm1rCisKK25vZGVfaGVhZGVycyA9IFwKKwlu b2Rlcy9ub2Rlcy5oIFwKKwlub2Rlcy9leGVjbm9kZXMuaCBcCisJbm9kZXMvcGxhbm5vZGVz LmggXAorCW5vZGVzL3ByaW1ub2Rlcy5oIFwKKwlub2Rlcy9wYXRobm9kZXMuaCBcCisJbm9k ZXMvbWVtbm9kZXMuaCBcCisJbm9kZXMvZXh0ZW5zaWJsZS5oIFwKKwlub2Rlcy9wYXJzZW5v ZGVzLmggXAorCW5vZGVzL3JlcGxub2Rlcy5oIFwKKwljb21tYW5kcy90cmlnZ2VyLmggXAor CWNvbW1hbmRzL2V2ZW50X3RyaWdnZXIuaCBcCisJZm9yZWlnbi9mZHdhcGkuaCBcCisJYWNj ZXNzL2FtYXBpLmggXAorCWFjY2Vzcy90YWJsZWFtLmggXAorCWFjY2Vzcy90c21hcGkuaCBc CisJdXRpbHMvcmVsLmggXAorCW5vZGVzL3N1cHBvcnRub2Rlcy5oIFwKKwlleGVjdXRvci90 dXB0YWJsZS5oIFwKKwlub2Rlcy9sb2Nrb3B0aW9ucy5oIFwKKwlhY2Nlc3Mvc2Rpci5oCisK K25vZGVfc291cmNlcyA9IFwKKwlleGVjdXRvci9ub2RlV2luZG93QWdnLmMgXAorCW5vZGVz L3RpZGJpdG1hcC5jIFwKKwl1dGlscy9tbWdyL2FzZXQuYyBcCisJdXRpbHMvbW1nci9nZW5l cmF0aW9uLmMgXAorCXV0aWxzL21tZ3Ivc2xhYi5jCisKK25vZGVfZmlsZXMgPSAkKGFkZHBy ZWZpeCAkKHRvcF9zcmNkaXIpL3NyYy9pbmNsdWRlLywkKG5vZGVfaGVhZGVycykpICQoYWRk cHJlZml4ICQodG9wX3NyY2Rpcikvc3JjL2JhY2tlbmQvLCQobm9kZV9zb3VyY2VzKSkKKwor IyBzZWUgYWxzbyBjYXRhbG9nL01ha2VmaWxlIGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGVz ZSBtYWtlIHJ1bGVzCisKK2FsbDogZGlzdHByZXAgZ2VuZXJhdGVkLWhlYWRlci1zeW1saW5r cworCitkaXN0cHJlcDogbm9kZS1zdHVmZi1zdGFtcAorCisuUEhPTlk6IGdlbmVyYXRlZC1o ZWFkZXItc3ltbGlua3MKKworZ2VuZXJhdGVkLWhlYWRlci1zeW1saW5rczogJCh0b3BfYnVp bGRkaXIpL3NyYy9pbmNsdWRlL25vZGVzL2hlYWRlci1zdGFtcAorCitub2RlLXN0dWZmLXN0 YW1wOiBnZW5fbm9kZV9zdHVmZi5wbAorCSQoUEVSTCkgJDwgJChub2RlX2ZpbGVzKQorCXRv dWNoICRACisKKyQodG9wX2J1aWxkZGlyKS9zcmMvaW5jbHVkZS9ub2Rlcy9oZWFkZXItc3Rh bXA6IG5vZGUtc3R1ZmYtc3RhbXAKKwlwcmVyZXFkaXI9YGNkICckKGRpciAkPCknID4vZGV2 L251bGwgJiYgcHdkYCAmJiBcCisJY2QgJyQoZGlyICRAKScgJiYgZm9yIGZpbGUgaW4gbm9k ZXRhZ3MuaDsgZG8gXAorCSAgcm0gLWYgJCRmaWxlICYmICQoTE5fUykgIiQkcHJlcmVxZGly LyQkZmlsZSIgLiA7IFwKKwlkb25lCisJdG91Y2ggJEAKKworbWFpbnRhaW5lci1jbGVhbjog Y2xlYW4KKwlybSAtZiBub2RlLXN0dWZmLXN0YW1wICpmdW5jcy5pbmM/LmMgbm9kZXRhZ3Mu aApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvY29weWZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwppbmRleCBkZGUyZDQ3MzM4Li40ZjU3OTIzZTllIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFj a2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYwpAQCAtNjksNiArNjksOSBAQAogCShuZXdub2RlLT5m bGRuYW1lID0gZnJvbS0+ZmxkbmFtZSkKIAogCisjaW5jbHVkZSAiY29weWZ1bmNzLmluYzEu YyIKKworI2lmZGVmIE9CU09MRVRFCiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKgkJCQkJIHBsYW5ub2Rl cy5oIGNvcHkgZnVuY3Rpb25zCiAgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xNDUwLDYgKzE0NTMsNyBA QCBfY29weVZhcihjb25zdCBWYXIgKmZyb20pCiAKIAlyZXR1cm4gbmV3bm9kZTsKIH0KKyNl bmRpZiAvKk9CU09MRVRFKi8KIAogLyoKICAqIF9jb3B5Q29uc3QKQEAgLTE0ODksNiArMTQ5 Myw3IEBAIF9jb3B5Q29uc3QoY29uc3QgQ29uc3QgKmZyb20pCiAJcmV0dXJuIG5ld25vZGU7 CiB9CiAKKyNpZmRlZiBPQlNPTEVURQogLyoKICAqIF9jb3B5UGFyYW0KICAqLwpAQCAtMjcy Miw2ICsyNzI3LDcgQEAgX2NvcHlQYXJhbVJlZihjb25zdCBQYXJhbVJlZiAqZnJvbSkKIAog CXJldHVybiBuZXdub2RlOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwogCiBzdGF0aWMgQV9D b25zdCAqCiBfY29weUFfQ29uc3QoY29uc3QgQV9Db25zdCAqZnJvbSkKQEAgLTI3NTQsNiAr Mjc2MCw3IEBAIF9jb3B5QV9Db25zdChjb25zdCBBX0NvbnN0ICpmcm9tKQogCXJldHVybiBu ZXdub2RlOwogfQogCisjaWZkZWYgT0JTT0xFVEUKIHN0YXRpYyBGdW5jQ2FsbCAqCiBfY29w eUZ1bmNDYWxsKGNvbnN0IEZ1bmNDYWxsICpmcm9tKQogewpAQCAtNDg2Myw2ICs0ODcwLDcg QEAgX2NvcHlEcm9wU3Vic2NyaXB0aW9uU3RtdChjb25zdCBEcm9wU3Vic2NyaXB0aW9uU3Rt dCAqZnJvbSkKIAogCXJldHVybiBuZXdub2RlOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwog CiAvKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqCiAgKgkJCQkJZXh0ZW5zaWJsZS5oIGNvcHkgZnVuY3Rpb25zCkBA IC00OTE5LDYgKzQ5MjcsNyBAQCBfY29weVZhbHVlKGNvbnN0IFZhbHVlICpmcm9tKQogfQog CiAKKyNpZmRlZiBPQlNPTEVURQogc3RhdGljIEZvcmVpZ25LZXlDYWNoZUluZm8gKgogX2Nv cHlGb3JlaWduS2V5Q2FjaGVJbmZvKGNvbnN0IEZvcmVpZ25LZXlDYWNoZUluZm8gKmZyb20p CiB7CkBAIC00OTM1LDYgKzQ5NDQsNyBAQCBfY29weUZvcmVpZ25LZXlDYWNoZUluZm8oY29u c3QgRm9yZWlnbktleUNhY2hlSW5mbyAqZnJvbSkKIAogCXJldHVybiBuZXdub2RlOwogfQor I2VuZGlmIC8qT0JTT0xFVEUqLwogCiAKIC8qCkBAIC00OTU2LDYgKzQ5NjYsOCBAQCBjb3B5 T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCiAJc3dpdGNoIChub2RlVGFnKGZyb20p KQogCXsKKyNpbmNsdWRlICJjb3B5ZnVuY3MuaW5jMi5jIgorI2lmZGVmIE9CU09MRVRFCiAJ CQkvKgogCQkJICogUExBTiBOT0RFUwogCQkJICovCkBAIC01Mjk3LDYgKzUzMDksNyBAQCBj b3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQogCQljYXNlIFRfUGxhY2VIb2xkZXJJ bmZvOgogCQkJcmV0dmFsID0gX2NvcHlQbGFjZUhvbGRlckluZm8oZnJvbSk7CiAJCQlicmVh azsKKyNlbmRpZiAvKk9CU09MRVRFKi8KIAogCQkJLyoKIAkJCSAqIFZBTFVFIE5PREVTCkBA IC01MzI1LDYgKzUzMzgsNyBAQCBjb3B5T2JqZWN0SW1wbChjb25zdCB2b2lkICpmcm9tKQog CQkJcmV0dmFsID0gbGlzdF9jb3B5KGZyb20pOwogCQkJYnJlYWs7CiAKKyNpZmRlZiBPQlNP TEVURQogCQkJLyoKIAkJCSAqIEVYVEVOU0lCTEUgTk9ERVMKIAkJCSAqLwpAQCAtNTg1OCw2 ICs1ODcyLDcgQEAgY29weU9iamVjdEltcGwoY29uc3Qgdm9pZCAqZnJvbSkKIAkJY2FzZSBU X0ZvcmVpZ25LZXlDYWNoZUluZm86CiAJCQlyZXR2YWwgPSBfY29weUZvcmVpZ25LZXlDYWNo ZUluZm8oZnJvbSk7CiAJCQlicmVhazsKKyNlbmRpZiAvKk9CU09MRVRFKi8KIAogCQlkZWZh dWx0OgogCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBub2RlIHR5cGU6ICVkIiwgKGlu dCkgbm9kZVRhZyhmcm9tKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVh bGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggZTA0ZWM0 MTkwNC4uNjc1NzMzNzA2MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMTAsOSAr MTAsNiBAQAogICogYmVjYXVzZSB0aGUgY2lyY3VsYXIgbGlua2FnZXMgYmV0d2VlbiBSZWxP cHRJbmZvIGFuZCBQYXRoIG5vZGVzIGNhbid0CiAgKiBiZSBoYW5kbGVkIGVhc2lseSBpbiBh IHNpbXBsZSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwuCiAgKgotICogQ3VycmVudGx5LCBpbiBm YWN0LCBlcXVhbCgpIGRvZXNuJ3Qga25vdyBob3cgdG8gY29tcGFyZSBQbGFuIHRyZWVzCi0g KiBlaXRoZXIuICBUaGlzIG1pZ2h0IG5lZWQgdG8gYmUgZml4ZWQgc29tZWRheS4KLSAqCiAg KiBOT1RFOiBpdCBpcyBpbnRlbnRpb25hbCB0aGF0IHBhcnNlIGxvY2F0aW9uIGZpZWxkcyAo aW4gbm9kZXMgdGhhdCBoYXZlCiAgKiBvbmUpIGFyZSBub3QgY29tcGFyZWQuICBUaGlzIGlz IGJlY2F1c2Ugd2Ugd2FudCwgZm9yIGV4YW1wbGUsIGEgdmFyaWFibGUKICAqICJ4IiB0byBi ZSBjb25zaWRlcmVkIGVxdWFsKCkgdG8gYW5vdGhlciByZWZlcmVuY2UgdG8gIngiIGluIHRo ZSBxdWVyeS4KQEAgLTMzLDYgKzMwLDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxl LmgiCiAjaW5jbHVkZSAibm9kZXMvcGF0aG5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0 dW0uaCIKKyNpbmNsdWRlICJ1dGlscy9yZWwuaCIKIAogCiAvKgpAQCAtOTAsNiArODgsOSBA QAogCSgodm9pZCkgMCkKIAogCisjaW5jbHVkZSAiZXF1YWxmdW5jcy5pbmMxLmMiCisKKyNp ZmRlZiBPQlNPTEVURQogLyoKICAqCVN0dWZmIGZyb20gcHJpbW5vZGVzLmgKICAqLwpAQCAt MTc4LDYgKzE3OSw3IEBAIF9lcXVhbFZhcihjb25zdCBWYXIgKmEsIGNvbnN0IFZhciAqYikK IAogCXJldHVybiB0cnVlOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwogCiBzdGF0aWMgYm9v bAogX2VxdWFsQ29uc3QoY29uc3QgQ29uc3QgKmEsIGNvbnN0IENvbnN0ICpiKQpAQCAtMjAw LDYgKzIwMiw3IEBAIF9lcXVhbENvbnN0KGNvbnN0IENvbnN0ICphLCBjb25zdCBDb25zdCAq YikKIAkJCQkJCWEtPmNvbnN0Ynl2YWwsIGEtPmNvbnN0bGVuKTsKIH0KIAorI2lmZGVmIE9C U09MRVRFCiBzdGF0aWMgYm9vbAogX2VxdWFsUGFyYW0oY29uc3QgUGFyYW0gKmEsIGNvbnN0 IFBhcmFtICpiKQogewpAQCAtOTMzLDYgKzkzNiw3IEBAIF9lcXVhbFBsYWNlSG9sZGVySW5m byhjb25zdCBQbGFjZUhvbGRlckluZm8gKmEsIGNvbnN0IFBsYWNlSG9sZGVySW5mbyAqYikK IAogCXJldHVybiB0cnVlOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwogCiAvKgogICogU3R1 ZmYgZnJvbSBleHRlbnNpYmxlLmgKQEAgLTk1NCw2ICs5NTgsNyBAQCBfZXF1YWxFeHRlbnNp YmxlTm9kZShjb25zdCBFeHRlbnNpYmxlTm9kZSAqYSwgY29uc3QgRXh0ZW5zaWJsZU5vZGUg KmIpCiAJcmV0dXJuIHRydWU7CiB9CiAKKyNpZmRlZiBPQlNPTEVURQogLyoKICAqIFN0dWZm IGZyb20gcGFyc2Vub2Rlcy5oCiAgKi8KQEAgLTIzOTcsNiArMjQwMiw3IEBAIF9lcXVhbFBh cmFtUmVmKGNvbnN0IFBhcmFtUmVmICphLCBjb25zdCBQYXJhbVJlZiAqYikKIAogCXJldHVy biB0cnVlOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwogCiBzdGF0aWMgYm9vbAogX2VxdWFs QV9Db25zdChjb25zdCBBX0NvbnN0ICphLCBjb25zdCBBX0NvbnN0ICpiKQpAQCAtMjQwOCw2 ICsyNDE0LDcgQEAgX2VxdWFsQV9Db25zdChjb25zdCBBX0NvbnN0ICphLCBjb25zdCBBX0Nv bnN0ICpiKQogCXJldHVybiB0cnVlOwogfQogCisjaWZkZWYgT0JTT0xFVEUKIHN0YXRpYyBi b29sCiBfZXF1YWxGdW5jQ2FsbChjb25zdCBGdW5jQ2FsbCAqYSwgY29uc3QgRnVuY0NhbGwg KmIpCiB7CkBAIC0zMDE2LDYgKzMwMjMsNyBAQCBfZXF1YWxQYXJ0aXRpb25DbWQoY29uc3Qg UGFydGl0aW9uQ21kICphLCBjb25zdCBQYXJ0aXRpb25DbWQgKmIpCiAKIAlyZXR1cm4gdHJ1 ZTsKIH0KKyNlbmRpZiAvKk9CU09MRVRFKi8KIAogLyoKICAqIFN0dWZmIGZyb20gcGdfbGlz dC5oCkBAIC0zMTM1LDYgKzMxNDMsOCBAQCBlcXVhbChjb25zdCB2b2lkICphLCBjb25zdCB2 b2lkICpiKQogCiAJc3dpdGNoIChub2RlVGFnKGEpKQogCXsKKyNpbmNsdWRlICJlcXVhbGZ1 bmNzLmluYzIuYyIKKyNpZmRlZiBPQlNPTEVURQogCQkJLyoKIAkJCSAqIFBSSU1JVElWRSBO T0RFUwogCQkJICovCkBAIC0zMzEzLDYgKzMzMjMsNyBAQCBlcXVhbChjb25zdCB2b2lkICph LCBjb25zdCB2b2lkICpiKQogCQljYXNlIFRfUGxhY2VIb2xkZXJJbmZvOgogCQkJcmV0dmFs ID0gX2VxdWFsUGxhY2VIb2xkZXJJbmZvKGEsIGIpOwogCQkJYnJlYWs7CisjZW5kaWYgLypP QlNPTEVURSovCiAKIAkJY2FzZSBUX0xpc3Q6CiAJCWNhc2UgVF9JbnRMaXN0OgpAQCAtMzMy OCw2ICszMzM5LDcgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJ CXJldHZhbCA9IF9lcXVhbFZhbHVlKGEsIGIpOwogCQkJYnJlYWs7CiAKKyNpZmRlZiBPQlNP TEVURQogCQkJLyoKIAkJCSAqIEVYVEVOU0lCTEUgTk9ERVMKIAkJCSAqLwpAQCAtMzg1NCw2 ICszODY2LDcgQEAgZXF1YWwoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKIAkJY2Fz ZSBUX1BhcnRpdGlvbkNtZDoKIAkJCXJldHZhbCA9IF9lcXVhbFBhcnRpdGlvbkNtZChhLCBi KTsKIAkJCWJyZWFrOworI2VuZGlmIC8qT0JTT0xFVEUqLwogCiAJCWRlZmF1bHQ6CiAJCQll bG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG5vZGUgdHlwZTogJWQiLApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVfc3R1ZmYucGwgYi9zcmMvYmFja2VuZC9ub2Rl cy9nZW5fbm9kZV9zdHVmZi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwLi5hYWZlMzIwZTBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMv Z2VuX25vZGVfc3R1ZmYucGwKQEAgLTAsMCArMSw2NDEgQEAKKyMhL3Vzci9iaW4vcGVybAor Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgR2VuZXJhdGUgbm9kZSBzdXBwb3J0IGZpbGVzOgor IyAtIG5vZGV0YWdzLmgKKyMgLSBjb3B5ZnVuY3MKKyMgLSBlcXVhbGZ1bmNzCisjIC0gcmVh ZGZ1bmNzCisjIC0gb3V0ZnVuY3MKKyMKKyMgc3JjL2JhY2tlbmQvbm9kZXMvZ2VuX25vZGVf c3R1ZmYucGwKKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2Fy bmluZ3M7CisKK3VzZSBleHBlcmltZW50YWwgJ3NtYXJ0bWF0Y2gnOworCit1c2UgRmlsZTo6 QmFzZW5hbWU7CisKK3VzZSBGaW5kQmluOwordXNlIGxpYiAiJEZpbmRCaW46OlJlYWxCaW4v Li4vY2F0YWxvZyI7CisKK3VzZSBDYXRhbG9nOyAgIyBmb3IgUmVuYW1lVGVtcEZpbGUKKwor CitteSBAbm9kZV90eXBlcyA9IHF3KE5vZGUpOworbXkgJW5vZGVfdHlwZV9pbmZvOworCitt eSBAbm9fY29weTsKK215IEBub19yZWFkX3dyaXRlOworCitteSBAc2NhbGFyX3R5cGVzID0g cXcoCisJYml0czMyIGJvb2wgY2hhciBkb3VibGUgaW50IGludDggaW50MTYgaW50MzIgaW50 NjQgbG9uZyB1aW50OCB1aW50MTYgdWludDMyIHVpbnQ2NAorCUFjbE1vZGUgQXR0ck51bWJl ciBDb3N0IEluZGV4IE9pZCBTZWxlY3Rpdml0eSBTaXplIFN0cmF0ZWd5TnVtYmVyIFN1YlRy YW5zYWN0aW9uSWQgVGltZUxpbmVJRCBYTG9nUmVjUHRyCispOworCitteSBAZW51bV90eXBl czsKKworIyBGb3IgYWJzdHJhY3QgdHlwZXMgd2UgdHJhY2sgdGhlaXIgZmllbGRzLCBzbyB0 aGF0IHN1YnR5cGVzIGNhbiB1c2UKKyMgdGhlbSwgYnV0IHdlIGRvbid0IGVtaXQgYSBub2Rl IHRhZywgc28geW91IGNhbid0IGluc3RhbnRpYXRlIHRoZW0uCitteSBAYWJzdHJhY3RfdHlw ZXMgPSBxdygKKwlOb2RlCisJQnVmZmVySGVhcFR1cGxlVGFibGVTbG90IEhlYXBUdXBsZVRh YmxlU2xvdCBNaW5pbWFsVHVwbGVUYWJsZVNsb3QgVmlydHVhbFR1cGxlVGFibGVTbG90CisJ Sm9pblBhdGgKKwlNZW1vcnlDb250ZXh0RGF0YQorCVBhcnRpdGlvblBydW5lU3RlcAorKTsK KworIyBUaGVzZSBhcmUgYWRkaXRpb25hbCBub2RlIHRhZ3MgdGhhdCBkb24ndCBoYXZlIHRo ZWlyIG93biBzdHJ1Y3QuCitteSBAZXh0cmFfdGFncyA9IHF3KEludExpc3QgT2lkTGlzdCBJ bnRlZ2VyIEZsb2F0IFN0cmluZyBCaXRTdHJpbmcgTnVsbCk7CisKKyMgVGhlc2UgYXJlIHJl Z3VsYXIgbm9kZXMsIGJ1dCB3ZSBza2lwIHBhcnNpbmcgdGhlbSBmcm9tIHRoZWlyIGhlYWRl cgorIyBmaWxlcyBzaW5jZSB3ZSB3b24ndCB1c2UgdGhlaXIgaW50ZXJuYWwgc3RydWN0dXJl IGhlcmUgYW55d2F5LgorcHVzaCBAbm9kZV90eXBlcywgcXcoTGlzdCBWYWx1ZSk7CisKKyMg WFhYIG1heWJlIHRoaXMgc2hvdWxkIGJlIGFic3RyYWN0PworcHVzaCBAbm9fY29weSwgcXco RXhwcik7CitwdXNoIEBub19yZWFkX3dyaXRlLCBxdyhFeHByKTsKKworIyBwYXRobm9kZXMu aCBleGNlcHRpb25zCitwdXNoIEBub19jb3B5LCBxdygKKwlSZWxPcHRJbmZvIEluZGV4T3B0 SW5mbyBQYXRoIFBsYW5uZXJHbG9iYWwgRXF1aXZhbGVuY2VDbGFzcyBFcXVpdmFsZW5jZU1l bWJlciBGb3JlaWduS2V5T3B0SW5mbworCUdyb3VwaW5nU2V0RGF0YSBJbmNyZW1lbnRhbFNv cnRQYXRoIEluZGV4Q2xhdXNlIE1pbk1heEFnZ0luZm8gUGF0aFRhcmdldCBQbGFubmVySW5m byBQbGFubmVyUGFyYW1JdGVtCisJUGFyYW1QYXRoSW5mbyBSb2xsdXBEYXRhIFJvd0lkZW50 aXR5VmFySW5mbyBTdGF0aXN0aWNFeHRJbmZvCispOworcHVzaCBAc2NhbGFyX3R5cGVzLCBx dyhFcXVpdmFsZW5jZUNsYXNzKiBFcXVpdmFsZW5jZU1lbWJlciogUXVhbENvc3QpOworCisj IFhYWCB2YXJpb3VzIHRoaW5ncyB3ZSBhcmUgbm90IHB1Ymxpc2hpbmcgcmlnaHQgbm93IHRv IHN0YXkgbGV2ZWwKKyMgd2l0aCB0aGUgbWFudWFsIHN5c3RlbQorcHVzaCBAbm9fY29weSwg cXcoQ2FsbENvbnRleHQgSW5saW5lQ29kZUJsb2NrKTsKK3B1c2ggQG5vX3JlYWRfd3JpdGUs IHF3KEFjY2Vzc1ByaXYgQWx0ZXJUYWJsZUNtZCBDYWxsQ29udGV4dCBDcmVhdGVPcENsYXNz SXRlbSBGdW5jdGlvblBhcmFtZXRlciBJbmZlckNsYXVzZSBJbmxpbmVDb2RlQmxvY2sgT2Jq ZWN0V2l0aEFyZ3MgT25Db25mbGljdENsYXVzZSBQYXJ0aXRpb25DbWQgUm9sZVNwZWMgVmFj dXVtUmVsYXRpb24pOworCisKKyMjIHJlYWQgaW5wdXQKKworZm9yZWFjaCBteSAkaW5maWxl IChAQVJHVikKK3sKKwlteSAkaW5fc3RydWN0OworCW15ICRzdWJsaW5lOworCW15ICRpc19u b2RlX3N0cnVjdDsKKwlteSAkc3VwZXJ0eXBlOworCW15ICRzdXBlcnR5cGVfZmllbGQ7CisK KwlteSBAbXlfZmllbGRzOworCW15ICVteV9maWVsZF90eXBlczsKKwlteSAlbXlfZmllbGRf YXR0cnM7CisKKwlvcGVuIG15ICRpZmgsICc8JywgJGluZmlsZSBvciBkaWUgImNvdWxkIG5v dCBvcGVuIFwiJGluZmlsZVwiOiAkISI7CisKKwl3aGlsZSAobXkgJGxpbmUgPSA8JGlmaD4p CisJeworCQljaG9tcCAkbGluZTsKKwkJJGxpbmUgPX4gcyEvXCouKiQhITsKKwkJJGxpbmUg PX4gcy9ccyokLy87CisJCW5leHQgaWYgJGxpbmUgZXEgJyc7CisJCW5leHQgaWYgJGxpbmUg PX4gbSFeXHMqXCouKiQhOyAgIyBsaW5lIHN0YXJ0cyB3aXRoICosIHByb2JhYmx5IGNvbW1l bnQgY29udGludWF0aW9uCisJCW5leHQgaWYgJGxpbmUgPX4gL14jKGRlZmluZXxpZmRlZnxl bmRpZikvOworCisJCWlmICgkaW5fc3RydWN0KQorCQl7CisJCQkkc3VibGluZSsrOworCisJ CQkjIGZpcnN0IGxpbmUgc2hvdWxkIGhhdmUgb3BlbmluZyBicmFjZQorCQkJaWYgKCRzdWJs aW5lID09IDEpCisJCQl7CisJCQkJJGlzX25vZGVfc3RydWN0ID0gMDsKKwkJCQkkc3VwZXJ0 eXBlID0gdW5kZWY7CisJCQkJbmV4dCBpZiAkbGluZSBlcSAneyc7CisJCQkJZGllOworCQkJ fQorCQkJIyBzZWNvbmQgbGluZSBzaG91bGQgaGF2ZSBub2RlIHRhZyBvciBzdXBlcnR5cGUK KwkJCWVsc2lmICgkc3VibGluZSA9PSAyKQorCQkJeworCQkJCWlmICgkbGluZSA9fiAvXlxz Kk5vZGVUYWdccyt0eXBlOy8pCisJCQkJeworCQkJCQkkaXNfbm9kZV9zdHJ1Y3QgPSAxOwor CQkJCQluZXh0OworCQkJCX0KKwkJCQllbHNpZiAoJGxpbmUgPX4gL1xzKihcdyspXHMrKFx3 Kyk7LyAmJiAkMSB+fiBAbm9kZV90eXBlcykKKwkJCQl7CisJCQkJCSRpc19ub2RlX3N0cnVj dCA9IDE7CisJCQkJCSRzdXBlcnR5cGUgPSAkMTsKKwkJCQkJJHN1cGVydHlwZV9maWVsZCA9 ICQyOworCQkJCQluZXh0OworCQkJCX0KKwkJCX0KKworCQkJIyBlbmQgb2Ygc3RydWN0CisJ CQlpZiAoJGxpbmUgPX4gL15cfVxzKiRpbl9zdHJ1Y3Q7JC8gfHwgJGxpbmUgPX4gL15cfTsk LykKKwkJCXsKKwkJCQlpZiAoJGlzX25vZGVfc3RydWN0KQorCQkJCXsKKwkJCQkJcHVzaCBA bm9kZV90eXBlcywgJGluX3N0cnVjdDsKKwkJCQkJbXkgQGYgPSBAbXlfZmllbGRzOworCQkJ CQlteSAlZnQgPSAlbXlfZmllbGRfdHlwZXM7CisJCQkJCW15ICVmYSA9ICVteV9maWVsZF9h dHRyczsKKwkJCQkJaWYgKCRzdXBlcnR5cGUpCisJCQkJCXsKKwkJCQkJCW15IEBzdXBlcmZp ZWxkczsKKwkJCQkJCWZvcmVhY2ggbXkgJHNmIChAeyRub2RlX3R5cGVfaW5mb3skc3VwZXJ0 eXBlfS0+e2ZpZWxkc319KQorCQkJCQkJeworCQkJCQkJCW15ICRmbiA9ICIke3N1cGVydHlw ZV9maWVsZH0uJHNmIjsKKwkJCQkJCQlwdXNoIEBzdXBlcmZpZWxkcywgJGZuOworCQkJCQkJ CSRmdHskZm59ID0gJG5vZGVfdHlwZV9pbmZveyRzdXBlcnR5cGV9LT57ZmllbGRfdHlwZXN9 eyRzZn07CisJCQkJCQkJJGZheyRmbn0gPSAkbm9kZV90eXBlX2luZm97JHN1cGVydHlwZX0t PntmaWVsZF9hdHRyc317JHNmfTsKKwkJCQkJCX0KKwkJCQkJCXVuc2hpZnQgQGYsIEBzdXBl cmZpZWxkczsKKwkJCQkJfQorCQkJCQkkbm9kZV90eXBlX2luZm97JGluX3N0cnVjdH0tPntm aWVsZHN9ID0gXEBmOworCQkJCQkkbm9kZV90eXBlX2luZm97JGluX3N0cnVjdH0tPntmaWVs ZF90eXBlc30gPSBcJWZ0OworCQkJCQkkbm9kZV90eXBlX2luZm97JGluX3N0cnVjdH0tPntm aWVsZF9hdHRyc30gPSBcJWZhOworCisJCQkJCWlmIChiYXNlbmFtZSgkaW5maWxlKSBlcSAn ZXhlY25vZGVzLmgnIHx8CisJCQkJCQliYXNlbmFtZSgkaW5maWxlKSBlcSAndHJpZ2dlci5o JyB8fAorCQkJCQkJYmFzZW5hbWUoJGluZmlsZSkgZXEgJ2V2ZW50X3RyaWdnZXIuaCcgfHwK KwkJCQkJCWJhc2VuYW1lKCRpbmZpbGUpIGVxICdhbWFwaS5oJyB8fAorCQkJCQkJYmFzZW5h bWUoJGluZmlsZSkgZXEgJ3RhYmxlYW0uaCcgfHwKKwkJCQkJCWJhc2VuYW1lKCRpbmZpbGUp IGVxICd0c21hcGkuaCcgfHwKKwkJCQkJCWJhc2VuYW1lKCRpbmZpbGUpIGVxICdmZHdhcGku aCcgfHwKKwkJCQkJCWJhc2VuYW1lKCRpbmZpbGUpIGVxICd0dXB0YWJsZS5oJyB8fAorCQkJ CQkJYmFzZW5hbWUoJGluZmlsZSkgZXEgJ3JlcGxub2Rlcy5oJyB8fAorCQkJCQkJYmFzZW5h bWUoJGluZmlsZSkgZXEgJ3N1cHBvcnRub2Rlcy5oJyB8fAorCQkJCQkJJGluZmlsZSA9fiAv XC5jJC8KKwkJCQkJKQorCQkJCQl7CisJCQkJCQlwdXNoIEBub19jb3B5LCAkaW5fc3RydWN0 OworCQkJCQkJcHVzaCBAbm9fcmVhZF93cml0ZSwgJGluX3N0cnVjdDsKKwkJCQkJfQorCisJ CQkJCWlmICgkc3VwZXJ0eXBlICYmICgkc3VwZXJ0eXBlIGVxICdQYXRoJyB8fCAkc3VwZXJ0 eXBlIGVxICdKb2luUGF0aCcpKQorCQkJCQl7CisJCQkJCQlwdXNoIEBub19jb3B5LCAkaW5f c3RydWN0OworCQkJCQl9CisJCQkJfQorCisJCQkJIyBzdGFydCBuZXcgY3ljbGUKKwkJCQkk aW5fc3RydWN0ID0gdW5kZWY7CisJCQkJQG15X2ZpZWxkcyA9ICgpOworCQkJCSVteV9maWVs ZF90eXBlcyA9ICgpOworCQkJCSVteV9maWVsZF9hdHRycyA9ICgpOworCQkJfQorCQkJIyBu b3JtYWwgc3RydWN0IGZpZWxkCisJCQllbHNpZiAoJGxpbmUgPX4gL15ccyooLispXHMqXGIo XHcrKShcW1x3K1xdKT9ccyooPzpwZ19ub2RlX2F0dHJcKChbXHcgXSopXCkpPzsvKQorCQkJ eworCQkJCWlmICgkaXNfbm9kZV9zdHJ1Y3QpCisJCQkJeworCQkJCQlteSAkdHlwZSA9ICQx OworCQkJCQlteSAkbmFtZSA9ICQyOworCQkJCQlteSAkYXJyYXlfc2l6ZSA9ICQzOworCQkJ CQlteSAkYXR0ciA9ICQ0OworCisJCQkJCSR0eXBlID1+IHMvXmNvbnN0XHMqLy87CisJCQkJ CSR0eXBlID1+IHMvXHMqJC8vOworCQkJCQkkdHlwZSA9fiBzL1xzK1wqJC8qLzsKKwkJCQkJ ZGllIGlmICR0eXBlIGVxICcnOworCQkJCQkkdHlwZSA9ICR0eXBlIC4gJGFycmF5X3NpemUg aWYgJGFycmF5X3NpemU7CisJCQkJCXB1c2ggQG15X2ZpZWxkcywgJG5hbWU7CisJCQkJCSRt eV9maWVsZF90eXBlc3skbmFtZX0gPSAkdHlwZTsKKwkJCQkJJG15X2ZpZWxkX2F0dHJzeyRu YW1lfSA9ICRhdHRyOworCQkJCX0KKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQlpZiAoJGlz X25vZGVfc3RydWN0KQorCQkJCXsKKwkJCQkJI3dhcm4gIiRpbmZpbGU6JC46IGNvdWxkIG5v dCBwYXJzZSBcIiRsaW5lXCJcbiI7CisJCQkJfQorCQkJfQorCQl9CisJCSMgbm90IGluIGEg c3RydWN0CisJCWVsc2UKKwkJeworCQkJIyBzdGFydCBvZiBhIHN0cnVjdD8KKwkJCWlmICgk bGluZSA9fiAvXig/OnR5cGVkZWYgKT9zdHJ1Y3QgKFx3KykoXHMqXC9cKi4qKT8kLyAmJiAk MSBuZSAnTm9kZScpCisJCQl7CisJCQkJJGluX3N0cnVjdCA9ICQxOworCQkJCSRzdWJsaW5l ID0gMDsKKwkJCX0KKwkJCSMgb25lIG5vZGUgdHlwZSB0eXBlZGVmJ2VkIGRpcmVjdGx5IGZy b20gYW5vdGhlcgorCQkJZWxzaWYgKCRsaW5lID1+IC9edHlwZWRlZiAoXHcrKSAoXHcrKTsk LyAmJiAkMSB+fiBAbm9kZV90eXBlcykKKwkJCXsKKwkJCQlteSAkYWxpYXNfb2YgPSAkMTsK KwkJCQlteSAkbiA9ICQyOworCisJCQkJcHVzaCBAbm9kZV90eXBlcywgJG47CisJCQkJbXkg QGYgPSBAeyRub2RlX3R5cGVfaW5mb3skYWxpYXNfb2Z9LT57ZmllbGRzfX07CisJCQkJbXkg JWZ0ID0gJXskbm9kZV90eXBlX2luZm97JGFsaWFzX29mfS0+e2ZpZWxkX3R5cGVzfX07CisJ CQkJbXkgJWZhID0gJXskbm9kZV90eXBlX2luZm97JGFsaWFzX29mfS0+e2ZpZWxkX2F0dHJz fX07CisJCQkJJG5vZGVfdHlwZV9pbmZveyRufS0+e2ZpZWxkc30gPSBcQGY7CisJCQkJJG5v ZGVfdHlwZV9pbmZveyRufS0+e2ZpZWxkX3R5cGVzfSA9IFwlZnQ7CisJCQkJJG5vZGVfdHlw ZV9pbmZveyRufS0+e2ZpZWxkX2F0dHJzfSA9IFwlZmE7CisJCQl9CisJCQkjIGNvbGxlY3Qg ZW51bSBuYW1lcworCQkJZWxzaWYgKCRsaW5lID1+IC9edHlwZWRlZiBlbnVtIChcdyspKFxz KlwvXCouKik/JC8pCisJCQl7CisJCQkJcHVzaCBAZW51bV90eXBlcywgJDE7CisJCQl9CisJ CX0KKwl9CisKKwlpZiAoJGluX3N0cnVjdCkKKwl7CisJCWRpZSAicnVuYXdheSBcIiRpbl9z dHJ1Y3RcIiBpbiBmaWxlIFwiJGluZmlsZVwiXG4iOworCX0KKworCWNsb3NlICRpZmg7Cit9 ICMgZm9yIGVhY2ggZmlsZQorCisKKyMjIHdyaXRlIG91dHB1dAorCitteSAkdG1wZXh0ICA9 ICIudG1wJCQiOworCisjIG5vZGV0YWdzLmgKKworb3BlbiBteSAkbnQsICc+JywgJ25vZGV0 YWdzLmgnIC4gJHRtcGV4dCBvciBkaWUgJCE7CisKK215ICRpID0gMTsKK2ZvcmVhY2ggbXkg JG4gKEBub2RlX3R5cGVzLEBleHRyYV90YWdzKQoreworCW5leHQgaWYgJG4gfn4gQGFic3Ry YWN0X3R5cGVzOworCXByaW50ICRudCAiXHRUXyR7bn0gPSAkaSxcbiI7CisJJGkrKzsKK30K KworY2xvc2UgJG50OworCisKKyMgY29weWZ1bmNzLmMsIGVxdWFsZnVuY3MuYworCitvcGVu IG15ICRjZiwgJz4nLCAnY29weWZ1bmNzLmluYzEuYycgLiAkdG1wZXh0IG9yIGRpZSAkITsK K29wZW4gbXkgJGVmLCAnPicsICdlcXVhbGZ1bmNzLmluYzEuYycgLiAkdG1wZXh0IG9yIGRp ZSAkITsKK29wZW4gbXkgJGNmMiwgJz4nLCAnY29weWZ1bmNzLmluYzIuYycgLiAkdG1wZXh0 IG9yIGRpZSAkITsKK29wZW4gbXkgJGVmMiwgJz4nLCAnZXF1YWxmdW5jcy5pbmMyLmMnIC4g JHRtcGV4dCBvciBkaWUgJCE7CisKK215IEBjdXN0b21fY29weSA9IHF3KEFfQ29uc3QgQ29u c3QgRXh0ZW5zaWJsZU5vZGUpOworCitmb3JlYWNoIG15ICRuIChAbm9kZV90eXBlcykKK3sK KwluZXh0IGlmICRuIH5+IEBhYnN0cmFjdF90eXBlczsKKwluZXh0IGlmICRuIH5+IEBub19j b3B5OworCW5leHQgaWYgJG4gZXEgJ0xpc3QnOworCW5leHQgaWYgJG4gZXEgJ1ZhbHVlJzsK KworCXByaW50ICRjZjIgIgorXHRcdGNhc2UgVF8ke259OgorXHRcdFx0cmV0dmFsID0gX2Nv cHkke259KGZyb20pOworXHRcdFx0YnJlYWs7IjsKKworCXByaW50ICRlZjIgIgorXHRcdGNh c2UgVF8ke259OgorXHRcdFx0cmV0dmFsID0gX2VxdWFsJHtufShhLCBiKTsKK1x0XHRcdGJy ZWFrOyI7CisKKwluZXh0IGlmICRuIH5+IEBjdXN0b21fY29weTsKKworCXByaW50ICRjZiAi CitzdGF0aWMgJG4gKgorX2NvcHkke259KGNvbnN0ICRuICpmcm9tKQoreworXHQke259ICpu ZXdub2RlID0gbWFrZU5vZGUoJG4pOworCisiOworCisJcHJpbnQgJGVmICIKK3N0YXRpYyBi b29sCitfZXF1YWwke259KGNvbnN0ICRuICphLCBjb25zdCAkbiAqYikKK3sKKyI7CisKKwlt eSAkbGFzdF9hcnJheV9zaXplX2ZpZWxkOworCisJZm9yZWFjaCBteSAkZiAoQHskbm9kZV90 eXBlX2luZm97JG59LT57ZmllbGRzfX0pCisJeworCQlteSAkdCA9ICRub2RlX3R5cGVfaW5m b3skbn0tPntmaWVsZF90eXBlc317JGZ9OworCQlteSAkYSA9ICRub2RlX3R5cGVfaW5mb3sk bn0tPntmaWVsZF9hdHRyc317JGZ9IHx8ICcnOworCQlteSAkY29weV9pZ25vcmUgPSAoJGEg PX4gL1xiY29weV9pZ25vcmVcYi8pOworCQlteSAkZXF1YWxfaWdub3JlID0gKCRhID1+IC9c YmVxdWFsX2lnbm9yZVxiLyk7CisJCWlmICgkdCBlcSAnY2hhcionKQorCQl7CisJCQlwcmlu dCAkY2YgIlx0Q09QWV9TVFJJTkdfRklFTEQoJGYpO1xuIiB1bmxlc3MgJGNvcHlfaWdub3Jl OworCQkJcHJpbnQgJGVmICJcdENPTVBBUkVfU1RSSU5HX0ZJRUxEKCRmKTtcbiIgdW5sZXNz ICRlcXVhbF9pZ25vcmU7CisJCX0KKwkJZWxzaWYgKCR0IGVxICdCaXRtYXBzZXQqJyB8fCAk dCBlcSAnUmVsaWRzJykKKwkJeworCQkJcHJpbnQgJGNmICJcdENPUFlfQklUTUFQU0VUX0ZJ RUxEKCRmKTtcbiIgdW5sZXNzICRjb3B5X2lnbm9yZTsKKwkJCXByaW50ICRlZiAiXHRDT01Q QVJFX0JJVE1BUFNFVF9GSUVMRCgkZik7XG4iIHVubGVzcyAkZXF1YWxfaWdub3JlOworCQl9 CisJCWVsc2lmICgkdCBlcSAnaW50JyAmJiAkZiA9fiAnbG9jYXRpb24kJykKKwkJeworCQkJ cHJpbnQgJGNmICJcdENPUFlfTE9DQVRJT05fRklFTEQoJGYpO1xuIiB1bmxlc3MgJGNvcHlf aWdub3JlOworCQkJcHJpbnQgJGVmICJcdENPTVBBUkVfTE9DQVRJT05fRklFTEQoJGYpO1xu IiB1bmxlc3MgJGVxdWFsX2lnbm9yZTsKKwkJfQorCQllbHNpZiAoJHQgfn4gQHNjYWxhcl90 eXBlcyB8fCAkdCB+fiBAZW51bV90eXBlcykKKwkJeworCQkJcHJpbnQgJGNmICJcdENPUFlf U0NBTEFSX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRjb3B5X2lnbm9yZTsKKwkJCWlmICgkYSA9 fiAvXGJlcXVhbF9pZ25vcmVfaWZfemVyb1xiLykKKwkJCXsKKwkJCQlwcmludCAkZWYgIlx0 aWYgKGEtPiRmICE9IGItPiRmICYmIGEtPiRmICE9IDAgJiYgYi0+JGYgIT0gMClcblx0XHRy ZXR1cm4gZmFsc2U7XG4iOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCXByaW50ICRlZiAi XHRDT01QQVJFX1NDQUxBUl9GSUVMRCgkZik7XG4iIHVubGVzcyAkZXF1YWxfaWdub3JlIHx8 ICR0IGVxICdDb2VyY2lvbkZvcm0nOworCQkJfQorCQkJJGxhc3RfYXJyYXlfc2l6ZV9maWVs ZCA9ICJmcm9tLT4kZiI7CisJCX0KKwkJZWxzaWYgKCR0ID1+IC8oXHcrKVwqLyAmJiAkMSB+ fiBAc2NhbGFyX3R5cGVzKQorCQl7CisJCQlteSAkdHQgPSAkMTsKKwkJCXByaW50ICRjZiAi XHRDT1BZX1BPSU5URVJfRklFTEQoJGYsICRsYXN0X2FycmF5X3NpemVfZmllbGQgKiBzaXpl b2YoJHR0KSk7XG4iIHVubGVzcyAkY29weV9pZ25vcmU7CisJCQkobXkgJGwyID0gJGxhc3Rf YXJyYXlfc2l6ZV9maWVsZCkgPX4gcy9mcm9tL2EvOworCQkJcHJpbnQgJGVmICJcdENPTVBB UkVfUE9JTlRFUl9GSUVMRCgkZiwgJGwyICogc2l6ZW9mKCR0dCkpO1xuIiB1bmxlc3MgJGVx dWFsX2lnbm9yZTsKKwkJfQorCQllbHNpZiAoJHQgPX4gLyhcdyspXCovICYmICQxIH5+IEBu b2RlX3R5cGVzKQorCQl7CisJCQlwcmludCAkY2YgIlx0Q09QWV9OT0RFX0ZJRUxEKCRmKTtc biIgdW5sZXNzICRjb3B5X2lnbm9yZTsKKwkJCXByaW50ICRlZiAiXHRDT01QQVJFX05PREVf RklFTEQoJGYpO1xuIiB1bmxlc3MgJGVxdWFsX2lnbm9yZTsKKwkJCSRsYXN0X2FycmF5X3Np emVfZmllbGQgPSAibGlzdF9sZW5ndGgoZnJvbS0+JGYpIiBpZiAkdCBlcSAnTGlzdConOwor CQl9CisJCWVsc2lmICgkdCA9fiAvXHcrXFsvKQorCQl7CisJCQkjIENPUFlfU0NBTEFSX0ZJ RUxEIG1pZ2h0IHdvcmsgZm9yIHRoZXNlLCBidXQgbGV0J3Mgbm90IGFzc3VtZSB0aGF0CisJ CQlwcmludCAkY2YgIlx0bWVtY3B5KG5ld25vZGUtPiRmLCBmcm9tLT4kZiwgc2l6ZW9mKG5l d25vZGUtPiRmKSk7XG4iIHVubGVzcyAkY29weV9pZ25vcmU7CisJCQlwcmludCAkZWYgIlx0 Q09NUEFSRV9QT0lOVEVSX0ZJRUxEKCRmLCBzaXplb2YoYS0+JGYpKTtcbiIgdW5sZXNzICRl cXVhbF9pZ25vcmU7CisJCX0KKwkJZWxzaWYgKCR0IGVxICdzdHJ1Y3QgQ3VzdG9tUGF0aE1l dGhvZHMqJyB8fAkkdCBlcSAnc3RydWN0IEN1c3RvbVNjYW5NZXRob2RzKicpCisJCXsKKwkJ CXByaW50ICRjZiAiXHRDT1BZX1NDQUxBUl9GSUVMRCgkZik7XG4iIHVubGVzcyAkY29weV9p Z25vcmU7CisJCQlwcmludCAkZWYgIlx0Q09NUEFSRV9TQ0FMQVJfRklFTEQoJGYpO1xuIiB1 bmxlc3MgJGVxdWFsX2lnbm9yZTsKKwkJfQorCQllbHNlCisJCXsKKwkJCWRpZSAiY291bGQg bm90IGhhbmRsZSB0eXBlIFwiJHRcIiBpbiBzdHJ1Y3QgXCIkblwiIGZpZWxkIFwiJGZcIiI7 CisJCX0KKwl9CisKKwlwcmludCAkY2YgIgorXHRyZXR1cm4gbmV3bm9kZTsKK30KKyI7CisJ cHJpbnQgJGVmICIKK1x0cmV0dXJuIHRydWU7Cit9CisiOworfQorCitjbG9zZSAkY2Y7Citj bG9zZSAkZWY7CitjbG9zZSAkY2YyOworY2xvc2UgJGVmMjsKKworCisjIG91dGZ1bmNzLmMs IHJlYWRmdW5jcy5jCisKK29wZW4gbXkgJG9mLCAnPicsICdvdXRmdW5jcy5pbmMxLmMnIC4g JHRtcGV4dCBvciBkaWUgJCE7CitvcGVuIG15ICRyZiwgJz4nLCAncmVhZGZ1bmNzLmluYzEu YycgLiAkdG1wZXh0IG9yIGRpZSAkITsKK29wZW4gbXkgJG9mMiwgJz4nLCAnb3V0ZnVuY3Mu aW5jMi5jJyAuICR0bXBleHQgb3IgZGllICQhOworb3BlbiBteSAkcmYyLCAnPicsICdyZWFk ZnVuY3MuaW5jMi5jJyAuICR0bXBleHQgb3IgZGllICQhOworCitteSAlbmFtZV9tYXAgPSAo CisJJ0FSUkFZRVhQUicgPT4gJ0FSUkFZJywKKwknQ0FTRUVYUFInID0+ICdDQVNFJywKKwkn Q0FTRVdIRU4nID0+ICdXSEVOJywKKwknQ09BTEVTQ0VFWFBSJyA9PiAnQ09BTEVTQ0UnLAor CSdDT0xMQVRFRVhQUicgPT4gJ0NPTExBVEUnLAorCSdERUNMQVJFQ1VSU09SU1RNVCcgPT4g J0RFQ0xBUkVDVVJTT1InLAorCSdNSU5NQVhFWFBSJyA9PiAnTUlOTUFYJywKKwknTk9USUZZ U1RNVCcgPT4gJ05PVElGWScsCisJJ1JBTkdFVEJMRU5UUlknID0+ICdSVEUnLAorCSdST1dD T01QQVJFRVhQUicgPT4gJ1JPV0NPTVBBUkUnLAorCSdST1dFWFBSJyA9PiAnUk9XJywKKyk7 CisKK215IEBjdXN0b21fcmVhZHdyaXRlID0gcXcoQV9Db25zdCBBX0V4cHIgQm9vbEV4cHIg Q29uc3QgQ29uc3RyYWludCBFeHRlbnNpYmxlTm9kZSBRdWVyeSBSYW5nZVRibEVudHJ5KTsK KworZm9yZWFjaCBteSAkbiAoQG5vZGVfdHlwZXMpCit7CisJbmV4dCBpZiAkbiB+fiBAYWJz dHJhY3RfdHlwZXM7CisJbmV4dCBpZiAkbiB+fiBAbm9fcmVhZF93cml0ZTsKKwluZXh0IGlm ICRuIGVxICdMaXN0JzsKKwluZXh0IGlmICRuIGVxICdWYWx1ZSc7CisKKwkjIFhYWCBGb3Ig bm93LCBza2lwIGFsbCAiU3RtdCJzIGV4Y2VwdCB0aGF0IG9uZXMgdGhhdCB3ZXJlIHRoZXJl IGJlZm9yZS4KKwlpZiAoJG4gPX4gL1N0bXQkLykKKwl7CisJCW15IEBrZWVwID0gcXcoQWx0 ZXJTdGF0c1N0bXQgQ3JlYXRlRm9yZWlnblRhYmxlU3RtdCBDcmVhdGVTdGF0c1N0bXQgQ3Jl YXRlU3RtdCBEZWNsYXJlQ3Vyc29yU3RtdCBJbXBvcnRGb3JlaWduU2NoZW1hU3RtdCBJbmRl eFN0bXQgTm90aWZ5U3RtdCBQbGFubmVkU3RtdCBQTEFzc2lnblN0bXQgUmF3U3RtdCBSZXR1 cm5TdG10IFNlbGVjdFN0bXQgU2V0T3BlcmF0aW9uU3RtdCk7CisJCW5leHQgdW5sZXNzICRu IH5+IEBrZWVwOworCX0KKworCSMgWFhYIEFsc28gc2tpcCByZWFkIHN1cHBvcnQgZm9yIHRo b3NlIHRoYXQgZGlkbid0IGhhdmUgaXQgYmVmb3JlLgorCW15ICRub19yZWFkID0gKCRuIGVx ICdBX1N0YXInIHx8ICRuIGVxICdBX0NvbnN0JyB8fCAkbiBlcSAnQV9FeHByJyB8fCAkbiBl cSAnQ29uc3RyYWludCcgfHwgJG4gPX4gL1BhdGgkLyB8fCAkbiBlcSAnRm9yZWlnbktleUNh Y2hlSW5mbycgfHwgJG4gZXEgJ0ZvcmVpZ25LZXlPcHRJbmZvJyB8fCAkbiBlcSAnUGF0aFRh cmdldCcpOworCisJbXkgJE4gPSB1YyAkbjsKKwkkTiA9fiBzL18vL2c7CisJJE4gPSAkbmFt ZV9tYXB7JE59IGlmICRuYW1lX21hcHskTn07CisKKwlwcmludCAkb2YyICJcdFx0XHRjYXNl IFRfJHtufTpcbiIuCisJICAiXHRcdFx0XHRfb3V0JHtufShzdHIsIG9iaik7XG4iLgorCSAg Ilx0XHRcdFx0YnJlYWs7XG4iOworCisJcHJpbnQgJHJmMiAiXHRlbHNlIGlmIChNQVRDSChc IiROXCIsICIgLiBsZW5ndGgoJE4pIC4gIikpXG4iLgorCSAgIlx0XHRyZXR1cm5fdmFsdWUg PSBfcmVhZCR7bn0oKTtcbiIgdW5sZXNzICRub19yZWFkOworCisJbmV4dCBpZiAkbiB+fiBA Y3VzdG9tX3JlYWR3cml0ZTsKKworCXByaW50ICRvZiAiCitzdGF0aWMgdm9pZAorX291dCR7 bn0oU3RyaW5nSW5mbyBzdHIsIGNvbnN0ICRuICpub2RlKQoreworXHRXUklURV9OT0RFX1RZ UEUoXCIkTlwiKTsKKworIjsKKworCXByaW50ICRyZiAiCitzdGF0aWMgJG4gKgorX3JlYWQk e259KHZvaWQpCit7CitcdFJFQURfTE9DQUxTKCRuKTsKKworIiB1bmxlc3MgJG5vX3JlYWQ7 CisKKwlteSAkbGFzdF9hcnJheV9zaXplX2ZpZWxkOworCisJZm9yZWFjaCBteSAkZiAoQHsk bm9kZV90eXBlX2luZm97JG59LT57ZmllbGRzfX0pCisJeworCQlteSAkdCA9ICRub2RlX3R5 cGVfaW5mb3skbn0tPntmaWVsZF90eXBlc317JGZ9OworCQlteSAkYSA9ICRub2RlX3R5cGVf aW5mb3skbn0tPntmaWVsZF9hdHRyc317JGZ9IHx8ICcnOworCQlteSAkcmVhZHdyaXRlX2ln bm9yZSA9ICgkYSA9fiAvXGJyZWFkd3JpdGVfaWdub3JlXGIvKTsKKwkJbmV4dCBpZiAkcmVh ZHdyaXRlX2lnbm9yZTsKKworCQkjIFhYWCBQcmV2aW91c2x5LCBmb3Igc3VidHlwaW5nLCBv bmx5IHRoZSBsZWFmIGZpZWxkIG5hbWUgaXMKKwkJIyB1c2VkLiBQb25kZXIgd2hldGhlciB3 ZSB3YW50IHRvIGtlZXAgaXQgdGhhdCB3YXkuCisKKwkJaWYgKCR0IGVxICdib29sJykKKwkJ eworCQkJcHJpbnQgJG9mICJcdFdSSVRFX0JPT0xfRklFTEQoJGYpO1xuIjsKKwkJCXByaW50 ICRyZiAiXHRSRUFEX0JPT0xfRklFTEQoJGYpO1xuIiB1bmxlc3MgJG5vX3JlYWQ7CisJCX0K KwkJZWxzaWYgKCR0IGVxICdpbnQnICYmICRmID1+ICdsb2NhdGlvbiQnKQorCQl7CisJCQlw cmludCAkb2YgIlx0V1JJVEVfTE9DQVRJT05fRklFTEQoJGYpO1xuIjsKKwkJCXByaW50ICRy ZiAiXHRSRUFEX0xPQ0FUSU9OX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRub19yZWFkOworCQl9 CisJCWVsc2lmICgkdCBlcSAnaW50JyB8fCAkdCBlcSAnaW50MzInIHx8ICR0IGVxICdBdHRy TnVtYmVyJyB8fCAkdCBlcSAnU3RyYXRlZ3lOdW1iZXInKQorCQl7CisJCQlwcmludCAkb2Yg Ilx0V1JJVEVfSU5UX0ZJRUxEKCRmKTtcbiI7CisJCQlwcmludCAkcmYgIlx0UkVBRF9JTlRf RklFTEQoJGYpO1xuIiB1bmxlc3MgJG5vX3JlYWQ7CisJCQkkbGFzdF9hcnJheV9zaXplX2Zp ZWxkID0gIm5vZGUtPiRmIiBpZiAkdCBlcSAnaW50JzsKKwkJfQorCQllbHNpZiAoJHQgZXEg J3VpbnQzMicgfHwgJHQgZXEgJ2JpdHMzMicgfHwgJHQgZXEgJ0FjbE1vZGUnIHx8ICR0IGVx ICdCbG9ja051bWJlcicgfHwgJHQgZXEgJ0luZGV4JyB8fCAkdCBlcSAnU3ViVHJhbnNhY3Rp b25JZCcpCisJCXsKKwkJCXByaW50ICRvZiAiXHRXUklURV9VSU5UX0ZJRUxEKCRmKTtcbiI7 CisJCQlwcmludCAkcmYgIlx0UkVBRF9VSU5UX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRub19y ZWFkOworCQl9CisJCWVsc2lmICgkdCBlcSAndWludDY0JykKKwkJeworCQkJcHJpbnQgJG9m ICJcdFdSSVRFX1VJTlQ2NF9GSUVMRCgkZik7XG4iOworCQkJcHJpbnQgJHJmICJcdFJFQURf VUlOVDY0X0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRub19yZWFkOworCQl9CisJCWVsc2lmICgk dCBlcSAnT2lkJykKKwkJeworCQkJcHJpbnQgJG9mICJcdFdSSVRFX09JRF9GSUVMRCgkZik7 XG4iOworCQkJcHJpbnQgJHJmICJcdFJFQURfT0lEX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRu b19yZWFkOworCQl9CisJCWVsc2lmICgkdCBlcSAnbG9uZycpCisJCXsKKwkJCXByaW50ICRv ZiAiXHRXUklURV9MT05HX0ZJRUxEKCRmKTtcbiI7CisJCQlwcmludCAkcmYgIlx0UkVBRF9M T05HX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRub19yZWFkOworCQl9CisJCWVsc2lmICgkdCBl cSAnY2hhcicpCisJCXsKKwkJCXByaW50ICRvZiAiXHRXUklURV9DSEFSX0ZJRUxEKCRmKTtc biI7CisJCQlwcmludCAkcmYgIlx0UkVBRF9DSEFSX0ZJRUxEKCRmKTtcbiIgdW5sZXNzICRu b19yZWFkOworCQl9CisJCWVsc2lmICgkdCBlcSAnZG91YmxlJykKKwkJeworCQkJIyBYWFgg V2Ugb3V0IHRvIHNwbGl0IHRoZXNlIGludG8gc2VwYXJhdGUgdHlwZXMsIGxpa2UgQ29zdAor CQkJIyBldGMuCisJCQlpZiAoJGYgZXEgJ2FsbHZpc2ZyYWMnKQorCQkJeworCQkJCXByaW50 ICRvZiAiXHRXUklURV9GTE9BVF9GSUVMRCgkZiwgXCIlLjZmXCIpO1xuIjsKKwkJCX0KKwkJ CWVsc2UKKwkJCXsKKwkJCQlwcmludCAkb2YgIlx0V1JJVEVfRkxPQVRfRklFTEQoJGYsIFwi JS4wZlwiKTtcbiI7CisJCQl9CisJCQlwcmludCAkcmYgIlx0UkVBRF9GTE9BVF9GSUVMRCgk Zik7XG4iIHVubGVzcyAkbm9fcmVhZDsKKwkJfQorCQllbHNpZiAoJHQgZXEgJ0Nvc3QnKQor CQl7CisJCQlwcmludCAkb2YgIlx0V1JJVEVfRkxPQVRfRklFTEQoJGYsIFwiJS4yZlwiKTtc biI7CisJCQlwcmludCAkcmYgIlx0UkVBRF9GTE9BVF9GSUVMRCgkZik7XG4iIHVubGVzcyAk bm9fcmVhZDsKKwkJfQorCQllbHNpZiAoJHQgZXEgJ1F1YWxDb3N0JykKKwkJeworCQkJcHJp bnQgJG9mICJcdFdSSVRFX0ZMT0FUX0ZJRUxEKCRmLnN0YXJ0dXAsIFwiJS4yZlwiKTtcbiI7 CisJCQlwcmludCAkb2YgIlx0V1JJVEVfRkxPQVRfRklFTEQoJGYucGVyX3R1cGxlLCBcIiUu MmZcIik7XG4iOworCQkJcHJpbnQgJHJmICJcdFJFQURfRkxPQVRfRklFTEQoJGYuc3RhcnR1 cCk7XG4iIHVubGVzcyAkbm9fcmVhZDsKKwkJCXByaW50ICRyZiAiXHRSRUFEX0ZMT0FUX0ZJ RUxEKCRmLnBlcl90dXBsZSk7XG4iIHVubGVzcyAkbm9fcmVhZDsKKwkJfQorCQllbHNpZiAo JHQgZXEgJ1NlbGVjdGl2aXR5JykKKwkJeworCQkJcHJpbnQgJG9mICJcdFdSSVRFX0ZMT0FU X0ZJRUxEKCRmLCBcIiUuNGZcIik7XG4iOworCQkJcHJpbnQgJHJmICJcdFJFQURfRkxPQVRf RklFTEQoJGYpO1xuIiB1bmxlc3MgJG5vX3JlYWQ7CisJCX0KKwkJZWxzaWYgKCR0IGVxICdj aGFyKicpCisJCXsKKwkJCXByaW50ICRvZiAiXHRXUklURV9TVFJJTkdfRklFTEQoJGYpO1xu IjsKKwkJCXByaW50ICRyZiAiXHRSRUFEX1NUUklOR19GSUVMRCgkZik7XG4iIHVubGVzcyAk bm9fcmVhZDsKKwkJfQorCQllbHNpZiAoJHQgZXEgJ0JpdG1hcHNldConIHx8ICR0IGVxICdS ZWxpZHMnKQorCQl7CisJCQlwcmludCAkb2YgIlx0V1JJVEVfQklUTUFQU0VUX0ZJRUxEKCRm KTtcbiI7CisJCQlwcmludCAkcmYgIlx0UkVBRF9CSVRNQVBTRVRfRklFTEQoJGYpO1xuIiB1 bmxlc3MgJG5vX3JlYWQ7CisJCX0KKwkJZWxzaWYgKCR0IH5+IEBlbnVtX3R5cGVzKQorCQl7 CisJCQlwcmludCAkb2YgIlx0V1JJVEVfRU5VTV9GSUVMRCgkZiwgJHQpO1xuIjsKKwkJCXBy aW50ICRyZiAiXHRSRUFEX0VOVU1fRklFTEQoJGYsICR0KTtcbiIgdW5sZXNzICRub19yZWFk OworCQl9CisJCWVsc2lmICgkdCA9fiAvKFx3KykoXCp8XFspLyAmJiAkMSB+fiBAc2NhbGFy X3R5cGVzKQorCQl7CisJCQl3YXJuICIkdCAkbi4kZiIgdW5sZXNzICRsYXN0X2FycmF5X3Np emVfZmllbGQ7CisJCQlteSAkdHQgPSB1YyAkMTsKKwkJCXByaW50ICRvZiAiXHRXUklURV8k e3R0fV9BUlJBWSgkZiwgJGxhc3RfYXJyYXlfc2l6ZV9maWVsZCk7XG4iOworCQkJKG15ICRs MiA9ICRsYXN0X2FycmF5X3NpemVfZmllbGQpID1+IHMvbm9kZS9sb2NhbF9ub2RlLzsKKwkJ CXByaW50ICRyZiAiXHRSRUFEXyR7dHR9X0FSUkFZKCRmLCAkbDIpO1xuIiB1bmxlc3MgJG5v X3JlYWQ7CisJCX0KKwkJZWxzaWYgKCR0IGVxICdSZWxPcHRJbmZvKicgJiYgJGEgZXEgJ3Bh dGhfaGFjazEnKQorCQl7CisJCQlwcmludCAkb2YgIlx0YXBwZW5kU3RyaW5nSW5mb1N0cmlu ZyhzdHIsIFwiIDpwYXJlbnRfcmVsaWRzIFwiKTtcbiIuCisJCQkgICJcdG91dEJpdG1hcHNl dChzdHIsIG5vZGUtPiRmLT5yZWxpZHMpO1xuIjsKKwkJfQorCQllbHNpZiAoJHQgZXEgJ1Bh dGhUYXJnZXQqJyAmJiAkYSBlcSAncGF0aF9oYWNrMicpCisJCXsKKwkJCShteSAkZjIgPSAk ZikgPX4gcy9wYXRodGFyZ2V0L3BhcmVudC87CisJCQlwcmludCAkb2YgIlx0aWYgKG5vZGUt PiRmICE9IG5vZGUtPiRmMi0+cmVsdGFyZ2V0KVxuIi4KKwkJCSAgIlx0XHRXUklURV9OT0RF X0ZJRUxEKCRmKTtcbiI7CisJCX0KKwkJZWxzaWYgKCR0IGVxICdQYXJhbVBhdGhJbmZvKicg JiYgJGEgZXEgJ3BhdGhfaGFjazMnKQorCQl7CisJCQlwcmludCAkb2YgIlx0aWYgKG5vZGUt PiRmKVxuIi4KKwkJCSAgIlx0XHRvdXRCaXRtYXBzZXQoc3RyLCBub2RlLT4kZi0+cHBpX3Jl cV9vdXRlcik7XG4iLgorCQkJICAiXHRlbHNlXG4iLgorCQkJICAiXHRcdG91dEJpdG1hcHNl dChzdHIsIE5VTEwpO1xuIjsKKwkJfQorCQllbHNpZiAoJHQgPX4gLyhcdyspXCovICYmICQx IH5+IEBub2RlX3R5cGVzKQorCQl7CisJCQlwcmludCAkb2YgIlx0V1JJVEVfTk9ERV9GSUVM RCgkZik7XG4iOworCQkJcHJpbnQgJHJmICJcdFJFQURfTk9ERV9GSUVMRCgkZik7XG4iIHVu bGVzcyAkbm9fcmVhZDsKKwkJCSRsYXN0X2FycmF5X3NpemVfZmllbGQgPSAibGlzdF9sZW5n dGgobm9kZS0+JGYpIiBpZiAkdCBlcSAnTGlzdConOworCQl9CisJCWVsc2lmICgkdCBlcSAn c3RydWN0IEN1c3RvbVBhdGhNZXRob2RzKicgfHwJJHQgZXEgJ3N0cnVjdCBDdXN0b21TY2Fu TWV0aG9kcyonKQorCQl7CisJCQlwcmludCAkb2YgcXsKKwlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKHN0ciwgIiA6bWV0aG9kcyAiKTsKKwlvdXRUb2tlbihzdHIsIG5vZGUtPm1ldGhvZHMt PkN1c3RvbU5hbWUpOworfTsKKwkJCXByaW50ICRyZiBxIQorCXsKKwkJLyogTG9va3VwIEN1 c3RvbVNjYW5NZXRob2RzIGJ5IEN1c3RvbU5hbWUgKi8KKwkJY2hhcgkgICAqY3VzdG9tX25h bWU7CisJCWNvbnN0IEN1c3RvbVNjYW5NZXRob2RzICptZXRob2RzOworCQl0b2tlbiA9IHBn X3N0cnRvaygmbGVuZ3RoKTsgLyogc2tpcCBtZXRob2RzOiAqLworCQl0b2tlbiA9IHBnX3N0 cnRvaygmbGVuZ3RoKTsgLyogQ3VzdG9tTmFtZSAqLworCQljdXN0b21fbmFtZSA9IG51bGxh YmxlX3N0cmluZyh0b2tlbiwgbGVuZ3RoKTsKKwkJbWV0aG9kcyA9IEdldEN1c3RvbVNjYW5N ZXRob2RzKGN1c3RvbV9uYW1lLCBmYWxzZSk7CisJCWxvY2FsX25vZGUtPm1ldGhvZHMgPSBt ZXRob2RzOworCX0KKyEgdW5sZXNzICRub19yZWFkOworCQl9CisJCWVsc2lmICgkdCBlcSAn UGFyYW1MaXN0SW5mbycgfHwgJHQgPX4gL1BhcnRpdGlvbkJvdW5kSW5mb0RhdGEvIHx8ICR0 IGVxICdQYXJ0aXRpb25EaXJlY3RvcnknIHx8ICR0IGVxICdQYXJ0aXRpb25TY2hlbWUnIHx8 ICR0IGVxICd2b2lkKicgfHwgJHQgPX4gL1wqXCokLykKKwkJeworCQkJIyBpZ25vcmUKKwkJ fQorCQllbHNlCisJCXsKKwkJCWRpZSAiY291bGQgbm90IGhhbmRsZSB0eXBlIFwiJHRcIiBp biBzdHJ1Y3QgXCIkblwiIGZpZWxkIFwiJGZcIiI7CisJCX0KKwl9CisKKwlwcmludCAkb2Yg In0KKyI7CisJcHJpbnQgJHJmICIKK1x0UkVBRF9ET05FKCk7Cit9CisiIHVubGVzcyAkbm9f cmVhZDsKK30KKworY2xvc2UgJG9mOworY2xvc2UgJHJmOworY2xvc2UgJG9mMjsKK2Nsb3Nl ICRyZjI7CisKKworZm9yZWFjaCBteSAkZmlsZSAocXcobm9kZXRhZ3MuaCBjb3B5ZnVuY3Mu aW5jMS5jIGNvcHlmdW5jcy5pbmMyLmMgZXF1YWxmdW5jcy5pbmMxLmMgZXF1YWxmdW5jcy5p bmMyLmMgb3V0ZnVuY3MuaW5jMS5jIG91dGZ1bmNzLmluYzIuYyByZWFkZnVuY3MuaW5jMS5j IHJlYWRmdW5jcy5pbmMyLmMpKQoreworCUNhdGFsb2c6OlJlbmFtZVRlbXBGaWxlKCRmaWxl LCAkdG1wZXh0KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCmluZGV4IGVkMDhmNWFjZjQuLjA5 NzhiYzRlODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKKysr IGIvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwpAQCAtMTI0LDYgKzEyNCw4IEBAIHN0 YXRpYyB2b2lkIG91dENoYXIoU3RyaW5nSW5mbyBzdHIsIGNoYXIgYyk7CiAJCQlhcHBlbmRT dHJpbmdJbmZvKHN0ciwgIiAldSIsIG5vZGUtPmZsZG5hbWVbaV0pOyBcCiAJfSB3aGlsZSgw KQogCisjZGVmaW5lIFdSSVRFX0lOREVYX0FSUkFZKGZsZG5hbWUsIGxlbikgV1JJVEVfT0lE X0FSUkFZKGZsZG5hbWUsIGxlbikKKwogI2RlZmluZSBXUklURV9JTlRfQVJSQVkoZmxkbmFt ZSwgbGVuKSBcCiAJZG8geyBcCiAJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiIDoi IENwcEFzU3RyaW5nKGZsZG5hbWUpICIgIik7IFwKQEAgLTI4OCw2ICsyOTAsOSBAQCBvdXRE YXR1bShTdHJpbmdJbmZvIHN0ciwgRGF0dW0gdmFsdWUsIGludCB0eXBsZW4sIGJvb2wgdHlw Ynl2YWwpCiB9CiAKIAorI2luY2x1ZGUgIm91dGZ1bmNzLmluYzEuYyIKKworI2lmZGVmIE9C U09MRVRFCiAvKgogICoJU3R1ZmYgZnJvbSBwbGFubm9kZXMuaAogICovCkBAIC0xMTI2LDYg KzExMzEsNyBAQCBfb3V0VmFyKFN0cmluZ0luZm8gc3RyLCBjb25zdCBWYXIgKm5vZGUpCiAJ V1JJVEVfSU5UX0ZJRUxEKHZhcmF0dG5vc3luKTsKIAlXUklURV9MT0NBVElPTl9GSUVMRChs b2NhdGlvbik7CiB9CisjZW5kaWYgLypPQlNPTEVURSovCiAKIHN0YXRpYyB2b2lkCiBfb3V0 Q29uc3QoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbnN0ICpub2RlKQpAQCAtMTE0Nyw2ICsx MTUzLDcgQEAgX291dENvbnN0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdCAqbm9kZSkK IAkJb3V0RGF0dW0oc3RyLCBub2RlLT5jb25zdHZhbHVlLCBub2RlLT5jb25zdGxlbiwgbm9k ZS0+Y29uc3RieXZhbCk7CiB9CiAKKyNpZmRlZiBPQlNPTEVURQogc3RhdGljIHZvaWQKIF9v dXRQYXJhbShTdHJpbmdJbmZvIHN0ciwgY29uc3QgUGFyYW0gKm5vZGUpCiB7CkBAIC0xMzE2 LDYgKzEzMjMsNyBAQCBfb3V0U2NhbGFyQXJyYXlPcEV4cHIoU3RyaW5nSW5mbyBzdHIsIGNv bnN0IFNjYWxhckFycmF5T3BFeHByICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoYXJncyk7 CiAJV1JJVEVfTE9DQVRJT05fRklFTEQobG9jYXRpb24pOwogfQorI2VuZGlmIC8qT0JTT0xF VEUqLwogCiBzdGF0aWMgdm9pZAogX291dEJvb2xFeHByKFN0cmluZ0luZm8gc3RyLCBjb25z dCBCb29sRXhwciAqbm9kZSkKQEAgLTEzNDQsNiArMTM1Miw3IEBAIF9vdXRCb29sRXhwcihT dHJpbmdJbmZvIHN0ciwgY29uc3QgQm9vbEV4cHIgKm5vZGUpCiAJV1JJVEVfTE9DQVRJT05f RklFTEQobG9jYXRpb24pOwogfQogCisjaWZkZWYgT0JTT0xFVEUKIHN0YXRpYyB2b2lkCiBf b3V0U3ViTGluayhTdHJpbmdJbmZvIHN0ciwgY29uc3QgU3ViTGluayAqbm9kZSkKIHsKQEAg LTI2NTgsNiArMjY2Nyw3IEBAIF9vdXRQbGFubmVyUGFyYW1JdGVtKFN0cmluZ0luZm8gc3Ry LCBjb25zdCBQbGFubmVyUGFyYW1JdGVtICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoaXRl bSk7CiAJV1JJVEVfSU5UX0ZJRUxEKHBhcmFtSWQpOwogfQorI2VuZGlmIC8qT0JTT0xFVEUq LwogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCkBAIC0yNjgwLDYgKzI2OTAsNyBA QCBfb3V0RXh0ZW5zaWJsZU5vZGUoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IEV4dGVuc2libGVO b2RlICpub2RlKQogCW1ldGhvZHMtPm5vZGVPdXQoc3RyLCBub2RlKTsKIH0KIAorI2lmZGVm IE9CU09MRVRFCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKglTdHVmZiBmcm9t IHBhcnNlbm9kZXMuaC4KQEAgLTMwMTIsNiArMzAyMyw3IEBAIF9vdXRTdGF0c0VsZW0oU3Ry aW5nSW5mbyBzdHIsIGNvbnN0IFN0YXRzRWxlbSAqbm9kZSkKIAlXUklURV9TVFJJTkdfRklF TEQobmFtZSk7CiAJV1JJVEVfTk9ERV9GSUVMRChleHByKTsKIH0KKyNlbmRpZiAvKk9CU09M RVRFKi8KIAogc3RhdGljIHZvaWQKIF9vdXRRdWVyeShTdHJpbmdJbmZvIHN0ciwgY29uc3Qg UXVlcnkgKm5vZGUpCkBAIC0zMDg0LDYgKzMwOTYsNyBAQCBfb3V0UXVlcnkoU3RyaW5nSW5m byBzdHIsIGNvbnN0IFF1ZXJ5ICpub2RlKQogCVdSSVRFX0lOVF9GSUVMRChzdG10X2xlbik7 CiB9CiAKKyNpZmRlZiBPQlNPTEVURQogc3RhdGljIHZvaWQKIF9vdXRXaXRoQ2hlY2tPcHRp b24oU3RyaW5nSW5mbyBzdHIsIGNvbnN0IFdpdGhDaGVja09wdGlvbiAqbm9kZSkKIHsKQEAg LTMyMjIsNiArMzIzNSw3IEBAIF9vdXRTZXRPcGVyYXRpb25TdG10KFN0cmluZ0luZm8gc3Ry LCBjb25zdCBTZXRPcGVyYXRpb25TdG10ICpub2RlKQogCVdSSVRFX05PREVfRklFTEQoY29s Q29sbGF0aW9ucyk7CiAJV1JJVEVfTk9ERV9GSUVMRChncm91cENsYXVzZXMpOwogfQorI2Vu ZGlmIC8qT0JTT0xFVEUqLwogCiBzdGF0aWMgdm9pZAogX291dFJhbmdlVGJsRW50cnkoU3Ry aW5nSW5mbyBzdHIsIGNvbnN0IFJhbmdlVGJsRW50cnkgKm5vZGUpCkBAIC0zMzAyLDYgKzMz MTYsNyBAQCBfb3V0UmFuZ2VUYmxFbnRyeShTdHJpbmdJbmZvIHN0ciwgY29uc3QgUmFuZ2VU YmxFbnRyeSAqbm9kZSkKIAlXUklURV9OT0RFX0ZJRUxEKHNlY3VyaXR5UXVhbHMpOwogfQog CisjaWZkZWYgT0JTT0xFVEUKIHN0YXRpYyB2b2lkCiBfb3V0UmFuZ2VUYmxGdW5jdGlvbihT dHJpbmdJbmZvIHN0ciwgY29uc3QgUmFuZ2VUYmxGdW5jdGlvbiAqbm9kZSkKIHsKQEAgLTMz MjUsNiArMzM0MCw3IEBAIF9vdXRUYWJsZVNhbXBsZUNsYXVzZShTdHJpbmdJbmZvIHN0ciwg Y29uc3QgVGFibGVTYW1wbGVDbGF1c2UgKm5vZGUpCiAJV1JJVEVfTk9ERV9GSUVMRChhcmdz KTsKIAlXUklURV9OT0RFX0ZJRUxEKHJlcGVhdGFibGUpOwogfQorI2VuZGlmIC8qT0JTT0xF VEUqLwogCiBzdGF0aWMgdm9pZAogX291dEFfRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3Qg QV9FeHByICpub2RlKQpAQCAtMzQ0Miw2ICszNDU4LDcgQEAgX291dFZhbHVlKFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBWYWx1ZSAqbm9kZSkKIAl9CiB9CiAKKyNpZmRlZiBPQlNPTEVURQog c3RhdGljIHZvaWQKIF9vdXRDb2x1bW5SZWYoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbHVt blJlZiAqbm9kZSkKIHsKQEAgLTM0NzMsNiArMzQ5MCw3IEBAIF9vdXRSYXdTdG10KFN0cmlu Z0luZm8gc3RyLCBjb25zdCBSYXdTdG10ICpub2RlKQogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxE KHN0bXRfbG9jYXRpb24pOwogCVdSSVRFX0lOVF9GSUVMRChzdG10X2xlbik7CiB9CisjZW5k aWYgLypPQlNPTEVURSovCiAKIHN0YXRpYyB2b2lkCiBfb3V0QV9Db25zdChTdHJpbmdJbmZv IHN0ciwgY29uc3QgQV9Db25zdCAqbm9kZSkKQEAgLTM0ODQsNiArMzUwMiw3IEBAIF9vdXRB X0NvbnN0KFN0cmluZ0luZm8gc3RyLCBjb25zdCBBX0NvbnN0ICpub2RlKQogCVdSSVRFX0xP Q0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIH0KIAorI2lmZGVmIE9CU09MRVRFCiBzdGF0aWMg dm9pZAogX291dEFfU3RhcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQV9TdGFyICpub2RlKQog ewpAQCAtMzYyOCw2ICszNjQ3LDcgQEAgX291dFJhbmdlVGFibGVGdW5jQ29sKFN0cmluZ0lu Zm8gc3RyLCBjb25zdCBSYW5nZVRhYmxlRnVuY0NvbCAqbm9kZSkKIAlXUklURV9OT0RFX0ZJ RUxEKGNvbGRlZmV4cHIpOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxvY2F0aW9uKTsKIH0K KyNlbmRpZiAvKk9CU09MRVRFKi8KIAogc3RhdGljIHZvaWQKIF9vdXRDb25zdHJhaW50KFN0 cmluZ0luZm8gc3RyLCBjb25zdCBDb25zdHJhaW50ICpub2RlKQpAQCAtMzc0OCw2ICszNzY4 LDcgQEAgX291dENvbnN0cmFpbnQoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvbnN0cmFpbnQg Km5vZGUpCiAJfQogfQogCisjaWZkZWYgT0JTT0xFVEUKIHN0YXRpYyB2b2lkCiBfb3V0Rm9y ZWlnbktleUNhY2hlSW5mbyhTdHJpbmdJbmZvIHN0ciwgY29uc3QgRm9yZWlnbktleUNhY2hl SW5mbyAqbm9kZSkKIHsKQEAgLTM4MDgsNiArMzgyOSw3IEBAIF9vdXRQYXJ0aXRpb25SYW5n ZURhdHVtKFN0cmluZ0luZm8gc3RyLCBjb25zdCBQYXJ0aXRpb25SYW5nZURhdHVtICpub2Rl KQogCVdSSVRFX05PREVfRklFTEQodmFsdWUpOwogCVdSSVRFX0xPQ0FUSU9OX0ZJRUxEKGxv Y2F0aW9uKTsKIH0KKyNlbmRpZiAvKk9CU09MRVRFKi8KIAogLyoKICAqIG91dE5vZGUgLQpA QCAtMzgzNiw2ICszODU4LDggQEAgb3V0Tm9kZShTdHJpbmdJbmZvIHN0ciwgY29uc3Qgdm9p ZCAqb2JqKQogCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICd7Jyk7CiAJCXN3aXRjaCAo bm9kZVRhZyhvYmopKQogCQl7CisjaW5jbHVkZSAib3V0ZnVuY3MuaW5jMi5jIgorI2lmZGVm IE9CU09MRVRFCiAJCQljYXNlIFRfUGxhbm5lZFN0bXQ6CiAJCQkJX291dFBsYW5uZWRTdG10 KHN0ciwgb2JqKTsKIAkJCQlicmVhazsKQEAgLTQ1MDUsNiArNDUyOSw3IEBAIG91dE5vZGUo U3RyaW5nSW5mbyBzdHIsIGNvbnN0IHZvaWQgKm9iaikKIAkJCWNhc2UgVF9QYXJ0aXRpb25S YW5nZURhdHVtOgogCQkJCV9vdXRQYXJ0aXRpb25SYW5nZURhdHVtKHN0ciwgb2JqKTsKIAkJ CQlicmVhazsKKyNlbmRpZiAvKk9CU09MRVRFKi8KIAogCQkJZGVmYXVsdDoKIApkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYwppbmRleCBmZWY0ZGU5NGU2Li5iNGI5Mzc5ZDlkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rl cy9yZWFkZnVuY3MuYwpAQCAtMjQwLDYgKzI0MCw4IEBAIHJlYWRCaXRtYXBzZXQodm9pZCkK IAlyZXR1cm4gX3JlYWRCaXRtYXBzZXQoKTsKIH0KIAorI2luY2x1ZGUgInJlYWRmdW5jcy5p bmMxLmMiCisKIC8qCiAgKiBfcmVhZFF1ZXJ5CiAgKi8KQEAgLTI5MSw2ICsyOTMsNyBAQCBf cmVhZFF1ZXJ5KHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKyNpZmRlZiBPQlNPTEVURQog LyoKICAqIF9yZWFkTm90aWZ5U3RtdAogICovCkBAIC01ODksNiArNTkyLDcgQEAgX3JlYWRW YXIodm9pZCkKIAogCVJFQURfRE9ORSgpOwogfQorI2VuZGlmIC8qT0JTT0xFVEUqLwogCiAv KgogICogX3JlYWRDb25zdApAQCAtNjE1LDYgKzYxOSw3IEBAIF9yZWFkQ29uc3Qodm9pZCkK IAlSRUFEX0RPTkUoKTsKIH0KIAorI2lmZGVmIE9CU09MRVRFCiAvKgogICogX3JlYWRQYXJh bQogICovCkBAIC04MzksNiArODQ0LDcgQEAgX3JlYWRTY2FsYXJBcnJheU9wRXhwcih2b2lk KQogCiAJUkVBRF9ET05FKCk7CiB9CisjZW5kaWYgLypPQlNPTEVURSovCiAKIC8qCiAgKiBf cmVhZEJvb2xFeHByCkBAIC04NjYsNiArODcyLDcgQEAgX3JlYWRCb29sRXhwcih2b2lkKQog CVJFQURfRE9ORSgpOwogfQogCisjaWZkZWYgT0JTT0xFVEUKIC8qCiAgKiBfcmVhZFN1Ykxp bmsKICAqLwpAQCAtMTQyMCw2ICsxNDI3LDcgQEAgX3JlYWRBcHBlbmRSZWxJbmZvKHZvaWQp CiAvKgogICoJU3R1ZmYgZnJvbSBwYXJzZW5vZGVzLmguCiAgKi8KKyNlbmRpZiAvKk9CU09M RVRFKi8KIAogLyoKICAqIF9yZWFkUmFuZ2VUYmxFbnRyeQpAQCAtMTUxNSw2ICsxNTIzLDcg QEAgX3JlYWRSYW5nZVRibEVudHJ5KHZvaWQpCiAJUkVBRF9ET05FKCk7CiB9CiAKKyNpZmRl ZiBPQlNPTEVURQogLyoKICAqIF9yZWFkUmFuZ2VUYmxGdW5jdGlvbgogICovCkBAIC0yNjM1 LDYgKzI2NDQsNyBAQCBfcmVhZEFsdGVybmF0aXZlU3ViUGxhbih2b2lkKQogCiAJUkVBRF9E T05FKCk7CiB9CisjZW5kaWYgLypPQlNPTEVURSovCiAKIC8qCiAgKiBfcmVhZEV4dGVuc2li bGVOb2RlCkBAIC0yNjY2LDYgKzI2NzYsNyBAQCBfcmVhZEV4dGVuc2libGVOb2RlKHZvaWQp CiAJUkVBRF9ET05FKCk7CiB9CiAKKyNpZmRlZiBPQlNPTEVURQogLyoKICAqIF9yZWFkUGFy dGl0aW9uQm91bmRTcGVjCiAgKi8KQEAgLTI3MDAsNiArMjcxMSw3IEBAIF9yZWFkUGFydGl0 aW9uUmFuZ2VEYXR1bSh2b2lkKQogCiAJUkVBRF9ET05FKCk7CiB9CisjZW5kaWYgLypPQlNP TEVURSovCiAKIC8qCiAgKiBwYXJzZU5vZGVTdHJpbmcKQEAgLTI3MjQsNyArMjczNiwxMSBA QCBwYXJzZU5vZGVTdHJpbmcodm9pZCkKICNkZWZpbmUgTUFUQ0godG9rbmFtZSwgbmFtZWxl bikgXAogCShsZW5ndGggPT0gbmFtZWxlbiAmJiBtZW1jbXAodG9rZW4sIHRva25hbWUsIG5h bWVsZW4pID09IDApCiAKLQlpZiAoTUFUQ0goIlFVRVJZIiwgNSkpCisJaWYgKGZhbHNlKQor CQk7CisjaW5jbHVkZSAicmVhZGZ1bmNzLmluYzIuYyIKKyNpZmRlZiBPQlNPTEVURQorCWVs c2UgaWYgKE1BVENIKCJRVUVSWSIsIDUpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZFF1ZXJ5 KCk7CiAJZWxzZSBpZiAoTUFUQ0goIldJVEhDSEVDS09QVElPTiIsIDE1KSkKIAkJcmV0dXJu X3ZhbHVlID0gX3JlYWRXaXRoQ2hlY2tPcHRpb24oKTsKQEAgLTI5NzIsNiArMjk4OCw3IEBA IHBhcnNlTm9kZVN0cmluZyh2b2lkKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZFBhcnRpdGlv bkJvdW5kU3BlYygpOwogCWVsc2UgaWYgKE1BVENIKCJQQVJUSVRJT05SQU5HRURBVFVNIiwg MTkpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZFBhcnRpdGlvblJhbmdlRGF0dW0oKTsKKyNl bmRpZiAvKk9CU09MRVRFKi8KIAllbHNlCiAJewogCQllbG9nKEVSUk9SLCAiYmFkbHkgZm9y bWF0dGVkIG5vZGUgc3RyaW5nIFwiJS4zMnNcIi4uLiIsIHRva2VuKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzLy5naXRpZ25vcmUgYi9zcmMvaW5jbHVkZS9ub2Rlcy8uZ2l0 aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjk5ZmIxZDM3 ODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy8uZ2l0aWdub3JlCkBA IC0wLDAgKzEsMiBAQAorL25vZGV0YWdzLmgKKy9oZWFkZXItc3RhbXAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL25vZGVzL25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5o CmluZGV4IDVlMDQ5YTY3ZTEuLmNiMTQwYTNiOTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L25vZGVzL25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaApAQCAtMjcs NiArMjcsOCBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogewogCVRfSW52YWxpZCA9IDAsCiAK KyNpbmNsdWRlICJub2Rlcy9ub2RldGFncy5oIgorI2lmZGVmIE9CU09MRVRFCiAJLyoKIAkg KiBUQUdTIEZPUiBFWEVDVVRPUiBOT0RFUyAoZXhlY25vZGVzLmgpCiAJICovCkBAIC01Mjcs OCArNTI5LDE0IEBAIHR5cGVkZWYgZW51bSBOb2RlVGFnCiAJVF9TdXBwb3J0UmVxdWVzdENv c3QsCQkvKiBpbiBub2Rlcy9zdXBwb3J0bm9kZXMuaCAqLwogCVRfU3VwcG9ydFJlcXVlc3RS b3dzLAkJLyogaW4gbm9kZXMvc3VwcG9ydG5vZGVzLmggKi8KIAlUX1N1cHBvcnRSZXF1ZXN0 SW5kZXhDb25kaXRpb24JLyogaW4gbm9kZXMvc3VwcG9ydG5vZGVzLmggKi8KKyNlbmRpZiAv Kk9CU09MRVRFKi8KIH0gTm9kZVRhZzsKIAorLyoKKyAqIHVzZWQgaW4gbm9kZSBkZWZpbml0 aW9ucyB0byBzZXQgZXh0cmEgaW5mb3JtYXRpb24gZm9yIGdlbl9ub2RlX3N0dWZmLnBsCisg Ki8KKyNkZWZpbmUgcGdfbm9kZV9hdHRyKHgpCisKIC8qCiAgKiBUaGUgZmlyc3QgZmllbGQg b2YgYSBub2RlIG9mIGFueSB0eXBlIGlzIGd1YXJhbnRlZWQgdG8gYmUgdGhlIE5vZGVUYWcu CiAgKiBIZW5jZSB0aGUgdHlwZSBvZiBhbnkgbm9kZSBjYW4gYmUgZ290dGVuIGJ5IGNhc3Rp bmcgaXQgdG8gTm9kZS4gRGVjbGFyaW5nCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rl cy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKaW5kZXgg Y2Q5MTE1ZGJiNS4uYjM1ZDE0MTRkZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMv cGFyc2Vub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAt MTIxLDcgKzEyMSw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5CiAKIAlRdWVyeVNvdXJjZSBx dWVyeVNvdXJjZTsJLyogd2hlcmUgZGlkIEkgY29tZSBmcm9tPyAqLwogCi0JdWludDY0CQlx dWVyeUlkOwkJLyogcXVlcnkgaWRlbnRpZmllciAoY2FuIGJlIHNldCBieSBwbHVnaW5zKSAq LworCXVpbnQ2NAkJcXVlcnlJZCBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJCS8qIHF1 ZXJ5IGlkZW50aWZpZXIgKGNhbiBiZSBzZXQgYnkgcGx1Z2lucykgKi8KIAogCWJvb2wJCWNh blNldFRhZzsJCS8qIGRvIEkgc2V0IHRoZSBjb21tYW5kIHJlc3VsdCB0YWc/ICovCiAKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggMDNjODBjMTYyMC4uYjk4ZDE5NThmYyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBzdHJ1Y3QgUGxhbm5lcklu Zm8KIAkgKiBHRVFPLgogCSAqLwogCUxpc3QJICAgKmpvaW5fcmVsX2xpc3Q7CS8qIGxpc3Qg b2Ygam9pbi1yZWxhdGlvbiBSZWxPcHRJbmZvcyAqLwotCXN0cnVjdCBIVEFCICpqb2luX3Jl bF9oYXNoOyAvKiBvcHRpb25hbCBoYXNodGFibGUgZm9yIGpvaW4gcmVsYXRpb25zICovCisJ c3RydWN0IEhUQUIgKmpvaW5fcmVsX2hhc2ggcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25v cmUpOyAvKiBvcHRpb25hbCBoYXNodGFibGUgZm9yIGpvaW4gcmVsYXRpb25zICovCiAKIAkv KgogCSAqIFdoZW4gZG9pbmcgYSBkeW5hbWljLXByb2dyYW1taW5nLXN0eWxlIGpvaW4gc2Vh cmNoLCBqb2luX3JlbF9sZXZlbFtrXQpAQCAtMzMxLDcgKzMzMSw3IEBAIHN0cnVjdCBQbGFu bmVySW5mbwogCUF0dHJOdW1iZXIgKmdyb3VwaW5nX21hcDsJLyogZm9yIEdyb3VwaW5nRnVu YyBmaXh1cCAqLwogCUxpc3QJICAgKm1pbm1heF9hZ2dzOwkvKiBMaXN0IG9mIE1pbk1heEFn Z0luZm9zICovCiAKLQlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3h0OwkvKiBjb250ZXh0IGhv bGRpbmcgUGxhbm5lckluZm8gKi8KKwlNZW1vcnlDb250ZXh0IHBsYW5uZXJfY3h0IHBnX25v ZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsJLyogY29udGV4dCBob2xkaW5nIFBsYW5uZXJJ bmZvICovCiAKIAlkb3VibGUJCXRvdGFsX3RhYmxlX3BhZ2VzOwkvKiAjIG9mIHBhZ2VzIGlu IGFsbCBub24tZHVtbXkgdGFibGVzIG9mCiAJCQkJCQkJCQkgKiBxdWVyeSAqLwpAQCAtNzA2 LDggKzcwNiw4IEBAIHR5cGVkZWYgc3RydWN0IFJlbE9wdEluZm8KIAlSVEVLaW5kCQlydGVr aW5kOwkJLyogUkVMQVRJT04sIFNVQlFVRVJZLCBGVU5DVElPTiwgZXRjICovCiAJQXR0ck51 bWJlcgltaW5fYXR0cjsJCS8qIHNtYWxsZXN0IGF0dHJubyBvZiByZWwgKG9mdGVuIDwwKSAq LwogCUF0dHJOdW1iZXIJbWF4X2F0dHI7CQkvKiBsYXJnZXN0IGF0dHJubyBvZiByZWwgKi8K LQlSZWxpZHMJICAgKmF0dHJfbmVlZGVkOwkvKiBhcnJheSBpbmRleGVkIFttaW5fYXR0ciAu LiBtYXhfYXR0cl0gKi8KLQlpbnQzMgkgICAqYXR0cl93aWR0aHM7CS8qIGFycmF5IGluZGV4 ZWQgW21pbl9hdHRyIC4uIG1heF9hdHRyXSAqLworCVJlbGlkcwkgICAqYXR0cl9uZWVkZWQg cGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25vcmUpOwkvKiBhcnJheSBpbmRleGVkIFttaW5f YXR0ciAuLiBtYXhfYXR0cl0gKi8KKwlpbnQzMgkgICAqYXR0cl93aWR0aHMgcGdfbm9kZV9h dHRyKHJlYWR3cml0ZV9pZ25vcmUpOwkvKiBhcnJheSBpbmRleGVkIFttaW5fYXR0ciAuLiBt YXhfYXR0cl0gKi8KIAlMaXN0CSAgICpsYXRlcmFsX3ZhcnM7CS8qIExBVEVSQUwgVmFycyBh bmQgUEhWcyByZWZlcmVuY2VkIGJ5IHJlbCAqLwogCVJlbGlkcwkJbGF0ZXJhbF9yZWZlcmVu Y2VyczsJLyogcmVscyB0aGF0IHJlZmVyZW5jZSBtZSBsYXRlcmFsbHkgKi8KIAlMaXN0CSAg ICppbmRleGxpc3Q7CQkvKiBsaXN0IG9mIEluZGV4T3B0SW5mbyAqLwpAQCAtNzI4LDEzICs3 MjgsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCU9pZAkJCXVzZXJpZDsJCQkv KiBpZGVudGlmaWVzIHVzZXIgdG8gY2hlY2sgYWNjZXNzIGFzICovCiAJYm9vbAkJdXNlcmlk aXNjdXJyZW50OwkvKiBqb2luIGlzIG9ubHkgdmFsaWQgZm9yIGN1cnJlbnQgdXNlciAqLwog CS8qIHVzZSAic3RydWN0IEZkd1JvdXRpbmUiIHRvIGF2b2lkIGluY2x1ZGluZyBmZHdhcGku aCBoZXJlICovCi0Jc3RydWN0IEZkd1JvdXRpbmUgKmZkd3JvdXRpbmU7CisJc3RydWN0IEZk d1JvdXRpbmUgKmZkd3JvdXRpbmUgcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25vcmUpOwog CXZvaWQJICAgKmZkd19wcml2YXRlOwogCiAJLyogY2FjaGUgc3BhY2UgZm9yIHJlbWVtYmVy aW5nIGlmIHdlIGhhdmUgcHJvdmVuIHRoaXMgcmVsYXRpb24gdW5pcXVlICovCi0JTGlzdAkg ICAqdW5pcXVlX2Zvcl9yZWxzOwkvKiBrbm93biB1bmlxdWUgZm9yIHRoZXNlIG90aGVyIHJl bGlkCisJTGlzdAkgICAqdW5pcXVlX2Zvcl9yZWxzIHBnX25vZGVfYXR0cihyZWFkd3JpdGVf aWdub3JlKTsJLyoga25vd24gdW5pcXVlIGZvciB0aGVzZSBvdGhlciByZWxpZAogCQkJCQkJ CQkJICogc2V0KHMpICovCi0JTGlzdAkgICAqbm9uX3VuaXF1ZV9mb3JfcmVsczsJLyoga25v d24gbm90IHVuaXF1ZSBmb3IgdGhlc2Ugc2V0KHMpICovCisJTGlzdAkgICAqbm9uX3VuaXF1 ZV9mb3JfcmVscyBwZ19ub2RlX2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CS8qIGtub3duIG5v dCB1bmlxdWUgZm9yIHRoZXNlIHNldChzKSAqLwogCiAJLyogdXNlZCBieSB2YXJpb3VzIHNj YW5zIGFuZCBqb2luczogKi8KIAlMaXN0CSAgICpiYXNlcmVzdHJpY3RpbmZvOwkvKiBSZXN0 cmljdEluZm8gc3RydWN0dXJlcyAoaWYgYmFzZSByZWwpICovCkBAIC04MjksNyArODI5LDcg QEAgc3RydWN0IEluZGV4T3B0SW5mbwogCiAJT2lkCQkJaW5kZXhvaWQ7CQkvKiBPSUQgb2Yg dGhlIGluZGV4IHJlbGF0aW9uICovCiAJT2lkCQkJcmVsdGFibGVzcGFjZTsJLyogdGFibGVz cGFjZSBvZiBpbmRleCAobm90IHRhYmxlKSAqLwotCVJlbE9wdEluZm8gKnJlbDsJCQkvKiBi YWNrLWxpbmsgdG8gaW5kZXgncyB0YWJsZSAqLworCVJlbE9wdEluZm8gKnJlbCBwZ19ub2Rl X2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CQkJLyogYmFjay1saW5rIHRvIGluZGV4J3MgdGFi bGUgKi8KIAogCS8qIGluZGV4LXNpemUgc3RhdGlzdGljcyAoZnJvbSBwZ19jbGFzcyBhbmQg ZWxzZXdoZXJlKSAqLwogCUJsb2NrTnVtYmVyIHBhZ2VzOwkJCS8qIG51bWJlciBvZiBkaXNr IHBhZ2VzIGluIGluZGV4ICovCkBAIC04MzksMjAgKzgzOSwyMCBAQCBzdHJ1Y3QgSW5kZXhP cHRJbmZvCiAJLyogaW5kZXggZGVzY3JpcHRvciBpbmZvcm1hdGlvbiAqLwogCWludAkJCW5j b2x1bW5zOwkJLyogbnVtYmVyIG9mIGNvbHVtbnMgaW4gaW5kZXggKi8KIAlpbnQJCQlua2V5 Y29sdW1uczsJLyogbnVtYmVyIG9mIGtleSBjb2x1bW5zIGluIGluZGV4ICovCi0JaW50CQkg ICAqaW5kZXhrZXlzOwkJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXgncyBhdHRyaWJ1dGVz IGJvdGgKKwlpbnQJCSAgICppbmRleGtleXMgcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25v cmUpOwkJLyogY29sdW1uIG51bWJlcnMgb2YgaW5kZXgncyBhdHRyaWJ1dGVzIGJvdGgKIAkJ CQkJCQkJICoga2V5IGFuZCBpbmNsdWRlZCBjb2x1bW5zLCBvciAwICovCi0JT2lkCQkgICAq aW5kZXhjb2xsYXRpb25zOwkvKiBPSURzIG9mIGNvbGxhdGlvbnMgb2YgaW5kZXggY29sdW1u cyAqLwotCU9pZAkJICAgKm9wZmFtaWx5OwkJLyogT0lEcyBvZiBvcGVyYXRvciBmYW1pbGll cyBmb3IgY29sdW1ucyAqLwotCU9pZAkJICAgKm9wY2ludHlwZTsJCS8qIE9JRHMgb2Ygb3Bj bGFzcyBkZWNsYXJlZCBpbnB1dCBkYXRhIHR5cGVzICovCi0JT2lkCQkgICAqc29ydG9wZmFt aWx5OwkvKiBPSURzIG9mIGJ0cmVlIG9wZmFtaWxpZXMsIGlmIG9yZGVyYWJsZSAqLwotCWJv b2wJICAgKnJldmVyc2Vfc29ydDsJLyogaXMgc29ydCBvcmRlciBkZXNjZW5kaW5nPyAqLwot CWJvb2wJICAgKm51bGxzX2ZpcnN0OwkvKiBkbyBOVUxMcyBjb21lIGZpcnN0IGluIHRoZSBz b3J0IG9yZGVyPyAqLwotCWJ5dGVhCSAgKipvcGNsYXNzb3B0aW9uczsgLyogb3BjbGFzcy1z cGVjaWZpYyBvcHRpb25zIGZvciBjb2x1bW5zICovCi0JYm9vbAkgICAqY2FucmV0dXJuOwkJ Lyogd2hpY2ggaW5kZXggY29scyBjYW4gYmUgcmV0dXJuZWQgaW4gYW4KKwlPaWQJCSAgICpp bmRleGNvbGxhdGlvbnMgcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25vcmUpOwkvKiBPSURz IG9mIGNvbGxhdGlvbnMgb2YgaW5kZXggY29sdW1ucyAqLworCU9pZAkJICAgKm9wZmFtaWx5 IHBnX25vZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsJCS8qIE9JRHMgb2Ygb3BlcmF0b3Ig ZmFtaWxpZXMgZm9yIGNvbHVtbnMgKi8KKwlPaWQJCSAgICpvcGNpbnR5cGUgcGdfbm9kZV9h dHRyKHJlYWR3cml0ZV9pZ25vcmUpOwkJLyogT0lEcyBvZiBvcGNsYXNzIGRlY2xhcmVkIGlu cHV0IGRhdGEgdHlwZXMgKi8KKwlPaWQJCSAgICpzb3J0b3BmYW1pbHkgcGdfbm9kZV9hdHRy KHJlYWR3cml0ZV9pZ25vcmUpOwkvKiBPSURzIG9mIGJ0cmVlIG9wZmFtaWxpZXMsIGlmIG9y ZGVyYWJsZSAqLworCWJvb2wJICAgKnJldmVyc2Vfc29ydCBwZ19ub2RlX2F0dHIocmVhZHdy aXRlX2lnbm9yZSk7CS8qIGlzIHNvcnQgb3JkZXIgZGVzY2VuZGluZz8gKi8KKwlib29sCSAg ICpudWxsc19maXJzdCBwZ19ub2RlX2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CS8qIGRvIE5V TExzIGNvbWUgZmlyc3QgaW4gdGhlIHNvcnQgb3JkZXI/ICovCisJYnl0ZWEJICAqKm9wY2xh c3NvcHRpb25zIHBnX25vZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsgLyogb3BjbGFzcy1z cGVjaWZpYyBvcHRpb25zIGZvciBjb2x1bW5zICovCisJYm9vbAkgICAqY2FucmV0dXJuIHBn X25vZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsJCS8qIHdoaWNoIGluZGV4IGNvbHMgY2Fu IGJlIHJldHVybmVkIGluIGFuCiAJCQkJCQkJCSAqIGluZGV4LW9ubHkgc2Nhbj8gKi8KIAlP aWQJCQlyZWxhbTsJCQkvKiBPSUQgb2YgdGhlIGFjY2VzcyBtZXRob2QgKGluIHBnX2FtKSAq LwogCi0JTGlzdAkgICAqaW5kZXhwcnM7CQkvKiBleHByZXNzaW9ucyBmb3Igbm9uLXNpbXBs ZSBpbmRleCBjb2x1bW5zICovCisJTGlzdAkgICAqaW5kZXhwcnMgcGdfbm9kZV9hdHRyKHJl YWR3cml0ZV9pZ25vcmUpOwkJLyogZXhwcmVzc2lvbnMgZm9yIG5vbi1zaW1wbGUgaW5kZXgg Y29sdW1ucyAqLwogCUxpc3QJICAgKmluZHByZWQ7CQkvKiBwcmVkaWNhdGUgaWYgYSBwYXJ0 aWFsIGluZGV4LCBlbHNlIE5JTCAqLwogCiAJTGlzdAkgICAqaW5kZXh0bGlzdDsJCS8qIHRh cmdldGxpc3QgcmVwcmVzZW50aW5nIGluZGV4IGNvbHVtbnMgKi8KQEAgLTg2OSwxNCArODY5 LDE0IEBAIHN0cnVjdCBJbmRleE9wdEluZm8KIAlib29sCQloeXBvdGhldGljYWw7CS8qIHRy dWUgaWYgaW5kZXggZG9lc24ndCByZWFsbHkgZXhpc3QgKi8KIAogCS8qIFJlbWFpbmluZyBm aWVsZHMgYXJlIGNvcGllZCBmcm9tIHRoZSBpbmRleCBBTSdzIEFQSSBzdHJ1Y3Q6ICovCi0J Ym9vbAkJYW1jYW5vcmRlcmJ5b3A7IC8qIGRvZXMgQU0gc3VwcG9ydCBvcmRlciBieSBvcGVy YXRvciByZXN1bHQ/ICovCi0JYm9vbAkJYW1vcHRpb25hbGtleTsJLyogY2FuIHF1ZXJ5IG9t aXQga2V5IGZvciB0aGUgZmlyc3QgY29sdW1uPyAqLwotCWJvb2wJCWFtc2VhcmNoYXJyYXk7 CS8qIGNhbiBBTSBoYW5kbGUgU2NhbGFyQXJyYXlPcEV4cHIgcXVhbHM/ICovCi0JYm9vbAkJ YW1zZWFyY2hudWxsczsJLyogY2FuIEFNIHNlYXJjaCBmb3IgTlVMTC9OT1QgTlVMTCBlbnRy aWVzPyAqLwotCWJvb2wJCWFtaGFzZ2V0dHVwbGU7CS8qIGRvZXMgQU0gaGF2ZSBhbWdldHR1 cGxlIGludGVyZmFjZT8gKi8KLQlib29sCQlhbWhhc2dldGJpdG1hcDsgLyogZG9lcyBBTSBo YXZlIGFtZ2V0Yml0bWFwIGludGVyZmFjZT8gKi8KLQlib29sCQlhbWNhbnBhcmFsbGVsOwkv KiBkb2VzIEFNIHN1cHBvcnQgcGFyYWxsZWwgc2Nhbj8gKi8KLQlib29sCQlhbWNhbm1hcmtw b3M7CS8qIGRvZXMgQU0gc3VwcG9ydCBtYXJrL3Jlc3RvcmU/ICovCisJYm9vbAkJYW1jYW5v cmRlcmJ5b3AgcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25vcmUpOyAvKiBkb2VzIEFNIHN1 cHBvcnQgb3JkZXIgYnkgb3BlcmF0b3IgcmVzdWx0PyAqLworCWJvb2wJCWFtb3B0aW9uYWxr ZXkgcGdfbm9kZV9hdHRyKHJlYWR3cml0ZV9pZ25vcmUpOwkvKiBjYW4gcXVlcnkgb21pdCBr ZXkgZm9yIHRoZSBmaXJzdCBjb2x1bW4/ICovCisJYm9vbAkJYW1zZWFyY2hhcnJheSBwZ19u b2RlX2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CS8qIGNhbiBBTSBoYW5kbGUgU2NhbGFyQXJy YXlPcEV4cHIgcXVhbHM/ICovCisJYm9vbAkJYW1zZWFyY2hudWxscyBwZ19ub2RlX2F0dHIo cmVhZHdyaXRlX2lnbm9yZSk7CS8qIGNhbiBBTSBzZWFyY2ggZm9yIE5VTEwvTk9UIE5VTEwg ZW50cmllcz8gKi8KKwlib29sCQlhbWhhc2dldHR1cGxlIHBnX25vZGVfYXR0cihyZWFkd3Jp dGVfaWdub3JlKTsJLyogZG9lcyBBTSBoYXZlIGFtZ2V0dHVwbGUgaW50ZXJmYWNlPyAqLwor CWJvb2wJCWFtaGFzZ2V0Yml0bWFwIHBnX25vZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsg LyogZG9lcyBBTSBoYXZlIGFtZ2V0Yml0bWFwIGludGVyZmFjZT8gKi8KKwlib29sCQlhbWNh bnBhcmFsbGVsIHBnX25vZGVfYXR0cihyZWFkd3JpdGVfaWdub3JlKTsJLyogZG9lcyBBTSBz dXBwb3J0IHBhcmFsbGVsIHNjYW4/ICovCisJYm9vbAkJYW1jYW5tYXJrcG9zIHBnX25vZGVf YXR0cihyZWFkd3JpdGVfaWdub3JlKTsJLyogZG9lcyBBTSBzdXBwb3J0IG1hcmsvcmVzdG9y ZT8gKi8KIAkvKiBSYXRoZXIgdGhhbiBpbmNsdWRlIGFtYXBpLmggaGVyZSwgd2UgZGVjbGFy ZSBhbWNvc3Rlc3RpbWF0ZSBsaWtlIHRoaXMgKi8KIAl2b2lkCQkoKmFtY29zdGVzdGltYXRl KSAoKTsJLyogQU0ncyBjb3N0IGVzdGltYXRvciAqLwogfTsKQEAgLTkyNiw3ICs5MjYsNyBA QCB0eXBlZGVmIHN0cnVjdCBTdGF0aXN0aWNFeHRJbmZvCiAJTm9kZVRhZwkJdHlwZTsKIAog CU9pZAkJCXN0YXRPaWQ7CQkvKiBPSUQgb2YgdGhlIHN0YXRpc3RpY3Mgcm93ICovCi0JUmVs T3B0SW5mbyAqcmVsOwkJCS8qIGJhY2stbGluayB0byBzdGF0aXN0aWMncyB0YWJsZSAqLwor CVJlbE9wdEluZm8gKnJlbCBwZ19ub2RlX2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CQkJLyog YmFjay1saW5rIHRvIHN0YXRpc3RpYydzIHRhYmxlICovCiAJY2hhcgkJa2luZDsJCQkvKiBz dGF0aXN0aWNzIGtpbmQgb2YgdGhpcyBlbnRyeSAqLwogCUJpdG1hcHNldCAgKmtleXM7CQkJ LyogYXR0bnVtcyBvZiB0aGUgY29sdW1ucyBjb3ZlcmVkICovCiAJTGlzdAkgICAqZXhwcnM7 CQkJLyogZXhwcmVzc2lvbnMgKi8KQEAgLTExNzEsMTAgKzExNzEsMTAgQEAgdHlwZWRlZiBz dHJ1Y3QgUGF0aAogCiAJTm9kZVRhZwkJcGF0aHR5cGU7CQkvKiB0YWcgaWRlbnRpZnlpbmcg c2Nhbi9qb2luIG1ldGhvZCAqLwogCi0JUmVsT3B0SW5mbyAqcGFyZW50OwkJCS8qIHRoZSBy ZWxhdGlvbiB0aGlzIHBhdGggY2FuIGJ1aWxkICovCi0JUGF0aFRhcmdldCAqcGF0aHRhcmdl dDsJCS8qIGxpc3Qgb2YgVmFycy9FeHBycywgY29zdCwgd2lkdGggKi8KKwlSZWxPcHRJbmZv ICpwYXJlbnQgcGdfbm9kZV9hdHRyKHBhdGhfaGFjazEpOwkJCS8qIHRoZSByZWxhdGlvbiB0 aGlzIHBhdGggY2FuIGJ1aWxkICovCisJUGF0aFRhcmdldCAqcGF0aHRhcmdldCBwZ19ub2Rl X2F0dHIocGF0aF9oYWNrMik7CQkvKiBsaXN0IG9mIFZhcnMvRXhwcnMsIGNvc3QsIHdpZHRo ICovCiAKLQlQYXJhbVBhdGhJbmZvICpwYXJhbV9pbmZvOwkvKiBwYXJhbWV0ZXJpemF0aW9u IGluZm8sIG9yIE5VTEwgaWYgbm9uZSAqLworCVBhcmFtUGF0aEluZm8gKnBhcmFtX2luZm8g cGdfbm9kZV9hdHRyKHBhdGhfaGFjazMpOwkvKiBwYXJhbWV0ZXJpemF0aW9uIGluZm8sIG9y IE5VTEwgaWYgbm9uZSAqLwogCiAJYm9vbAkJcGFyYWxsZWxfYXdhcmU7IC8qIGVuZ2FnZSBw YXJhbGxlbC1hd2FyZSBsb2dpYz8gKi8KIAlib29sCQlwYXJhbGxlbF9zYWZlOwkvKiBPSyB0 byB1c2UgYXMgcGFydCBvZiBwYXJhbGxlbCBwbGFuPyAqLwpAQCAtMjA1MSwxOSArMjA1MSwx OSBAQCB0eXBlZGVmIHN0cnVjdCBSZXN0cmljdEluZm8KIAogCWJvb2wJCW91dGVyam9pbl9k ZWxheWVkOwkvKiB0cnVlIGlmIGRlbGF5ZWQgYnkgbG93ZXIgb3V0ZXIgam9pbiAqLwogCi0J Ym9vbAkJY2FuX2pvaW47CQkvKiBzZWUgY29tbWVudCBhYm92ZSAqLworCWJvb2wJCWNhbl9q b2luIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkJLyogc2VlIGNvbW1lbnQgYWJvdmUg Ki8KIAotCWJvb2wJCXBzZXVkb2NvbnN0YW50OyAvKiBzZWUgY29tbWVudCBhYm92ZSAqLwor CWJvb2wJCXBzZXVkb2NvbnN0YW50IHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOyAvKiBz ZWUgY29tbWVudCBhYm92ZSAqLwogCi0JYm9vbAkJbGVha3Byb29mOwkJLyogdHJ1ZSBpZiBr bm93biB0byBjb250YWluIG5vIGxlYWtlZCBWYXJzICovCisJYm9vbAkJbGVha3Byb29mIHBn X25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkJLyogdHJ1ZSBpZiBrbm93biB0byBjb250YWlu IG5vIGxlYWtlZCBWYXJzICovCiAKLQlWb2xhdGlsZUZ1bmN0aW9uU3RhdHVzIGhhc192b2xh dGlsZTsJLyogdG8gaW5kaWNhdGUgaWYgY2xhdXNlIGNvbnRhaW5zCisJVm9sYXRpbGVGdW5j dGlvblN0YXR1cyBoYXNfdm9sYXRpbGUgcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CS8q IHRvIGluZGljYXRlIGlmIGNsYXVzZSBjb250YWlucwogCQkJCQkJCQkJCQkgKiBhbnkgdm9s YXRpbGUgZnVuY3Rpb25zLiAqLwogCiAJSW5kZXgJCXNlY3VyaXR5X2xldmVsOyAvKiBzZWUg Y29tbWVudCBhYm92ZSAqLwogCiAJLyogVGhlIHNldCBvZiByZWxpZHMgKHZhcm5vcykgYWN0 dWFsbHkgcmVmZXJlbmNlZCBpbiB0aGUgY2xhdXNlOiAqLwotCVJlbGlkcwkJY2xhdXNlX3Jl bGlkczsKKwlSZWxpZHMJCWNsYXVzZV9yZWxpZHMgcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9y ZSk7CiAKIAkvKiBUaGUgc2V0IG9mIHJlbGlkcyByZXF1aXJlZCB0byBldmFsdWF0ZSB0aGUg Y2xhdXNlOiAqLwogCVJlbGlkcwkJcmVxdWlyZWRfcmVsaWRzOwpAQCAtMjA3NSw0NyArMjA3 NSw0NyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN0cmljdEluZm8KIAlSZWxpZHMJCW51bGxhYmxl X3JlbGlkczsKIAogCS8qIFRoZXNlIGZpZWxkcyBhcmUgc2V0IGZvciBhbnkgYmluYXJ5IG9w Y2xhdXNlOiAqLwotCVJlbGlkcwkJbGVmdF9yZWxpZHM7CS8qIHJlbGlkcyBpbiBsZWZ0IHNp ZGUgb2YgY2xhdXNlICovCi0JUmVsaWRzCQlyaWdodF9yZWxpZHM7CS8qIHJlbGlkcyBpbiBy aWdodCBzaWRlIG9mIGNsYXVzZSAqLworCVJlbGlkcwkJbGVmdF9yZWxpZHMgcGdfbm9kZV9h dHRyKGVxdWFsX2lnbm9yZSk7CS8qIHJlbGlkcyBpbiBsZWZ0IHNpZGUgb2YgY2xhdXNlICov CisJUmVsaWRzCQlyaWdodF9yZWxpZHMgcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CS8q IHJlbGlkcyBpbiByaWdodCBzaWRlIG9mIGNsYXVzZSAqLwogCiAJLyogVGhpcyBmaWVsZCBp cyBOVUxMIHVubGVzcyBjbGF1c2UgaXMgYW4gT1IgY2xhdXNlOiAqLwotCUV4cHIJICAgKm9y Y2xhdXNlOwkJLyogbW9kaWZpZWQgY2xhdXNlIHdpdGggUmVzdHJpY3RJbmZvcyAqLworCUV4 cHIJICAgKm9yY2xhdXNlIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkJLyogbW9kaWZp ZWQgY2xhdXNlIHdpdGggUmVzdHJpY3RJbmZvcyAqLwogCiAJLyogVGhpcyBmaWVsZCBpcyBO VUxMIHVubGVzcyBjbGF1c2UgaXMgcG90ZW50aWFsbHkgcmVkdW5kYW50OiAqLwotCUVxdWl2 YWxlbmNlQ2xhc3MgKnBhcmVudF9lYzsJLyogZ2VuZXJhdGluZyBFcXVpdmFsZW5jZUNsYXNz ICovCisJRXF1aXZhbGVuY2VDbGFzcyAqcGFyZW50X2VjIHBnX25vZGVfYXR0cihlcXVhbF9p Z25vcmUgcmVhZHdyaXRlX2lnbm9yZSk7CS8qIGdlbmVyYXRpbmcgRXF1aXZhbGVuY2VDbGFz cyAqLwogCiAJLyogY2FjaGUgc3BhY2UgZm9yIGNvc3QgYW5kIHNlbGVjdGl2aXR5ICovCi0J UXVhbENvc3QJZXZhbF9jb3N0OwkJLyogZXZhbCBjb3N0IG9mIGNsYXVzZTsgLTEgaWYgbm90 IHlldCBzZXQgKi8KLQlTZWxlY3Rpdml0eSBub3JtX3NlbGVjOwkJLyogc2VsZWN0aXZpdHkg Zm9yICJub3JtYWwiIChKT0lOX0lOTkVSKQorCVF1YWxDb3N0CWV2YWxfY29zdCBwZ19ub2Rl X2F0dHIoZXF1YWxfaWdub3JlKTsJCS8qIGV2YWwgY29zdCBvZiBjbGF1c2U7IC0xIGlmIG5v dCB5ZXQgc2V0ICovCisJU2VsZWN0aXZpdHkgbm9ybV9zZWxlYyBwZ19ub2RlX2F0dHIoZXF1 YWxfaWdub3JlKTsJCS8qIHNlbGVjdGl2aXR5IGZvciAibm9ybWFsIiAoSk9JTl9JTk5FUikK IAkJCQkJCQkJICogc2VtYW50aWNzOyAtMSBpZiBub3QgeWV0IHNldDsgPjEgbWVhbnMgYQog CQkJCQkJCQkgKiByZWR1bmRhbnQgY2xhdXNlICovCi0JU2VsZWN0aXZpdHkgb3V0ZXJfc2Vs ZWM7CS8qIHNlbGVjdGl2aXR5IGZvciBvdXRlciBqb2luIHNlbWFudGljczsgLTEgaWYKKwlT ZWxlY3Rpdml0eSBvdXRlcl9zZWxlYyBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJLyog c2VsZWN0aXZpdHkgZm9yIG91dGVyIGpvaW4gc2VtYW50aWNzOyAtMSBpZgogCQkJCQkJCQkg KiBub3QgeWV0IHNldCAqLwogCiAJLyogdmFsaWQgaWYgY2xhdXNlIGlzIG1lcmdlam9pbmFi bGUsIGVsc2UgTklMICovCi0JTGlzdAkgICAqbWVyZ2VvcGZhbWlsaWVzOwkvKiBvcGZhbWls aWVzIGNvbnRhaW5pbmcgY2xhdXNlIG9wZXJhdG9yICovCisJTGlzdAkgICAqbWVyZ2VvcGZh bWlsaWVzIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkvKiBvcGZhbWlsaWVzIGNvbnRh aW5pbmcgY2xhdXNlIG9wZXJhdG9yICovCiAKIAkvKiBjYWNoZSBzcGFjZSBmb3IgbWVyZ2Vj bGF1c2UgcHJvY2Vzc2luZzsgTlVMTCBpZiBub3QgeWV0IHNldCAqLwotCUVxdWl2YWxlbmNl Q2xhc3MgKmxlZnRfZWM7CS8qIEVxdWl2YWxlbmNlQ2xhc3MgY29udGFpbmluZyBsZWZ0aGFu ZCAqLwotCUVxdWl2YWxlbmNlQ2xhc3MgKnJpZ2h0X2VjOyAvKiBFcXVpdmFsZW5jZUNsYXNz IGNvbnRhaW5pbmcgcmlnaHRoYW5kICovCi0JRXF1aXZhbGVuY2VNZW1iZXIgKmxlZnRfZW07 IC8qIEVxdWl2YWxlbmNlTWVtYmVyIGZvciBsZWZ0aGFuZCAqLwotCUVxdWl2YWxlbmNlTWVt YmVyICpyaWdodF9lbTsJLyogRXF1aXZhbGVuY2VNZW1iZXIgZm9yIHJpZ2h0aGFuZCAqLwot CUxpc3QJICAgKnNjYW5zZWxfY2FjaGU7CS8qIGxpc3Qgb2YgTWVyZ2VTY2FuU2VsQ2FjaGUg c3RydWN0cyAqLworCUVxdWl2YWxlbmNlQ2xhc3MgKmxlZnRfZWMgcGdfbm9kZV9hdHRyKGVx dWFsX2lnbm9yZSByZWFkd3JpdGVfaWdub3JlKTsJLyogRXF1aXZhbGVuY2VDbGFzcyBjb250 YWluaW5nIGxlZnRoYW5kICovCisJRXF1aXZhbGVuY2VDbGFzcyAqcmlnaHRfZWMgcGdfbm9k ZV9hdHRyKGVxdWFsX2lnbm9yZSByZWFkd3JpdGVfaWdub3JlKTsgLyogRXF1aXZhbGVuY2VD bGFzcyBjb250YWluaW5nIHJpZ2h0aGFuZCAqLworCUVxdWl2YWxlbmNlTWVtYmVyICpsZWZ0 X2VtIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOyAvKiBFcXVpdmFsZW5jZU1lbWJlciBm b3IgbGVmdGhhbmQgKi8KKwlFcXVpdmFsZW5jZU1lbWJlciAqcmlnaHRfZW0gcGdfbm9kZV9h dHRyKGVxdWFsX2lnbm9yZSk7CS8qIEVxdWl2YWxlbmNlTWVtYmVyIGZvciByaWdodGhhbmQg Ki8KKwlMaXN0CSAgICpzY2Fuc2VsX2NhY2hlIHBnX25vZGVfYXR0cihjb3B5X2lnbm9yZSBl cXVhbF9pZ25vcmUpOwkvKiBsaXN0IG9mIE1lcmdlU2NhblNlbENhY2hlIHN0cnVjdHMgKi8K IAogCS8qIHRyYW5zaWVudCB3b3Jrc3BhY2UgZm9yIHVzZSB3aGlsZSBjb25zaWRlcmluZyBh IHNwZWNpZmljIGpvaW4gcGF0aCAqLwotCWJvb2wJCW91dGVyX2lzX2xlZnQ7CS8qIFQgPSBv dXRlciB2YXIgb24gbGVmdCwgRiA9IG9uIHJpZ2h0ICovCisJYm9vbAkJb3V0ZXJfaXNfbGVm dCBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJLyogVCA9IG91dGVyIHZhciBvbiBsZWZ0 LCBGID0gb24gcmlnaHQgKi8KIAogCS8qIHZhbGlkIGlmIGNsYXVzZSBpcyBoYXNoam9pbmFi bGUsIGVsc2UgSW52YWxpZE9pZDogKi8KLQlPaWQJCQloYXNoam9pbm9wZXJhdG9yOwkvKiBj b3B5IG9mIGNsYXVzZSBvcGVyYXRvciAqLworCU9pZAkJCWhhc2hqb2lub3BlcmF0b3IgcGdf bm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CS8qIGNvcHkgb2YgY2xhdXNlIG9wZXJhdG9yICov CiAKIAkvKiBjYWNoZSBzcGFjZSBmb3IgaGFzaGNsYXVzZSBwcm9jZXNzaW5nOyAtMSBpZiBu b3QgeWV0IHNldCAqLwotCVNlbGVjdGl2aXR5IGxlZnRfYnVja2V0c2l6ZTsJLyogYXZnIGJ1 Y2tldHNpemUgb2YgbGVmdCBzaWRlICovCi0JU2VsZWN0aXZpdHkgcmlnaHRfYnVja2V0c2l6 ZTsJLyogYXZnIGJ1Y2tldHNpemUgb2YgcmlnaHQgc2lkZSAqLwotCVNlbGVjdGl2aXR5IGxl ZnRfbWN2ZnJlcTsJLyogbGVmdCBzaWRlJ3MgbW9zdCBjb21tb24gdmFsJ3MgZnJlcSAqLwot CVNlbGVjdGl2aXR5IHJpZ2h0X21jdmZyZXE7CS8qIHJpZ2h0IHNpZGUncyBtb3N0IGNvbW1v biB2YWwncyBmcmVxICovCisJU2VsZWN0aXZpdHkgbGVmdF9idWNrZXRzaXplIHBnX25vZGVf YXR0cihlcXVhbF9pZ25vcmUpOwkvKiBhdmcgYnVja2V0c2l6ZSBvZiBsZWZ0IHNpZGUgKi8K KwlTZWxlY3Rpdml0eSByaWdodF9idWNrZXRzaXplIHBnX25vZGVfYXR0cihlcXVhbF9pZ25v cmUpOwkvKiBhdmcgYnVja2V0c2l6ZSBvZiByaWdodCBzaWRlICovCisJU2VsZWN0aXZpdHkg bGVmdF9tY3ZmcmVxIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkvKiBsZWZ0IHNpZGUn cyBtb3N0IGNvbW1vbiB2YWwncyBmcmVxICovCisJU2VsZWN0aXZpdHkgcmlnaHRfbWN2ZnJl cSBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJLyogcmlnaHQgc2lkZSdzIG1vc3QgY29t bW9uIHZhbCdzIGZyZXEgKi8KIAogCS8qIGhhc2ggZXF1YWxpdHkgb3BlcmF0b3IgdXNlZCBm b3IgcmVzdWx0IGNhY2hlLCBlbHNlIEludmFsaWRPaWQgKi8KLQlPaWQJCQloYXNoZXFvcGVy YXRvcjsKKwlPaWQJCQloYXNoZXFvcGVyYXRvciBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3Jl KTsKIH0gUmVzdHJpY3RJbmZvOwogCiAvKgpAQCAtMjE3MCw4ICsyMTcwLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgTWVyZ2VTY2FuU2VsQ2FjaGUKIHR5cGVkZWYgc3RydWN0IFBsYWNlSG9sZGVy VmFyCiB7CiAJRXhwcgkJeHByOwotCUV4cHIJICAgKnBoZXhwcjsJCQkvKiB0aGUgcmVwcmVz ZW50ZWQgZXhwcmVzc2lvbiAqLwotCVJlbGlkcwkJcGhyZWxzOwkJCS8qIGJhc2UgcmVsaWRz IHN5bnRhY3RpY2FsbHkgd2l0aGluIGV4cHIgc3JjICovCisJRXhwcgkgICAqcGhleHByIHBn X25vZGVfYXR0cihlcXVhbF9pZ25vcmUpOwkJCS8qIHRoZSByZXByZXNlbnRlZCBleHByZXNz aW9uICovCisJUmVsaWRzCQlwaHJlbHMgcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CQkJ LyogYmFzZSByZWxpZHMgc3ludGFjdGljYWxseSB3aXRoaW4gZXhwciBzcmMgKi8KIAlJbmRl eAkJcGhpZDsJCQkvKiBJRCBmb3IgUEhWICh1bmlxdWUgd2l0aGluIHBsYW5uZXIgcnVuKSAq LwogCUluZGV4CQlwaGxldmVsc3VwOwkJLyogPiAwIGlmIFBIViBiZWxvbmdzIHRvIG91dGVy IHF1ZXJ5ICovCiB9IFBsYWNlSG9sZGVyVmFyOwpAQCAtMjQyMCw3ICsyNDIwLDcgQEAgdHlw ZWRlZiBzdHJ1Y3QgTWluTWF4QWdnSW5mbwogCU9pZAkJCWFnZ2Zub2lkOwkJLyogcGdfcHJv YyBPaWQgb2YgdGhlIGFnZ3JlZ2F0ZSAqLwogCU9pZAkJCWFnZ3NvcnRvcDsJCS8qIE9pZCBv ZiBpdHMgc29ydCBvcGVyYXRvciAqLwogCUV4cHIJICAgKnRhcmdldDsJCQkvKiBleHByZXNz aW9uIHdlIGFyZSBhZ2dyZWdhdGluZyBvbiAqLwotCVBsYW5uZXJJbmZvICpzdWJyb290OwkJ LyogbW9kaWZpZWQgInJvb3QiIGZvciBwbGFubmluZyB0aGUgc3VicXVlcnkgKi8KKwlQbGFu bmVySW5mbyAqc3Vicm9vdCBwZ19ub2RlX2F0dHIocmVhZHdyaXRlX2lnbm9yZSk7CQkvKiBt b2RpZmllZCAicm9vdCIgZm9yIHBsYW5uaW5nIHRoZSBzdWJxdWVyeSAqLwogCVBhdGgJICAg KnBhdGg7CQkJLyogYWNjZXNzIHBhdGggZm9yIHN1YnF1ZXJ5ICovCiAJQ29zdAkJcGF0aGNv c3Q7CQkvKiBlc3RpbWF0ZWQgY29zdCB0byBmZXRjaCBmaXJzdCByb3cgKi8KIAlQYXJhbQkg ICAqcGFyYW07CQkJLyogcGFyYW0gZm9yIHN1YnBsYW4ncyBvdXRwdXQgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggMzQxOGUyMzg3My4uNjJmNjQxMzY4NCAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKQEAgLTYzLDcgKzYzLDcgQEAgdHlwZWRlZiBlbnVtIE9uQ29tbWl0QWN0 aW9uCiB0eXBlZGVmIHN0cnVjdCBSYW5nZVZhcgogewogCU5vZGVUYWcJCXR5cGU7Ci0JY2hh cgkgICAqY2F0YWxvZ25hbWU7CS8qIHRoZSBjYXRhbG9nIChkYXRhYmFzZSkgbmFtZSwgb3Ig TlVMTCAqLworCWNoYXIJICAgKmNhdGFsb2duYW1lIHBnX25vZGVfYXR0cihyZWFkd3JpdGVf aWdub3JlKTsJLyogdGhlIGNhdGFsb2cgKGRhdGFiYXNlKSBuYW1lLCBvciBOVUxMICovCiAJ Y2hhcgkgICAqc2NoZW1hbmFtZTsJCS8qIHRoZSBzY2hlbWEgbmFtZSwgb3IgTlVMTCAqLwog CWNoYXIJICAgKnJlbG5hbWU7CQkvKiB0aGUgcmVsYXRpb24vc2VxdWVuY2UgbmFtZSAqLwog CWJvb2wJCWluaDsJCQkvKiBleHBhbmQgcmVsIGJ5IGluaGVyaXRhbmNlPyByZWN1cnNpdmVs eSBhY3QKQEAgLTE5Niw4ICsxOTYsOCBAQCB0eXBlZGVmIHN0cnVjdCBWYXIKIAlJbmRleAkJ dmFybGV2ZWxzdXA7CS8qIGZvciBzdWJxdWVyeSB2YXJpYWJsZXMgcmVmZXJlbmNpbmcgb3V0 ZXIKIAkJCQkJCQkJICogcmVsYXRpb25zOyAwIGluIGEgbm9ybWFsIHZhciwgPjAgbWVhbnMg TgogCQkJCQkJCQkgKiBsZXZlbHMgdXAgKi8KLQlJbmRleAkJdmFybm9zeW47CQkvKiBzeW50 YWN0aWMgcmVsYXRpb24gaW5kZXggKDAgaWYgdW5rbm93bikgKi8KLQlBdHRyTnVtYmVyCXZh cmF0dG5vc3luOwkvKiBzeW50YWN0aWMgYXR0cmlidXRlIG51bWJlciAqLworCUluZGV4CQl2 YXJub3N5biBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJCS8qIHN5bnRhY3RpYyByZWxh dGlvbiBpbmRleCAoMCBpZiB1bmtub3duKSAqLworCUF0dHJOdW1iZXIJdmFyYXR0bm9zeW4g cGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CS8qIHN5bnRhY3RpYyBhdHRyaWJ1dGUgbnVt YmVyICovCiAJaW50CQkJbG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYg dW5rbm93biAqLwogfSBWYXI7CiAKQEAgLTMyNCw3ICszMjQsNyBAQCB0eXBlZGVmIHN0cnVj dCBBZ2dyZWYKIAlPaWQJCQlhZ2d0eXBlOwkJLyogdHlwZSBPaWQgb2YgcmVzdWx0IG9mIHRo ZSBhZ2dyZWdhdGUgKi8KIAlPaWQJCQlhZ2djb2xsaWQ7CQkvKiBPSUQgb2YgY29sbGF0aW9u IG9mIHJlc3VsdCAqLwogCU9pZAkJCWlucHV0Y29sbGlkOwkvKiBPSUQgb2YgY29sbGF0aW9u IHRoYXQgZnVuY3Rpb24gc2hvdWxkIHVzZSAqLwotCU9pZAkJCWFnZ3RyYW5zdHlwZTsJLyog dHlwZSBPaWQgb2YgYWdncmVnYXRlJ3MgdHJhbnNpdGlvbiB2YWx1ZSAqLworCU9pZAkJCWFn Z3RyYW5zdHlwZSBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJLyogdHlwZSBPaWQgb2Yg YWdncmVnYXRlJ3MgdHJhbnNpdGlvbiB2YWx1ZSAqLwogCUxpc3QJICAgKmFnZ2FyZ3R5cGVz OwkvKiB0eXBlIE9pZHMgb2YgZGlyZWN0IGFuZCBhZ2dyZWdhdGVkIGFyZ3MgKi8KIAlMaXN0 CSAgICphZ2dkaXJlY3RhcmdzOwkvKiBkaXJlY3QgYXJndW1lbnRzLCBpZiBhbiBvcmRlcmVk LXNldCBhZ2cgKi8KIAlMaXN0CSAgICphcmdzOwkJCS8qIGFnZ3JlZ2F0ZWQgYXJndW1lbnRz IGFuZCBzb3J0IGV4cHJlc3Npb25zICovCkBAIC0zNzEsOCArMzcxLDggQEAgdHlwZWRlZiBz dHJ1Y3QgR3JvdXBpbmdGdW5jCiAJRXhwcgkJeHByOwogCUxpc3QJICAgKmFyZ3M7CQkJLyog YXJndW1lbnRzLCBub3QgZXZhbHVhdGVkIGJ1dCBrZXB0IGZvcgogCQkJCQkJCQkgKiBiZW5l Zml0IG9mIEVYUExBSU4gZXRjLiAqLwotCUxpc3QJICAgKnJlZnM7CQkJLyogcmVzc29ydGdy b3VwcmVmcyBvZiBhcmd1bWVudHMgKi8KLQlMaXN0CSAgICpjb2xzOwkJCS8qIGFjdHVhbCBj b2x1bW4gcG9zaXRpb25zIHNldCBieSBwbGFubmVyICovCisJTGlzdAkgICAqcmVmcyBwZ19u b2RlX2F0dHIoZXF1YWxfaWdub3JlKTsJCQkvKiByZXNzb3J0Z3JvdXByZWZzIG9mIGFyZ3Vt ZW50cyAqLworCUxpc3QJICAgKmNvbHMgcGdfbm9kZV9hdHRyKGVxdWFsX2lnbm9yZSk7CQkJ LyogYWN0dWFsIGNvbHVtbiBwb3NpdGlvbnMgc2V0IGJ5IHBsYW5uZXIgKi8KIAlJbmRleAkJ YWdnbGV2ZWxzdXA7CS8qIHNhbWUgYXMgQWdncmVmLmFnZ2xldmVsc3VwICovCiAJaW50CQkJ bG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiAqLwogfSBHcm91cGluZ0Z1bmM7CkBAIC01 NDAsNyArNTQwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgT3BFeHByCiB7CiAJRXhwcgkJeHByOwog CU9pZAkJCW9wbm87CQkJLyogUEdfT1BFUkFUT1IgT0lEIG9mIHRoZSBvcGVyYXRvciAqLwot CU9pZAkJCW9wZnVuY2lkOwkJLyogUEdfUFJPQyBPSUQgb2YgdW5kZXJseWluZyBmdW5jdGlv biAqLworCU9pZAkJCW9wZnVuY2lkIHBnX25vZGVfYXR0cihlcXVhbF9pZ25vcmVfaWZfemVy byk7CQkvKiBQR19QUk9DIE9JRCBvZiB1bmRlcmx5aW5nIGZ1bmN0aW9uICovCiAJT2lkCQkJ b3ByZXN1bHR0eXBlOwkvKiBQR19UWVBFIE9JRCBvZiByZXN1bHQgdmFsdWUgKi8KIAlib29s CQlvcHJldHNldDsJCS8qIHRydWUgaWYgb3BlcmF0b3IgcmV0dXJucyBzZXQgKi8KIAlPaWQJ CQlvcGNvbGxpZDsJCS8qIE9JRCBvZiBjb2xsYXRpb24gb2YgcmVzdWx0ICovCkBAIC01ODks OCArNTg5LDggQEAgdHlwZWRlZiBzdHJ1Y3QgU2NhbGFyQXJyYXlPcEV4cHIKIHsKIAlFeHBy CQl4cHI7CiAJT2lkCQkJb3BubzsJCQkvKiBQR19PUEVSQVRPUiBPSUQgb2YgdGhlIG9wZXJh dG9yICovCi0JT2lkCQkJb3BmdW5jaWQ7CQkvKiBQR19QUk9DIE9JRCBvZiBjb21wYXJpc29u IGZ1bmN0aW9uICovCi0JT2lkCQkJaGFzaGZ1bmNpZDsJCS8qIFBHX1BST0MgT0lEIG9mIGhh c2ggZnVuYyBvciBJbnZhbGlkT2lkICovCisJT2lkCQkJb3BmdW5jaWQgcGdfbm9kZV9hdHRy KGVxdWFsX2lnbm9yZV9pZl96ZXJvKTsJCS8qIFBHX1BST0MgT0lEIG9mIGNvbXBhcmlzb24g ZnVuY3Rpb24gKi8KKwlPaWQJCQloYXNoZnVuY2lkIHBnX25vZGVfYXR0cihlcXVhbF9pZ25v cmVfaWZfemVybyk7CQkvKiBQR19QUk9DIE9JRCBvZiBoYXNoIGZ1bmMgb3IgSW52YWxpZE9p ZCAqLwogCWJvb2wJCXVzZU9yOwkJCS8qIHRydWUgZm9yIEFOWSwgZmFsc2UgZm9yIEFMTCAq LwogCU9pZAkJCWlucHV0Y29sbGlkOwkvKiBPSUQgb2YgY29sbGF0aW9uIHRoYXQgb3BlcmF0 b3Igc2hvdWxkIHVzZSAqLwogCUxpc3QJICAgKmFyZ3M7CQkJLyogdGhlIHNjYWxhciBhbmQg YXJyYXkgb3BlcmFuZHMgKi8KLS0gCjIuMzEuMQoK --------------27A7BC2CABCF3DC0280417D2 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="v1-0010-XXX-Debugging-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v1-0010-XXX-Debugging-support.patch" RnJvbSBiOWNkMWZkNTMwODljODMzZWZkMzljNzZjMGU0ODEzYTk3NGY5YTFlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogTW9uLCA3IEp1biAyMDIxIDE2OjA5OjI2ICswMjAwClN1YmplY3Q6 IFtQQVRDSCB2MSAxMC8xMF0gWFhYIERlYnVnZ2luZyBzdXBwb3J0CgotLS0KIHNyYy9pbmNs dWRlL3BnX2NvbmZpZ19tYW51YWwuaCB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5z ZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9w Z19jb25maWdfbWFudWFsLmggYi9zcmMvaW5jbHVkZS9wZ19jb25maWdfbWFudWFsLmgKaW5k ZXggMjdkYTg2ZTVlMC4uMWMxMTUyZmUxNCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGdf Y29uZmlnX21hbnVhbC5oCisrKyBiL3NyYy9pbmNsdWRlL3BnX2NvbmZpZ19tYW51YWwuaApA QCAtMzY1LDE0ICszNjUsMTQgQEAKICAqIGNvcHlPYmplY3QoKSwgdG8gZmFjaWxpdGF0ZSBj YXRjaGluZyBlcnJvcnMgYW5kIG9taXNzaW9ucyBpbgogICogY29weU9iamVjdCgpLgogICov Ci0vKiAjZGVmaW5lIENPUFlfUEFSU0VfUExBTl9UUkVFUyAqLworI2RlZmluZSBDT1BZX1BB UlNFX1BMQU5fVFJFRVMKIAogLyoKICAqIERlZmluZSB0aGlzIHRvIGZvcmNlIGFsbCBwYXJz ZSBhbmQgcGxhbiB0cmVlcyB0byBiZSBwYXNzZWQgdGhyb3VnaAogICogb3V0ZnVuY3MuYy9y ZWFkZnVuY3MuYywgdG8gZmFjaWxpdGF0ZSBjYXRjaGluZyBlcnJvcnMgYW5kIG9taXNzaW9u cyBpbgogICogdGhvc2UgbW9kdWxlcy4KICAqLwotLyogI2RlZmluZSBXUklURV9SRUFEX1BB UlNFX1BMQU5fVFJFRVMgKi8KKyNkZWZpbmUgV1JJVEVfUkVBRF9QQVJTRV9QTEFOX1RSRUVT CiAKIC8qCiAgKiBEZWZpbmUgdGhpcyB0byBmb3JjZSBhbGwgcmF3IHBhcnNlIHRyZWVzIGZv ciBETUwgc3RhdGVtZW50cyB0byBiZSBzY2FubmVkCi0tIAoyLjMxLjEKCg== --------------27A7BC2CABCF3DC0280417D2--