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 1tdQG5-0075R0-8I for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Jan 2025 08:50:46 +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 1tdQG4-00At49-Aa for pgsql-hackers@arkaria.postgresql.org; Thu, 30 Jan 2025 08:50:44 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tdQG3-00At40-I7 for pgsql-hackers@lists.postgresql.org; Thu, 30 Jan 2025 08:50:44 +0000 Received: from mail.postgrespro.ru ([93.174.131.139]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tdQFz-002GJL-0H for pgsql-hackers@lists.postgresql.org; Thu, 30 Jan 2025 08:50:42 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=postgrespro.ru; s=mx2023; t=1738227035; bh=5iqoKExnLMFcHTTKuOpT718GDcOPNBh24dvySVVNETY=; h=Date:From:To:Cc:Subject:In-Reply-To:References:Message-ID:From; b=2EnTHaH2pmSZGCjGbatnQnTZGRPunPBSuXvCLPl/B8GGpI87llEa8ydXHjjScxdpQ 9GCz6uaNnp8TjLWCOwF0X+QVk2+R2cAolQ4PV0lJXXMAunMYhFwjW6FVdmvLjHuJ5v 1bJCp2Hi4k/5PrAnn4C2RiTREMIF2d3X22rkeHAr46IyYYYkK9O6kyqYCApV8fQeC3 8xPvqyL3Sqmqyd8GeKEL5qHse2gtuDbj/Z3nPOiWuEUkEZn/3DeqYB67s59TET6Zak Updp8d5y2aqO100qPAAWJczwh+VbMaIPBhnXeJlT/n4Y78S4YdU+B6h7pWxihVN3ii ODHLQ8PP2q50w== Received: from mail.postgrespro.ru (webmail-master-mstn.l.postgrespro.ru [192.168.2.26]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: a.pyhalov@postgrespro.ru) by mail.postgrespro.ru (Postfix/587) with ESMTPSA id 5EDE25FF8C; Thu, 30 Jan 2025 11:50:35 +0300 (MSK) MIME-Version: 1.0 Date: Thu, 30 Jan 2025 11:50:35 +0300 From: Alexander Pyhalov To: Tom Lane Cc: Pavel Stehule , Alexander Korotkov , pgsql-hackers@lists.postgresql.org, Ronan Dunklau Subject: Re: SQLFunctionCache and generic plans In-Reply-To: References: <8216639.NyiUUSuA9g@aivenlaptop> <3084885.1675783797@sss.pgh.pa.us> <758251661a3e8760ff52dd5c672a7505@postgrespro.ru> <30f02ca545915627905fbe3f23d93ec1@postgrespro.ru> <2275997.1737138456@sss.pgh.pa.us> Message-ID: <51ebc5f3b846ce279b75ac4f5e5ac33f@postgrespro.ru> X-Sender: a.pyhalov@postgrespro.ru Content-Type: multipart/mixed; boundary="=_715337123a55c93ff97a73b7838a6d6a" X-KSMG-AntiPhishing: NotDetected X-KSMG-AntiSpam-Interceptor-Info: not scanned X-KSMG-AntiSpam-Status: not scanned, disabled by settings X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.1.0.7854, bases: 2025/01/30 07:21:00 #27156911 X-KSMG-AntiVirus-Status: NotDetected, skipped X-KSMG-LinksScanning: not scanned, disabled by settings X-KSMG-Message-Action: skipped X-KSMG-Rule-ID: 1 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_715337123a55c93ff97a73b7838a6d6a Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Alexander Pyhalov писал(а) 2025-01-29 17:35: > Tom Lane писал(а) 2025-01-17 21:27: >> Alexander Pyhalov writes: >>> I've rebased patch on master. Tests pass here. >> >> The cfbot still doesn't like it; my guess is that you built without >> --with-libxml and so didn't notice the effects on xml.out. > > Hi. Thank you for review. > > I've updated patch. Sorry, missed one local patch to fix memory bloat during replaning. Also fixed a compiler warning. -- Best regards, Alexander Pyhalov, Postgres Professional --=_715337123a55c93ff97a73b7838a6d6a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v5-0002-Use-custom-plan-machinery-for-SQL-function.patch Content-Disposition: attachment; filename=v5-0002-Use-custom-plan-machinery-for-SQL-function.patch; size=24509 RnJvbSBhNzJjOTlkZjNmMmEwODIzYjhmMzA4Y2NiZGUzZmY2MGVhN2UzNDgzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBUaHUsIDIzIEphbiAyMDI1IDE0OjM0OjE3ICswMzAwClN1YmplY3Q6IFtQ QVRDSCAyLzJdIFVzZSBjdXN0b20gcGxhbiBtYWNoaW5lcnkgZm9yIFNRTCBmdW5jdGlvbgoKLS0t CiBzcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYyAgICAgICAgICB8IDIwNCArKysrKysr KysrKysrKysrKystLS0tCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyAgICAg ICB8ICA5MCArKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAg ICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaCAgICAgICAgICAgICB8 ICAgNSArCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dCB8ICA1MSAr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0ICAgICAgIHwgIDM1ICsr KysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbCAgICAgIHwgIDQxICsrKysr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ydWxlcy5zcWwgICAgICAgICAgICB8ICAyNCArKysKIDgg ZmlsZXMgY2hhbmdlZCwgNDAyIGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggMTI1NjVkMGE3ZTAuLjJjN2I1OGQ5M2NhIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9mdW5jdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9mdW5jdGlvbnMuYwpAQCAtMzMsMTAgKzMzLDEwIEBACiAjaW5jbHVkZSAidXRpbHMv ZGF0dW0uaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9t ZW11dGlscy5oIgorI2luY2x1ZGUgInV0aWxzL3BsYW5jYWNoZS5oIgogI2luY2x1ZGUgInV0aWxz L3NuYXBtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9zeXNjYWNoZS5oIgogCi0KIC8qCiAgKiBTcGVj aWFsaXplZCBEZXN0UmVjZWl2ZXIgZm9yIGNvbGxlY3RpbmcgcXVlcnkgb3V0cHV0IGluIGEgU1FM IGZ1bmN0aW9uCiAgKi8KQEAgLTExMiw2ICsxMTIsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogCUp1 bmtGaWx0ZXIgKmp1bmtGaWx0ZXI7CQkvKiB3aWxsIGJlIE5VTEwgaWYgZnVuY3Rpb24gcmV0dXJu cyBWT0lEICovCiAKKwkvKiBDYWNoZWQgcGxhbnMgc3VwcG9ydCAqLworCUxpc3QJICAgKnF1ZXJ5 VHJlZV9saXN0OyAvKiBsaXN0IG9mIHF1ZXJ5IGxpc3RzICovCisJTGlzdAkgICAqcGxhbnNvdXJj ZV9saXN0OwkvKiBsaXN0IG9mIHBsYW5zb3VyY2UgKi8KKwlMaXN0CSAgICpjcGxhbl9saXN0OwkJ LyogbGlzdCBvZiBjYWNoZWQgcGxhbnMgKi8KKwlpbnQJCQlwbGFubmluZ19zdG10X251bWJlcjsJ LyogdGhlIG51bWJlciBvZiBzdGF0ZW1lbnQgd2UgYXJlCisJCQkJCQkJCQkJICogY3VycmVudGx5 IHBsYW5uaW5nICovCisKIAkvKgogCSAqIGZ1bmNfc3RhdGUgaXMgYSBMaXN0IG9mIGV4ZWN1dGlv bl9zdGF0ZSByZWNvcmRzLCBlYWNoIG9mIHdoaWNoIGlzIHRoZQogCSAqIGZpcnN0IGZvciBpdHMg b3JpZ2luYWwgcGFyc2V0cmVlLCB3aXRoIGFueSBhZGRpdGlvbmFsIHJlY29yZHMgY2hhaW5lZApA QCAtMTIyLDYgKzEyOSw4IEBAIHR5cGVkZWYgc3RydWN0CiAKIAlNZW1vcnlDb250ZXh0IGZjb250 ZXh0OwkJLyogbWVtb3J5IGNvbnRleHQgaG9sZGluZyB0aGlzIHN0cnVjdCBhbmQgYWxsCiAJCQkJ CQkJCSAqIHN1YnNpZGlhcnkgZGF0YSAqLworCU1lbW9yeUNvbnRleHQgcGxhbm5pbmdfY29udGV4 dDsgLyogbWVtb3J5IGNvbnRleHQgd2hpY2ggaXMgdXNlZCBmb3IKKwkJCQkJCQkJCSAqIHBsYW5u aW5nICovCiAKIAlMb2NhbFRyYW5zYWN0aW9uSWQgbHhpZDsJLyogbHhpZCBpbiB3aGljaCBjYWNo ZSB3YXMgbWFkZSAqLwogCVN1YlRyYW5zYWN0aW9uSWQgc3VieGlkOwkvKiBzdWJ4aWQgaW4gd2hp Y2ggY2FjaGUgd2FzIG1hZGUgKi8KQEAgLTUwMCw0NSArNTA5LDU3IEBAIGluaXRfZXhlY3V0aW9u X3N0YXRlKExpc3QgKnF1ZXJ5VHJlZV9saXN0LAogCQkJCQkgYm9vbCBsYXp5RXZhbE9LKQogewog CUxpc3QJICAgKmVzbGlzdCA9IE5JTDsKKwlMaXN0CSAgICpjcGxhbl9saXN0ID0gTklMOwogCWV4 ZWN1dGlvbl9zdGF0ZSAqbGFzdHRhZ2VzID0gTlVMTDsKLQlMaXN0Q2VsbCAgICpsYzE7CisKKwkv KiBXZSB1c2UgbGMxIGluZGV4LCBub3QgbGMxIGl0c2VsZiwgc28gbWFyayBpdCB1bnVzZWQgKi8K KwlMaXN0Q2VsbCAgICpsYzEgcGdfYXR0cmlidXRlX3VudXNlZCgpOworCU1lbW9yeUNvbnRleHQg b2xkY29udGV4dDsKKworCS8qCisJICogSW52YWxpZGF0ZSBmdW5jX3N0YXRlIHByaW9yIHRvIHJl c2V0dGluZyAtIG90aGVyd2lzZSBlcnJvciBjYWxsYmFjayBjYW4KKwkgKiBhY2Nlc3MgaXQKKwkg Ki8KKwlmY2FjaGUtPmZ1bmNfc3RhdGUgPSBOSUw7CisJTWVtb3J5Q29udGV4dFJlc2V0KGZjYWNo ZS0+cGxhbm5pbmdfY29udGV4dCk7CisKKwlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGZjYWNoZS0+cGxhbm5pbmdfY29udGV4dCk7CiAKIAlmb3JlYWNoKGxjMSwgcXVlcnlUcmVl X2xpc3QpCiAJewotCQlMaXN0CSAgICpxdGxpc3QgPSBsZmlyc3Rfbm9kZShMaXN0LCBsYzEpOwog CQlleGVjdXRpb25fc3RhdGUgKmZpcnN0ZXMgPSBOVUxMOwogCQlleGVjdXRpb25fc3RhdGUgKnBy ZXZlcyA9IE5VTEw7CiAJCUxpc3RDZWxsICAgKmxjMjsKKwkJQ2FjaGVkUGxhbiAqY3BsYW47CisJ CUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2U7CisJCWludAkJCWN1cl9pZHg7CiAKLQkJZm9y ZWFjaChsYzIsIHF0bGlzdCkKKwkJLyogRmluZCBwbGFuIHNvdXJjZSwgY29ycmVzcG9uZGluZyB0 byB0aGlzIHF1ZXJ5IGxpc3QgKi8KKwkJY3VyX2lkeCA9IGZvcmVhY2hfY3VycmVudF9pbmRleChs YzEpOworCQlwbGFuc291cmNlID0gbGlzdF9udGgoZmNhY2hlLT5wbGFuc291cmNlX2xpc3QsIGN1 cl9pZHgpOworCQkvKiBTYXZlIHN0YXRlbWVudCBudW1iZXIgZm9yIGVycm9yIHJlcG9ydGluZyAq LworCQlmY2FjaGUtPnBsYW5uaW5nX3N0bXRfbnVtYmVyID0gY3VyX2lkeCArIDEgLyogY3VyX2lk eCBzdGFydHMgd2l0aCAwICovIDsKKworCQkvKgorCQkgKiBHZXQgcGxhbiBmb3IgdGhlIHF1ZXJ5 LiBJZiBwYXJhbUxJIGlzIHNldCwgd2UgY2FuIGdldCBjdXN0b20gcGxhbgorCQkgKi8KKwkJY3Bs YW4gPSBHZXRDYWNoZWRQbGFuKHBsYW5zb3VyY2UsIGZjYWNoZS0+cGFyYW1MSSwgTlVMTCwgTlVM TCk7CisKKwkJLyogUmVjb3JkIGNwbGFuIGluIHBsYW4gbGlzdCB0byBiZSByZWxlYXNlZCBvbiBy ZXBsYW5uaW5nICovCisJCWNwbGFuX2xpc3QgPSBsYXBwZW5kKGNwbGFuX2xpc3QsIGNwbGFuKTsK KworCQkvKiBGb3IgZWFjaCBwbGFubmVkIHN0YXRlbWVudCBjcmVhdGUgZXhlY3V0aW9uIHN0YXRl ICovCisJCWZvcmVhY2gobGMyLCBjcGxhbi0+c3RtdF9saXN0KQogCQl7Ci0JCQlRdWVyeQkgICAq cXVlcnlUcmVlID0gbGZpcnN0X25vZGUoUXVlcnksIGxjMik7Ci0JCQlQbGFubmVkU3RtdCAqc3Rt dDsKKwkJCVBsYW5uZWRTdG10ICpzdG10ID0gbGZpcnN0KGxjMik7CiAJCQlleGVjdXRpb25fc3Rh dGUgKm5ld2VzOwogCi0JCQkvKiBQbGFuIHRoZSBxdWVyeSBpZiBuZWVkZWQgKi8KLQkJCWlmIChx dWVyeVRyZWUtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQkJewotCQkJCS8qIFV0aWxp dHkgY29tbWFuZHMgcmVxdWlyZSBubyBwbGFubmluZy4gKi8KLQkJCQlzdG10ID0gbWFrZU5vZGUo UGxhbm5lZFN0bXQpOwotCQkJCXN0bXQtPmNvbW1hbmRUeXBlID0gQ01EX1VUSUxJVFk7Ci0JCQkJ c3RtdC0+Y2FuU2V0VGFnID0gcXVlcnlUcmVlLT5jYW5TZXRUYWc7Ci0JCQkJc3RtdC0+dXRpbGl0 eVN0bXQgPSBxdWVyeVRyZWUtPnV0aWxpdHlTdG10OwotCQkJCXN0bXQtPnN0bXRfbG9jYXRpb24g PSBxdWVyeVRyZWUtPnN0bXRfbG9jYXRpb247Ci0JCQkJc3RtdC0+c3RtdF9sZW4gPSBxdWVyeVRy ZWUtPnN0bXRfbGVuOwotCQkJCXN0bXQtPnF1ZXJ5SWQgPSBxdWVyeVRyZWUtPnF1ZXJ5SWQ7Ci0J CQl9Ci0JCQllbHNlCi0JCQkJc3RtdCA9IHBnX3BsYW5fcXVlcnkocXVlcnlUcmVlLAotCQkJCQkJ CQkJIGZjYWNoZS0+c3JjLAotCQkJCQkJCQkJIENVUlNPUl9PUFRfUEFSQUxMRUxfT0ssCi0JCQkJ CQkJCQkgTlVMTCk7Ci0KIAkJCS8qIENoZWNrIHRoYXQgc3RtdCBpcyB2YWxpZCBmb3IgU1FMIGZ1 bmN0aW9uICovCiAJCQljaGVja19wbGFubmVkX3N0bXQoc3RtdCwgZmNhY2hlKTsKIAogCQkJLyog T0ssIGJ1aWxkIHRoZSBleGVjdXRpb25fc3RhdGUgZm9yIHRoaXMgcXVlcnkgKi8KIAkJCW5ld2Vz ID0gKGV4ZWN1dGlvbl9zdGF0ZSAqKSBwYWxsb2Moc2l6ZW9mKGV4ZWN1dGlvbl9zdGF0ZSkpOwor CiAJCQlpZiAocHJldmVzKQogCQkJCXByZXZlcy0+bmV4dCA9IG5ld2VzOwogCQkJZWxzZQpAQCAt NTUxLDcgKzU3Miw3IEBAIGluaXRfZXhlY3V0aW9uX3N0YXRlKExpc3QgKnF1ZXJ5VHJlZV9saXN0 LAogCQkJbmV3ZXMtPnN0bXQgPSBzdG10OwogCQkJbmV3ZXMtPnFkID0gTlVMTDsKIAotCQkJaWYg KHF1ZXJ5VHJlZS0+Y2FuU2V0VGFnKQorCQkJaWYgKHN0bXQtPmNhblNldFRhZykKIAkJCQlsYXN0 dGFnZXMgPSBuZXdlczsKIAogCQkJcHJldmVzID0gbmV3ZXM7CkBAIC01ODMsNiArNjA0LDExIEBA IGluaXRfZXhlY3V0aW9uX3N0YXRlKExpc3QgKnF1ZXJ5VHJlZV9saXN0LAogCQkJZmNhY2hlLT5s YXp5RXZhbCA9IGxhc3R0YWdlcy0+bGF6eUV2YWwgPSB0cnVlOwogCX0KIAorCS8qIFdlJ3ZlIGZp bmlzaGVkIHBsYW5uaW5nLCByZXNldCBwbGFubmluZyBzdGF0ZW1lbnQgbnVtYmVyICovCisJZmNh Y2hlLT5wbGFubmluZ19zdG10X251bWJlciA9IDA7CisJZmNhY2hlLT5jcGxhbl9saXN0ID0gY3Bs YW5fbGlzdDsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKIAlyZXR1cm4g ZXNsaXN0OwogfQogCkBAIC02MDYsNiArNjMyLDcgQEAgaW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9u Q2FsbEluZm8gZmNpbmZvLCBPaWQgY29sbGF0aW9uLCBib29sIGxhenlFdmFsT0spCiAJTGlzdENl bGwgICAqbGM7CiAJRGF0dW0JCXRtcDsKIAlib29sCQlpc051bGw7CisJTGlzdAkgICAqcGxhbnNv dXJjZV9saXN0OwogCiAJLyoKIAkgKiBDcmVhdGUgbWVtb3J5IGNvbnRleHQgdGhhdCBob2xkcyBh bGwgdGhlIFNRTEZ1bmN0aW9uQ2FjaGUgZGF0YS4gIEl0CkBAIC02MjQsNiArNjUxLDEwIEBAIGlu aXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lkIGNvbGxhdGlvbiwgYm9v bCBsYXp5RXZhbE9LKQogCSAqLwogCWZjYWNoZSA9IChTUUxGdW5jdGlvbkNhY2hlUHRyKSBwYWxs b2MwKHNpemVvZihTUUxGdW5jdGlvbkNhY2hlKSk7CiAJZmNhY2hlLT5mY29udGV4dCA9IGZjb250 ZXh0OworCS8qIENyZWF0ZSBzZXBhcmF0ZSBjb250ZXh0IGZvciBwbGFubmluZyAqLworCWZjYWNo ZS0+cGxhbm5pbmdfY29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShmY2FjaGUtPmZjb250 ZXh0LAorCQkJCQkJCQkJCQkJCSAiU1FMIGxhbmd1YWdlIGZ1bmN0aW9ucyBwbGFubmluZyBjb250 ZXh0IiwKKwkJCQkJCQkJCQkJCQkgQUxMT0NTRVRfU01BTExfU0laRVMpOwogCWZpbmZvLT5mbl9l eHRyYSA9IGZjYWNoZTsKIAogCS8qCkBAIC02OTAsNiArNzIxLDcgQEAgaW5pdF9zcWxfZmNhY2hl KEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgY29sbGF0aW9uLCBib29sIGxhenlFdmFsT0sp CiAJICogcGxhbmNhY2hlLmMuCiAJICovCiAJcXVlcnlUcmVlX2xpc3QgPSBOSUw7CisJcGxhbnNv dXJjZV9saXN0ID0gTklMOwogCWlmICghaXNOdWxsKQogCXsKIAkJTm9kZQkgICAqbjsKQEAgLTcw NSw4ICs3MzcsMTMgQEAgaW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBP aWQgY29sbGF0aW9uLCBib29sIGxhenlFdmFsT0spCiAJCXsKIAkJCVF1ZXJ5CSAgICpwYXJzZXRy ZWUgPSBsZmlyc3Rfbm9kZShRdWVyeSwgbGMpOwogCQkJTGlzdAkgICAqcXVlcnlUcmVlX3N1Ymxp c3Q7CisJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlOwogCiAJCQlBY3F1aXJlUmV3cml0 ZUxvY2tzKHBhcnNldHJlZSwgdHJ1ZSwgZmFsc2UpOworCisJCQlwbGFuc291cmNlID0gQ3JlYXRl Q2FjaGVkUGxhbkZvclF1ZXJ5KHBhcnNldHJlZSwgZmNhY2hlLT5zcmMsIENyZWF0ZUNvbW1hbmRU YWcoKE5vZGUgKikgcGFyc2V0cmVlKSk7CisJCQlwbGFuc291cmNlX2xpc3QgPSBsYXBwZW5kKHBs YW5zb3VyY2VfbGlzdCwgcGxhbnNvdXJjZSk7CisKIAkJCXF1ZXJ5VHJlZV9zdWJsaXN0ID0gcGdf cmV3cml0ZV9xdWVyeShwYXJzZXRyZWUpOwogCQkJcXVlcnlUcmVlX2xpc3QgPSBsYXBwZW5kKHF1 ZXJ5VHJlZV9saXN0LCBxdWVyeVRyZWVfc3VibGlzdCk7CiAJCX0KQEAgLTcyMSw2ICs3NTgsMTAg QEAgaW5pdF9zcWxfZmNhY2hlKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBPaWQgY29sbGF0aW9u LCBib29sIGxhenlFdmFsT0spCiAJCXsKIAkJCVJhd1N0bXQgICAgKnBhcnNldHJlZSA9IGxmaXJz dF9ub2RlKFJhd1N0bXQsIGxjKTsKIAkJCUxpc3QJICAgKnF1ZXJ5VHJlZV9zdWJsaXN0OworCQkJ Q2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZTsKKworCQkJcGxhbnNvdXJjZSA9IENyZWF0ZUNh Y2hlZFBsYW4ocGFyc2V0cmVlLCBmY2FjaGUtPnNyYywgQ3JlYXRlQ29tbWFuZFRhZyhwYXJzZXRy ZWUtPnN0bXQpKTsKKwkJCXBsYW5zb3VyY2VfbGlzdCA9IGxhcHBlbmQocGxhbnNvdXJjZV9saXN0 LCBwbGFuc291cmNlKTsKIAogCQkJcXVlcnlUcmVlX3N1Ymxpc3QgPSBwZ19hbmFseXplX2FuZF9y ZXdyaXRlX3dpdGhjYihwYXJzZXRyZWUsCiAJCQkJCQkJCQkJCQkJCQkgIGZjYWNoZS0+c3JjLApA QCAtNzYxLDYgKzgwMiwzNCBAQCBpbml0X3NxbF9mY2FjaGUoRnVuY3Rpb25DYWxsSW5mbyBmY2lu Zm8sIE9pZCBjb2xsYXRpb24sIGJvb2wgbGF6eUV2YWxPSykKIAkJCQkJCQkJCQkJICAgZmFsc2Us CiAJCQkJCQkJCQkJCSAgICZyZXN1bHR0bGlzdCk7CiAKKwkvKgorCSAqIFF1ZXJpZXMgY291bGQg YmUgcmV3cml0dGVuIGJ5IGNoZWNrX3NxbF9mbl9yZXR2YWwoKS4gTm93IHdoZW4gdGhleSBoYXZl CisJICogdGhlaXIgZmluYWwgZm9ybSwgd2UgY2FuIGNvbXBsZXRlIHBsYW4gY2FjaGUgZW50cnkg Y3JlYXRpb24uCisJICovCisJaWYgKHBsYW5zb3VyY2VfbGlzdCAhPSBOSUwpCisJeworCQlMaXN0 Q2VsbCAgICpxbGM7CisJCUxpc3RDZWxsICAgKnBsYzsKKworCQlmb3Jib3RoKHFsYywgcXVlcnlU cmVlX2xpc3QsIHBsYywgcGxhbnNvdXJjZV9saXN0KQorCQl7CisJCQlMaXN0CSAgICpxdWVyeVRy ZWVfc3VibGlzdCA9IGxmaXJzdChxbGMpOworCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJj ZSA9IGxmaXJzdChwbGMpOworCisKKwkJCS8qIEZpbmlzaCBmaWxsaW5nIGluIHRoZSBDYWNoZWRQ bGFuU291cmNlICovCisJCQlDb21wbGV0ZUNhY2hlZFBsYW4ocGxhbnNvdXJjZSwKKwkJCQkJCQkg ICBxdWVyeVRyZWVfc3VibGlzdCwKKwkJCQkJCQkgICBOVUxMLAorCQkJCQkJCSAgIE5VTEwsCisJ CQkJCQkJICAgMCwKKwkJCQkJCQkgICAoUGFyc2VyU2V0dXBIb29rKSBzcWxfZm5fcGFyc2VyX3Nl dHVwLAorCQkJCQkJCSAgIGZjYWNoZS0+cGluZm8sCisJCQkJCQkJICAgQ1VSU09SX09QVF9QQVJB TExFTF9PSyB8IENVUlNPUl9PUFRfTk9fU0NST0xMLAorCQkJCQkJCSAgIGZhbHNlKTsKKwkJfQor CX0KKwogCS8qCiAJICogQ29uc3RydWN0IGEgSnVua0ZpbHRlciB3ZSBjYW4gdXNlIHRvIGNvZXJj ZSB0aGUgcmV0dXJuZWQgcm93dHlwZSB0byB0aGUKIAkgKiBkZXNpcmVkIGZvcm0sIHVubGVzcyB0 aGUgcmVzdWx0IHR5cGUgaXMgVk9JRCwgaW4gd2hpY2ggY2FzZSB0aGVyZSdzCkBAIC04MDUsMTAg Kzg3NCw4IEBAIGluaXRfc3FsX2ZjYWNoZShGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgT2lkIGNv bGxhdGlvbiwgYm9vbCBsYXp5RXZhbE9LKQogCQlsYXp5RXZhbE9LID0gdHJ1ZTsKIAl9CiAKLQkv KiBGaW5hbGx5LCBwbGFuIHRoZSBxdWVyaWVzICovCi0JZmNhY2hlLT5mdW5jX3N0YXRlID0gaW5p dF9leGVjdXRpb25fc3RhdGUocXVlcnlUcmVlX2xpc3QsCi0JCQkJCQkJCQkJCSAgZmNhY2hlLAot CQkJCQkJCQkJCQkgIGxhenlFdmFsT0spOworCWZjYWNoZS0+cXVlcnlUcmVlX2xpc3QgPSBxdWVy eVRyZWVfbGlzdDsKKwlmY2FjaGUtPnBsYW5zb3VyY2VfbGlzdCA9IHBsYW5zb3VyY2VfbGlzdDsK IAogCS8qIE1hcmsgZmNhY2hlIHdpdGggdGltZSBvZiBjcmVhdGlvbiB0byBzaG93IGl0J3MgdmFs aWQgKi8KIAlmY2FjaGUtPmx4aWQgPSBNeVByb2MtPnZ4aWQubHhpZDsKQEAgLTk3OSw3ICsxMDQ2 LDEyIEBAIHBvc3RxdWVsX3N1Yl9wYXJhbXMoU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUsCiAJ CQlwcm0tPnZhbHVlID0gTWFrZUV4cGFuZGVkT2JqZWN0UmVhZE9ubHkoZmNpbmZvLT5hcmdzW2ld LnZhbHVlLAogCQkJCQkJCQkJCQkJCXBybS0+aXNudWxsLAogCQkJCQkJCQkJCQkJCWdldF90eXBs ZW4oYXJndHlwZXNbaV0pKTsKLQkJCXBybS0+cGZsYWdzID0gMDsKKworCQkJLyoKKwkJCSAqIFBB UkFNX0ZMQUdfQ09OU1QgaXMgbmVjZXNzYXJ5IHRvIGJ1aWxkIGVmZmljaWVudCBjdXN0b20gcGxh bi4KKwkJCSAqLworCQkJcHJtLT5wZmxhZ3MgPSBQQVJBTV9GTEFHX0NPTlNUOworCiAJCQlwcm0t PnB0eXBlID0gYXJndHlwZXNbaV07CiAJCX0KIAl9CkBAIC0xMDMyLDYgKzExMDQsMzMgQEAgcG9z dHF1ZWxfZ2V0X3NpbmdsZV9yZXN1bHQoVHVwbGVUYWJsZVNsb3QgKnNsb3QsCiAJcmV0dXJuIHZh bHVlOwogfQogCisvKgorICogUmVsZWFzZSBwbGFucy4gVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQg cHJpb3IgdG8gcGxhbm5pbmcKKyAqIHN0YXRlbWVudHMgd2l0aCBuZXcgcGFyYW1ldGVycy4gV2hl biBjdXN0b20gcGxhbnMgYXJlIGdlbmVyYXRlZAorICogZm9yIGVhY2ggZnVuY3Rpb24gY2FsbCBp biBhIHN0YXRlbWVudCwgdGhleSBjYW4gY29uc3VtZSB0b28gbXVjaCBtZW1vcnksIHNvCisgKiBy ZWxlYXNlIHRoZW0uIEdlbmVyaWMgcGxhbnMgd2lsbCBzdXJ2aXZlIGl0IGFzIHBsYW5zb3VyY2Ug aG9sZHMKKyAqIHJlZmVyZW5jZSB0byBhIGdlbmVyaWMgcGxhbi4KKyAqLworc3RhdGljIHZvaWQK K3JlbGVhc2VfcGxhbnMoTGlzdCAqY3BsYW5zKQoreworCUxpc3RDZWxsICAgKmxjOworCisJLyoK KwkgKiBXZSBzdXBwb3J0IHNlcGFyYXRlIHBsYW4gbGlzdCwgc28gdGhhdCB3ZSB2aXNpdCBlYWNo IHBsYW4gaGVyZSBvbmx5CisJICogb25jZQorCSAqLworCWZvcmVhY2gobGMsIGNwbGFucykKKwl7 CisJCUNhY2hlZFBsYW4gKmNwbGFuID0gbGZpcnN0KGxjKTsKKworCQlSZWxlYXNlQ2FjaGVkUGxh bihjcGxhbiwgTlVMTCk7CisJfQorCisJLyogQ2xlYW51cCB0aGUgbGlzdCBpdHNlbGYgKi8KKwls aXN0X2ZyZWUoY3BsYW5zKTsKK30KKwogLyoKICAqIGZtZ3Jfc3FsOiBmdW5jdGlvbiBjYWxsIG1h bmFnZXIgZm9yIFNRTCBmdW5jdGlvbnMKICAqLwpAQCAtMTA1MCw2ICsxMTQ5LDcgQEAgZm1ncl9z cWwoUEdfRlVOQ1RJT05fQVJHUykKIAlEYXR1bQkJcmVzdWx0OwogCUxpc3QJICAgKmVzbGlzdDsK IAlMaXN0Q2VsbCAgICplc2xjOworCWJvb2wJCWJ1aWxkX2NhY2hlZF9wbGFucyA9IGZhbHNlOwog CiAJLyoKIAkgKiBTZXR1cCBlcnJvciB0cmFjZWJhY2sgc3VwcG9ydCBmb3IgZXJlcG9ydCgpCkBA IC0xMTM5LDEyICsxMjM5LDQwIEBAIGZtZ3Jfc3FsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlicmVh azsKIAl9CiAKKwkvKgorCSAqIFdlIHNraXAgYWN0dWFsIHBsYW5uaW5nIGZvciBpbml0aWFsIHJ1 biwgc28gaW4gdGhpcyBjYXNlIHdlIGhhdmUgdG8KKwkgKiBidWlsZCBjYWNoZWQgcGxhbnMgbm93 LgorCSAqLworCWlmIChmY2FjaGUtPnBsYW5zb3VyY2VfbGlzdCAhPSBOSUwgJiYgZXNsaXN0ID09 IE5JTCkKKwkJYnVpbGRfY2FjaGVkX3BsYW5zID0gdHJ1ZTsKKwogCS8qCiAJICogQ29udmVydCBw YXJhbXMgdG8gYXBwcm9wcmlhdGUgZm9ybWF0IGlmIHN0YXJ0aW5nIGEgZnJlc2ggZXhlY3V0aW9u LiAoSWYKIAkgKiBjb250aW51aW5nIGV4ZWN1dGlvbiwgd2UgY2FuIHJlLXVzZSBwcmlvciBwYXJh bXMuKQogCSAqLwotCWlmIChpc19maXJzdCAmJiBlcyAmJiBlcy0+c3RhdHVzID09IEZfRVhFQ19T VEFSVCkKKwlpZiAoKGlzX2ZpcnN0ICYmIGVzICYmIGVzLT5zdGF0dXMgPT0gRl9FWEVDX1NUQVJU KSB8fCBidWlsZF9jYWNoZWRfcGxhbnMpCisJewogCQlwb3N0cXVlbF9zdWJfcGFyYW1zKGZjYWNo ZSwgZmNpbmZvKTsKKwkJaWYgKGZjYWNoZS0+cGxhbnNvdXJjZV9saXN0KQorCQl7CisJCQkvKiBy ZXBsYW4gdGhlIHF1ZXJpZXMgKi8KKwkJCXJlbGVhc2VfcGxhbnMoZmNhY2hlLT5jcGxhbl9saXN0 KTsKKworCQkJZmNhY2hlLT5mdW5jX3N0YXRlID0gaW5pdF9leGVjdXRpb25fc3RhdGUoZmNhY2hl LT5xdWVyeVRyZWVfbGlzdCwKKwkJCQkJCQkJCQkJCQkgIGZjYWNoZSwKKwkJCQkJCQkJCQkJCQkg IGxhenlFdmFsT0spOworCQkJLyogcmVzdG9yZSBleGVjdXRpb24gc3RhdGUgYW5kIGVzbGlzdC1y ZWxhdGVkIHZhcmlhYmxlcyAqLworCQkJZXNsaXN0ID0gZmNhY2hlLT5mdW5jX3N0YXRlOworCQkJ LyogZmluZCB0aGUgZmlyc3Qgbm9uLU5VTEwgZXhlY3V0aW9uIHN0YXRlICovCisJCQlmb3JlYWNo KGVzbGMsIGVzbGlzdCkKKwkJCXsKKwkJCQllcyA9IChleGVjdXRpb25fc3RhdGUgKikgbGZpcnN0 KGVzbGMpOworCisJCQkJaWYgKGVzKQorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KIAogCS8q CiAJICogQnVpbGQgdHVwbGVzdG9yZSB0byBob2xkIHJlc3VsdHMsIGlmIHdlIGRvbid0IGhhdmUg b25lIGFscmVhZHkuIE5vdGUKQEAgLTE0MzgsMTMgKzE1NjYsMTkgQEAgc3FsX2V4ZWNfZXJyb3Jf Y2FsbGJhY2sodm9pZCAqYXJnKQogCX0KIAogCS8qCi0JICogVHJ5IHRvIGRldGVybWluZSB3aGVy ZSBpbiB0aGUgZnVuY3Rpb24gd2UgZmFpbGVkLiAgSWYgdGhlcmUgaXMgYSBxdWVyeQotCSAqIHdp dGggbm9uLW51bGwgUXVlcnlEZXNjLCBmaW5nZXIgaXQuICAoV2UgY2hlY2sgdGhpcyByYXRoZXIg dGhhbiBsb29raW5nCi0JICogZm9yIEZfRVhFQ19SVU4gc3RhdGUsIHNvIHRoYXQgZXJyb3JzIGR1 cmluZyBFeGVjdXRvclN0YXJ0IG9yCisJICogVHJ5IHRvIGRldGVybWluZSB3aGVyZSBpbiB0aGUg ZnVuY3Rpb24gd2UgZmFpbGVkLiAgSWYgZmFpbHVyZSBoYXBwZW5zCisJICogd2hpbGUgYnVpbGRp bmcgcGxhbnMsIGxvb2sgYXQgcGxhbm5pbmdfc3RtdF9udW1iZXIuICBFbHNlIGlmIHRoZXJlIGlz IGEKKwkgKiBxdWVyeSB3aXRoIG5vbi1udWxsIFF1ZXJ5RGVzYywgZmluZ2VyIGl0LiAgKFdlIGNo ZWNrIHRoaXMgcmF0aGVyIHRoYW4KKwkgKiBsb29raW5nIGZvciBGX0VYRUNfUlVOIHN0YXRlLCBz byB0aGF0IGVycm9ycyBkdXJpbmcgRXhlY3V0b3JTdGFydCBvcgogCSAqIEV4ZWN1dG9yRW5kIGFy ZSBibGFtZWQgb24gdGhlIGFwcHJvcHJpYXRlIHF1ZXJ5OyBzZWUgcG9zdHF1ZWxfc3RhcnQgYW5k CiAJICogcG9zdHF1ZWxfZW5kLikKIAkgKi8KLQlpZiAoZmNhY2hlLT5mdW5jX3N0YXRlKQorCWlm IChmY2FjaGUtPnBsYW5uaW5nX3N0bXRfbnVtYmVyKQorCXsKKwkJZXJyY29udGV4dCgiU1FMIGZ1 bmN0aW9uIFwiJXNcIiBzdGF0ZW1lbnQgJWQiLAorCQkJCSAgIGZjYWNoZS0+Zm5hbWUsIGZjYWNo ZS0+cGxhbm5pbmdfc3RtdF9udW1iZXIpOworCX0KKwllbHNlIGlmIChmY2FjaGUtPmZ1bmNfc3Rh dGUpCiAJewogCQlleGVjdXRpb25fc3RhdGUgKmVzOwogCQlpbnQJCQlxdWVyeV9udW07CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9wbGFuY2FjaGUuYyBiL3NyYy9iYWNrZW5k L3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jCmluZGV4IDU1ZGI4ZjUzNzA1Li5kZGRlNzAxMGZhNyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTc0LDE4ICs3NCw2IEBACiAjaW5j bHVkZSAidXRpbHMvc3lzY2FjaGUuaCIKIAogCi0vKgotICogV2UgbXVzdCBza2lwICJvdmVyaGVh ZCIgb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZGF0YWJhc2UgYWNjZXNzIHdoZW4gdGhlCi0gKiBj YWNoZWQgcGxhbidzIHN1YmplY3Qgc3RhdGVtZW50IGlzIGEgdHJhbnNhY3Rpb24gY29udHJvbCBj b21tYW5kIG9yIG9uZQotICogdGhhdCByZXF1aXJlcyBhIHNuYXBzaG90IG5vdCB0byBiZSBzZXQg eWV0IChzdWNoIGFzIFNFVCBvciBMT0NLKS4gIE1vcmUKLSAqIGdlbmVyYWxseSwgc3RhdGVtZW50 cyB0aGF0IGRvIG5vdCByZXF1aXJlIHBhcnNlIGFuYWx5c2lzL3Jld3JpdGUvcGxhbgotICogYWN0 aXZpdHkgbmV2ZXIgbmVlZCB0byBiZSByZXZhbGlkYXRlZCwgc28gd2UgY2FuIHRyZWF0IHRoZW0g YWxsIGxpa2UgdGhhdC4KLSAqIEZvciB0aGUgY29udmVuaWVuY2Ugb2YgcG9zdGdyZXMuYywgdHJl YXQgZW1wdHkgc3RhdGVtZW50cyB0aGF0IHdheSB0b28uCi0gKi8KLSNkZWZpbmUgU3RtdFBsYW5S ZXF1aXJlc1JldmFsaWRhdGlvbihwbGFuc291cmNlKSAgXAotCSgocGxhbnNvdXJjZSktPnJhd19w YXJzZV90cmVlICE9IE5VTEwgJiYgXAotCSBzdG10X3JlcXVpcmVzX3BhcnNlX2FuYWx5c2lzKChw bGFuc291cmNlKS0+cmF3X3BhcnNlX3RyZWUpKQotCiAvKgogICogVGhpcyBpcyB0aGUgaGVhZCBv ZiB0aGUgYmFja2VuZCdzIGxpc3Qgb2YgInNhdmVkIiBDYWNoZWRQbGFuU291cmNlcyAoaS5lLiwK ICAqIHRob3NlIHRoYXQgYXJlIGluIGxvbmctbGl2ZWQgc3RvcmFnZSBhbmQgYXJlIGV4YW1pbmVk IGZvciBzaW52YWwgZXZlbnRzKS4KQEAgLTEzMCw2ICsxMTgsNTEgQEAgc3RhdGljIGNvbnN0IFJl c291cmNlT3duZXJEZXNjIHBsYW5yZWZfcmVzb3duZXJfZGVzYyA9CiAJLkRlYnVnUHJpbnQgPSBO VUxMCQkJLyogdGhlIGRlZmF1bHQgbWVzc2FnZSBpcyBmaW5lICovCiB9OwogCisvKgorICogV2Ug bXVzdCBza2lwICJvdmVyaGVhZCIgb3BlcmF0aW9ucyB0aGF0IGludm9sdmUgZGF0YWJhc2UgYWNj ZXNzIHdoZW4gdGhlCisgKiBjYWNoZWQgcGxhbidzIHN1YmplY3Qgc3RhdGVtZW50IGlzIGEgdHJh bnNhY3Rpb24gY29udHJvbCBjb21tYW5kIG9yIG9uZQorICogdGhhdCByZXF1aXJlcyBhIHNuYXBz aG90IG5vdCB0byBiZSBzZXQgeWV0IChzdWNoIGFzIFNFVCBvciBMT0NLKS4gIE1vcmUKKyAqIGdl bmVyYWxseSwgc3RhdGVtZW50cyB0aGF0IGRvIG5vdCByZXF1aXJlIHBhcnNlIGFuYWx5c2lzL3Jl d3JpdGUvcGxhbgorICogYWN0aXZpdHkgbmV2ZXIgbmVlZCB0byBiZSByZXZhbGlkYXRlZCwgc28g d2UgY2FuIHRyZWF0IHRoZW0gYWxsIGxpa2UgdGhhdC4KKyAqIEZvciB0aGUgY29udmVuaWVuY2Ug b2YgcG9zdGdyZXMuYywgdHJlYXQgZW1wdHkgc3RhdGVtZW50cyB0aGF0IHdheSB0b28uCisgKiBJ ZiBwbGFuc291cmNlIGRvZXNuJ3QgaGF2ZSByYXdfcGFyc2VfdHJlZSwgbG9vayBhdCBxdWVyeV9s aXN0IHRvIGZpbmQgb3V0CisgKiBpZiB0aGVyZSBhcmUgYW55IG5vbi11dGlsaXR5IHN0YXRlbWVu dHMuIEFsc28gc29tZSB1dGlsaXR5IHN0YXRlbWVudHMKKyAqIGNhbiByZXF1aXJlIHJldmFsaWRh dGlvbi4gVGhlIGxvZ2ljIGlzIHRoZSBzYW1lIGFzIGluIHN0bXRfcmVxdWlyZXNfcGFyc2VfYW5h bHlzaXMoKS4KKyAqLworc3RhdGljIGlubGluZSBib29sCitTdG10UGxhblJlcXVpcmVzUmV2YWxp ZGF0aW9uKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UpCit7CisJaWYgKHBsYW5zb3VyY2Ut PnJhd19wYXJzZV90cmVlICE9IE5VTEwpCisJeworCQlyZXR1cm4gc3RtdF9yZXF1aXJlc19wYXJz ZV9hbmFseXNpcyhwbGFuc291cmNlLT5yYXdfcGFyc2VfdHJlZSk7CisJfQorCWVsc2UKKwl7CisJ CUxpc3RDZWxsICAgKmxjOworCisJCWZvcmVhY2gobGMsIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3Qp CisJCXsKKwkJCVF1ZXJ5CSAgICpxdWVyeSA9IGNhc3ROb2RlKFF1ZXJ5LCBsZmlyc3QobGMpKTsK KworCQkJaWYgKHF1ZXJ5LT5jb21tYW5kVHlwZSAhPSBDTURfVVRJTElUWSkKKwkJCQlyZXR1cm4g dHJ1ZTsKKworCQkJLyogc2hvdWxkIG1hdGNoIHN0bXRfcmVxdWlyZXNfcGFyc2VfYW5hbHlzaXMo KSAqLworCQkJc3dpdGNoIChub2RlVGFnKHF1ZXJ5LT51dGlsaXR5U3RtdCkpCisJCQl7CisJCQkJ Y2FzZSBUX0RlY2xhcmVDdXJzb3JTdG10OgorCQkJCWNhc2UgVF9FeHBsYWluU3RtdDoKKwkJCQlj YXNlIFRfQ3JlYXRlVGFibGVBc1N0bXQ6CisJCQkJY2FzZSBUX0NhbGxTdG10OgorCQkJCQlyZXR1 cm4gdHJ1ZTsKKwkJCQlkZWZhdWx0OgorCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwlyZXR1 cm4gZmFsc2U7Cit9CisKIC8qIENvbnZlbmllbmNlIHdyYXBwZXJzIG92ZXIgUmVzb3VyY2VPd25l clJlbWVtYmVyL0ZvcmdldCAqLwogc3RhdGljIGlubGluZSB2b2lkCiBSZXNvdXJjZU93bmVyUmVt ZW1iZXJQbGFuQ2FjaGVSZWYoUmVzb3VyY2VPd25lciBvd25lciwgQ2FjaGVkUGxhbiAqcGxhbikK QEAgLTE4NCw3ICsyMTcsOCBAQCBJbml0UGxhbkNhY2hlKHZvaWQpCiAgKiBPbmNlIGNvbnN0cnVj dGVkLCB0aGUgY2FjaGVkIHBsYW4gY2FuIGJlIG1hZGUgbG9uZ2VyLWxpdmVkLCBpZiBuZWVkZWQs CiAgKiBieSBjYWxsaW5nIFNhdmVDYWNoZWRQbGFuLgogICoKLSAqIHJhd19wYXJzZV90cmVlOiBv dXRwdXQgb2YgcmF3X3BhcnNlcigpLCBvciBOVUxMIGlmIGVtcHR5IHF1ZXJ5CisgKiByYXdfcGFy c2VfdHJlZTogb3V0cHV0IG9mIHJhd19wYXJzZXIoKSwgb3IgTlVMTCBpZiBlbXB0eSBxdWVyeSwg Y2FuCisgKiAgIGFsc28gYmUgTlVMTCBpZiBwbGFuc291cmNlLT5hbmFseXplZF9wYXJzZV90cmVl IGlzIHNldCBpbnN0ZWFkCiAgKiBxdWVyeV9zdHJpbmc6IG9yaWdpbmFsIHF1ZXJ5IHRleHQKICAq IGNvbW1hbmRUYWc6IGNvbW1hbmQgdGFnIGZvciBxdWVyeSwgb3IgVU5LTk9XTiBpZiBlbXB0eSBx dWVyeQogICovCkBAIC0yNTQsNiArMjg4LDI3IEBAIENyZWF0ZUNhY2hlZFBsYW4oUmF3U3RtdCAq cmF3X3BhcnNlX3RyZWUsCiAJcmV0dXJuIHBsYW5zb3VyY2U7CiB9CiAKKy8qCisgKiBDcmVhdGVD YWNoZWRQbGFuRm9yUXVlcnk6IGluaXRpYWxseSBjcmVhdGUgYSBwbGFuIGNhY2hlIGVudHJ5Cisg KiBmb3IgcGFyc2VkIGFuZCBhbmFseXplZCBxdWVyeS4gVW5saWtlIENyZWF0ZUNhY2hlZFBsYW4o KSwKKyAqIGl0IHByZXNlcnZlcyBhbmFseXplZCBwYXJzZSB0cmVlLCBub3QgcmF3IHBhcnNlIHRy ZWUuCisgKi8KK0NhY2hlZFBsYW5Tb3VyY2UgKgorQ3JlYXRlQ2FjaGVkUGxhbkZvclF1ZXJ5KFF1 ZXJ5ICphbmFseXplZF9wYXJzZV90cmVlLAorCQkJCQkJIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZywKKwkJCQkJCSBDb21tYW5kVGFnIGNvbW1hbmRUYWcpCit7CisJQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZTsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKworCXBsYW5zb3VyY2UgPSBDcmVh dGVDYWNoZWRQbGFuKE5VTEwsIHF1ZXJ5X3N0cmluZywgY29tbWFuZFRhZyk7CisJb2xkY3h0ID0g TWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5zb3VyY2UtPmNvbnRleHQpOworCXBsYW5zb3VyY2Ut PmFuYWx5emVkX3BhcnNlX3RyZWUgPSBjb3B5T2JqZWN0KGFuYWx5emVkX3BhcnNlX3RyZWUpOwor CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJcmV0dXJuIHBsYW5zb3VyY2U7Cit9 CisKIC8qCiAgKiBDcmVhdGVPbmVTaG90Q2FjaGVkUGxhbjogaW5pdGlhbGx5IGNyZWF0ZSBhIG9u ZS1zaG90IHBsYW4gY2FjaGUgZW50cnkuCiAgKgpAQCAtNzA4LDcgKzc2MywxNCBAQCBSZXZhbGlk YXRlQ2FjaGVkUXVlcnkoQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKIAkgKi8KIAlyYXd0 cmVlID0gY29weU9iamVjdChwbGFuc291cmNlLT5yYXdfcGFyc2VfdHJlZSk7CiAJaWYgKHJhd3Ry ZWUgPT0gTlVMTCkKLQkJdGxpc3QgPSBOSUw7CisJeworCQkvKiBXb3JraW5nIG9uIHByZS1hbmFs eXplZCBxdWVyeSAqLworCQlpZiAocGxhbnNvdXJjZS0+YW5hbHl6ZWRfcGFyc2VfdHJlZSkKKwkJ CXRsaXN0ID0gcGdfcmV3cml0ZV9xdWVyeShwbGFuc291cmNlLT5hbmFseXplZF9wYXJzZV90cmVl KTsKKwkJZWxzZQorCQkJLyogVXRpbGl0eSBjb21tYW5kICovCisJCQl0bGlzdCA9IE5JTDsKKwl9 CiAJZWxzZSBpZiAocGxhbnNvdXJjZS0+cGFyc2VyU2V0dXAgIT0gTlVMTCkKIAkJdGxpc3QgPSBw Z19hbmFseXplX2FuZF9yZXdyaXRlX3dpdGhjYihyYXd0cmVlLAogCQkJCQkJCQkJCQkgIHBsYW5z b3VyY2UtPnF1ZXJ5X3N0cmluZywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2Mv Z3VjX3RhYmxlcy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMKaW5kZXgg MzhjYjllOTcwZDUuLmY1ZjVhYmVkNTk1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMu YwpAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1 ZGUgImNvbW1vbi9maWxlX3V0aWxzLmgiCiAjaW5jbHVkZSAiY29tbW9uL3NjcmFtLWNvbW1vbi5o IgorI2luY2x1ZGUgImV4ZWN1dG9yL2Z1bmN0aW9ucy5oIgogI2luY2x1ZGUgImppdC9qaXQuaCIK ICNpbmNsdWRlICJsaWJwcS9hdXRoLmgiCiAjaW5jbHVkZSAibGlicHEvbGlicHEuaCIKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL3BsYW5jYWNoZS5oIGIvc3JjL2luY2x1ZGUvdXRpbHMv cGxhbmNhY2hlLmgKaW5kZXggNDYwNzJkMzExYjEuLjE0OTNmNzI2NjQ5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9wbGFu Y2FjaGUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uLCB0byBh dm9pZCBpbmNsdWRpbmcgcGFyc2Vub2Rlcy5oIGhlcmUgKi8KIHN0cnVjdCBSYXdTdG10Oworc3Ry dWN0IFF1ZXJ5OwogCiAvKiBwb3NzaWJsZSB2YWx1ZXMgZm9yIHBsYW5fY2FjaGVfbW9kZSAqLwog dHlwZWRlZiBlbnVtCkBAIC05Nyw2ICs5OCw3IEBAIHR5cGVkZWYgc3RydWN0IENhY2hlZFBsYW5T b3VyY2UKIHsKIAlpbnQJCQltYWdpYzsJCQkvKiBzaG91bGQgZXF1YWwgQ0FDSEVEUExBTlNPVVJD RV9NQUdJQyAqLwogCXN0cnVjdCBSYXdTdG10ICpyYXdfcGFyc2VfdHJlZTsgLyogb3V0cHV0IG9m IHJhd19wYXJzZXIoKSwgb3IgTlVMTCAqLworCXN0cnVjdCBRdWVyeSAqYW5hbHl6ZWRfcGFyc2Vf dHJlZTsJLyogYW5hbHl6ZWQgcGFyc2UgdHJlZSBvciBOVUxMICovCiAJY29uc3QgY2hhciAqcXVl cnlfc3RyaW5nOwkvKiBzb3VyY2UgdGV4dCBvZiBxdWVyeSAqLwogCUNvbW1hbmRUYWcJY29tbWFu ZFRhZzsJCS8qICdudWZmIHNhaWQgKi8KIAlPaWQJCSAgICpwYXJhbV90eXBlczsJLyogYXJyYXkg b2YgcGFyYW1ldGVyIHR5cGUgT0lEcywgb3IgTlVMTCAqLwpAQCAtMTkzLDYgKzE5NSw5IEBAIGV4 dGVybiB2b2lkIFJlbGVhc2VBbGxQbGFuQ2FjaGVSZWZzSW5Pd25lcihSZXNvdXJjZU93bmVyIG93 bmVyKTsKIGV4dGVybiBDYWNoZWRQbGFuU291cmNlICpDcmVhdGVDYWNoZWRQbGFuKHN0cnVjdCBS YXdTdG10ICpyYXdfcGFyc2VfdHJlZSwKIAkJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0 cmluZywKIAkJCQkJCQkJCQkgIENvbW1hbmRUYWcgY29tbWFuZFRhZyk7CitleHRlcm4gQ2FjaGVk UGxhblNvdXJjZSAqQ3JlYXRlQ2FjaGVkUGxhbkZvclF1ZXJ5KHN0cnVjdCBRdWVyeSAqYW5hbHl6 ZWRfcGFyc2VfdHJlZSwKKwkJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nLAor CQkJCQkJCQkJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcpOwogZXh0ZXJuIENhY2hlZFBsYW5T b3VyY2UgKkNyZWF0ZU9uZVNob3RDYWNoZWRQbGFuKHN0cnVjdCBSYXdTdG10ICpyYXdfcGFyc2Vf dHJlZSwKIAkJCQkJCQkJCQkJCSBjb25zdCBjaGFyICpxdWVyeV9zdHJpbmcsCiAJCQkJCQkJCQkJ CQkgQ29tbWFuZFRhZyBjb21tYW5kVGFnKTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcm93c2VjdXJpdHkub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9yb3dz ZWN1cml0eS5vdXQKaW5kZXggZmQ1NjU0ZGYzNWUuLjljMjZhZDY3ZmRmIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dAorKysgYi9zcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jvd3NlY3VyaXR5Lm91dApAQCAtNDY2Niw2ICs0NjY2LDU3IEBAIFJF U0VUIFJPTEU7CiBEUk9QIEZVTkNUSU9OIHJsc19mKCk7CiBEUk9QIFZJRVcgcmxzX3Y7CiBEUk9Q IFRBQkxFIHJsc190OworLS0gUkxTIGNoYW5nZXMgaW52YWxpZGF0ZSBjYWNoZWQgZnVuY3Rpb24g cGxhbnMKK2NyZWF0ZSB0YWJsZSBybHNfdCAoYyB0ZXh0KTsKK2NyZWF0ZSB0YWJsZSB0ZXN0X3Qg KGMgdGV4dCk7CitpbnNlcnQgaW50byBybHNfdCB2YWx1ZXMgKCdhJyksICgnYicpLCAoJ2MnKSwg KCdkJyk7CitpbnNlcnQgaW50byB0ZXN0X3QgdmFsdWVzICgnYScpLCAoJ2InKTsKK2FsdGVyIHRh YmxlIHJsc190IGVuYWJsZSByb3cgbGV2ZWwgc2VjdXJpdHk7CitncmFudCBzZWxlY3Qgb24gcmxz X3QgdG8gcmVncmVzc19ybHNfYWxpY2U7CitncmFudCBzZWxlY3Qgb24gdGVzdF90IHRvIHJlZ3Jl c3NfcmxzX2FsaWNlOworY3JlYXRlIHBvbGljeSBwMSBvbiBybHNfdCBmb3Igc2VsZWN0IHRvIHJl Z3Jlc3NfcmxzX2FsaWNlIHVzaW5nIChjID0gY3VycmVudF9zZXR0aW5nKCdybHNfdGVzdC5ibGFo JykpOworLS0gRnVuY3Rpb24gY2hhbmdlcyByb3dfc2VjdXJpdHkgc2V0dGluZyBhbmQgc28gaW52 YWxpZGF0ZXMgcGxhbgorY3JlYXRlIG9yIHJlcGxhY2UgZnVuY3Rpb24gcmxzX2YodGV4dCkKKyBS RVRVUk5TIHRleHQKKyBMQU5HVUFHRSBzcWwKK0JFR0lOIEFUT01JQworIHNlbGVjdCBzZXRfY29u ZmlnKCdybHNfdGVzdC5ibGFoJywgJDEsIHRydWUpIHx8IHNldF9jb25maWcoJ3Jvd19zZWN1cml0 eScsICdmYWxzZScsIHRydWUpIHx8IHN0cmluZ19hZ2coYywgJywnIG9yZGVyIGJ5IGMpIGZyb20g cmxzX3Q7CitFTkQ7CistLSBUYWJsZSBvd25lciBieXBhc3NlcyBSTFMKK3NlbGVjdCBybHNfZihj KSBmcm9tIHRlc3RfdCBvcmRlciBieSBybHNfZjsKKyAgICBybHNfZiAgICAKKy0tLS0tLS0tLS0t LS0KKyBhb2ZmYSxiLGMsZAorIGJvZmZhLGIsYyxkCisoMiByb3dzKQorCitzZXQgcm9sZSByZWdy ZXNzX3Jsc19hbGljZTsKKy0tIEZvciBjYXN1YWwgdXNlciBjaGFuZ2VzIGluIHJvd19zZWN1cml0 eSBzZXR0aW5nIGxlYWQKKy0tIHRvIGVycm9yIGR1cmluZyBxdWVyeSByZXdyaXRlCitzZWxlY3Qg cmxzX2YoYykgZnJvbSB0ZXN0X3Qgb3JkZXIgYnkgcmxzX2Y7CitFUlJPUjogIHF1ZXJ5IHdvdWxk IGJlIGFmZmVjdGVkIGJ5IHJvdy1sZXZlbCBzZWN1cml0eSBwb2xpY3kgZm9yIHRhYmxlICJybHNf dCIKK0NPTlRFWFQ6ICBTUUwgZnVuY3Rpb24gInJsc19mIiBzdGF0ZW1lbnQgMQorcmVzZXQgcm9s ZTsKK3NldCBwbGFuX2NhY2hlX21vZGUgdG8gZm9yY2VfZ2VuZXJpY19wbGFuOworLS0gVGFibGUg b3duZXIgYnlwYXNzZXMgUkxTLCBidXQgY2FjaGVkIHBsYW4gaW52YWxpZGF0ZXMKK3NlbGVjdCBy bHNfZihjKSBmcm9tIHRlc3RfdCBvcmRlciBieSBybHNfZjsKKyAgICBybHNfZiAgICAKKy0tLS0t LS0tLS0tLS0KKyBhb2ZmYSxiLGMsZAorIGJvZmZhLGIsYyxkCisoMiByb3dzKQorCistLSBGb3Ig Y2FzdWFsIHVzZXIgY2hhbmdlcyBpbiByb3dfc2VjdXJpdHkgc2V0dGluZyBsZWFkCistLSB0byBw bGFuIGludmFsaWRhdGlvbiBhbmQgZXJyb3IgZHVyaW5nIHF1ZXJ5IHJld3JpdGUKK3NldCByb2xl IHJlZ3Jlc3NfcmxzX2FsaWNlOworc2VsZWN0IHJsc19mKGMpIGZyb20gdGVzdF90IG9yZGVyIGJ5 IHJsc19mOworRVJST1I6ICBxdWVyeSB3b3VsZCBiZSBhZmZlY3RlZCBieSByb3ctbGV2ZWwgc2Vj dXJpdHkgcG9saWN5IGZvciB0YWJsZSAicmxzX3QiCitDT05URVhUOiAgU1FMIGZ1bmN0aW9uICJy bHNfZiIgc3RhdGVtZW50IDEKK3Jlc2V0IHJvbGU7CityZXNldCBwbGFuX2NhY2hlX21vZGU7City ZXNldCBybHNfdGVzdC5ibGFoOworZHJvcCBmdW5jdGlvbiBybHNfZjsKK2Ryb3AgdGFibGUgcmxz X3QsIHRlc3RfdDsKIC0tCiAtLSBDbGVhbiB1cCBvYmplY3RzCiAtLQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3J1bGVzLm91dAppbmRleCAzMzYxZjZhNjljOS4uMDM5NjBkOWU2OTYgMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcnVsZXMub3V0CkBAIC0zODgwLDMgKzM4ODAsMzggQEAgRFJPUCBUQUJMRSBy dWxldGVzdF90MzsKIERST1AgVEFCTEUgcnVsZXRlc3RfdDI7CiBEUk9QIFRBQkxFIHJ1bGV0ZXN0 X3QxOwogRFJPUCBVU0VSIHJlZ3Jlc3NfcnVsZV91c2VyMTsKKy0tIFRlc3QgdGhhdCBTUUwgZnVu Y3Rpb25zIGNvcnJlY3RseSBoYW5kbGUgRE8gTk9USElORyBydWxlCitDUkVBVEUgVEFCTEUgc29t ZV9kYXRhIChpIGludCwgZGF0YSB0ZXh0KTsKK0NSRUFURSBUQUJMRSBzb21lX2RhdGFfdmFsdWVz IChpIGludCwgZGF0YSB0ZXh0KTsKK0NSRUFURSBGVU5DVElPTiBpbnNlcnRfZGF0YShpIGludCwg ZGF0YSB0ZXh0KQorUkVUVVJOUyBJTlQKK0FTICQkCitJTlNFUlQgSU5UTyBzb21lX2RhdGEgVkFM VUVTICgkMSwgJDIpOworU0VMRUNUIDE7CiskJCBMQU5HVUFHRSBTUUw7CitJTlNFUlQgSU5UTyBz b21lX2RhdGFfdmFsdWVzIFNFTEVDVCBpICwgJ2RhdGEnfHwgaSBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxMCkgaTsKK0NSRUFURSBSVUxFIHNvbWVfZGF0YV9ub2luc2VydCBBUyBPTiBJTlNFUlQg VE8gc29tZV9kYXRhIERPIElOU1RFQUQgTk9USElORzsKK1NFTEVDVCBpbnNlcnRfZGF0YShpLCBk YXRhKSBGUk9NIHNvbWVfZGF0YV92YWx1ZXM7CisgaW5zZXJ0X2RhdGEgCistLS0tLS0tLS0tLS0t CisgICAgICAgICAgIDEKKyAgICAgICAgICAgMQorICAgICAgICAgICAxCisgICAgICAgICAgIDEK KyAgICAgICAgICAgMQorICAgICAgICAgICAxCisgICAgICAgICAgIDEKKyAgICAgICAgICAgMQor ICAgICAgICAgICAxCisgICAgICAgICAgIDEKKygxMCByb3dzKQorCitTRUxFQ1QgKiBGUk9NIHNv bWVfZGF0YSBPUkRFUiBCWSBpOworIGkgfCBkYXRhIAorLS0tKy0tLS0tLQorKDAgcm93cykKKwor RFJPUCBSVUxFIHNvbWVfZGF0YV9ub2luc2VydCBPTiBzb21lX2RhdGE7CitEUk9QIFRBQkxFIHNv bWVfZGF0YV92YWx1ZXM7CitEUk9QIFRBQkxFIHNvbWVfZGF0YTsKK0RST1AgRlVOQ1RJT04gaW5z ZXJ0X2RhdGEoaW50LCB0ZXh0KTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jv d3NlY3VyaXR5LnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jvd3NlY3VyaXR5LnNxbAppbmRl eCBjZjA5ZjYyZWFiYS4uNDE4ZDhlYTk1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jvd3NlY3VyaXR5LnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9yb3dzZWN1cml0 eS5zcWwKQEAgLTIyODAsNiArMjI4MCw0NyBAQCBEUk9QIEZVTkNUSU9OIHJsc19mKCk7CiBEUk9Q IFZJRVcgcmxzX3Y7CiBEUk9QIFRBQkxFIHJsc190OwogCistLSBSTFMgY2hhbmdlcyBpbnZhbGlk YXRlIGNhY2hlZCBmdW5jdGlvbiBwbGFucworY3JlYXRlIHRhYmxlIHJsc190IChjIHRleHQpOwor Y3JlYXRlIHRhYmxlIHRlc3RfdCAoYyB0ZXh0KTsKKworaW5zZXJ0IGludG8gcmxzX3QgdmFsdWVz ICgnYScpLCAoJ2InKSwgKCdjJyksICgnZCcpOworaW5zZXJ0IGludG8gdGVzdF90IHZhbHVlcyAo J2EnKSwgKCdiJyk7CithbHRlciB0YWJsZSBybHNfdCBlbmFibGUgcm93IGxldmVsIHNlY3VyaXR5 OworZ3JhbnQgc2VsZWN0IG9uIHJsc190IHRvIHJlZ3Jlc3NfcmxzX2FsaWNlOworZ3JhbnQgc2Vs ZWN0IG9uIHRlc3RfdCB0byByZWdyZXNzX3Jsc19hbGljZTsKK2NyZWF0ZSBwb2xpY3kgcDEgb24g cmxzX3QgZm9yIHNlbGVjdCB0byByZWdyZXNzX3Jsc19hbGljZSB1c2luZyAoYyA9IGN1cnJlbnRf c2V0dGluZygncmxzX3Rlc3QuYmxhaCcpKTsKKworLS0gRnVuY3Rpb24gY2hhbmdlcyByb3dfc2Vj dXJpdHkgc2V0dGluZyBhbmQgc28gaW52YWxpZGF0ZXMgcGxhbgorY3JlYXRlIG9yIHJlcGxhY2Ug ZnVuY3Rpb24gcmxzX2YodGV4dCkKKyBSRVRVUk5TIHRleHQKKyBMQU5HVUFHRSBzcWwKK0JFR0lO IEFUT01JQworIHNlbGVjdCBzZXRfY29uZmlnKCdybHNfdGVzdC5ibGFoJywgJDEsIHRydWUpIHx8 IHNldF9jb25maWcoJ3Jvd19zZWN1cml0eScsICdmYWxzZScsIHRydWUpIHx8IHN0cmluZ19hZ2co YywgJywnIG9yZGVyIGJ5IGMpIGZyb20gcmxzX3Q7CitFTkQ7CisKKy0tIFRhYmxlIG93bmVyIGJ5 cGFzc2VzIFJMUworc2VsZWN0IHJsc19mKGMpIGZyb20gdGVzdF90IG9yZGVyIGJ5IHJsc19mOwor c2V0IHJvbGUgcmVncmVzc19ybHNfYWxpY2U7CistLSBGb3IgY2FzdWFsIHVzZXIgY2hhbmdlcyBp biByb3dfc2VjdXJpdHkgc2V0dGluZyBsZWFkCistLSB0byBlcnJvciBkdXJpbmcgcXVlcnkgcmV3 cml0ZQorc2VsZWN0IHJsc19mKGMpIGZyb20gdGVzdF90IG9yZGVyIGJ5IHJsc19mOworcmVzZXQg cm9sZTsKKworc2V0IHBsYW5fY2FjaGVfbW9kZSB0byBmb3JjZV9nZW5lcmljX3BsYW47CistLSBU YWJsZSBvd25lciBieXBhc3NlcyBSTFMsIGJ1dCBjYWNoZWQgcGxhbiBpbnZhbGlkYXRlcworc2Vs ZWN0IHJsc19mKGMpIGZyb20gdGVzdF90IG9yZGVyIGJ5IHJsc19mOworLS0gRm9yIGNhc3VhbCB1 c2VyIGNoYW5nZXMgaW4gcm93X3NlY3VyaXR5IHNldHRpbmcgbGVhZAorLS0gdG8gcGxhbiBpbnZh bGlkYXRpb24gYW5kIGVycm9yIGR1cmluZyBxdWVyeSByZXdyaXRlCitzZXQgcm9sZSByZWdyZXNz X3Jsc19hbGljZTsKK3NlbGVjdCBybHNfZihjKSBmcm9tIHRlc3RfdCBvcmRlciBieSBybHNfZjsK K3Jlc2V0IHJvbGU7CityZXNldCBwbGFuX2NhY2hlX21vZGU7CityZXNldCBybHNfdGVzdC5ibGFo OworCitkcm9wIGZ1bmN0aW9uIHJsc19mOworZHJvcCB0YWJsZSBybHNfdCwgdGVzdF90OworCiAt LQogLS0gQ2xlYW4gdXAgb2JqZWN0cwogLS0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3J1bGVzLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3J1bGVzLnNxbAppbmRleCBmZGQz ZmYxZDE2MS4uNTA1NDQ5NDUyZWUgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3J1 bGVzLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ydWxlcy5zcWwKQEAgLTE0MzIsMyAr MTQzMiwyNyBAQCBEUk9QIFRBQkxFIHJ1bGV0ZXN0X3QyOwogRFJPUCBUQUJMRSBydWxldGVzdF90 MTsKIAogRFJPUCBVU0VSIHJlZ3Jlc3NfcnVsZV91c2VyMTsKKworLS0gVGVzdCB0aGF0IFNRTCBm dW5jdGlvbnMgY29ycmVjdGx5IGhhbmRsZSBETyBOT1RISU5HIHJ1bGUKK0NSRUFURSBUQUJMRSBz b21lX2RhdGEgKGkgaW50LCBkYXRhIHRleHQpOworQ1JFQVRFIFRBQkxFIHNvbWVfZGF0YV92YWx1 ZXMgKGkgaW50LCBkYXRhIHRleHQpOworCitDUkVBVEUgRlVOQ1RJT04gaW5zZXJ0X2RhdGEoaSBp bnQsIGRhdGEgdGV4dCkKK1JFVFVSTlMgSU5UCitBUyAkJAorSU5TRVJUIElOVE8gc29tZV9kYXRh IFZBTFVFUyAoJDEsICQyKTsKK1NFTEVDVCAxOworJCQgTEFOR1VBR0UgU1FMOworCitJTlNFUlQg SU5UTyBzb21lX2RhdGFfdmFsdWVzIFNFTEVDVCBpICwgJ2RhdGEnfHwgaSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMCkgaTsKKworQ1JFQVRFIFJVTEUgc29tZV9kYXRhX25vaW5zZXJ0IEFTIE9O IElOU0VSVCBUTyBzb21lX2RhdGEgRE8gSU5TVEVBRCBOT1RISU5HOworCitTRUxFQ1QgaW5zZXJ0 X2RhdGEoaSwgZGF0YSkgRlJPTSBzb21lX2RhdGFfdmFsdWVzOworCitTRUxFQ1QgKiBGUk9NIHNv bWVfZGF0YSBPUkRFUiBCWSBpOworCitEUk9QIFJVTEUgc29tZV9kYXRhX25vaW5zZXJ0IE9OIHNv bWVfZGF0YTsKK0RST1AgVEFCTEUgc29tZV9kYXRhX3ZhbHVlczsKK0RST1AgVEFCTEUgc29tZV9k YXRhOworRFJPUCBGVU5DVElPTiBpbnNlcnRfZGF0YShpbnQsIHRleHQpOwotLSAKMi40My4wCgo= --=_715337123a55c93ff97a73b7838a6d6a Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v5-0001-Split-out-SQL-functions-checks-from-init_execution_s.patch Content-Disposition: attachment; filename*0*=UTF-8''v5-0001-Split-out-SQL-functions-checks-from-init_execu; filename*1*=tion_s.patch; size=3186 RnJvbSAzODFlODFlNGE1MjUyOTZkYzExYzVlNGNjM2ZmZDZiYmNhOTFlOGMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGV4YW5kZXIgUHloYWxvdiA8YS5weWhhbG92QHBvc3RncmVz cHJvLnJ1PgpEYXRlOiBXZWQsIDI5IEphbiAyMDI1IDE2OjIzOjMwICswMzAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIFNwbGl0IG91dCBTUUwgZnVuY3Rpb25zIGNoZWNrcyBmcm9tCiBpbml0X2V4ZWN1 dGlvbl9zdGF0ZSgpCgotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jIHwgNjIg KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNl cnRpb25zKCspLCAyNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVj dXRvci9mdW5jdGlvbnMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0aW9ucy5jCmluZGV4 IDc1N2Y4MDY4ZTIxLi4xMjU2NWQwYTdlMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0 b3IvZnVuY3Rpb25zLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAg LTQ1NCw2ICs0NTQsNDAgQEAgc3FsX2ZuX3Jlc29sdmVfcGFyYW1fbmFtZShTUUxGdW5jdGlvblBh cnNlSW5mb1B0ciBwaW5mbywKIAlyZXR1cm4gTlVMTDsKIH0KIAorLyogUHJlY2hlY2sgY29tbWFu ZCBmb3IgdmFsaWRpdHkgaW4gYSBmdW5jdGlvbiAqLworc3RhdGljIHZvaWQKK2NoZWNrX3BsYW5u ZWRfc3RtdChQbGFubmVkU3RtdCAqc3RtdCwgU1FMRnVuY3Rpb25DYWNoZVB0ciBmY2FjaGUpCit7 CisKKwkvKgorCSAqIFByZWNoZWNrIGFsbCBjb21tYW5kcyBmb3IgdmFsaWRpdHkgaW4gYSBmdW5j dGlvbi4gIFRoaXMgc2hvdWxkCisJICogZ2VuZXJhbGx5IG1hdGNoIHRoZSByZXN0cmljdGlvbnMg c3BpLmMgYXBwbGllcy4KKwkgKi8KKwlpZiAoc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VUSUxJ VFkpCisJeworCQlpZiAoSXNBKHN0bXQtPnV0aWxpdHlTdG10LCBDb3B5U3RtdCkgJiYKKwkJCSgo Q29weVN0bXQgKikgc3RtdC0+dXRpbGl0eVN0bXQpLT5maWxlbmFtZSA9PSBOVUxMKQorCQkJZXJl cG9ydChFUlJPUiwKKwkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAorCQkJCQkgZXJybXNnKCJjYW5ub3QgQ09QWSB0by9mcm9tIGNsaWVudCBpbiBhbiBTUUwgZnVu Y3Rpb24iKSkpOworCisJCWlmIChJc0Eoc3RtdC0+dXRpbGl0eVN0bXQsIFRyYW5zYWN0aW9uU3Rt dCkpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9U X1NVUFBPUlRFRCksCisJCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIFNRTCBzdGF0ZW1lbnQgbmFt ZSAqLworCQkJCQkgZXJybXNnKCIlcyBpcyBub3QgYWxsb3dlZCBpbiBhbiBTUUwgZnVuY3Rpb24i LAorCQkJCQkJCUNyZWF0ZUNvbW1hbmROYW1lKHN0bXQtPnV0aWxpdHlTdG10KSkpKTsKKwl9CisK KwlpZiAoZmNhY2hlLT5yZWFkb25seV9mdW5jICYmICFDb21tYW5kSXNSZWFkT25seShzdG10KSkK KwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBP UlRFRCksCisJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEgU1FMIHN0YXRlbWVudCBuYW1lICovCisJ CQkJIGVycm1zZygiJXMgaXMgbm90IGFsbG93ZWQgaW4gYSBub24tdm9sYXRpbGUgZnVuY3Rpb24i LAorCQkJCQkJQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgc3RtdCkpKSk7CisKK30KKwogLyoK ICAqIFNldCB1cCB0aGUgcGVyLXF1ZXJ5IGV4ZWN1dGlvbl9zdGF0ZSByZWNvcmRzIGZvciBhIFNR TCBmdW5jdGlvbi4KICAqCkBAIC01MDAsMzIgKzUzNCw4IEBAIGluaXRfZXhlY3V0aW9uX3N0YXRl KExpc3QgKnF1ZXJ5VHJlZV9saXN0LAogCQkJCQkJCQkJIENVUlNPUl9PUFRfUEFSQUxMRUxfT0ss CiAJCQkJCQkJCQkgTlVMTCk7CiAKLQkJCS8qCi0JCQkgKiBQcmVjaGVjayBhbGwgY29tbWFuZHMg Zm9yIHZhbGlkaXR5IGluIGEgZnVuY3Rpb24uICBUaGlzIHNob3VsZAotCQkJICogZ2VuZXJhbGx5 IG1hdGNoIHRoZSByZXN0cmljdGlvbnMgc3BpLmMgYXBwbGllcy4KLQkJCSAqLwotCQkJaWYgKHN0 bXQtPmNvbW1hbmRUeXBlID09IENNRF9VVElMSVRZKQotCQkJewotCQkJCWlmIChJc0Eoc3RtdC0+ dXRpbGl0eVN0bXQsIENvcHlTdG10KSAmJgotCQkJCQkoKENvcHlTdG10ICopIHN0bXQtPnV0aWxp dHlTdG10KS0+ZmlsZW5hbWUgPT0gTlVMTCkKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQko ZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCi0JCQkJCQkJIGVycm1zZygi Y2Fubm90IENPUFkgdG8vZnJvbSBjbGllbnQgaW4gYW4gU1FMIGZ1bmN0aW9uIikpKTsKLQotCQkJ CWlmIChJc0Eoc3RtdC0+dXRpbGl0eVN0bXQsIFRyYW5zYWN0aW9uU3RtdCkpCi0JCQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQp LAotCQkJCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIFNRTCBzdGF0ZW1lbnQgbmFtZSAqLwotCQkJ CQkJCSBlcnJtc2coIiVzIGlzIG5vdCBhbGxvd2VkIGluIGFuIFNRTCBmdW5jdGlvbiIsCi0JCQkJ CQkJCQlDcmVhdGVDb21tYW5kTmFtZShzdG10LT51dGlsaXR5U3RtdCkpKSk7Ci0JCQl9Ci0KLQkJ CWlmIChmY2FjaGUtPnJlYWRvbmx5X2Z1bmMgJiYgIUNvbW1hbmRJc1JlYWRPbmx5KHN0bXQpKQot CQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCi0JCQkJLyogdHJhbnNsYXRvcjogJXMgaXMgYSBTUUwgc3RhdGVtZW50IG5hbWUg Ki8KLQkJCQkJCSBlcnJtc2coIiVzIGlzIG5vdCBhbGxvd2VkIGluIGEgbm9uLXZvbGF0aWxlIGZ1 bmN0aW9uIiwKLQkJCQkJCQkJQ3JlYXRlQ29tbWFuZE5hbWUoKE5vZGUgKikgc3RtdCkpKSk7CisJ CQkvKiBDaGVjayB0aGF0IHN0bXQgaXMgdmFsaWQgZm9yIFNRTCBmdW5jdGlvbiAqLworCQkJY2hl Y2tfcGxhbm5lZF9zdG10KHN0bXQsIGZjYWNoZSk7CiAKIAkJCS8qIE9LLCBidWlsZCB0aGUgZXhl Y3V0aW9uX3N0YXRlIGZvciB0aGlzIHF1ZXJ5ICovCiAJCQluZXdlcyA9IChleGVjdXRpb25fc3Rh dGUgKikgcGFsbG9jKHNpemVvZihleGVjdXRpb25fc3RhdGUpKTsKLS0gCjIuNDMuMAoK --=_715337123a55c93ff97a73b7838a6d6a--