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.96) (envelope-from ) id 1wcNAe-003IhD-2G for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 12:57:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcN9e-000u75-1c for pgsql-hackers@arkaria.postgresql.org; Wed, 24 Jun 2026 12:56:34 +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.96) (envelope-from ) id 1wcN9e-000u6x-0M for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 12:56:34 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wcN9Z-000000001l9-2AWa for pgsql-hackers@lists.postgresql.org; Wed, 24 Jun 2026 12:56:33 +0000 Received: from oss.nttdata.com (oss.nttdata.com [49.212.34.109]) by oss.nttdata.com (Postfix) with ESMTPSA id 59472202028C; Wed, 24 Jun 2026 21:56:18 +0900 (JST) MIME-Version: 1.0 Date: Wed, 24 Jun 2026 21:56:17 +0900 From: torikoshia To: Robert Haas Cc: Lukas Fittl , pgsql-hackers@lists.postgresql.org, Atsushi Torikoshi , samimseih@gmail.com, destrex271@gmail.com Subject: Re: RFC: Logging plan of the running query In-Reply-To: References: <2aedcb5e8120bfdee994775e660f8718@oss.nttdata.com> <174144854199.294105.9417032645816235284.pgcf@coridan.postgresql.org> <784224198089cbe3cc3825332f195475@oss.nttdata.com> <8de51267059a43f53848c69a2bd9bc3b@oss.nttdata.com> <8f99161d84373ea46fb305ad75affa28@oss.nttdata.com> <01962a4f656356fb2899a0c4ace83019@oss.nttdata.com> <6143f00af4bfdba95a85cf866f4acb41@oss.nttdata.com> <9886a201a5da64eab1472db6c70473a8@oss.nttdata.com> <7c7ca3bc345b28fa4b903bd49fdce519@oss.nttdata.com> <5fbde7ee5e41cc2ad6012bf273a9539d@oss.nttdata.com> <9ce54f35e3802ad53156b926670f5880@oss.nttdata.com> <900f24c08ea77d4ca6871c39e2b898d3@oss.nttdata.com> <3791a2338d2bc66bd0c94cb49a7ed623@oss.nttdata.com> <38258602a885453e331fa64e970d959d@oss.nttdata.com> <4372fb202217256483a015f662d2b474@oss.nttdata.com> Message-ID: <57ee0cf0cf76b742b0144bd481c56b57@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com Content-Type: multipart/mixed; boundary="=_7f0e14b18fa4ad14a439168cb207e8d0" X-Virus-Scanned: clamav-milter 1.4.3 at oss.nttdata.com X-Virus-Status: Clean List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_7f0e14b18fa4ad14a439168cb207e8d0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed On Mon, Jun 22, 2026 at 10:51 PM Robert Haas wrote: > > On Mon, Jun 15, 2026 at 9:26 AM torikoshia > wrote: > > I also fixed some typos in the attached patch. > > In my earlier reviews, I have been focusing on core correctness > issues. This time, I decided to leave that aside to focus on a few > more cosmetic and user-interface points: Thank you for the review! > +#ifdef USE_INJECTION_POINTS > + INJECTION_POINT("log-query-interrupt", NULL); > +#endif > > I think the #ifdef is not required here. Look at how INJECTION_POINT() > is defined. Agreed. > + es = NewExplainState(); > + > + es->format = EXPLAIN_FORMAT_TEXT; > + es->settings = true; > + es->verbose = true; > + es->signaled = true; > > So, we're establishing a non-default set of settings here which the > user has no way to configure. I think that's hard to justify. I think > we either need to accept the defaults that NewExplainState() > configures, or we need to provide a GUC for the user to configure > things as they wish. At this stage, what I would like to focus on is developing the mechanism for obtaining the plan of a currently running query. So I think it is better to start with the default EXPLAIN options. Updated the patch that way. > +++ b/src/backend/commands/dynamic_explain.c > > We have four explain-related source files currently, all of them have > "explain" at the start of the name rather than at the end. We should > probably do the same here. I would suggest explain_running.c rather > than explain_dynamic.c. Or some other word that conveys "the query is > in progress" -- dynamic seems vague. Thanks for the suggestion. Renamed it to explain_running.c. > + * By default, only superusers are allowed to signal to log the plan > because > + * allowing any users to issue this request at an unbounded rate would > + * cause lots of log messages and which can lead to denial of service. > > It's worth thinking about whether restricting this to the superuser by > default is the right decision. I don't think I believe this rationale: > a user can do lots of things that generate lots of log volume, and we > don't restrict any of the other ones. For example, any user can do > this: > > do $$ begin for i in 1..1000000 loop raise log '% is an extremely long > string', repeat('hoge',100000); end loop; end; $$; > > I thought about whether we should actually relax this and let people > log their own queries, but then I realized what I believe the real > issue to be: the superuser is presumed to have access to the log files > -- after all, they can configure them, and escape to the shell -- but > other users very likely don't. If some of them do, the superuser knows > which ones. That makes sense. Even if a non-superuser has EXECUTE permission on this function, it would probably not be very useful, because the user would not be able to read the server log by themselves as you pointed out. Would it make sense to restrict EXECUTE to superusers by default for that reason? In the attached patch, I have rewritten the comment as follows: + * By default, only superusers are allowed to signal a backend to log its + * plan because the output is written to the server log, which in many cases + * can only be read by superusers. The current restriction was modeled after pg_log_backend_memory_contexts(). So I think the same discussion would also apply to that function. If needed, we could also revisit the comment there from the same perspective: * pg_log_backend_memory_contexts * Signal a backend or an auxiliary process to log its memory contexts. * * By default, only superusers are allowed to signal to log the memory * contexts because allowing any users to issue this request at an unbounded * rate would cause lots of log messages and which can lead to denial of * service. Additional roles can be permitted with GRANT. BTW I'm interested in the proposal of pg_get_process_memory_contexts()[1], which would return memory context information directly from the function rather than writing it to the log. If a similar approach were adopted for running query plans in the future, then it would make sense to relax the default privilege for that. > +extern TupleTableSlot *ExecProcNodeWithExplain(PlanState *ps); > > There's no such function (any more, anyway). Removed. [1] https://www.postgresql.org/message-id/495F9D76-6B8B-45C3-95DA-EF5A8762DA19%40yesql.se Thanks, -- Atsushi Torikoshi Seconded from NTT DATA CORPORATION to SRA OSS K.K. --=_7f0e14b18fa4ad14a439168cb207e8d0 Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v56-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch Content-Disposition: attachment; filename=v56-0001-Add-function-to-log-the-plan-of-the-currently-ru.patch; size=38981 RnJvbSAzNGQ2NzhjYTNjNDI0ZDFlOGYzYjMzOTM4NTQ3YjRiNzdlMWNhZGRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpYUBvc3MubnR0 ZGF0YS5jb20+CkRhdGU6IFdlZCwgMjQgSnVuIDIwMjYgMjE6MzA6MDEgKzA5MDAKU3ViamVjdDog W1BBVENIIHY1Nl0gQWRkIGZ1bmN0aW9uIHRvIGxvZyB0aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5 IHJ1bm5pbmcKIHF1ZXJ5CgpDdXJyZW50bHksIHdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHF1ZXJ5 IGV4ZWN1dGlvbiB0byBmaW5pc2gKdG8ga25vdyBpdHMgcGxhbiBlaXRoZXIgdXNpbmcgRVhQTEFJ TiBBTkFMWVpFIG9yIGF1dG9fZXhwbGFpbi4KVGhpcyBpcyBub3Qgc28gY29udmVuaWVudCwgZm9y IGV4YW1wbGUgd2hlbiBpbnZlc3RpZ2F0aW5nCmxvbmctcnVubmluZyBxdWVyaWVzIG9uIHByb2R1 Y3Rpb24gZW52aXJvbm1lbnRzLgpUbyBpbXByb3ZlIHRoaXMgc2l0dWF0aW9uLCB0aGlzIHBhdGNo IGFkZHMgcGdfbG9nX3F1ZXJ5X3BsYW4oKQpmdW5jdGlvbiB0aGF0IHJlcXVlc3RzIHRvIGxvZyB0 aGUgcGxhbiBvZiB0aGUgY3VycmVudGx5CmV4ZWN1dGluZyBxdWVyeS4KCk9uIHJlY2VpcHQgb2Yg dGhlIHJlcXVlc3QsIEV4ZWNQcm9jTm9kZXMgb2YgdGhlIGN1cnJlbnQgcGxhbgpub2RlIGFuZCBp dHMgc3Vic2lkaWFyeSBub2RlcyBhcmUgd3JhcHBlZCB3aXRoCkV4ZWNQcm9jTm9kZUZpcnN0LCB3 aGljaCBpbXBsZWxlbWVudHMgbG9nZ2luZyBxdWVyeSBwbGFuLgpXaGVuIGV4ZWN1dG9yIGV4ZWN1 dGVzIHRoZSBvbmUgb2YgdGhlIHdyYXBwZWQgbm9kZXMsIHRoZQpxdWVyeSBwbGFuIGlzIGxvZ2dl ZC4KCk91ciBpbml0aWFsIGlkZWEgd2FzIHRvIHNlbmQgYSBzaWduYWwgdG8gdGhlIHRhcmdldCBi YWNrZW5kCnByb2Nlc3MsIHdoaWNoIGludm9rZXMgRVhQTEFJTiBsb2dpYyBhdCB0aGUgbmV4dApD SEVDS19GT1JfSU5URVJSVVBUUygpIGNhbGwuIEhvd2V2ZXIsIHdlIHJlYWxpemVkIGR1cmluZwpw cm90b3R5cGluZyB0aGF0IEVYUExBSU4gaXMgY29tcGxleCBhbmQgbWF5IG5vdCBiZSBzYWZlbHkK ZXhlY3V0ZWQgYXQgYXJiaXRyYXJ5IGludGVycnVwdCBwb2ludHMuCgpCeSBkZWZhdWx0LCBvbmx5 IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQgdG8gcmVxdWVzdCB0byBsb2cgdGhlCnBsYW5zIGJlY2F1 c2UgYWxsb3dpbmcgYW55IHVzZXJzIHRvIGlzc3VlIHRoaXMgcmVxdWVzdCBhdCBhbgp1bmJvdW5k ZWQgcmF0ZSB3b3VsZCBjYXVzZSBsb3RzIG9mIGxvZyBtZXNzYWdlcyBhbmQgd2hpY2ggY2FuCmxl YWQgdG8gZGVuaWFsIG9mIHNlcnZpY2UuCgpUb2RvOiBDb25zaWRlciByZW1vdmluZyB0aGUgUElE IGZyb20gdGhlIGxvZyBvdXRwdXQgb2YKcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKCkg YW5kIHBnX2xvZ19xdWVyeV9wbGFuKCkuCkZvciBkZXRhaWwsIHNlZSB0aGUgZGlzY3Vzc2lvbjoK aHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQSUyQlRnbW9ZODFyN25wVFMz NE5fNU1MQV91NmdoZm9yNUhvU2FhcjUzdmVYVVl1MU94USU0MG1haWwuZ21haWwuY29tCi0tLQog Y29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMgICAgICAgICAgIHwgIDI5ICstLQog ZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1pbi5zZ21sICAgICAgICAgICAgIHwgIDI0ICsrKwog c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jICAgICAgICAgICAgIHwgIDM0ICsrKysK IHNyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCiBz cmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgICAgICAgICAgICAgICAgfCAgNDQgKysrKy0K IHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW5fcnVubmluZy5jICAgICAgICB8IDE4MiArKysr KysrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkICAgICAgICAg ICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jICAgICAgICAgICAg ICAgfCAgMTcgKysKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jICAgICAgICAg ICB8IDEyMSArKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyAgICAgICAgICB8ICAgNCArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgfCAgIDQgKwogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMgICAgICAg ICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2FjY2Vzcy94YWN0LmggICAgICAgICAgICAgICAg ICAgICB8ICAgMyArCiBzcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0ICAgICAgICAgICAg ICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oICAgICAgICAgICAgICAg IHwgICA1ICsKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fcnVubmluZy5oICAgICAgICB8 ICAyNCArKysKIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCAgICAgICAgICB8 ICAgMSArCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjL2luY2x1ZGUvbWlzY2FkbWluLmggICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIHNyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oICAgICAgICAgICAgICB8ICAgMiAr CiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfbWlzYy9tZXNvbi5idWlsZCAgICAgICAgfCAgIDEgKwog Li4uL3Rlc3RfbWlzYy90LzAxNF9wZ19sb2dfcXVlcnlfcGxhbi5wbCAgICAgIHwgMTAxICsrKysr KysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0ICB8ICAz OCArKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9taXNjX2Z1bmN0aW9ucy5zcWwgICAgICAgfCAg MzEgKysrCiAyNCBmaWxlcyBjaGFuZ2VkLCA2NDEgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25z KC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9ydW5u aW5nLmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3J1 bm5pbmcuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL3Qv MDE0X3BnX2xvZ19xdWVyeV9wbGFuLnBsCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxh aW4vYXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwpp bmRleCA5N2NlNDk4ZDBjMS4uMDcwMTRjYWIzNjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYXV0b19l eHBsYWluL2F1dG9fZXhwbGFpbi5jCisrKyBiL2NvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhw bGFpbi5jCkBAIC00NTEsMzIgKzQ1MSw5IEBAIGV4cGxhaW5fRXhlY3V0b3JFbmQoUXVlcnlEZXNj ICpxdWVyeURlc2MpCiAKIAkJCWFwcGx5X2V4dGVuc2lvbl9vcHRpb25zKGVzLCBleHRlbnNpb25f b3B0aW9ucyk7CiAKLQkJCUV4cGxhaW5CZWdpbk91dHB1dChlcyk7Ci0JCQlFeHBsYWluUXVlcnlU ZXh0KGVzLCBxdWVyeURlc2MpOwotCQkJRXhwbGFpblF1ZXJ5UGFyYW1ldGVycyhlcywgcXVlcnlE ZXNjLT5wYXJhbXMsIGF1dG9fZXhwbGFpbl9sb2dfcGFyYW1ldGVyX21heF9sZW5ndGgpOwotCQkJ RXhwbGFpblByaW50UGxhbihlcywgcXVlcnlEZXNjKTsKLQkJCWlmIChlcy0+YW5hbHl6ZSAmJiBh dXRvX2V4cGxhaW5fbG9nX3RyaWdnZXJzKQotCQkJCUV4cGxhaW5QcmludFRyaWdnZXJzKGVzLCBx dWVyeURlc2MpOwotCQkJaWYgKGVzLT5jb3N0cykKLQkJCQlFeHBsYWluUHJpbnRKSVRTdW1tYXJ5 KGVzLCBxdWVyeURlc2MpOwotCQkJaWYgKGV4cGxhaW5fcGVyX3BsYW5faG9vaykKLQkJCQkoKmV4 cGxhaW5fcGVyX3BsYW5faG9vaykgKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQsCi0JCQkJCQkJCQkJ ICBOVUxMLCBlcywKLQkJCQkJCQkJCQkgIHF1ZXJ5RGVzYy0+c291cmNlVGV4dCwKLQkJCQkJCQkJ CQkgIHF1ZXJ5RGVzYy0+cGFyYW1zLAotCQkJCQkJCQkJCSAgcXVlcnlEZXNjLT5lc3RhdGUtPmVz X3F1ZXJ5RW52KTsKLQkJCUV4cGxhaW5FbmRPdXRwdXQoZXMpOwotCi0JCQkvKiBSZW1vdmUgbGFz dCBsaW5lIGJyZWFrICovCi0JCQlpZiAoZXMtPnN0ci0+bGVuID4gMCAmJiBlcy0+c3RyLT5kYXRh W2VzLT5zdHItPmxlbiAtIDFdID09ICdcbicpCi0JCQkJZXMtPnN0ci0+ZGF0YVstLWVzLT5zdHIt Pmxlbl0gPSAnXDAnOwotCi0JCQkvKiBGaXggSlNPTiB0byBvdXRwdXQgYW4gb2JqZWN0ICovCi0J CQlpZiAoYXV0b19leHBsYWluX2xvZ19mb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfSlNPTikKLQkJ CXsKLQkJCQllcy0+c3RyLT5kYXRhWzBdID0gJ3snOwotCQkJCWVzLT5zdHItPmRhdGFbZXMtPnN0 ci0+bGVuIC0gMV0gPSAnfSc7Ci0JCQl9CisJCQlFeHBsYWluU3RyaW5nQXNzZW1ibGUoZXMsIHF1 ZXJ5RGVzYywgYXV0b19leHBsYWluX2xvZ19mb3JtYXQsCisJCQkJCQkJCSAgYXV0b19leHBsYWlu X2xvZ190cmlnZ2VycywKKwkJCQkJCQkJICBhdXRvX2V4cGxhaW5fbG9nX3BhcmFtZXRlcl9tYXhf bGVuZ3RoKTsKIAogCQkJLyoKIAkJCSAqIE5vdGU6IHdlIHJlbHkgb24gdGhlIGV4aXN0aW5nIGxv Z2dpbmcgb2YgY29udGV4dCBvcgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1h ZG1pbi5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1hZG1pbi5zZ21sCmluZGV4IDBlYWUx YzFmNjE2Li5iYTMxOWM5NDE2MCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2Z1bmMvZnVuYy1h ZG1pbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtYWRtaW4uc2dtbApAQCAtMTg0 LDYgKzE4NCwzMCBAQAogICAgICAgIDwvcGFyYT48L2VudHJ5PgogICAgICAgPC9yb3c+CiAKKyAg ICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxwYXJhIHJv bGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAgIDxwcmlt YXJ5PnBnX2xvZ19xdWVyeV9wbGFuPC9wcmltYXJ5PgorICAgICAgICA8L2luZGV4dGVybT4KKyAg ICAgICAgPGZ1bmN0aW9uPnBnX2xvZ19xdWVyeV9wbGFuPC9mdW5jdGlvbj4gKCA8cGFyYW1ldGVy PnBpZDwvcGFyYW1ldGVyPiA8dHlwZT5pbnRlZ2VyPC90eXBlPiApCisgICAgICAgIDxyZXR1cm52 YWx1ZT5ib29sZWFuPC9yZXR1cm52YWx1ZT4KKyAgICAgICA8L3BhcmE+CisgICAgICAgPHBhcmE+ CisgICAgICAgIFJlcXVlc3RzIHRvIGxvZyB0aGUgcGxhbiBvZiB0aGUgcXVlcnkgY3VycmVudGx5 IHJ1bm5pbmcgb24gdGhlCisgICAgICAgIGJhY2tlbmQgd2l0aCBzcGVjaWZpZWQgcHJvY2VzcyBJ RC4KKyAgICAgICAgSXQgd2lsbCBiZSBsb2dnZWQgYXQgPGxpdGVyYWw+TE9HPC9saXRlcmFsPiBt ZXNzYWdlIGxldmVsIGFuZAorICAgICAgICB3aWxsIGFwcGVhciBpbiB0aGUgc2VydmVyIGxvZyBi YXNlZCBvbiB0aGUgbG9nCisgICAgICAgIGNvbmZpZ3VyYXRpb24gc2V0IChTZWUgPHhyZWYgbGlu a2VuZD0icnVudGltZS1jb25maWctbG9nZ2luZyIvPgorICAgICAgICBmb3IgbW9yZSBpbmZvcm1h dGlvbiksIGJ1dCB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjbGllbnQKKyAgICAgICAgcmVnYXJk bGVzcyBvZiA8eHJlZiBsaW5rZW5kPSJndWMtY2xpZW50LW1pbi1tZXNzYWdlcyIvPi4KKyAgICAg ICA8L3BhcmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIFRoaXMgZnVuY3Rpb24gaXMgcmVzdHJp Y3RlZCB0byBzdXBlcnVzZXJzIGJ5IGRlZmF1bHQsIGJ1dCBvdGhlcgorICAgICAgICB1c2VycyBj YW4gYmUgZ3JhbnRlZCBFWEVDVVRFIHRvIHJ1biB0aGUgZnVuY3Rpb24uCisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KKworCiAgICAgICA8cm93PgogICAgICAgIDxlbnRyeSBy b2xlPSJmdW5jX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJmdW5jX3NpZ25hdHVyZSI+CiAgICAg ICAgIDxpbmRleHRlcm0+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94YWN0LmMKaW5kZXggZGU0Y2Y5NmVh YTIuLmNjMzdjYTU2NWYxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94 YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGFjdC5jCkBAIC0zNyw2ICsz Nyw3IEBACiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19lbnVtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9z dG9yYWdlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvYXN5bmMuaCIKKyNpbmNsdWRlICJjb21tYW5k cy9leHBsYWluX3J1bm5pbmcuaCIKICNpbmNsdWRlICJjb21tYW5kcy90YWJsZWNtZHMuaCIKICNp bmNsdWRlICJjb21tYW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiY29tbW9uL3BnX3BybmcuaCIK QEAgLTIxNyw2ICsyMTgsNyBAQCB0eXBlZGVmIHN0cnVjdCBUcmFuc2FjdGlvblN0YXRlRGF0YQog CWJvb2wJCXBhcmFsbGVsQ2hpbGRYYWN0OwkvKiBpcyBhbnkgcGFyZW50IHRyYW5zYWN0aW9uIHBh cmFsbGVsPyAqLwogCWJvb2wJCWNoYWluOwkJCS8qIHN0YXJ0IGEgbmV3IGJsb2NrIGFmdGVyIHRo aXMgb25lICovCiAJYm9vbAkJdG9wWGlkTG9nZ2VkOwkvKiBmb3IgYSBzdWJ4YWN0OiBpcyB0b3At bGV2ZWwgWElEIGxvZ2dlZD8gKi8KKwlRdWVyeURlc2MgICpxdWVyeURlc2M7CQkvKiBteSBjdXJy ZW50IFF1ZXJ5RGVzYyAqLwogCXN0cnVjdCBUcmFuc2FjdGlvblN0YXRlRGF0YSAqcGFyZW50Owkv KiBiYWNrIGxpbmsgdG8gcGFyZW50ICovCiB9IFRyYW5zYWN0aW9uU3RhdGVEYXRhOwogCkBAIC0y NTAsNiArMjUyLDcgQEAgc3RhdGljIFRyYW5zYWN0aW9uU3RhdGVEYXRhIFRvcFRyYW5zYWN0aW9u U3RhdGVEYXRhID0gewogCS5zdGF0ZSA9IFRSQU5TX0RFRkFVTFQsCiAJLmJsb2NrU3RhdGUgPSBU QkxPQ0tfREVGQVVMVCwKIAkudG9wWGlkTG9nZ2VkID0gZmFsc2UsCisJLnF1ZXJ5RGVzYyA9IE5V TEwsCiB9OwogCiAvKgpAQCAtOTM1LDYgKzkzOCwyNyBAQCBHZXRDdXJyZW50VHJhbnNhY3Rpb25O ZXN0TGV2ZWwodm9pZCkKIAlyZXR1cm4gcy0+bmVzdGluZ0xldmVsOwogfQogCisvKgorICogU2V0 Q3VycmVudFF1ZXJ5RGVzYworICovCit2b2lkCitTZXRDdXJyZW50UXVlcnlEZXNjKFF1ZXJ5RGVz YyAqcXVlcnlEZXNjKQoreworCVRyYW5zYWN0aW9uU3RhdGUgcyA9IEN1cnJlbnRUcmFuc2FjdGlv blN0YXRlOworCisJcy0+cXVlcnlEZXNjID0gcXVlcnlEZXNjOworfQorCisvKgorICogR2V0Q3Vy cmVudFF1ZXJ5RGVzYworICovCitRdWVyeURlc2MgKgorR2V0Q3VycmVudFF1ZXJ5RGVzYyh2b2lk KQoreworCVRyYW5zYWN0aW9uU3RhdGUgcyA9IEN1cnJlbnRUcmFuc2FjdGlvblN0YXRlOworCisJ cmV0dXJuIHMtPnF1ZXJ5RGVzYzsKK30KIAogLyoKICAqCVRyYW5zYWN0aW9uSWRJc0N1cnJlbnRU cmFuc2FjdGlvbklkCkBAIC0yOTUzLDYgKzI5NzcsOSBAQCBBYm9ydFRyYW5zYWN0aW9uKHZvaWQp CiAJLyogUmVzZXQgc25hcHNob3QgZXhwb3J0IHN0YXRlLiAqLwogCVNuYXBCdWlsZFJlc2V0RXhw b3J0ZWRTbmFwc2hvdFN0YXRlKCk7CiAKKwkvKiBSZXNldCBjdXJyZW50IHF1ZXJ5IHBsYW4gc3Rh dGUuICovCisJU2V0Q3VycmVudFF1ZXJ5RGVzYyhOVUxMKTsKKwogCS8qCiAJICogSWYgdGhpcyB4 YWN0IGhhcyBzdGFydGVkIGFueSB1bmZpbmlzaGVkIHBhcmFsbGVsIG9wZXJhdGlvbiwgY2xlYW4g dXAKIAkgKiBpdHMgd29ya2VycyBhbmQgZXhpdCBwYXJhbGxlbCBtb2RlLiAgRG9uJ3Qgd2FybiBh Ym91dCBsZWFrZWQgcmVzb3VyY2VzLgpAQCAtNTM1Miw2ICs1Mzc5LDEzIEBAIEFib3J0U3ViVHJh bnNhY3Rpb24odm9pZCkKIAkvKiBSZXNldCBsb2dpY2FsIHN0cmVhbWluZyBzdGF0ZS4gKi8KIAlS ZXNldExvZ2ljYWxTdHJlYW1pbmdTdGF0ZSgpOwogCisJLyoKKwkgKiBSZXNldCBjdXJyZW50IHF1 ZXJ5IHBsYW4gc3RhdGUuIE5vdGUgdGhhdCBldmVuIGFmdGVyIHRoaXMgcmVzZXQsIGl0J3MKKwkg KiBzdGlsbCBwb3NzaWJsZSB0byBvYnRhaW4gdGhlIHBhcmVudCB0cmFuc2FjdGlvbidzIHF1ZXJ5 IHBsYW5zLCBzaW5jZQorCSAqIHRoZXkgYXJlIHByZXNlcnZlZCBpbiBzdGFuZGFyZF9FeGVjdXRv clJ1bigpLgorCSAqLworCVNldEN1cnJlbnRRdWVyeURlc2MoTlVMTCk7CisKIAkvKgogCSAqIE5v IG5lZWQgZm9yIFNuYXBCdWlsZFJlc2V0RXhwb3J0ZWRTbmFwc2hvdFN0YXRlKCkgaGVyZSwgc25h cHNob3QKIAkgKiBleHBvcnRzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHN1YnRyYW5zYWN0aW9ucy4K ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL01ha2VmaWxlIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvTWFrZWZpbGUKaW5kZXggNWI5ZDA4NDk3N2UuLjY3MWYwMzZmYTc2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9NYWtlZmlsZQorKysgYi9zcmMvYmFja2VuZC9jb21t YW5kcy9NYWtlZmlsZQpAQCAtMzUsNiArMzUsNyBAQCBPQkpTID0gXAogCWV4cGxhaW4ubyBcCiAJ ZXhwbGFpbl9kci5vIFwKIAlleHBsYWluX2Zvcm1hdC5vIFwKKwlleHBsYWluX3J1bm5pbmcubyBc CiAJZXhwbGFpbl9zdGF0ZS5vIFwKIAlleHRlbnNpb24ubyBcCiAJZm9yZWlnbmNtZHMubyBcCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9leHBsYWluLmMKaW5kZXggYTQwZDAzZDM1ZjMuLjIyMjFiOGU5NTY5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvY29t bWFuZHMvZXhwbGFpbi5jCkBAIC0xMDkyLDYgKzEwOTIsNDMgQEAgRXhwbGFpblF1ZXJ5UGFyYW1l dGVycyhFeHBsYWluU3RhdGUgKmVzLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywgaW50IG1heGxlbikK IAkJRXhwbGFpblByb3BlcnR5VGV4dCgiUXVlcnkgUGFyYW1ldGVycyIsIHN0ciwgZXMpOwogfQog CisvKgorICogRXhwbGFpblN0cmluZ0Fzc2VtYmxlIC0KKyAqICAgIEFzc2VtYmxlIGVzLT5zdHIg Zm9yIGxvZ2dpbmcgYWNjb3JkaW5nIHRvIHNwZWNpZmllZCBvcHRpb25zIGFuZCBmb3JtYXQKKyAq LworCit2b2lkCitFeHBsYWluU3RyaW5nQXNzZW1ibGUoRXhwbGFpblN0YXRlICplcywgUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBsb2dGb3JtYXQsCisJCQkJCSAgYm9vbCBsb2dUcmlnZ2Vycywg aW50IGxvZ1BhcmFtZXRlck1heExlbmd0aCkKK3sKKwlFeHBsYWluQmVnaW5PdXRwdXQoZXMpOwor CUV4cGxhaW5RdWVyeVRleHQoZXMsIHF1ZXJ5RGVzYyk7CisJRXhwbGFpblF1ZXJ5UGFyYW1ldGVy cyhlcywgcXVlcnlEZXNjLT5wYXJhbXMsIGxvZ1BhcmFtZXRlck1heExlbmd0aCk7CisJRXhwbGFp blByaW50UGxhbihlcywgcXVlcnlEZXNjKTsKKwlpZiAoZXMtPmFuYWx5emUgJiYgbG9nVHJpZ2dl cnMpCisJCUV4cGxhaW5QcmludFRyaWdnZXJzKGVzLCBxdWVyeURlc2MpOworCWlmIChlcy0+Y29z dHMpCisJCUV4cGxhaW5QcmludEpJVFN1bW1hcnkoZXMsIHF1ZXJ5RGVzYyk7CisJaWYgKGV4cGxh aW5fcGVyX3BsYW5faG9vaykKKwkJKCpleHBsYWluX3Blcl9wbGFuX2hvb2spIChxdWVyeURlc2Mt PnBsYW5uZWRzdG10LAorCQkJCQkJCQkgIE5VTEwsIGVzLAorCQkJCQkJCQkgIHF1ZXJ5RGVzYy0+ c291cmNlVGV4dCwKKwkJCQkJCQkJICBxdWVyeURlc2MtPnBhcmFtcywKKwkJCQkJCQkJICBxdWVy eURlc2MtPmVzdGF0ZS0+ZXNfcXVlcnlFbnYpOworCUV4cGxhaW5FbmRPdXRwdXQoZXMpOworCisJ LyogUmVtb3ZlIGxhc3QgbGluZSBicmVhayAqLworCWlmIChlcy0+c3RyLT5sZW4gPiAwICYmIGVz LT5zdHItPmRhdGFbZXMtPnN0ci0+bGVuIC0gMV0gPT0gJ1xuJykKKwkJZXMtPnN0ci0+ZGF0YVst LWVzLT5zdHItPmxlbl0gPSAnXDAnOworCisJLyogRml4IEpTT04gdG8gb3V0cHV0IGFuIG9iamVj dCAqLworCWlmIChsb2dGb3JtYXQgPT0gRVhQTEFJTl9GT1JNQVRfSlNPTikKKwl7CisJCWVzLT5z dHItPmRhdGFbMF0gPSAneyc7CisJCWVzLT5zdHItPmRhdGFbZXMtPnN0ci0+bGVuIC0gMV0gPSAn fSc7CisJfQorfQorCiAvKgogICogcmVwb3J0X3RyaWdnZXJzIC0KICAqCQlyZXBvcnQgZXhlY3V0 aW9uIHN0YXRzIGZvciBhIHNpbmdsZSByZWxhdGlvbidzIHRyaWdnZXJzCkBAIC0xODI3LDcgKzE4 NjQsMTAgQEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9y cywKIAogCS8qCiAJICogV2UgaGF2ZSB0byBmb3JjaWJseSBjbGVhbiB1cCB0aGUgaW5zdHJ1bWVu dGF0aW9uIHN0YXRlIGJlY2F1c2Ugd2UKLQkgKiBoYXZlbid0IGRvbmUgRXhlY3V0b3JFbmQgeWV0 LiAgVGhpcyBpcyBwcmV0dHkgZ3JvdHR5IC4uLgorCSAqIGhhdmVuJ3QgZG9uZSBFeGVjdXRvckVu ZCB5ZXQuICBUaGlzIGlzIHByZXR0eSBncm90dHkgLi4uIFRoaXMgY2xlYW51cAorCSAqIHNob3Vs ZCBub3QgYmUgZG9uZSB3aGVuIHRoZSBxdWVyeSBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkIGFu ZCBleHBsYWluCisJICogaGFzIGJlZW4gcmVxdWVzdGVkIGJ5IHNpZ25hbCwgYXMgdGhlIHRhcmdl dCBxdWVyeSBtYXkgdXNlCisJICogaW5zdHJ1bWVudGF0aW9uIGFuZCBjbGVhbiBpdHNlbGYgdXAu CiAJICoKIAkgKiBOb3RlOiBjb250cmliL2F1dG9fZXhwbGFpbiBjb3VsZCBjYXVzZSBpbnN0cnVt ZW50YXRpb24gdG8gYmUgc2V0IHVwCiAJICogZXZlbiB0aG91Z2ggd2UgZGlkbid0IGFzayBmb3Ig aXQgaGVyZS4gIEJlIGNhcmVmdWwgbm90IHRvIHByaW50IGFueQpAQCAtMTgzNSw3ICsxODc1LDcg QEAgRXhwbGFpbk5vZGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywKIAkg KiBJbnN0ckVuZExvb3AgY2FsbCBhbnl3YXksIGlmIHBvc3NpYmxlLCB0byByZWR1Y2UgdGhlIG51 bWJlciBvZiBjYXNlcwogCSAqIGF1dG9fZXhwbGFpbiBoYXMgdG8gY29udGVuZCB3aXRoLgogCSAq LwotCWlmIChwbGFuc3RhdGUtPmluc3RydW1lbnQpCisJaWYgKHBsYW5zdGF0ZS0+aW5zdHJ1bWVu dCAmJiAhZXMtPnNpZ25hbGVkKQogCQlJbnN0ckVuZExvb3AocGxhbnN0YXRlLT5pbnN0cnVtZW50 KTsKIAogCWlmIChlcy0+YW5hbHl6ZSAmJgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXhwbGFpbl9ydW5uaW5nLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3J1bm5p bmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMGZlMmFlM2YxOTEK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluX3J1bm5pbmcu YwpAQCAtMCwwICsxLDE4MiBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhwbGFpbl9y dW5uaW5nLmMKKyAqCSAgRXhwbGFpbiBxdWVyeSBwbGFucyBkdXJpbmcgZXhlY3V0aW9uCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQtNSwgUmVnZW50 cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogSURFTlRJRklDQVRJT04K KyAqCSAgc3JjL2JhY2tlbmQvY29tbWFuZHMvZXhwbGFpbl9ydW5uaW5nLmMKKyAqCisgKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqLworI2luY2x1ZGUgInBvc3RncmVzLmgiCisKKyNpbmNsdWRlICJhY2Nl c3MveGFjdC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW4uaCIKKyNpbmNsdWRlICJjb21t YW5kcy9leHBsYWluX2Zvcm1hdC5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5fcnVubmlu Zy5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCIKKyNpbmNsdWRlICJtaXNj YWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3By b2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInV0 aWxzL2JhY2tlbmRfc3RhdHVzLmgiCisjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50Lmgi CisKKy8qIElzIHBsYW4gbm9kZSB3cmFwcGluZyBmb3IgcXVlcnkgcGxhbiBsb2dnaW5nIGN1cnJl bnRseSBpbiBwcm9ncmVzcz8gKi8KK3N0YXRpYyBib29sIFdyYXBOb2Rlc0luUHJvZ3Jlc3MgPSBm YWxzZTsKKworLyoKKyAqIEhhbmRsZSByZWNlaXB0IG9mIGFuIGludGVycnVwdCBpbmRpY2F0aW5n IGxvZ2dpbmcgdGhlIHBsYW4gb2YgdGhlIGN1cnJlbnRseQorICogcnVubmluZyBxdWVyeS4KKyAq CisgKiBBbGwgdGhlIGFjdHVhbCB3b3JrIGlzIGRlZmVycmVkIHRvIFByb2Nlc3NMb2dRdWVyeVBs YW5JbnRlcnJ1cHQoKSwKKyAqIGJlY2F1c2Ugd2UgY2Fubm90IHNhZmVseSBlbWl0IGEgbG9nIG1l c3NhZ2UgaW5zaWRlIHRoZSBzaWduYWwgaGFuZGxlci4KKyAqLwordm9pZAorSGFuZGxlTG9nUXVl cnlQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJSU5KRUNUSU9OX1BPSU5UKCJsb2ctcXVlcnktaW50 ZXJydXB0IiwgTlVMTCk7CisJSW50ZXJydXB0UGVuZGluZyA9IHRydWU7CisJTG9nUXVlcnlQbGFu UGVuZGluZyA9IHRydWU7CisJLyogbGF0Y2ggd2lsbCBiZSBzZXQgYnkgcHJvY3NpZ25hbF9zaWd1 c3IxX2hhbmRsZXIgKi8KK30KKworLyoKKyAqIEFjdHVhbCBwbGFuIGxvZ2dpbmcgZnVuY3Rpb24u CisgKi8KK3ZvaWQKK0xvZ1F1ZXJ5UGxhbih2b2lkKQoreworCUV4cGxhaW5TdGF0ZSAqZXM7CisJ TWVtb3J5Q29udGV4dCBjeHQ7CisJTWVtb3J5Q29udGV4dCBvbGRfY3h0OworCVF1ZXJ5RGVzYyAg KnF1ZXJ5RGVzYzsKKworCWN4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5 Q29udGV4dCwKKwkJCQkJCQkJImxvZ19xdWVyeV9wbGFuIHRlbXBvcmFyeSBjb250ZXh0IiwKKwkJ CQkJCQkJQUxMT0NTRVRfREVGQVVMVF9TSVpFUyk7CisKKwlvbGRfY3h0ID0gTWVtb3J5Q29udGV4 dFN3aXRjaFRvKGN4dCk7CisKKwllcyA9IE5ld0V4cGxhaW5TdGF0ZSgpOworCWVzLT5zaWduYWxl ZCA9IHRydWU7CisKKwkvKgorCSAqIEN1cnJlbnQgUXVlcnlEZXNjIGlzIHZhbGlkIG9ubHkgZHVy aW5nIHN0YW5kYXJkX0V4ZWN1dG9yUnVuLiBIb3dldmVyLAorCSAqIEV4ZWNQcm9jTm9kZSBjYW4g YmUgY2FsbGVkIGFmdGVyd2FyZChpLmUuLCBFeGVjUG9zdHByb2Nlc3NQbGFuKS4gVG8KKwkgKiBo YW5kbGUgdGhlIGNhc2UsIGNoZWNrIHdoZXRoZXIgd2UgaGF2ZSBRdWVyeURlc2Mgbm93LgorCSAq LworCXF1ZXJ5RGVzYyA9IEdldEN1cnJlbnRRdWVyeURlc2MoKTsKKworCWlmIChxdWVyeURlc2Mg PT0gTlVMTCkKKwl7CisJCUxvZ1F1ZXJ5UGxhblBlbmRpbmcgPSBmYWxzZTsKKwkJcmV0dXJuOwor CX0KKworCUV4cGxhaW5TdHJpbmdBc3NlbWJsZShlcywgcXVlcnlEZXNjLCBlcy0+Zm9ybWF0LCAw LCAtMSk7CisKKwllcmVwb3J0KExPR19TRVJWRVJfT05MWSwKKwkJCWVycm1zZygicXVlcnkgYW5k IGl0cyBwbGFuIHJ1bm5pbmcgb24gYmFja2VuZCB3aXRoIFBJRCAlZCBhcmU6XG4lcyIsCisJCQkJ ICAgTXlQcm9jUGlkLCBlcy0+c3RyLT5kYXRhKSk7CisKKwlNZW1vcnlDb250ZXh0U3dpdGNoVG8o b2xkX2N4dCk7CisJTWVtb3J5Q29udGV4dERlbGV0ZShjeHQpOworCisJTG9nUXVlcnlQbGFuUGVu ZGluZyA9IGZhbHNlOworfQorCisvKgorICogUHJvY2VzcyB0aGUgcmVxdWVzdCBmb3IgbG9nZ2lu ZyBxdWVyeSBwbGFuIGF0IENIRUNLX0ZPUl9JTlRFUlJVUFRTKCkuCisgKgorICogU2luY2UgZXhl Y3V0aW5nIEVYUExBSU4tcmVsYXRlZCBjb2RlIGF0IGFuIGFyYml0cmFyeSBDSEVDS19GT1JfSU5U RVJSVVBUUygpCisgKiBwb2ludCBpcyBwb3RlbnRpYWxseSB1bnNhZmUsIHRoaXMgZnVuY3Rpb24g anVzdCB3cmFwcyB0aGUgbm9kZXMgb2YKKyAqIEV4ZWNQcm9jTm9kZSB3aXRoIEV4ZWNQcm9jTm9k ZUZpcnN0LCB3aGljaCBsb2dzIHF1ZXJ5IHBsYW4gaWYgcmVxdWVzdGVkLgorICogVGhpcyB3YXkg ZW5zdXJlcyB0aGF0IEVYUExBSU4tcmVsYXRlZCBjb2RlIGlzIGV4ZWN1dGVkIG9ubHkgZHVyaW5n CisgKiBFeGVjUHJvY05vZGVGaXJzdCwgd2hlcmUgaXQgaXMgY29uc2lkZXJlZCBzYWZlLgorICov Cit2b2lkCitQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KHZvaWQpCit7CisJUXVlcnlEZXNj ICAqcXVlcnlkZXNjID0gR2V0Q3VycmVudFF1ZXJ5RGVzYygpOworCisJLyogSWYgY3VycmVudCBx dWVyeSBoYXMgYWxyZWFkeSBmaW5pc2hlZCwgd2UgY2FuIGRvIG5vdGhpbmcgYnV0IGV4aXQgKi8K KwlpZiAocXVlcnlkZXNjID09IE5VTEwpCisJeworCQlMb2dRdWVyeVBsYW5QZW5kaW5nID0gZmFs c2U7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIEV4aXQgaW1tZWRpYXRlbHkgaWYgd3JhcHBp bmcgcGxhbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLiBUaGlzIHByZXZlbnRzCisJICogcmVjdXJz aXZlIGNhbGxzLCB3aGljaCBjb3VsZCBvY2N1ciBpZiBsb2dnaW5nIGlzIHJlcXVlc3RlZCByZXBl YXRlZGx5CisJICogYW5kIHJhcGlkbHksIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gaW5maW5pdGUg cmVjdXJzaW9uIGFuZCBjcmFzaC4KKwkgKi8KKwlpZiAoV3JhcE5vZGVzSW5Qcm9ncmVzcykKKwkJ cmV0dXJuOworCisJV3JhcE5vZGVzSW5Qcm9ncmVzcyA9IHRydWU7CisKKwlQR19UUlkoKTsKKwl7 CisJCS8qCisJCSAqIFdyYXAgRXhlY1Byb2NOb2RlcyB3aXRoIEV4ZWNQcm9jTm9kZUZpcnN0LCB3 aGljaCBsb2dzIHF1ZXJ5IHBsYW4KKwkJICogd2hlbiBMb2dRdWVyeVBsYW5QZW5kaW5nIGlzIHRy dWUuCisJCSAqLworCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVjdXJzZShxdWVyeWRlc2MtPnBsYW5z dGF0ZSk7CisJfQorCVBHX0ZJTkFMTFkoKTsKKwl7CisJCVdyYXBOb2Rlc0luUHJvZ3Jlc3MgPSBm YWxzZTsKKwl9CisJUEdfRU5EX1RSWSgpOworfQorCisvKgorICogU2lnbmFsIGEgYmFja2VuZCBw cm9jZXNzIHRvIGxvZyB0aGUgcXVlcnkgcGxhbiBvZiB0aGUgcnVubmluZyBxdWVyeS4KKyAqCisg KiBCeSBkZWZhdWx0LCBvbmx5IHN1cGVydXNlcnMgYXJlIGFsbG93ZWQgdG8gc2lnbmFsIGEgYmFj a2VuZCB0byBsb2cgaXRzCisgKiBwbGFuIGJlY2F1c2UgdGhlIG91dHB1dCBpcyB3cml0dGVuIHRv IHRoZSBzZXJ2ZXIgbG9nLCB3aGljaCBpbiBtYW55IGNhc2VzCisgKiBjYW4gb25seSBiZSByZWFk IGJ5IHN1cGVydXNlcnMuCisgKiBBZGRpdGlvbmFsIHJvbGVzIGNhbiBiZSBwZXJtaXR0ZWQgd2l0 aCBHUkFOVC4KKyAqLworRGF0dW0KK3BnX2xvZ19xdWVyeV9wbGFuKFBHX0ZVTkNUSU9OX0FSR1Mp Cit7CisJaW50CQkJcGlkID0gUEdfR0VUQVJHX0lOVDMyKDApOworCVBHUFJPQwkgICAqcHJvYzsK KwlQZ0JhY2tlbmRTdGF0dXMgKmJlX3N0YXR1czsKKworCXByb2MgPSBCYWNrZW5kUGlkR2V0UHJv YyhwaWQpOworCisJaWYgKHByb2MgPT0gTlVMTCkKKwl7CisJCS8qCisJCSAqIFRoaXMgaXMganVz dCBhIHdhcm5pbmcgc28gYSBsb29wLXRocm91Z2gtcmVzdWx0c2V0IHdpbGwgbm90IGFib3J0CisJ CSAqIGlmIG9uZSBiYWNrZW5kIHRlcm1pbmF0ZWQgb24gaXRzIG93biBkdXJpbmcgdGhlIHJ1bi4K KwkJICovCisJCWVyZXBvcnQoV0FSTklORywKKwkJCQkoZXJybXNnKCJQSUQgJWQgaXMgbm90IGEg UG9zdGdyZVNRTCBiYWNrZW5kIHByb2Nlc3MiLCBwaWQpKSk7CisJCVBHX1JFVFVSTl9CT09MKGZh bHNlKTsKKwl9CisKKwliZV9zdGF0dXMgPSBwZ3N0YXRfZ2V0X2JlZW50cnlfYnlfcHJvY19udW1i ZXIocHJvYy0+dnhpZC5wcm9jTnVtYmVyKTsKKwlpZiAoYmVfc3RhdHVzLT5zdF9iYWNrZW5kVHlw ZSAhPSBCX0JBQ0tFTkQpCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygiUElE ICVkIGlzIG5vdCBhIFBvc3RncmVTUUwgY2xpZW50IGJhY2tlbmQgcHJvY2VzcyIsIHBpZCkpKTsK KwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0KKworCWlmIChTZW5kUHJvY1NpZ25hbChwaWQs IFBST0NTSUdfTE9HX1FVRVJZX1BMQU4sIHByb2MtPnZ4aWQucHJvY051bWJlcikgPCAwKQorCXsK KwkJZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJtc2coImNvdWxkIG5vdCBzZW5kIHNpZ25hbCB0 byBwcm9jZXNzICVkOiAlbSIsIHBpZCkpKTsKKwkJUEdfUkVUVVJOX0JPT0woZmFsc2UpOworCX0K KworCVBHX1JFVFVSTl9CT09MKHRydWUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvbWVzb24uYnVpbGQgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tZXNvbi5idWlsZAppbmRl eCA5ZjI1OGQ1NjZlYi4uZDYzMGRlZGQ1ZDcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1h bmRzL21lc29uLmJ1aWxkCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21lc29uLmJ1aWxkCkBA IC0yMyw2ICsyMyw3IEBAIGJhY2tlbmRfc291cmNlcyArPSBmaWxlcygKICAgJ2V4cGxhaW4uYycs CiAgICdleHBsYWluX2RyLmMnLAogICAnZXhwbGFpbl9mb3JtYXQuYycsCisgICdleHBsYWluX3J1 bm5pbmcuYycsCiAgICdleHBsYWluX3N0YXRlLmMnLAogICAnZXh0ZW5zaW9uLmMnLAogICAnZm9y ZWlnbmNtZHMuYycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5j IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRleCA0YjMwZjc2ODY4MC4uY2Nh MDFkM2M0ZmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysr IGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNDQsNiArNDQsNyBAQAogI2lu Y2x1ZGUgImFjY2Vzcy94YWN0LmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9uYW1lc3BhY2UuaCIKICNp bmNsdWRlICJjYXRhbG9nL3BhcnRpdGlvbi5oIgorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5f cnVubmluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL21hdHZpZXcuaCIKICNpbmNsdWRlICJjb21t YW5kcy90cmlnZ2VyLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKQEAgLTMyMyw2 ICszMjQsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAlE ZXN0UmVjZWl2ZXIgKmRlc3Q7CiAJYm9vbAkJc2VuZFR1cGxlczsKIAlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CisJUXVlcnlEZXNjICAqb2xkUXVlcnlEZXNjOwogCiAJLyogc2FuaXR5IGNoZWNr cyAqLwogCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7CkBAIC0zMzUsNiArMzM3LDEzIEBAIHN0 YW5kYXJkX0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLAogCS8qIGNhbGxlciBtdXN0 IGVuc3VyZSB0aGUgcXVlcnkncyBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KIAlBc3NlcnQoR2V0QWN0 aXZlU25hcHNob3QoKSA9PSBlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAorCS8qCisJICogU2F2ZSBj dXJyZW50IFF1ZXJ5RGVzYyBoZXJlIHRvIGVuYWJsZSByZXRyaWV2YWwgb2YgdGhlIGN1cnJlbnRs eQorCSAqIHJ1bm5pbmcgcXVlcnlEZXNjIGZvciBuZXN0ZWQgcXVlcmllcy4KKwkgKi8KKwlvbGRR dWVyeURlc2MgPSBHZXRDdXJyZW50UXVlcnlEZXNjKCk7CisJU2V0Q3VycmVudFF1ZXJ5RGVzYyhx dWVyeURlc2MpOworCiAJLyoKIAkgKiBTd2l0Y2ggaW50byBwZXItcXVlcnkgbWVtb3J5IGNvbnRl eHQKIAkgKi8KQEAgLTM5Nyw2ICs0MDYsMTQgQEAgc3RhbmRhcmRfRXhlY3V0b3JSdW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsCiAJCUluc3RyU3RvcChxdWVyeURlc2MtPnF1ZXJ5X2luc3RyKTsKIAog CU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjb250ZXh0KTsKKwlTZXRDdXJyZW50UXVlcnlEZXNj KG9sZFF1ZXJ5RGVzYyk7CisKKwkvKgorCSAqIEVuc3VyZSBMb2dRdWVyeVBsYW5QZW5kaW5nIGlz IGluaXRpYWxpemVkIGluIGNhc2UgdGhlcmUgd2FzIG5vIHRpbWUgZm9yCisJICogbG9nZ2luZyB0 aGUgcGxhbi4gT3RoZXJ3aXNlIHBsYW4gd2lsbCBiZSBsb2dnZWQgYXQgdGhlIG5leHQgcXVlcnkK KwkgKiBleGVjdXRpb24gb24gdGhlIHNhbWUgc2Vzc2lvbi4KKwkgKi8KKwlMb2dRdWVyeVBsYW5Q ZW5kaW5nID0gZmFsc2U7CiB9CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNQcm9jbm9kZS5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Byb2Nu b2RlLmMKaW5kZXggN2M0YzY2ZTMyM2YuLjEwOTAxNmQwNjAyIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUHJvY25vZGUuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9l eGVjUHJvY25vZGUuYwpAQCAtNzIsNiArNzIsNyBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMu aCIKIAorI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5fcnVubmluZy5oIgogI2luY2x1ZGUgImV4 ZWN1dG9yL2V4ZWN1dG9yLmgiCiAjaW5jbHVkZSAiZXhlY3V0b3IvaW5zdHJ1bWVudC5oIgogI2lu Y2x1ZGUgImV4ZWN1dG9yL25vZGVBZ2cuaCIKQEAgLTQzMSw5ICs0MzIsMTAgQEAgRXhlY1NldEV4 ZWNQcm9jTm9kZShQbGFuU3RhdGUgKm5vZGUsIEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbikKIHsK IAkvKgogCSAqIEFkZCBhIHdyYXBwZXIgYXJvdW5kIHRoZSBFeGVjUHJvY05vZGUgY2FsbGJhY2sg dGhhdCBjaGVja3Mgc3RhY2sgZGVwdGgKLQkgKiBkdXJpbmcgdGhlIGZpcnN0IGV4ZWN1dGlvbiBh bmQgbWF5YmUgYWRkcyBhbiBpbnN0cnVtZW50YXRpb24gd3JhcHBlci4KLQkgKiBXaGVuIHRoZSBj YWxsYmFjayBpcyBjaGFuZ2VkIGFmdGVyIGV4ZWN1dGlvbiBoYXMgYWxyZWFkeSBiZWd1biB0aGF0 Ci0JICogbWVhbnMgd2UnbGwgc3VwZXJmbHVvdXNseSBleGVjdXRlIEV4ZWNQcm9jTm9kZUZpcnN0 LCBidXQgdGhhdCBzZWVtcyBvay4KKwkgKiBhbmQgcXVlcnkgbG9nZ2luZyByZXF1ZXN0IGR1cmlu ZyB0aGUgZXhlY3V0aW9uIGFuZCBtYXliZSBhZGRzIGFuCisJICogaW5zdHJ1bWVudGF0aW9uIHdy YXBwZXIuIFdoZW4gdGhlIGNhbGxiYWNrIGlzIGNoYW5nZWQgYWZ0ZXIgZXhlY3V0aW9uCisJICog aGFzIGFscmVhZHkgYmVndW4gdGhhdCBtZWFucyB3ZSdsbCBzdXBlcmZsdW91c2x5IGV4ZWN1dGUK KwkgKiBFeGVjUHJvY05vZGVGaXJzdCwgYnV0IHRoYXQgc2VlbXMgb2suCiAJICovCiAJbm9kZS0+ RXhlY1Byb2NOb2RlUmVhbCA9IGZ1bmN0aW9uOwogCW5vZGUtPkV4ZWNQcm9jTm9kZSA9IEV4ZWNQ cm9jTm9kZUZpcnN0OwpAQCAtNDQxLDIxICs0NDMsMzcgQEAgRXhlY1NldEV4ZWNQcm9jTm9kZShQ bGFuU3RhdGUgKm5vZGUsIEV4ZWNQcm9jTm9kZU10ZCBmdW5jdGlvbikKIAogCiAvKgotICogRXhl Y1Byb2NOb2RlIHdyYXBwZXIgdGhhdCBwZXJmb3JtcyBzb21lIG9uZS10aW1lIGNoZWNrcywgYmVm b3JlIGNhbGxpbmcKKyAqIEV4ZWNQcm9jTm9kZSB3cmFwcGVyIHRoYXQgcGVyZm9ybXMgc29tZSBl eHRyYSBjaGVja3MsIGJlZm9yZSBjYWxsaW5nCiAgKiB0aGUgcmVsZXZhbnQgbm9kZSBtZXRob2Qg KHBvc3NpYmx5IHZpYSBhbiBpbnN0cnVtZW50YXRpb24gd3JhcHBlcikuCisgKgorICogTm9ybWFs bHksIHRoaXMgaXMganVzdCBpbnZva2VkIG9uY2UgZm9yIHRoZSBmaXJzdCBjYWxsIHRvIGFueSBn aXZlbiBub2RlLAorICogYW5kIHRoZXJlYWZ0ZXIgd2UgYXJyYW5nZSB0byBjYWxsIEV4ZWNQcm9j Tm9kZUluc3RyIG9yIHRoZSByZWxldmFudCBub2RlCisgKiBtZXRob2QgZGlyZWN0bHkuIEhvd2V2 ZXIsIGl0J3MgbGVnYWwgdG8gcmVzZXQgbm9kZS0+RXhlY1Byb2NOb2RlIGJhY2sgdG8KKyAqIHRo aXMgZnVuY3Rpb24gYXQgYW55IHRpbWUsIGFuZCB3ZSBkbyB0aGF0IHdoZW5ldmVyIHRoZSBxdWVy eSBwbGFuIG1pZ2h0CisgKiBuZWVkIHRvIGJlIHByaW50ZWQsIHNvIHRoYXQgd2Ugb25seSBpbmN1 ciB0aGUgY29zdCBvZiBjaGVja2luZyBmb3IgdGhhdAorICogY2FzZSB3aGVuIHJlcXVpcmVkLgog ICovCiBzdGF0aWMgVHVwbGVUYWJsZVNsb3QgKgogRXhlY1Byb2NOb2RlRmlyc3QoUGxhblN0YXRl ICpub2RlKQogewogCS8qCi0JICogUGVyZm9ybSBzdGFjayBkZXB0aCBjaGVjayBkdXJpbmcgdGhl IGZpcnN0IGV4ZWN1dGlvbiBvZiB0aGUgbm9kZS4gIFdlCi0JICogb25seSBkbyBzbyB0aGUgZmly c3QgdGltZSByb3VuZCBiZWNhdXNlIGl0IHR1cm5zIG91dCB0byBub3QgYmUgY2hlYXAgb24KLQkg KiBzb21lIGNvbW1vbiBhcmNoaXRlY3R1cmVzIChlZy4geDg2KS4gIFRoaXMgcmVsaWVzIG9uIHRo ZSBhc3N1bXB0aW9uCi0JICogdGhhdCBFeGVjUHJvY05vZGUgY2FsbHMgZm9yIGEgZ2l2ZW4gcGxh biBub2RlIHdpbGwgYWx3YXlzIGJlIG1hZGUgYXQKLQkgKiByb3VnaGx5IHRoZSBzYW1lIHN0YWNr IGRlcHRoLgorCSAqIFBlcmZvcm0gYSBzdGFjayBkZXB0aCBjaGVjay4gIFdlIGRvbid0IHdhbnQg dG8gZG8gdGhpcyBhbGwgdGhlIHRpbWUKKwkgKiBiZWNhdXNlIGl0IHR1cm5zIG91dCB0byBub3Qg YmUgY2hlYXAgb24gc29tZSBjb21tb24gYXJjaGl0ZWN0dXJlcyAoZWcuCisJICogeDg2KS4gIFRo aXMgcmVsaWVzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgRXhlY1Byb2NOb2RlIGNhbGxzIGZvciBh CisJICogZ2l2ZW4gcGxhbiBub2RlIHdpbGwgYWx3YXlzIGJlIG1hZGUgYXQgcm91Z2hseSB0aGUg c2FtZSBzdGFjayBkZXB0aC4KIAkgKi8KIAljaGVja19zdGFja19kZXB0aCgpOwogCisJLyoKKwkg KiBJZiB3ZSBoYXZlIGJlZW4gYXNrZWQgdG8gcHJpbnQgdGhlIHF1ZXJ5IHBsYW4sIGRvIHRoYXQg bm93LiBXZSBkYXJlIG5vdAorCSAqIHRyeSB0byBkbyB0aGlzIGRpcmVjdGx5IGZyb20gQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKSBiZWNhdXNlIHdlIGRvbid0CisJICogcmVhbGx5IGtub3cgd2hhdCB0 aGUgZXhlY3V0b3Igc3RhdGUgaXMgYXQgdGhhdCBwb2ludCwgYnV0IHdlIGFzc3VtZQorCSAqIHRo YXQgd2hlbiBlbnRlcmluZyBhIG5vZGUgdGhlIHN0YXRlIHdpbGwgYmUgc3VmZmljaWVudGx5IGNv bnNpc3RlbnQKKwkgKiB0aGF0IHRyeWluZyB0byBwcmludCB0aGUgcGxhbiBtYWtlcyBzZW5zZS4K KwkgKi8KKwlpZiAoTG9nUXVlcnlQbGFuUGVuZGluZykKKwkJTG9nUXVlcnlQbGFuKCk7CisKIAkv KgogCSAqIElmIGluc3RydW1lbnRhdGlvbiBpcyByZXF1aXJlZCwgY2hhbmdlIHRoZSB3cmFwcGVy IHRvIG9uZSB0aGF0IGp1c3QKIAkgKiBkb2VzIGluc3RydW1lbnRhdGlvbi4gIE90aGVyd2lzZSB3 ZSBjYW4gZGlzcGVuc2Ugd2l0aCBhbGwgd3JhcHBlcnMgYW5kCkBAIC01MjcsNiArNTQ1LDkxIEBA IE11bHRpRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSkKIAlyZXR1cm4gcmVzdWx0OwogfQog CisvKgorICogV3JhcCBhcnJheSBvZiBQbGFuU3RhdGUgRXhlY1Byb2NOb2RlIHdpdGggRXhlY1By b2NOb2RlRmlyc3QuCisgKi8KK3N0YXRpYyB2b2lkCitFeGVjU2V0RXhlY1Byb2NOb2RlQXJyYXko UGxhblN0YXRlICoqcGxhbnN0YXRlcywgaW50IG5wbGFucykKK3sKKwlpbnQJCQlpOworCisJZm9y IChpID0gMDsgaSA8IG5wbGFuczsgaSsrKQorCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVjdXJzZShw bGFuc3RhdGVzW2ldKTsKK30KKworLyoKKyAqIFdyYXAgQ3VzdG9tU2NhblN0YXRlIGNoaWxkcmVu J3MgRXhlY1Byb2NOb2RlIHdpdGggRXhlY1Byb2NOb2RlRmlyc3QuCisgKi8KK3N0YXRpYyB2b2lk CitDU1NDaGlsZEV4ZWNTZXRFeGVjUHJvY05vZGVBcnJheShDdXN0b21TY2FuU3RhdGUgKmNzcykK K3sKKwlMaXN0Q2VsbCAgICpjZWxsOworCisJZm9yZWFjaChjZWxsLCBjc3MtPmN1c3RvbV9wcykK KwkJRXhlY1NldEV4ZWNQcm9jTm9kZVJlY3Vyc2UoKFBsYW5TdGF0ZSAqKSBsZmlyc3QoY2VsbCkp OworfQorCisvKgorICogUmVjdXJzaXZlbHkgd3JhcCBhbGwgdGhlIHVuZGVybHlpbmcgRXhlY1By b2NOb2RlIHdpdGggRXhlY1Byb2NOb2RlRmlyc3QuCisgKgorICogUmVjdXJzaW9uIGlzIHVzdWFs bHkgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIG5leHQgRXhlY1Byb2NOb2RlKCkgY2FsbCBtYXkgYmUK KyAqIGludm9rZWQgbm90IG9ubHkgdGhyb3VnaCB0aGUgY3VycmVudCBub2RlLCBidXQgYWxzbyB2 aWEgbGVmdHRyZWUsIHJpZ2h0dHJlZSwKKyAqIHN1YlBsYW4sIG9yIG90aGVyIHNwZWNpYWwgY2hp bGQgcGxhbnMuCisgKi8KK3ZvaWQKK0V4ZWNTZXRFeGVjUHJvY05vZGVSZWN1cnNlKFBsYW5TdGF0 ZSAqcHMpCit7CisJRXhlY1NldEV4ZWNQcm9jTm9kZShwcywgcHMtPkV4ZWNQcm9jTm9kZVJlYWwp OworCisJaWYgKHBzLT5sZWZ0dHJlZSAhPSBOVUxMKQorCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVj dXJzZShwcy0+bGVmdHRyZWUpOworCWlmIChwcy0+cmlnaHR0cmVlICE9IE5VTEwpCisJCUV4ZWNT ZXRFeGVjUHJvY05vZGVSZWN1cnNlKHBzLT5yaWdodHRyZWUpOworCWlmIChwcy0+c3ViUGxhbiAh PSBOVUxMKQorCXsKKwkJTGlzdENlbGwgICAqbDsKKworCQlmb3JlYWNoKGwsIHBzLT5zdWJQbGFu KQorCQl7CisJCQlTdWJQbGFuU3RhdGUgKnNzdGF0ZSA9IChTdWJQbGFuU3RhdGUgKikgbGZpcnN0 KGwpOworCisJCQlFeGVjU2V0RXhlY1Byb2NOb2RlUmVjdXJzZShzc3RhdGUtPnBsYW5zdGF0ZSk7 CisJCX0KKwl9CisKKwkvKiBzcGVjaWFsIGNoaWxkIHBsYW5zICovCisJc3dpdGNoIChub2RlVGFn KHBzLT5wbGFuKSkKKwl7CisJCWNhc2UgVF9BcHBlbmQ6CisJCQlFeGVjU2V0RXhlY1Byb2NOb2Rl QXJyYXkoKChBcHBlbmRTdGF0ZSAqKSBwcyktPmFwcGVuZHBsYW5zLAorCQkJCQkJCQkJICgoQXBw ZW5kU3RhdGUgKikgcHMpLT5hc19ucGxhbnMpOworCQkJYnJlYWs7CisJCWNhc2UgVF9NZXJnZUFw cGVuZDoKKwkJCUV4ZWNTZXRFeGVjUHJvY05vZGVBcnJheSgoKE1lcmdlQXBwZW5kU3RhdGUgKikg cHMpLT5tZXJnZXBsYW5zLAorCQkJCQkJCQkJICgoTWVyZ2VBcHBlbmRTdGF0ZSAqKSBwcyktPm1z X25wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX0JpdG1hcEFuZDoKKwkJCUV4ZWNTZXRFeGVj UHJvY05vZGVBcnJheSgoKEJpdG1hcEFuZFN0YXRlICopIHBzKS0+Yml0bWFwcGxhbnMsCisJCQkJ CQkJCQkgKChCaXRtYXBBbmRTdGF0ZSAqKSBwcyktPm5wbGFucyk7CisJCQlicmVhazsKKwkJY2Fz ZSBUX0JpdG1hcE9yOgorCQkJRXhlY1NldEV4ZWNQcm9jTm9kZUFycmF5KCgoQml0bWFwT3JTdGF0 ZSAqKSBwcyktPmJpdG1hcHBsYW5zLAorCQkJCQkJCQkJICgoQml0bWFwT3JTdGF0ZSAqKSBwcykt Pm5wbGFucyk7CisJCQlicmVhazsKKwkJY2FzZSBUX1N1YnF1ZXJ5U2NhbjoKKwkJCUV4ZWNTZXRF eGVjUHJvY05vZGVSZWN1cnNlKCgoU3VicXVlcnlTY2FuU3RhdGUgKikgcHMpLT5zdWJwbGFuKTsK KwkJCWJyZWFrOworCQljYXNlIFRfQ3RlU2NhbjoKKwkJCUV4ZWNTZXRFeGVjUHJvY05vZGVSZWN1 cnNlKCgoQ3RlU2NhblN0YXRlICopIHBzKS0+Y3RlcGxhbnN0YXRlKTsKKwkJCWJyZWFrOworCQlj YXNlIFRfQ3VzdG9tU2NhbjoKKwkJCUNTU0NoaWxkRXhlY1NldEV4ZWNQcm9jTm9kZUFycmF5KChD dXN0b21TY2FuU3RhdGUgKikgcHMpOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsK Kwl9Cit9CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNFbmROb2RlCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9wcm9jc2lnbmFsLmMKaW5kZXggMTM5N2Y2NWY2N2IuLjRiNDQyZDRjZGFkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFsLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlICJh Y2Nlc3MvcGFyYWxsZWwuaCIKICNpbmNsdWRlICJjb21tYW5kcy9hc3luYy5oIgorI2luY2x1ZGUg ImNvbW1hbmRzL2V4cGxhaW5fcnVubmluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3JlcGFjay5o IgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3RhdC5oIgpAQCAtNzEzLDYg KzcxNCw5IEBAIHByb2NzaWduYWxfc2lndXNyMV9oYW5kbGVyKFNJR05BTF9BUkdTKQogCWlmIChD aGVja1Byb2NTaWduYWwoUFJPQ1NJR19MT0dfTUVNT1JZX0NPTlRFWFQpKQogCQlIYW5kbGVMb2dN ZW1vcnlDb250ZXh0SW50ZXJydXB0KCk7CiAKKwlpZiAoQ2hlY2tQcm9jU2lnbmFsKFBST0NTSUdf TE9HX1FVRVJZX1BMQU4pKQorCQlIYW5kbGVMb2dRdWVyeVBsYW5JbnRlcnJ1cHQoKTsKKwogCWlm IChDaGVja1Byb2NTaWduYWwoUFJPQ1NJR19QQVJBTExFTF9BUFBMWV9NRVNTQUdFKSkKIAkJSGFu ZGxlUGFyYWxsZWxBcHBseU1lc3NhZ2VJbnRlcnJ1cHQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmluZGV4 IGRiZWY3MzRhOTNmLi43Zjg3OTBkMzQwYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9w b3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMzcsNiArMzcs NyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2Fz eW5jLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvZXZlbnRfdHJpZ2dlci5oIgorI2luY2x1ZGUgImNv bW1hbmRzL2V4cGxhaW5fcnVubmluZy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V4cGxhaW5fc3Rh dGUuaCIKICNpbmNsdWRlICJjb21tYW5kcy9wcmVwYXJlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMv cmVwYWNrLmgiCkBAIC0zNjA5LDYgKzM2MTAsOSBAQCBQcm9jZXNzSW50ZXJydXB0cyh2b2lkKQog CWlmIChMb2dNZW1vcnlDb250ZXh0UGVuZGluZykKIAkJUHJvY2Vzc0xvZ01lbW9yeUNvbnRleHRJ bnRlcnJ1cHQoKTsKIAorCWlmIChMb2dRdWVyeVBsYW5QZW5kaW5nKQorCQlQcm9jZXNzTG9nUXVl cnlQbGFuSW50ZXJydXB0KCk7CisKIAlpZiAoUGFyYWxsZWxBcHBseU1lc3NhZ2VQZW5kaW5nKQog CQlQcm9jZXNzUGFyYWxsZWxBcHBseU1lc3NhZ2VzKCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxz LmMKaW5kZXggYmJkMjhkMTRkOTkuLmRlODRmZDljZmEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2Jh bHMuYwpAQCAtNDAsNiArNDAsOCBAQCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25U aW1lb3V0UGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IFByb2NTaWduYWxC YXJyaWVyUGVuZGluZyA9IGZhbHNlOwogdm9sYXRpbGUgc2lnX2F0b21pY190IExvZ01lbW9yeUNv bnRleHRQZW5kaW5nID0gZmFsc2U7CiB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVN0YXRzVXBk YXRlVGltZW91dFBlbmRpbmcgPSBmYWxzZTsKK3ZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dRdWVy eVBsYW5QZW5kaW5nID0gZmFsc2U7CisKIHZvbGF0aWxlIHVpbnQzMiBJbnRlcnJ1cHRIb2xkb2Zm Q291bnQgPSAwOwogdm9sYXRpbGUgdWludDMyIFF1ZXJ5Q2FuY2VsSG9sZG9mZkNvdW50ID0gMDsK IHZvbGF0aWxlIHVpbnQzMiBDcml0U2VjdGlvbkNvdW50ID0gMDsKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy94YWN0LmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oCmluZGV4IGE4 Y2JkZjI0N2M4Li5mMjg4MWQ5NTZjMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3hh Y3QuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGFjdC5oCkBAIC00MzIsNiArNDMyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgeGxfeGFjdF9wYXJzZWRfYWJvcnQKIAlUaW1lc3RhbXBUeiBvcmlnaW5f dGltZXN0YW1wOwogfSB4bF94YWN0X3BhcnNlZF9hYm9ydDsKIAordHlwZWRlZiBzdHJ1Y3QgUXVl cnlEZXNjIFF1ZXJ5RGVzYzsKIAogLyogLS0tLS0tLS0tLS0tLS0tLQogICoJCWV4dGVybiBkZWZp bml0aW9ucwpAQCAtNDU4LDYgKzQ1OSw4IEBAIGV4dGVybiBUaW1lc3RhbXBUeiBHZXRDdXJyZW50 U3RhdGVtZW50U3RhcnRUaW1lc3RhbXAodm9pZCk7CiBleHRlcm4gVGltZXN0YW1wVHogR2V0Q3Vy cmVudFRyYW5zYWN0aW9uU3RvcFRpbWVzdGFtcCh2b2lkKTsKIGV4dGVybiB2b2lkIFNldEN1cnJl bnRTdGF0ZW1lbnRTdGFydFRpbWVzdGFtcCh2b2lkKTsKIGV4dGVybiBpbnQJR2V0Q3VycmVudFRy YW5zYWN0aW9uTmVzdExldmVsKHZvaWQpOworUXVlcnlEZXNjICAqR2V0Q3VycmVudFF1ZXJ5RGVz Yyh2b2lkKTsKK3ZvaWQJCVNldEN1cnJlbnRRdWVyeURlc2MoUXVlcnlEZXNjICpxdWVyeURlc2Mp OwogZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZElzQ3VycmVudFRyYW5zYWN0aW9uSWQoVHJhbnNh Y3Rpb25JZCB4aWQpOwogZXh0ZXJuIGludAlHZXRUb3BSZWFkT25seVRyYW5zYWN0aW9uTmVzdExl dmVsKHZvaWQpOwogZXh0ZXJuIHZvaWQgQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQodm9pZCk7CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBmYTc2Yzc5MjNmMC4uZGJhNzc0NTBiMjIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtODcyMSw2ICs4NzIxLDEzIEBACiAgIHByb3JldHR5cGUg PT4gJ2Jvb2wnLCBwcm9hcmd0eXBlcyA9PiAnaW50NCcsCiAgIHByb3NyYyA9PiAncGdfbG9nX2Jh Y2tlbmRfbWVtb3J5X2NvbnRleHRzJywgcHJvYWNsID0+ICd7UE9TVEdSRVM9WH0nIH0sCiAKKyMg bG9nZ2luZyBwbGFuIG9mIHRoZSBydW5uaW5nIHF1ZXJ5IG9uIHRoZSBzcGVjaWZpZWQgYmFja2Vu ZAoreyBvaWQgPT4gJzgwMDAnLCBkZXNjciA9PiAnbG9nIHBsYW4gb2YgdGhlIHJ1bm5pbmcgcXVl cnkgb24gdGhlIHNwZWNpZmllZCBiYWNrZW5kJywKKyAgcHJvbmFtZSA9PiAncGdfbG9nX3F1ZXJ5 X3BsYW4nLAorICBwcm92b2xhdGlsZSA9PiAndicsIHByb3JldHR5cGUgPT4gJ2Jvb2wnLAorICBw cm9hcmd0eXBlcyA9PiAnaW50NCcsIHByb3NyYyA9PiAncGdfbG9nX3F1ZXJ5X3BsYW4nLAorICBw cm9hY2wgPT4gJ3tQT1NUR1JFUz1YfScgfSwKKwogIyBub24tcGVyc2lzdGVudCBzZXJpZXMgZ2Vu ZXJhdG9yCiB7IG9pZCA9PiAnMTA2NicsIGRlc2NyID0+ICdub24tcGVyc2lzdGVudCBzZXJpZXMg Z2VuZXJhdG9yJywKICAgcHJvbmFtZSA9PiAnZ2VuZXJhdGVfc2VyaWVzJywgcHJvcm93cyA9PiAn MTAwMCcsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmggYi9zcmMv aW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKaW5kZXggNDcyZTE0MWJiYTMuLjQyZjFmN2Q2MWZm IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvZXhwbGFpbi5oCkBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIEV4 cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwgSW50b0NsYXVzZSAqaW50bywK IAkJCQkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKIAkJCQkJCSAgIGNvbnN0IE1l bW9yeUNvbnRleHRDb3VudGVycyAqbWVtX2NvdW50ZXJzKTsKIAorZXh0ZXJuIHZvaWQgRXhwbGFp blByaW50UGxhbihFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7CitleHRl cm4gdm9pZCBFeHBsYWluUHJpbnRUcmlnZ2VycyhFeHBsYWluU3RhdGUgKmVzLCBRdWVyeURlc2Mg KnF1ZXJ5RGVzYyk7CiBleHRlcm4gdm9pZCBFeHBsYWluUHJpbnRQbGFuKEV4cGxhaW5TdGF0ZSAq ZXMsIFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKTsKIGV4dGVybiB2b2lkIEV4cGxhaW5QcmludFRyaWdn ZXJzKEV4cGxhaW5TdGF0ZSAqZXMsCiAJCQkJCQkJCSBRdWVyeURlc2MgKnF1ZXJ5RGVzYyk7CkBA IC04MSw1ICs4Myw4IEBAIGV4dGVybiB2b2lkIEV4cGxhaW5QcmludEpJVFN1bW1hcnkoRXhwbGFp blN0YXRlICplcywKIGV4dGVybiB2b2lkIEV4cGxhaW5RdWVyeVRleHQoRXhwbGFpblN0YXRlICpl cywgUXVlcnlEZXNjICpxdWVyeURlc2MpOwogZXh0ZXJuIHZvaWQgRXhwbGFpblF1ZXJ5UGFyYW1l dGVycyhFeHBsYWluU3RhdGUgKmVzLAogCQkJCQkJCQkgICBQYXJhbUxpc3RJbmZvIHBhcmFtcywg aW50IG1heGxlbik7CitleHRlcm4gdm9pZCBFeHBsYWluU3RyaW5nQXNzZW1ibGUoRXhwbGFpblN0 YXRlICplcywgUXVlcnlEZXNjICpxdWVyeURlc2MsCisJCQkJCQkJCSAgaW50IGxvZ0Zvcm1hdCwg Ym9vbCBsb2dUcmlnZ2VycywKKwkJCQkJCQkJICBpbnQgbG9nUGFyYW1ldGVyTWF4TGVuZ3RoKTsK IAogI2VuZGlmCQkJCQkJCS8qIEVYUExBSU5fSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvZXhwbGFpbl9ydW5uaW5nLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWlu X3J1bm5pbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMzE2ZWYy NWJlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3J1 bm5pbmcuaApAQCAtMCwwICsxLDI0IEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBleHBs YWluX3J1bm5pbmcuaAorICoJICBwcm90b3R5cGVzIGZvciBleHBsYWluX3J1bm5pbmcuYworICoK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LTUsIFJlZ2Vu dHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL2Nv bW1hbmRzL2V4cGxhaW5fcnVubmluZy5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNp Zm5kZWYgRVhQTEFJTl9SVU5OSU5HX0gKKyNkZWZpbmUgRVhQTEFJTl9SVU5OSU5HX0gKKworI2lu Y2x1ZGUgImV4ZWN1dG9yL2V4ZWN1dG9yLmgiCisjaW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9z dGF0ZS5oIgorCitleHRlcm4gdm9pZCBIYW5kbGVMb2dRdWVyeVBsYW5JbnRlcnJ1cHQodm9pZCk7 CitleHRlcm4gdm9pZCBQcm9jZXNzTG9nUXVlcnlQbGFuSW50ZXJydXB0KHZvaWQpOworZXh0ZXJu IHZvaWQgTG9nUXVlcnlQbGFuKHZvaWQpOworZXh0ZXJuIERhdHVtIHBnX2xvZ19xdWVyeV9wbGFu KFBHX0ZVTkNUSU9OX0FSR1MpOworCisjZW5kaWYJCQkJCQkJLyogRVhQTEFJTl9SVU5OSU5HX0gg Ki8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUuaAppbmRleCA5N2JjN2VkNDlmNi4uYjlh OTgxNTc4MTUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW5fc3RhdGUu aAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9leHBsYWluX3N0YXRlLmgKQEAgLTczLDYgKzcz LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwbGFpblN0YXRlCiAJCQkJCQkJCSAqIGVudHJ5ICovCiAJ Lyogc3RhdGUgcmVsYXRlZCB0byB0aGUgY3VycmVudCBwbGFuIG5vZGUgKi8KIAlFeHBsYWluV29y a2Vyc1N0YXRlICp3b3JrZXJzX3N0YXRlOyAvKiBuZWVkZWQgaWYgcGFyYWxsZWwgcGxhbiAqLwor CWJvb2wJCXNpZ25hbGVkOwkJLyogd2hldGhlciBleHBsYWluIGlzIGNhbGxlZCBieSBzaWduYWwg Ki8KIAkvKiBleHRlbnNpb25zICovCiAJdm9pZAkgICoqZXh0ZW5zaW9uX3N0YXRlOwogCWludAkJ CWV4dGVuc2lvbl9zdGF0ZV9hbGxvY2F0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVj dXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA2 NTBiYWFiM2VmYy4uMTJhMTY3M2QwMGMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMjk5 LDYgKzI5OSw3IEBAIGV4dGVybiB2b2lkIEV2YWxQbGFuUXVhbEVuZChFUFFTdGF0ZSAqZXBxc3Rh dGUpOwogZXh0ZXJuIFBsYW5TdGF0ZSAqRXhlY0luaXROb2RlKFBsYW4gKm5vZGUsIEVTdGF0ZSAq ZXN0YXRlLCBpbnQgZWZsYWdzKTsKIGV4dGVybiB2b2lkIEV4ZWNTZXRFeGVjUHJvY05vZGUoUGxh blN0YXRlICpub2RlLCBFeGVjUHJvY05vZGVNdGQgZnVuY3Rpb24pOwogZXh0ZXJuIE5vZGUgKk11 bHRpRXhlY1Byb2NOb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CitleHRlcm4gdm9pZCBFeGVjU2V0RXhl Y1Byb2NOb2RlUmVjdXJzZShQbGFuU3RhdGUgKnBzKTsKIGV4dGVybiB2b2lkIEV4ZWNFbmROb2Rl KFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0 ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVjU2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVl ZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbWlz Y2FkbWluLmggYi9zcmMvaW5jbHVkZS9taXNjYWRtaW4uaAppbmRleCA3MTcwYTRiZmY5OC4uMGFi Nzc1ZTk2NGYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCisrKyBiL3NyYy9p bmNsdWRlL21pc2NhZG1pbi5oCkBAIC05OCw2ICs5OCw3IEBAIGV4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRsZVNlc3Npb25UaW1lb3V0UGVuZGluZzsKIGV4dGVybiBQ R0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgUHJvY1NpZ25hbEJhcnJpZXJQZW5kaW5n OwogZXh0ZXJuIFBHRExMSU1QT1JUIHZvbGF0aWxlIHNpZ19hdG9taWNfdCBMb2dNZW1vcnlDb250 ZXh0UGVuZGluZzsKIGV4dGVybiBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgSWRs ZVN0YXRzVXBkYXRlVGltZW91dFBlbmRpbmc7CitleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUg c2lnX2F0b21pY190IExvZ1F1ZXJ5UGxhblBlbmRpbmc7CiAKIGV4dGVybiBQR0RMTElNUE9SVCB2 b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2hlY2tDbGllbnRDb25uZWN0aW9uUGVuZGluZzsKIGV4dGVy biBQR0RMTElNUE9SVCB2b2xhdGlsZSBzaWdfYXRvbWljX3QgQ2xpZW50Q29ubmVjdGlvbkxvc3Q7 CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaCBiL3NyYy9pbmNs dWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCmluZGV4IGFhYTE1OGJmZDY2Li5jMjE0MjA0M2UyZCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcm9jc2lnbmFsLmgKQEAgLTM1LDYgKzM1LDggQEAgdHlwZWRlZiBlbnVt CiAJUFJPQ1NJR19XQUxTTkRfSU5JVF9TVE9QUElORywJLyogYXNrIHdhbHNlbmRlcnMgdG8gcHJl cGFyZSBmb3Igc2h1dGRvd24gICovCiAJUFJPQ1NJR19CQVJSSUVSLAkJCS8qIGdsb2JhbCBiYXJy aWVyIGludGVycnVwdCAgKi8KIAlQUk9DU0lHX0xPR19NRU1PUllfQ09OVEVYVCwgLyogYXNrIGJh Y2tlbmQgdG8gbG9nIHRoZSBtZW1vcnkgY29udGV4dHMgKi8KKwlQUk9DU0lHX0xPR19RVUVSWV9Q TEFOLAkJLyogYXNrIGJhY2tlbmQgdG8gbG9nIHBsYW4gb2YgdGhlIGN1cnJlbnQKKwkJCQkJCQkJ ICogcXVlcnkgKi8KIAlQUk9DU0lHX1BBUkFMTEVMX0FQUExZX01FU1NBR0UsIC8qIE1lc3NhZ2Ug ZnJvbSBwYXJhbGxlbCBhcHBseSB3b3JrZXJzICovCiAJUFJPQ1NJR19TTE9UU1lOQ19NRVNTQUdF LAkvKiBhc2sgc2xvdCBzeW5jaHJvbml6YXRpb24gdG8gc3RvcCAqLwogCVBST0NTSUdfUkVQQUNL X01FU1NBR0UsCQkvKiBNZXNzYWdlIGZyb20gcmVwYWNrIHdvcmtlciAqLwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X21pc2MvbWVzb24uYnVpbGQgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfbWlzYy9tZXNvbi5idWlsZAppbmRleCA5NjllOTBiMzk2ZC4uNGMyM2JiNzk0YzcgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCisrKyBiL3Ny Yy90ZXN0L21vZHVsZXMvdGVzdF9taXNjL21lc29uLmJ1aWxkCkBAIC0yMiw2ICsyMiw3IEBAIHRl c3RzICs9IHsKICAgICAgICd0LzAxMV9sb2NrX3N0YXRzLnBsJywKICAgICAgICd0LzAxMl9kZGx1 dGlscy5wbCcsCiAgICAgICAndC8wMTNfdGVtcF9vYmpfbXVsdGlzZXNzaW9uLnBsJywKKyAgICAg ICd0LzAxNF9wZ19sb2dfcXVlcnlfcGxhbi5wbCcsCiAgICAgXSwKICAgICAjIFRoZSBpbmplY3Rp b24gcG9pbnRzIGFyZSBjbHVzdGVyLXdpZGUsIHNvIGRpc2FibGUgaW5zdGFsbGNoZWNrCiAgICAg J3J1bm5pbmdjaGVjayc6IGZhbHNlLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X21pc2MvdC8wMTRfcGdfbG9nX3F1ZXJ5X3BsYW4ucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf bWlzYy90LzAxNF9wZ19sb2dfcXVlcnlfcGxhbi5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMjA1NTY0MTI4M2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfbWlzYy90LzAxNF9wZ19sb2dfcXVlcnlfcGxhbi5wbApAQCAtMCwwICsxLDEw MSBAQAorCisjIENvcHlyaWdodCAoYykgMjAyNC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAorCit1c2Ugc3RyaWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwn OwordXNlIGxvY2FsZTsKKwordXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7Cit1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2UgVGVzdDo6TW9yZTsKKworIyBUZXN0IHRoYXQgcGdf bG9nX3F1ZXJ5X3BsYW4oKSBhY3R1YWxseSBsb2dzIHRoZSBxdWVyeSBwbGFuIG9mCisjIGFub3Ro ZXIgYmFja2VuZCBleGVjdXRpbmcgYSBxdWVyeS4KKworIyBUaGlzIHRlc3QgcmVxdWlyZXMgdGlt aW5nIGNvb3JkaW5hdGlvbnM6CisjICAxKSBUaGUgdGFyZ2V0IGJhY2tlbmQgbXVzdCBiZSBleGVj dXRpbmcgYSBxdWVyeSB3aGVuCisjICAgICBwZ19sb2dfcXVlcnlfcGxhbigpIHNlbmRzIHRoZSBz aWduYWwuCisjICAyKSBXZSBtdXN0IGNvbmZpcm0gdGhhdCB0aGUgdGFyZ2V0IGJhY2tlbmQgYWN0 dWFsbHkgcmVjZWl2ZWQgdGhlCisjICAgICBzaWduYWwgdGhhdCByZXF1ZXN0cyBsb2dnaW5nIG9m IHRoZSBwbGFuLgorIworIyBXZSB1c2UgYW4gYWR2aXNvcnkgbG9jayBhbmQgYW4gaW5qZWN0aW9u IHBvaW50IHRvIGNvbnRyb2wgdGhlbQorIyByZXNwZWN0aXZlbHkuCisKK2lmICgkRU5We2VuYWJs ZV9pbmplY3Rpb25fcG9pbnRzfSBuZSAneWVzJykKK3sKKwlwbGFuIHNraXBfYWxsID0+ICdJbmpl Y3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCc7Cit9CisKKyMgTm9kZSBp bml0aWFsaXphdGlvbgorbXkgJG5vZGUgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXco J25vZGUnKTsKKyRub2RlLT5pbml0KCk7Ciskbm9kZS0+c3RhcnQ7CisKKyMgQ2hlY2sgaWYgdGhl IGV4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIGlzIGF2YWlsYWJsZSwgYXMgaXQgbWF5IGJlCisj IHBvc3NpYmxlIHRoYXQgdGhpcyBzY3JpcHQgaXMgcnVuIHdpdGggaW5zdGFsbGNoZWNrLCB3aGVy ZSB0aGUgbW9kdWxlCisjIHdvdWxkIG5vdCBiZSBpbnN0YWxsZWQgYnkgZGVmYXVsdC4KK2lmICgh JG5vZGUtPmNoZWNrX2V4dGVuc2lvbignaW5qZWN0aW9uX3BvaW50cycpKQoreworCXBsYW4gc2tp cF9hbGwgPT4gJ0V4dGVuc2lvbiBpbmplY3Rpb25fcG9pbnRzIG5vdCBpbnN0YWxsZWQnOworfQor Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdDUkVBVEUgRVhURU5TSU9OIGluamVjdGlv bl9wb2ludHM7Jyk7CisKK215ICRwc3FsX3Nlc3Npb24xID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKK215ICRwc3FsX3Nlc3Npb24yID0gJG5vZGUtPmJhY2tncm91bmRfcHNx bCgncG9zdGdyZXMnKTsKKworbXkgJHNlc3Npb24xX3BpZCA9ICRwc3FsX3Nlc3Npb24xLT5xdWVy eV9zYWZlKCJzZWxlY3QgcGdfYmFja2VuZF9waWQoKSIpOworCisjIFNldCBpbmplY3Rpb24gcG9p bnQgaW4gdGhlIGxvZ2dpbmcgcGxhbiByZXF1ZXN0IGhhbmRsZXIgdG8gZW5zdXJlCisjIHRoYXQg c2Vzc2lvbjEgcmVjZWl2ZWQgdGhlIHNpZ25hbCBvZiBwZ19sb2dfcXVlcnlfcGxhbigpLgorJHBz cWxfc2Vzc2lvbjEtPnF1ZXJ5X3NhZmUoCisJcXFbCisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNf c2V0X2xvY2FsKCk7CisJU0VMRUNUIGluamVjdGlvbl9wb2ludHNfYXR0YWNoKCdsb2ctcXVlcnkt aW50ZXJydXB0JywgJ3dhaXQnKTsKK10pOworCisjIFVzZSBhbiBhZHZpc29yeSBsb2NrIHRvIG1h a2Ugc2Vzc2lvbjEgYmxvY2tlZCBkdXJpbmcgcXVlcnkgZXhlY3V0aW9uLgorJHBzcWxfc2Vzc2lv bjItPnF1ZXJ5X3NhZmUoCisJcXFbCisJQkVHSU47CisJU0VMRUNUIHBnX2Fkdmlzb3J5X3hhY3Rf bG9jaygxKTsKK10pOworCiskcHNxbF9zZXNzaW9uMS0+cXVlcnlfdW50aWwoCisJcXIvd2FpdF9v bl9hZHZpc29yeV9sb2NrLywgcSgKKwlcZWNobyB3YWl0X29uX2Fkdmlzb3J5X2xvY2sKKwlCRUdJ TjsKKwlTRUxFQ1QgcGdfYWR2aXNvcnlfeGFjdF9sb2NrKDEpOworKSk7CisKKyMgQ29uZmlybSB0 aGF0IHNlc3Npb24xIGlzIGFjdHVhbGx5IHdhaXRpbmcgb24gdGhlIGFkdmlzb3J5IGxvY2suCisk bm9kZS0+d2FpdF9mb3JfZXZlbnQoJ2NsaWVudCBiYWNrZW5kJywgJ2Fkdmlzb3J5Jyk7CisKKyMg UnVuIHBnX2xvZ19xdWVyeV9wbGFuKCkuCiskcHNxbF9zZXNzaW9uMi0+cXVlcnlfc2FmZSgiU0VM RUNUIHBnX2xvZ19xdWVyeV9wbGFuKCRzZXNzaW9uMV9waWQpOyIpOworCisjIEVuc3VyZSB0aGF0 IHRoZSBzaWduYWwgb2YgcGdfbG9nX3F1ZXJ5X3BsYW4oKSBpcyBhY3R1YWxseQorIyByZWNlaXZl ZCBieSBjb25maXJtaW5nIHNlc3Npb24xIGlzIHdhaXRpbmcgb24gdGhlIGluamVjdGlvbiBwb2lu dC4KKyRub2RlLT53YWl0X2Zvcl9ldmVudCgnY2xpZW50IGJhY2tlbmQnLCAnbG9nLXF1ZXJ5LWlu dGVycnVwdCcpOworCisjIENvbW1pdCB0aGUgc2Vzc2lvbiAyIHRvIHJlbGVhc2UgdGhlIGFkdmlz b3J5IGxvY2suCiskcHNxbF9zZXNzaW9uMi0+cXVlcnlfc2FmZSgiQ09NTUlUOyIpOworCitteSAk bG9nX29mZnNldCA9IC1zICRub2RlLT5sb2dmaWxlOworCisjIERldGFjaCB0aGUgaW5qZWN0aW9u IHBvaW50IHRvIHN0YXJ0IGxvZ2dpbmcgdGhlIHBsYW4uCiskcHNxbF9zZXNzaW9uMi0+cXVlcnlf c2FmZSgKKwlxcVsKKyAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c193YWtldXAoJ2xvZy1xdWVy eS1pbnRlcnJ1cHQnKTsKKyAgICBTRUxFQ1QgaW5qZWN0aW9uX3BvaW50c19kZXRhY2goJ2xvZy1x dWVyeS1pbnRlcnJ1cHQnKTsKK10pOworCiskbm9kZS0+d2FpdF9mb3JfbG9nKCdxdWVyeSBhbmQg aXRzIHBsYW4gcnVubmluZyBvbiBiYWNrZW5kIHdpdGggUElEJywKKwkkbG9nX29mZnNldCk7CisK KyRwc3FsX3Nlc3Npb24xLT5xdWVyeV9zYWZlKCJDT01NSVQ7Iik7CisKK29rKCRwc3FsX3Nlc3Np b24xLT5xdWl0KTsKK29rKCRwc3FsX3Nlc3Npb24yLT5xdWl0KTsKKworZG9uZV90ZXN0aW5nKCk7 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL21pc2NfZnVuY3Rpb25zLm91 dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvbWlzY19mdW5jdGlvbnMub3V0CmluZGV4IGMz MjYxYmZmMjA5Li4zMDI5N2Q3YmQ0ZSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9taXNjX2Z1bmN0aW9ucy5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9t aXNjX2Z1bmN0aW9ucy5vdXQKQEAgLTM1Nyw2ICszNTcsNDQgQEAgUkVWT0tFIEVYRUNVVEUgT04g RlVOQ1RJT04gcGdfbG9nX2JhY2tlbmRfbWVtb3J5X2NvbnRleHRzKGludGVnZXIpCiAgIEZST00g cmVncmVzc19sb2dfbWVtb3J5OwogRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsKIC0tCist LSBwZ19sb2dfcXVlcnlfcGxhbigpCistLQorLS0gUGxhbnMgYXJlIGxvZ2dlZCBhbmQgdGhleSBh cmUgbm90IHJldHVybmVkIHRvIHRoZSBmdW5jdGlvbi4KKy0tIEZ1cnRoZXJtb3JlLCB0aGVpciBj b250ZW50cyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIG9wdGltaXplci4KKy0tIEhlcmUgd2Ug anVzdCB2ZXJpZmllcyB0aGF0IHRoZSBwZXJtaXNzaW9ucyBhcmUgc2V0IHByb3Blcmx5LgorLS0K Ky0tIFRoZSB0ZXN0IHRoYXQgdmVyaWZpZXMgdGhlIGJhY2tlbmQncyBxdWVyeSBwbGFuIGlzIGFj dHVhbGx5CistLSBsb2dnZWQgaXMgaW1wbGVtZW50ZWQgaW4KKy0tIHNyYy90ZXN0L21vZHVsZXMv dGVzdF9taXNjL3QvMDE0X3BnX2xvZ19xdWVyeV9wbGFuLnBsLgorQ1JFQVRFIFJPTEUgcmVncmVz c19sb2dfcGxhbjsKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdyZWdyZXNzX2xvZ19w bGFuJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNVVEUnKTsgLS0gbm8K KyBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgZgor KDEgcm93KQorCitHUkFOVCBFWEVDVVRFIE9OIEZVTkNUSU9OIHBnX2xvZ19xdWVyeV9wbGFuKGlu dGVnZXIpCisgIFRPIHJlZ3Jlc3NfbG9nX3BsYW47CitTRUxFQ1QgaGFzX2Z1bmN0aW9uX3ByaXZp bGVnZSgncmVncmVzc19sb2dfcGxhbicsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRlZ2VyKScs ICdFWEVDVVRFJyk7IC0tIHllcworIGhhc19mdW5jdGlvbl9wcml2aWxlZ2UgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB0CisoMSByb3cpCisKK1NFVCBST0xFIHJlZ3Jlc3NfbG9nX3BsYW47 CitTRUxFQ1QgcGdfbG9nX3F1ZXJ5X3BsYW4ocGdfYmFja2VuZF9waWQoKSk7CisgcGdfbG9nX3F1 ZXJ5X3BsYW4gCistLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitSRVNFVCBST0xF OworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikK KyAgRlJPTSByZWdyZXNzX2xvZ19wbGFuOworRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX3BsYW47Cist LQogLS0gVGVzdCBzb21lIGJ1aWx0LWluIFNSRnMKIC0tCiAtLSBUaGUgb3V0cHV0cyBvZiB0aGVz ZSBhcmUgdmFyaWFibGUsIHNvIHdlIGNhbid0IGp1c3QgcHJpbnQgdGhlaXIgcmVzdWx0cwpkaWZm IC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsIGIvc3JjL3Rl c3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMuc3FsCmluZGV4IDk0NmVlNTcyNmNkLi5kM2Nm NWI2Zjg1MiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvbWlzY19mdW5jdGlvbnMu c3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL21pc2NfZnVuY3Rpb25zLnNxbApAQCAtMTEz LDYgKzExMywzNyBAQCBSRVZPS0UgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfYmFja2VuZF9t ZW1vcnlfY29udGV4dHMoaW50ZWdlcikKIAogRFJPUCBST0xFIHJlZ3Jlc3NfbG9nX21lbW9yeTsK IAorLS0KKy0tIHBnX2xvZ19xdWVyeV9wbGFuKCkKKy0tCistLSBQbGFucyBhcmUgbG9nZ2VkIGFu ZCB0aGV5IGFyZSBub3QgcmV0dXJuZWQgdG8gdGhlIGZ1bmN0aW9uLgorLS0gRnVydGhlcm1vcmUs IHRoZWlyIGNvbnRlbnRzIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgb3B0aW1pemVyLgorLS0g SGVyZSB3ZSBqdXN0IHZlcmlmaWVzIHRoYXQgdGhlIHBlcm1pc3Npb25zIGFyZSBzZXQgcHJvcGVy bHkuCistLQorLS0gVGhlIHRlc3QgdGhhdCB2ZXJpZmllcyB0aGUgYmFja2VuZCdzIHF1ZXJ5IHBs YW4gaXMgYWN0dWFsbHkKKy0tIGxvZ2dlZCBpcyBpbXBsZW1lbnRlZCBpbgorLS0gc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X21pc2MvdC8wMTRfcGdfbG9nX3F1ZXJ5X3BsYW4ucGwuCisKK0NSRUFURSBS T0xFIHJlZ3Jlc3NfbG9nX3BsYW47CisKK1NFTEVDVCBoYXNfZnVuY3Rpb25fcHJpdmlsZWdlKCdy ZWdyZXNzX2xvZ19wbGFuJywKKyAgJ3BnX2xvZ19xdWVyeV9wbGFuKGludGVnZXIpJywgJ0VYRUNV VEUnKTsgLS0gbm8KKworR1JBTlQgRVhFQ1VURSBPTiBGVU5DVElPTiBwZ19sb2dfcXVlcnlfcGxh bihpbnRlZ2VyKQorICBUTyByZWdyZXNzX2xvZ19wbGFuOworCitTRUxFQ1QgaGFzX2Z1bmN0aW9u X3ByaXZpbGVnZSgncmVncmVzc19sb2dfcGxhbicsCisgICdwZ19sb2dfcXVlcnlfcGxhbihpbnRl Z2VyKScsICdFWEVDVVRFJyk7IC0tIHllcworCitTRVQgUk9MRSByZWdyZXNzX2xvZ19wbGFuOwor U0VMRUNUIHBnX2xvZ19xdWVyeV9wbGFuKHBnX2JhY2tlbmRfcGlkKCkpOworUkVTRVQgUk9MRTsK KworUkVWT0tFIEVYRUNVVEUgT04gRlVOQ1RJT04gcGdfbG9nX3F1ZXJ5X3BsYW4oaW50ZWdlcikK KyAgRlJPTSByZWdyZXNzX2xvZ19wbGFuOworCitEUk9QIFJPTEUgcmVncmVzc19sb2dfcGxhbjsK KwogLS0KIC0tIFRlc3Qgc29tZSBidWlsdC1pbiBTUkZzCiAtLQotLSAKMi40OC4xCgo= --=_7f0e14b18fa4ad14a439168cb207e8d0--