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 1mG0D7-0006gS-Kh for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Aug 2021 14:37:02 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1mG0D6-0008To-JD for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Aug 2021 14:37:00 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mG0D5-0008Tf-NB for pgsql-hackers@lists.postgresql.org; Tue, 17 Aug 2021 14:37:00 +0000 Received: from wout4-smtp.messagingengine.com ([64.147.123.20]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mG0D0-0003q3-OY for pgsql-hackers@postgresql.org; Tue, 17 Aug 2021 14:36:59 +0000 Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailout.west.internal (Postfix) with ESMTP id 69E023200945 for ; Tue, 17 Aug 2021 10:36:50 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute3.internal (MEProxy); Tue, 17 Aug 2021 10:36:50 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=6gSlqU OtIUahXpg2Rq7ZMoLU40Mf3SyC3+UPu4hDsTE=; b=R+Argde5QNwd0ZEbIuwe0d IasUcFO8Ll6Zx8c3Ygl3W21EXg9fPLzEMkZS+So3jVHwk7RQ8kvxW52nRzbhNx8Y Q7OtvhQvabGxrrD7vOfmkRlbswv45hdoUglL+MUSI+7dOM+MYQu+hRe0/izhUk9p LOm5zA+4PKg4x8bBpRnV9sOYn4cWVYJ+AS2lAg5TT0vrqBBvwl7I5DO72I0gfewq GWNToIsCJ83sGC+xiPsXF33m0/+nxeBUvmd5r8fun0S/C4QWNGqWFbgu7JcfuDtt XW3b4P+h7vva/VtHPxTAgx1Tr3fqOFPqr3yXvMwebrVAymoi4nA0OaLqx8D/KOdQ == X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvtddrleefgdejlecutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhepuffhvfhfkffffgggjggtsehmtderre dtfeejnecuhfhrohhmpefrvghtvghrucfgihhsvghnthhrrghuthcuoehpvghtvghrrdgv ihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhmqeenucggtffrrghtth gvrhhnpeduveeigedutdekfeeftdelveelhfeuvdffvdfhkeefieetveeuffeujeekgeel hfenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehpvg htvghrrdgvihhsvghnthhrrghuthesvghnthgvrhhprhhishgvuggsrdgtohhm X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA for ; Tue, 17 Aug 2021 10:36:48 -0400 (EDT) Subject: Re: automatically generating node support functions From: Peter Eisentraut To: pgsql-hackers References: <2f876203-7142-fa71-6d22-6ce00eb26869@enterprisedb.com> Message-ID: Date: Tue, 17 Aug 2021 16:36:45 +0200 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:78.0) Gecko/20100101 Thunderbird/78.12.0 MIME-Version: 1.0 In-Reply-To: <2f876203-7142-fa71-6d22-6ce00eb26869@enterprisedb.com> Content-Type: multipart/mixed; boundary="------------F3891D7246D98D636A1B32C6" 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. --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Here is another set of preparatory patches that clean up various special cases and similar in the node support. 0001-Remove-T_Expr.patch Removes unneeded T_Expr. 0002-Add-COPY_ARRAY_FIELD-and-COMPARE_ARRAY_FIELD.patch 0003-Add-WRITE_INDEX_ARRAY.patch These add macros to handle a few cases that were previously hand-coded. 0004-Make-node-output-prefix-match-node-structure-name.patch Some nodes' output/read functions use a label that is slightly different from their node name, e.g., "NOTIFY" instead of "NOTIFYSTMT". This cleans that up so that an automated approach doesn't have to deal with these special cases. 0005-Add-Cardinality-typedef.patch Adds a typedef Cardinality for double fields that store an estimated row or other count. Works alongside Cost and Selectivity. This is useful because it appears that the serialization format for these float fields depends on their intent: Cardinality => %.0f, Cost => %.2f, Selectivity => %.4f. The only remaining exception is allvisfrac, which uses %.6f. Maybe that could also be a Selectivity, but I left it as is. I think this improves the clarity in this area. --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0001-Remove-T_Expr.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0001-Remove-T_Expr.patch" RnJvbSA0YTljYzg0ZDY2N2Y2NGJkY2RmZmIxZGY4Yzg5YzRlNzNiMDJjMWZiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAxNTo1MTo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMS81XSBSZW1vdmUgVF9FeHByCgpUaGlzIGlzIGFuIGFic3RyYWN0IG5vZGUg dGhhdCBzaG91bGRuJ3QgaGF2ZSBhIG5vZGUgdGFnIGRlZmluZWQuCi0tLQogc3JjL2luY2x1 ZGUvbm9kZXMvbm9kZXMuaCB8IDEgLQogMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkK CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvbm9kZXMuaAppbmRleCA2YTRkODJmMGE4Li41YWMxOTk2NzM4IDEwMDY0NAotLS0g YS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL25v ZGVzLmgKQEAgLTE1Myw3ICsxNTMsNiBAQCB0eXBlZGVmIGVudW0gTm9kZVRhZwogCVRfQWxp YXMsCiAJVF9SYW5nZVZhciwKIAlUX1RhYmxlRnVuYywKLQlUX0V4cHIsCiAJVF9WYXIsCiAJ VF9Db25zdCwKIAlUX1BhcmFtLAotLSAKMi4zMi4wCgo= --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0002-Add-COPY_ARRAY_FIELD-and-COMPARE_ARRAY_FIELD.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0002-Add-COPY_ARRAY_FIELD-and-COMPARE_ARRAY_FIELD.patch" RnJvbSBhNmYwZTkwMzEwNzFjZTY5NTE1M2ZlYTYwMGI1Y2IwN2E2NTA3ZTExIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAxNTo1MTo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMi81XSBBZGQgQ09QWV9BUlJBWV9GSUVMRCBhbmQgQ09NUEFSRV9BUlJBWV9G SUVMRAoKVGhlc2UgaGFuZGxlIG5vZGUgZmllbGRzIHRoYXQgYXJlIGlubGluZSBhcnJheXMg KGFzIG9wcG9zZWQgdG8KZHluYW1pY2FsbHkgYWxsb2NhdGVkIGFycmF5cyBoYW5kbGVkIGJ5 IENPUFlfUE9JTlRFUl9GSUVMRCBhbmQKQ09NUEFSRV9QT0lOVEVSX0ZJRUxEKS4gIFRoZXNl IGNhc2VzIHdlcmUgaGFuZC1jb2RlZCB1bnRpbCBub3cuCi0tLQogc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMgIHwgMTEgKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL25vZGVzL2Vx dWFsZnVuY3MuYyB8ICA3ICsrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCmluZGV4IDM4MjUx YzJiOGUuLjA1YzhjYTA4MGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlm dW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jCkBAIC01Myw2ICs1 MywxMCBAQAogI2RlZmluZSBDT1BZX1NUUklOR19GSUVMRChmbGRuYW1lKSBcCiAJKG5ld25v ZGUtPmZsZG5hbWUgPSBmcm9tLT5mbGRuYW1lID8gcHN0cmR1cChmcm9tLT5mbGRuYW1lKSA6 IChjaGFyICopIE5VTEwpCiAKKy8qIENvcHkgYSBmaWVsZCB0aGF0IGlzIGFuIGlubGluZSBh cnJheSAqLworI2RlZmluZSBDT1BZX0FSUkFZX0ZJRUxEKGZsZG5hbWUpIFwKKwltZW1jcHko bmV3bm9kZS0+ZmxkbmFtZSwgZnJvbS0+ZmxkbmFtZSwgc2l6ZW9mKG5ld25vZGUtPmZsZG5h bWUpKQorCiAvKiBDb3B5IGEgZmllbGQgdGhhdCBpcyBhIHBvaW50ZXIgdG8gYSBzaW1wbGUg cGFsbG9jJ2Qgb2JqZWN0IG9mIHNpemUgc3ogKi8KICNkZWZpbmUgQ09QWV9QT0lOVEVSX0ZJ RUxEKGZsZG5hbWUsIHN6KSBcCiAJZG8geyBcCkBAIC00OTMxLDEwICs0OTM1LDkgQEAgX2Nv cHlGb3JlaWduS2V5Q2FjaGVJbmZvKGNvbnN0IEZvcmVpZ25LZXlDYWNoZUluZm8gKmZyb20p CiAJQ09QWV9TQ0FMQVJfRklFTEQoY29ucmVsaWQpOwogCUNPUFlfU0NBTEFSX0ZJRUxEKGNv bmZyZWxpZCk7CiAJQ09QWV9TQ0FMQVJfRklFTEQobmtleXMpOwotCS8qIENPUFlfU0NBTEFS X0ZJRUxEIG1pZ2h0IHdvcmsgZm9yIHRoZXNlLCBidXQgbGV0J3Mgbm90IGFzc3VtZSB0aGF0 ICovCi0JbWVtY3B5KG5ld25vZGUtPmNvbmtleSwgZnJvbS0+Y29ua2V5LCBzaXplb2YobmV3 bm9kZS0+Y29ua2V5KSk7Ci0JbWVtY3B5KG5ld25vZGUtPmNvbmZrZXksIGZyb20tPmNvbmZr ZXksIHNpemVvZihuZXdub2RlLT5jb25ma2V5KSk7Ci0JbWVtY3B5KG5ld25vZGUtPmNvbnBm ZXFvcCwgZnJvbS0+Y29ucGZlcW9wLCBzaXplb2YobmV3bm9kZS0+Y29ucGZlcW9wKSk7CisJ Q09QWV9BUlJBWV9GSUVMRChjb25rZXkpOworCUNPUFlfQVJSQVlfRklFTEQoY29uZmtleSk7 CisJQ09QWV9BUlJBWV9GSUVMRChjb25wZmVxb3ApOwogCiAJcmV0dXJuIG5ld25vZGU7CiB9 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMgYi9zcmMvYmFj a2VuZC9ub2Rlcy9lcXVhbGZ1bmNzLmMKaW5kZXggOGExNzYyMDAwYy4uNmY2NTZmYWI5NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtNzQsNiArNzQsMTMgQEAKICNkZWZpbmUg ZXF1YWxzdHIoYSwgYikJXAogCSgoKGEpICE9IE5VTEwgJiYgKGIpICE9IE5VTEwpID8gKHN0 cmNtcChhLCBiKSA9PSAwKSA6IChhKSA9PSAoYikpCiAKKy8qIENvbXBhcmUgYSBmaWVsZCB0 aGF0IGlzIGFuIGlubGluZSBhcnJheSAqLworI2RlZmluZSBDT01QQVJFX0FSUkFZX0ZJRUxE KGZsZG5hbWUpIFwKKwlkbyB7IFwKKwkJaWYgKG1lbWNtcChhLT5mbGRuYW1lLCBiLT5mbGRu YW1lLCBzaXplb2YoYS0+ZmxkbmFtZSkpICE9IDApIFwKKwkJCXJldHVybiBmYWxzZTsgXAor CX0gd2hpbGUgKDApCisKIC8qIENvbXBhcmUgYSBmaWVsZCB0aGF0IGlzIGEgcG9pbnRlciB0 byBhIHNpbXBsZSBwYWxsb2MnZCBvYmplY3Qgb2Ygc2l6ZSBzeiAqLwogI2RlZmluZSBDT01Q QVJFX1BPSU5URVJfRklFTEQoZmxkbmFtZSwgc3opIFwKIAlkbyB7IFwKLS0gCjIuMzIuMAoK --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0003-Add-WRITE_INDEX_ARRAY.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0003-Add-WRITE_INDEX_ARRAY.patch" RnJvbSA3ZDFkN2Q2Njk3ZDAzYjBhNGFkM2JhYWYzN2YzMTUyNTJmMmI3MGM0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAxNTo1MTo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMy81XSBBZGQgV1JJVEVfSU5ERVhfQVJSQVkKCldlIGhhdmUgYSBmZXcgV1JJ VEVfe25hbWUgb2YgdHlwZX1fQVJSQVkgbWFjcm9zLCBidXQgdGhlIG9uZSBjYXNlCnVzaW5n IHRoZSBJbmRleCB0eXBlIHdhcyBoYW5kLWNvZGVkLiAgV3JhcCBpdCBpbnRvIGEgbWFjcm8g YXMgd2VsbC4KClRoaXMgYWxzbyBjaGFuZ2VzIHRoZSBiZWhhdmlvciBzbGlnaHRseTogQmVm b3JlLCB0aGUgZmllbGQgbmFtZSB3YXMKc2tpcHBlZCBpZiB0aGUgbGVuZ3RoIHdhcyB6ZXJv LiAgTm93IGl0IHByaW50cyB0aGUgZmllbGQgbmFtZSBldmVuIGluCnRoYXQgY2FzZS4gIFRo aXMgaXMgbW9yZSBjb25zaXN0ZW50IHdpdGggaG93IG90aGVyIGFycmF5IGZpZWxkcyBhcmUK aGFuZGxlZC4KLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIHwgMTYgKysrKysr KystLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jIGIvc3Jj L2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYwppbmRleCA4NzU2MWNiYjZmLi41MGVkNTliYjRh IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCisrKyBiL3NyYy9i YWNrZW5kL25vZGVzL291dGZ1bmNzLmMKQEAgLTEyNCw2ICsxMjQsMTMgQEAgc3RhdGljIHZv aWQgb3V0Q2hhcihTdHJpbmdJbmZvIHN0ciwgY2hhciBjKTsKIAkJCWFwcGVuZFN0cmluZ0lu Zm8oc3RyLCAiICV1Iiwgbm9kZS0+ZmxkbmFtZVtpXSk7IFwKIAl9IHdoaWxlKDApCiAKKyNk ZWZpbmUgV1JJVEVfSU5ERVhfQVJSQVkoZmxkbmFtZSwgbGVuKSBcCisJZG8geyBcCisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiIDoiIENwcEFzU3RyaW5nKGZsZG5hbWUpICIg Iik7IFwKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgXAorCQkJYXBwZW5kU3Ry aW5nSW5mbyhzdHIsICIgJXUiLCBub2RlLT5mbGRuYW1lW2ldKTsgXAorCX0gd2hpbGUoMCkK KwogI2RlZmluZSBXUklURV9JTlRfQVJSQVkoZmxkbmFtZSwgbGVuKSBcCiAJZG8geyBcCiAJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiIDoiIENwcEFzU3RyaW5nKGZsZG5hbWUp ICIgIik7IFwKQEAgLTI1MTAsMTQgKzI1MTcsNyBAQCBfb3V0UGF0aFRhcmdldChTdHJpbmdJ bmZvIHN0ciwgY29uc3QgUGF0aFRhcmdldCAqbm9kZSkKIAlXUklURV9OT0RFX1RZUEUoIlBB VEhUQVJHRVQiKTsKIAogCVdSSVRFX05PREVfRklFTEQoZXhwcnMpOwotCWlmIChub2RlLT5z b3J0Z3JvdXByZWZzKQotCXsKLQkJaW50CQkJaTsKLQotCQlhcHBlbmRTdHJpbmdJbmZvU3Ry aW5nKHN0ciwgIiA6c29ydGdyb3VwcmVmcyIpOwotCQlmb3IgKGkgPSAwOyBpIDwgbGlzdF9s ZW5ndGgobm9kZS0+ZXhwcnMpOyBpKyspCi0JCQlhcHBlbmRTdHJpbmdJbmZvKHN0ciwgIiAl dSIsIG5vZGUtPnNvcnRncm91cHJlZnNbaV0pOwotCX0KKwlXUklURV9JTkRFWF9BUlJBWShz b3J0Z3JvdXByZWZzLCBsaXN0X2xlbmd0aChub2RlLT5leHBycykpOwogCVdSSVRFX0ZMT0FU X0ZJRUxEKGNvc3Quc3RhcnR1cCwgIiUuMmYiKTsKIAlXUklURV9GTE9BVF9GSUVMRChjb3N0 LnBlcl90dXBsZSwgIiUuMmYiKTsKIAlXUklURV9JTlRfRklFTEQod2lkdGgpOwotLSAKMi4z Mi4wCgo= --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0004-Make-node-output-prefix-match-node-structure-name.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0004-Make-node-output-prefix-match-node-structure-name.patch" RnJvbSBhNjU3MzBmMjQ3NTNjNzU5Y2QxNGY4MjhhZWQ5ZDVhMzEzN2NkNTMxIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAxNTo1MTo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggNC81XSBNYWtlIG5vZGUgb3V0cHV0IHByZWZpeCBtYXRjaCBub2RlIHN0cnVj dHVyZSBuYW1lCgpJbiBtb3N0IGNhc2VzLCB0aGUgcHJlZml4IHN0cmluZyBpbiBhIG5vZGUg b3V0cHV0IGlzIHRoZSB1cHBlciBjYXNlIG9mCnRoZSBub2RlIHN0cnVjdHVyZSBuYW1lLCBl LmcuLCBNZXJnZUFwcGVuZCAtPiBNRVJHRUFQUEVORC4gIFRoZXJlIHdlcmUKYSBmZXcgZXhj ZXB0aW9ucyB0aGF0IGZvciBlaXRoZXIgbm8gYXBwYXJlbnQgcmVhc29uIG9yIHBlcmhhcHMg bWlub3IKYWVzdGhldGljIHJlYXNvbnMgZGV2aWF0ZWQgZnJvbSB0aGlzLiAgSW4gb3JkZXIg dG8gc2ltcGxpZnkgdGhpcyBhbmQKcGVyaGFwcyBhbGxvdyBhdXRvbWF0aWMgZ2VuZXJhdGlv biB3aXRob3V0IGhhdmluZyB0byBkZWFsIHdpdGgKZXhjZXB0aW9uIGNhc2VzLCBtYWtlIHRo ZW0gYWxsIG1hdGNoLgoKUmVndWxhcml6ZSBub2RlIHR5cGUgc2VyaWFsaXphdGlvbiBpbiBz b21lIGNhc2VzCi0tLQogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVuY3MuYyAgfCAyMiArKysr KysrKysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYyB8IDIy ICsrKysrKysrKysrLS0tLS0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9u cygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMv b3V0ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMKaW5kZXggNTBlZDU5 YmI0YS4uMDljZmNlMDViMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBAIC0xNDcyLDcgKzE0 NzIsNyBAQCBfb3V0Q29udmVydFJvd3R5cGVFeHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBD b252ZXJ0Um93dHlwZUV4cHIgKm5vZGUpCiBzdGF0aWMgdm9pZAogX291dENvbGxhdGVFeHBy KFN0cmluZ0luZm8gc3RyLCBjb25zdCBDb2xsYXRlRXhwciAqbm9kZSkKIHsKLQlXUklURV9O T0RFX1RZUEUoIkNPTExBVEUiKTsKKwlXUklURV9OT0RFX1RZUEUoIkNPTExBVEVFWFBSIik7 CiAKIAlXUklURV9OT0RFX0ZJRUxEKGFyZyk7CiAJV1JJVEVfT0lEX0ZJRUxEKGNvbGxPaWQp OwpAQCAtMTQ4Miw3ICsxNDgyLDcgQEAgX291dENvbGxhdGVFeHByKFN0cmluZ0luZm8gc3Ry LCBjb25zdCBDb2xsYXRlRXhwciAqbm9kZSkKIHN0YXRpYyB2b2lkCiBfb3V0Q2FzZUV4cHIo U3RyaW5nSW5mbyBzdHIsIGNvbnN0IENhc2VFeHByICpub2RlKQogewotCVdSSVRFX05PREVf VFlQRSgiQ0FTRSIpOworCVdSSVRFX05PREVfVFlQRSgiQ0FTRUVYUFIiKTsKIAogCVdSSVRF X09JRF9GSUVMRChjYXNldHlwZSk7CiAJV1JJVEVfT0lEX0ZJRUxEKGNhc2Vjb2xsaWQpOwpA QCAtMTQ5NSw3ICsxNDk1LDcgQEAgX291dENhc2VFeHByKFN0cmluZ0luZm8gc3RyLCBjb25z dCBDYXNlRXhwciAqbm9kZSkKIHN0YXRpYyB2b2lkCiBfb3V0Q2FzZVdoZW4oU3RyaW5nSW5m byBzdHIsIGNvbnN0IENhc2VXaGVuICpub2RlKQogewotCVdSSVRFX05PREVfVFlQRSgiV0hF TiIpOworCVdSSVRFX05PREVfVFlQRSgiQ0FTRVdIRU4iKTsKIAogCVdSSVRFX05PREVfRklF TEQoZXhwcik7CiAJV1JJVEVfTk9ERV9GSUVMRChyZXN1bHQpOwpAQCAtMTUxNSw3ICsxNTE1 LDcgQEAgX291dENhc2VUZXN0RXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ2FzZVRlc3RF eHByICpub2RlKQogc3RhdGljIHZvaWQKIF9vdXRBcnJheUV4cHIoU3RyaW5nSW5mbyBzdHIs IGNvbnN0IEFycmF5RXhwciAqbm9kZSkKIHsKLQlXUklURV9OT0RFX1RZUEUoIkFSUkFZIik7 CisJV1JJVEVfTk9ERV9UWVBFKCJBUlJBWUVYUFIiKTsKIAogCVdSSVRFX09JRF9GSUVMRChh cnJheV90eXBlaWQpOwogCVdSSVRFX09JRF9GSUVMRChhcnJheV9jb2xsaWQpOwpAQCAtMTUy OCw3ICsxNTI4LDcgQEAgX291dEFycmF5RXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQXJy YXlFeHByICpub2RlKQogc3RhdGljIHZvaWQKIF9vdXRSb3dFeHByKFN0cmluZ0luZm8gc3Ry LCBjb25zdCBSb3dFeHByICpub2RlKQogewotCVdSSVRFX05PREVfVFlQRSgiUk9XIik7CisJ V1JJVEVfTk9ERV9UWVBFKCJST1dFWFBSIik7CiAKIAlXUklURV9OT0RFX0ZJRUxEKGFyZ3Mp OwogCVdSSVRFX09JRF9GSUVMRChyb3dfdHlwZWlkKTsKQEAgLTE1NDAsNyArMTU0MCw3IEBA IF9vdXRSb3dFeHByKFN0cmluZ0luZm8gc3RyLCBjb25zdCBSb3dFeHByICpub2RlKQogc3Rh dGljIHZvaWQKIF9vdXRSb3dDb21wYXJlRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgUm93 Q29tcGFyZUV4cHIgKm5vZGUpCiB7Ci0JV1JJVEVfTk9ERV9UWVBFKCJST1dDT01QQVJFIik7 CisJV1JJVEVfTk9ERV9UWVBFKCJST1dDT01QQVJFRVhQUiIpOwogCiAJV1JJVEVfRU5VTV9G SUVMRChyY3R5cGUsIFJvd0NvbXBhcmVUeXBlKTsKIAlXUklURV9OT0RFX0ZJRUxEKG9wbm9z KTsKQEAgLTE1NTMsNyArMTU1Myw3IEBAIF9vdXRSb3dDb21wYXJlRXhwcihTdHJpbmdJbmZv IHN0ciwgY29uc3QgUm93Q29tcGFyZUV4cHIgKm5vZGUpCiBzdGF0aWMgdm9pZAogX291dENv YWxlc2NlRXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3QgQ29hbGVzY2VFeHByICpub2RlKQog ewotCVdSSVRFX05PREVfVFlQRSgiQ09BTEVTQ0UiKTsKKwlXUklURV9OT0RFX1RZUEUoIkNP QUxFU0NFRVhQUiIpOwogCiAJV1JJVEVfT0lEX0ZJRUxEKGNvYWxlc2NldHlwZSk7CiAJV1JJ VEVfT0lEX0ZJRUxEKGNvYWxlc2NlY29sbGlkKTsKQEAgLTE1NjQsNyArMTU2NCw3IEBAIF9v dXRDb2FsZXNjZUV4cHIoU3RyaW5nSW5mbyBzdHIsIGNvbnN0IENvYWxlc2NlRXhwciAqbm9k ZSkKIHN0YXRpYyB2b2lkCiBfb3V0TWluTWF4RXhwcihTdHJpbmdJbmZvIHN0ciwgY29uc3Qg TWluTWF4RXhwciAqbm9kZSkKIHsKLQlXUklURV9OT0RFX1RZUEUoIk1JTk1BWCIpOworCVdS SVRFX05PREVfVFlQRSgiTUlOTUFYRVhQUiIpOwogCiAJV1JJVEVfT0lEX0ZJRUxEKG1pbm1h eHR5cGUpOwogCVdSSVRFX09JRF9GSUVMRChtaW5tYXhjb2xsaWQpOwpAQCAtMjgwNyw3ICsy ODA3LDcgQEAgX291dEFsdGVyU3RhdHNTdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBBbHRl clN0YXRzU3RtdCAqbm9kZSkKIHN0YXRpYyB2b2lkCiBfb3V0Tm90aWZ5U3RtdChTdHJpbmdJ bmZvIHN0ciwgY29uc3QgTm90aWZ5U3RtdCAqbm9kZSkKIHsKLQlXUklURV9OT0RFX1RZUEUo Ik5PVElGWSIpOworCVdSSVRFX05PREVfVFlQRSgiTk9USUZZU1RNVCIpOwogCiAJV1JJVEVf U1RSSU5HX0ZJRUxEKGNvbmRpdGlvbm5hbWUpOwogCVdSSVRFX1NUUklOR19GSUVMRChwYXls b2FkKTsKQEAgLTI4MTYsNyArMjgxNiw3IEBAIF9vdXROb3RpZnlTdG10KFN0cmluZ0luZm8g c3RyLCBjb25zdCBOb3RpZnlTdG10ICpub2RlKQogc3RhdGljIHZvaWQKIF9vdXREZWNsYXJl Q3Vyc29yU3RtdChTdHJpbmdJbmZvIHN0ciwgY29uc3QgRGVjbGFyZUN1cnNvclN0bXQgKm5v ZGUpCiB7Ci0JV1JJVEVfTk9ERV9UWVBFKCJERUNMQVJFQ1VSU09SIik7CisJV1JJVEVfTk9E RV9UWVBFKCJERUNMQVJFQ1VSU09SU1RNVCIpOwogCiAJV1JJVEVfU1RSSU5HX0ZJRUxEKHBv cnRhbG5hbWUpOwogCVdSSVRFX0lOVF9GSUVMRChvcHRpb25zKTsKQEAgLTMyMzgsNyArMzIz OCw3IEBAIF9vdXRTZXRPcGVyYXRpb25TdG10KFN0cmluZ0luZm8gc3RyLCBjb25zdCBTZXRP cGVyYXRpb25TdG10ICpub2RlKQogc3RhdGljIHZvaWQKIF9vdXRSYW5nZVRibEVudHJ5KFN0 cmluZ0luZm8gc3RyLCBjb25zdCBSYW5nZVRibEVudHJ5ICpub2RlKQogewotCVdSSVRFX05P REVfVFlQRSgiUlRFIik7CisJV1JJVEVfTk9ERV9UWVBFKCJSQU5HRVRCTEVOVFJZIik7CiAK IAkvKiBwdXQgYWxpYXMgKyBlcmVmIGZpcnN0IHRvIG1ha2UgZHVtcCBtb3JlIGxlZ2libGUg Ki8KIAlXUklURV9OT0RFX0ZJRUxEKGFsaWFzKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L25vZGVzL3JlYWRmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKaW5k ZXggMGRkMWFkN2RmYy4uMDFhZWU4NWJkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9k ZXMvcmVhZGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMKQEAg LTI3OTUsMjMgKzI3OTUsMjMgQEAgcGFyc2VOb2RlU3RyaW5nKHZvaWQpCiAJCXJldHVybl92 YWx1ZSA9IF9yZWFkQXJyYXlDb2VyY2VFeHByKCk7CiAJZWxzZSBpZiAoTUFUQ0goIkNPTlZF UlRST1dUWVBFRVhQUiIsIDE4KSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRDb252ZXJ0Um93 dHlwZUV4cHIoKTsKLQllbHNlIGlmIChNQVRDSCgiQ09MTEFURSIsIDcpKQorCWVsc2UgaWYg KE1BVENIKCJDT0xMQVRFRVhQUiIsIDExKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRDb2xs YXRlRXhwcigpOwotCWVsc2UgaWYgKE1BVENIKCJDQVNFIiwgNCkpCisJZWxzZSBpZiAoTUFU Q0goIkNBU0VFWFBSIiwgOCkpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkQ2FzZUV4cHIoKTsK LQllbHNlIGlmIChNQVRDSCgiV0hFTiIsIDQpKQorCWVsc2UgaWYgKE1BVENIKCJDQVNFV0hF TiIsIDgpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZENhc2VXaGVuKCk7CiAJZWxzZSBpZiAo TUFUQ0goIkNBU0VURVNURVhQUiIsIDEyKSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRDYXNl VGVzdEV4cHIoKTsKLQllbHNlIGlmIChNQVRDSCgiQVJSQVkiLCA1KSkKKwllbHNlIGlmIChN QVRDSCgiQVJSQVlFWFBSIiwgOSkpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkQXJyYXlFeHBy KCk7Ci0JZWxzZSBpZiAoTUFUQ0goIlJPVyIsIDMpKQorCWVsc2UgaWYgKE1BVENIKCJST1dF WFBSIiwgNykpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkUm93RXhwcigpOwotCWVsc2UgaWYg KE1BVENIKCJST1dDT01QQVJFIiwgMTApKQorCWVsc2UgaWYgKE1BVENIKCJST1dDT01QQVJF RVhQUiIsIDE0KSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWRSb3dDb21wYXJlRXhwcigpOwot CWVsc2UgaWYgKE1BVENIKCJDT0FMRVNDRSIsIDgpKQorCWVsc2UgaWYgKE1BVENIKCJDT0FM RVNDRUVYUFIiLCAxMikpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkQ29hbGVzY2VFeHByKCk7 Ci0JZWxzZSBpZiAoTUFUQ0goIk1JTk1BWCIsIDYpKQorCWVsc2UgaWYgKE1BVENIKCJNSU5N QVhFWFBSIiwgMTApKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZE1pbk1heEV4cHIoKTsKIAll bHNlIGlmIChNQVRDSCgiU1FMVkFMVUVGVU5DVElPTiIsIDE2KSkKIAkJcmV0dXJuX3ZhbHVl ID0gX3JlYWRTUUxWYWx1ZUZ1bmN0aW9uKCk7CkBAIC0yODQ1LDE3ICsyODQ1LDE3IEBAIHBh cnNlTm9kZVN0cmluZyh2b2lkKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZE9uQ29uZmxpY3RF eHByKCk7CiAJZWxzZSBpZiAoTUFUQ0goIkFQUEVORFJFTElORk8iLCAxMykpCiAJCXJldHVy bl92YWx1ZSA9IF9yZWFkQXBwZW5kUmVsSW5mbygpOwotCWVsc2UgaWYgKE1BVENIKCJSVEUi LCAzKSkKKwllbHNlIGlmIChNQVRDSCgiUkFOR0VUQkxFTlRSWSIsIDEzKSkKIAkJcmV0dXJu X3ZhbHVlID0gX3JlYWRSYW5nZVRibEVudHJ5KCk7CiAJZWxzZSBpZiAoTUFUQ0goIlJBTkdF VEJMRlVOQ1RJT04iLCAxNikpCiAJCXJldHVybl92YWx1ZSA9IF9yZWFkUmFuZ2VUYmxGdW5j dGlvbigpOwogCWVsc2UgaWYgKE1BVENIKCJUQUJMRVNBTVBMRUNMQVVTRSIsIDE3KSkKIAkJ cmV0dXJuX3ZhbHVlID0gX3JlYWRUYWJsZVNhbXBsZUNsYXVzZSgpOwotCWVsc2UgaWYgKE1B VENIKCJOT1RJRlkiLCA2KSkKKwllbHNlIGlmIChNQVRDSCgiTk9USUZZU1RNVCIsIDEwKSkK IAkJcmV0dXJuX3ZhbHVlID0gX3JlYWROb3RpZnlTdG10KCk7CiAJZWxzZSBpZiAoTUFUQ0go IkRFRkVMRU0iLCA3KSkKIAkJcmV0dXJuX3ZhbHVlID0gX3JlYWREZWZFbGVtKCk7Ci0JZWxz ZSBpZiAoTUFUQ0goIkRFQ0xBUkVDVVJTT1IiLCAxMykpCisJZWxzZSBpZiAoTUFUQ0goIkRF Q0xBUkVDVVJTT1JTVE1UIiwgMTcpKQogCQlyZXR1cm5fdmFsdWUgPSBfcmVhZERlY2xhcmVD dXJzb3JTdG10KCk7CiAJZWxzZSBpZiAoTUFUQ0goIlBMQU5ORURTVE1UIiwgMTEpKQogCQly ZXR1cm5fdmFsdWUgPSBfcmVhZFBsYW5uZWRTdG10KCk7Ci0tIAoyLjMyLjAKCg== --------------F3891D7246D98D636A1B32C6 Content-Type: text/plain; charset=UTF-8; x-mac-type="0"; x-mac-creator="0"; name="0005-Add-Cardinality-typedef.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="0005-Add-Cardinality-typedef.patch" RnJvbSAxZTk0MTA0NmQxYmNiMDYyMmUzZTdkYWFkM2JlOTIzNDE4MWVlZWQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRlciBFaXNlbnRyYXV0IDxwZXRlckBlaXNlbnRy YXV0Lm9yZz4KRGF0ZTogVHVlLCAxNyBBdWcgMjAyMSAxNTo1MTo0NSArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggNS81XSBBZGQgQ2FyZGluYWxpdHkgdHlwZWRlZgoKU2ltaWxhciB0byBDb3N0 IGFuZCBTZWxlY3Rpdml0eSwgdGhpcyBpcyBqdXN0IGEgZG91YmxlLCB3aGljaCBjYW4gYmUK dXNlZCBpbiBwYXRoIGFuZCBwbGFuIG5vZGVzIHRvIGdpdmUgc29tZSBoaW50IGFib3V0IHRo ZSBtZWFuaW5nIG9mIGEKZmllbGQuCi0tLQogc3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaCAg ICAgfCAgMSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCB8IDQ2ICsrKysrKysr KysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCB8ICA0ICstLQogMyBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyNSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvbm9kZXMuaAppbmRleCA1YWMxOTk2NzM4Li5iNTE1N2VjNGM3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9ub2Rlcy5oCisrKyBiL3NyYy9pbmNs dWRlL25vZGVzL25vZGVzLmgKQEAgLTY2OSw2ICs2NjksNyBAQCBleHRlcm4gYm9vbCBlcXVh bChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKTsKICAqLwogdHlwZWRlZiBkb3VibGUg U2VsZWN0aXZpdHk7CQkvKiBmcmFjdGlvbiBvZiB0dXBsZXMgYSBxdWFsaWZpZXIgd2lsbCBw YXNzICovCiB0eXBlZGVmIGRvdWJsZSBDb3N0OwkJCS8qIGV4ZWN1dGlvbiBjb3N0IChpbiBw YWdlLWFjY2VzcyB1bml0cykgKi8KK3R5cGVkZWYgZG91YmxlIENhcmRpbmFsaXR5OwkJLyog KGVzdGltYXRlZCkgbnVtYmVyIG9mIHJvd3Mgb3Igb3RoZXIgaW50ZWdlciBjb3VudCAqLwog CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCmluZGV4IDZlMDY4ZjJjOGIuLmQ5ODBjN2Jh MDQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCkBAIC0zMzMsMTEgKzMzMywxMSBAQCBzdHJ1 Y3QgUGxhbm5lckluZm8KIAogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9jeHQ7CS8qIGNvbnRl eHQgaG9sZGluZyBQbGFubmVySW5mbyAqLwogCi0JZG91YmxlCQl0b3RhbF90YWJsZV9wYWdl czsJLyogIyBvZiBwYWdlcyBpbiBhbGwgbm9uLWR1bW15IHRhYmxlcyBvZgorCUNhcmRpbmFs aXR5CXRvdGFsX3RhYmxlX3BhZ2VzOwkvKiAjIG9mIHBhZ2VzIGluIGFsbCBub24tZHVtbXkg dGFibGVzIG9mCiAJCQkJCQkJCQkgKiBxdWVyeSAqLwogCi0JZG91YmxlCQl0dXBsZV9mcmFj dGlvbjsgLyogdHVwbGVfZnJhY3Rpb24gcGFzc2VkIHRvIHF1ZXJ5X3BsYW5uZXIgKi8KLQlk b3VibGUJCWxpbWl0X3R1cGxlczsJLyogbGltaXRfdHVwbGVzIHBhc3NlZCB0byBxdWVyeV9w bGFubmVyICovCisJU2VsZWN0aXZpdHkJdHVwbGVfZnJhY3Rpb247IC8qIHR1cGxlX2ZyYWN0 aW9uIHBhc3NlZCB0byBxdWVyeV9wbGFubmVyICovCisJQ2FyZGluYWxpdHkJbGltaXRfdHVw bGVzOwkvKiBsaW1pdF90dXBsZXMgcGFzc2VkIHRvIHF1ZXJ5X3BsYW5uZXIgKi8KIAogCUlu ZGV4CQlxdWFsX3NlY3VyaXR5X2xldmVsOwkvKiBtaW5pbXVtIHNlY3VyaXR5X2xldmVsIGZv ciBxdWFscyAqLwogCS8qIE5vdGU6IHF1YWxfc2VjdXJpdHlfbGV2ZWwgaXMgemVybyBpZiB0 aGVyZSBhcmUgbm8gc2VjdXJpdHlRdWFscyAqLwpAQCAtNjc2LDcgKzY3Niw3IEBAIHR5cGVk ZWYgc3RydWN0IFJlbE9wdEluZm8KIAlSZWxpZHMJCXJlbGlkczsJCQkvKiBzZXQgb2YgYmFz ZSByZWxpZHMgKHJhbmdldGFibGUgaW5kZXhlcykgKi8KIAogCS8qIHNpemUgZXN0aW1hdGVz IGdlbmVyYXRlZCBieSBwbGFubmVyICovCi0JZG91YmxlCQlyb3dzOwkJCS8qIGVzdGltYXRl ZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxlcyAqLworCUNhcmRpbmFsaXR5CXJvd3M7CQkJLyog ZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzICovCiAKIAkvKiBwZXItcmVsYXRp b24gcGxhbm5lciBjb250cm9sIGZsYWdzICovCiAJYm9vbAkJY29uc2lkZXJfc3RhcnR1cDsJ Lyoga2VlcCBjaGVhcC1zdGFydHVwLWNvc3QgcGF0aHM/ICovCkBAIC03MTMsNyArNzEzLDcg QEAgdHlwZWRlZiBzdHJ1Y3QgUmVsT3B0SW5mbwogCUxpc3QJICAgKmluZGV4bGlzdDsJCS8q IGxpc3Qgb2YgSW5kZXhPcHRJbmZvICovCiAJTGlzdAkgICAqc3RhdGxpc3Q7CQkvKiBsaXN0 IG9mIFN0YXRpc3RpY0V4dEluZm8gKi8KIAlCbG9ja051bWJlciBwYWdlczsJCQkvKiBzaXpl IGVzdGltYXRlcyBkZXJpdmVkIGZyb20gcGdfY2xhc3MgKi8KLQlkb3VibGUJCXR1cGxlczsK KwlDYXJkaW5hbGl0eQl0dXBsZXM7CiAJZG91YmxlCQlhbGx2aXNmcmFjOwogCUJpdG1hcHNl dCAgKmVjbGFzc19pbmRleGVzOyAvKiBJbmRleGVzIGluIFBsYW5uZXJJbmZvJ3MgZXFfY2xh c3NlcyBsaXN0IG9mCiAJCQkJCQkJCSAqIEVDcyB0aGF0IG1lbnRpb24gdGhpcyByZWwgKi8K QEAgLTgzNiw3ICs4MzYsNyBAQCBzdHJ1Y3QgSW5kZXhPcHRJbmZvCiAKIAkvKiBpbmRleC1z aXplIHN0YXRpc3RpY3MgKGZyb20gcGdfY2xhc3MgYW5kIGVsc2V3aGVyZSkgKi8KIAlCbG9j a051bWJlciBwYWdlczsJCQkvKiBudW1iZXIgb2YgZGlzayBwYWdlcyBpbiBpbmRleCAqLwot CWRvdWJsZQkJdHVwbGVzOwkJCS8qIG51bWJlciBvZiBpbmRleCB0dXBsZXMgaW4gaW5kZXgg Ki8KKwlDYXJkaW5hbGl0eQl0dXBsZXM7CQkJLyogbnVtYmVyIG9mIGluZGV4IHR1cGxlcyBp biBpbmRleCAqLwogCWludAkJCXRyZWVfaGVpZ2h0OwkvKiBpbmRleCB0cmVlIGhlaWdodCwg b3IgLTEgaWYgdW5rbm93biAqLwogCiAJLyogaW5kZXggZGVzY3JpcHRvciBpbmZvcm1hdGlv biAqLwpAQCAtMTEzNCw3ICsxMTM0LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFyYW1QYXRoSW5m bwogCU5vZGVUYWcJCXR5cGU7CiAKIAlSZWxpZHMJCXBwaV9yZXFfb3V0ZXI7CS8qIHJlbHMg c3VwcGx5aW5nIHBhcmFtZXRlcnMgdXNlZCBieSBwYXRoICovCi0JZG91YmxlCQlwcGlfcm93 czsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1cGxlcyAqLworCUNhcmRpbmFs aXR5CXBwaV9yb3dzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiByZXN1bHQgdHVwbGVzICov CiAJTGlzdAkgICAqcHBpX2NsYXVzZXM7CS8qIGpvaW4gY2xhdXNlcyBhdmFpbGFibGUgZnJv bSBvdXRlciByZWxzICovCiB9IFBhcmFtUGF0aEluZm87CiAKQEAgLTExODQsNyArMTE4NCw3 IEBAIHR5cGVkZWYgc3RydWN0IFBhdGgKIAlpbnQJCQlwYXJhbGxlbF93b3JrZXJzOwkvKiBk ZXNpcmVkICMgb2Ygd29ya2VyczsgMCA9IG5vdCBwYXJhbGxlbCAqLwogCiAJLyogZXN0aW1h dGVkIHNpemUvY29zdHMgZm9yIHBhdGggKHNlZSBjb3N0c2l6ZS5jIGZvciBtb3JlIGluZm8p ICovCi0JZG91YmxlCQlyb3dzOwkJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgcmVzdWx0IHR1 cGxlcyAqLworCUNhcmRpbmFsaXR5CXJvd3M7CQkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBy ZXN1bHQgdHVwbGVzICovCiAJQ29zdAkJc3RhcnR1cF9jb3N0OwkvKiBjb3N0IGV4cGVuZGVk IGJlZm9yZSBmZXRjaGluZyBhbnkgdHVwbGVzICovCiAJQ29zdAkJdG90YWxfY29zdDsJCS8q IHRvdGFsIGNvc3QgKGFzc3VtaW5nIGFsbCB0dXBsZXMgZmV0Y2hlZCkgKi8KIApAQCAtMTQ0 Nyw3ICsxNDQ3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQXBwZW5kUGF0aAogCUxpc3QJICAgKnN1 YnBhdGhzOwkJLyogbGlzdCBvZiBjb21wb25lbnQgUGF0aHMgKi8KIAkvKiBJbmRleCBvZiBm aXJzdCBwYXJ0aWFsIHBhdGggaW4gc3VicGF0aHM7IGxpc3RfbGVuZ3RoKHN1YnBhdGhzKSBp ZiBub25lICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wYXRoOwotCWRvdWJsZQkJbGltaXRf dHVwbGVzOwkvKiBoYXJkIGxpbWl0IG9uIG91dHB1dCB0dXBsZXMsIG9yIC0xICovCisJQ2Fy ZGluYWxpdHkJbGltaXRfdHVwbGVzOwkvKiBoYXJkIGxpbWl0IG9uIG91dHB1dCB0dXBsZXMs IG9yIC0xICovCiB9IEFwcGVuZFBhdGg7CiAKICNkZWZpbmUgSVNfRFVNTVlfQVBQRU5EKHAp IFwKQEAgLTE0NjksNyArMTQ2OSw3IEBAIHR5cGVkZWYgc3RydWN0IE1lcmdlQXBwZW5kUGF0 aAogewogCVBhdGgJCXBhdGg7CiAJTGlzdAkgICAqc3VicGF0aHM7CQkvKiBsaXN0IG9mIGNv bXBvbmVudCBQYXRocyAqLwotCWRvdWJsZQkJbGltaXRfdHVwbGVzOwkvKiBoYXJkIGxpbWl0 IG9uIG91dHB1dCB0dXBsZXMsIG9yIC0xICovCisJQ2FyZGluYWxpdHkJbGltaXRfdHVwbGVz OwkvKiBoYXJkIGxpbWl0IG9uIG91dHB1dCB0dXBsZXMsIG9yIC0xICovCiB9IE1lcmdlQXBw ZW5kUGF0aDsKIAogLyoKQEAgLTE1MTAsNyArMTUxMCw3IEBAIHR5cGVkZWYgc3RydWN0IE1l bW9pemVQYXRoCiAJTGlzdAkgICAqcGFyYW1fZXhwcnM7CS8qIGNhY2hlIGtleXMgKi8KIAli b29sCQlzaW5nbGVyb3c7CQkvKiB0cnVlIGlmIHRoZSBjYWNoZSBlbnRyeSBpcyB0byBiZSBt YXJrZWQgYXMKIAkJCQkJCQkJICogY29tcGxldGUgYWZ0ZXIgY2FjaGluZyB0aGUgZmlyc3Qg cmVjb3JkLiAqLwotCWRvdWJsZQkJY2FsbHM7CQkJLyogZXhwZWN0ZWQgbnVtYmVyIG9mIHJl c2NhbnMgKi8KKwlDYXJkaW5hbGl0eQljYWxsczsJCQkvKiBleHBlY3RlZCBudW1iZXIgb2Yg cmVzY2FucyAqLwogCXVpbnQzMgkJZXN0X2VudHJpZXM7CS8qIFRoZSBtYXhpbXVtIG51bWJl ciBvZiBlbnRyaWVzIHRoYXQgdGhlCiAJCQkJCQkJCSAqIHBsYW5uZXIgZXhwZWN0cyB3aWxs IGZpdCBpbiB0aGUgY2FjaGUsIG9yIDAKIAkJCQkJCQkJICogaWYgdW5rbm93biAqLwpAQCAt MTY2Miw3ICsxNjYyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgSGFzaFBhdGgKIAlKb2luUGF0aAlq cGF0aDsKIAlMaXN0CSAgICpwYXRoX2hhc2hjbGF1c2VzOwkvKiBqb2luIGNsYXVzZXMgdXNl ZCBmb3IgaGFzaGluZyAqLwogCWludAkJCW51bV9iYXRjaGVzOwkvKiBudW1iZXIgb2YgYmF0 Y2hlcyBleHBlY3RlZCAqLwotCWRvdWJsZQkJaW5uZXJfcm93c190b3RhbDsJLyogdG90YWwg aW5uZXIgcm93cyBleHBlY3RlZCAqLworCUNhcmRpbmFsaXR5CWlubmVyX3Jvd3NfdG90YWw7 CS8qIHRvdGFsIGlubmVyIHJvd3MgZXhwZWN0ZWQgKi8KIH0gSGFzaFBhdGg7CiAKIC8qCkBA IC0xNzY1LDcgKzE3NjUsNyBAQCB0eXBlZGVmIHN0cnVjdCBBZ2dQYXRoCiAJUGF0aAkgICAq c3VicGF0aDsJCS8qIHBhdGggcmVwcmVzZW50aW5nIGlucHV0IHNvdXJjZSAqLwogCUFnZ1N0 cmF0ZWd5IGFnZ3N0cmF0ZWd5OwkvKiBiYXNpYyBzdHJhdGVneSwgc2VlIG5vZGVzLmggKi8K IAlBZ2dTcGxpdAlhZ2dzcGxpdDsJCS8qIGFnZy1zcGxpdHRpbmcgbW9kZSwgc2VlIG5vZGVz LmggKi8KLQlkb3VibGUJCW51bUdyb3VwczsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgZ3Jv dXBzIGluIGlucHV0ICovCisJQ2FyZGluYWxpdHkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVk IG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KIAl1aW50NjQJCXRyYW5zaXRpb25TcGFj ZTsJLyogZm9yIHBhc3MtYnktcmVmIHRyYW5zaXRpb24gZGF0YSAqLwogCUxpc3QJICAgKmdy b3VwQ2xhdXNlOwkvKiBhIGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlJ3MgKi8KIAlMaXN0CSAg ICpxdWFsOwkJCS8qIHF1YWxzIChIQVZJTkcgcXVhbHMpLCBpZiBhbnkgKi8KQEAgLTE3Nzks NyArMTc3OSw3IEBAIHR5cGVkZWYgc3RydWN0IEdyb3VwaW5nU2V0RGF0YQogewogCU5vZGVU YWcJCXR5cGU7CiAJTGlzdAkgICAqc2V0OwkJCS8qIGdyb3VwaW5nIHNldCBhcyBsaXN0IG9m IHNvcnRncm91cHJlZnMgKi8KLQlkb3VibGUJCW51bUdyb3VwczsJCS8qIGVzdC4gbnVtYmVy IG9mIHJlc3VsdCBncm91cHMgKi8KKwlDYXJkaW5hbGl0eQludW1Hcm91cHM7CQkvKiBlc3Qu IG51bWJlciBvZiByZXN1bHQgZ3JvdXBzICovCiB9IEdyb3VwaW5nU2V0RGF0YTsKIAogdHlw ZWRlZiBzdHJ1Y3QgUm9sbHVwRGF0YQpAQCAtMTc4OCw3ICsxNzg4LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgUm9sbHVwRGF0YQogCUxpc3QJICAgKmdyb3VwQ2xhdXNlOwkvKiBhcHBsaWNhYmxl IHN1YnNldCBvZiBwYXJzZS0+Z3JvdXBDbGF1c2UgKi8KIAlMaXN0CSAgICpnc2V0czsJCQkv KiBsaXN0cyBvZiBpbnRlZ2VyIGluZGV4ZXMgaW50byBncm91cENsYXVzZSAqLwogCUxpc3QJ ICAgKmdzZXRzX2RhdGE7CQkvKiBsaXN0IG9mIEdyb3VwaW5nU2V0RGF0YSAqLwotCWRvdWJs ZQkJbnVtR3JvdXBzOwkJLyogZXN0LiBudW1iZXIgb2YgcmVzdWx0IGdyb3VwcyAqLworCUNh cmRpbmFsaXR5CW51bUdyb3VwczsJCS8qIGVzdC4gbnVtYmVyIG9mIHJlc3VsdCBncm91cHMg Ki8KIAlib29sCQloYXNoYWJsZTsJCS8qIGNhbiBiZSBoYXNoZWQgKi8KIAlib29sCQlpc19o YXNoZWQ7CQkvKiB0byBiZSBpbXBsZW1lbnRlZCBhcyBhIGhhc2hhZ2cgKi8KIH0gUm9sbHVw RGF0YTsKQEAgLTE4MzksNyArMTgzOSw3IEBAIHR5cGVkZWYgc3RydWN0IFNldE9wUGF0aAog CUxpc3QJICAgKmRpc3RpbmN0TGlzdDsJLyogU29ydEdyb3VwQ2xhdXNlcyBpZGVudGlmeWlu ZyB0YXJnZXQgY29scyAqLwogCUF0dHJOdW1iZXIJZmxhZ0NvbElkeDsJCS8qIHdoZXJlIGlz IHRoZSBmbGFnIGNvbHVtbiwgaWYgYW55ICovCiAJaW50CQkJZmlyc3RGbGFnOwkJLyogZmxh ZyB2YWx1ZSBmb3IgZmlyc3QgaW5wdXQgcmVsYXRpb24gKi8KLQlkb3VibGUJCW51bUdyb3Vw czsJCS8qIGVzdGltYXRlZCBudW1iZXIgb2YgZ3JvdXBzIGluIGlucHV0ICovCisJQ2FyZGlu YWxpdHkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVkIG51bWJlciBvZiBncm91cHMgaW4gaW5w dXQgKi8KIH0gU2V0T3BQYXRoOwogCiAvKgpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgUmVjdXJzaXZlVW5pb25QYXRoCiAJUGF0aAkgICAqcmlnaHRwYXRoOwogCUxp c3QJICAgKmRpc3RpbmN0TGlzdDsJLyogU29ydEdyb3VwQ2xhdXNlcyBpZGVudGlmeWluZyB0 YXJnZXQgY29scyAqLwogCWludAkJCXd0UGFyYW07CQkvKiBJRCBvZiBQYXJhbSByZXByZXNl bnRpbmcgd29yayB0YWJsZSAqLwotCWRvdWJsZQkJbnVtR3JvdXBzOwkJLyogZXN0aW1hdGVk IG51bWJlciBvZiBncm91cHMgaW4gaW5wdXQgKi8KKwlDYXJkaW5hbGl0eQludW1Hcm91cHM7 CQkvKiBlc3RpbWF0ZWQgbnVtYmVyIG9mIGdyb3VwcyBpbiBpbnB1dCAqLwogfSBSZWN1cnNp dmVVbmlvblBhdGg7CiAKIC8qCkBAIC0yNjA3LDcgKzI2MDcsNyBAQCB0eXBlZGVmIHN0cnVj dAogdHlwZWRlZiBzdHJ1Y3QKIHsKIAlib29sCQlsaW1pdF9uZWVkZWQ7Ci0JZG91YmxlCQls aW1pdF90dXBsZXM7CisJQ2FyZGluYWxpdHkJbGltaXRfdHVwbGVzOwogCWludDY0CQljb3Vu dF9lc3Q7CiAJaW50NjQJCW9mZnNldF9lc3Q7CiB9IEZpbmFsUGF0aEV4dHJhRGF0YTsKQEAg LTI2MzgsMTUgKzI2MzgsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgSm9pbkNvc3RXb3Jrc3BhY2UK IAlDb3N0CQlpbm5lcl9yZXNjYW5fcnVuX2Nvc3Q7CiAKIAkvKiBwcml2YXRlIGZvciBjb3N0 X21lcmdlam9pbiBjb2RlICovCi0JZG91YmxlCQlvdXRlcl9yb3dzOwotCWRvdWJsZQkJaW5u ZXJfcm93czsKLQlkb3VibGUJCW91dGVyX3NraXBfcm93czsKLQlkb3VibGUJCWlubmVyX3Nr aXBfcm93czsKKwlDYXJkaW5hbGl0eQlvdXRlcl9yb3dzOworCUNhcmRpbmFsaXR5CWlubmVy X3Jvd3M7CisJQ2FyZGluYWxpdHkJb3V0ZXJfc2tpcF9yb3dzOworCUNhcmRpbmFsaXR5CWlu bmVyX3NraXBfcm93czsKIAogCS8qIHByaXZhdGUgZm9yIGNvc3RfaGFzaGpvaW4gY29kZSAq LwogCWludAkJCW51bWJ1Y2tldHM7CiAJaW50CQkJbnVtYmF0Y2hlczsKLQlkb3VibGUJCWlu bmVyX3Jvd3NfdG90YWw7CisJQ2FyZGluYWxpdHkJaW5uZXJfcm93c190b3RhbDsKIH0gSm9p bkNvc3RXb3Jrc3BhY2U7CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9w bGFubm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGVjOWE4 YjBjODEuLjAxYTI0NmQ1MGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5u b2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC0xMjAsNyAr MTIwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbgogCS8qCiAJICogcGxhbm5lcidzIGVzdGlt YXRlIG9mIHJlc3VsdCBzaXplIG9mIHRoaXMgcGxhbiBzdGVwCiAJICovCi0JZG91YmxlCQlw bGFuX3Jvd3M7CQkvKiBudW1iZXIgb2Ygcm93cyBwbGFuIGlzIGV4cGVjdGVkIHRvIGVtaXQg Ki8KKwlDYXJkaW5hbGl0eQlwbGFuX3Jvd3M7CQkvKiBudW1iZXIgb2Ygcm93cyBwbGFuIGlz IGV4cGVjdGVkIHRvIGVtaXQgKi8KIAlpbnQJCQlwbGFuX3dpZHRoOwkJLyogYXZlcmFnZSBy b3cgd2lkdGggaW4gYnl0ZXMgKi8KIAogCS8qCkBAIC05NzYsNyArOTc2LDcgQEAgdHlwZWRl ZiBzdHJ1Y3QgSGFzaAogCUF0dHJOdW1iZXIJc2tld0NvbHVtbjsJCS8qIG91dGVyIGpvaW4g a2V5J3MgY29sdW1uICMsIG9yIHplcm8gKi8KIAlib29sCQlza2V3SW5oZXJpdDsJLyogaXMg b3V0ZXIgam9pbiByZWwgYW4gaW5oZXJpdGFuY2UgdHJlZT8gKi8KIAkvKiBhbGwgb3RoZXIg aW5mbyBpcyBpbiB0aGUgcGFyZW50IEhhc2hKb2luIG5vZGUgKi8KLQlkb3VibGUJCXJvd3Nf dG90YWw7CQkvKiBlc3RpbWF0ZSB0b3RhbCByb3dzIGlmIHBhcmFsbGVsX2F3YXJlICovCisJ Q2FyZGluYWxpdHkJcm93c190b3RhbDsJCS8qIGVzdGltYXRlIHRvdGFsIHJvd3MgaWYgcGFy YWxsZWxfYXdhcmUgKi8KIH0gSGFzaDsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQotLSAKMi4z Mi4wCgo= --------------F3891D7246D98D636A1B32C6--