Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcN6c-002VT0-VD for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 10:12:07 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rcN6b-003LdG-9m for pgsql-hackers@arkaria.postgresql.org; Tue, 20 Feb 2024 10:12:05 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rcN6a-003Ld8-QX for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 10:12:04 +0000 Received: from mail-178177.yeah.net ([123.58.178.177]) by magus.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rcN6V-008CJS-U0 for pgsql-hackers@lists.postgresql.org; Tue, 20 Feb 2024 10:12:04 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yeah.net; s=s110527; h=Content-Type:Message-ID:Date:MIME-Version:Subject: From; bh=ZRy5jeqyhM7CZwlpAlJ46e5v8kPSJeLzYI5qk95znHo=; b=IchWIKk j0OavhnSn3f8qDwY34ZluPMvZtwaOjUDVXPzHmMoYpRjggK/Yy78qd+gnGE5JrQZ bIDOrb1XebevnmGZyF0lmOqyPl55BiY9/evmLOcmLL+vWBqJYHiQkS5kDLW75Y/e N33vzemNhNSRSK5ypev7zIbVCS9Uw/L4FHh8= Received: from [IPV6:2408:8210:2410:aeb0:14d5:c781:675f:31e3] (unknown [2408:8210:2410:aeb0:14d5:c781:675f:31e3]) by smtp3 (Coremail) with SMTP id sVUQrAD3_+jretRlxm8oAA--.22668S2; Tue, 20 Feb 2024 18:11:56 +0800 (CST) Content-Type: multipart/mixed; boundary="------------aY3O03ZIN9HQgvJVYEyeE62A" Message-ID: Date: Tue, 20 Feb 2024 18:11:55 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Change the bool member of the Query structure to bits Content-Language: en-US From: Quan Zongliang To: pgsql-hackers@lists.postgresql.org References: In-Reply-To: X-CM-TRANSID: sVUQrAD3_+jretRlxm8oAA--.22668S2 X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUU8529EdanIXcx71UUUUU7v73 VFW2AGmfu7bjvjm3AaLaJ3UbIYCTnIWIevJa73UjIFyTuYvjxUzYFCUUUUU X-Originating-IP: [2408:8210:2410:aeb0:14d5:c781:675f:31e3] X-CM-SenderInfo: htxd06xrqjzxxdqjq5hhdkh0dhw/1tbiDgyKJFszYVL+GwAAsS 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. --------------aY3O03ZIN9HQgvJVYEyeE62A Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Sorry. I forgot to save a file. This is the latest. On 2024/2/20 18:07, Quan Zongliang wrote: > > The Query structure has an increasing number of bool attributes. This is > likely to increase in the future. And they have the same properties. > Wouldn't it be better to store them in bits? Common statements don't use > them, so they have little impact. This also saves memory space. > > -- > Quan Zongliang --------------aY3O03ZIN9HQgvJVYEyeE62A Content-Type: text/plain; charset=UTF-8; name="query-bits.patch" Content-Disposition: attachment; filename="query-bits.patch" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jIGIvY29u dHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKaW5kZXggMTQyZGNmYzk5NS4uYTI4 ZDYyNTE0NyAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMKKysrIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMKQEAgLTMzNDEs NyArMzM0MSw3IEBAIGVzdGltYXRlX3BhdGhfY29zdF9zaXplKFBsYW5uZXJJbmZvICpyb290 LAogCiAJCQkvKiBDb2xsZWN0IHN0YXRpc3RpY3MgYWJvdXQgYWdncmVnYXRlcyBmb3IgZXN0 aW1hdGluZyBjb3N0cy4gKi8KIAkJCU1lbVNldCgmYWdnY29zdHMsIDAsIHNpemVvZihBZ2dD bGF1c2VDb3N0cykpOwotCQkJaWYgKHJvb3QtPnBhcnNlLT5oYXNBZ2dzKQorCQkJaWYgKFF1 ZXJ5SGFzQWdncyhyb290LT5wYXJzZSkpCiAJCQl7CiAJCQkJZ2V0X2FnZ19jbGF1c2VfY29z dHMocm9vdCwgQUdHU1BMSVRfU0lNUExFLCAmYWdnY29zdHMpOwogCQkJfQpAQCAtNjc2Miw3 ICs2NzYyLDcgQEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAlDb3N0CQl0b3RhbF9jb3N0OwogCiAJLyog Tm90aGluZyB0byBiZSBkb25lLCBpZiB0aGVyZSBpcyBubyBncm91cGluZyBvciBhZ2dyZWdh dGlvbiByZXF1aXJlZC4gKi8KLQlpZiAoIXBhcnNlLT5ncm91cENsYXVzZSAmJiAhcGFyc2Ut Pmdyb3VwaW5nU2V0cyAmJiAhcGFyc2UtPmhhc0FnZ3MgJiYKKwlpZiAoIXBhcnNlLT5ncm91 cENsYXVzZSAmJiAhcGFyc2UtPmdyb3VwaW5nU2V0cyAmJiAhUXVlcnlIYXNBZ2dzKHBhcnNl KSAmJgogCQkhcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAkJcmV0dXJuOwogCkBAIC02ODU5LDcg KzY4NTksNyBAQCBhZGRfZm9yZWlnbl9vcmRlcmVkX3BhdGhzKFBsYW5uZXJJbmZvICpyb290 LCBSZWxPcHRJbmZvICppbnB1dF9yZWwsCiAJQXNzZXJ0KHBhcnNlLT5zb3J0Q2xhdXNlKTsK IAogCS8qIFdlIGRvbid0IHN1cHBvcnQgY2FzZXMgd2hlcmUgdGhlcmUgYXJlIGFueSBTUkZz IGluIHRoZSB0YXJnZXRsaXN0ICovCi0JaWYgKHBhcnNlLT5oYXNUYXJnZXRTUkZzKQorCWlm IChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2UpKQogCQlyZXR1cm47CiAKIAkvKiBTYXZlIHRo ZSBpbnB1dF9yZWwgYXMgb3V0ZXJyZWwgaW4gZnBpbmZvICovCkBAIC03MDA3LDcgKzcwMDcs NyBAQCBhZGRfZm9yZWlnbl9maW5hbF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0 SW5mbyAqaW5wdXRfcmVsLAogCQlyZXR1cm47CiAKIAkvKiBXZSBkb24ndCBzdXBwb3J0IGNh c2VzIHdoZXJlIHRoZXJlIGFyZSBhbnkgU1JGcyBpbiB0aGUgdGFyZ2V0bGlzdCAqLwotCWlm IChwYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHBhcnNl KSkKIAkJcmV0dXJuOwogCiAJLyogU2F2ZSB0aGUgaW5wdXRfcmVsIGFzIG91dGVycmVsIGlu IGZwaW5mbyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvdmlldy5jCmluZGV4IGRjZTg5OGM3NTEuLmUzMjhiZDky NDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZpZXcuYworKysgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92aWV3LmMKQEAgLTM5OCw3ICszOTgsNyBAQCBEZWZpbmVWaWV3 KFZpZXdTdG10ICpzdG10LCBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkgKiBEZWZpbmVR dWVyeVJld3JpdGUoKSwgYnV0IHRoYXQgZnVuY3Rpb24gd2lsbCBjb21wbGFpbiBhYm91dCBh IGJvZ3VzIE9OCiAJICogU0VMRUNUIHJ1bGUsIGFuZCB3ZSdkIHJhdGhlciB0aGUgbWVzc2Fn ZSBjb21wbGFpbiBhYm91dCBhIHZpZXcuCiAJICovCi0JaWYgKHZpZXdQYXJzZS0+aGFzTW9k aWZ5aW5nQ1RFKQorCWlmIChRdWVyeUhhc01vZGlmeWluZ0NURSh2aWV3UGFyc2UpKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9S VEVEKSwKIAkJCQkgZXJybXNnKCJ2aWV3cyBtdXN0IG5vdCBjb250YWluIGRhdGEtbW9kaWZ5 aW5nIHN0YXRlbWVudHMgaW4gV0lUSCIpKSk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5j CmluZGV4IDBmODExZmQyZmMuLmNkYzk0ZjA4MmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jCkBAIC00ODgsNyArNDg4LDcgQEAgaW5pdF9leGVjdXRpb25fc3RhdGUoTGlzdCAq cXVlcnlUcmVlX2xpc3QsCiAJCQkJLyogVXRpbGl0eSBjb21tYW5kcyByZXF1aXJlIG5vIHBs YW5uaW5nLiAqLwogCQkJCXN0bXQgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CiAJCQkJc3Rt dC0+Y29tbWFuZFR5cGUgPSBDTURfVVRJTElUWTsKLQkJCQlzdG10LT5jYW5TZXRUYWcgPSBx dWVyeVRyZWUtPmNhblNldFRhZzsKKwkJCQlzdG10LT5jYW5TZXRUYWcgPSBRdWVyeUNhblNl dFRhZyhxdWVyeVRyZWUpOwogCQkJCXN0bXQtPnV0aWxpdHlTdG10ID0gcXVlcnlUcmVlLT51 dGlsaXR5U3RtdDsKIAkJCQlzdG10LT5zdG10X2xvY2F0aW9uID0gcXVlcnlUcmVlLT5zdG10 X2xvY2F0aW9uOwogCQkJCXN0bXQtPnN0bXRfbGVuID0gcXVlcnlUcmVlLT5zdG10X2xlbjsK QEAgLTU0MCw3ICs1NDAsNyBAQCBpbml0X2V4ZWN1dGlvbl9zdGF0ZShMaXN0ICpxdWVyeVRy ZWVfbGlzdCwKIAkJCW5ld2VzLT5zdG10ID0gc3RtdDsKIAkJCW5ld2VzLT5xZCA9IE5VTEw7 CiAKLQkJCWlmIChxdWVyeVRyZWUtPmNhblNldFRhZykKKwkJCWlmIChRdWVyeUNhblNldFRh ZyhxdWVyeVRyZWUpKQogCQkJCWxhc3R0YWdlcyA9IG5ld2VzOwogCiAJCQlwcmV2ZXMgPSBu ZXdlczsKQEAgLTE2NTAsNyArMTY1MCw3IEBAIGNoZWNrX3NxbF9mbl9yZXR2YWwoTGlzdCAq cXVlcnlUcmVlTGlzdHMsCiAJCXsKIAkJCVF1ZXJ5CSAgICpxID0gbGZpcnN0X25vZGUoUXVl cnksIGxjMik7CiAKLQkJCWlmIChxLT5jYW5TZXRUYWcpCisJCQlpZiAoUXVlcnlDYW5TZXRU YWcocSkpCiAJCQl7CiAJCQkJcGFyc2UgPSBxOwogCQkJCXBhcnNlX2NlbGwgPSBsYzI7CkBA IC0xOTM0LDcgKzE5MzQsNyBAQCB0bGlzdF9jb2VyY2lvbl9maW5pc2hlZDoKIAkJbmV3cXVl cnkgPSBtYWtlTm9kZShRdWVyeSk7CiAJCW5ld3F1ZXJ5LT5jb21tYW5kVHlwZSA9IENNRF9T RUxFQ1Q7CiAJCW5ld3F1ZXJ5LT5xdWVyeVNvdXJjZSA9IHBhcnNlLT5xdWVyeVNvdXJjZTsK LQkJbmV3cXVlcnktPmNhblNldFRhZyA9IHRydWU7CisJCVF1ZXJ5U2V0RmxhZyhuZXdxdWVy eSwgQ0FOX1NFVF9UQUcpOwogCQluZXdxdWVyeS0+dGFyZ2V0TGlzdCA9IHVwcGVyX3RsaXN0 OwogCiAJCS8qIFdlIG5lZWQgYSBtb2RlcmF0ZWx5IHJlYWxpc3RpYyBjb2xuYW1lcyBsaXN0 IGZvciB0aGUgc3VicXVlcnkgUlRFICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGF0aC9hbGxwYXRocy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxs cGF0aHMuYwppbmRleCBkNDA0ZmJmMjYyLi5iZDM1OWZkNjM2IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jCisrKyBiL3NyYy9iYWNrZW5kL29w dGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTI1OTUsNyArMjU5NSw3IEBAIHNldF9zdWJx dWVyeV9wYXRobGlzdChQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsLAogCQkJ CQkgKiBzbyB0aGVuIGl0IG1pZ2h0IGJlIHVzZWZ1bCB0byB1c2UgZm9yIHRoZSBXaW5kb3dB Z2cncwogCQkJCQkgKiBydW5Db25kaXRpb24uCiAJCQkJCSAqLwotCQkJCQlpZiAoIXN1YnF1 ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAorCQkJCQlpZiAoIVF1ZXJ5SGFzV2luZG93RnVuY3Mo c3VicXVlcnkpIHx8CiAJCQkJCQljaGVja19hbmRfcHVzaF93aW5kb3dfcXVhbHMoc3VicXVl cnksIHJ0ZSwgcnRpLCBjbGF1c2UsCiAJCQkJCQkJCQkJCQkJJnJ1bl9jb25kX2F0dHJzKSkK IAkJCQkJewpAQCAtMjYzMyw3ICsyNjMzLDcgQEAgc2V0X3N1YnF1ZXJ5X3BhdGhsaXN0KFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpyZWwsCiAJICogd2UnZCBiZXR0ZXIgdGVs bCB0aGUgc3VicXVlcnkgdG8gcGxhbiBmb3IgZnVsbCByZXRyaWV2YWwuIChYWFggVGhpcwog CSAqIGNvdWxkIHByb2JhYmx5IGJlIG1hZGUgbW9yZSBpbnRlbGxpZ2VudCAuLi4pCiAJICov Ci0JaWYgKHBhcnNlLT5oYXNBZ2dzIHx8CisJaWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwK IAkJcGFyc2UtPmdyb3VwQ2xhdXNlIHx8CiAJCXBhcnNlLT5ncm91cGluZ1NldHMgfHwKIAkJ cm9vdC0+aGFzSGF2aW5nUXVhbCB8fApAQCAtMzYwNCw4ICszNjA0LDggQEAgc3VicXVlcnlf aXNfcHVzaGRvd25fc2FmZShRdWVyeSAqc3VicXVlcnksIFF1ZXJ5ICp0b3BxdWVyeSwKIAog CS8qIENoZWNrIHBvaW50cyAzLCA0LCBhbmQgNSAqLwogCWlmIChzdWJxdWVyeS0+ZGlzdGlu Y3RDbGF1c2UgfHwKLQkJc3VicXVlcnktPmhhc1dpbmRvd0Z1bmNzIHx8Ci0JCXN1YnF1ZXJ5 LT5oYXNUYXJnZXRTUkZzKQorCQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHN1YnF1ZXJ5KSB8fAor CQlRdWVyeUhhc1RhcmdldFNSRnMoc3VicXVlcnkpKQogCQlzYWZldHlJbmZvLT51bnNhZmVW b2xhdGlsZSA9IHRydWU7CiAKIAkvKgpAQCAtMzcyNiw3ICszNzI2LDcgQEAgY2hlY2tfb3V0 cHV0X2V4cHJlc3Npb25zKFF1ZXJ5ICpzdWJxdWVyeSwgcHVzaGRvd25fc2FmZXR5X2luZm8g KnNhZmV0eUluZm8pCiAJCQljb250aW51ZTsJCQkvKiBpZ25vcmUgcmVzanVuayBjb2x1bW5z ICovCiAKIAkJLyogRnVuY3Rpb25zIHJldHVybmluZyBzZXRzIGFyZSB1bnNhZmUgKHBvaW50 IDEpICovCi0JCWlmIChzdWJxdWVyeS0+aGFzVGFyZ2V0U1JGcyAmJgorCQlpZiAoUXVlcnlI YXNUYXJnZXRTUkZzKHN1YnF1ZXJ5KSAmJgogCQkJKHNhZmV0eUluZm8tPnVuc2FmZUZsYWdz W3RsZS0+cmVzbm9dICYKIAkJCSBVTlNBRkVfSEFTX1NFVF9GVU5DKSA9PSAwICYmCiAJCQll eHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICopIHRsZS0+ZXhwcikpCkBAIC0zNzQ1LDcg KzM3NDUsNyBAQCBjaGVja19vdXRwdXRfZXhwcmVzc2lvbnMoUXVlcnkgKnN1YnF1ZXJ5LCBw dXNoZG93bl9zYWZldHlfaW5mbyAqc2FmZXR5SW5mbykKIAkJfQogCiAJCS8qIElmIHN1YnF1 ZXJ5IHVzZXMgRElTVElOQ1QgT04sIGNoZWNrIHBvaW50IDMgKi8KLQkJaWYgKHN1YnF1ZXJ5 LT5oYXNEaXN0aW5jdE9uICYmCisJCWlmIChRdWVyeUhhc0Rpc3RpbmN0T24oc3VicXVlcnkp ICYmCiAJCQkoc2FmZXR5SW5mby0+dW5zYWZlRmxhZ3NbdGxlLT5yZXNub10gJgogCQkJIFVO U0FGRV9OT1RJTl9ESVNUSU5DVE9OX0NMQVVTRSkgPT0gMCAmJgogCQkJIXRhcmdldElzSW5T b3J0TGlzdCh0bGUsIEludmFsaWRPaWQsIHN1YnF1ZXJ5LT5kaXN0aW5jdENsYXVzZSkpCkBA IC0zNzU2LDcgKzM3NTYsNyBAQCBjaGVja19vdXRwdXRfZXhwcmVzc2lvbnMoUXVlcnkgKnN1 YnF1ZXJ5LCBwdXNoZG93bl9zYWZldHlfaW5mbyAqc2FmZXR5SW5mbykKIAkJfQogCiAJCS8q IElmIHN1YnF1ZXJ5IHVzZXMgd2luZG93IGZ1bmN0aW9ucywgY2hlY2sgcG9pbnQgNCAqLwot CQlpZiAoc3VicXVlcnktPmhhc1dpbmRvd0Z1bmNzICYmCisJCWlmIChRdWVyeUhhc1dpbmRv d0Z1bmNzKHN1YnF1ZXJ5KSAmJgogCQkJKHNhZmV0eUluZm8tPnVuc2FmZUZsYWdzW3RsZS0+ cmVzbm9dICYKIAkJCSBVTlNBRkVfTk9USU5fRElTVElOQ1RPTl9DTEFVU0UpID09IDAgJiYK IAkJCSF0YXJnZXRJc0luQWxsUGFydGl0aW9uTGlzdHModGxlLCBzdWJxdWVyeSkpCkBAIC0z OTg1LDE0ICszOTg1LDE0IEBAIHN1YnF1ZXJ5X3B1c2hfcXVhbChRdWVyeSAqc3VicXVlcnks IFJhbmdlVGJsRW50cnkgKnJ0ZSwgSW5kZXggcnRpLCBOb2RlICpxdWFsKQogCQlxdWFsID0g UmVwbGFjZVZhcnNGcm9tVGFyZ2V0TGlzdChxdWFsLCBydGksIDAsIHJ0ZSwKIAkJCQkJCQkJ CQkgc3VicXVlcnktPnRhcmdldExpc3QsCiAJCQkJCQkJCQkJIFJFUExBQ0VWQVJTX1JFUE9S VF9FUlJPUiwgMCwKLQkJCQkJCQkJCQkgJnN1YnF1ZXJ5LT5oYXNTdWJMaW5rcyk7CisJCQkJ CQkJCQkJICZzdWJxdWVyeS0+ZmxhZ3MpOwogCiAJCS8qCiAJCSAqIE5vdyBhdHRhY2ggdGhl IHF1YWwgdG8gdGhlIHByb3BlciBwbGFjZTogbm9ybWFsbHkgV0hFUkUsIGJ1dCBpZiB0aGUK IAkJICogc3VicXVlcnkgdXNlcyBncm91cGluZyBvciBhZ2dyZWdhdGlvbiwgcHV0IGl0IGlu IEhBVklORyAoc2luY2UgdGhlCiAJCSAqIHF1YWwgcmVhbGx5IHJlZmVycyB0byB0aGUgZ3Jv dXAtcmVzdWx0IHJvd3MpLgogCQkgKi8KLQkJaWYgKHN1YnF1ZXJ5LT5oYXNBZ2dzIHx8IHN1 YnF1ZXJ5LT5ncm91cENsYXVzZSB8fCBzdWJxdWVyeS0+Z3JvdXBpbmdTZXRzIHx8IHN1YnF1 ZXJ5LT5oYXZpbmdRdWFsKQorCQlpZiAoUXVlcnlIYXNBZ2dzKHN1YnF1ZXJ5KSB8fCBzdWJx dWVyeS0+Z3JvdXBDbGF1c2UgfHwgc3VicXVlcnktPmdyb3VwaW5nU2V0cyB8fCBzdWJxdWVy eS0+aGF2aW5nUXVhbCkKIAkJCXN1YnF1ZXJ5LT5oYXZpbmdRdWFsID0gbWFrZV9hbmRfcXVh bChzdWJxdWVyeS0+aGF2aW5nUXVhbCwgcXVhbCk7CiAJCWVsc2UKIAkJCXN1YnF1ZXJ5LT5q b2ludHJlZS0+cXVhbHMgPQpAQCAtNDA4Niw3ICs0MDg2LDcgQEAgcmVtb3ZlX3VudXNlZF9z dWJxdWVyeV9vdXRwdXRzKFF1ZXJ5ICpzdWJxdWVyeSwgUmVsT3B0SW5mbyAqcmVsLAogCSAq IElmIHN1YnF1ZXJ5IGhhcyByZWd1bGFyIERJU1RJTkNUIChub3QgRElTVElOQ1QgT04pLCB3 ZSdyZSB3YXN0aW5nIG91cgogCSAqIHRpbWU6IGFsbCBpdHMgb3V0cHV0IGNvbHVtbnMgbXVz dCBiZSB1c2VkIGluIHRoZSBkaXN0aW5jdENsYXVzZS4KIAkgKi8KLQlpZiAoc3VicXVlcnkt PmRpc3RpbmN0Q2xhdXNlICYmICFzdWJxdWVyeS0+aGFzRGlzdGluY3RPbikKKwlpZiAoc3Vi cXVlcnktPmRpc3RpbmN0Q2xhdXNlICYmICFRdWVyeUhhc0Rpc3RpbmN0T24oc3VicXVlcnkp KQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNDE0Nyw3ICs0MTQ3LDcgQEAgcmVtb3ZlX3VudXNl ZF9zdWJxdWVyeV9vdXRwdXRzKFF1ZXJ5ICpzdWJxdWVyeSwgUmVsT3B0SW5mbyAqcmVsLAog CQkgKiBJZiBpdCBjb250YWlucyBhIHNldC1yZXR1cm5pbmcgZnVuY3Rpb24sIHdlIGNhbid0 IHJlbW92ZSBpdCBzaW5jZQogCQkgKiB0aGF0IGNvdWxkIGNoYW5nZSB0aGUgbnVtYmVyIG9m IHJvd3MgcmV0dXJuZWQgYnkgdGhlIHN1YnF1ZXJ5LgogCQkgKi8KLQkJaWYgKHN1YnF1ZXJ5 LT5oYXNUYXJnZXRTUkZzICYmCisJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMoc3VicXVlcnkp ICYmCiAJCQlleHByZXNzaW9uX3JldHVybnNfc2V0KHRleHByKSkKIAkJCWNvbnRpbnVlOwog CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9hbmFseXplam9pbnMu YyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2FuYWx5emVqb2lucy5jCmluZGV4IGU0 OTRhY2Q1MWEuLjYxOGZlZDI1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2FuYWx5emVqb2lucy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L2FuYWx5emVqb2lucy5jCkBAIC0xMDEwLDE0ICsxMDEwLDE0IEBAIGJvb2wKIHF1ZXJ5X3N1 cHBvcnRzX2Rpc3RpbmN0bmVzcyhRdWVyeSAqcXVlcnkpCiB7CiAJLyogU1JGcyBicmVhayBk aXN0aW5jdG5lc3MgZXhjZXB0IHdpdGggRElTVElOQ1QsIHNlZSBiZWxvdyAqLwotCWlmIChx dWVyeS0+aGFzVGFyZ2V0U1JGcyAmJiBxdWVyeS0+ZGlzdGluY3RDbGF1c2UgPT0gTklMKQor CWlmIChRdWVyeUhhc1RhcmdldFNSRnMocXVlcnkpICYmIHF1ZXJ5LT5kaXN0aW5jdENsYXVz ZSA9PSBOSUwpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qIGNoZWNrIGZvciBmZWF0dXJlcyB3 ZSBjYW4gcHJvdmUgZGlzdGluY3RuZXNzIHdpdGggKi8KIAlpZiAocXVlcnktPmRpc3RpbmN0 Q2xhdXNlICE9IE5JTCB8fAogCQlxdWVyeS0+Z3JvdXBDbGF1c2UgIT0gTklMIHx8CiAJCXF1 ZXJ5LT5ncm91cGluZ1NldHMgIT0gTklMIHx8Ci0JCXF1ZXJ5LT5oYXNBZ2dzIHx8CisJCVF1 ZXJ5SGFzQWdncyhxdWVyeSkgfHwKIAkJcXVlcnktPmhhdmluZ1F1YWwgfHwKIAkJcXVlcnkt PnNldE9wZXJhdGlvbnMpCiAJCXJldHVybiB0cnVlOwpAQCAtMTA4MSw3ICsxMDgxLDcgQEAg cXVlcnlfaXNfZGlzdGluY3RfZm9yKFF1ZXJ5ICpxdWVyeSwgTGlzdCAqY29sbm9zLCBMaXN0 ICpvcGlkcykKIAkgKiBjb2x1bW5zLCBpdCB3b3VsZCBiZSBzYWZlIGJlY2F1c2UgdGhleSdk IGJlIGV4cGFuZGVkIGJlZm9yZSBncm91cGluZy4KIAkgKiBCdXQgaXQgZG9lc24ndCBjdXJy ZW50bHkgc2VlbSB3b3J0aCB0aGUgZWZmb3J0IHRvIGNoZWNrIGZvciB0aGF0LikKIAkgKi8K LQlpZiAocXVlcnktPmhhc1RhcmdldFNSRnMpCisJaWYgKFF1ZXJ5SGFzVGFyZ2V0U1JGcyhx dWVyeSkpCiAJCXJldHVybiBmYWxzZTsKIAogCS8qCkBAIC0xMTMxLDcgKzExMzEsNyBAQCBx dWVyeV9pc19kaXN0aW5jdF9mb3IoUXVlcnkgKnF1ZXJ5LCBMaXN0ICpjb2xub3MsIExpc3Qg Km9waWRzKQogCQkgKiBJZiB3ZSBoYXZlIG5vIEdST1VQIEJZLCBidXQgZG8gaGF2ZSBhZ2dy ZWdhdGVzIG9yIEhBVklORywgdGhlbiB0aGUKIAkJICogcmVzdWx0IGlzIGF0IG1vc3Qgb25l IHJvdyBzbyBpdCdzIHN1cmVseSB1bmlxdWUsIGZvciBhbnkgb3BlcmF0b3JzLgogCQkgKi8K LQkJaWYgKHF1ZXJ5LT5oYXNBZ2dzIHx8IHF1ZXJ5LT5oYXZpbmdRdWFsKQorCQlpZiAoUXVl cnlIYXNBZ2dzKHF1ZXJ5KSB8fCBxdWVyeS0+aGF2aW5nUXVhbCkKIAkJCXJldHVybiB0cnVl OwogCX0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFn Zy5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbmFnZy5jCmluZGV4IDcwMGMw YjdhYzcuLmZlNWRhYWEzMzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3BsYW5hZ2cuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFuYWdn LmMKQEAgLTg0LDcgKzg0LDcgQEAgcHJlcHJvY2Vzc19taW5tYXhfYWdncmVnYXRlcyhQbGFu bmVySW5mbyAqcm9vdCkKIAlBc3NlcnQocm9vdC0+bWlubWF4X2FnZ3MgPT0gTklMKTsKIAog CS8qIE5vdGhpbmcgdG8gZG8gaWYgcXVlcnkgaGFzIG5vIGFnZ3JlZ2F0ZXMgKi8KLQlpZiAo IXBhcnNlLT5oYXNBZ2dzKQorCWlmICghUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJcmV0dXJu OwogCiAJQXNzZXJ0KCFwYXJzZS0+c2V0T3BlcmF0aW9ucyk7CS8qIHNob3VsZG4ndCBnZXQg aGVyZSBpZiBhIHNldG9wICovCkBAIC05OCw3ICs5OCw3IEBAIHByZXByb2Nlc3NfbWlubWF4 X2FnZ3JlZ2F0ZXMoUGxhbm5lckluZm8gKnJvb3QpCiAJICogc28gdGhlcmUncyBub3QgbXVj aCBwb2ludCBpbiBvcHRpbWl6aW5nIE1JTi9NQVguCiAJICovCiAJaWYgKHBhcnNlLT5ncm91 cENsYXVzZSB8fCBsaXN0X2xlbmd0aChwYXJzZS0+Z3JvdXBpbmdTZXRzKSA+IDEgfHwKLQkJ cGFyc2UtPmhhc1dpbmRvd0Z1bmNzKQorCQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHBhcnNlKSkK IAkJcmV0dXJuOwogCiAJLyoKQEAgLTM3OSw4ICszNzksOCBAQCBidWlsZF9taW5tYXhfcGF0 aChQbGFubmVySW5mbyAqcm9vdCwgTWluTWF4QWdnSW5mbyAqbW1pbmZvLAogCXBhcnNlLT5o YXZpbmdRdWFsID0gTlVMTDsKIAlzdWJyb290LT5oYXNIYXZpbmdRdWFsID0gZmFsc2U7CiAJ cGFyc2UtPmRpc3RpbmN0Q2xhdXNlID0gTklMOwotCXBhcnNlLT5oYXNEaXN0aW5jdE9uID0g ZmFsc2U7Ci0JcGFyc2UtPmhhc0FnZ3MgPSBmYWxzZTsKKwlRdWVyeUNsZWFyRmxhZyhwYXJz ZSwgSEFTX0RJU1RJTkNUX09OKTsKKwlRdWVyeUNsZWFyRmxhZyhwYXJzZSwgSEFTX0FHR1Mp OwogCiAJLyogQnVpbGQgInRhcmdldCBJUyBOT1QgTlVMTCIgZXhwcmVzc2lvbiAqLwogCW50 ZXN0ID0gbWFrZU5vZGUoTnVsbFRlc3QpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IGJlNGUxODI4NjkuLmExODgzMjUwN2YgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysgYi9zcmMvYmFja2VuZC9vcHRp bWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTM0OCw3ICszNDgsNyBAQCBzdGFuZGFyZF9wbGFu bmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLCBpbnQgY3Vyc29y T3B0aW9ucywKIAlpZiAoKGN1cnNvck9wdGlvbnMgJiBDVVJTT1JfT1BUX1BBUkFMTEVMX09L KSAhPSAwICYmCiAJCUlzVW5kZXJQb3N0bWFzdGVyICYmCiAJCXBhcnNlLT5jb21tYW5kVHlw ZSA9PSBDTURfU0VMRUNUICYmCi0JCSFwYXJzZS0+aGFzTW9kaWZ5aW5nQ1RFICYmCisJCSFR dWVyeUhhc01vZGlmeWluZ0NURShwYXJzZSkgJiYKIAkJbWF4X3BhcmFsbGVsX3dvcmtlcnNf cGVyX2dhdGhlciA+IDAgJiYKIAkJIUlzUGFyYWxsZWxXb3JrZXIoKSkKIAl7CkBAIC01NDAs OCArNTQwLDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIg KnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVzdWx0LT5jb21tYW5kVHlw ZSA9IHBhcnNlLT5jb21tYW5kVHlwZTsKIAlyZXN1bHQtPnF1ZXJ5SWQgPSBwYXJzZS0+cXVl cnlJZDsKIAlyZXN1bHQtPmhhc1JldHVybmluZyA9IChwYXJzZS0+cmV0dXJuaW5nTGlzdCAh PSBOSUwpOwotCXJlc3VsdC0+aGFzTW9kaWZ5aW5nQ1RFID0gcGFyc2UtPmhhc01vZGlmeWlu Z0NURTsKLQlyZXN1bHQtPmNhblNldFRhZyA9IHBhcnNlLT5jYW5TZXRUYWc7CisJcmVzdWx0 LT5oYXNNb2RpZnlpbmdDVEUgPSBRdWVyeUhhc01vZGlmeWluZ0NURShwYXJzZSk7CisJcmVz dWx0LT5jYW5TZXRUYWcgPSBRdWVyeUNhblNldFRhZyhwYXJzZSk7CiAJcmVzdWx0LT50cmFu c2llbnRQbGFuID0gZ2xvYi0+dHJhbnNpZW50UGxhbjsKIAlyZXN1bHQtPmRlcGVuZHNPblJv bGUgPSBnbG9iLT5kZXBlbmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVk ID0gZ2xvYi0+cGFyYWxsZWxNb2RlTmVlZGVkOwpAQCAtNzA3LDcgKzcwNyw3IEBAIHN1YnF1 ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwgUXVlcnkgKnBhcnNlLAogCSAqIGlu dG8gc3VicXVlcmllczsgaWYgd2UgcHVsbCB1cCBhbnkgc3VicXVlcmllcyBiZWxvdywgdGhl aXIgU3ViTGlua3MgYXJlCiAJICogcHJvY2Vzc2VkIGp1c3QgYmVmb3JlIHB1bGxpbmcgdGhl bSB1cC4KIAkgKi8KLQlpZiAocGFyc2UtPmhhc1N1YkxpbmtzKQorCWlmIChRdWVyeUhhc1N1 YkxpbmtzKHBhcnNlKSkKIAkJcHVsbF91cF9zdWJsaW5rcyhyb290KTsKIAogCS8qCkBAIC04 MzQsOCArODM0LDEyIEBAIHN1YnF1ZXJ5X3BsYW5uZXIoUGxhbm5lckdsb2JhbCAqZ2xvYiwg UXVlcnkgKnBhcnNlLAogCQkJCQkJCSAgRVhQUktJTkRfVEFSR0VUKTsKIAogCS8qIENvbnN0 YW50LWZvbGRpbmcgbWlnaHQgaGF2ZSByZW1vdmVkIGFsbCBzZXQtcmV0dXJuaW5nIGZ1bmN0 aW9ucyAqLwotCWlmIChwYXJzZS0+aGFzVGFyZ2V0U1JGcykKLQkJcGFyc2UtPmhhc1Rhcmdl dFNSRnMgPSBleHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICopIHBhcnNlLT50YXJnZXRM aXN0KTsKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHBhcnNlKSkKKwl7CisJCVF1ZXJ5Q29u ZFNldEZsYWcocGFyc2UsCisJCQkJCWV4cHJlc3Npb25fcmV0dXJuc19zZXQoKE5vZGUgKikg cGFyc2UtPnRhcmdldExpc3QpLAorCQkJCQlIQVNfVEFSR0VUX1NSRlMpOworCX0KIAogCW5l d1dpdGhDaGVja09wdGlvbnMgPSBOSUw7CiAJZm9yZWFjaChsLCBwYXJzZS0+d2l0aENoZWNr T3B0aW9ucykKQEAgLTExODksNyArMTE5Myw3IEBAIHByZXByb2Nlc3NfZXhwcmVzc2lvbihQ bGFubmVySW5mbyAqcm9vdCwgTm9kZSAqZXhwciwgaW50IGtpbmQpCiAJfQogCiAJLyogRXhw YW5kIFN1YkxpbmtzIHRvIFN1YlBsYW5zICovCi0JaWYgKHJvb3QtPnBhcnNlLT5oYXNTdWJM aW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhyb290LT5wYXJzZSkpCiAJCWV4cHIgPSBT U19wcm9jZXNzX3N1YmxpbmtzKHJvb3QsIGV4cHIsIChraW5kID09IEVYUFJLSU5EX1FVQUwp KTsKIAogCS8qCkBAIC0xMzY4LDcgKzEzNzIsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5u ZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCQlpc19wYXJhbGxlbF9z YWZlKHJvb3QsIChOb2RlICopIGZpbmFsX3RhcmdldC0+ZXhwcnMpOwogCiAJCS8qIFRoZSBz ZXRvcCByZXN1bHQgdGxpc3QgY291bGRuJ3QgY29udGFpbiBhbnkgU1JGcyAqLwotCQlBc3Nl cnQoIXBhcnNlLT5oYXNUYXJnZXRTUkZzKTsKKwkJQXNzZXJ0KCFRdWVyeUhhc1RhcmdldFNS RnMocGFyc2UpKTsKIAkJZmluYWxfdGFyZ2V0cyA9IGZpbmFsX3RhcmdldHNfY29udGFpbl9z cmZzID0gTklMOwogCiAJCS8qCkBAIC0xNDQ2LDcgKzE0NTAsNyBAQCBncm91cGluZ19wbGFu bmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCSAqIHBh dGh0YXJnZXRzLCBlbHNlIHNvbWUgY29waWVzIG9mIHRoZSBBZ2dyZWYgbm9kZXMgbWlnaHQg ZXNjYXBlCiAJCSAqIGJlaW5nIG1hcmtlZC4KIAkJICovCi0JCWlmIChwYXJzZS0+aGFzQWdn cykKKwkJaWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkpCiAJCXsKIAkJCXByZXByb2Nlc3NfYWdn cmVmcyhyb290LCAoTm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QpOwogCQkJcHJlcHJv Y2Vzc19hZ2dyZWZzKHJvb3QsIChOb2RlICopIHBhcnNlLT5oYXZpbmdRdWFsKTsKQEAgLTE0 NTgsNyArMTQ2Miw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJICogdG9vLikgIE5vdGUgdGhhdCB0aGV5IGNvdWxk IGFsbCBoYXZlIGJlZW4gZWxpbWluYXRlZCBieSBjb25zdGFudAogCQkgKiBmb2xkaW5nLCBp biB3aGljaCBjYXNlIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IG1vcmUgd29yay4KIAkJICov Ci0JCWlmIChwYXJzZS0+aGFzV2luZG93RnVuY3MpCisJCWlmIChRdWVyeUhhc1dpbmRvd0Z1 bmNzKHBhcnNlKSkKIAkJewogCQkJd2ZsaXN0cyA9IGZpbmRfd2luZG93X2Z1bmN0aW9ucygo Tm9kZSAqKSByb290LT5wcm9jZXNzZWRfdGxpc3QsCiAJCQkJCQkJCQkJCWxpc3RfbGVuZ3Ro KHBhcnNlLT53aW5kb3dDbGF1c2UpKTsKQEAgLTE0NzQsNyArMTQ3OCw3IEBAIGdyb3VwaW5n X3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJ CQlhY3RpdmVXaW5kb3dzID0gc2VsZWN0X2FjdGl2ZV93aW5kb3dzKHJvb3QsIHdmbGlzdHMp OwogCQkJfQogCQkJZWxzZQotCQkJCXBhcnNlLT5oYXNXaW5kb3dGdW5jcyA9IGZhbHNlOwor CQkJCVF1ZXJ5Q2xlYXJGbGFnKHBhcnNlLCBIQVNfV0lORE9XX0ZVTkNTKTsKIAkJfQogCiAJ CS8qCkBAIC0xNDgzLDcgKzE0ODcsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZv ICpyb290LCBkb3VibGUgdHVwbGVfZnJhY3Rpb24pCiAJCSAqIHRoYXQgaXMgbmVlZGVkIGlu IE1JTi9NQVgtb3B0aW1pemFibGUgY2FzZXMgd2lsbCBoYXZlIHRvIGJlCiAJCSAqIGR1cGxp Y2F0ZWQgaW4gcGxhbmFnZy5jLgogCQkgKi8KLQkJaWYgKHBhcnNlLT5oYXNBZ2dzKQorCQlp ZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJCXByZXByb2Nlc3NfbWlubWF4X2FnZ3JlZ2F0 ZXMocm9vdCk7CiAKIAkJLyoKQEAgLTE0OTUsOSArMTQ5OSw5IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJaWYgKHBh cnNlLT5ncm91cENsYXVzZSB8fAogCQkJcGFyc2UtPmdyb3VwaW5nU2V0cyB8fAogCQkJcGFy c2UtPmRpc3RpbmN0Q2xhdXNlIHx8Ci0JCQlwYXJzZS0+aGFzQWdncyB8fAotCQkJcGFyc2Ut Pmhhc1dpbmRvd0Z1bmNzIHx8Ci0JCQlwYXJzZS0+aGFzVGFyZ2V0U1JGcyB8fAorCQkJUXVl cnlIYXNBZ2dzKHBhcnNlKSB8fAorCQkJUXVlcnlIYXNXaW5kb3dGdW5jcyhwYXJzZSkgfHwK KwkJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhwYXJzZSkgfHwKIAkJCXJvb3QtPmhhc0hhdmluZ1F1 YWwpCiAJCQlyb290LT5saW1pdF90dXBsZXMgPSAtMS4wOwogCQllbHNlCkBAIC0xNTczLDcg KzE1NzcsNyBAQCBncm91cGluZ19wbGFubmVyKFBsYW5uZXJJbmZvICpyb290LCBkb3VibGUg dHVwbGVfZnJhY3Rpb24pCiAJCSAqIHNob3VsZCBlbWl0IGdyb3VwaW5nX3RhcmdldC4KIAkJ ICovCiAJCWhhdmVfZ3JvdXBpbmcgPSAocGFyc2UtPmdyb3VwQ2xhdXNlIHx8IHBhcnNlLT5n cm91cGluZ1NldHMgfHwKLQkJCQkJCSBwYXJzZS0+aGFzQWdncyB8fCByb290LT5oYXNIYXZp bmdRdWFsKTsKKwkJCQkJCSBRdWVyeUhhc0FnZ3MocGFyc2UpIHx8IHJvb3QtPmhhc0hhdmlu Z1F1YWwpOwogCQlpZiAoaGF2ZV9ncm91cGluZykKIAkJewogCQkJc2NhbmpvaW5fdGFyZ2V0 ID0gbWFrZV9ncm91cF9pbnB1dF90YXJnZXQocm9vdCwgZmluYWxfdGFyZ2V0KTsKQEAgLTE1 OTIsNyArMTU5Niw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJvb3QsIGRv dWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJICogZWFjaCBvZiB0aGUgbmFtZWQgdGFyZ2V0cyB3 aXRoIGEgU1JGLWZyZWUgdmVyc2lvbiwgYW5kIHJlbWVtYmVyIHRoZQogCQkgKiBsaXN0IG9m IGFkZGl0aW9uYWwgcHJvamVjdGlvbiBzdGVwcyB3ZSBuZWVkIHRvIGFkZCBhZnRlcndhcmRz LgogCQkgKi8KLQkJaWYgKHBhcnNlLT5oYXNUYXJnZXRTUkZzKQorCQlpZiAoUXVlcnlIYXNU YXJnZXRTUkZzKHBhcnNlKSkKIAkJewogCQkJLyogZmluYWxfdGFyZ2V0IGRvZXNuJ3QgcmVj b21wdXRlIGFueSBTUkZzIGluIHNvcnRfaW5wdXRfdGFyZ2V0ICovCiAJCQlzcGxpdF9wYXRo dGFyZ2V0X2F0X3NyZnMocm9vdCwgZmluYWxfdGFyZ2V0LCBzb3J0X2lucHV0X3RhcmdldCwK QEAgLTE2NjQsNyArMTY2OCw3IEBAIGdyb3VwaW5nX3BsYW5uZXIoUGxhbm5lckluZm8gKnJv b3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJCQkJCWdyb3VwaW5nX3Rhcmdl dF9wYXJhbGxlbF9zYWZlLAogCQkJCQkJCQkJCQkJZ3NldF9kYXRhKTsKIAkJCS8qIEZpeCB0 aGluZ3MgdXAgaWYgZ3JvdXBpbmdfdGFyZ2V0IGNvbnRhaW5zIFNSRnMgKi8KLQkJCWlmIChw YXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2Up KQogCQkJCWFkanVzdF9wYXRoc19mb3Jfc3Jmcyhyb290LCBjdXJyZW50X3JlbCwKIAkJCQkJ CQkJCSAgZ3JvdXBpbmdfdGFyZ2V0cywKIAkJCQkJCQkJCSAgZ3JvdXBpbmdfdGFyZ2V0c19j b250YWluX3NyZnMpOwpAQCAtMTY4NCw3ICsxNjg4LDcgQEAgZ3JvdXBpbmdfcGxhbm5lcihQ bGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCQkJCQkJCQkg IHdmbGlzdHMsCiAJCQkJCQkJCQkJCSAgYWN0aXZlV2luZG93cyk7CiAJCQkvKiBGaXggdGhp bmdzIHVwIGlmIHNvcnRfaW5wdXRfdGFyZ2V0IGNvbnRhaW5zIFNSRnMgKi8KLQkJCWlmIChw YXJzZS0+aGFzVGFyZ2V0U1JGcykKKwkJCWlmIChRdWVyeUhhc1RhcmdldFNSRnMocGFyc2Up KQogCQkJCWFkanVzdF9wYXRoc19mb3Jfc3Jmcyhyb290LCBjdXJyZW50X3JlbCwKIAkJCQkJ CQkJCSAgc29ydF9pbnB1dF90YXJnZXRzLAogCQkJCQkJCQkJICBzb3J0X2lucHV0X3Rhcmdl dHNfY29udGFpbl9zcmZzKTsKQEAgLTE3MTgsNyArMTcyMiw3IEBAIGdyb3VwaW5nX3BsYW5u ZXIoUGxhbm5lckluZm8gKnJvb3QsIGRvdWJsZSB0dXBsZV9mcmFjdGlvbikKIAkJCQkJCQkJ CQkgICBoYXZlX3Bvc3Rwb25lZF9zcmZzID8gLTEuMCA6CiAJCQkJCQkJCQkJICAgbGltaXRf dHVwbGVzKTsKIAkJLyogRml4IHRoaW5ncyB1cCBpZiBmaW5hbF90YXJnZXQgY29udGFpbnMg U1JGcyAqLwotCQlpZiAocGFyc2UtPmhhc1RhcmdldFNSRnMpCisJCWlmIChRdWVyeUhhc1Rh cmdldFNSRnMocGFyc2UpKQogCQkJYWRqdXN0X3BhdGhzX2Zvcl9zcmZzKHJvb3QsIGN1cnJl bnRfcmVsLAogCQkJCQkJCQkgIGZpbmFsX3RhcmdldHMsCiAJCQkJCQkJCSAgZmluYWxfdGFy Z2V0c19jb250YWluX3NyZnMpOwpAQCAtMTk1NSw3ICsxOTU5LDcgQEAgZ3JvdXBpbmdfcGxh bm5lcihQbGFubmVySW5mbyAqcm9vdCwgZG91YmxlIHR1cGxlX2ZyYWN0aW9uKQogCQkJCWNy ZWF0ZV9tb2RpZnl0YWJsZV9wYXRoKHJvb3QsIGZpbmFsX3JlbCwKIAkJCQkJCQkJCQlwYXRo LAogCQkJCQkJCQkJCXBhcnNlLT5jb21tYW5kVHlwZSwKLQkJCQkJCQkJCQlwYXJzZS0+Y2Fu U2V0VGFnLAorCQkJCQkJCQkJCVF1ZXJ5Q2FuU2V0VGFnKHBhcnNlKSwKIAkJCQkJCQkJCQlw YXJzZS0+cmVzdWx0UmVsYXRpb24sCiAJCQkJCQkJCQkJcm9vdFJlbGF0aW9uLAogCQkJCQkJ CQkJCXJvb3QtPnBhcnRDb2xzVXBkYXRlZCwKQEAgLTM1NzMsNyArMzU3Nyw3IEBAIGdldF9u dW1iZXJfb2ZfZ3JvdXBzKFBsYW5uZXJJbmZvICpyb290LAogCQkvKiBFbXB0eSBncm91cGlu ZyBzZXRzIC4uLiBvbmUgcmVzdWx0IHJvdyBmb3IgZWFjaCBvbmUgKi8KIAkJZE51bUdyb3Vw cyA9IGxpc3RfbGVuZ3RoKHBhcnNlLT5ncm91cGluZ1NldHMpOwogCX0KLQllbHNlIGlmIChw YXJzZS0+aGFzQWdncyB8fCByb290LT5oYXNIYXZpbmdRdWFsKQorCWVsc2UgaWYgKFF1ZXJ5 SGFzQWdncyhwYXJzZSkgfHwgcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAl7CiAJCS8qIFBsYWlu IGFnZ3JlZ2F0aW9uLCBvbmUgcmVzdWx0IHJvdyAqLwogCQlkTnVtR3JvdXBzID0gMTsKQEAg LTM3NzYsNyArMzc4MCw3IEBAIGlzX2RlZ2VuZXJhdGVfZ3JvdXBpbmcoUGxhbm5lckluZm8g KnJvb3QpCiAJUXVlcnkJICAgKnBhcnNlID0gcm9vdC0+cGFyc2U7CiAKIAlyZXR1cm4gKHJv b3QtPmhhc0hhdmluZ1F1YWwgfHwgcGFyc2UtPmdyb3VwaW5nU2V0cykgJiYKLQkJIXBhcnNl LT5oYXNBZ2dzICYmIHBhcnNlLT5ncm91cENsYXVzZSA9PSBOSUw7CisJCSFRdWVyeUhhc0Fn Z3MocGFyc2UpICYmIHBhcnNlLT5ncm91cENsYXVzZSA9PSBOSUw7CiB9CiAKIC8qCkBAIC00 NjY1LDcgKzQ2NjksNyBAQCBjcmVhdGVfcGFydGlhbF9kaXN0aW5jdF9wYXRocyhQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCXBhcnNlID0gcm9vdC0+cGFy c2U7CiAKIAkvKiBjYW4ndCBkbyBwYXJhbGxlbCBESVNUSU5DVCBPTiAqLwotCWlmIChwYXJz ZS0+aGFzRGlzdGluY3RPbikKKwlpZiAoUXVlcnlIYXNEaXN0aW5jdE9uKHBhcnNlKSkKIAkJ cmV0dXJuOwogCiAJcGFydGlhbF9kaXN0aW5jdF9yZWwgPSBmZXRjaF91cHBlcl9yZWwocm9v dCwgVVBQRVJSRUxfUEFSVElBTF9ESVNUSU5DVCwKQEAgLTQ4NTUsNyArNDg1OSw3IEBAIGNy ZWF0ZV9maW5hbF9kaXN0aW5jdF9wYXRocyhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqaW5wdXRfcmVsLAogCWJvb2wJCWFsbG93X2hhc2g7CiAKIAkvKiBFc3RpbWF0ZSBudW1i ZXIgb2YgZGlzdGluY3Qgcm93cyB0aGVyZSB3aWxsIGJlICovCi0JaWYgKHBhcnNlLT5ncm91 cENsYXVzZSB8fCBwYXJzZS0+Z3JvdXBpbmdTZXRzIHx8IHBhcnNlLT5oYXNBZ2dzIHx8CisJ aWYgKHBhcnNlLT5ncm91cENsYXVzZSB8fCBwYXJzZS0+Z3JvdXBpbmdTZXRzIHx8IFF1ZXJ5 SGFzQWdncyhwYXJzZSkgfHwKIAkJcm9vdC0+aGFzSGF2aW5nUXVhbCkKIAl7CiAJCS8qCkBA IC00OTAyLDcgKzQ5MDYsNyBAQCBjcmVhdGVfZmluYWxfZGlzdGluY3RfcGF0aHMoUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJTGlzdENlbGwgICAqbGM7 CiAJCWRvdWJsZQkJbGltaXR0dXBsZXMgPSByb290LT5kaXN0aW5jdF9wYXRoa2V5cyA9PSBO SUwgPyAxLjAgOiAtMS4wOwogCi0JCWlmIChwYXJzZS0+aGFzRGlzdGluY3RPbiAmJgorCQlp ZiAoUXVlcnlIYXNEaXN0aW5jdE9uKHBhcnNlKSAmJgogCQkJbGlzdF9sZW5ndGgocm9vdC0+ ZGlzdGluY3RfcGF0aGtleXMpIDwKIAkJCWxpc3RfbGVuZ3RoKHJvb3QtPnNvcnRfcGF0aGtl eXMpKQogCQkJbmVlZGVkX3BhdGhrZXlzID0gcm9vdC0+c29ydF9wYXRoa2V5czsKQEAgLTUw MTEsNyArNTAxNSw3IEBAIGNyZWF0ZV9maW5hbF9kaXN0aW5jdF9wYXRocyhQbGFubmVySW5m byAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCSAqLwogCWlmIChkaXN0aW5jdF9y ZWwtPnBhdGhsaXN0ID09IE5JTCkKIAkJYWxsb3dfaGFzaCA9IHRydWU7CQkvKiB3ZSBoYXZl IG5vIGFsdGVybmF0aXZlcyAqLwotCWVsc2UgaWYgKHBhcnNlLT5oYXNEaXN0aW5jdE9uIHx8 ICFlbmFibGVfaGFzaGFnZykKKwllbHNlIGlmIChRdWVyeUhhc0Rpc3RpbmN0T24ocGFyc2Up IHx8ICFlbmFibGVfaGFzaGFnZykKIAkJYWxsb3dfaGFzaCA9IGZhbHNlOwkJLyogcG9saWN5 LWJhc2VkIGRlY2lzaW9uIG5vdCB0byBoYXNoICovCiAJZWxzZQogCQlhbGxvd19oYXNoID0g dHJ1ZTsJCS8qIGRlZmF1bHQgKi8KQEAgLTU4MzksNyArNTg0Myw3IEBAIG1ha2Vfd2luZG93 X2lucHV0X3RhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAlpbnQJCQlpOwogCUxpc3RDZWxs ICAgKmxjOwogCi0JQXNzZXJ0KHJvb3QtPnBhcnNlLT5oYXNXaW5kb3dGdW5jcyk7CisJQXNz ZXJ0KFF1ZXJ5SGFzV2luZG93RnVuY3Mocm9vdC0+cGFyc2UpKTsKIAogCS8qCiAJICogQ29s bGVjdCB0aGUgc29ydGdyb3VwcmVmIG51bWJlcnMgb2Ygd2luZG93IFBBUlRJVElPTi9PUkRF UiBCWSBjbGF1c2VzCkBAIC02MTIzLDcgKzYxMjcsNyBAQCBtYWtlX3NvcnRfaW5wdXRfdGFy Z2V0KFBsYW5uZXJJbmZvICpyb290LAogCQkJICogQ2hlY2sgZm9yIFNSRiBvciB2b2xhdGls ZSBmdW5jdGlvbnMuICBDaGVjayB0aGUgU1JGIGNhc2UgZmlyc3QKIAkJCSAqIGJlY2F1c2Ug d2UgbXVzdCBrbm93IHdoZXRoZXIgd2UgaGF2ZSBhbnkgcG9zdHBvbmVkIFNSRnMuCiAJCQkg Ki8KLQkJCWlmIChwYXJzZS0+aGFzVGFyZ2V0U1JGcyAmJgorCQkJaWYgKFF1ZXJ5SGFzVGFy Z2V0U1JGcyhwYXJzZSkgJiYKIAkJCQlleHByZXNzaW9uX3JldHVybnNfc2V0KChOb2RlICop IGV4cHIpKQogCQkJewogCQkJCS8qIFdlJ2xsIGRlY2lkZSBiZWxvdyB3aGV0aGVyIHRoZXNl IGFyZSBwb3N0cG9uYWJsZSAqLwpAQCAtNjE2Myw3ICs2MTY3LDcgQEAgbWFrZV9zb3J0X2lu cHV0X3RhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAkJewogCQkJLyogRm9yIHNvcnRncm91 cHJlZiBjb2xzLCBqdXN0IGNoZWNrIGlmIGFueSBjb250YWluIFNSRnMgKi8KIAkJCWlmICgh aGF2ZV9zcmZfc29ydGNvbHMgJiYKLQkJCQlwYXJzZS0+aGFzVGFyZ2V0U1JGcyAmJgorCQkJ CVF1ZXJ5SGFzVGFyZ2V0U1JGcyhwYXJzZSkgJiYKIAkJCQlleHByZXNzaW9uX3JldHVybnNf c2V0KChOb2RlICopIGV4cHIpKQogCQkJCWhhdmVfc3JmX3NvcnRjb2xzID0gdHJ1ZTsKIAkJ fQpAQCAtNjg0NSw3ICs2ODQ5LDcgQEAgYWRkX3BhdGhzX3RvX2dyb3VwaW5nX3JlbChQbGFu bmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqaW5wdXRfcmVsLAogCQkJCQkJCQkJCQkJcGF0 aCwgdHJ1ZSwgY2FuX2hhc2gsCiAJCQkJCQkJCQkJCQlnZCwgYWdnX2Nvc3RzLCBkTnVtR3Jv dXBzKTsKIAkJCQl9Ci0JCQkJZWxzZSBpZiAocGFyc2UtPmhhc0FnZ3MpCisJCQkJZWxzZSBp ZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJCQl7CiAJCQkJCS8qCiAJCQkJCSAqIFdlIGhh dmUgYWdncmVnYXRpb24sIHBvc3NpYmx5IHdpdGggcGxhaW4gR1JPVVAgQlkuIE1ha2UKQEAg LTY5MjAsNyArNjkyNCw3IEBAIGFkZF9wYXRoc190b19ncm91cGluZ19yZWwoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJCQkJaWYgKHBhdGggPT0gTlVM TCkKIAkJCQkJCWNvbnRpbnVlOwogCi0JCQkJCWlmIChwYXJzZS0+aGFzQWdncykKKwkJCQkJ aWYgKFF1ZXJ5SGFzQWdncyhwYXJzZSkpCiAJCQkJCQlhZGRfcGF0aChncm91cGVkX3JlbCwg KFBhdGggKikKIAkJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQkJ IGdyb3VwZWRfcmVsLApAQCAtNzEwNSw3ICs3MTA5LDcgQEAgY3JlYXRlX3BhcnRpYWxfZ3Jv dXBpbmdfcGF0aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCSAqLwogCQlNZW1TZXQoYWdnX3Bh cnRpYWxfY29zdHMsIDAsIHNpemVvZihBZ2dDbGF1c2VDb3N0cykpOwogCQlNZW1TZXQoYWdn X2ZpbmFsX2Nvc3RzLCAwLCBzaXplb2YoQWdnQ2xhdXNlQ29zdHMpKTsKLQkJaWYgKHBhcnNl LT5oYXNBZ2dzKQorCQlpZiAoUXVlcnlIYXNBZ2dzKHBhcnNlKSkKIAkJewogCQkJLyogcGFy dGlhbCBwaGFzZSAqLwogCQkJZ2V0X2FnZ19jbGF1c2VfY29zdHMocm9vdCwgQUdHU1BMSVRf SU5JVElBTF9TRVJJQUwsCkBAIC03MTM2LDcgKzcxNDAsNyBAQCBjcmVhdGVfcGFydGlhbF9n cm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoY2FuX3NvcnQgJiYgY2hl YXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKQogCXsKIAkJLyogVGhpcyBzaG91bGQgaGF2ZSBi ZWVuIGNoZWNrZWQgcHJldmlvdXNseSAqLwotCQlBc3NlcnQocGFyc2UtPmhhc0FnZ3MgfHwg cGFyc2UtPmdyb3VwQ2xhdXNlKTsKKwkJQXNzZXJ0KFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwg cGFyc2UtPmdyb3VwQ2xhdXNlKTsKIAogCQkvKgogCQkgKiBVc2UgYW55IGF2YWlsYWJsZSBz dWl0YWJseS1zb3J0ZWQgcGF0aCBhcyBpbnB1dCwgYW5kIGFsc28gY29uc2lkZXIKQEAgLTcx NzEsNyArNzE3NSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBsYW5uZXJJ bmZvICpyb290LAogCQkJCWlmIChwYXRoID09IE5VTEwpCiAJCQkJCWNvbnRpbnVlOwogCi0J CQkJaWYgKHBhcnNlLT5oYXNBZ2dzKQorCQkJCWlmIChRdWVyeUhhc0FnZ3MocGFyc2UpKQog CQkJCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJCQkJCQkJ IGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJCQkgcGFydGlhbGx5X2dyb3VwZWRf cmVsLApAQCAtNzIyOCw3ICs3MjMyLDcgQEAgY3JlYXRlX3BhcnRpYWxfZ3JvdXBpbmdfcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJaWYgKHBhdGggPT0gTlVMTCkKIAkJCQkJY29u dGludWU7CiAKLQkJCQlpZiAocGFyc2UtPmhhc0FnZ3MpCisJCQkJaWYgKFF1ZXJ5SGFzQWdn cyhwYXJzZSkpCiAJCQkJCWFkZF9wYXJ0aWFsX3BhdGgocGFydGlhbGx5X2dyb3VwZWRfcmVs LCAoUGF0aCAqKQogCQkJCQkJCQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LAogCQkJCQkJCQkJ CQkJCSBwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsCkBAIC03MjU4LDcgKzcyNjIsNyBAQCBjcmVh dGVfcGFydGlhbF9ncm91cGluZ19wYXRocyhQbGFubmVySW5mbyAqcm9vdCwKIAlpZiAoY2Fu X2hhc2ggJiYgY2hlYXBlc3RfdG90YWxfcGF0aCAhPSBOVUxMKQogCXsKIAkJLyogQ2hlY2tl ZCBhYm92ZSAqLwotCQlBc3NlcnQocGFyc2UtPmhhc0FnZ3MgfHwgcGFyc2UtPmdyb3VwQ2xh dXNlKTsKKwkJQXNzZXJ0KFF1ZXJ5SGFzQWdncyhwYXJzZSkgfHwgcGFyc2UtPmdyb3VwQ2xh dXNlKTsKIAogCQlhZGRfcGF0aChwYXJ0aWFsbHlfZ3JvdXBlZF9yZWwsIChQYXRoICopCiAJ CQkJIGNyZWF0ZV9hZ2dfcGF0aChyb290LApAQCAtNzQwMSw3ICs3NDA1LDcgQEAgY2FuX3Bh cnRpYWxfYWdnKFBsYW5uZXJJbmZvICpyb290KQogewogCVF1ZXJ5CSAgICpwYXJzZSA9IHJv b3QtPnBhcnNlOwogCi0JaWYgKCFwYXJzZS0+aGFzQWdncyAmJiBwYXJzZS0+Z3JvdXBDbGF1 c2UgPT0gTklMKQorCWlmICghUXVlcnlIYXNBZ2dzKHBhcnNlKSAmJiBwYXJzZS0+Z3JvdXBD bGF1c2UgPT0gTklMKQogCXsKIAkJLyoKIAkJICogV2UgZG9uJ3Qga25vdyBob3cgdG8gZG8g cGFyYWxsZWwgYWdncmVnYXRpb24gdW5sZXNzIHdlIGhhdmUgZWl0aGVyCkBAIC03NTYwLDcg Kzc1NjQsNyBAQCBhcHBseV9zY2Fuam9pbl90YXJnZXRfdG9fcGF0aHMoUGxhbm5lckluZm8g KnJvb3QsCiAJICogY2hlYXBlc3QtcGF0aCBmaWVsZHMsIHdoaWNoIGlzIGEgZ29vZCB0aGlu ZyBiZWNhdXNlIHRoZXkncmUgYm9ndXMgcmlnaHQKIAkgKiBub3cuKQogCSAqLwotCWlmIChy b290LT5wYXJzZS0+aGFzVGFyZ2V0U1JGcykKKwlpZiAoUXVlcnlIYXNUYXJnZXRTUkZzKHJv b3QtPnBhcnNlKSkKIAkJYWRqdXN0X3BhdGhzX2Zvcl9zcmZzKHJvb3QsIHJlbCwKIAkJCQkJ CQkgIHNjYW5qb2luX3RhcmdldHMsCiAJCQkJCQkJICBzY2Fuam9pbl90YXJnZXRzX2NvbnRh aW5fc3Jmcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRy ZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKaW5kZXggMjJh MWZhMjlmMy4uM2M0NTQzMWQ4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJl ZnMuYwpAQCAtMzYwMCw3ICszNjAwLDcgQEAgZXh0cmFjdF9xdWVyeV9kZXBlbmRlbmNpZXNf d2Fsa2VyKE5vZGUgKm5vZGUsIFBsYW5uZXJJbmZvICpjb250ZXh0KQogCQl9CiAKIAkJLyog UmVtZW1iZXIgaWYgYW55IFF1ZXJ5IGhhcyBSTFMgcXVhbHMgYXBwbGllZCBieSByZXdyaXRl ciAqLwotCQlpZiAocXVlcnktPmhhc1Jvd1NlY3VyaXR5KQorCQlpZiAoUXVlcnlIYXNSb3dT ZWN1cml0eShxdWVyeSkpCiAJCQljb250ZXh0LT5nbG9iLT5kZXBlbmRzT25Sb2xlID0gdHJ1 ZTsKIAogCQkvKiBDb2xsZWN0IHJlbGF0aW9uIE9JRHMgaW4gdGhpcyBRdWVyeSdzIHJ0YWJs ZSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc3Vic2VsZWN0 LmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJzZWxlY3QuYwppbmRleCA0N2Ux NDcyM2QyLi5lNjVhMWExNzQwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zdWJzZWxlY3QuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zdWJz ZWxlY3QuYwpAQCAtMTU2MiwxMSArMTU2MiwxMSBAQCBzaW1wbGlmeV9FWElTVFNfcXVlcnko UGxhbm5lckluZm8gKnJvb3QsIFF1ZXJ5ICpxdWVyeSkKIAkgKi8KIAlpZiAocXVlcnktPmNv bW1hbmRUeXBlICE9IENNRF9TRUxFQ1QgfHwKIAkJcXVlcnktPnNldE9wZXJhdGlvbnMgfHwK LQkJcXVlcnktPmhhc0FnZ3MgfHwKKwkJUXVlcnlIYXNBZ2dzKHF1ZXJ5KSB8fAogCQlxdWVy eS0+Z3JvdXBpbmdTZXRzIHx8Ci0JCXF1ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAotCQlxdWVy eS0+aGFzVGFyZ2V0U1JGcyB8fAotCQlxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFIHx8CisJCVF1 ZXJ5SGFzV2luZG93RnVuY3MocXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhxdWVy eSkgfHwKKwkJUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpIHx8CiAJCXF1ZXJ5LT5oYXZp bmdRdWFsIHx8CiAJCXF1ZXJ5LT5saW1pdE9mZnNldCB8fAogCQlxdWVyeS0+cm93TWFya3Mp CkBAIC0xNjE4LDcgKzE2MTgsNyBAQCBzaW1wbGlmeV9FWElTVFNfcXVlcnkoUGxhbm5lcklu Zm8gKnJvb3QsIFF1ZXJ5ICpxdWVyeSkKIAlxdWVyeS0+d2luZG93Q2xhdXNlID0gTklMOwog CXF1ZXJ5LT5kaXN0aW5jdENsYXVzZSA9IE5JTDsKIAlxdWVyeS0+c29ydENsYXVzZSA9IE5J TDsKLQlxdWVyeS0+aGFzRGlzdGluY3RPbiA9IGZhbHNlOworCVF1ZXJ5Q2xlYXJGbGFnKHF1 ZXJ5LCBIQVNfRElTVElOQ1RfT04pOwogCiAJcmV0dXJuIHRydWU7CiB9CkBAIC0xNzc5LDcg KzE3NzksNyBAQCBjb252ZXJ0X0VYSVNUU190b19BTlkoUGxhbm5lckluZm8gKnJvb3QsIFF1 ZXJ5ICpzdWJzZWxlY3QsCiAJaWYgKGNvbnRhaW5fdmFyc19vZl9sZXZlbCgoTm9kZSAqKSBu ZXdXaGVyZSwgMSkgfHwKIAkJY29udGFpbl92YXJzX29mX2xldmVsKChOb2RlICopIHJpZ2h0 YXJncywgMSkpCiAJCXJldHVybiBOVUxMOwotCWlmIChyb290LT5wYXJzZS0+aGFzQWdncyAm JgorCWlmIChRdWVyeUhhc0FnZ3Mocm9vdC0+cGFyc2UpICYmCiAJCShjb250YWluX2FnZ3Nf b2ZfbGV2ZWwoKE5vZGUgKikgbmV3V2hlcmUsIDEpIHx8CiAJCSBjb250YWluX2FnZ3Nfb2Zf bGV2ZWwoKE5vZGUgKikgcmlnaHRhcmdzLCAxKSkpCiAJCXJldHVybiBOVUxMOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGpvaW50cmVlLmMgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUuYwppbmRleCBhYTgzZGQzNjM2 Li41Yjg1YWE4ZmY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9w cmVwam9pbnRyZWUuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9p bnRyZWUuYwpAQCAtNDksNyArNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBwdWxsdXBfcmVwbGFj ZV92YXJzX2NvbnRleHQKIAlSYW5nZVRibEVudHJ5ICp0YXJnZXRfcnRlOwkvKiBSVEUgb2Yg c3VicXVlcnkgKi8KIAlSZWxpZHMJCXJlbGlkczsJCQkvKiByZWxpZHMgd2l0aGluIHN1YnF1 ZXJ5LCBhcyBudW1iZXJlZCBhZnRlcgogCQkJCQkJCQkgKiBwdWxsdXAgKHNldCBvbmx5IGlm IHRhcmdldF9ydGUtPmxhdGVyYWwpICovCi0JYm9vbAkgICAqb3V0ZXJfaGFzU3ViTGlua3M7 CS8qIC0+IG91dGVyIHF1ZXJ5J3MgaGFzU3ViTGlua3MgKi8KKwlpbnQJCSAgICpvdXRlcl9m bGFnczsJLyogLT4gb3V0ZXIgcXVlcnkncyBmbGFncyAqLwogCWludAkJCXZhcm5vOwkJCS8q IHZhcm5vIG9mIHN1YnF1ZXJ5ICovCiAJYm9vbAkJd3JhcF9ub25fdmFyczsJLyogZG8gd2Ug bmVlZCBhbGwgbm9uLVZhciBvdXRwdXRzIHRvIGJlIFBIVnM/ICovCiAJTm9kZQkgICoqcnZf Y2FjaGU7CQkvKiBjYWNoZSBmb3IgcmVzdWx0cyB3aXRoIFBIVnMgKi8KQEAgLTE2OCw3ICsx NjgsNyBAQCB0cmFuc2Zvcm1fTUVSR0VfdG9fam9pbihRdWVyeSAqcGFyc2UpCiAJICogb3V0 ZXIgam9pbiBzbyB0aGF0IHdlIHByb2Nlc3MgYWxsIHVubWF0Y2hlZCB0dXBsZXMgZnJvbSB0 aGUgc291cmNlCiAJICogcmVsYXRpb24uICBJZiBub25lIGV4aXN0LCB3ZSBjYW4gdXNlIGFu IGlubmVyIGpvaW4uCiAJICovCi0JaWYgKHBhcnNlLT5tZXJnZVVzZU91dGVySm9pbikKKwlp ZiAoUXVlcnlNZXJnZVVzZU91dGVySm9pbihwYXJzZSkpCiAJCWpvaW50eXBlID0gSk9JTl9S SUdIVDsKIAllbHNlCiAJCWpvaW50eXBlID0gSk9JTl9JTk5FUjsKQEAgLTEwMjgsNyArMTAy OCw3IEBAIHB1bGxfdXBfc2ltcGxlX3N1YnF1ZXJ5KFBsYW5uZXJJbmZvICpyb290LCBOb2Rl ICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkgKiBQdWxsIHVwIGFueSBTdWJMaW5r cyB3aXRoaW4gdGhlIHN1YnF1ZXJ5J3MgcXVhbHMsIHNvIHRoYXQgd2UgZG9uJ3QKIAkgKiBs ZWF2ZSB1bm9wdGltaXplZCBTdWJMaW5rcyBiZWhpbmQuCiAJICovCi0JaWYgKHN1YnF1ZXJ5 LT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhzdWJxdWVyeSkpCiAJCXB1 bGxfdXBfc3VibGlua3Moc3Vicm9vdCk7CiAKIAkvKgpAQCAtMTExOSw3ICsxMTE5LDcgQEAg cHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8gKnJvb3QsIE5vZGUgKmp0bm9k ZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCQkJCQkJCQkJCQkJICB0cnVlLCB0cnVlKTsKIAll bHNlCQkJCQkJLyogd29uJ3QgbmVlZCByZWxpZHMgKi8KIAkJcnZjb250ZXh0LnJlbGlkcyA9 IE5VTEw7Ci0JcnZjb250ZXh0Lm91dGVyX2hhc1N1YkxpbmtzID0gJnBhcnNlLT5oYXNTdWJM aW5rczsKKwlydmNvbnRleHQub3V0ZXJfZmxhZ3MgPSAmcGFyc2UtPmZsYWdzOwogCXJ2Y29u dGV4dC52YXJubyA9IHZhcm5vOwogCS8qIHRoaXMgZmxhZyB3aWxsIGJlIHNldCBiZWxvdywg aWYgbmVlZGVkICovCiAJcnZjb250ZXh0LndyYXBfbm9uX3ZhcnMgPSBmYWxzZTsKQEAgLTEy NjAsMTAgKzEyNjAsMTQgQEAgcHVsbF91cF9zaW1wbGVfc3VicXVlcnkoUGxhbm5lckluZm8g KnJvb3QsIE5vZGUgKmp0bm9kZSwgUmFuZ2VUYmxFbnRyeSAqcnRlLAogCSAqIGFuZCBWQUxV RVMgUlRFcyBjb3BpZWQgdXAgZnJvbSB0aGUgc3VicXVlcnkuICBTbyBpdCdzIG5lY2Vzc2Fy eSB0byBjb3B5CiAJICogc3VicXVlcnktPmhhc1N1YkxpbmtzIGFueXdheS4gIFBlcmhhcHMg dGhpcyBjYW4gYmUgaW1wcm92ZWQgc29tZWRheS4KIAkgKi8KLQlwYXJzZS0+aGFzU3ViTGlu a3MgfD0gc3VicXVlcnktPmhhc1N1YkxpbmtzOworCVF1ZXJ5Q29uZFNldEZsYWcocGFyc2Us CisJCQlRdWVyeUhhc1N1YkxpbmtzKHBhcnNlKSB8fCBRdWVyeUhhc1N1YkxpbmtzKHN1YnF1 ZXJ5KSwKKwkJCUhBU19TVUJfTElOS1MpOwogCiAJLyogSWYgc3VicXVlcnkgaGFkIGFueSBS TFMgY29uZGl0aW9ucywgbm93IG1haW4gcXVlcnkgZG9lcyB0b28gKi8KLQlwYXJzZS0+aGFz Um93U2VjdXJpdHkgfD0gc3VicXVlcnktPmhhc1Jvd1NlY3VyaXR5OworCVF1ZXJ5Q29uZFNl dEZsYWcocGFyc2UsCisJCQlRdWVyeUhhc1Jvd1NlY3VyaXR5KHBhcnNlKSB8fCBRdWVyeUhh c1Jvd1NlY3VyaXR5KHN1YnF1ZXJ5KSwKKwkJCUhBU19ST1dfU0VDVVJJVFkpOwogCiAJLyoK IAkgKiBzdWJxdWVyeSB3b24ndCBiZSBwdWxsZWQgdXAgaWYgaXQgaGFzQWdncywgaGFzV2lu ZG93RnVuY3MsIG9yCkBAIC0xNTEyLDkgKzE1MTYsOSBAQCBpc19zaW1wbGVfc3VicXVlcnko UGxhbm5lckluZm8gKnJvb3QsIFF1ZXJ5ICpzdWJxdWVyeSwgUmFuZ2VUYmxFbnRyeSAqcnRl LAogCSAqIHRoYXQgY2FzZSB0aGUgbG9ja2luZyB3YXMgb3JpZ2luYWxseSBkZWNsYXJlZCBp biB0aGUgdXBwZXIgcXVlcnkKIAkgKiBhbnl3YXkuCiAJICovCi0JaWYgKHN1YnF1ZXJ5LT5o YXNBZ2dzIHx8Ci0JCXN1YnF1ZXJ5LT5oYXNXaW5kb3dGdW5jcyB8fAotCQlzdWJxdWVyeS0+ aGFzVGFyZ2V0U1JGcyB8fAorCWlmIChRdWVyeUhhc0FnZ3Moc3VicXVlcnkpIHx8CisJCVF1 ZXJ5SGFzV2luZG93RnVuY3Moc3VicXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhz dWJxdWVyeSkgfHwKIAkJc3VicXVlcnktPmdyb3VwQ2xhdXNlIHx8CiAJCXN1YnF1ZXJ5LT5n cm91cGluZ1NldHMgfHwKIAkJc3VicXVlcnktPmhhdmluZ1F1YWwgfHwKQEAgLTE1MjIsNyAr MTUyNiw3IEBAIGlzX3NpbXBsZV9zdWJxdWVyeShQbGFubmVySW5mbyAqcm9vdCwgUXVlcnkg KnN1YnF1ZXJ5LCBSYW5nZVRibEVudHJ5ICpydGUsCiAJCXN1YnF1ZXJ5LT5kaXN0aW5jdENs YXVzZSB8fAogCQlzdWJxdWVyeS0+bGltaXRPZmZzZXQgfHwKIAkJc3VicXVlcnktPmxpbWl0 Q291bnQgfHwKLQkJc3VicXVlcnktPmhhc0ZvclVwZGF0ZSB8fAorCQlRdWVyeUhhc0ZvclVw ZGF0ZShzdWJxdWVyeSkgfHwKIAkJc3VicXVlcnktPmN0ZUxpc3QpCiAJCXJldHVybiBmYWxz ZTsKIApAQCAtMTY2NSw3ICsxNjY5LDcgQEAgcHVsbF91cF9zaW1wbGVfdmFsdWVzKFBsYW5u ZXJJbmZvICpyb290LCBOb2RlICpqdG5vZGUsIFJhbmdlVGJsRW50cnkgKnJ0ZSkKIAlydmNv bnRleHQudGFyZ2V0bGlzdCA9IHRsaXN0OwogCXJ2Y29udGV4dC50YXJnZXRfcnRlID0gcnRl OwogCXJ2Y29udGV4dC5yZWxpZHMgPSBOVUxMOwotCXJ2Y29udGV4dC5vdXRlcl9oYXNTdWJM aW5rcyA9ICZwYXJzZS0+aGFzU3ViTGlua3M7CisJcnZjb250ZXh0Lm91dGVyX2ZsYWdzID0g JnBhcnNlLT5mbGFnczsKIAlydmNvbnRleHQudmFybm8gPSB2YXJubzsKIAlydmNvbnRleHQu d3JhcF9ub25fdmFycyA9IGZhbHNlOwogCS8qIGluaXRpYWxpemUgY2FjaGUgYXJyYXkgd2l0 aCBpbmRleGVzIDAgLi4gbGVuZ3RoKHRsaXN0KSAqLwpAQCAtMTgyNiw3ICsxODMwLDcgQEAg cHVsbF91cF9jb25zdGFudF9mdW5jdGlvbihQbGFubmVySW5mbyAqcm9vdCwgTm9kZSAqanRu b2RlLAogCSAqLwogCXJ2Y29udGV4dC5yZWxpZHMgPSBOVUxMOwogCi0JcnZjb250ZXh0Lm91 dGVyX2hhc1N1YkxpbmtzID0gJnBhcnNlLT5oYXNTdWJMaW5rczsKKwlydmNvbnRleHQub3V0 ZXJfZmxhZ3MgPSAmcGFyc2UtPmZsYWdzOwogCXJ2Y29udGV4dC52YXJubyA9ICgoUmFuZ2VU YmxSZWYgKikganRub2RlKS0+cnRpbmRleDsKIAkvKiB0aGlzIGZsYWcgd2lsbCBiZSBzZXQg YmVsb3csIGlmIG5lZWRlZCAqLwogCXJ2Y29udGV4dC53cmFwX25vbl92YXJzID0gZmFsc2U7 CkBAIC0yMzAyLDcgKzIzMDYsNyBAQCBwdWxsdXBfcmVwbGFjZV92YXJzKE5vZGUgKmV4cHIs IHB1bGx1cF9yZXBsYWNlX3ZhcnNfY29udGV4dCAqY29udGV4dCkKIAkJCQkJCQkJIGNvbnRl eHQtPnZhcm5vLCAwLAogCQkJCQkJCQkgcHVsbHVwX3JlcGxhY2VfdmFyc19jYWxsYmFjaywK IAkJCQkJCQkJICh2b2lkICopIGNvbnRleHQsCi0JCQkJCQkJCSBjb250ZXh0LT5vdXRlcl9o YXNTdWJMaW5rcyk7CisJCQkJCQkJCSBjb250ZXh0LT5vdXRlcl9mbGFncyk7CiB9CiAKIHN0 YXRpYyBOb2RlICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3By ZXB1bmlvbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMKaW5k ZXggYzkzOWI1YTQ1Zi4uMzU0YWFlOTQ2NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3ByZXAvcHJlcHVuaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3By ZXAvcHJlcHVuaW9uLmMKQEAgLTM0MCw3ICszNDAsNyBAQCByZWN1cnNlX3NldF9vcGVyYXRp b25zKE5vZGUgKnNldE9wLCBQbGFubmVySW5mbyAqcm9vdCwKIAkJewogCQkJaWYgKHN1YnF1 ZXJ5LT5ncm91cENsYXVzZSB8fCBzdWJxdWVyeS0+Z3JvdXBpbmdTZXRzIHx8CiAJCQkJc3Vi cXVlcnktPmRpc3RpbmN0Q2xhdXNlIHx8Ci0JCQkJc3Vicm9vdC0+aGFzSGF2aW5nUXVhbCB8 fCBzdWJxdWVyeS0+aGFzQWdncykKKwkJCQlzdWJyb290LT5oYXNIYXZpbmdRdWFsIHx8IFF1 ZXJ5SGFzQWdncyhzdWJxdWVyeSkpCiAJCQkJKnBOdW1Hcm91cHMgPSBzdWJwYXRoLT5yb3dz OwogCQkJZWxzZQogCQkJCSpwTnVtR3JvdXBzID0gZXN0aW1hdGVfbnVtX2dyb3VwcyhzdWJy b290LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwvY2xhdXNlcy5jCmluZGV4IGVkYzI1ZDcx MmUuLjNkNTEzMTk0YTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci91dGls L2NsYXVzZXMuYworKysgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvdXRpbC9jbGF1c2VzLmMK QEAgLTQ2NzIsMTAgKzQ2NzIsMTAgQEAgaW5saW5lX2Z1bmN0aW9uKE9pZCBmdW5jaWQsIE9p ZCByZXN1bHRfdHlwZSwgT2lkIHJlc3VsdF9jb2xsaWQsCiAJICovCiAJaWYgKCFJc0EocXVl cnl0cmVlLCBRdWVyeSkgfHwKIAkJcXVlcnl0cmVlLT5jb21tYW5kVHlwZSAhPSBDTURfU0VM RUNUIHx8Ci0JCXF1ZXJ5dHJlZS0+aGFzQWdncyB8fAotCQlxdWVyeXRyZWUtPmhhc1dpbmRv d0Z1bmNzIHx8Ci0JCXF1ZXJ5dHJlZS0+aGFzVGFyZ2V0U1JGcyB8fAotCQlxdWVyeXRyZWUt Pmhhc1N1YkxpbmtzIHx8CisJCVF1ZXJ5SGFzQWdncyhxdWVyeXRyZWUpIHx8CisJCVF1ZXJ5 SGFzV2luZG93RnVuY3MocXVlcnl0cmVlKSB8fAorCQlRdWVyeUhhc1RhcmdldFNSRnMocXVl cnl0cmVlKSB8fAorCQlRdWVyeUhhc1N1YkxpbmtzKHF1ZXJ5dHJlZSkgfHwKIAkJcXVlcnl0 cmVlLT5jdGVMaXN0IHx8CiAJCXF1ZXJ5dHJlZS0+cnRhYmxlIHx8CiAJCXF1ZXJ5dHJlZS0+ am9pbnRyZWUtPmZyb21saXN0IHx8CkBAIC01Mjk4LDcgKzUyOTgsNyBAQCBpbmxpbmVfc2V0 X3JldHVybmluZ19mdW5jdGlvbihQbGFubmVySW5mbyAqcm9vdCwgUmFuZ2VUYmxFbnRyeSAq cnRlKQogCSAqIFdlIG11c3QgYWxzbyBub3RpY2UgaWYgdGhlIGluc2VydGVkIHF1ZXJ5IGFk ZHMgYSBkZXBlbmRlbmN5IG9uIHRoZQogCSAqIGNhbGxpbmcgcm9sZSBkdWUgdG8gUkxTIHF1 YWxzLgogCSAqLwotCWlmIChxdWVyeXRyZWUtPmhhc1Jvd1NlY3VyaXR5KQorCWlmIChRdWVy eUhhc1Jvd1NlY3VyaXR5KHF1ZXJ5dHJlZSkpCiAJCXJvb3QtPmdsb2ItPmRlcGVuZHNPblJv bGUgPSB0cnVlOwogCiAJcmV0dXJuIHF1ZXJ5dHJlZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL29wdGltaXplci91dGlsL3Zhci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3V0aWwv dmFyLmMKaW5kZXggODQ0ZmMzMDk3OC4uNGUxZDJhNWUxYyAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3V0aWwvdmFyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3V0aWwvdmFyLmMKQEAgLTc1Niw5ICs3NTYsOSBAQCBmbGF0dGVuX2pvaW5fYWxpYXNfdmFy cyhQbGFubmVySW5mbyAqcm9vdCwgUXVlcnkgKnF1ZXJ5LCBOb2RlICpub2RlKQogCWNvbnRl eHQucXVlcnkgPSBxdWVyeTsKIAljb250ZXh0LnN1YmxldmVsc191cCA9IDA7CiAJLyogZmxh ZyB3aGV0aGVyIGpvaW4gYWxpYXNlcyBjb3VsZCBwb3NzaWJseSBjb250YWluIFN1Ykxpbmtz ICovCi0JY29udGV4dC5wb3NzaWJsZV9zdWJsaW5rID0gcXVlcnktPmhhc1N1YkxpbmtzOwor CWNvbnRleHQucG9zc2libGVfc3VibGluayA9IFF1ZXJ5SGFzU3ViTGlua3MocXVlcnkpOwog CS8qIGlmIGhhc1N1YkxpbmtzIGlzIGFscmVhZHkgdHJ1ZSwgbm8gbmVlZCB0byB3b3JrIGhh cmQgKi8KLQljb250ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSBxdWVyeS0+aGFzU3ViTGlua3M7 CisJY29udGV4dC5pbnNlcnRlZF9zdWJsaW5rID0gUXVlcnlIYXNTdWJMaW5rcyhxdWVyeSk7 CiAKIAlyZXR1cm4gZmxhdHRlbl9qb2luX2FsaWFzX3ZhcnNfbXV0YXRvcihub2RlLCAmY29u dGV4dCk7CiB9CkBAIC04ODEsMTIgKzg4MSwxMyBAQCBmbGF0dGVuX2pvaW5fYWxpYXNfdmFy c19tdXRhdG9yKE5vZGUgKm5vZGUsCiAKIAkJY29udGV4dC0+c3VibGV2ZWxzX3VwKys7CiAJ CXNhdmVfaW5zZXJ0ZWRfc3VibGluayA9IGNvbnRleHQtPmluc2VydGVkX3N1Ymxpbms7Ci0J CWNvbnRleHQtPmluc2VydGVkX3N1YmxpbmsgPSAoKFF1ZXJ5ICopIG5vZGUpLT5oYXNTdWJM aW5rczsKKwkJY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFzU3ViTGlua3Mo KChRdWVyeSAqKSBub2RlKSk7CiAJCW5ld25vZGUgPSBxdWVyeV90cmVlX211dGF0b3IoKFF1 ZXJ5ICopIG5vZGUsCiAJCQkJCQkJCQkgZmxhdHRlbl9qb2luX2FsaWFzX3ZhcnNfbXV0YXRv ciwKIAkJCQkJCQkJCSAodm9pZCAqKSBjb250ZXh0LAogCQkJCQkJCQkJIFFUV19JR05PUkVf Sk9JTkFMSUFTRVMpOwotCQluZXdub2RlLT5oYXNTdWJMaW5rcyB8PSBjb250ZXh0LT5pbnNl cnRlZF9zdWJsaW5rOworCQlpZiAoY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluaykKKwkJCVF1 ZXJ5U2V0RmxhZyhuZXdub2RlLCBIQVNfU1VCX0xJTktTKTsKIAkJY29udGV4dC0+aW5zZXJ0 ZWRfc3VibGluayA9IHNhdmVfaW5zZXJ0ZWRfc3VibGluazsKIAkJY29udGV4dC0+c3VibGV2 ZWxzX3VwLS07CiAJCXJldHVybiAoTm9kZSAqKSBuZXdub2RlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcGFyc2VyL2FuYWx5emUuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9hbmFseXpl LmMKaW5kZXggZGJkZjZiZjg5Ni4uN2I2NzAxNmQzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcGFyc2VyL2FuYWx5emUuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvYW5hbHl6ZS5j CkBAIC00MjAsNyArNDIwLDcgQEAgdHJhbnNmb3JtU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IE5vZGUgKnBhcnNlVHJlZSkKIAogCS8qIE1hcmsgYXMgb3JpZ2luYWwgcXVlcnkgdW50aWwg d2UgbGVhcm4gZGlmZmVyZW50bHkgKi8KIAlyZXN1bHQtPnF1ZXJ5U291cmNlID0gUVNSQ19P UklHSU5BTDsKLQlyZXN1bHQtPmNhblNldFRhZyA9IHRydWU7CisJUXVlcnlTZXRGbGFnKHJl c3VsdCwgQ0FOX1NFVF9UQUcpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTUxOSw5ICs1 MTksOSBAQCB0cmFuc2Zvcm1EZWxldGVTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgRGVsZXRl U3RtdCAqc3RtdCkKIAkvKiBwcm9jZXNzIHRoZSBXSVRIIGNsYXVzZSBpbmRlcGVuZGVudGx5 IG9mIGFsbCBlbHNlICovCiAJaWYgKHN0bXQtPndpdGhDbGF1c2UpCiAJewotCQlxcnktPmhh c1JlY3Vyc2l2ZSA9IHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZTsKKwkJUXVlcnlDb25k U2V0RmxhZyhxcnksIHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZSwgSEFTX1JFQ1VSU0lW RSk7CiAJCXFyeS0+Y3RlTGlzdCA9IHRyYW5zZm9ybVdpdGhDbGF1c2UocHN0YXRlLCBzdG10 LT53aXRoQ2xhdXNlKTsKLQkJcXJ5LT5oYXNNb2RpZnlpbmdDVEUgPSBwc3RhdGUtPnBfaGFz TW9kaWZ5aW5nQ1RFOworCQlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc01v ZGlmeWluZ0NURSwgSEFTX01PRElGWUlOR19DVEUpOwogCX0KIAogCS8qIHNldCB1cCByYW5n ZSB0YWJsZSB3aXRoIGp1c3QgdGhlIHJlc3VsdCByZWwgKi8KQEAgLTU2MCwxMCArNTYwLDEw IEBAIHRyYW5zZm9ybURlbGV0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBEZWxldGVTdG10 ICpzdG10KQogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsK IAlxcnktPmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgcXVh bCk7CiAKLQlxcnktPmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOwotCXFy eS0+aGFzV2luZG93RnVuY3MgPSBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3M7Ci0JcXJ5LT5o YXNUYXJnZXRTUkZzID0gcHN0YXRlLT5wX2hhc1RhcmdldFNSRnM7Ci0JcXJ5LT5oYXNBZ2dz ID0gcHN0YXRlLT5wX2hhc0FnZ3M7CisJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+ cF9oYXNTdWJMaW5rcywgSEFTX1NVQl9MSU5LUyk7CisJUXVlcnlDb25kU2V0RmxhZyhxcnks IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jcywgSEFTX1dJTkRPV19GVU5DUyk7CisJUXVlcnlD b25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzLCBIQVNfVEFSR0VUX1NS RlMpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzQWdncywgSEFTX0FH R1MpOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC02 MDcsOSArNjA3LDkgQEAgdHJhbnNmb3JtSW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IEluc2VydFN0bXQgKnN0bXQpCiAJLyogcHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBl bmRlbnRseSBvZiBhbGwgZWxzZSAqLwogCWlmIChzdG10LT53aXRoQ2xhdXNlKQogCXsKLQkJ cXJ5LT5oYXNSZWN1cnNpdmUgPSBzdG10LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmU7CisJCVF1 ZXJ5Q29uZFNldEZsYWcocXJ5LCBzdG10LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmUsIEhBU19S RUNVUlNJVkUpOwogCQlxcnktPmN0ZUxpc3QgPSB0cmFuc2Zvcm1XaXRoQ2xhdXNlKHBzdGF0 ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0JCXFyeS0+aGFzTW9kaWZ5aW5nQ1RFID0gcHN0YXRl LT5wX2hhc01vZGlmeWluZ0NURTsKKwkJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+ cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19NT0RJRllJTkdfQ1RFKTsKIAl9CiAKIAlxcnktPm92 ZXJyaWRlID0gc3RtdC0+b3ZlcnJpZGU7CkBAIC05ODcsOCArOTg3LDggQEAgdHJhbnNmb3Jt SW5zZXJ0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIEluc2VydFN0bXQgKnN0bXQpCiAJcXJ5 LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+am9pbnRy ZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBOVUxMKTsKIAotCXFyeS0+ aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzOwotCXFyeS0+aGFzU3Vi TGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJUXVlcnlDb25kU2V0RmxhZyhxcnks IHBzdGF0ZS0+cF9oYXNUYXJnZXRTUkZzLCBIQVNfVEFSR0VUX1NSRlMpOworCVF1ZXJ5Q29u ZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlua3MsIEhBU19TVUJfTElOS1MpOwog CiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBAIC0xMzM1LDkg KzEzMzUsOSBAQCB0cmFuc2Zvcm1TZWxlY3RTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgU2Vs ZWN0U3RtdCAqc3RtdCkKIAkvKiBwcm9jZXNzIHRoZSBXSVRIIGNsYXVzZSBpbmRlcGVuZGVu dGx5IG9mIGFsbCBlbHNlICovCiAJaWYgKHN0bXQtPndpdGhDbGF1c2UpCiAJewotCQlxcnkt Pmhhc1JlY3Vyc2l2ZSA9IHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZTsKKwkJUXVlcnlD b25kU2V0RmxhZyhxcnksIHN0bXQtPndpdGhDbGF1c2UtPnJlY3Vyc2l2ZSwgSEFTX1JFQ1VS U0lWRSk7CiAJCXFyeS0+Y3RlTGlzdCA9IHRyYW5zZm9ybVdpdGhDbGF1c2UocHN0YXRlLCBz dG10LT53aXRoQ2xhdXNlKTsKLQkJcXJ5LT5oYXNNb2RpZnlpbmdDVEUgPSBwc3RhdGUtPnBf aGFzTW9kaWZ5aW5nQ1RFOworCQlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hh c01vZGlmeWluZ0NURSwgSEFTX01PRElGWUlOR19DVEUpOwogCX0KIAogCS8qIENvbXBsYWlu IGlmIHdlIGdldCBjYWxsZWQgZnJvbSBzb21lcGxhY2Ugd2hlcmUgSU5UTyBpcyBub3QgYWxs b3dlZCAqLwpAQCAtMTM5Niw3ICsxMzk2LDcgQEAgdHJhbnNmb3JtU2VsZWN0U3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJaWYgKHN0bXQtPmRpc3RpbmN0 Q2xhdXNlID09IE5JTCkKIAl7CiAJCXFyeS0+ZGlzdGluY3RDbGF1c2UgPSBOSUw7Ci0JCXFy eS0+aGFzRGlzdGluY3RPbiA9IGZhbHNlOworCQlRdWVyeUNsZWFyRmxhZyhxcnksIEhBU19E SVNUSU5DVF9PTik7CiAJfQogCWVsc2UgaWYgKGxpbml0aWFsKHN0bXQtPmRpc3RpbmN0Q2xh dXNlKSA9PSBOVUxMKQogCXsKQEAgLTE0MDUsNyArMTQwNSw3IEBAIHRyYW5zZm9ybVNlbGVj dFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCQkJCQkJCQkJ CQkJCSAgJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCQkJCQkgIHFyeS0+c29ydENsYXVz ZSwKIAkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gZmFs c2U7CisJCVF1ZXJ5Q2xlYXJGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTE0MTQsNyArMTQxNCw3IEBAIHRyYW5zZm9ybVNlbGVjdFN0bXQoUGFyc2VT dGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCQkJCQkJCQkJCQkJCQlzdG10LT5k aXN0aW5jdENsYXVzZSwKIAkJCQkJCQkJCQkJCQkJJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJ CQkJCQkJCQkJcXJ5LT5zb3J0Q2xhdXNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gdHJ1 ZTsKKwkJUXVlcnlTZXRGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAKIAkvKiB0 cmFuc2Zvcm0gTElNSVQgKi8KQEAgLTE0MzksMTAgKzE0MzksMTEgQEAgdHJhbnNmb3JtU2Vs ZWN0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5y dGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+am9pbnRyZWUg PSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBxdWFsKTsKIAotCXFyeS0+aGFz U3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7Ci0JcXJ5LT5oYXNXaW5kb3dGdW5j cyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKLQlxcnktPmhhc1RhcmdldFNSRnMgPSBw c3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnktPmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFz QWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBI QVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1dp bmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwg cHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19UQVJHRVRfU1JGUyk7CisJUXVlcnlDb25k U2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dzLCBIQVNfQUdHUyk7CisKIAogCWZvcmVh Y2gobCwgc3RtdC0+bG9ja2luZ0NsYXVzZSkKIAl7CkBAIC0xNDk4LDkgKzE0OTksOSBAQCB0 cmFuc2Zvcm1WYWx1ZXNDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpz dG10KQogCS8qIHByb2Nlc3MgdGhlIFdJVEggY2xhdXNlIGluZGVwZW5kZW50bHkgb2YgYWxs IGVsc2UgKi8KIAlpZiAoc3RtdC0+d2l0aENsYXVzZSkKIAl7Ci0JCXFyeS0+aGFzUmVjdXJz aXZlID0gc3RtdC0+d2l0aENsYXVzZS0+cmVjdXJzaXZlOworCQlRdWVyeUNvbmRTZXRGbGFn KHFyeSwgc3RtdC0+d2l0aENsYXVzZS0+cmVjdXJzaXZlLCBIQVNfUkVDVVJTSVZFKTsKIAkJ cXJ5LT5jdGVMaXN0ID0gdHJhbnNmb3JtV2l0aENsYXVzZShwc3RhdGUsIHN0bXQtPndpdGhD bGF1c2UpOwotCQlxcnktPmhhc01vZGlmeWluZ0NURSA9IHBzdGF0ZS0+cF9oYXNNb2RpZnlp bmdDVEU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzTW9kaWZ5aW5n Q1RFLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAJfQogCiAJLyoKQEAgLTE2NjgsNyArMTY2OSw3 IEBAIHRyYW5zZm9ybVZhbHVlc0NsYXVzZShQYXJzZVN0YXRlICpwc3RhdGUsIFNlbGVjdFN0 bXQgKnN0bXQpCiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9z OwogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBO VUxMKTsKIAotCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNTdWJMaW5rcywgSEFTX1NVQl9M SU5LUyk7CiAKIAlhc3NpZ25fcXVlcnlfY29sbGF0aW9ucyhwc3RhdGUsIHFyeSk7CiAKQEAg LTE3NjUsOSArMTc2Niw5IEBAIHRyYW5zZm9ybVNldE9wZXJhdGlvblN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBTZWxlY3RTdG10ICpzdG10KQogCS8qIFByb2Nlc3MgdGhlIFdJVEggY2xh dXNlIGluZGVwZW5kZW50bHkgb2YgYWxsIGVsc2UgKi8KIAlpZiAod2l0aENsYXVzZSkKIAl7 Ci0JCXFyeS0+aGFzUmVjdXJzaXZlID0gd2l0aENsYXVzZS0+cmVjdXJzaXZlOworCQlRdWVy eUNvbmRTZXRGbGFnKHFyeSwgd2l0aENsYXVzZS0+cmVjdXJzaXZlLCBIQVNfUkVDVVJTSVZF KTsKIAkJcXJ5LT5jdGVMaXN0ID0gdHJhbnNmb3JtV2l0aENsYXVzZShwc3RhdGUsIHdpdGhD bGF1c2UpOwotCQlxcnktPmhhc01vZGlmeWluZ0NURSA9IHBzdGF0ZS0+cF9oYXNNb2RpZnlp bmdDVEU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzTW9kaWZ5aW5n Q1RFLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAJfQogCiAJLyoKQEAgLTE5MTUsMTAgKzE5MTYs MTAgQEAgdHJhbnNmb3JtU2V0T3BlcmF0aW9uU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFNl bGVjdFN0bXQgKnN0bXQpCiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVy bWluZm9zOwogCXFyeS0+am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5s aXN0LCBOVUxMKTsKIAotCXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlu a3M7Ci0JcXJ5LT5oYXNXaW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsK LQlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnkt Pmhhc0FnZ3MgPSBwc3RhdGUtPnBfaGFzQWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwg cHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBIQVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRG bGFnKHFyeSwgcHN0YXRlLT5wX2hhc1dpbmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsK KwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19U QVJHRVRfU1JGUyk7CisJUXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dz LCBIQVNfQUdHUyk7CiAKIAlmb3JlYWNoKGwsIGxvY2tpbmdDbGF1c2UpCiAJewpAQCAtMjM3 OSw3ICsyMzgwLDcgQEAgdHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUs IFJldHVyblN0bXQgKnN0bXQpCiAJUXVlcnkJICAgKnFyeSA9IG1ha2VOb2RlKFF1ZXJ5KTsK IAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCXFyeS0+aXNSZXR1cm4gPSB0 cnVlOworCVF1ZXJ5U2V0RmxhZyhxcnksIElTX1JFVFVSTik7CiAKIAlxcnktPnRhcmdldExp c3QgPSBsaXN0X21ha2UxKG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSB0cmFuc2Zvcm1FeHBy KHBzdGF0ZSwgc3RtdC0+cmV0dXJudmFsLCBFWFBSX0tJTkRfU0VMRUNUX1RBUkdFVCksCiAJ CQkJCQkJCQkJCQkgMSwgTlVMTCwgZmFsc2UpKTsKQEAgLTIzODksMTAgKzIzOTAsMTAgQEAg dHJhbnNmb3JtUmV0dXJuU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFJldHVyblN0bXQgKnN0 bXQpCiAJcXJ5LT5ydGFibGUgPSBwc3RhdGUtPnBfcnRhYmxlOwogCXFyeS0+cnRlcGVybWlu Zm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsKIAlxcnktPmpvaW50cmVlID0gbWFrZUZy b21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgTlVMTCk7Ci0JcXJ5LT5oYXNTdWJMaW5rcyA9 IHBzdGF0ZS0+cF9oYXNTdWJMaW5rczsKLQlxcnktPmhhc1dpbmRvd0Z1bmNzID0gcHN0YXRl LT5wX2hhc1dpbmRvd0Z1bmNzOwotCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IHBzdGF0ZS0+cF9o YXNUYXJnZXRTUkZzOwotCXFyeS0+aGFzQWdncyA9IHBzdGF0ZS0+cF9oYXNBZ2dzOworCVF1 ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlua3MsIEhBU19TVUJfTElO S1MpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzV2luZG93RnVuY3Ms IEhBU19XSU5ET1dfRlVOQ1MpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBf aGFzVGFyZ2V0U1JGcywgSEFTX1RBUkdFVF9TUkZTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFy eSwgcHN0YXRlLT5wX2hhc0FnZ3MsIEhBU19BR0dTKTsKIAogCWFzc2lnbl9xdWVyeV9jb2xs YXRpb25zKHBzdGF0ZSwgcXJ5KTsKIApAQCAtMjQxNyw5ICsyNDE4LDkgQEAgdHJhbnNmb3Jt VXBkYXRlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFVwZGF0ZVN0bXQgKnN0bXQpCiAJLyog cHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBlbmRlbnRseSBvZiBhbGwgZWxzZSAqLwog CWlmIChzdG10LT53aXRoQ2xhdXNlKQogCXsKLQkJcXJ5LT5oYXNSZWN1cnNpdmUgPSBzdG10 LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmU7CisJCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBzdG10 LT53aXRoQ2xhdXNlLT5yZWN1cnNpdmUsIEhBU19SRUNVUlNJVkUpOwogCQlxcnktPmN0ZUxp c3QgPSB0cmFuc2Zvcm1XaXRoQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0J CXFyeS0+aGFzTW9kaWZ5aW5nQ1RFID0gcHN0YXRlLT5wX2hhc01vZGlmeWluZ0NURTsKKwkJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19N T0RJRllJTkdfQ1RFKTsKIAl9CiAKIAlxcnktPnJlc3VsdFJlbGF0aW9uID0gc2V0VGFyZ2V0 VGFibGUocHN0YXRlLCBzdG10LT5yZWxhdGlvbiwKQEAgLTI0NTcsOCArMjQ1OCw5IEBAIHRy YW5zZm9ybVVwZGF0ZVN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBVcGRhdGVTdG10ICpzdG10 KQogCXFyeS0+cnRlcGVybWluZm9zID0gcHN0YXRlLT5wX3J0ZXBlcm1pbmZvczsKIAlxcnkt PmpvaW50cmVlID0gbWFrZUZyb21FeHByKHBzdGF0ZS0+cF9qb2lubGlzdCwgcXVhbCk7CiAK LQlxcnktPmhhc1RhcmdldFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnkt Pmhhc1N1YkxpbmtzID0gcHN0YXRlLT5wX2hhc1N1YkxpbmtzOworCVF1ZXJ5Q29uZFNldEZs YWcocXJ5LCBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGcywgSEFTX1RBUkdFVF9TUkZTKTsKKwlR dWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1YkxpbmtzLCBIQVNfU1VCX0xJ TktTKTsKKwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRlLCBxcnkpOwogCkBA IC0yNzgxLDcgKzI3ODMsNyBAQCB0cmFuc2Zvcm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAq cHN0YXRlLCBQTEFzc2lnblN0bXQgKnN0bXQpCiAJaWYgKHNzdG10LT5kaXN0aW5jdENsYXVz ZSA9PSBOSUwpCiAJewogCQlxcnktPmRpc3RpbmN0Q2xhdXNlID0gTklMOwotCQlxcnktPmhh c0Rpc3RpbmN0T24gPSBmYWxzZTsKKwkJUXVlcnlDbGVhckZsYWcocXJ5LCBIQVNfRElTVElO Q1RfT04pOwogCX0KIAllbHNlIGlmIChsaW5pdGlhbChzc3RtdC0+ZGlzdGluY3RDbGF1c2Up ID09IE5VTEwpCiAJewpAQCAtMjc5MCw3ICsyNzkyLDcgQEAgdHJhbnNmb3JtUExBc3NpZ25T dG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwgUExBc3NpZ25TdG10ICpzdG10KQogCQkJCQkJCQkJ CQkJCSAgJnFyeS0+dGFyZ2V0TGlzdCwKIAkJCQkJCQkJCQkJCQkgIHFyeS0+c29ydENsYXVz ZSwKIAkJCQkJCQkJCQkJCQkgIGZhbHNlKTsKLQkJcXJ5LT5oYXNEaXN0aW5jdE9uID0gZmFs c2U7CisJCVF1ZXJ5Q2xlYXJGbGFnKHFyeSwgSEFTX0RJU1RJTkNUX09OKTsKIAl9CiAJZWxz ZQogCXsKQEAgLTI3OTksNyArMjgwMSw3IEBAIHRyYW5zZm9ybVBMQXNzaWduU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIFBMQXNzaWduU3RtdCAqc3RtdCkKIAkJCQkJCQkJCQkJCQkJc3N0 bXQtPmRpc3RpbmN0Q2xhdXNlLAogCQkJCQkJCQkJCQkJCQkmcXJ5LT50YXJnZXRMaXN0LAog CQkJCQkJCQkJCQkJCQlxcnktPnNvcnRDbGF1c2UpOwotCQlxcnktPmhhc0Rpc3RpbmN0T24g PSB0cnVlOworCQlRdWVyeVNldEZsYWcocXJ5LCBIQVNfRElTVElOQ1RfT04pOwogCX0KIAog CS8qIHRyYW5zZm9ybSBMSU1JVCAqLwpAQCAtMjgyMCwxMCArMjgyMiwxMCBAQCB0cmFuc2Zv cm1QTEFzc2lnblN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBQTEFzc2lnblN0bXQgKnN0bXQp CiAJcXJ5LT5ydGVwZXJtaW5mb3MgPSBwc3RhdGUtPnBfcnRlcGVybWluZm9zOwogCXFyeS0+ am9pbnRyZWUgPSBtYWtlRnJvbUV4cHIocHN0YXRlLT5wX2pvaW5saXN0LCBxdWFsKTsKIAot CXFyeS0+aGFzU3ViTGlua3MgPSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7Ci0JcXJ5LT5oYXNX aW5kb3dGdW5jcyA9IHBzdGF0ZS0+cF9oYXNXaW5kb3dGdW5jczsKLQlxcnktPmhhc1Rhcmdl dFNSRnMgPSBwc3RhdGUtPnBfaGFzVGFyZ2V0U1JGczsKLQlxcnktPmhhc0FnZ3MgPSBwc3Rh dGUtPnBfaGFzQWdnczsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRlLT5wX2hhc1N1 YkxpbmtzLCBIQVNfU1VCX0xJTktTKTsKKwlRdWVyeUNvbmRTZXRGbGFnKHFyeSwgcHN0YXRl LT5wX2hhc1dpbmRvd0Z1bmNzLCBIQVNfV0lORE9XX0ZVTkNTKTsKKwlRdWVyeUNvbmRTZXRG bGFnKHFyeSwgcHN0YXRlLT5wX2hhc1RhcmdldFNSRnMsIEhBU19UQVJHRVRfU1JGUyk7CisJ UXVlcnlDb25kU2V0RmxhZyhxcnksIHBzdGF0ZS0+cF9oYXNBZ2dzLCBIQVNfQUdHUyk7CiAK IAlmb3JlYWNoKGwsIHNzdG10LT5sb2NraW5nQ2xhdXNlKQogCXsKQEAgLTI4ODcsNyArMjg4 OSw3IEBAIHRyYW5zZm9ybURlY2xhcmVDdXJzb3JTdG10KFBhcnNlU3RhdGUgKnBzdGF0ZSwg RGVjbGFyZUN1cnNvclN0bXQgKnN0bXQpCiAJICogYWxsb3dlZCwgYnV0IHRoZSBzZW1hbnRp Y3Mgb2Ygd2hlbiB0aGUgdXBkYXRlcyBvY2N1ciBtaWdodCBiZQogCSAqIHN1cnByaXNpbmcu KQogCSAqLwotCWlmIChxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFKQorCWlmIChRdWVyeUhhc01v ZGlmeWluZ0NURShxdWVyeSkpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCSBlcnJtc2coIkRFQ0xBUkUgQ1VS U09SIG11c3Qgbm90IGNvbnRhaW4gZGF0YS1tb2RpZnlpbmcgc3RhdGVtZW50cyBpbiBXSVRI IikpKTsKQEAgLTMwMTQsNyArMzAxNiw3IEBAIHRyYW5zZm9ybUNyZWF0ZVRhYmxlQXNTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQpCiAJCSAqIG1h dGVyaWFsaXplZCB2aWV3LiBJdCdzIG5vdCBzdWZmaWNpZW50bHkgY2xlYXIgd2hhdCB0aGUg dXNlciB3b3VsZAogCQkgKiB3YW50IHRvIGhhcHBlbiBpZiB0aGUgTVYgaXMgcmVmcmVzaGVk IG9yIGluY3JlbWVudGFsbHkgbWFpbnRhaW5lZC4KIAkJICovCi0JCWlmIChxdWVyeS0+aGFz TW9kaWZ5aW5nQ1RFKQorCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAogCQkJCQkgZXJybXNnKCJtYXRlcmlhbGl6ZWQgdmlld3MgbXVzdCBub3QgdXNl IGRhdGEtbW9kaWZ5aW5nIHN0YXRlbWVudHMgaW4gV0lUSCIpKSk7CkBAIC0zMjU0LDIxICsz MjU2LDIxIEBAIENoZWNrU2VsZWN0TG9ja2luZyhRdWVyeSAqcXJ5LCBMb2NrQ2xhdXNlU3Ry ZW5ndGggc3RyZW5ndGgpCiAJCSAgdHJhbnNsYXRvcjogJXMgaXMgYSBTUUwgcm93IGxvY2tp bmcgY2xhdXNlIHN1Y2ggYXMgRk9SIFVQREFURSAqLwogCQkJCSBlcnJtc2coIiVzIGlzIG5v dCBhbGxvd2VkIHdpdGggSEFWSU5HIGNsYXVzZSIsCiAJCQkJCQlMQ1NfYXNTdHJpbmcoc3Ry ZW5ndGgpKSkpOwotCWlmIChxcnktPmhhc0FnZ3MpCisJaWYgKFF1ZXJ5SGFzQWdncyhxcnkp KQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKIAkJLyotLS0tLS0KIAkJICB0cmFuc2xhdG9yOiAlcyBpcyBhIFNRTCBy b3cgbG9ja2luZyBjbGF1c2Ugc3VjaCBhcyBGT1IgVVBEQVRFICovCiAJCQkJIGVycm1zZygi JXMgaXMgbm90IGFsbG93ZWQgd2l0aCBhZ2dyZWdhdGUgZnVuY3Rpb25zIiwKIAkJCQkJCUxD U19hc1N0cmluZyhzdHJlbmd0aCkpKSk7Ci0JaWYgKHFyeS0+aGFzV2luZG93RnVuY3MpCisJ aWYgKFF1ZXJ5SGFzV2luZG93RnVuY3MocXJ5KSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCiAJCS8qLS0tLS0tCiAJ CSAgdHJhbnNsYXRvcjogJXMgaXMgYSBTUUwgcm93IGxvY2tpbmcgY2xhdXNlIHN1Y2ggYXMg Rk9SIFVQREFURSAqLwogCQkJCSBlcnJtc2coIiVzIGlzIG5vdCBhbGxvd2VkIHdpdGggd2lu ZG93IGZ1bmN0aW9ucyIsCiAJCQkJCQlMQ1NfYXNTdHJpbmcoc3RyZW5ndGgpKSkpOwotCWlm IChxcnktPmhhc1RhcmdldFNSRnMpCisJaWYgKFF1ZXJ5SGFzVGFyZ2V0U1JGcyhxcnkpKQog CQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQ UE9SVEVEKSwKIAkJLyotLS0tLS0KQEAgLTM1MjMsNyArMzUyNSw3IEBAIGFwcGx5TG9ja2lu Z0NsYXVzZShRdWVyeSAqcXJ5LCBJbmRleCBydGluZGV4LAogCiAJLyogSWYgaXQncyBhbiBl eHBsaWNpdCBjbGF1c2UsIG1ha2Ugc3VyZSBoYXNGb3JVcGRhdGUgZ2V0cyBzZXQgKi8KIAlp ZiAoIXB1c2hlZERvd24pCi0JCXFyeS0+aGFzRm9yVXBkYXRlID0gdHJ1ZTsKKwkJUXVlcnlT ZXRGbGFnKHFyeSwgSEFTX0ZPUl9VUERBVEUpOwogCiAJLyogQ2hlY2sgZm9yIHByZS1leGlz dGluZyBlbnRyeSBmb3Igc2FtZSBydGluZGV4ICovCiAJaWYgKChyYyA9IGdldF9wYXJzZV9y b3dtYXJrKHFyeSwgcnRpbmRleCkpICE9IE5VTEwpCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9wYXJzZXIvcGFyc2VfY3RlLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMK aW5kZXggM2M4OGM5YWJiYS4uNTcxOWI0MzdjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX2N0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUu YwpAQCAtMzQ2LDcgKzM0Niw3IEBAIGFuYWx5emVDVEUoUGFyc2VTdGF0ZSAqcHN0YXRlLCBD b21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKiBtYXR0ZXJzIGZvciBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzLCBmb3Igd2hpY2ggdGhlIGZsYWcgd2lsbCBiZQogCSAqIHByb3BhZ2F0ZWQg dG8gdGhlIE1vZGlmeVRhYmxlIHBsYW4gbm9kZS4pCiAJICovCi0JcXVlcnktPmNhblNldFRh ZyA9IGZhbHNlOworCVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBDQU5fU0VUX1RBRyk7CiAKIAlp ZiAoIWN0ZS0+Y3RlcmVjdXJzaXZlKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9tZXJnZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21lcmdlLmMK aW5kZXggNWY2YTY4M2FiOS4uYmRlY2ZiMjI0NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cGFyc2VyL3BhcnNlX21lcmdlLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX21l cmdlLmMKQEAgLTEwOCw3ICsxMDgsNyBAQCB0cmFuc2Zvcm1NZXJnZVN0bXQoUGFyc2VTdGF0 ZSAqcHN0YXRlLCBNZXJnZVN0bXQgKnN0bXQpCiAJQXNzZXJ0KHBzdGF0ZS0+cF9jdGVuYW1l c3BhY2UgPT0gTklMKTsKIAogCXFyeS0+Y29tbWFuZFR5cGUgPSBDTURfTUVSR0U7Ci0JcXJ5 LT5oYXNSZWN1cnNpdmUgPSBmYWxzZTsKKwlRdWVyeUNsZWFyRmxhZyhxcnksIEhBU19SRUNV UlNJVkUpOwogCiAJLyogcHJvY2VzcyB0aGUgV0lUSCBjbGF1c2UgaW5kZXBlbmRlbnRseSBv ZiBhbGwgZWxzZSAqLwogCWlmIChzdG10LT53aXRoQ2xhdXNlKQpAQCAtMTE5LDcgKzExOSw3 IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAq c3RtdCkKIAkJCQkJIGVycm1zZygiV0lUSCBSRUNVUlNJVkUgaXMgbm90IHN1cHBvcnRlZCBm b3IgTUVSR0Ugc3RhdGVtZW50IikpKTsKIAogCQlxcnktPmN0ZUxpc3QgPSB0cmFuc2Zvcm1X aXRoQ2xhdXNlKHBzdGF0ZSwgc3RtdC0+d2l0aENsYXVzZSk7Ci0JCXFyeS0+aGFzTW9kaWZ5 aW5nQ1RFID0gcHN0YXRlLT5wX2hhc01vZGlmeWluZ0NURTsKKwkJUXVlcnlDb25kU2V0Rmxh ZyhxcnksIHBzdGF0ZS0+cF9oYXNNb2RpZnlpbmdDVEUsIEhBU19NT0RJRllJTkdfQ1RFKTsK IAl9CiAKIAkvKgpAQCAtMjU5LDcgKzI1OSw3IEBAIHRyYW5zZm9ybU1lcmdlU3RtdChQYXJz ZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAqc3RtdCkKIAogCQkvKiBVc2UgYW4gb3V0ZXIg am9pbiBpZiBhbnkgSU5TRVJUIGFjdGlvbnMgZXhpc3QgaW4gdGhlIGNvbW1hbmQuICovCiAJ CWlmIChhY3Rpb24tPmNvbW1hbmRUeXBlID09IENNRF9JTlNFUlQpCi0JCQlxcnktPm1lcmdl VXNlT3V0ZXJKb2luID0gdHJ1ZTsKKwkJCVF1ZXJ5U2V0RmxhZyhxcnksIE1FUkdFX1VTRV9P VVRFUkpPSU4pOwogCiAJCS8qCiAJCSAqIFNldCBuYW1lc3BhY2UgZm9yIHRoZSBzcGVjaWZp YyBhY3Rpb24uIFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZQpAQCAtMzkzLDggKzM5Myw4IEBA IHRyYW5zZm9ybU1lcmdlU3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIE1lcmdlU3RtdCAqc3Rt dCkKIAkvKiBSRVRVUk5JTkcgY291bGQgcG90ZW50aWFsbHkgYmUgYWRkZWQgaW4gdGhlIGZ1 dHVyZSwgYnV0IG5vdCBpbiBTUUwgc3RkICovCiAJcXJ5LT5yZXR1cm5pbmdMaXN0ID0gTlVM TDsKIAotCXFyeS0+aGFzVGFyZ2V0U1JGcyA9IGZhbHNlOwotCXFyeS0+aGFzU3ViTGlua3Mg PSBwc3RhdGUtPnBfaGFzU3ViTGlua3M7CisJUXVlcnlDbGVhckZsYWcocXJ5LCBIQVNfVEFS R0VUX1NSRlMpOworCVF1ZXJ5Q29uZFNldEZsYWcocXJ5LCBwc3RhdGUtPnBfaGFzU3ViTGlu a3MsIEhBU19TVUJfTElOS1MpOwogCiAJYXNzaWduX3F1ZXJ5X2NvbGxhdGlvbnMocHN0YXRl LCBxcnkpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVEZWZp bmUuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5jCmluZGV4IGI0NDky NDRhNTMuLmUwZWQzZjYxNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZURlZmluZS5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZURlZmluZS5j CkBAIC0zNTAsNyArMzUwLDcgQEAgRGVmaW5lUXVlcnlSZXdyaXRlKGNvbnN0IGNoYXIgKnJ1 bGVuYW1lLAogCQkvKgogCQkgKiAuLi4gaXQgY2Fubm90IGNvbnRhaW4gZGF0YS1tb2RpZnlp bmcgV0lUSCAuLi4KIAkJICovCi0JCWlmIChxdWVyeS0+aGFzTW9kaWZ5aW5nQ1RFKQorCQlp ZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkpKQogCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAogCQkJCQkgZXJy bXNnKCJydWxlcyBvbiBTRUxFQ1QgbXVzdCBub3QgY29udGFpbiBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzIGluIFdJVEgiKSkpOwpAQCAtNjg1LDcgKzY4NSw3IEBAIHNldFJ1bGVDaGVj a0FzVXNlcl9RdWVyeShRdWVyeSAqcXJ5LCBPaWQgdXNlcmlkKQogCX0KIAogCS8qIElmIHRo ZXJlIGFyZSBzdWJsaW5rcywgc2VhcmNoIGZvciB0aGVtIGFuZCBwcm9jZXNzIHRoZWlyIFJU RXMgKi8KLQlpZiAocXJ5LT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNTdWJMaW5rcyhx cnkpKQogCQlxdWVyeV90cmVlX3dhbGtlcihxcnksIHNldFJ1bGVDaGVja0FzVXNlcl93YWxr ZXIsICh2b2lkICopICZ1c2VyaWQsCiAJCQkJCQkgIFFUV19JR05PUkVfUkNfU1VCUVVFUklF Uyk7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVy LmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5kbGVyLmMKaW5kZXggZjYwYjM0 ZGViNi4uNDJiMjNhNmQ4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmV3cml0ZS9yZXdy aXRlSGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIu YwpAQCAtMjkyLDcgKzI5Miw3IEBAIEFjcXVpcmVSZXdyaXRlTG9ja3MoUXVlcnkgKnBhcnNl dHJlZSwKIAkgKiBSZWN1cnNlIGludG8gc3VibGluayBzdWJxdWVyaWVzLCB0b28uICBCdXQg d2UgYWxyZWFkeSBkaWQgdGhlIG9uZXMgaW4KIAkgKiB0aGUgcnRhYmxlIGFuZCBjdGVMaXN0 LgogCSAqLwotCWlmIChwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKQorCWlmIChRdWVyeUhhc1N1 YkxpbmtzKHBhcnNldHJlZSkpCiAJCXF1ZXJ5X3RyZWVfd2Fsa2VyKHBhcnNldHJlZSwgYWNx dWlyZUxvY2tzT25TdWJMaW5rcywgJmNvbnRleHQsCiAJCQkJCQkgIFFUV19JR05PUkVfUkNf U1VCUVVFUklFUyk7CiB9CkBAIC00NTcsNyArNDU3LDcgQEAgcmV3cml0ZVJ1bGVBY3Rpb24o UXVlcnkgKnBhcnNldHJlZSwKIAkgKiBUaGVyZSBjb3VsZCBoYXZlIGJlZW4gc29tZSBTdWJM aW5rcyBpbiBwYXJzZXRyZWUncyBydGFibGUsIGluIHdoaWNoCiAJICogY2FzZSB3ZSdkIGJl dHRlciBtYXJrIHRoZSBzdWJfYWN0aW9uIGNvcnJlY3RseS4KIAkgKi8KLQlpZiAocGFyc2V0 cmVlLT5oYXNTdWJMaW5rcyAmJiAhc3ViX2FjdGlvbi0+aGFzU3ViTGlua3MpCisJaWYgKFF1 ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVlKSAmJiAhUXVlcnlIYXNTdWJMaW5rcyhzdWJfYWN0 aW9uKSkKIAl7CiAJCWZvcmVhY2gobGMsIHBhcnNldHJlZS0+cnRhYmxlKQogCQl7CkBAIC00 NjYsMjggKzQ2NiwyOCBAQCByZXdyaXRlUnVsZUFjdGlvbihRdWVyeSAqcGFyc2V0cmVlLAog CQkJc3dpdGNoIChydGUtPnJ0ZWtpbmQpCiAJCQl7CiAJCQkJY2FzZSBSVEVfUkVMQVRJT046 Ci0JCQkJCXN1Yl9hY3Rpb24tPmhhc1N1YkxpbmtzID0KLQkJCQkJCWNoZWNrRXhwckhhc1N1 YkxpbmsoKE5vZGUgKikgcnRlLT50YWJsZXNhbXBsZSk7CisJCQkJCVF1ZXJ5Q29uZFNldEZs YWcoc3ViX2FjdGlvbiwKKwkJCQkJCWNoZWNrRXhwckhhc1N1YkxpbmsoKE5vZGUgKikgcnRl LT50YWJsZXNhbXBsZSksIEhBU19TVUJfTElOS1MpOwogCQkJCQlicmVhazsKIAkJCQljYXNl IFJURV9GVU5DVElPTjoKLQkJCQkJc3ViX2FjdGlvbi0+aGFzU3ViTGlua3MgPQotCQkJCQkJ Y2hlY2tFeHBySGFzU3ViTGluaygoTm9kZSAqKSBydGUtPmZ1bmN0aW9ucyk7CisJCQkJCVF1 ZXJ5Q29uZFNldEZsYWcoc3ViX2FjdGlvbiwKKwkJCQkJCWNoZWNrRXhwckhhc1N1Ykxpbmso KE5vZGUgKikgcnRlLT5mdW5jdGlvbnMpLCBIQVNfU1VCX0xJTktTKTsKIAkJCQkJYnJlYWs7 CiAJCQkJY2FzZSBSVEVfVEFCTEVGVU5DOgotCQkJCQlzdWJfYWN0aW9uLT5oYXNTdWJMaW5r cyA9Ci0JCQkJCQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIHJ0ZS0+dGFibGVmdW5j KTsKKwkJCQkJUXVlcnlDb25kU2V0RmxhZyhzdWJfYWN0aW9uLAorCQkJCQkJY2hlY2tFeHBy SGFzU3ViTGluaygoTm9kZSAqKSBydGUtPnRhYmxlZnVuYyksIEhBU19TVUJfTElOS1MpOwog CQkJCQlicmVhazsKIAkJCQljYXNlIFJURV9WQUxVRVM6Ci0JCQkJCXN1Yl9hY3Rpb24tPmhh c1N1YkxpbmtzID0KLQkJCQkJCWNoZWNrRXhwckhhc1N1YkxpbmsoKE5vZGUgKikgcnRlLT52 YWx1ZXNfbGlzdHMpOworCQkJCQlRdWVyeUNvbmRTZXRGbGFnKHN1Yl9hY3Rpb24sCisJCQkJ CQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIHJ0ZS0+dmFsdWVzX2xpc3RzKSwgSEFT X1NVQl9MSU5LUyk7CiAJCQkJCWJyZWFrOwogCQkJCWRlZmF1bHQ6CiAJCQkJCS8qIG90aGVy IFJURSB0eXBlcyBkb24ndCBjb250YWluIGJhcmUgZXhwcmVzc2lvbnMgKi8KIAkJCQkJYnJl YWs7CiAJCQl9Ci0JCQlzdWJfYWN0aW9uLT5oYXNTdWJMaW5rcyB8PQotCQkJCWNoZWNrRXhw ckhhc1N1YkxpbmsoKE5vZGUgKikgcnRlLT5zZWN1cml0eVF1YWxzKTsKLQkJCWlmIChzdWJf YWN0aW9uLT5oYXNTdWJMaW5rcykKKwkJCWlmIChjaGVja0V4cHJIYXNTdWJMaW5rKChOb2Rl ICopIHJ0ZS0+c2VjdXJpdHlRdWFscykpCisJCQkJUXVlcnlTZXRGbGFnKHN1Yl9hY3Rpb24s IEhBU19TVUJfTElOS1MpOworCQkJaWYgKFF1ZXJ5SGFzU3ViTGlua3Moc3ViX2FjdGlvbikp CiAJCQkJYnJlYWs7CQkJLyogbm8gbmVlZCB0byBrZWVwIHNjYW5uaW5nIHJ0YWJsZSAqLwog CQl9CiAJfQpAQCAtNDk5LDcgKzQ5OSw4IEBAIHJld3JpdGVSdWxlQWN0aW9uKFF1ZXJ5ICpw YXJzZXRyZWUsCiAJICogdGhpcyBpcyBhIG5vLW9wIGJlY2F1c2UgUkxTIGNvbmRpdGlvbnMg YXJlbid0IGFkZGVkIHRpbGwgbGF0ZXIsIGJ1dCBpdAogCSAqIHNlZW1zIGxpa2UgZ29vZCBm dXR1cmUtcHJvb2ZpbmcgdG8gZG8gdGhpcyBhbnl3YXkuKQogCSAqLwotCXN1Yl9hY3Rpb24t Pmhhc1Jvd1NlY3VyaXR5IHw9IHBhcnNldHJlZS0+aGFzUm93U2VjdXJpdHk7CisJaWYoUXVl cnlIYXNSb3dTZWN1cml0eShwYXJzZXRyZWUpKQorCQlRdWVyeVNldEZsYWcoc3ViX2FjdGlv biwgSEFTX1JPV19TRUNVUklUWSk7CiAKIAkvKgogCSAqIEVhY2ggcnVsZSBhY3Rpb24ncyBq b2ludHJlZSBzaG91bGQgYmUgdGhlIG1haW4gcGFyc2V0cmVlJ3Mgam9pbnRyZWUKQEAgLTU0 Niw5ICs1NDcsOSBAQCByZXdyaXRlUnVsZUFjdGlvbihRdWVyeSAqcGFyc2V0cmVlLAogCQkJ ICogVGhlcmUgY291bGQgaGF2ZSBiZWVuIHNvbWUgU3ViTGlua3MgaW4gbmV3am9pbnRyZWUs IGluIHdoaWNoCiAJCQkgKiBjYXNlIHdlJ2QgYmV0dGVyIG1hcmsgdGhlIHN1Yl9hY3Rpb24g Y29ycmVjdGx5LgogCQkJICovCi0JCQlpZiAocGFyc2V0cmVlLT5oYXNTdWJMaW5rcyAmJiAh c3ViX2FjdGlvbi0+aGFzU3ViTGlua3MpCi0JCQkJc3ViX2FjdGlvbi0+aGFzU3ViTGlua3Mg PQotCQkJCQljaGVja0V4cHJIYXNTdWJMaW5rKChOb2RlICopIG5ld2pvaW50cmVlKTsKKwkJ CWlmIChRdWVyeUhhc1N1YkxpbmtzKHBhcnNldHJlZSkgJiYgIVF1ZXJ5SGFzU3ViTGlua3Mo c3ViX2FjdGlvbikpCisJCQkJUXVlcnlDb25kU2V0RmxhZyhzdWJfYWN0aW9uLAorCQkJCQkJ CQkgY2hlY2tFeHBySGFzU3ViTGluaygoTm9kZSAqKSBuZXdqb2ludHJlZSksIEhBU19TVUJf TElOS1MpOwogCQl9CiAJfQogCkBAIC01OTAsOCArNTkxLDEwIEBAIHJld3JpdGVSdWxlQWN0 aW9uKFF1ZXJ5ICpwYXJzZXRyZWUsCiAJCXN1Yl9hY3Rpb24tPmN0ZUxpc3QgPSBsaXN0X2Nv bmNhdChzdWJfYWN0aW9uLT5jdGVMaXN0LAogCQkJCQkJCQkJCSAgY29weU9iamVjdChwYXJz ZXRyZWUtPmN0ZUxpc3QpKTsKIAkJLyogLi4uIGFuZCBkb24ndCBmb3JnZXQgYWJvdXQgdGhl IGFzc29jaWF0ZWQgZmxhZ3MgKi8KLQkJc3ViX2FjdGlvbi0+aGFzUmVjdXJzaXZlIHw9IHBh cnNldHJlZS0+aGFzUmVjdXJzaXZlOwotCQlzdWJfYWN0aW9uLT5oYXNNb2RpZnlpbmdDVEUg fD0gcGFyc2V0cmVlLT5oYXNNb2RpZnlpbmdDVEU7CisJCWlmIChRdWVyeUhhc1JlY3Vyc2l2 ZShwYXJzZXRyZWUpKQorCQkJUXVlcnlTZXRGbGFnKHN1Yl9hY3Rpb24sIEhBU19SRUNVUlNJ VkUpOworCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocGFyc2V0cmVlKSkKKwkJCVF1ZXJ5 U2V0RmxhZyhzdWJfYWN0aW9uLCBIQVNfTU9ESUZZSU5HX0NURSk7CiAKIAkJLyoKIAkJICog SWYgcnVsZV9hY3Rpb24gaXMgZGlmZmVyZW50IGZyb20gc3ViX2FjdGlvbiAoaS5lLiwgdGhl IHJ1bGUgYWN0aW9uCkBAIC02MDUsNyArNjA4LDcgQEAgcmV3cml0ZVJ1bGVBY3Rpb24oUXVl cnkgKnBhcnNldHJlZSwKIAkJICogaGF2ZSB0byBpbmNyZW1lbnQgY3RlbGV2ZWxzdXAgaW4g UlRFcyBhbmQgU3ViTGlua3MgY29waWVkIGZyb20gdGhlCiAJCSAqIG9yaWdpbmFsIHF1ZXJ5 LiAgRm9yIG5vdywgaXQgZG9lc24ndCBzZWVtIHdvcnRoIHRoZSB0cm91YmxlLgogCQkgKi8K LQkJaWYgKHN1Yl9hY3Rpb24tPmhhc01vZGlmeWluZ0NURSAmJiBydWxlX2FjdGlvbiAhPSBz dWJfYWN0aW9uKQorCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUoc3ViX2FjdGlvbikgJiYg cnVsZV9hY3Rpb24gIT0gc3ViX2FjdGlvbikKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShl cnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKIAkJCQkJIGVycm1zZygi SU5TRVJUIC4uLiBTRUxFQ1QgcnVsZSBhY3Rpb25zIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBx dWVyaWVzIGhhdmluZyBkYXRhLW1vZGlmeWluZyBzdGF0ZW1lbnRzIGluIFdJVEgiKSkpOwpA QCAtNjcyLDE1ICs2NzUsMTYgQEAgcmV3cml0ZVJ1bGVBY3Rpb24oUXVlcnkgKnBhcnNldHJl ZSwKIAkJCQkJCQkJCSAgcnVsZV9hY3Rpb24tPnJldHVybmluZ0xpc3QsCiAJCQkJCQkJCQkg IFJFUExBQ0VWQVJTX1JFUE9SVF9FUlJPUiwKIAkJCQkJCQkJCSAgMCwKLQkJCQkJCQkJCSAg JnJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5rcyk7CisJCQkJCQkJCQkgICZydWxlX2FjdGlvbi0+ ZmxhZ3MpOwogCiAJCS8qCiAJCSAqIFRoZXJlIGNvdWxkIGhhdmUgYmVlbiBzb21lIFN1Ykxp bmtzIGluIHBhcnNldHJlZSdzIHJldHVybmluZ0xpc3QsCiAJCSAqIGluIHdoaWNoIGNhc2Ug d2UnZCBiZXR0ZXIgbWFyayB0aGUgcnVsZV9hY3Rpb24gY29ycmVjdGx5LgogCQkgKi8KLQkJ aWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MgJiYgIXJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5r cykKLQkJCXJ1bGVfYWN0aW9uLT5oYXNTdWJMaW5rcyA9Ci0JCQkJY2hlY2tFeHBySGFzU3Vi TGluaygoTm9kZSAqKSBydWxlX2FjdGlvbi0+cmV0dXJuaW5nTGlzdCk7CisJCWlmIChRdWVy eUhhc1N1YkxpbmtzKHBhcnNldHJlZSkgJiYgIVF1ZXJ5SGFzU3ViTGlua3MocnVsZV9hY3Rp b24pKQorCQkJUXVlcnlDb25kU2V0RmxhZyhydWxlX2FjdGlvbiwKKwkJCQkJCQkgY2hlY2tF eHBySGFzU3ViTGluaygoTm9kZSAqKSBydWxlX2FjdGlvbi0+cmV0dXJuaW5nTGlzdCksCisJ CQkJCQkJIEhBU19TVUJfTElOS1MpOwogCX0KIAogCXJldHVybiBydWxlX2FjdGlvbjsKQEAg LTIxNTQsNyArMjE1OCw3IEBAIGZpcmVSSVJydWxlcyhRdWVyeSAqcGFyc2V0cmVlLCBMaXN0 ICphY3RpdmVSSVJzKQogCSAqIFJlY3Vyc2UgaW50byBzdWJsaW5rIHN1YnF1ZXJpZXMsIHRv by4gIEJ1dCB3ZSBhbHJlYWR5IGRpZCB0aGUgb25lcyBpbgogCSAqIHRoZSBydGFibGUgYW5k IGN0ZUxpc3QuCiAJICovCi0JaWYgKHBhcnNldHJlZS0+aGFzU3ViTGlua3MpCisJaWYgKFF1 ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVlKSkKIAkJcXVlcnlfdHJlZV93YWxrZXIocGFyc2V0 cmVlLCBmaXJlUklSb25TdWJMaW5rLCAodm9pZCAqKSBhY3RpdmVSSVJzLAogCQkJCQkJICBR VFdfSUdOT1JFX1JDX1NVQlFVRVJJRVMpOwogCkBAIC0yMjUzLDkgKzIyNTcsOSBAQCBmaXJl UklScnVsZXMoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqYWN0aXZlUklScykKIAkJICogYXBw bGllcywgb3IgaWYgdGhlIG5ldyBxdWFscyBoYWQgc3VibGlua3MuCiAJCSAqLwogCQlpZiAo aGFzUm93U2VjdXJpdHkpCi0JCQlwYXJzZXRyZWUtPmhhc1Jvd1NlY3VyaXR5ID0gdHJ1ZTsK KwkJCVF1ZXJ5U2V0RmxhZyhwYXJzZXRyZWUsIEhBU19ST1dfU0VDVVJJVFkpOwogCQlpZiAo aGFzU3ViTGlua3MpCi0JCQlwYXJzZXRyZWUtPmhhc1N1YkxpbmtzID0gdHJ1ZTsKKwkJCVF1 ZXJ5U2V0RmxhZyhwYXJzZXRyZWUsIEhBU19TVUJfTElOS1MpOwogCiAJCXRhYmxlX2Nsb3Nl KHJlbCwgTm9Mb2NrKTsKIAl9CkBAIC0yMzExLDcgKzIzMTUsNyBAQCBDb3B5QW5kQWRkSW52 ZXJ0ZWRRdWFsKFF1ZXJ5ICpwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCSBSRVBMQUNFVkFSU19D SEFOR0VfVkFSTk8gOgogCQkJCQkJCQkJCQkgUkVQTEFDRVZBUlNfU1VCU1RJVFVURV9OVUxM LAogCQkJCQkJCQkJCQkgcnRfaW5kZXgsCi0JCQkJCQkJCQkJCSAmcGFyc2V0cmVlLT5oYXNT dWJMaW5rcyk7CisJCQkJCQkJCQkJCSAmcGFyc2V0cmVlLT5mbGFncyk7CiAJLyogQW5kIGF0 dGFjaCB0aGUgZml4ZWQgcXVhbCAqLwogCUFkZEludmVydGVkUXVhbChwYXJzZXRyZWUsIG5l d19xdWFsKTsKIApAQCAtMjQxOSw3ICsyNDIzLDcgQEAgZmlyZVJ1bGVzKFF1ZXJ5ICpwYXJz ZXRyZWUsCiAJCQkJCQkJCQkJCXJldHVybmluZ19mbGFnKTsKIAogCQkJcnVsZV9hY3Rpb24t PnF1ZXJ5U291cmNlID0gcXNyYzsKLQkJCXJ1bGVfYWN0aW9uLT5jYW5TZXRUYWcgPSBmYWxz ZTsgLyogbWlnaHQgY2hhbmdlIGxhdGVyICovCisJCQlRdWVyeUNsZWFyRmxhZyhydWxlX2Fj dGlvbiwgQ0FOX1NFVF9UQUcpOyAvKiBtaWdodCBjaGFuZ2UgbGF0ZXIgKi8KIAogCQkJcmVz dWx0cyA9IGxhcHBlbmQocmVzdWx0cywgcnVsZV9hY3Rpb24pOwogCQl9CkBAIC0yNjIyLDEz ICsyNjI2LDEzIEBAIHZpZXdfcXVlcnlfaXNfYXV0b191cGRhdGFibGUoUXVlcnkgKnZpZXdx dWVyeSwgYm9vbCBjaGVja19jb2xzKQogCSAqIFRoZXNlIHJlc3RyaWN0aW9ucyBlbnN1cmUg dGhhdCBlYWNoIHJvdyBvZiB0aGUgdmlldyBjb3JyZXNwb25kcyB0byBhCiAJICogdW5pcXVl IHJvdyBpbiB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLgogCSAqLwotCWlmICh2aWV3 cXVlcnktPmhhc0FnZ3MpCisJaWYgKFF1ZXJ5SGFzQWdncyh2aWV3cXVlcnkpKQogCQlyZXR1 cm4gZ2V0dGV4dF9ub29wKCJWaWV3cyB0aGF0IHJldHVybiBhZ2dyZWdhdGUgZnVuY3Rpb25z IGFyZSBub3QgYXV0b21hdGljYWxseSB1cGRhdGFibGUuIik7CiAKLQlpZiAodmlld3F1ZXJ5 LT5oYXNXaW5kb3dGdW5jcykKKwlpZiAoUXVlcnlIYXNXaW5kb3dGdW5jcyh2aWV3cXVlcnkp KQogCQlyZXR1cm4gZ2V0dGV4dF9ub29wKCJWaWV3cyB0aGF0IHJldHVybiB3aW5kb3cgZnVu Y3Rpb25zIGFyZSBub3QgYXV0b21hdGljYWxseSB1cGRhdGFibGUuIik7CiAKLQlpZiAodmll d3F1ZXJ5LT5oYXNUYXJnZXRTUkZzKQorCWlmIChRdWVyeUhhc1RhcmdldFNSRnModmlld3F1 ZXJ5KSkKIAkJcmV0dXJuIGdldHRleHRfbm9vcCgiVmlld3MgdGhhdCByZXR1cm4gc2V0LXJl dHVybmluZyBmdW5jdGlvbnMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHVwZGF0YWJsZS4iKTsK IAogCS8qCkBAIC0zMjEyLDcgKzMyMTYsNyBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAq cGFyc2V0cmVlLCBSZWxhdGlvbiB2aWV3KQogCSAqIGJlIGFueSBzdWJxdWVyaWVzIGluIHRo ZSByYW5nZSB0YWJsZSBvciBDVEVzLCBzbyB3ZSBjYW4gc2tpcCB0aG9zZSwgYXMKIAkgKiBp biBBY3F1aXJlUmV3cml0ZUxvY2tzLgogCSAqLwotCWlmICh2aWV3cXVlcnktPmhhc1N1Ykxp bmtzKQorCWlmIChRdWVyeUhhc1N1YkxpbmtzKHZpZXdxdWVyeSkpCiAJewogCQlhY3F1aXJl TG9ja3NPblN1YkxpbmtzX2NvbnRleHQgY29udGV4dDsKIApAQCAtMzQ3Myw3ICszNDc3LDcg QEAgcmV3cml0ZVRhcmdldFZpZXcoUXVlcnkgKnBhcnNldHJlZSwgUmVsYXRpb24gdmlldykK IAkJCQkJCQkJCSAgdG1wX3RsaXN0LAogCQkJCQkJCQkJICBSRVBMQUNFVkFSU19SRVBPUlRf RVJST1IsCiAJCQkJCQkJCQkgIDAsCi0JCQkJCQkJCQkgICZwYXJzZXRyZWUtPmhhc1N1Ykxp bmtzKTsKKwkJCQkJCQkJCSAgJnBhcnNldHJlZS0+ZmxhZ3MpOwogCX0KIAogCS8qCkBAIC0z NTI0LDggKzM1MjgsOCBAQCByZXdyaXRlVGFyZ2V0VmlldyhRdWVyeSAqcGFyc2V0cmVlLCBS ZWxhdGlvbiB2aWV3KQogCQkJICogTWFrZSBzdXJlIHRoYXQgdGhlIHF1ZXJ5IGlzIG1hcmtl ZCBjb3JyZWN0bHkgaWYgdGhlIGFkZGVkIHF1YWwKIAkJCSAqIGhhcyBzdWJsaW5rcy4KIAkJ CSAqLwotCQkJaWYgKCFwYXJzZXRyZWUtPmhhc1N1YkxpbmtzKQotCQkJCXBhcnNldHJlZS0+ aGFzU3ViTGlua3MgPSBjaGVja0V4cHJIYXNTdWJMaW5rKHZpZXdxdWFsKTsKKwkJCWlmICgh UXVlcnlIYXNTdWJMaW5rcyhwYXJzZXRyZWUpKQorCQkJCVF1ZXJ5Q29uZFNldEZsYWcocGFy c2V0cmVlLCBjaGVja0V4cHJIYXNTdWJMaW5rKHZpZXdxdWFsKSwgSEFTX1NVQl9MSU5LUyk7 CiAJCX0KIAkJZWxzZQogCQkJQWRkUXVhbChwYXJzZXRyZWUsIChOb2RlICopIHZpZXdxdWFs KTsKQEAgLTM1OTYsOSArMzYwMCw5IEBAIHJld3JpdGVUYXJnZXRWaWV3KFF1ZXJ5ICpwYXJz ZXRyZWUsIFJlbGF0aW9uIHZpZXcpCiAJCQkJICogY2FzZSB0aGUgc2FtZSBxdWFsIHdpbGwg aGF2ZSBhbHJlYWR5IGJlZW4gYWRkZWQsIGFuZCB0aGlzCiAJCQkJICogY2hlY2sgd2lsbCBh bHJlYWR5IGhhdmUgYmVlbiBkb25lLgogCQkJCSAqLwotCQkJCWlmICghcGFyc2V0cmVlLT5o YXNTdWJMaW5rcyAmJgorCQkJCWlmICghUXVlcnlIYXNTdWJMaW5rcyhwYXJzZXRyZWUpICYm CiAJCQkJCXBhcnNldHJlZS0+Y29tbWFuZFR5cGUgIT0gQ01EX1VQREFURSkKLQkJCQkJcGFy c2V0cmVlLT5oYXNTdWJMaW5rcyA9IGNoZWNrRXhwckhhc1N1Ykxpbmsod2NvLT5xdWFsKTsK KwkJCQkJUXVlcnlDb25kU2V0RmxhZyhwYXJzZXRyZWUsIGNoZWNrRXhwckhhc1N1Ykxpbmso d2NvLT5xdWFsKSwgSEFTX1NVQl9MSU5LUyk7CiAJCQl9CiAJCX0KIAl9CkBAIC0zNjcwLDcg KzM2NzQsNyBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJlZSwgTGlzdCAqcmV3cml0 ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCkKIAkJCQkJCSBlcnJtc2coIkRPIElOU1RF QUQgTk9USUZZIHJ1bGVzIGFyZSBub3Qgc3VwcG9ydGVkIGZvciBkYXRhLW1vZGlmeWluZyBz dGF0ZW1lbnRzIGluIFdJVEgiKSkpOwogCQkJfQogCQkJLyogV0lUSCBxdWVyaWVzIHNob3Vs ZCBuZXZlciBiZSBjYW5TZXRUYWcgKi8KLQkJCUFzc2VydCghY3RlcXVlcnktPmNhblNldFRh Zyk7CisJCQlBc3NlcnQoIVF1ZXJ5Q2FuU2V0VGFnKGN0ZXF1ZXJ5KSk7CiAJCQkvKiBQdXNo IHRoZSBzaW5nbGUgUXVlcnkgYmFjayBpbnRvIHRoZSBDVEUgbm9kZSAqLwogCQkJY3RlLT5j dGVxdWVyeSA9IChOb2RlICopIGN0ZXF1ZXJ5OwogCQl9CkBAIC00MjExLDcgKzQyMTUsNyBA QCBRdWVyeVJld3JpdGUoUXVlcnkgKnBhcnNldHJlZSkKIAkgKiBUaGlzIGZ1bmN0aW9uIGlz IG9ubHkgYXBwbGllZCB0byB0b3AtbGV2ZWwgb3JpZ2luYWwgcXVlcmllcwogCSAqLwogCUFz c2VydChwYXJzZXRyZWUtPnF1ZXJ5U291cmNlID09IFFTUkNfT1JJR0lOQUwpOwotCUFzc2Vy dChwYXJzZXRyZWUtPmNhblNldFRhZyk7CisJQXNzZXJ0KFF1ZXJ5Q2FuU2V0VGFnKHBhcnNl dHJlZSkpOwogCiAJLyoKIAkgKiBTdGVwIDEKQEAgLTQyNjUsNyArNDI2OSw3IEBAIFF1ZXJ5 UmV3cml0ZShRdWVyeSAqcGFyc2V0cmVlKQogCiAJCWlmIChxdWVyeS0+cXVlcnlTb3VyY2Ug PT0gUVNSQ19PUklHSU5BTCkKIAkJewotCQkJQXNzZXJ0KHF1ZXJ5LT5jYW5TZXRUYWcpOwor CQkJQXNzZXJ0KFF1ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSk7CiAJCQlBc3NlcnQoIWZvdW5kT3Jp Z2luYWxRdWVyeSk7CiAJCQlmb3VuZE9yaWdpbmFsUXVlcnkgPSB0cnVlOwogI2lmbmRlZiBV U0VfQVNTRVJUX0NIRUNLSU5HCkBAIC00Mjc0LDcgKzQyNzgsNyBAQCBRdWVyeVJld3JpdGUo UXVlcnkgKnBhcnNldHJlZSkKIAkJfQogCQllbHNlCiAJCXsKLQkJCUFzc2VydCghcXVlcnkt PmNhblNldFRhZyk7CisJCQlBc3NlcnQoIVF1ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSk7CiAJCQlp ZiAocXVlcnktPmNvbW1hbmRUeXBlID09IG9yaWdDbWRUeXBlICYmCiAJCQkJKHF1ZXJ5LT5x dWVyeVNvdXJjZSA9PSBRU1JDX0lOU1RFQURfUlVMRSB8fAogCQkJCSBxdWVyeS0+cXVlcnlT b3VyY2UgPT0gUVNSQ19RVUFMX0lOU1RFQURfUlVMRSkpCkBAIC00MjgzLDcgKzQyODcsNyBA QCBRdWVyeVJld3JpdGUoUXVlcnkgKnBhcnNldHJlZSkKIAl9CiAKIAlpZiAoIWZvdW5kT3Jp Z2luYWxRdWVyeSAmJiBsYXN0SW5zdGVhZCAhPSBOVUxMKQotCQlsYXN0SW5zdGVhZC0+Y2Fu U2V0VGFnID0gdHJ1ZTsKKwkJUXVlcnlTZXRGbGFnKGxhc3RJbnN0ZWFkLCBDQU5fU0VUX1RB Ryk7CiAKIAlyZXR1cm4gcmVzdWx0czsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jl d3JpdGUvcmV3cml0ZU1hbmlwLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVNYW5p cC5jCmluZGV4IDc2Yzk3YTViMjguLjdmYjI4NTliOGYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3cml0ZS9y ZXdyaXRlTWFuaXAuYwpAQCAtMTEwMiw4ICsxMTAyLDggQEAgQWRkUXVhbChRdWVyeSAqcGFy c2V0cmVlLCBOb2RlICpxdWFsKQogCSAqIE1ha2Ugc3VyZSBxdWVyeSBpcyBtYXJrZWQgY29y cmVjdGx5IGlmIGFkZGVkIHF1YWwgaGFzIHN1YmxpbmtzLiBOZWVkCiAJICogbm90IHNlYXJj aCBxdWFsIHdoZW4gcXVlcnkgaXMgYWxyZWFkeSBtYXJrZWQuCiAJICovCi0JaWYgKCFwYXJz ZXRyZWUtPmhhc1N1YkxpbmtzKQotCQlwYXJzZXRyZWUtPmhhc1N1YkxpbmtzID0gY2hlY2tF eHBySGFzU3ViTGluayhjb3B5KTsKKwlpZiAoIVF1ZXJ5SGFzU3ViTGlua3MocGFyc2V0cmVl KSkKKwkJUXVlcnlDb25kU2V0RmxhZyhwYXJzZXRyZWUsIGNoZWNrRXhwckhhc1N1Ykxpbmso Y29weSksIEhBU19TVUJfTElOS1MpOwogfQogCiAKQEAgLTEzMzQsNyArMTMzNCw3IEBAIE5v ZGUgKgogcmVwbGFjZV9ydGVfdmFyaWFibGVzKE5vZGUgKm5vZGUsIGludCB0YXJnZXRfdmFy bm8sIGludCBzdWJsZXZlbHNfdXAsCiAJCQkJCSAgcmVwbGFjZV9ydGVfdmFyaWFibGVzX2Nh bGxiYWNrIGNhbGxiYWNrLAogCQkJCQkgIHZvaWQgKmNhbGxiYWNrX2FyZywKLQkJCQkJICBi b29sICpvdXRlcl9oYXNTdWJMaW5rcykKKwkJCQkJICBpbnQgKm91dGVyX2ZsYWdzKQogewog CU5vZGUJICAgKnJlc3VsdDsKIAlyZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4dCBjb250 ZXh0OwpAQCAtMTM0OSw5ICsxMzQ5LDkgQEAgcmVwbGFjZV9ydGVfdmFyaWFibGVzKE5vZGUg Km5vZGUsIGludCB0YXJnZXRfdmFybm8sIGludCBzdWJsZXZlbHNfdXAsCiAJICogZGV0ZWN0 IG5ldyBzdWJsaW5rcyBiZWNhdXNlIHRoZSBxdWVyeSBhbHJlYWR5IGhhcyBzb21lLgogCSAq LwogCWlmIChub2RlICYmIElzQShub2RlLCBRdWVyeSkpCi0JCWNvbnRleHQuaW5zZXJ0ZWRf c3VibGluayA9ICgoUXVlcnkgKikgbm9kZSktPmhhc1N1YkxpbmtzOwotCWVsc2UgaWYgKG91 dGVyX2hhc1N1YkxpbmtzKQotCQljb250ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSAqb3V0ZXJf aGFzU3ViTGlua3M7CisJCWNvbnRleHQuaW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFzU3Vi TGlua3MoKFF1ZXJ5ICopIG5vZGUpOworCWVsc2UgaWYgKG91dGVyX2ZsYWdzKQorCQljb250 ZXh0Lmluc2VydGVkX3N1YmxpbmsgPSBRdWVyeUZsYWdJc1NldCgqb3V0ZXJfZmxhZ3MsIEhB U19TVUJfTElOS1MpOwogCWVsc2UKIAkJY29udGV4dC5pbnNlcnRlZF9zdWJsaW5rID0gZmFs c2U7CiAKQEAgLTEzNjcsOSArMTM2Nyw5IEBAIHJlcGxhY2VfcnRlX3ZhcmlhYmxlcyhOb2Rl ICpub2RlLCBpbnQgdGFyZ2V0X3Zhcm5vLCBpbnQgc3VibGV2ZWxzX3VwLAogCWlmIChjb250 ZXh0Lmluc2VydGVkX3N1YmxpbmspCiAJewogCQlpZiAocmVzdWx0ICYmIElzQShyZXN1bHQs IFF1ZXJ5KSkKLQkJCSgoUXVlcnkgKikgcmVzdWx0KS0+aGFzU3ViTGlua3MgPSB0cnVlOwot CQllbHNlIGlmIChvdXRlcl9oYXNTdWJMaW5rcykKLQkJCSpvdXRlcl9oYXNTdWJMaW5rcyA9 IHRydWU7CisJCQlRdWVyeVNldEZsYWcoKChRdWVyeSAqKSByZXN1bHQpLCBIQVNfU1VCX0xJ TktTKTsKKwkJZWxzZSBpZiAob3V0ZXJfZmxhZ3MpCisJCQlRdWVyeUZsYWdTZXQoKm91dGVy X2ZsYWdzLCBIQVNfU1VCX0xJTktTKTsKIAkJZWxzZQogCQkJZWxvZyhFUlJPUiwgInJlcGxh Y2VfcnRlX3ZhcmlhYmxlcyBpbnNlcnRlZCBhIFN1YkxpbmssIGJ1dCBoYXMgbm9wbGFjZSB0 byByZWNvcmQgaXQiKTsKIAl9CkBAIC0xNDI4LDEyICsxNDI4LDEzIEBAIHJlcGxhY2VfcnRl X3ZhcmlhYmxlc19tdXRhdG9yKE5vZGUgKm5vZGUsCiAKIAkJY29udGV4dC0+c3VibGV2ZWxz X3VwKys7CiAJCXNhdmVfaW5zZXJ0ZWRfc3VibGluayA9IGNvbnRleHQtPmluc2VydGVkX3N1 Ymxpbms7Ci0JCWNvbnRleHQtPmluc2VydGVkX3N1YmxpbmsgPSAoKFF1ZXJ5ICopIG5vZGUp LT5oYXNTdWJMaW5rczsKKwkJY29udGV4dC0+aW5zZXJ0ZWRfc3VibGluayA9IFF1ZXJ5SGFz U3ViTGlua3MoKFF1ZXJ5ICopIG5vZGUpOwogCQluZXdub2RlID0gcXVlcnlfdHJlZV9tdXRh dG9yKChRdWVyeSAqKSBub2RlLAogCQkJCQkJCQkJIHJlcGxhY2VfcnRlX3ZhcmlhYmxlc19t dXRhdG9yLAogCQkJCQkJCQkJICh2b2lkICopIGNvbnRleHQsCiAJCQkJCQkJCQkgMCk7Ci0J CW5ld25vZGUtPmhhc1N1YkxpbmtzIHw9IGNvbnRleHQtPmluc2VydGVkX3N1Ymxpbms7CisJ CWlmIChjb250ZXh0LT5pbnNlcnRlZF9zdWJsaW5rKQorCQkJUXVlcnlTZXRGbGFnKG5ld25v ZGUsIEhBU19TVUJfTElOS1MpOwogCQljb250ZXh0LT5pbnNlcnRlZF9zdWJsaW5rID0gc2F2 ZV9pbnNlcnRlZF9zdWJsaW5rOwogCQljb250ZXh0LT5zdWJsZXZlbHNfdXAtLTsKIAkJcmV0 dXJuIChOb2RlICopIG5ld25vZGU7CkBAIC0xNzY0LDcgKzE3NjUsNyBAQCBSZXBsYWNlVmFy c0Zyb21UYXJnZXRMaXN0KE5vZGUgKm5vZGUsCiAJCQkJCQkgIExpc3QgKnRhcmdldGxpc3Qs CiAJCQkJCQkgIFJlcGxhY2VWYXJzTm9NYXRjaE9wdGlvbiBub21hdGNoX29wdGlvbiwKIAkJ CQkJCSAgaW50IG5vbWF0Y2hfdmFybm8sCi0JCQkJCQkgIGJvb2wgKm91dGVyX2hhc1N1Ykxp bmtzKQorCQkJCQkJICBpbnQgKm91dGVyX2ZsYWdzKQogewogCVJlcGxhY2VWYXJzRnJvbVRh cmdldExpc3RfY29udGV4dCBjb250ZXh0OwogCkBAIC0xNzc2LDUgKzE3NzcsNSBAQCBSZXBs YWNlVmFyc0Zyb21UYXJnZXRMaXN0KE5vZGUgKm5vZGUsCiAJcmV0dXJuIHJlcGxhY2VfcnRl X3ZhcmlhYmxlcyhub2RlLCB0YXJnZXRfdmFybm8sIHN1YmxldmVsc191cCwKIAkJCQkJCQkJ IFJlcGxhY2VWYXJzRnJvbVRhcmdldExpc3RfY2FsbGJhY2ssCiAJCQkJCQkJCSAodm9pZCAq KSAmY29udGV4dCwKLQkJCQkJCQkJIG91dGVyX2hhc1N1YkxpbmtzKTsKKwkJCQkJCQkJIG91 dGVyX2ZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0 ZVNlYXJjaEN5Y2xlLmMgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVTZWFyY2hDeWNs ZS5jCmluZGV4IDkxMWE5MDE4MDguLmQzY2QwMmM0ZTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3Jld3JpdGUvcmV3cml0ZVNlYXJjaEN5Y2xlLmMKKysrIGIvc3JjL2JhY2tlbmQvcmV3 cml0ZS9yZXdyaXRlU2VhcmNoQ3ljbGUuYwpAQCAtMjc4LDcgKzI3OCw3IEBAIHJld3JpdGVT ZWFyY2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKi8KIAluZXdxMSA9IG1h a2VOb2RlKFF1ZXJ5KTsKIAluZXdxMS0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCW5l d3ExLT5jYW5TZXRUYWcgPSB0cnVlOworCVF1ZXJ5U2V0RmxhZyhuZXdxMSwgQ0FOX1NFVF9U QUcpOwogCiAJbmV3cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CiAJbmV3cnRlLT5y dGVraW5kID0gUlRFX1NVQlFVRVJZOwpAQCAtMzY1LDcgKzM2NSw3IEBAIHJld3JpdGVTZWFy Y2hBbmRDeWNsZShDb21tb25UYWJsZUV4cHIgKmN0ZSkKIAkgKi8KIAluZXdxMiA9IG1ha2VO b2RlKFF1ZXJ5KTsKIAluZXdxMi0+Y29tbWFuZFR5cGUgPSBDTURfU0VMRUNUOwotCW5ld3Ey LT5jYW5TZXRUYWcgPSB0cnVlOworCVF1ZXJ5U2V0RmxhZyhuZXdxMiwgQ0FOX1NFVF9UQUcp OwogCiAJbmV3cnRlID0gbWFrZU5vZGUoUmFuZ2VUYmxFbnRyeSk7CiAJbmV3cnRlLT5ydGVr aW5kID0gUlRFX1NVQlFVRVJZOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0 Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4IDJjNjNiNzg3NWEu LjE4MTAwMTI4Y2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwor KysgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTk4NCw3ICs5ODQsNyBAQCBw Z19wbGFuX3F1ZXJpZXMoTGlzdCAqcXVlcnl0cmVlcywgY29uc3QgY2hhciAqcXVlcnlfc3Ry aW5nLCBpbnQgY3Vyc29yT3B0aW9ucywKIAkJCS8qIFV0aWxpdHkgY29tbWFuZHMgcmVxdWly ZSBubyBwbGFubmluZy4gKi8KIAkJCXN0bXQgPSBtYWtlTm9kZShQbGFubmVkU3RtdCk7CiAJ CQlzdG10LT5jb21tYW5kVHlwZSA9IENNRF9VVElMSVRZOwotCQkJc3RtdC0+Y2FuU2V0VGFn ID0gcXVlcnktPmNhblNldFRhZzsKKwkJCXN0bXQtPmNhblNldFRhZyA9IFF1ZXJ5Q2FuU2V0 VGFnKHF1ZXJ5KTsKIAkJCXN0bXQtPnV0aWxpdHlTdG10ID0gcXVlcnktPnV0aWxpdHlTdG10 OwogCQkJc3RtdC0+c3RtdF9sb2NhdGlvbiA9IHF1ZXJ5LT5zdG10X2xvY2F0aW9uOwogCQkJ c3RtdC0+c3RtdF9sZW4gPSBxdWVyeS0+c3RtdF9sZW47CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC90Y29wL3BxdWVyeS5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnkuYwppbmRleCAw YzQ1ZmNmMzE4Li4zMjlmYzA1YWM0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bx dWVyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKQEAgLTIyNSwxMSArMjI1 LDExIEBAIENob29zZVBvcnRhbFN0cmF0ZWd5KExpc3QgKnN0bXRzKQogCQl7CiAJCQlRdWVy eQkgICAqcXVlcnkgPSAoUXVlcnkgKikgc3RtdDsKIAotCQkJaWYgKHF1ZXJ5LT5jYW5TZXRU YWcpCisJCQlpZiAoUXVlcnlDYW5TZXRUYWcocXVlcnkpKQogCQkJewogCQkJCWlmIChxdWVy eS0+Y29tbWFuZFR5cGUgPT0gQ01EX1NFTEVDVCkKIAkJCQl7Ci0JCQkJCWlmIChxdWVyeS0+ aGFzTW9kaWZ5aW5nQ1RFKQorCQkJCQlpZiAoUXVlcnlIYXNNb2RpZnlpbmdDVEUocXVlcnkp KQogCQkJCQkJcmV0dXJuIFBPUlRBTF9PTkVfTU9EX1dJVEg7CiAJCQkJCWVsc2UKIAkJCQkJ CXJldHVybiBQT1JUQUxfT05FX1NFTEVDVDsKQEAgLTI4Myw3ICsyODMsNyBAQCBDaG9vc2VQ b3J0YWxTdHJhdGVneShMaXN0ICpzdG10cykKIAkJewogCQkJUXVlcnkJICAgKnF1ZXJ5ID0g KFF1ZXJ5ICopIHN0bXQ7CiAKLQkJCWlmIChxdWVyeS0+Y2FuU2V0VGFnKQorCQkJaWYgKFF1 ZXJ5Q2FuU2V0VGFnKHF1ZXJ5KSkKIAkJCXsKIAkJCQlpZiAoKytuU2V0VGFnID4gMSkKIAkJ CQkJcmV0dXJuIFBPUlRBTF9NVUxUSV9RVUVSWTsJLyogbm8gbmVlZCB0byBsb29rIGZ1cnRo ZXIgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMuYwppbmRleCBhOTI4YThjNTVkLi5k YWVjNDljMjg2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxz LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jCkBAIC01NTYyLDcg KzU1NjIsNyBAQCBnZXRfd2l0aF9jbGF1c2UoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRl eHQgKmNvbnRleHQpCiAJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKIAl9CiAK LQlpZiAocXVlcnktPmhhc1JlY3Vyc2l2ZSkKKwlpZiAoUXVlcnlIYXNSZWN1cnNpdmUocXVl cnkpKQogCQlzZXAgPSAiV0lUSCBSRUNVUlNJVkUgIjsKIAllbHNlCiAJCXNlcCA9ICJXSVRI ICI7CkBAIC01NzYzLDcgKzU3NjMsNyBAQCBnZXRfc2VsZWN0X3F1ZXJ5X2RlZihRdWVyeSAq cXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCwKIAl9CiAKIAkvKiBBZGQgRk9SIFtL RVldIFVQREFURS9TSEFSRSBjbGF1c2VzIGlmIHByZXNlbnQgKi8KLQlpZiAocXVlcnktPmhh c0ZvclVwZGF0ZSkKKwlpZiAoUXVlcnlIYXNGb3JVcGRhdGUocXVlcnkpKQogCXsKIAkJZm9y ZWFjaChsLCBxdWVyeS0+cm93TWFya3MpCiAJCXsKQEAgLTU5MTYsNyArNTkxNiw3IEBAIGdl dF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5LCBkZXBhcnNlX2NvbnRleHQgKmNv bnRleHQsCiAJLyoKIAkgKiBCdWlsZCB1cCB0aGUgcXVlcnkgc3RyaW5nIC0gZmlyc3Qgd2Ug c2F5IFNFTEVDVAogCSAqLwotCWlmIChxdWVyeS0+aXNSZXR1cm4pCisJaWYgKFF1ZXJ5SXNS ZXR1cm4ocXVlcnkpKQogCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlJFVFVSTiIp OwogCWVsc2UKIAkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJTRUxFQ1QiKTsKQEAg LTU5MjQsNyArNTkyNCw3IEBAIGdldF9iYXNpY19zZWxlY3RfcXVlcnkoUXVlcnkgKnF1ZXJ5 LCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQsCiAJLyogQWRkIHRoZSBESVNUSU5DVCBjbGF1 c2UgaWYgZ2l2ZW4gKi8KIAlpZiAocXVlcnktPmRpc3RpbmN0Q2xhdXNlICE9IE5JTCkKIAl7 Ci0JCWlmIChxdWVyeS0+aGFzRGlzdGluY3RPbikKKwkJaWYgKFF1ZXJ5SGFzRGlzdGluY3RP bihxdWVyeSkpCiAJCXsKIAkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIERJU1RJ TkNUIE9OICgiKTsKIAkJCXNlcCA9ICIiOwpAQCAtNjg5OCw3ICs2ODk4LDcgQEAgZ2V0X3Vw ZGF0ZV9xdWVyeV90YXJnZXRsaXN0X2RlZihRdWVyeSAqcXVlcnksIExpc3QgKnRhcmdldExp c3QsCiAJICogZW50cmllcy4KIAkgKi8KIAltYV9zdWJsaW5rcyA9IE5JTDsKLQlpZiAocXVl cnktPmhhc1N1YkxpbmtzKQkJLyogZWxzZSB0aGVyZSBjYW4ndCBiZSBhbnkgKi8KKwlpZiAo UXVlcnlIYXNTdWJMaW5rcyhxdWVyeSkpCQkvKiBlbHNlIHRoZXJlIGNhbid0IGJlIGFueSAq LwogCXsKIAkJZm9yZWFjaChsLCB0YXJnZXRMaXN0KQogCQl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Nh Y2hlL3BsYW5jYWNoZS5jCmluZGV4IDUxOTRjYmYyY2MuLmZjZjM3MTYyMmEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCisrKyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCkBAIC0xMzg0LDcgKzEzODQsNyBAQCBDYWNo ZWRQbGFuQWxsb3dzU2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCiAJCWlmIChxdWVyeS0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJVFkpCiAJ CQlyZXR1cm4gZmFsc2U7Ci0JCWlmIChxdWVyeS0+cnRhYmxlIHx8IHF1ZXJ5LT5jdGVMaXN0 IHx8IHF1ZXJ5LT5oYXNTdWJMaW5rcykKKwkJaWYgKHF1ZXJ5LT5ydGFibGUgfHwgcXVlcnkt PmN0ZUxpc3QgfHwgUXVlcnlIYXNTdWJMaW5rcyhxdWVyeSkpCiAJCQlyZXR1cm4gZmFsc2U7 CiAJfQogCkBAIC0xNzYwLDcgKzE3NjAsNyBAQCBRdWVyeUxpc3RHZXRQcmltYXJ5U3RtdChM aXN0ICpzdG10cykKIAl7CiAJCVF1ZXJ5CSAgICpzdG10ID0gbGZpcnN0X25vZGUoUXVlcnks IGxjKTsKIAotCQlpZiAoc3RtdC0+Y2FuU2V0VGFnKQorCQlpZiAoUXVlcnlDYW5TZXRUYWco c3RtdCkpCiAJCQlyZXR1cm4gc3RtdDsKIAl9CiAJcmV0dXJuIE5VTEw7CkBAIC0xOTA3LDcg KzE5MDcsNyBAQCBTY2FuUXVlcnlGb3JMb2NrcyhRdWVyeSAqcGFyc2V0cmVlLCBib29sIGFj cXVpcmUpCiAJICogUmVjdXJzZSBpbnRvIHN1Ymxpbmsgc3VicXVlcmllcywgdG9vLiAgQnV0 IHdlIGFscmVhZHkgZGlkIHRoZSBvbmVzIGluCiAJICogdGhlIHJ0YWJsZSBhbmQgY3RlTGlz dC4KIAkgKi8KLQlpZiAocGFyc2V0cmVlLT5oYXNTdWJMaW5rcykKKwlpZiAoUXVlcnlIYXNT dWJMaW5rcyhwYXJzZXRyZWUpKQogCXsKIAkJcXVlcnlfdHJlZV93YWxrZXIocGFyc2V0cmVl LCBTY2FuUXVlcnlXYWxrZXIsCiAJCQkJCQkgICh2b2lkICopICZhY3F1aXJlLApkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9k ZXMvcGFyc2Vub2Rlcy5oCmluZGV4IGQ1YjA4ZGVkNDQuLmVjYWVmZTliMWEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTEyOSw5ICsxMjksNiBAQCB0eXBlZGVmIHN0cnVjdCBR dWVyeQogCSAqLwogCXVpbnQ2NAkJcXVlcnlJZCBwZ19ub2RlX2F0dHIoZXF1YWxfaWdub3Jl LCBxdWVyeV9qdW1ibGVfaWdub3JlLCByZWFkX3dyaXRlX2lnbm9yZSwgcmVhZF9hcygwKSk7 CiAKLQkvKiBkbyBJIHNldCB0aGUgY29tbWFuZCByZXN1bHQgdGFnPyAqLwotCWJvb2wJCWNh blNldFRhZyBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0KIAlOb2RlCSAg ICp1dGlsaXR5U3RtdDsJLyogbm9uLW51bGwgaWYgY29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkgKi8KIAogCS8qCkBAIC0xNDEsMjYgKzEzOCw3IEBAIHR5cGVkZWYgc3RydWN0IFF1ZXJ5 CiAJICovCiAJaW50CQkJcmVzdWx0UmVsYXRpb24gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJs ZV9pZ25vcmUpOwogCi0JLyogaGFzIGFnZ3JlZ2F0ZXMgaW4gdGxpc3Qgb3IgaGF2aW5nUXVh bCAqLwotCWJvb2wJCWhhc0FnZ3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUp OwotCS8qIGhhcyB3aW5kb3cgZnVuY3Rpb25zIGluIHRsaXN0ICovCi0JYm9vbAkJaGFzV2lu ZG93RnVuY3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwotCS8qIGhhcyBz ZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwotCWJvb2wJCWhhc1RhcmdldFNS RnMgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwotCS8qIGhhcyBzdWJxdWVy eSBTdWJMaW5rICovCi0JYm9vbAkJaGFzU3ViTGlua3MgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1 bWJsZV9pZ25vcmUpOwotCS8qIGRpc3RpbmN0Q2xhdXNlIGlzIGZyb20gRElTVElOQ1QgT04g Ki8KLQlib29sCQloYXNEaXN0aW5jdE9uIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdu b3JlKTsKLQkvKiBXSVRIIFJFQ1VSU0lWRSB3YXMgc3BlY2lmaWVkICovCi0JYm9vbAkJaGFz UmVjdXJzaXZlIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKLQkvKiBoYXMg SU5TRVJUL1VQREFURS9ERUxFVEUgaW4gV0lUSCAqLwotCWJvb2wJCWhhc01vZGlmeWluZ0NU RSBwZ19ub2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0JLyogRk9SIFtLRVldIFVQ REFURS9TSEFSRSB3YXMgc3BlY2lmaWVkICovCi0JYm9vbAkJaGFzRm9yVXBkYXRlIHBnX25v ZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKLQkvKiByZXdyaXRlciBoYXMgYXBwbGll ZCBzb21lIFJMUyBwb2xpY3kgKi8KLQlib29sCQloYXNSb3dTZWN1cml0eSBwZ19ub2RlX2F0 dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7Ci0JLyogaXMgYSBSRVRVUk4gc3RhdGVtZW50ICov Ci0JYm9vbAkJaXNSZXR1cm4gcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOwor CWludAkJCWZsYWdzIHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCUxp c3QJICAgKmN0ZUxpc3Q7CQkvKiBXSVRIIGxpc3QgKG9mIENvbW1vblRhYmxlRXhwcidzKSAq LwogCkBAIC0xNzUsOCArMTUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAkJCQkJCQkJ ICogYWxzbyBVU0lORyBjbGF1c2UgZm9yIE1FUkdFICovCiAKIAlMaXN0CSAgICptZXJnZUFj dGlvbkxpc3Q7CS8qIGxpc3Qgb2YgYWN0aW9ucyBmb3IgTUVSR0UgKG9ubHkpICovCi0JLyog d2hldGhlciB0byB1c2Ugb3V0ZXIgam9pbiAqLwotCWJvb2wJCW1lcmdlVXNlT3V0ZXJKb2lu IHBnX25vZGVfYXR0cihxdWVyeV9qdW1ibGVfaWdub3JlKTsKIAogCUxpc3QJICAgKnRhcmdl dExpc3Q7CQkvKiB0YXJnZXQgbGlzdCAob2YgVGFyZ2V0RW50cnkpICovCiAKQEAgLTIzMCw2 ICsyMDYsNjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnkKIAlpbnQJCQlzdG10X2xlbiBwZ19u b2RlX2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CiB9IFF1ZXJ5OwogCisvKiBkbyBJIHNl dCB0aGUgY29tbWFuZCByZXN1bHQgdGFnPyAqLworI2RlZmluZSBRVUVSWV9DQU5fU0VUX1RB RwkJCQkoMSkKKy8qIGhhcyBhZ2dyZWdhdGVzIGluIHRsaXN0IG9yIGhhdmluZ1F1YWwgKi8K KyNkZWZpbmUgUVVFUllfSEFTX0FHR1MJCQkJCSgxIDw8IDEpCisvKiBoYXMgd2luZG93IGZ1 bmN0aW9ucyBpbiB0bGlzdCAqLworI2RlZmluZSBRVUVSWV9IQVNfV0lORE9XX0ZVTkNTCQkJ KDEgPDwgMikKKy8qIGhhcyBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBpbiB0bGlzdCAqLwor I2RlZmluZSBRVUVSWV9IQVNfVEFSR0VUX1NSRlMJCQkoMSA8PCAzKQorLyogaGFzIHN1YnF1 ZXJ5IFN1YkxpbmsgKi8KKyNkZWZpbmUgUVVFUllfSEFTX1NVQl9MSU5LUwkJCQkoMSA8PCA0 KQorLyogZGlzdGluY3RDbGF1c2UgaXMgZnJvbSBESVNUSU5DVCBPTiAqLworI2RlZmluZSBR VUVSWV9IQVNfRElTVElOQ1RfT04JCQkoMSA8PCA1KQorLyogV0lUSCBSRUNVUlNJVkUgd2Fz IHNwZWNpZmllZCAqLworI2RlZmluZSBRVUVSWV9IQVNfUkVDVVJTSVZFCQkJCSgxIDw8IDYp CisvKiBoYXMgSU5TRVJUL1VQREFURS9ERUxFVEUgaW4gV0lUSCAqLworI2RlZmluZSBRVUVS WV9IQVNfTU9ESUZZSU5HX0NURQkJCSgxIDw8IDcpCisvKiBGT1IgW0tFWV0gVVBEQVRFL1NI QVJFIHdhcyBzcGVjaWZpZWQgKi8KKyNkZWZpbmUgUVVFUllfSEFTX0ZPUl9VUERBVEUJCQko MSA8PCA4KQorLyogcmV3cml0ZXIgaGFzIGFwcGxpZWQgc29tZSBSTFMgcG9saWN5ICovCisj ZGVmaW5lIFFVRVJZX0hBU19ST1dfU0VDVVJJVFkJCQkoMSA8PCA5KQorLyogaXMgYSBSRVRV Uk4gc3RhdGVtZW50ICovCisjZGVmaW5lIFFVRVJZX0lTX1JFVFVSTgkJCQkJKDEgPDwgMTAp CisvKiB3aGV0aGVyIHRvIHVzZSBvdXRlciBqb2luICovCisjZGVmaW5lIFFVRVJZX01FUkdF X1VTRV9PVVRFUkpPSU4JCSgxIDw8IDExKQorCisjZGVmaW5lCVF1ZXJ5Q2FuU2V0VGFnKHF1 ZXJ5KQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0NBTl9TRVRfVEFHKQorI2RlZmluZQlR dWVyeUhhc0FnZ3MocXVlcnkpCQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19BR0dT KQorI2RlZmluZQlRdWVyeUhhc1dpbmRvd0Z1bmNzKHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdz ICYgUVVFUllfSEFTX1dJTkRPV19GVU5DUykKKyNkZWZpbmUJUXVlcnlIYXNUYXJnZXRTUkZz KHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdzICYgUVVFUllfSEFTX1RBUkdFVF9TUkZTKQorI2Rl ZmluZQlRdWVyeUhhc1N1YkxpbmtzKHF1ZXJ5KQkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZ X0hBU19TVUJfTElOS1MpCisjZGVmaW5lCVF1ZXJ5SGFzRGlzdGluY3RPbihxdWVyeSkJCSgo cXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19ESVNUSU5DVF9PTikKKyNkZWZpbmUJUXVlcnlI YXNSZWN1cnNpdmUocXVlcnkpCQkoKHF1ZXJ5KS0+ZmxhZ3MgJiBRVUVSWV9IQVNfUkVDVVJT SVZFKQorI2RlZmluZQlRdWVyeUhhc01vZGlmeWluZ0NURShxdWVyeSkJCSgocXVlcnkpLT5m bGFncyAmIFFVRVJZX0hBU19NT0RJRllJTkdfQ1RFKQorI2RlZmluZQlRdWVyeUhhc0ZvclVw ZGF0ZShxdWVyeSkJCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX0hBU19GT1JfVVBEQVRFKQor I2RlZmluZQlRdWVyeUhhc1Jvd1NlY3VyaXR5KHF1ZXJ5KQkJKChxdWVyeSktPmZsYWdzICYg UVVFUllfSEFTX1JPV19TRUNVUklUWSkKKyNkZWZpbmUJUXVlcnlJc1JldHVybihxdWVyeSkJ CQkoKHF1ZXJ5KS0+ZmxhZ3MgJiBRVUVSWV9JU19SRVRVUk4pCisjZGVmaW5lCVF1ZXJ5TWVy Z2VVc2VPdXRlckpvaW4ocXVlcnkpCSgocXVlcnkpLT5mbGFncyAmIFFVRVJZX01FUkdFX1VT RV9PVVRFUkpPSU4pCisKKyNkZWZpbmUJUXVlcnlGbGFnU2V0KGZsYWdzLCBmbmFtZSkJCSgo ZmxhZ3MpIHw9IChRVUVSWV8jI2ZuYW1lKSkKKyNkZWZpbmUJUXVlcnlTZXRGbGFnKHF1ZXJ5 LCBmbmFtZSkJCVF1ZXJ5RmxhZ1NldCgocXVlcnkpLT5mbGFncywgZm5hbWUpCisKKyNkZWZp bmUJUXVlcnlGbGFnSXNTZXQoZmxhZ3MsIGZuYW1lKQkoKGZsYWdzKSAmIChRVUVSWV8jI2Zu YW1lKSkKKworI2RlZmluZQlRdWVyeUZsYWdDbGVhcihmbGFncywgZm5hbWUpCSgoZmxhZ3Mp ICY9IH4oUVVFUllfIyNmbmFtZSkpCisjZGVmaW5lCVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBm bmFtZSkJUXVlcnlGbGFnQ2xlYXIoKHF1ZXJ5KS0+ZmxhZ3MsIGZuYW1lKQorCisjZGVmaW5l CVF1ZXJ5Q29uZFNldEZsYWcocXVlcnksIGNvbmQsIHBuYW1lKSBcCisJeyBcCisJCWlmIChj b25kKSBcCisJCQlRdWVyeVNldEZsYWcocXVlcnksIHBuYW1lKTsgXAorCQllbHNlIFwKKwkJ CVF1ZXJ5Q2xlYXJGbGFnKHF1ZXJ5LCBwbmFtZSk7IFwKKwl9CisKIAogLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioKICAqCVN1cHBvcnRpbmcgZGF0YSBzdHJ1Y3R1cmVzIGZvciBQYXJzZSBU cmVlcwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFuaXAuaCBi L3NyYy9pbmNsdWRlL3Jld3JpdGUvcmV3cml0ZU1hbmlwLmgKaW5kZXggYWM2ZDIwNDllOC4u ZDA0NDQzZWY5NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmV3cml0ZS9yZXdyaXRlTWFu aXAuaAorKysgYi9zcmMvaW5jbHVkZS9yZXdyaXRlL3Jld3JpdGVNYW5pcC5oCkBAIC03Niw3 ICs3Niw3IEBAIGV4dGVybiBOb2RlICpyZXBsYWNlX3J0ZV92YXJpYWJsZXMoTm9kZSAqbm9k ZSwKIAkJCQkJCQkJICAgaW50IHRhcmdldF92YXJubywgaW50IHN1YmxldmVsc191cCwKIAkJ CQkJCQkJICAgcmVwbGFjZV9ydGVfdmFyaWFibGVzX2NhbGxiYWNrIGNhbGxiYWNrLAogCQkJ CQkJCQkgICB2b2lkICpjYWxsYmFja19hcmcsCi0JCQkJCQkJCSAgIGJvb2wgKm91dGVyX2hh c1N1YkxpbmtzKTsKKwkJCQkJCQkJICAgaW50ICpvdXRlcl9mbGFncyk7CiBleHRlcm4gTm9k ZSAqcmVwbGFjZV9ydGVfdmFyaWFibGVzX211dGF0b3IoTm9kZSAqbm9kZSwKIAkJCQkJCQkJ CQkgICByZXBsYWNlX3J0ZV92YXJpYWJsZXNfY29udGV4dCAqY29udGV4dCk7CiAKQEAgLTkx LDYgKzkxLDYgQEAgZXh0ZXJuIE5vZGUgKlJlcGxhY2VWYXJzRnJvbVRhcmdldExpc3QoTm9k ZSAqbm9kZSwKIAkJCQkJCQkJCSAgIExpc3QgKnRhcmdldGxpc3QsCiAJCQkJCQkJCQkgICBS ZXBsYWNlVmFyc05vTWF0Y2hPcHRpb24gbm9tYXRjaF9vcHRpb24sCiAJCQkJCQkJCQkgICBp bnQgbm9tYXRjaF92YXJubywKLQkJCQkJCQkJCSAgIGJvb2wgKm91dGVyX2hhc1N1Ykxpbmtz KTsKKwkJCQkJCQkJCSAgIGludCAqb3V0ZXJfZmxhZ3MpOwogCiAjZW5kaWYJCQkJCQkJLyog UkVXUklURU1BTklQX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9l eGVjLmMgYi9zcmMvcGwvcGxwZ3NxbC9zcmMvcGxfZXhlYy5jCmluZGV4IDZkMTY5MTM0MGMu LmU3ZjM2NTI4NjMgMTAwNjQ0Ci0tLSBhL3NyYy9wbC9wbHBnc3FsL3NyYy9wbF9leGVjLmMK KysrIGIvc3JjL3BsL3BscGdzcWwvc3JjL3BsX2V4ZWMuYwpAQCAtODAyMCwxMCArODAyMCwx MCBAQCBleGVjX3NpbXBsZV9jaGVja19wbGFuKFBMcGdTUUxfZXhlY3N0YXRlICplc3RhdGUs IFBMcGdTUUxfZXhwciAqZXhwcikKIAkgKiBpbmxpbmluZyBhIFNRTCBmdW5jdGlvbjsgb3Ro ZXJ3aXNlLCBpbmxpbmluZyBjb3VsZCBjaGFuZ2Ugb3VyCiAJICogY29uY2x1c2lvbiBhYm91 dCB3aGV0aGVyIGFuIGV4cHJlc3Npb24gaXMgc2ltcGxlLCB3aGljaCB3ZSBkb24ndCB3YW50 LikKIAkgKi8KLQlpZiAocXVlcnktPmhhc0FnZ3MgfHwKLQkJcXVlcnktPmhhc1dpbmRvd0Z1 bmNzIHx8Ci0JCXF1ZXJ5LT5oYXNUYXJnZXRTUkZzIHx8Ci0JCXF1ZXJ5LT5oYXNTdWJMaW5r cyB8fAorCWlmIChRdWVyeUhhc0FnZ3MocXVlcnkpIHx8CisJCVF1ZXJ5SGFzV2luZG93RnVu Y3MocXVlcnkpIHx8CisJCVF1ZXJ5SGFzVGFyZ2V0U1JGcyhxdWVyeSkgfHwKKwkJUXVlcnlI YXNTdWJMaW5rcyhxdWVyeSkgfHwKIAkJcXVlcnktPmN0ZUxpc3QgfHwKIAkJcXVlcnktPmpv aW50cmVlLT5mcm9tbGlzdCB8fAogCQlxdWVyeS0+am9pbnRyZWUtPnF1YWxzIHx8Cg== --------------aY3O03ZIN9HQgvJVYEyeE62A--