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 1tLe6R-00G6Il-3j for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Dec 2024 07:59:19 +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 1tLe6O-008hZg-Ht for pgsql-hackers@arkaria.postgresql.org; Thu, 12 Dec 2024 07:59:17 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tLe6N-008hZW-Ti for pgsql-hackers@lists.postgresql.org; Thu, 12 Dec 2024 07:59:17 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tLe6L-002QI7-80 for pgsql-hackers@postgresql.org; Thu, 12 Dec 2024 07:59:16 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-725dac69699so282081b3a.0 for ; Wed, 11 Dec 2024 23:59:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1733990352; x=1734595152; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=1vNiCwX2nVycBrS6L3+xyxwakXZGXRuacZCd+uPCIUk=; b=B0Te95qNYPzcVzVlx3LtQFQepAPuhVrqlg31AWd/iNU4v9QN5lbqnWN3mBPpvAQkZN BgtuXCu1r6CeDj1VRnXEtHj/nxq7t1BL6gQhkxzwbuZuIFI7SkYxFCD+/RvrIErnHM5M 5RfhkFATDBrAIQJxdB4oLWrhS/HL39MeNTGg4M45XP6k/WNhKMjEEPkhU/qSptcuu4hM UnhEOwI2R62p6kTvbUOcUss5nL0nR9OE+200ZAEr2a7GW4xss61ccrhQyXwo/hUjAiMx zdLhlKRV0/APG18m3WW3B0VXYdeV/akgwEGCL8IjSKm4gGovjdWjayrqcvt7WGs4R0+J TzCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1733990352; x=1734595152; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=1vNiCwX2nVycBrS6L3+xyxwakXZGXRuacZCd+uPCIUk=; b=AyIuoSLWBIBQ2e4UZ89CPcc7Ch5kdbJaVhuTVP3lzJdZ8rE/ljbngcC8zaEX6OVGQC aynCVUv9nRlpDKsLDo6eMbY2f5FD9IkXruqUY2Tjf/4nh21o1JSWEX8psJjweffLy+ka de0bojdYlPqaVSIECSZsDQljf+TQfnxNpwjzS9VEiHZ+d9WlDtiZ+2dqwwL/xVZ3pRnG oKobkj+0Cfv4PLIj7gUih5IBi/2XqcEt47u8TF7FNfS/H6kQ5fLT4Nv7TmsvP/AwkWl6 dVxunh986TeLUQK41bu2NSdv+bvvGTv3heNCGcnUsPxDcReNJrE7S9k4fNCmWyFQxVLV Bw2Q== X-Forwarded-Encrypted: i=1; AJvYcCWdSpoJFnRPhSsogwImjSfmVTOBifkNPgj3YMv2rt/OEvSRZb6D/kGYzKokGwTyAHt7W/ONwNurKEe9JSEw@postgresql.org X-Gm-Message-State: AOJu0Yy539lzMZzW+4uxFMRtQ4uvM/2063NYWkLkwVIGsidX7/+01zMq LWntfjI+vWUsaYOaN8CCB35wgxwKYIPjCJ3bql7E200vml8dQMync67JbjpJuSvPhfEiUugea2e Ilw2+xUJ2QCM0bH1qhjLl8wKPD18= X-Gm-Gg: ASbGncueeyZ8eOwZ4fdi0cdhgMnz7D2jUp9CKdjWEb8K+F684uuRhehVfi5fxORvEUM Lpb7t/GTPoxtNkY2qG6aTn/iuyID2GyxeEBF4vbM= X-Google-Smtp-Source: AGHT+IH2zMOFstTERRCrCEXJ61OZtpq73Ms+0CP+07R1MukzU29gCos+zCN43SKP+ramSjfnfrH2HKzfi7ZRNLnVh0g= X-Received: by 2002:a05:6a21:b8d:b0:1e0:c29c:f2d4 with SMTP id adf61e73a8af0-1e1cead7545mr3820539637.15.1733990351602; Wed, 11 Dec 2024 23:59:11 -0800 (PST) MIME-Version: 1.0 References: <54c35fb9-da3a-4754-ab8c-46ed0b612465@vondra.me> <684c70d7-180e-461d-9377-600c2db581ba@vondra.me> In-Reply-To: From: Amit Langote Date: Thu, 12 Dec 2024 16:58:54 +0900 Message-ID: Subject: Re: generic plans and "initial" pruning To: Tomas Vondra Cc: Robert Haas , Alvaro Herrera , Andres Freund , Daniel Gustafsson , David Rowley , PostgreSQL Hackers , Thom Brown , Tom Lane Content-Type: multipart/mixed; boundary="000000000000f3ab0c06290e160f" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f3ab0c06290e160f Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Mon, Dec 9, 2024 at 4:10=E2=80=AFPM Amit Langote wrote: > On Fri, Dec 6, 2024 at 5:18=E2=80=AFPM Amit Langote wrote: > > On Thu, Dec 5, 2024 at 11:07=E2=80=AFPM Tomas Vondra = wrote: > > > On 12/5/24 12:28, Amit Langote wrote: > > > > On Thu, Dec 5, 2024 at 3:53=E2=80=AFPM Amit Langote wrote: > > > >> On Thu, Dec 5, 2024 at 2:20=E2=80=AFAM Tomas Vondra wrote: > > > >>> Sure, changing the APIs is allowed, I'm just wondering if maybe t= here > > > >>> might be a way to not have this issue, or at least notice the mis= sing > > > >>> call early. > > > >>> > > > >>> I haven't tried, wouldn't it be better to modify ExecutorStart() = to do > > > >>> the retries internally? I mean, the extensions wouldn't need to c= heck if > > > >>> the plan is still valid, ExecutorStart() would take care of that.= Yeah, > > > >>> it might need some new arguments, but that's more obvious. > > > >> > > > >> One approach could be to move some code from standard_ExecutorStar= t() > > > >> into ExecutorStart(). Specifically, the code responsible for setti= ng > > > >> up enough state in the EState to perform ExecDoInitialPruning(), w= hich > > > >> takes locks that might invalidate the plan. If the plan does becom= e > > > >> invalid, the hook and standard_ExecutorStart() are not called. > > > >> Instead, the caller, ExecutorStartExt() in this case, creates a ne= w > > > >> plan. > > > >> > > > >> This avoids the need to add ExecPlanStillValid() checks anywhere, > > > >> whether in core or extension code. However, it does mean accessing= the > > > >> PlannedStmt earlier than InitPlan(), but the current placement of = the > > > >> code is not exactly set in stone. > > > > > > > > I tried this approach and found that it essentially disables testin= g > > > > of this patch using the delay_execution module, which relies on the > > > > ExecutorStart_hook(). The way the testing works is that the hook in > > > > delay_execution.c pauses the execution of a cached plan to allow a > > > > concurrent session to drop an index referenced in the plan. When > > > > unpaused, execution initialization resumes by calling > > > > standard_ExecutorStart(). At this point, obtaining the lock on the > > > > partition whose index has been dropped invalidates the plan, which = the > > > > hook detects and reports. It then also reports the successful > > > > re-execution of an updated plan that no longer references the dropp= ed > > > > index. Hmm. > > > > > > > > > > It's not clear to me why the change disables this testing, and I can'= t > > > try without a patch. Could you explain? > > > > Sorry, PFA the delta patch for the change I described above. It > > applies on top of v58 series of patches that I posted yesterday. > > You'll notice that delay_execution test fails if you apply and do > > check-world. > > > > As for how the change breaks the testing, here is a before and after > > of the flow of a isolation test in > > src/test/modules/delay_execution/specs/cached-plan-inval.spec (s1 is > > the session used to run a cached plan, s2 to perform concurrent DDL > > that invalidates the plan): > > > > * Before (working): > > > > 1. s2 takes advisory lock > > 2. s1 runs cached plan -> goes to ExecutorStart_hook -> waits for the > > advisory lock > > 3. s2 drops an index referenced in the plan > > 4. s2 unlocks advisory lock > > 5. s1 locks unpruned partitions -> detects plan invalidation due to > > dropped index. > > > > * After (stops working because initial pruning and locking are done > > before calling ExecutorStart_hook): > > > > 1. s2 takes advisory lock > > 2. s1 runs cached plan -> locks unpruned partitions -> goes to > > ExecutorStart_hook to get advisory lock -> waits for advisory lock > > 3. s2 drops an index referenced in the plan -> waits for lock on the > > unpruned partition -> deadlock! > > > > One idea I had after sending the email yesterday is to introduce > > ExecutorStartCachedPlan_hook for the advisory lock based waiting. > > ExecutorStartCachedPlan() is the new function that you will find in > > v58-0004 that wraps ExecutorStart() to handle plan invalidation. This > > new hook would be called before ExecutorStartCachedPlan() calls > > ExecutorStart(), so the original testing flow can still work. > > Here's that patch with this idea implemented that fixes the > delay_execution test breakage. Applies on top of v58 series of > patches. > > However, as mentioned in my previous reply, since extensions might > need to adjust their ExecutorStart hook code to check if the RT index > is in EState.es_unpruned_relids when accessing child relations > directly via ExecGetRangeTableRelation(), I can accept them also > adding a check for ExecPlanStillValid() in their ExecutorStart hook. > So we may not want to add a new hook even if only for testing. One thing I realized about the es_unpruned_relids bitmapset is that ExecGetRangeTableRelation() should verify that any RT index passed to it is a member of the bitmapset. If the RT index is not included, the function should throw an error to catch such cases. I made that change in 0004. This approach can help identify extensions that manipulate RT entries belonging to potentially pruned partitions, provided they use the ExecGetRangeTableRelation() interface to open those relations. To summarize how extensions can be affected: 1. Plan invalidation during standard_ExecutorStart(): A plan tree originating from a CachedPlan can become invalid during standard_ExecutorStart() due to locks taken on leaf partitions that survive initial pruning. Extensions should be updated to handle this scenario by checking ExecPlanStillValid(estate) immediately after calling standard_ExecutorStart() in their ExecutorStart_hook. If it returns false, the extensions should avoid further processing. 2. Validation of RT indexes: If the plan tree remains valid, any direct manipulation of relations using RT indexes must first verify that the RT index is present in the EState.es_unpruned_relids bitmapset. This bitmapset includes: a) RT indexes of relations that are originally unprunable (and locked during GetCachedPlan()), and b) RT indexes of leaf partitions that survive initial partition pruning. This step is crucial because pruned relations are not locked. Additionally, with the update in 0004, attempting to open pruned relations using ExecGetRangeTableRelation() will result in an error. I=E2=80=99d love to hear from anyone maintaining executor hooks, such as th= ose from Timescale, Citus, or other extension developers. Please give this patch set (0001-0004) a try and let me know if you run into any issues or have feedback. 0005 is a sketch of an approach that eliminates the need for extensions to check ExecPlanStillValid() in their ExecutorStart_hook. -- Thanks, Amit Langote --000000000000f3ab0c06290e160f Content-Type: application/octet-stream; name="v59-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Disposition: attachment; filename="v59-0002-Initialize-PartitionPruneContexts-lazily.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l0yqu11 RnJvbSA1YTRjNThkODFhNzVkMGVjOTRmN2NhZmE3ZmVlZWYyNDM5YTM5Y2M2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo0MSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU5 IDIvNV0gSW5pdGlhbGl6ZSBQYXJ0aXRpb25QcnVuZUNvbnRleHRzIGxhemlseQoKVGhpcyBjb21t aXQgbW92ZXMgdGhlIGluaXRpYWxpemF0aW9uIG9mIFBhcnRpdGlvblBydW5lQ29udGV4dHMgZm9y CmJvdGggaW5pdGlhbCBhbmQgZXhlYyBwcnVuaW5nIHN0ZXBzIGZyb20gQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZSgpCnRvIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZSgpLCB3aGVyZSB0 aGV5IGFyZSBhY3R1YWxseSBuZWVkZWQuClRvIHRyYWNrIHdoZXRoZXIgdGhlIGNvbnRleHQgaGFz IGJlZW4gaW5pdGlhbGl6ZWQgYW5kIGlzIHJlYWR5IGZvcgp1c2UsIGEgYm9vbGVhbiBmaWVsZCBp c192YWxpZCBoYXMgYmVlbiBhZGRlZCB0byBQYXJ0aXRpb25QcnVuZUNvbnRleHQuCgpUaGUgcHJp bWFyeSBtb3RpdmF0aW9uIGlzIHRvIGFsbG93IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoKSB0 byBiZQpjYWxsZWQgYmVmb3JlIEV4ZWNJbml0Tm9kZSgpLiBSaWdodCBub3csIGl0J3MgY291cGxl ZCB3aXRoCkV4ZWNJbml0Tm9kZSgpIGJlY2F1c2Ugc2V0dGluZyB1cCB0aGUgZXhlYyBwcnVuaW5n IGNvbnRleHQgcmVxdWlyZXMKYWNjZXNzIHRvIHRoZSBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0 YXRlLiAgQnkgZGVmZXJyaW5nIGNvbnRleHQKY3JlYXRpb24gdG8gd2hlcmUgaXQncyBhY3R1YWxs eSBuZWVkZWQsIHdlIGJyZWFrIHRoaXMgZGVwZW5kZW5jeS4KClRoZSBFeHByQ29udGV4dCB1c2Vk IGZvciBib3RoIHBydW5pbmcgcGhhc2VzIGlzIG5vdyBhIHN0YW5kYWxvbmUKY29udGV4dCwgaW5k ZXBlbmRlbnQgb2YgdGhlIHBhcmVudCBQbGFuU3RhdGUuCgpUaGlzIGNoYW5nZSB3aWxsIGJlIHVz ZWZ1bCBpbiBhIGZ1dHVyZSBjb21taXQsIHdoaWNoIHdpbGwgbW92ZSBpbml0aWFsCnBydW5pbmcg dG8gb2NjdXIgb3V0c2lkZSBFeGVjSW5pdE5vZGUoKSwgc3BlY2lmaWNhbGx5IGJlZm9yZSBpdCBp cwpjYWxsZWQgYnkgSW5pdFBsYW4oKS4KClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcwpSZXZpZXdl ZC1ieTogVG9tIExhbmUKUmV2aWV3ZWQtYnk6IFRvbWFzIFZvbmRyYQpEaXNjdXNzaW9uOiBodHRw czovL3Bvc3Rnci5lcy9tL0NBK0hpd3FGR2tNU2dlNlRnQzlLUXpkZTBvaHBBeWNMUXVWN29vaXRF RXBiS0IwT19tZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQ YXJ0aXRpb24uYyB8IDE1MSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KIHNyYy9iYWNrZW5k L3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyB8ICAgNyArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3Iv ZXhlY1BhcnRpdGlvbi5oIHwgIDEyICsrKwogc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRw cnVuZS5oIHwgICAyICsKIDQgZmlsZXMgY2hhbmdlZCwgMTIzIGluc2VydGlvbnMoKyksIDQ5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwppbmRleCA5NTBmYTMy ODljLi5mNGQ0MjVjZDQ1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFy dGl0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCkBAIC0x ODEsMTggKzE4MSwxNyBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURl c2NyaXB0aW9uKFJlbGF0aW9uIHJlbCwKIAkJCQkJCQkJCQkJCSAgaW50IG1heGZpZWxkbGVuKTsK IHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhMaXN0ICpjb2xub3MsIFJlc3Vs dFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3QgKmFkanVzdF9wYXJ0aXRpb25f Y29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAgKmF0dHJNYXApOwotc3RhdGlj IFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRl ICpwbGFuc3RhdGUsCitzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqQ3JlYXRlUGFydGl0aW9u UHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwKIAkJCQkJCQkJCQkJCQkgIFBhcnRpdGlvblBydW5l SW5mbyAqcHJ1bmVpbmZvKTsKLXN0YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQo UGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAorc3RhdGljIHZvaWQgSW5pdFBhcnRpdGlv blBydW5lQ29udGV4dChQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCisJCQkJCQkJ CQkgIFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCSAgTGlzdCAqcHJ1 bmluZ19zdGVwcywKLQkJCQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVzYywKLQkJCQkJCQkJ CSAgUGFydGl0aW9uS2V5IHBhcnRrZXksCi0JCQkJCQkJCQkgIFBsYW5TdGF0ZSAqcGxhbnN0YXRl LAotCQkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOworCQkJCQkJCQkJICBQbGFuU3Rh dGUgKnBsYW5zdGF0ZSk7CiBzdGF0aWMgdm9pZCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAo UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJCQkJCQkJCQlCaXRtYXBzZXQgKmlu aXRpYWxseV92YWxpZF9zdWJwbGFucywKIAkJCQkJCQkJCQlpbnQgbl90b3RhbF9zdWJwbGFucyk7 Ci1zdGF0aWMgdm9pZCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1 bmluZ0RhdGEgKnBydW5lZGF0YSwKK3N0YXRpYyB2b2lkIGZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCQkJCSAgIFBhcnRpdGlvblBy dW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uZWRSZWxQcnVuaW5n RGF0YSAqcHBydW5lLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJCQkJCQkJ CQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKTsKQEAgLTE4MjMsNyArMTgyMiwxNCBAQCBF eGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJRXhlY0Fzc2ln bkV4cHJDb250ZXh0KGVzdGF0ZSwgcGxhbnN0YXRlKTsKIAogCS8qIENyZWF0ZSB0aGUgd29ya2lu ZyBkYXRhIHN0cnVjdHVyZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0 aXRpb25QcnVuZVN0YXRlKHBsYW5zdGF0ZSwgcHJ1bmVpbmZvKTsKKwlwcnVuZXN0YXRlID0gQ3Jl YXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisKKwkvKgorCSAqIFN0 b3JlIFBsYW5TdGF0ZSBmb3IgdXNpbmcgaXQgdG8gaW5pdGlhbGl6ZSBleGVjIHBydW5pbmcgY29u dGV4dHMgbGF0ZXIKKwkgKiBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVy ZSB0aGV5IGFyZSBuZWVkZWQuCisJICovCisJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUp CisJCXBydW5lc3RhdGUtPnBhcmVudF9wbGFuID0gcGxhbnN0YXRlOwogCiAJLyoKIAkgKiBQZXJm b3JtIGFuIGluaXRpYWwgcGFydGl0aW9uIHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgpAQCAtMTg2 Myw4ICsxODY5LDYgQEAgRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0 YXRlLAogICogQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZQogICoJCUJ1aWxkIHRoZSBkYXRhIHN0 cnVjdHVyZSByZXF1aXJlZCBmb3IgY2FsbGluZyBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMKICAq Ci0gKiAncGxhbnN0YXRlJyBpcyB0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGV4ZWN1dGlvbiBzdGF0 ZS4KLSAqCiAgKiAncHJ1bmVpbmZvJyBpcyBhIFBhcnRpdGlvblBydW5lSW5mbyBhcyBnZW5lcmF0 ZWQgYnkKICAqIG1ha2VfcGFydGl0aW9uX3BydW5laW5mby4gIEhlcmUgd2UgYnVpbGQgYSBQYXJ0 aXRpb25QcnVuZVN0YXRlIGNvbnRhaW5pbmcgYQogICogUGFydGl0aW9uUHJ1bmluZ0RhdGEgZm9y IGVhY2ggcGFydGl0aW9uaW5nIGhpZXJhcmNoeSAoaS5lLiwgZWFjaCBzdWJsaXN0IG9mCkBAIC0x ODc1LDE2ICsxODc5LDI0IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBs YW5zdGF0ZSwKICAqIHN0b3JlZCBpbiBlYWNoIFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEgY2Fu IGJlIHJlLXVzZWQgZWFjaCB0aW1lIHdlCiAgKiByZS1ldmFsdWF0ZSB3aGljaCBwYXJ0aXRpb25z IG1hdGNoIHRoZSBwcnVuaW5nIHN0ZXBzIHByb3ZpZGVkIGluIGVhY2gKICAqIFBhcnRpdGlvbmVk UmVsUHJ1bmVJbmZvLgorICoKKyAqIE5vdGUgdGhhdCB0aGUgUGFydGl0aW9uUHJ1bmVDb250ZXh0 cyBmb3IgYm90aCBpbml0aWFsIGFuZCBleGVjIHBydW5pbmcKKyAqICh3aGljaCBhcmUgc3RvcmVk IGluIGVhY2ggUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSkgYXJlIGluaXRpYWxpemVkIGxhemls eQorICogaW4gZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKCkgd2hlbiB1c2VkIGZvciB0 aGUgZmlyc3QgdGltZS4KICAqLwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKgotQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUgKnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJ bmZvICpwcnVuZWluZm8pCitDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRl LCBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbykKIHsKLQlFU3RhdGUJICAgKmVzdGF0ZSA9 IHBsYW5zdGF0ZS0+c3RhdGU7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlp bnQJCQluX3BhcnRfaGllcmFyY2hpZXM7CiAJTGlzdENlbGwgICAqbGM7CiAJaW50CQkJaTsKLQlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBwbGFuc3RhdGUtPnBzX0V4cHJDb250ZXh0OworCisJLyoK KwkgKiBFeHByZXNzaW9uIGNvbnRleHQgdGhhdCB3aWxsIGJlIHVzZWQgYnkgcGFydGtleV9kYXR1 bV9mcm9tX2V4cHIoKSB0bworCSAqIGV2YWx1YXRlIGV4cHJlc3Npb25zIGZvciBjb21wYXJpc29u IGFnYWluc3QgcGFydGl0aW9uIGJvdW5kcy4KKwkgKi8KKwlFeHByQ29udGV4dCAqZWNvbnRleHQg PSBDcmVhdGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJLyogRm9yIGRhdGEgcmVhZGluZywgZXhl Y3V0b3IgYWx3YXlzIGluY2x1ZGVzIGRldGFjaGVkIHBhcnRpdGlvbnMgKi8KIAlpZiAoZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5ID09IE5VTEwpCkBAIC0xOTA2LDYgKzE5MTgsNyBAQCBD cmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLCBQYXJ0aXRpb25Q cnVuZUluZm8gKnBydW5laW5mbykKIAlwcnVuZXN0YXRlLT5vdGhlcl9zdWJwbGFucyA9IGJtc19j b3B5KHBydW5laW5mby0+b3RoZXJfc3VicGxhbnMpOwogCXBydW5lc3RhdGUtPmRvX2luaXRpYWxf cHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBiZWxvdyAqLwogCXBydW5lc3RhdGUtPmRvX2V4 ZWNfcHJ1bmUgPSBmYWxzZTsJLyogbWF5IGJlIHNldCBiZWxvdyAqLworCXBydW5lc3RhdGUtPnBh cmVudF9wbGFuID0gTlVMTDsKIAlwcnVuZXN0YXRlLT5udW1fcGFydHBydW5lZGF0YSA9IG5fcGFy dF9oaWVyYXJjaGllczsKIAogCS8qCkBAIC0xOTQxLDE2ICsxOTU0LDI1IEBAIENyZWF0ZVBhcnRp dGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0YSAqcHBydW5lID0gJnBydW5l ZGF0YS0+cGFydHJlbHBydW5lZGF0YVtqXTsKIAkJCVJlbGF0aW9uCXBhcnRyZWw7CiAJCQlQYXJ0 aXRpb25EZXNjIHBhcnRkZXNjOwotCQkJUGFydGl0aW9uS2V5IHBhcnRrZXk7CiAKIAkJCS8qCi0J CQkgKiBXZSBjYW4gcmVseSBvbiB0aGUgY29waWVzIG9mIHRoZSBwYXJ0aXRpb25lZCB0YWJsZSdz IHBhcnRpdGlvbgotCQkJICoga2V5IGFuZCBwYXJ0aXRpb24gZGVzY3JpcHRvciBhcHBlYXJpbmcg aW4gaXRzIHJlbGNhY2hlIGVudHJ5LAotCQkJICogYmVjYXVzZSB0aGF0IGVudHJ5IHdpbGwgYmUg aGVsZCBvcGVuIGFuZCBsb2NrZWQgZm9yIHRoZQotCQkJICogZHVyYXRpb24gb2YgdGhpcyBleGVj dXRvciBydW4uCisJCQkgKiBVc2VkIGZvciBpbml0aWFsaXppbmcgdGhlIGV4cHJlc3Npb25zIGlu IGluaXRpYWwgcHJ1bmluZyBzdGVwcy4KKwkJCSAqIEZvciBleGVjIHBydW5pbmcgc3RlcHMsIHRo ZSBwYXJlbnQgcGxhbiBub2RlJ3MgUGxhblN0YXRlJ3MKKwkJCSAqIHBzX0V4cHJDb250ZXh0IHdp bGwgYmUgdXNlZC4KIAkJCSAqLworCQkJcHBydW5lLT5lc3RhdGUgPSBlc3RhdGU7CisJCQlwcHJ1 bmUtPmVjb250ZXh0ID0gZWNvbnRleHQ7CisKKwkJCS8qIFJlbWVtYmVyIFJlbGF0aW9uIGZvciB1 c2UgaW4gSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dC4gKi8KIAkJCXBhcnRyZWwgPSBFeGVjR2V0 UmFuZ2VUYWJsZVJlbGF0aW9uKGVzdGF0ZSwgcGluZm8tPnJ0aW5kZXgpOwotCQkJcGFydGtleSA9 IFJlbGF0aW9uR2V0UGFydGl0aW9uS2V5KHBhcnRyZWwpOworCQkJcHBydW5lLT5wYXJ0cmVsID0g cGFydHJlbDsKKworCQkJLyoKKwkJCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3B5IG9mIHBhcnRp dGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uCisJCQkgKiBkZXNjcmlwdG9yIGFwcGVhcmluZyBpbiBp dHMgcmVsY2FjaGUgZW50cnksIGJlY2F1c2UgdGhhdCBlbnRyeQorCQkJICogd2lsbCBiZSBoZWxk IG9wZW4gYW5kIGxvY2tlZCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoaXMgZXhlY3V0b3IKKwkJCSAq IHJ1bi4KKwkJCSAqLwogCQkJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0 YXRlLT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAogCQkJCQkJCQkJCQkJcGFydHJlbCk7CiAKQEAg LTIwNjEsMzIgKzIwODMsMjYgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShQbGFuU3RhdGUg KnBsYW5zdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQlwcHJ1bmUtPnBy ZXNlbnRfcGFydHMgPSBibXNfY29weShwaW5mby0+cHJlc2VudF9wYXJ0cyk7CiAKIAkJCS8qCi0J CQkgKiBJbml0aWFsaXplIHBydW5pbmcgY29udGV4dHMgYXMgbmVlZGVkLiAgTm90ZSB0aGF0IHdl IG11c3Qgc2tpcAotCQkJICogZXhlY3V0aW9uLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgaW4gRVhQ TEFJTiAoR0VORVJJQ19QTEFOKSwKLQkJCSAqIHNpbmNlIHBhcmFtZXRlciB2YWx1ZXMgbWF5IGJl IG1pc3NpbmcuCisJCQkgKiBQcnVuaW5nIGNvbnRleHRzIChpbml0aWFsX2NvbnRleHQgYW5kIGV4 ZWNfY29udGV4dCkgYXJlCisJCQkgKiBpbml0aWFsaXplZCBsYXppbHkgaW4gZmluZF9tYXRjaGlu Z19zdWJwbGFuc19yZWN1cnNlKCkgd2hlbgorCQkJICogdXNlZCBmb3IgdGhlIGZpcnN0IHRpbWUu CisJCQkgKgorCQkJICogTm90ZSB0aGF0IHdlIG11c3Qgc2tpcCBleGVjdXRpb24tdGltZSBwYXJ0 aXRpb24gcHJ1bmluZyBpbgorCQkJICogRVhQTEFJTiAoR0VORVJJQ19QTEFOKSwgc2luY2UgcGFy YW1ldGVyIHZhbHVlcyBtYXkgYmUgbWlzc2luZy4KIAkJCSAqLwogCQkJcHBydW5lLT5pbml0aWFs X3BydW5pbmdfc3RlcHMgPSBwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzOworCQkJcHBydW5l LT5pbml0aWFsX2NvbnRleHQuaW5pdGlhbGl6ZWQgPSBmYWxzZTsKIAkJCWlmIChwaW5mby0+aW5p dGlhbF9wcnVuaW5nX3N0ZXBzICYmCiAJCQkJIShlY29udGV4dC0+ZWN4dF9lc3RhdGUtPmVzX3Rv cF9lZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9HRU5FUklDKSkKLQkJCXsKLQkJCQlJbml0UGFy dGl0aW9uUHJ1bmVDb250ZXh0KCZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKLQkJCQkJCQkJCQkg IHBpbmZvLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCi0JCQkJCQkJCQkJICBwYXJ0ZGVzYywgcGFy dGtleSwgcGxhbnN0YXRlLAotCQkJCQkJCQkJCSAgZWNvbnRleHQpOwogCQkJCS8qIFJlY29yZCB3 aGV0aGVyIGluaXRpYWwgcHJ1bmluZyBpcyBuZWVkZWQgYXQgYW55IGxldmVsICovCiAJCQkJcHJ1 bmVzdGF0ZS0+ZG9faW5pdGlhbF9wcnVuZSA9IHRydWU7Ci0JCQl9CisKIAkJCXBwcnVuZS0+ZXhl Y19wcnVuaW5nX3N0ZXBzID0gcGluZm8tPmV4ZWNfcHJ1bmluZ19zdGVwczsKKwkJCXBwcnVuZS0+ ZXhlY19jb250ZXh0LmluaXRpYWxpemVkID0gZmFsc2U7CiAJCQlpZiAocGluZm8tPmV4ZWNfcHJ1 bmluZ19zdGVwcyAmJgogCQkJCSEoZWNvbnRleHQtPmVjeHRfZXN0YXRlLT5lc190b3BfZWZsYWdz ICYgRVhFQ19GTEFHX0VYUExBSU5fR0VORVJJQykpCi0JCQl7Ci0JCQkJSW5pdFBhcnRpdGlvblBy dW5lQ29udGV4dCgmcHBydW5lLT5leGVjX2NvbnRleHQsCi0JCQkJCQkJCQkJICBwaW5mby0+ZXhl Y19wcnVuaW5nX3N0ZXBzLAotCQkJCQkJCQkJCSAgcGFydGRlc2MsIHBhcnRrZXksIHBsYW5zdGF0 ZSwKLQkJCQkJCQkJCQkgIGVjb250ZXh0KTsKIAkJCQkvKiBSZWNvcmQgd2hldGhlciBleGVjIHBy dW5pbmcgaXMgbmVlZGVkIGF0IGFueSBsZXZlbCAqLwogCQkJCXBydW5lc3RhdGUtPmRvX2V4ZWNf cHJ1bmUgPSB0cnVlOwotCQkJfQogCiAJCQkvKgogCQkJICogQWNjdW11bGF0ZSB0aGUgSURzIG9m IGFsbCBQQVJBTV9FWEVDIFBhcmFtcyBhZmZlY3RpbmcgdGhlCkBAIC0yMTA3LDE3ICsyMTIzLDQx IEBAIENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoUGxhblN0YXRlICpwbGFuc3RhdGUsIFBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvKQogICogSW5pdGlhbGl6ZSBhIFBhcnRpdGlvblBydW5l Q29udGV4dCBmb3IgdGhlIGdpdmVuIGxpc3Qgb2YgcHJ1bmluZyBzdGVwcy4KICAqLwogc3RhdGlj IHZvaWQKLUluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpj b250ZXh0LAorSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChQYXJ0aXRpb25lZFJlbFBydW5pbmdE YXRhICpwcHJ1bmUsCisJCQkJCQkgIFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwKIAkJ CQkJCSAgTGlzdCAqcHJ1bmluZ19zdGVwcywKLQkJCQkJCSAgUGFydGl0aW9uRGVzYyBwYXJ0ZGVz YywKLQkJCQkJCSAgUGFydGl0aW9uS2V5IHBhcnRrZXksCi0JCQkJCQkgIFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAotCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpCisJCQkJCQkgIFBsYW5TdGF0 ZSAqcGxhbnN0YXRlKQogewogCWludAkJCW5fc3RlcHM7CiAJaW50CQkJcGFydG5hdHRzOwogCUxp c3RDZWxsICAgKmxjOwogCisJLyoKKwkgKiBVc2UgdGhlIEV4cHJDb250ZXh0IHRoYXQgQ3JlYXRl UGFydGl0aW9uUHJ1bmVTdGF0ZSgpIHNob3VsZCBoYXZlCisJICogY3JlYXRlZC4KKwkgKi8KKwlF eHByQ29udGV4dCAqZWNvbnRleHQgPSBwcHJ1bmUtPmVjb250ZXh0OworCUVTdGF0ZQkgICAqZXN0 YXRlID0gcHBydW5lLT5lc3RhdGU7CisJTWVtb3J5Q29udGV4dCBvbGRjeHQ7CisJUmVsYXRpb24J cGFydHJlbCA9IHBwcnVuZS0+cGFydHJlbDsKKwlQYXJ0aXRpb25LZXkgcGFydGtleTsKKwlQYXJ0 aXRpb25EZXNjIHBhcnRkZXNjOworCisJQXNzZXJ0KGVjb250ZXh0ICE9IE5VTEwpOworCisJLyog TXVzdCBhbGxvY2F0ZSB0aGUgbmVlZGVkIHN0dWZmIGluIHRoZSBxdWVyeSBsaWZldGltZSBjb250 ZXh0LiAqLworCW9sZGN4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5 X2N4dCk7CisKKwkvKgorCSAqIFdlIGNhbiByZWx5IG9uIHRoZSBjb3BpZXMgb2YgdGhlIHBhcnRp dGlvbmVkIHRhYmxlJ3MgcGFydGl0aW9uIGtleSBhbmQKKwkgKiBwYXJ0aXRpb24gZGVzY3JpcHRv ciBhcHBlYXJpbmcgaW4gaXRzIHJlbGNhY2hlIGVudHJ5LCBiZWNhdXNlIHRoYXQKKwkgKiBlbnRy eSB3aWxsIGJlIGhlbGQgb3BlbiBhbmQgbG9ja2VkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBl eGVjdXRvcgorCSAqIHJ1bi4KKwkgKi8KKwlwYXJ0a2V5ID0gUmVsYXRpb25HZXRQYXJ0aXRpb25L ZXkocGFydHJlbCk7CisJcGFydGRlc2MgPSBQYXJ0aXRpb25EaXJlY3RvcnlMb29rdXAoZXN0YXRl LT5lc19wYXJ0aXRpb25fZGlyZWN0b3J5LAorCQkJCQkJCQkJCXBhcnRyZWwpOworCiAJbl9zdGVw cyA9IGxpc3RfbGVuZ3RoKHBydW5pbmdfc3RlcHMpOwogCiAJY29udGV4dC0+c3RyYXRlZ3kgPSBw YXJ0a2V5LT5zdHJhdGVneTsKQEAgLTIxODUsNiArMjIyNSw5IEBAIEluaXRQYXJ0aXRpb25QcnVu ZUNvbnRleHQoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkJfQogCQl9CiAJfQor CisJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGN4dCk7CisJY29udGV4dC0+aW5pdGlhbGl6ZWQg PSB0cnVlOwogfQogCiAvKgpAQCAtMjM0OCwxMiArMjM5MSwxNiBAQCBFeGVjRmluZE1hdGNoaW5n U3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJICogcmVjdXJzaW5n IHRvIG90aGVyIChsb3dlci1sZXZlbCkgcGFyZW50cyBhcyBuZWVkZWQuCiAJCSAqLwogCQlwcHJ1 bmUgPSAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhWzBdOwotCQlmaW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUsCisJCWZpbmRf bWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShwcnVuZXN0YXRlLT5wYXJlbnRfcGxhbiwKKwkJCQkJ CQkJCSAgIHBydW5lZGF0YSwgcHBydW5lLCBpbml0aWFsX3BydW5lLAogCQkJCQkJCQkJICAgJnJl c3VsdCk7CiAKIAkJLyogRXhwcmVzc2lvbiBldmFsIG1heSBoYXZlIHVzZWQgc3BhY2UgaW4gRXhw ckNvbnRleHQgdG9vICovCi0JCWlmIChwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19zdGVwcykKKwkJaWYg KHBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVkKQorCQl7CisJCQlBc3NlcnQocHBydW5l LT5leGVjX3BydW5pbmdfc3RlcHMgIT0gTklMKTsKIAkJCVJlc2V0RXhwckNvbnRleHQocHBydW5l LT5leGVjX2NvbnRleHQuZXhwcmNvbnRleHQpOworCQl9CiAJfQogCiAJLyogQWRkIGluIGFueSBz dWJwbGFucyB0aGF0IHBhcnRpdGlvbiBwcnVuaW5nIGRpZG4ndCBhY2NvdW50IGZvciAqLwpAQCAt MjM3Niw3ICsyNDIzLDggQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlvblBydW5l U3RhdGUgKnBydW5lc3RhdGUsCiAgKiBBZGRzIHZhbGlkIChub24tcHJ1bmFibGUpIHN1YnBsYW4g SURzIHRvICp2YWxpZHN1YnBsYW5zCiAgKi8KIHN0YXRpYyB2b2lkCi1maW5kX21hdGNoaW5nX3N1 YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKK2ZpbmRfbWF0 Y2hpbmdfc3VicGxhbnNfcmVjdXJzZShQbGFuU3RhdGUgKnBhcmVudF9wbGFuLAorCQkJCQkJCSAg IFBhcnRpdGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQkJCQkJICAgUGFydGl0aW9uZWRS ZWxQcnVuaW5nRGF0YSAqcHBydW5lLAogCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKIAkJ CQkJCQkgICBCaXRtYXBzZXQgKip2YWxpZHN1YnBsYW5zKQpAQCAtMjM5MywxMSArMjQ0MSwyNyBA QCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBy dW5lZGF0YSwKIAkgKiBsZXZlbC4KIAkgKi8KIAlpZiAoaW5pdGlhbF9wcnVuZSAmJiBwcHJ1bmUt PmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwl7CisJCS8qIEluaXRpYWxpemUgaW5pdGlhbF9jb250 ZXh0IGlmIG5vdCBhbHJlYWR5IGRvbmUuICovCisJCWlmICh1bmxpa2VseSghcHBydW5lLT5pbml0 aWFsX2NvbnRleHQuaW5pdGlhbGl6ZWQpKQorCQkJSW5pdFBhcnRpdGlvblBydW5lQ29udGV4dChw cHJ1bmUsCisJCQkJCQkJCQkgICZwcHJ1bmUtPmluaXRpYWxfY29udGV4dCwKKwkJCQkJCQkJCSAg cHBydW5lLT5pbml0aWFsX3BydW5pbmdfc3RlcHMsCisJCQkJCQkJCQkgIHBhcmVudF9wbGFuKTsK IAkJcGFydHNldCA9IGdldF9tYXRjaGluZ19wYXJ0aXRpb25zKCZwcHJ1bmUtPmluaXRpYWxfY29u dGV4dCwKIAkJCQkJCQkJCQkgIHBwcnVuZS0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzKTsKKwl9CiAJ ZWxzZSBpZiAoIWluaXRpYWxfcHJ1bmUgJiYgcHBydW5lLT5leGVjX3BydW5pbmdfc3RlcHMpCisJ eworCQkvKiBJbml0aWFsaXplIGV4ZWNfY29udGV4dCBpZiBub3QgYWxyZWFkeSBkb25lLiAqLwor CQlpZiAodW5saWtlbHkoIXBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVkKSkKKwkJCUlu aXRQYXJ0aXRpb25QcnVuZUNvbnRleHQocHBydW5lLAorCQkJCQkJCQkJICAmcHBydW5lLT5leGVj X2NvbnRleHQsCisJCQkJCQkJCQkgIHBwcnVuZS0+ZXhlY19wcnVuaW5nX3N0ZXBzLAorCQkJCQkJ CQkJICBwYXJlbnRfcGxhbik7CiAJCXBhcnRzZXQgPSBnZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygm cHBydW5lLT5leGVjX2NvbnRleHQsCiAJCQkJCQkJCQkJICBwcHJ1bmUtPmV4ZWNfcHJ1bmluZ19z dGVwcyk7CisJfQogCWVsc2UKIAkJcGFydHNldCA9IHBwcnVuZS0+cHJlc2VudF9wYXJ0czsKIApA QCAtMjQxMyw3ICsyNDc3LDggQEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBhcnRp dGlvblBydW5pbmdEYXRhICpwcnVuZWRhdGEsCiAJCQlpbnQJCQlwYXJ0aWR4ID0gcHBydW5lLT5z dWJwYXJ0X21hcFtpXTsKIAogCQkJaWYgKHBhcnRpZHggPj0gMCkKLQkJCQlmaW5kX21hdGNoaW5n X3N1YnBsYW5zX3JlY3Vyc2UocHJ1bmVkYXRhLAorCQkJCWZpbmRfbWF0Y2hpbmdfc3VicGxhbnNf cmVjdXJzZShwYXJlbnRfcGxhbiwKKwkJCQkJCQkJCQkJICAgcHJ1bmVkYXRhLAogCQkJCQkJCQkJ CQkgICAmcHJ1bmVkYXRhLT5wYXJ0cmVscHJ1bmVkYXRhW3BhcnRpZHhdLAogCQkJCQkJCQkJCQkg ICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zKTsKIAkJCWVsc2UKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlv bmluZy9wYXJ0cHJ1bmUuYwppbmRleCBjYTU0NjcxMDRkLi5hZTFkNjlmOTZjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQv cGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC0zNzgzLDEzICszNzgzLDggQEAgcGFydGtleV9k YXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVDb250ZXh0ICpjb250ZXh0LAogCQkvKgogCQkg KiBXZSBzaG91bGQgbmV2ZXIgc2VlIGEgbm9uLUNvbnN0IGluIGEgc3RlcCB1bmxlc3MgdGhlIGNh bGxlciBoYXMKIAkJICogcGFzc2VkIGEgdmFsaWQgRXhwckNvbnRleHQuCi0JCSAqCi0JCSAqIFdo ZW4gY29udGV4dC0+cGxhbnN0YXRlIGlzIHZhbGlkLCBjb250ZXh0LT5leHByY29udGV4dCBpcyBz YW1lIGFzCi0JCSAqIGNvbnRleHQtPnBsYW5zdGF0ZS0+cHNfRXhwckNvbnRleHQuCiAJCSAqLwot CQlBc3NlcnQoY29udGV4dC0+cGxhbnN0YXRlICE9IE5VTEwgfHwgY29udGV4dC0+ZXhwcmNvbnRl eHQgIT0gTlVMTCk7Ci0JCUFzc2VydChjb250ZXh0LT5wbGFuc3RhdGUgPT0gTlVMTCB8fAotCQkJ ICAgKGNvbnRleHQtPmV4cHJjb250ZXh0ID09IGNvbnRleHQtPnBsYW5zdGF0ZS0+cHNfRXhwckNv bnRleHQpKTsKKwkJQXNzZXJ0KGNvbnRleHQtPmV4cHJjb250ZXh0ICE9IE5VTEwpOwogCiAJCWV4 cHJzdGF0ZSA9IGNvbnRleHQtPmV4cHJzdGF0ZXNbc3RhdGVpZHhdOwogCQllY3R4ID0gY29udGV4 dC0+ZXhwcmNvbnRleHQ7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy dGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKaW5kZXggMzNk OTIyZmU4ZC4uN2U0NzBjODJmNiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaApA QCAtNDIsNiArNDIsMTAgQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFudXBUdXBsZVJvdXRpbmcoTW9k aWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvIChzZWUg cGxhbm5vZGVzLmgpOyB0aG91Z2ggbm90ZSB0aGF0IGhlcmUsCiAgKiBzdWJwYXJ0X21hcCBjb250 YWlucyBpbmRleGVzIGludG8gUGFydGl0aW9uUHJ1bmluZ0RhdGEucGFydHJlbHBydW5lZGF0YVtd LgogICoKKyAqIGVzdGF0ZQkJCQkJCVRoZSBFU3RhdGUgZm9yIHRoZSBxdWVyeSBkb2luZyBydW4t dGltZSBwcnVuaW5nCisgKiBwYXJ0cmVsCQkJCQkJUGFydGl0aW9uZWQgdGFibGUgUmVsYXRpb247 IG9idGFpbmVkIGJ5CisgKiAJCQkJCQkJCUV4ZWNHZXRSYW5nZVRhYmxlUmVsYXRpb24oZXN0YXRl LCBydGkpLCB3aGVyZQorICoJCQkJCQkJCXJ0aSBpcyBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby5y dGluZGV4LgogICogbnBhcnRzCQkJCQkJTGVuZ3RoIG9mIHN1YnBsYW5fbWFwW10gYW5kIHN1YnBh cnRfbWFwW10uCiAgKiBzdWJwbGFuX21hcAkJCQkJU3VicGxhbiBpbmRleCBieSBwYXJ0aXRpb24g aW5kZXgsIG9yIC0xLgogICogc3VicGFydF9tYXAJCQkJCVN1YnBhcnQgaW5kZXggYnkgcGFydGl0 aW9uIGluZGV4LCBvciAtMS4KQEAgLTUxLDYgKzU1LDggQEAgZXh0ZXJuIHZvaWQgRXhlY0NsZWFu dXBUdXBsZVJvdXRpbmcoTW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKICAqCQkJCQkJCQlwZXJm b3JtIGV4ZWN1dG9yIHN0YXJ0dXAgcHJ1bmluZy4KICAqIGV4ZWNfcHJ1bmluZ19zdGVwcwkJCUxp c3Qgb2YgUGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCiAgKgkJCQkJCQkJcGVyZm9ybSBwZXIt c2NhbiBwcnVuaW5nLgorICogZWNvbnRleHQJCQkJCQlFeHByQ29udGV4dCB0byB1c2UgZm9yIGV2 YWx1YXRpbmcgcGFydGl0aW9uCisgKgkJCQkJCQkJa2V5CiAgKiBpbml0aWFsX2NvbnRleHQJCQkJ SWYgaW5pdGlhbF9wcnVuaW5nX3N0ZXBzIGlzbid0IE5JTCwgY29udGFpbnMKICAqCQkJCQkJCQl0 aGUgZGV0YWlscyBuZWVkZWQgdG8gZXhlY3V0ZSB0aG9zZSBzdGVwcy4KICAqIGV4ZWNfY29udGV4 dAkJCQkJSWYgZXhlY19wcnVuaW5nX3N0ZXBzIGlzbid0IE5JTCwgY29udGFpbnMKQEAgLTU4LDEy ICs2NCwxNSBAQCBleHRlcm4gdm9pZCBFeGVjQ2xlYW51cFR1cGxlUm91dGluZyhNb2RpZnlUYWJs ZVN0YXRlICptdHN0YXRlLAogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25lZFJlbFBydW5p bmdEYXRhCiB7CisJRVN0YXRlCSAgICplc3RhdGU7CisJUmVsYXRpb24JcGFydHJlbDsKIAlpbnQJ CQlucGFydHM7CiAJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7 CiAJQml0bWFwc2V0ICAqcHJlc2VudF9wYXJ0czsKIAlMaXN0CSAgICppbml0aWFsX3BydW5pbmdf c3RlcHM7CiAJTGlzdAkgICAqZXhlY19wcnVuaW5nX3N0ZXBzOworCUV4cHJDb250ZXh0ICplY29u dGV4dDsKIAlQYXJ0aXRpb25QcnVuZUNvbnRleHQgaW5pdGlhbF9jb250ZXh0OwogCVBhcnRpdGlv blBydW5lQ29udGV4dCBleGVjX2NvbnRleHQ7CiB9IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGE7 CkBAIC0xMDUsNiArMTE0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmluZ0RhdGEK ICAqCQkJCQkJc3RhcnR1cCAoYXQgYW55IGhpZXJhcmNoeSBsZXZlbCkuCiAgKiBkb19leGVjX3By dW5lCQl0cnVlIGlmIHBydW5pbmcgc2hvdWxkIGJlIHBlcmZvcm1lZCBkdXJpbmcKICAqCQkJCQkJ ZXhlY3V0b3IgcnVuIChhdCBhbnkgaGllcmFyY2h5IGxldmVsKS4KKyAqIHBhcmVudF9wbGFuCQkJ UGFyZW50IHBsYW4gbm9kZSdzIFBsYW5TdGF0ZSB1c2VkIHRvIGluaXRpYWxpemUKKyAqCQkJCQkJ ZXhwcmVzc2lvbiBjb250YWluZWQgaW4gImV4ZWMiIHBydW5pbmcgc3RlcHMuCiAgKiBudW1fcGFy dHBydW5lZGF0YQlOdW1iZXIgb2YgaXRlbXMgaW4gInBhcnRwcnVuZWRhdGEiIGFycmF5LgogICog cGFydHBydW5lZGF0YQkJQXJyYXkgb2YgUGFydGl0aW9uUHJ1bmluZ0RhdGEgcG9pbnRlcnMgZm9y IHRoZSBwbGFuJ3MKICAqCQkJCQkJcGFydGl0aW9uZWQgcmVsYXRpb24ocyksIG9uZSBmb3IgZWFj aCBwYXJ0aXRpb25pbmcKQEAgLTExNyw2ICsxMjgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJTWVtb3J5Q29udGV4dCBwcnVuZV9jb250ZXh0OwogCWJvb2wJCWRvX2lu aXRpYWxfcHJ1bmU7CiAJYm9vbAkJZG9fZXhlY19wcnVuZTsKKwlQbGFuU3RhdGUgICpwYXJlbnRf cGxhbjsKIAlpbnQJCQludW1fcGFydHBydW5lZGF0YTsKIAlQYXJ0aXRpb25QcnVuaW5nRGF0YSAq cGFydHBydW5lZGF0YVtGTEVYSUJMRV9BUlJBWV9NRU1CRVJdOwogfSBQYXJ0aXRpb25QcnVuZVN0 YXRlOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oIGIv c3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCmluZGV4IDY5MjJlMDQ0MzAuLjBj YmNiNGZiNGUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUu aAorKysgYi9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKQEAgLTI2LDYgKzI2 LDcgQEAgc3RydWN0IFJlbE9wdEluZm87CiAgKgkJU3RvcmVzIGluZm9ybWF0aW9uIG5lZWRlZCBh dCBydW50aW1lIGZvciBwcnVuaW5nIGNvbXB1dGF0aW9ucwogICoJCXJlbGF0ZWQgdG8gYSBzaW5n bGUgcGFydGl0aW9uZWQgdGFibGUuCiAgKgorICogaW5pdGlhbGl6ZWQJCUhhcyB0aGUgaW5mb3Jt YXRpb24gaW4gdGhpcyBzdHJ1Y3QgYmVlbiBpbml0aWFsaXplZD8KICAqIHN0cmF0ZWd5CQkJUGFy dGl0aW9uIHN0cmF0ZWd5LCBlLmcuIExJU1QsIFJBTkdFLCBIQVNILgogICogcGFydG5hdHRzCQlO dW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgcGFydGl0aW9uIGtleS4KICAqIG5wYXJ0cwkJCU51bWJl ciBvZiBwYXJ0aXRpb25zIGluIHRoaXMgcGFydGl0aW9uZWQgdGFibGUuCkBAIC00OCw2ICs0OSw3 IEBAIHN0cnVjdCBSZWxPcHRJbmZvOwogICovCiB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRpb25QcnVu ZUNvbnRleHQKIHsKKwlib29sCQlpbml0aWFsaXplZDsKIAljaGFyCQlzdHJhdGVneTsKIAlpbnQJ CQlwYXJ0bmF0dHM7CiAJaW50CQkJbnBhcnRzOwotLSAKMi40My4wCgo= --000000000000f3ab0c06290e160f Content-Type: application/octet-stream; name="v59-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Disposition: attachment; filename="v59-0001-Move-PartitionPruneInfo-out-of-plan-nodes-into-P.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l0yqtv0 RnJvbSBkYTUxNmQ5YWZiYWQxNzkwNGY1Mzc3ZTdiMWNhOWE1YzAzMDA4MzdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjoyOSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU5 IDEvNV0gTW92ZSBQYXJ0aXRpb25QcnVuZUluZm8gb3V0IG9mIHBsYW4gbm9kZXMgaW50bwogUGxh bm5lZFN0bXQKClRoaXMgY2hhbmdlIG1vdmVzIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIGluZGl2 aWR1YWwgcGxhbiBub2RlcyB0bwpQbGFubmVkU3RtdCwgZW5hYmxpbmcgcnVudGltZSBpbml0aWFs IHBydW5pbmcgdG8gYmUgcGVyZm9ybWVkIGFjcm9zcwp0aGUgZW50aXJlIHBsYW4gdHJlZSB3aXRo b3V0IHRyYXZlcnNpbmcgaXQgdG8gZmluZCBub2RlcyBjb250YWluaW5nClBhcnRpdGlvblBydW5l SW5mb3MuCgpUaGUgUGFydGl0aW9uUHJ1bmVJbmZvIHBvaW50ZXIgZmllbGRzIGluIEFwcGVuZCBh bmQgTWVyZ2VBcHBlbmQgbm9kZXMKaGF2ZSBiZWVuIHJlcGxhY2VkIHdpdGggYW4gaW50ZWdlciBp bmRleCB0aGF0IHBvaW50cyB0byBhIGxpc3Qgb2YKUGFydGl0aW9uUHJ1bmVJbmZvcyB3aXRoaW4g UGxhbm5lZFN0bXQsIHdoaWNoIG5vdyBob2xkcyB0aGUKUGFydGl0aW9uUHJ1bmVJbmZvcyBmb3Ig YWxsIHN1YnF1ZXJpZXMuCgpBIGJpdG1hcHNldCBmaWVsZCBoYXMgYmVlbiBhZGRlZCB0byBQYXJ0 aXRpb25QcnVuZUluZm8gdG8gc3RvcmUgdGhlIFJUCmluZGV4ZXMgdGhhdCBjb3JyZXNwb25kIHRv IHRoZSBhcHByZWxpZHMgZmllbGQgaW4gQXBwZW5kIG9yCk1lcmdlQXBwZW5kLiBUaGlzIGVuc3Vy ZXMgdGhhdCB0aGUgZXhlY3V0aW9uIHBydW5pbmcgbG9naWMKY3Jvc3MtY2hlY2tzIHRoYXQgaXQg b3BlcmF0ZXMgb24gdGhlIGNvcnJlY3QgcGxhbiBub2RlLgoKRHVwbGljYXRlZCBjb2RlIGluIHNl dF9hcHBlbmRfcmVmZXJlbmNlcygpIGFuZApzZXRfbWVyZ2VhcHBlbmRfcmVmZXJlbmNlcygpIGhh cyBiZWVuIG1vdmVkIHRvIGEgbmV3IGZ1bmN0aW9uLApyZWdpc3Rlcl9wcnVuZWluZm8oKSwgd2hp Y2ggYm90aCB1cGRhdGVzIHRoZSBSVCBpbmRleGVzIGJ5IGFkZGluZwpydG9mZnNldCBhbmQgYWRk cyB0aGUgUGFydGl0aW9uUHJ1bmVJbmZvIHRvIHRoZSBnbG9iYWwgbGlzdCBpbgpQbGFubmVyR2xv YmFsLgoKUmV2aWV3ZWQtYnk6IEFsdmFybyBIZXJyZXJhClJldmlld2VkLWJ5OiBSb2JlcnQgSGFh cwpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBPX21nQG1h aWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAg IHwgIDEgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgICAgIHwgIDEgKwog c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jICAgIHwgMTcgKysrKy0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jICAgICAgICB8ICAxICsKIHNyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVBcHBlbmQuYyAgICAgICB8ICA1ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9u b2RlTWVyZ2VBcHBlbmQuYyAgfCAgNSArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3Jl YXRlcGxhbi5jIHwgMjMgKysrLS0tLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5l ci5jICAgIHwgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jICAgIHwg ODUgKysrKysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3Bh cnRwcnVuZS5jICAgIHwgMTkgKysrKy0tCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmggICAgfCAgMyArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAg IHwgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgIHwgIDYgKysK IHNyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oICAgICAgICAgICB8IDE2ICsrKy0tCiBzcmMv aW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmggICAgfCAgOCArLS0KIDE1IGZpbGVzIGNo YW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y01haW4uYwppbmRleCA1Y2E4NTZmZDI3Li5iNDBmZTM4MTc4IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTg1Niw2ICs4NTYsNyBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIAlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFu bmVkc3RtdC0+cGVybUluZm9zKTsKIAogCWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBwbGFubmVk c3RtdDsKKwllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBy dW5lSW5mb3M7CiAKIAkvKgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBm cm9tIHRoZSBQbGFuUm93TWFyayhzKSwgaWYgYW55LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFyYWxs ZWwuYwppbmRleCBiZmIzNDE5ZWZiLi5iMDFhMmZkZmRkIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjUGFyYWxsZWwuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj UGFyYWxsZWwuYwpAQCAtMTgxLDYgKzE4MSw3IEBAIEV4ZWNTZXJpYWxpemVQbGFuKFBsYW4gKnBs YW4sIEVTdGF0ZSAqZXN0YXRlKQogCXBzdG10LT5kZXBlbmRzT25Sb2xlID0gZmFsc2U7CiAJcHN0 bXQtPnBhcmFsbGVsTW9kZU5lZWRlZCA9IGZhbHNlOwogCXBzdG10LT5wbGFuVHJlZSA9IHBsYW47 CisJcHN0bXQtPnBhcnRQcnVuZUluZm9zID0gZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zOwog CXBzdG10LT5ydGFibGUgPSBlc3RhdGUtPmVzX3JhbmdlX3RhYmxlOwogCXBzdG10LT5wZXJtSW5m b3MgPSBlc3RhdGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlwc3RtdC0+cmVzdWx0UmVsYXRpb25zID0g TklMOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDc2NTE4ODYyMjkuLjk1 MGZhMzI4OWMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24u YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE3ODYsNiAr MTc4Niw5IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3Ms IEF0dHJNYXAgKmF0dHJNYXApCiAgKgkJSW5pdGlhbGl6ZSBkYXRhIHN0cnVjdHVyZSBuZWVkZWQg Zm9yIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGFuZAogICoJCWRvIGluaXRpYWwgcHJ1bmlu ZyBpZiBuZWVkZWQKICAqCisgKiAncmVsaWRzJyBpZGVudGlmaWVzIHRoZSByZWxhdGlvbiB0byB3 aGljaCBib3RoIHRoZSBwYXJlbnQgcGxhbiBhbmQgdGhlCisgKiBQYXJ0aXRpb25QcnVuZUluZm8g Z2l2ZW4gYnkgJ3BhcnRfcHJ1bmVfaW5kZXgnIGJlbG9uZy4KKyAqCiAgKiBPbiByZXR1cm4sICpp bml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVzIG9m CiAgKiBjaGlsZCBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQgYWxvbmcgd2l0aCB0 aGUgcGFyZW50IHBsYW4gbm9kZS4KICAqIEluaXRpYWwgcHJ1bmluZyBpcyBwZXJmb3JtZWQgaGVy ZSBpZiBuZWVkZWQgYW5kIGluIHRoYXQgY2FzZSBvbmx5IHRoZQpAQCAtMTc5OCwxMSArMTgwMSwy MyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9zLCBBdHRy TWFwICphdHRyTWFwKQogUGFydGl0aW9uUHJ1bmVTdGF0ZSAqCiBFeGVjSW5pdFBhcnRpdGlvblBy dW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMs Ci0JCQkJCQkgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkgaW50IHBhcnRf cHJ1bmVfaW5kZXgsCisJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMsCiAJCQkJCQkgQml0bWFwc2V0 ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKQogewogCVBhcnRpdGlvblBydW5lU3RhdGUgKnBy dW5lc3RhdGU7CiAJRVN0YXRlCSAgICplc3RhdGUgPSBwbGFuc3RhdGUtPnN0YXRlOworCVBhcnRp dGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvOworCisJLyogT2J0YWluIHRoZSBwcnVuZWluZm8gd2Ug bmVlZC4gKi8KKwlwcnVuZWluZm8gPSBsaXN0X250aF9ub2RlKFBhcnRpdGlvblBydW5lSW5mbywg ZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9zLAorCQkJCQkJCSAgcGFydF9wcnVuZV9pbmRleCk7 CisKKwkvKiBJdHMgcmVsaWRzIGJldHRlciBtYXRjaCB0aGUgcGxhbiBub2RlJ3Mgb3IgdGhlIHBs YW5uZXIgbWVzc2VkIHVwLiAqLworCWlmICghYm1zX2VxdWFsKHJlbGlkcywgcHJ1bmVpbmZvLT5y ZWxpZHMpKQorCQllbG9nKEVSUk9SLCAid3JvbmcgcHJ1bmVpbmZvIHdpdGggcmVsaWRzPSVzIGZv dW5kIGF0IHBhcnRfcHJ1bmVfaW5kZXg9JWQgY29udGFpbmVkIGluIHBsYW4gbm9kZSB3aXRoIHJl bGlkcz0lcyIsCisJCQkgYm1zVG9TdHJpbmcocHJ1bmVpbmZvLT5yZWxpZHMpLCBwYXJ0X3BydW5l X2luZGV4LAorCQkJIGJtc1RvU3RyaW5nKHJlbGlkcykpOwogCiAJLyogV2UgbWF5IG5lZWQgYW4g ZXhwcmVzc2lvbiBjb250ZXh0IHRvIGV2YWx1YXRlIHBhcnRpdGlvbiBleHBycyAqLwogCUV4ZWNB c3NpZ25FeHByQ29udGV4dChlc3RhdGUsIHBsYW5zdGF0ZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IDc0MGU4ZmIxNDguLmJjOTA1YTBjZGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNVdGlscy5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCkBAIC0xMTgsNiArMTE4LDcgQEAgQ3JlYXRlRXhlY3V0b3JTdGF0ZSh2b2lkKQogCWVzdGF0 ZS0+ZXNfcm93bWFya3MgPSBOVUxMOwogCWVzdGF0ZS0+ZXNfcnRlcGVybWluZm9zID0gTklMOwog CWVzdGF0ZS0+ZXNfcGxhbm5lZHN0bXQgPSBOVUxMOworCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9p bmZvcyA9IE5JTDsKIAogCWVzdGF0ZS0+ZXNfanVua0ZpbHRlciA9IE5VTEw7CiAKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL25vZGVBcHBlbmQuYwppbmRleCBjYTBmNTRkNjc2Li5kZTdlYmFiNWMyIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3Ivbm9kZUFwcGVuZC5jCkBAIC0xMzQsNyArMTM0LDcgQEAgRXhlY0luaXRBcHBlbmQoQXBw ZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAlhcHBlbmRzdGF0ZS0+YXNf YmVndW4gPSBmYWxzZTsKIAogCS8qIElmIHJ1bi10aW1lIHBhcnRpdGlvbiBwcnVuaW5nIGlzIGVu YWJsZWQsIHRoZW4gc2V0IHRoYXQgdXAgbm93ICovCi0JaWYgKG5vZGUtPnBhcnRfcHJ1bmVfaW5m byAhPSBOVUxMKQorCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZGV4ID49IDApCiAJewogCQlQYXJ0 aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCkBAIC0xNDUsNyArMTQ1LDggQEAgRXhlY0lu aXRBcHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICov CiAJCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0YXRlLT5w cywKIAkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0JCQkJCQkJ CQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmZvLAorCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXgsCisJCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAogCQkJCQkJCQkJCQkgICZ2 YWxpZHN1YnBsYW5zKTsKIAkJYXBwZW5kc3RhdGUtPmFzX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0 ZTsKIAkJbnBsYW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwppbmRleCBlMWI5Yjk4NGE3Li4zZWQ5MTgwOGRkIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VBcHBlbmQuYwpAQCAtODIsNyArODIsNyBAQCBF eGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50 IGVmbGFncykKIAltZXJnZXN0YXRlLT5wcy5FeGVjUHJvY05vZGUgPSBFeGVjTWVyZ2VBcHBlbmQ7 CiAKIAkvKiBJZiBydW4tdGltZSBwYXJ0aXRpb24gcHJ1bmluZyBpcyBlbmFibGVkLCB0aGVuIHNl dCB0aGF0IHVwIG5vdyAqLwotCWlmIChub2RlLT5wYXJ0X3BydW5lX2luZm8gIT0gTlVMTCkKKwlp ZiAobm9kZS0+cGFydF9wcnVuZV9pbmRleCA+PSAwKQogCXsKIAkJUGFydGl0aW9uUHJ1bmVTdGF0 ZSAqcHJ1bmVzdGF0ZTsKIApAQCAtOTMsNyArOTMsOCBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1l cmdlQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICovCiAJCXBy dW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUtPnBzLAogCQkJ CQkJCQkJCQkgIGxpc3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJCQkJCQkgIG5v ZGUtPnBhcnRfcHJ1bmVfaW5mbywKKwkJCQkJCQkJCQkJICBub2RlLT5wYXJ0X3BydW5lX2luZGV4 LAorCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKIAkJCQkJCQkJCQkJICAmdmFsaWRzdWJw bGFucyk7CiAJCW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBs YW5zID0gYm1zX251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jCmluZGV4IDE3OGM1NzJiMDIuLjhmMjA5YzJkMmYgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBsYW4uYworKysgYi9zcmMvYmFj a2VuZC9vcHRpbWl6ZXIvcGxhbi9jcmVhdGVwbGFuLmMKQEAgLTEyMjcsNyArMTIyNyw2IEBAIGNy ZWF0ZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRo LCBpbnQgZmxhZ3MpCiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJaW50CQkJbmFzeW5jcGxhbnMg PSAwOwogCVJlbE9wdEluZm8gKnJlbCA9IGJlc3RfcGF0aC0+cGF0aC5wYXJlbnQ7Ci0JUGFydGl0 aW9uUHJ1bmVJbmZvICpwYXJ0cHJ1bmVpbmZvID0gTlVMTDsKIAlpbnQJCQlub2RlbnVtc29ydGtl eXMgPSAwOwogCUF0dHJOdW1iZXIgKm5vZGVTb3J0Q29sSWR4ID0gTlVMTDsKIAlPaWQJCSAgICpu b2RlU29ydE9wZXJhdG9ycyA9IE5VTEw7CkBAIC0xMzc4LDYgKzEzNzcsOSBAQCBjcmVhdGVfYXBw ZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIEFwcGVuZFBhdGggKmJlc3RfcGF0aCwgaW50IGZs YWdzKQogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1YnBsYW4pOwogCX0KIAorCS8q IFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2FuIHVzZSB0byBydW4tdGltZSBw cnVuZSAqLworCXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsKKwogCS8qCiAJICogSWYgYW55 IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVyZm9ybSBmdXJ0aGVyIHBhcnRp dGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdhdGhlciBpbmZvcm1hdGlvbiBu ZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNDAxLDE2ICsxNDAzLDE0IEBAIGNyZWF0ZV9h cHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgQXBwZW5kUGF0aCAqYmVzdF9wYXRoLCBpbnQg ZmxhZ3MpCiAJCX0KIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWluZm8g PQotCQkJCW1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCi0JCQkJCQkJCQkJIGJl c3RfcGF0aC0+c3VicGF0aHMsCi0JCQkJCQkJCQkJIHBydW5lcXVhbCk7CisJCQlwbGFuLT5wYXJ0 X3BydW5lX2luZGV4ID0gbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvKHJvb3QsIHJlbCwKKwkJCQkJ CQkJCQkJCQkJCSAgYmVzdF9wYXRoLT5zdWJwYXRocywKKwkJCQkJCQkJCQkJCQkJCSAgcHJ1bmVx dWFsKTsKIAl9CiAKIAlwbGFuLT5hcHBlbmRwbGFucyA9IHN1YnBsYW5zOwogCXBsYW4tPm5hc3lu Y3BsYW5zID0gbmFzeW5jcGxhbnM7CiAJcGxhbi0+Zmlyc3RfcGFydGlhbF9wbGFuID0gYmVzdF9w YXRoLT5maXJzdF9wYXJ0aWFsX3BhdGg7Ci0JcGxhbi0+cGFydF9wcnVuZV9pbmZvID0gcGFydHBy dW5laW5mbzsKIAogCWNvcHlfZ2VuZXJpY19wYXRoX2luZm8oJnBsYW4tPnBsYW4sIChQYXRoICop IGJlc3RfcGF0aCk7CiAKQEAgLTE0NDksNyArMTQ0OSw2IEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRf cGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVyZ2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJTGlz dAkgICAqc3VicGxhbnMgPSBOSUw7CiAJTGlzdENlbGwgICAqc3VicGF0aHM7CiAJUmVsT3B0SW5m byAqcmVsID0gYmVzdF9wYXRoLT5wYXRoLnBhcmVudDsKLQlQYXJ0aXRpb25QcnVuZUluZm8gKnBh cnRwcnVuZWluZm8gPSBOVUxMOwogCiAJLyoKIAkgKiBXZSBkb24ndCBoYXZlIHRoZSBhY3R1YWwg Y3JlYXRpb24gb2YgdGhlIE1lcmdlQXBwZW5kIG5vZGUgc3BsaXQgb3V0CkBAIC0xNTQyLDYgKzE1 NDEsOSBAQCBjcmVhdGVfbWVyZ2VfYXBwZW5kX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIE1lcmdl QXBwZW5kUGF0aCAqYmVzdF9wYXRoLAogCQlzdWJwbGFucyA9IGxhcHBlbmQoc3VicGxhbnMsIHN1 YnBsYW4pOwogCX0KIAorCS8qIFNldCBiZWxvdyBpZiB3ZSBmaW5kIHF1YWxzIHRoYXQgd2UgY2Fu IHVzZSB0byBydW4tdGltZSBwcnVuZSAqLworCW5vZGUtPnBhcnRfcHJ1bmVfaW5kZXggPSAtMTsK KwogCS8qCiAJICogSWYgYW55IHF1YWxzIGV4aXN0LCB0aGV5IG1heSBiZSB1c2VmdWwgdG8gcGVy Zm9ybSBmdXJ0aGVyIHBhcnRpdGlvbgogCSAqIHBydW5pbmcgZHVyaW5nIGV4ZWN1dGlvbi4gIEdh dGhlciBpbmZvcm1hdGlvbiBuZWVkZWQgYnkgdGhlIGV4ZWN1dG9yIHRvCkBAIC0xNTU3LDEzICsx NTU5LDEyIEBAIGNyZWF0ZV9tZXJnZV9hcHBlbmRfcGxhbihQbGFubmVySW5mbyAqcm9vdCwgTWVy Z2VBcHBlbmRQYXRoICpiZXN0X3BhdGgsCiAJCUFzc2VydChiZXN0X3BhdGgtPnBhdGgucGFyYW1f aW5mbyA9PSBOVUxMKTsKIAogCQlpZiAocHJ1bmVxdWFsICE9IE5JTCkKLQkJCXBhcnRwcnVuZWlu Zm8gPSBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8ocm9vdCwgcmVsLAotCQkJCQkJCQkJCQkJCSBi ZXN0X3BhdGgtPnN1YnBhdGhzLAotCQkJCQkJCQkJCQkJCSBwcnVuZXF1YWwpOworCQkJbm9kZS0+ cGFydF9wcnVuZV9pbmRleCA9IG1ha2VfcGFydGl0aW9uX3BydW5laW5mbyhyb290LCByZWwsCisJ CQkJCQkJCQkJCQkJCQkgIGJlc3RfcGF0aC0+c3VicGF0aHMsCisJCQkJCQkJCQkJCQkJCQkgIHBy dW5lcXVhbCk7CiAJfQogCiAJbm9kZS0+bWVyZ2VwbGFucyA9IHN1YnBsYW5zOwotCW5vZGUtPnBh cnRfcHJ1bmVfaW5mbyA9IHBhcnRwcnVuZWluZm87CiAKIAkvKgogCSAqIElmIHByZXBhcmVfc29y dF9mcm9tX3BhdGhrZXlzIGFkZGVkIHNvcnQgY29sdW1ucywgYnV0IHdlIHdlcmUgdG9sZCB0bwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCmluZGV4IGI2NjVhNzc2MmUuLjljMjUzZTg2 NGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5uZXIuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKQEAgLTU1Nyw2ICs1NTcsNyBA QCBzdGFuZGFyZF9wbGFubmVyKFF1ZXJ5ICpwYXJzZSwgY29uc3QgY2hhciAqcXVlcnlfc3RyaW5n LCBpbnQgY3Vyc29yT3B0aW9ucywKIAlyZXN1bHQtPmRlcGVuZHNPblJvbGUgPSBnbG9iLT5kZXBl bmRzT25Sb2xlOwogCXJlc3VsdC0+cGFyYWxsZWxNb2RlTmVlZGVkID0gZ2xvYi0+cGFyYWxsZWxN b2RlTmVlZGVkOwogCXJlc3VsdC0+cGxhblRyZWUgPSB0b3BfcGxhbjsKKwlyZXN1bHQtPnBhcnRQ cnVuZUluZm9zID0gZ2xvYi0+cGFydFBydW5lSW5mb3M7CiAJcmVzdWx0LT5ydGFibGUgPSBnbG9i LT5maW5hbHJ0YWJsZTsKIAlyZXN1bHQtPnBlcm1JbmZvcyA9IGdsb2ItPmZpbmFscnRlcGVybWlu Zm9zOwogCXJlc3VsdC0+cmVzdWx0UmVsYXRpb25zID0gZ2xvYi0+cmVzdWx0UmVsYXRpb25zOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jIGIvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCmluZGV4IDZkMjNkZjEwOGQuLjlmMTMyNDNk NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysg Yi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTE3MzEsNiArMTczMSw0 NyBAQCBzZXRfY3VzdG9tc2Nhbl9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCWNzY2Fu LT5jdXN0b21fcmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChjc2Nhbi0+Y3VzdG9tX3JlbGlkcywg cnRvZmZzZXQpOwogfQogCisvKgorICogcmVnaXN0ZXJfcGFydHBydW5laW5mbworICoJCVN1YnJv dXRpbmUgZm9yIHNldF9hcHBlbmRfcmVmZXJlbmNlcyBhbmQgc2V0X21lcmdlYXBwZW5kX3JlZmVy ZW5jZXMKKyAqCisgKiBBZGQgdGhlIFBhcnRpdGlvblBydW5lSW5mbyBmcm9tIHJvb3QtPnBhcnRQ cnVuZUluZm9zIGF0IHRoZSBnaXZlbiBpbmRleAorICogaW50byBQbGFubmVyR2xvYmFsLT5wYXJ0 UHJ1bmVJbmZvcyBhbmQgcmV0dXJuIGl0cyBpbmRleCB0aGVyZS4KKyAqCisgKiBBbHNvIHVwZGF0 ZSB0aGUgUlQgaW5kZXhlcyBwcmVzZW50IGluIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvcyB0byBh ZGQgdGhlCisgKiBvZmZzZXQuCisgKi8KK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX3BhcnRwcnVuZWlu Zm8oUGxhbm5lckluZm8gKnJvb3QsIGludCBwYXJ0X3BydW5lX2luZGV4LCBpbnQgcnRvZmZzZXQp Cit7CisJUGxhbm5lckdsb2JhbCAqZ2xvYiA9IHJvb3QtPmdsb2I7CisJUGFydGl0aW9uUHJ1bmVJ bmZvICpwaW5mbzsKKwlMaXN0Q2VsbCAgICpsOworCisJQXNzZXJ0KHBhcnRfcHJ1bmVfaW5kZXgg Pj0gMCAmJgorCQkgICBwYXJ0X3BydW5lX2luZGV4IDwgbGlzdF9sZW5ndGgocm9vdC0+cGFydFBy dW5lSW5mb3MpKTsKKwlwaW5mbyA9IGxpc3RfbnRoX25vZGUoUGFydGl0aW9uUHJ1bmVJbmZvLCBy b290LT5wYXJ0UHJ1bmVJbmZvcywKKwkJCQkJCSAgcGFydF9wcnVuZV9pbmRleCk7CisKKwlwaW5m by0+cmVsaWRzID0gb2Zmc2V0X3JlbGlkX3NldChwaW5mby0+cmVsaWRzLCBydG9mZnNldCk7CisJ Zm9yZWFjaChsLCBwaW5mby0+cHJ1bmVfaW5mb3MpCisJeworCQlMaXN0CSAgICpwcnVuZV9pbmZv cyA9IGxmaXJzdChsKTsKKwkJTGlzdENlbGwgICAqbDI7CisKKwkJZm9yZWFjaChsMiwgcHJ1bmVf aW5mb3MpCisJCXsKKwkJCVBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZvICpwcmVsaW5mbyA9IGxmaXJz dChsMik7CisKKwkJCXByZWxpbmZvLT5ydGluZGV4ICs9IHJ0b2Zmc2V0OworCQl9CisJfQorCisJ Z2xvYi0+cGFydFBydW5lSW5mb3MgPSBsYXBwZW5kKGdsb2ItPnBhcnRQcnVuZUluZm9zLCBwaW5m byk7CisKKwlyZXR1cm4gbGlzdF9sZW5ndGgoZ2xvYi0+cGFydFBydW5lSW5mb3MpIC0gMTsKK30K KwogLyoKICAqIHNldF9hcHBlbmRfcmVmZXJlbmNlcwogICoJCURvIHNldF9wbGFuX3JlZmVyZW5j ZXMgcHJvY2Vzc2luZyBvbiBhbiBBcHBlbmQKQEAgLTE3ODMsMjEgKzE4MjQsMTMgQEAgc2V0X2Fw cGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJYXBsYW4tPmFwcHJlbGlkcyA9 IG9mZnNldF9yZWxpZF9zZXQoYXBsYW4tPmFwcHJlbGlkcywgcnRvZmZzZXQpOwogCi0JaWYgKGFw bGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGwsIGFwbGFuLT5wYXJ0X3BydW5l X2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpwcnVuZV9pbmZvcyA9IGxmaXJz dChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNoKGwyLCBwcnVuZV9pbmZvcykK LQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGluZm8gPSBsZmlyc3QobDIpOwot Ci0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9Ci0JCX0KLQl9CisJLyoKKwkg KiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBsYW5uZXJHbG9iYWwgYW5kIHVw ZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4ZXMgcHJlc2VudCBp biBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAoYXBsYW4tPnBhcnRfcHJ1bmVfaW5k ZXggPj0gMCkKKwkJYXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQorCQkJcmVnaXN0ZXJfcGFydHBy dW5laW5mbyhyb290LCBhcGxhbi0+cGFydF9wcnVuZV9pbmRleCwgcnRvZmZzZXQpOwogCiAJLyog V2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9yIHJpZ2h0dHJlZSAuLi4gKi8K IAlBc3NlcnQoYXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7CkBAIC0xODU5LDIxICsxODky LDEzIEBAIHNldF9tZXJnZWFwcGVuZF9yZWZlcmVuY2VzKFBsYW5uZXJJbmZvICpyb290LAogCiAJ bXBsYW4tPmFwcHJlbGlkcyA9IG9mZnNldF9yZWxpZF9zZXQobXBsYW4tPmFwcHJlbGlkcywgcnRv ZmZzZXQpOwogCi0JaWYgKG1wbGFuLT5wYXJ0X3BydW5lX2luZm8pCi0JewotCQlmb3JlYWNoKGws IG1wbGFuLT5wYXJ0X3BydW5lX2luZm8tPnBydW5lX2luZm9zKQotCQl7Ci0JCQlMaXN0CSAgICpw cnVuZV9pbmZvcyA9IGxmaXJzdChsKTsKLQkJCUxpc3RDZWxsICAgKmwyOwotCi0JCQlmb3JlYWNo KGwyLCBwcnVuZV9pbmZvcykKLQkJCXsKLQkJCQlQYXJ0aXRpb25lZFJlbFBydW5lSW5mbyAqcGlu Zm8gPSBsZmlyc3QobDIpOwotCi0JCQkJcGluZm8tPnJ0aW5kZXggKz0gcnRvZmZzZXQ7Ci0JCQl9 Ci0JCX0KLQl9CisJLyoKKwkgKiBBZGQgUGFydGl0aW9uUHJ1bmVJbmZvLCBpZiBhbnksIHRvIFBs YW5uZXJHbG9iYWwgYW5kIHVwZGF0ZSB0aGUgaW5kZXguCisJICogQWxzbyB1cGRhdGUgdGhlIFJU IGluZGV4ZXMgcHJlc2VudCBpbiBpdCB0byBhZGQgdGhlIG9mZnNldC4KKwkgKi8KKwlpZiAobXBs YW4tPnBhcnRfcHJ1bmVfaW5kZXggPj0gMCkKKwkJbXBsYW4tPnBhcnRfcHJ1bmVfaW5kZXggPQor CQkJcmVnaXN0ZXJfcGFydHBydW5laW5mbyhyb290LCBtcGxhbi0+cGFydF9wcnVuZV9pbmRleCwg cnRvZmZzZXQpOwogCiAJLyogV2UgZG9uJ3QgbmVlZCB0byByZWN1cnNlIHRvIGxlZnR0cmVlIG9y IHJpZ2h0dHJlZSAuLi4gKi8KIAlBc3NlcnQobXBsYW4tPnBsYW4ubGVmdHRyZWUgPT0gTlVMTCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMgYi9zcmMv YmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmMKaW5kZXggNGUxMmFlNWQxZS4uY2E1NDY3 MTA0ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCisr KyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwpAQCAtMjA3LDE2ICsyMDcs MjAgQEAgc3RhdGljIHZvaWQgcGFydGtleV9kYXR1bV9mcm9tX2V4cHIoUGFydGl0aW9uUHJ1bmVD b250ZXh0ICpjb250ZXh0LAogCiAvKgogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVpbmZvCi0gKgkJ QnVpbGRzIGEgUGFydGl0aW9uUHJ1bmVJbmZvIHdoaWNoIGNhbiBiZSB1c2VkIGluIHRoZSBleGVj dXRvciB0byBhbGxvdwotICoJCWFkZGl0aW9uYWwgcGFydGl0aW9uIHBydW5pbmcgdG8gdGFrZSBw bGFjZS4gIFJldHVybnMgTlVMTCB3aGVuCi0gKgkJcGFydGl0aW9uIHBydW5pbmcgd291bGQgYmUg dXNlbGVzcy4KKyAqCQlDaGVja3MgaWYgdGhlIGdpdmVuIHNldCBvZiBxdWFscyBjYW4gYmUgdXNl ZCB0byBidWlsZCBwcnVuaW5nIHN0ZXBzCisgKgkJdGhhdCB0aGUgZXhlY3V0b3IgY2FuIHVzZSB0 byBwcnVuZSBhd2F5IHVubmVlZGVkIHBhcnRpdGlvbnMuICBJZgorICoJCXN1aXRhYmxlIHF1YWxz IGFyZSBmb3VuZCB0aGVuIGEgUGFydGl0aW9uUHJ1bmVJbmZvIGlzIGJ1aWx0IGFuZCB0YWdnZWQK KyAqCQlvbnRvIHRoZSBQbGFubmVySW5mbydzIHBhcnRQcnVuZUluZm9zIGxpc3QuCisgKgorICog VGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgMC1iYXNlZCBpbmRleCBvZiB0aGUgaXRlbSBhZGRlZCB0 byB0aGUKKyAqIHBhcnRQcnVuZUluZm9zIGxpc3Qgb3IgLTEgaWYgbm90aGluZyB3YXMgYWRkZWQu CiAgKgogICogJ3BhcmVudHJlbCcgaXMgdGhlIFJlbE9wdEluZm8gZm9yIGFuIGFwcGVuZHJlbCwg YW5kICdzdWJwYXRocycgaXMgdGhlIGxpc3QKICAqIG9mIHNjYW4gcGF0aHMgZm9yIGl0cyBjaGls ZCByZWxzLgogICogJ3BydW5lcXVhbCcgaXMgYSBsaXN0IG9mIHBvdGVudGlhbCBwcnVuaW5nIHF1 YWxzIChpLmUuLCByZXN0cmljdGlvbgogICogY2xhdXNlcyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRv IHRoZSBhcHBlbmRyZWwpLgogICovCi1QYXJ0aXRpb25QcnVuZUluZm8gKgoraW50CiBtYWtlX3Bh cnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJl bCwKIAkJCQkJCSBMaXN0ICpzdWJwYXRocywKIAkJCQkJCSBMaXN0ICpwcnVuZXF1YWwpCkBAIC0z MzAsMTAgKzMzNCwxMSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lckluZm8gKnJv b3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkgKiBxdWFscywgdGhlbiB3ZSBjYW4ganVzdCBu b3QgYm90aGVyIHdpdGggcnVuLXRpbWUgcHJ1bmluZy4KIAkgKi8KIAlpZiAocHJ1bmVyZWxpbmZv cyA9PSBOSUwpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAkvKiBFbHNlIGJ1aWxk IHRoZSByZXN1bHQgZGF0YSBzdHJ1Y3R1cmUgKi8KIAlwcnVuZWluZm8gPSBtYWtlTm9kZShQYXJ0 aXRpb25QcnVuZUluZm8pOworCXBydW5laW5mby0+cmVsaWRzID0gYm1zX2NvcHkocGFyZW50cmVs LT5yZWxpZHMpOwogCXBydW5laW5mby0+cHJ1bmVfaW5mb3MgPSBwcnVuZXJlbGluZm9zOwogCiAJ LyoKQEAgLTM1Niw3ICszNjEsOSBAQCBtYWtlX3BhcnRpdGlvbl9wcnVuZWluZm8oUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAllbHNlCiAJCXBydW5laW5mby0+b3Ro ZXJfc3VicGxhbnMgPSBOVUxMOwogCi0JcmV0dXJuIHBydW5laW5mbzsKKwlyb290LT5wYXJ0UHJ1 bmVJbmZvcyA9IGxhcHBlbmQocm9vdC0+cGFydFBydW5lSW5mb3MsIHBydW5laW5mbyk7CisKKwly ZXR1cm4gbGlzdF9sZW5ndGgocm9vdC0+cGFydFBydW5lSW5mb3MpIC0gMTsKIH0KIAogLyoKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBjMDliYzgzYjJhLi4zM2Q5MjJmZThk IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xMjMsNyArMTIzLDggQEAg dHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVTdGF0ZQogCiBleHRlcm4gUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25QcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog CQkJCQkJCQkJCQkJCSBpbnQgbl90b3RhbF9zdWJwbGFucywKLQkJCQkJCQkJCQkJCQkgUGFydGl0 aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8sCisJCQkJCQkJCQkJCQkJIGludCBwYXJ0X3BydW5lX2lu ZGV4LAorCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQgKnJlbGlkcywKIAkJCQkJCQkJCQkJCQkgQml0 bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5zKTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAog CQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCmluZGV4 IDE4MmE2OTU2YmIuLmIxNDcxZTY4ZmUgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCkBAIC02MzksNiAr NjM5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkJICogRXhlY1Jvd01hcmtz LCBvciBOVUxMIGlmIG5vbmUgKi8KIAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qg b2YgUlRFUGVybWlzc2lvbkluZm8gKi8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8q IGxpbmsgdG8gdG9wIG9mIHBsYW4gdHJlZSAqLworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5m b3M7CS8qIExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvICovCiAJY29uc3QgY2hhciAqZXNfc291 cmNlVGV4dDsJLyogU291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAogCUp1bmtGaWx0ZXIg KmVzX2p1bmtGaWx0ZXI7CS8qIHRvcC1sZXZlbCBqdW5rIGZpbHRlciwgaWYgYW55ICovCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXRobm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVz L3BhdGhub2Rlcy5oCmluZGV4IGFkZDBmOWU0NWYuLmY4YTRjZDQyYzYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCkBAIC0xMjgsNiArMTI4LDkgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckdsb2JhbAog CS8qICJmbGF0IiBsaXN0IG9mIEFwcGVuZFJlbEluZm9zICovCiAJTGlzdAkgICAqYXBwZW5kUmVs YXRpb25zOwogCisJLyogImZsYXQiIGxpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvcyAqLworCUxp c3QJICAgKnBhcnRQcnVuZUluZm9zOworCiAJLyogT0lEcyBvZiByZWxhdGlvbnMgdGhlIHBsYW4g ZGVwZW5kcyBvbiAqLwogCUxpc3QJICAgKnJlbGF0aW9uT2lkczsKIApAQCAtNTU5LDYgKzU2Miw5 IEBAIHN0cnVjdCBQbGFubmVySW5mbwogCiAJLyogRG9lcyB0aGlzIHF1ZXJ5IG1vZGlmeSBhbnkg cGFydGl0aW9uIGtleSBjb2x1bW5zPyAqLwogCWJvb2wJCXBhcnRDb2xzVXBkYXRlZDsKKworCS8q IFBhcnRpdGlvblBydW5lSW5mb3MgYWRkZWQgaW4gdGhpcyBxdWVyeSdzIHBsYW4uICovCisJTGlz dAkgICAqcGFydFBydW5lSW5mb3M7CiB9OwogCiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggNTJm MjliY2RiNi4uZWY4OTkyNzQ3MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKQEAgLTY5LDYgKzY5LDkg QEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lZFN0bXQKIAogCXN0cnVjdCBQbGFuICpwbGFuVHJlZTsJ CS8qIHRyZWUgb2YgUGxhbiBub2RlcyAqLwogCisJTGlzdAkgICAqcGFydFBydW5lSW5mb3M7IC8q IExpc3Qgb2YgUGFydGl0aW9uUHJ1bmVJbmZvIGNvbnRhaW5lZCBpbiB0aGUKKwkJCQkJCQkJICog cGxhbiAqLworCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFuZ2VUYmxFbnRyeSBu b2RlcyAqLwogCiAJTGlzdAkgICAqcGVybUluZm9zOwkJLyogbGlzdCBvZiBSVEVQZXJtaXNzaW9u SW5mbyBub2RlcyBmb3IgcnRhYmxlCkBAIC0yNzYsOCArMjc5LDggQEAgdHlwZWRlZiBzdHJ1Y3Qg QXBwZW5kCiAJICovCiAJaW50CQkJZmlyc3RfcGFydGlhbF9wbGFuOwogCi0JLyogSW5mbyBmb3Ig cnVuLXRpbWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICov Ci0Jc3RydWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4 IHRvIFBsYW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5p bmcgKi8KKwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBBcHBlbmQ7CiAKIC8qIC0tLS0tLS0t LS0tLS0tLS0KQEAgLTMxMSw4ICszMTQsOCBAQCB0eXBlZGVmIHN0cnVjdCBNZXJnZUFwcGVuZAog CS8qIE5VTExTIEZJUlNUL0xBU1QgZGlyZWN0aW9ucyAqLwogCWJvb2wJICAgKm51bGxzRmlyc3Qg cGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnVtQ29scykpOwogCi0JLyogSW5mbyBmb3IgcnVuLXRp bWUgc3VicGxhbiBwcnVuaW5nOyBOVUxMIGlmIHdlJ3JlIG5vdCBkb2luZyB0aGF0ICovCi0Jc3Ry dWN0IFBhcnRpdGlvblBydW5lSW5mbyAqcGFydF9wcnVuZV9pbmZvOworCS8qIEluZGV4IHRvIFBs YW5uZXJJbmZvLnBhcnRQcnVuZUluZm9zIG9yIC0xIGlmIG5vIHJ1bi10aW1lIHBydW5pbmcgKi8K KwlpbnQJCQlwYXJ0X3BydW5lX2luZGV4OwogfSBNZXJnZUFwcGVuZDsKIAogLyogLS0tLS0tLS0t LS0tLS0tLQpAQCAtMTQxNCw2ICsxNDE3LDEwIEBAIHR5cGVkZWYgc3RydWN0IFBsYW5Sb3dNYXJr CiAgKiBUaGVuLCBzaW5jZSBhbiBBcHBlbmQtdHlwZSBub2RlIGNvdWxkIGhhdmUgbXVsdGlwbGUg cGFydGl0aW9uaW5nCiAgKiBoaWVyYXJjaGllcyBhbW9uZyBpdHMgY2hpbGRyZW4sIHdlIGhhdmUg YW4gdW5vcmRlcmVkIExpc3Qgb2YgdGhvc2UgTGlzdHMuCiAgKgorICogcmVsaWRzCQkJCVJlbE9w dEluZm8ucmVsaWRzIG9mIHRoZSBwYXJlbnQgcGxhbiBub2RlIChlLmcuIEFwcGVuZAorICoJCQkJ CQlvciBNZXJnZUFwcGVuZCkgdG8gd2hpY2ggdGhpcyBQYXJ0aXRpb25QcnVuZUluZm8gbm9kZQor ICoJCQkJCQliZWxvbmdzLiAgVGhlIHBydW5pbmcgbG9naWMgZW5zdXJlcyB0aGF0IHRoaXMgbWF0 Y2hlcworICoJCQkJCQl0aGUgcGFyZW50IHBsYW4gbm9kZSdzIGFwcHJlbGlkcy4KICAqIHBydW5l X2luZm9zCQkJTGlzdCBvZiBMaXN0cyBjb250YWluaW5nIFBhcnRpdGlvbmVkUmVsUHJ1bmVJbmZv IG5vZGVzLAogICoJCQkJCQlvbmUgc3VibGlzdCBwZXIgcnVuLXRpbWUtcHJ1bmFibGUgcGFydGl0 aW9uIGhpZXJhcmNoeQogICoJCQkJCQlhcHBlYXJpbmcgaW4gdGhlIHBhcmVudCBwbGFuIG5vZGUn cyBzdWJwbGFucy4KQEAgLTE0MjYsNiArMTQzMyw3IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlv blBydW5lSW5mbwogCXBnX25vZGVfYXR0cihub19lcXVhbCwgbm9fcXVlcnlfanVtYmxlKQogCiAJ Tm9kZVRhZwkJdHlwZTsKKwlCaXRtYXBzZXQgICpyZWxpZHM7CiAJTGlzdAkgICAqcHJ1bmVfaW5m b3M7CiAJQml0bWFwc2V0ICAqb3RoZXJfc3VicGxhbnM7CiB9IFBhcnRpdGlvblBydW5lSW5mbzsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCBiL3NyYy9p bmNsdWRlL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaAppbmRleCBiZDQ5MGQxNTRmLi42OTIyZTA0 NDMwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wYXJ0aXRpb25pbmcvcGFydHBydW5lLmgKKysr IGIvc3JjL2luY2x1ZGUvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5oCkBAIC03MCwxMCArNzAsMTAg QEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uUHJ1bmVDb250ZXh0CiAjZGVmaW5lIFBydW5lQ3h0 U3RhdGVJZHgocGFydG5hdHRzLCBzdGVwX2lkLCBrZXlubykgXAogCSgocGFydG5hdHRzKSAqIChz dGVwX2lkKSArIChrZXlubykpCiAKLWV4dGVybiBQYXJ0aXRpb25QcnVuZUluZm8gKm1ha2VfcGFy dGl0aW9uX3BydW5laW5mbyhzdHJ1Y3QgUGxhbm5lckluZm8gKnJvb3QsCi0JCQkJCQkJCQkJCQkJ c3RydWN0IFJlbE9wdEluZm8gKnBhcmVudHJlbCwKLQkJCQkJCQkJCQkJCQlMaXN0ICpzdWJwYXRo cywKLQkJCQkJCQkJCQkJCQlMaXN0ICpwcnVuZXF1YWwpOworZXh0ZXJuIGludAltYWtlX3BhcnRp dGlvbl9wcnVuZWluZm8oc3RydWN0IFBsYW5uZXJJbmZvICpyb290LAorCQkJCQkJCQkJIHN0cnVj dCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCisJCQkJCQkJCQkgTGlzdCAqc3VicGF0aHMsCisJCQkJ CQkJCQkgTGlzdCAqcHJ1bmVxdWFsKTsKIGV4dGVybiBCaXRtYXBzZXQgKnBydW5lX2FwcGVuZF9y ZWxfcGFydGl0aW9ucyhzdHJ1Y3QgUmVsT3B0SW5mbyAqcmVsKTsKIGV4dGVybiBCaXRtYXBzZXQg KmdldF9tYXRjaGluZ19wYXJ0aXRpb25zKFBhcnRpdGlvblBydW5lQ29udGV4dCAqY29udGV4dCwK IAkJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMpOwotLSAKMi40My4wCgo= --000000000000f3ab0c06290e160f Content-Type: application/octet-stream; name="v59-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Disposition: attachment; filename="v59-0003-Perform-runtime-initial-pruning-outside-ExecInit.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l0yqu32 RnJvbSA2MzhjNzI5N2Y2M2Q1MzBjZTI5MzcwZmZmYTIwZmNkMzRlZThiNDUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo0OSArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU5 IDMvNV0gUGVyZm9ybSBydW50aW1lIGluaXRpYWwgcHJ1bmluZyBvdXRzaWRlCiBFeGVjSW5pdE5v ZGUoKQpNSU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9 VVRGLTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKVGhpcyBjb21taXQgZm9sbG93 cyB1cCBvbiB0aGUgcHJldmlvdXMgY2hhbmdlIHRoYXQgbW92ZWQKUGFydGl0aW9uUHJ1bmVJbmZv cyBvdXQgb2YgaW5kaXZpZHVhbCBwbGFuIG5vZGVzIGludG8gYSBsaXN0IGluClBsYW5uZWRTdG10 LiBJdCBtb3ZlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgUGFydGl0aW9uUHJ1bmVTdGF0ZXMKYW5k IHJ1bnRpbWUgaW5pdGlhbCBwcnVuaW5nIG91dCBvZiBFeGVjSW5pdE5vZGUoKSBhbmQgaW50byBh IG5ldwpyb3V0aW5lLCBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLCB3aGljaCBpcyBjYWxsZWQgYnkg SW5pdFBsYW4oKQpiZWZvcmUgRXhlY0luaXROb2RlKCkgaXMgaW52b2tlZCBvbiB0aGUgbWFpbiBw bGFuIHRyZWUgYW5kIHN1YnBsYW5zLgoKRXhlY0RvSW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyB0 aGUgaW5pdGlhbCBwcnVuaW5nIGFuZCBzYXZlcyB0aGUKcmVzdWx04oCUYSBiaXRtYXBzZXQgb2Yg aW5kZXhlcyBmb3IgdGhlIHN1cnZpdmluZyBjaGlsZCBzdWJub2Rlc+KAlGluCmVzX3BhcnRfcHJ1 bmVfcmVzdWx0cywgYSBsaXN0IGluIEVTdGF0ZS4gVGhlIFBhcnRpdGlvblBydW5lU3RhdGVzCmNy ZWF0ZWQgZm9yIGluaXRpYWwgcHJ1bmluZyBhcmUgYWxzbyBzYXZlZCBpbiBlc19wYXJ0X3BydW5l X3N0YXRlcywKYW5vdGhlciBsaXN0IGluIEVTdGF0ZSwgZm9yIGxhdGVyIHVzZSBkdXJpbmcgZXhl YyBwcnVuaW5nLiBCb3RoIGxpc3RzCmFyZSBwYXJhbGxlbCB0byBlc19wYXJ0X3BydW5lX2luZm9z ICh3aGljaCBob2xkcyB0aGUKUGFydGl0aW9uUHJ1bmVJbmZvcyBmcm9tIFBsYW5uZWRTdG10KSwg YWxsb3dpbmcgdGhlbSB0byBzaGFyZSB0aGUKc2FtZSBpbmRleC4KClJldmlld2VkLWJ5OiBSb2Jl cnQgSGFhcwpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhCkRpc2N1c3Npb246IGh0dHBzOi8vcG9z dGdyLmVzL20vQ0ErSGl3cUZHa01TZ2U2VGdDOUtRemRlMG9ocEF5Y0xRdVY3b29pdEVFcGJLQjBP X21nQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAg ICAgICAgfCAgMTIgKysrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgICB8 IDEzMCArKysrKysrKysrKysrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl QXBwZW5kLmMgICAgICB8ICAxMCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCAgIHwg IDExICsrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICAgfCAgIDIgKwog NiBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKSwgNTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNNYWluLmMKaW5kZXggYjQwZmUzODE3OC4uNWRjNDZmMmU5NSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYworKysgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjTWFpbi5jCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvbWF0 dmlldy5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3RyaWdnZXIuaCIKICNpbmNsdWRlICJleGVjdXRv ci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCIKICNpbmNs dWRlICJleGVjdXRvci9ub2RlU3VicGxhbi5oIgogI2luY2x1ZGUgImZvcmVpZ24vZmR3YXBpLmgi CiAjaW5jbHVkZSAibWIvcGdfd2NoYXIuaCIKQEAgLTg1OCw2ICs4NTksMTcgQEAgSW5pdFBsYW4o UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZXN0YXRlLT5lc19wbGFubmVkc3Rt dCA9IHBsYW5uZWRzdG10OwogCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRz dG10LT5wYXJ0UHJ1bmVJbmZvczsKIAorCS8qCisJICogUGVyZm9ybSBydW50aW1lICJpbml0aWFs IiBwcnVuaW5nIHRvIGlkZW50aWZ5IHdoaWNoIGNoaWxkIHN1YnBsYW5zLAorCSAqIGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGNoaWxkcmVuIG9mIHBsYW4gbm9kZXMgdGhhdCBjb250YWluCisJICogUGFy dGl0aW9uUHJ1bmVJbmZvIHN1Y2ggYXMgQXBwZW5kLCB3aWxsIG5vdCBiZSBleGVjdXRlZC4gVGhl IHJlc3VsdHMsCisJICogd2hpY2ggYXJlIGJpdG1hcHNldHMgb2YgaW5kZXhlcyBvZiB0aGUgY2hp bGQgc3VicGxhbnMgdGhhdCB3aWxsIGJlCisJICogZXhlY3V0ZWQsIGFyZSBzYXZlZCBpbiBlc19w YXJ0X3BydW5lX3Jlc3VsdHMuICBUaGVzZSByZXN1bHRzIGNvcnJlc3BvbmQKKwkgKiB0byBlYWNo IFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgYW5kIHRoZSBlc19wYXJ0X3BydW5lX3Jlc3VsdHMg bGlzdCBpcworCSAqIHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCisJICovCisJRXhl Y0RvSW5pdGlhbFBydW5pbmcoZXN0YXRlKTsKKwogCS8qCiAJICogTmV4dCwgYnVpbGQgdGhlIEV4 ZWNSb3dNYXJrIGFycmF5IGZyb20gdGhlIFBsYW5Sb3dNYXJrKHMpLCBpZiBhbnkuCiAJICovCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKaW5kZXggZjRkNDI1Y2Q0NS4uNDZkZDFjNzdh MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwpAQCAtMTc2MSw0OCArMTc2MSwx MDUgQEAgYWRqdXN0X3BhcnRpdGlvbl9jb2xub3NfdXNpbmdfbWFwKExpc3QgKmNvbG5vcywgQXR0 ck1hcCAqYXR0ck1hcCkKICAqCiAgKiBGdW5jdGlvbnM6CiAgKgotICogRXhlY0luaXRQYXJ0aXRp b25QcnVuaW5nOgotICoJCUNyZWF0ZXMgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUgcmVxdWlyZWQg YnkgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zLgotICoJCURldGFpbHMgc3RvcmVkIGluY2x1ZGUg aG93IHRvIG1hcCB0aGUgcGFydGl0aW9uIGluZGV4IHJldHVybmVkIGJ5IHRoZQotICoJCXBhcnRp dGlvbiBwcnVuaW5nIGNvZGUgaW50byBzdWJwbGFuIGluZGV4ZXMuICBBbHNvIGRldGVybWluZXMg dGhlIHNldAotICoJCW9mIHN1YnBsYW5zIHRvIGluaXRpYWxpemUgY29uc2lkZXJpbmcgdGhlIHJl c3VsdCBvZiBwZXJmb3JtaW5nIGluaXRpYWwKLSAqCQlwcnVuaW5nIHN0ZXBzIGlmIGFueS4gIE1h cHMgaW4gUGFydGl0aW9uUHJ1bmVTdGF0ZSBhcmUgdXBkYXRlZCB0bworICogRXhlY0RvSW5pdGlh bFBydW5pbmc6CisgKgkJUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nLCBpZiBuZWNl c3NhcnksIHRvIGRldGVybWluZSB0aGUgc2V0CisgKgkJb2YgY2hpbGQgc3Vibm9kZXMgdGhhdCBu ZWVkIHRvIGJlIGluaXRpYWxpemVkIGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKKyAqCQlhbGwg cGxhbiBub2RlcyB0aGF0IGNvbnRhaW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgorICogRXhl Y0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZzoKKyAqCQlVcGRhdGVzIHRoZSBQYXJ0aXRpb25QcnVu ZVN0YXRlIGZvdW5kIGF0IGdpdmVuIHBhcnRfcHJ1bmVfaW5kZXggaW4KKyAqCQlFU3RhdGUuZXNf cGFydF9wcnVuZV9zdGF0ZXMgZm9yIHVzZSBkdXJpbmcgImV4ZWMiIHBydW5pbmcgaWYgcmVxdWly ZWQuCisgKgkJQWxzbyByZXR1cm5zIHRoZSBzZXQgb2Ygc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSB0 aGF0IHdvdWxkIGJlIHN0b3JlZCBhdAorICoJCXBhcnRfcHJ1bmVfaW5kZXggaW4gRVN0YXRlLmVz X3BhcnRfcHJ1bmVfcmVzdWx0IGJ5CisgKgkJRXhlY0RvSW5pdGlhbFBydW5pbmcoKS4gIE1hcHMg aW4gUGFydGl0aW9uUHJ1bmVTdGF0ZSBhcmUgdXBkYXRlZCB0bwogICoJCWFjY291bnQgZm9yIGlu aXRpYWwgcHJ1bmluZyBwb3NzaWJseSBoYXZpbmcgZWxpbWluYXRlZCBzb21lIG9mIHRoZQogICoJ CXN1YnBsYW5zLgogICoKICAqIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFuczoKICAqCQlSZXR1cm5z IGluZGV4ZXMgb2YgbWF0Y2hpbmcgc3VicGxhbnMgYWZ0ZXIgZXZhbHVhdGluZyB0aGUgZXhwcmVz c2lvbnMKICAqCQl0aGF0IGFyZSBzYWZlIHRvIGV2YWx1YXRlIGF0IGEgZ2l2ZW4gcG9pbnQuICBU aGlzIGZ1bmN0aW9uIGlzIGZpcnN0Ci0gKgkJY2FsbGVkIGR1cmluZyBFeGVjSW5pdFBhcnRpdGlv blBydW5pbmcoKSB0byBmaW5kIHRoZSBpbml0aWFsbHkKLSAqCQltYXRjaGluZyBzdWJwbGFucyBi YXNlZCBvbiBwZXJmb3JtaW5nIHRoZSBpbml0aWFsIHBydW5pbmcgc3RlcHMgYW5kCi0gKgkJdGhl biBtdXN0IGJlIGNhbGxlZCBhZ2FpbiBlYWNoIHRpbWUgdGhlIHZhbHVlIG9mIGEgUGFyYW0gbGlz dGVkIGluCisgKgkJY2FsbGVkIGR1cmluZyBFeGVjRG9Jbml0aWFsUHJ1bmluZygpIHRvIGZpbmQg dGhlIGluaXRpYWxseSBtYXRjaGluZworICoJCXN1YnBsYW5zIGJhc2VkIG9uIHBlcmZvcm1pbmcg dGhlIGluaXRpYWwgcHJ1bmluZyBzdGVwcyBhbmQgdGhlbiBtdXN0IGJlCisgKgkJY2FsbGVkIGFn YWluIGVhY2ggdGltZSB0aGUgdmFsdWUgb2YgYSBQYXJhbSBsaXN0ZWQgaW4KICAqCQlQYXJ0aXRp b25QcnVuZVN0YXRlJ3MgJ2V4ZWNwYXJhbWlkcycgY2hhbmdlcy4KICAqLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogICovCiAKIC8qCi0gKiBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcKLSAqCQlJbml0aWFsaXpl IGRhdGEgc3RydWN0dXJlIG5lZWRlZCBmb3IgcnVuLXRpbWUgcGFydGl0aW9uIHBydW5pbmcgYW5k Ci0gKgkJZG8gaW5pdGlhbCBwcnVuaW5nIGlmIG5lZWRlZAorICogRXhlY0RvSW5pdGlhbFBydW5p bmcKKyAqCQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwg dG8gZGV0ZXJtaW5lIHRoZSBzZXQKKyAqCQlvZiBjaGlsZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8g YmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9kZSgpIGZvcgorICoJCXBsYW4gbm9kZXMg dGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gaXRl cmF0ZXMgb3ZlciBlYWNoIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSBpbgorICogZXN0YXRlLT5l c19wYXJ0X3BydW5lX2luZm9zLiBGb3IgZWFjaCBlbnRyeSwgaXQgY3JlYXRlcyBhIFBhcnRpdGlv blBydW5lU3RhdGUKKyAqIGFuZCBhZGRzIGl0IHRvIGVzX3BhcnRfcHJ1bmVfc3RhdGVzLCB3aGVy ZSBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKCkgY2FuCisgKiBhY2Nlc3MgaXQgZm9yIHVz ZSBkdXJpbmcgImV4ZWMiIHBydW5pbmcuCisgKgorICogSWYgaW5pdGlhbCBwcnVuaW5nIHN0ZXBz IGV4aXN0IGZvciBhIFBhcnRpdGlvblBydW5lSW5mbyBlbnRyeSwgdGhpcyBmdW5jdGlvbgorICog ZXhlY3V0ZXMgdGhvc2UgcHJ1bmluZyBzdGVwcyBhbmQgc3RvcmVzIHRoZSByZXN1bHQgYXMgYSBi aXRtYXBzZXQgb2YgdmFsaWQKKyAqIGNoaWxkIHN1YnBsYW5zLCBpZGVudGlmeWluZyB3aGljaCBz dWJwbGFucyBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgZm9yCisgKiBleGVjdXRpb24uICBUaGUgcmVz dWx0cyBhcmUgc2F2ZWQgaW4gZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMuCisgKgorICog SWYgbm8gaW5pdGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBmb3IgYSBnaXZlbiBQYXJ0aXRpb25Q cnVuZUluZm8sIGEgTlVMTAorICogZW50cnkgIGlzIHN0aWxsIGFkZGVkIHRvIGVzX3BhcnRfcHJ1 bmVfcmVzdWx0cyB0byBtYWludGFpbiBhbGlnbm1lbnQgd2l0aAorICogZXNfcGFydF9wcnVuZV9p bmZvcy4gVGhpcyBlbnN1cmVzIHRoYXQgRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygpIGNh bgorICogdXNlIHRoZSBzYW1lIGluZGV4IHRvIHJldHJpZXZlIHRoZSBwcnVuaW5nIHJlc3VsdHMu CisgKi8KK3ZvaWQKK0V4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQoreworCUxp c3RDZWxsICAgKmxjOworCisJZm9yZWFjaChsYywgZXN0YXRlLT5lc19wYXJ0X3BydW5lX2luZm9z KQorCXsKKwkJUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8gPSBsZmlyc3Rfbm9kZShQYXJ0 aXRpb25QcnVuZUluZm8sIGxjKTsKKwkJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsK KwkJQml0bWFwc2V0ICAqdmFsaWRzdWJwbGFucyA9IE5VTEw7CisKKwkJLyogQ3JlYXRlIGFuZCBz YXZlIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlLiAqLworCQlwcnVuZXN0YXRlID0gQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShlc3RhdGUsIHBydW5laW5mbyk7CisJCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCisJCQkJ CQkJCQkJCSAgIHBydW5lc3RhdGUpOworCisJCS8qCisJCSAqIFBlcmZvcm0gaW5pdGlhbCBwcnVu aW5nIHN0ZXBzLCBpZiBhbnksIGFuZCBzYXZlIHRoZSByZXN1bHQKKwkJICogYml0bWFwc2V0IG9y IE5VTEwgYXMgZGVzY3JpYmVkIGluIHRoZSBoZWFkZXIgY29tbWVudC4KKwkJICovCisJCWlmIChw cnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlKTsKKwkJZXN0YXRlLT5lc19wYXJ0X3By dW5lX3Jlc3VsdHMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9yZXN1bHRzLAorCQkJ CQkJCQkJCQkJdmFsaWRzdWJwbGFucyk7CisJfQorfQorCisvKgorICogRXhlY0luaXRQYXJ0aXRp b25FeGVjUHJ1bmluZworICoJCUluaXRpYWxpemUgdGhlIGRhdGEgc3RydWN0dXJlcyBuZWVkZWQg Zm9yIHJ1bnRpbWUgImV4ZWMiIHBhcnRpdGlvbgorICoJCXBydW5pbmcgYW5kIHJldHVybiB0aGUg cmVzdWx0IG9mIGluaXRpYWwgcHJ1bmluZywgaWYgYXZhaWxhYmxlLgogICoKICAqICdyZWxpZHMn IGlkZW50aWZpZXMgdGhlIHJlbGF0aW9uIHRvIHdoaWNoIGJvdGggdGhlIHBhcmVudCBwbGFuIGFu ZCB0aGUKICAqIFBhcnRpdGlvblBydW5lSW5mbyBnaXZlbiBieSAncGFydF9wcnVuZV9pbmRleCcg YmVsb25nLgogICoKLSAqIE9uIHJldHVybiwgKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyBpcyBh c3NpZ25lZCB0aGUgc2V0IG9mIGluZGV4ZXMgb2YKLSAqIGNoaWxkIHN1YnBsYW5zIHRoYXQgbXVz dCBiZSBpbml0aWFsaXplZCBhbG9uZyB3aXRoIHRoZSBwYXJlbnQgcGxhbiBub2RlLgotICogSW5p dGlhbCBwcnVuaW5nIGlzIHBlcmZvcm1lZCBoZXJlIGlmIG5lZWRlZCBhbmQgaW4gdGhhdCBjYXNl IG9ubHkgdGhlCi0gKiBzdXJ2aXZpbmcgc3VicGxhbnMnIGluZGV4ZXMgYXJlIGFkZGVkLgorICog VGhlIFBhcnRpdGlvblBydW5lU3RhdGUgd291bGQgaGF2ZSBiZWVuIGNyZWF0ZWQgYnkgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKQorICogYW5kIHN0b3JlZCBhcyB0aGUgcGFydF9wcnVuZV9pbmRleCd0 aCBlbGVtZW50IG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3N0YXRlcy4KICAqCi0gKiBJZiBzdWJw bGFucyBhcmUgaW5kZWVkIHBydW5lZCwgc3VicGxhbl9tYXAgYXJyYXlzIGNvbnRhaW5lZCBpbiB0 aGUgcmV0dXJuZWQKLSAqIFBhcnRpdGlvblBydW5lU3RhdGUgYXJlIHJlLXNlcXVlbmNlZCB0byBu b3QgY291bnQgdGhvc2UsIHRob3VnaCBvbmx5IGlmIHRoZQotICogbWFwcyB3aWxsIGJlIG5lZWRl ZCBmb3Igc3Vic2VxdWVudCBleGVjdXRpb24gcHJ1bmluZyBwYXNzZXMuCisgKiBPbiByZXR1cm4s ICppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMgaXMgYXNzaWduZWQgdGhlIHNldCBvZiBpbmRleGVz IG9mIGNoaWxkCisgKiBzdWJwbGFucyB0aGF0IG11c3QgYmUgaW5pdGlhbGl6ZWQuIEluaXRpYWwg cHJ1bmluZyB3b3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkCisgKiBieSBFeGVjRG9Jbml0aWFsUHJ1 bmluZygpIGlmIG5lY2Vzc2FyeSwgYW5kIHRoZSBiaXRtYXBzZXQgb2Ygc3Vydml2aW5nCisgKiBz dWJwbGFucycgaW5kZXhlcyB3b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGFzIHRoZSBwYXJ0X3BydW5l X2luZGV4J3RoIGVsZW1lbnQKKyAqIG9mIEVTdGF0ZS5lc19wYXJ0X3BydW5lX3Jlc3VsdHMuCisg KgorICogSWYgc3VicGxhbnMgd2VyZSBwcnVuZWQgZHVyaW5nIGluaXRpYWwgcHJ1bmluZywgdGhl IHN1YnBsYW5fbWFwIGFycmF5cyBpbgorICogdGhlIHJldHVybmVkIFBhcnRpdGlvblBydW5lU3Rh dGUgYXJlIHJlLXNlcXVlbmNlZCB0byBleGNsdWRlIHRob3NlIHN1YnBsYW5zLAorICogYnV0IG9u bHkgaWYgdGhlIG1hcHMgd2lsbCBiZSBuZWVkZWQgZm9yIHN1YnNlcXVlbnQgZXhlY3V0aW9uIHBy dW5pbmcgcGFzc2VzLgogICovCiBQYXJ0aXRpb25QcnVuZVN0YXRlICoKLUV4ZWNJbml0UGFydGl0 aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKLQkJCQkJCSBpbnQgbl90b3RhbF9zdWJw bGFucywKLQkJCQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCSBCaXRtYXBzZXQgKnJl bGlkcywKLQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFsaWRfc3VicGxhbnMpCitFeGVj SW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAorCQkJCQkJCSBp bnQgbl90b3RhbF9zdWJwbGFucywKKwkJCQkJCQkgaW50IHBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJ CQkJIEJpdG1hcHNldCAqcmVsaWRzLAorCQkJCQkJCSBCaXRtYXBzZXQgKippbml0aWFsbHlfdmFs aWRfc3VicGxhbnMpCiB7CiAJUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZTsKIAlFU3Rh dGUJICAgKmVzdGF0ZSA9IHBsYW5zdGF0ZS0+c3RhdGU7CkBAIC0xODE4LDExICsxODc1LDEyIEBA IEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCSBibXNU b1N0cmluZyhwcnVuZWluZm8tPnJlbGlkcyksIHBhcnRfcHJ1bmVfaW5kZXgsCiAJCQkgYm1zVG9T dHJpbmcocmVsaWRzKSk7CiAKLQkvKiBXZSBtYXkgbmVlZCBhbiBleHByZXNzaW9uIGNvbnRleHQg dG8gZXZhbHVhdGUgcGFydGl0aW9uIGV4cHJzICovCi0JRXhlY0Fzc2lnbkV4cHJDb250ZXh0KGVz dGF0ZSwgcGxhbnN0YXRlKTsKLQotCS8qIENyZWF0ZSB0aGUgd29ya2luZyBkYXRhIHN0cnVjdHVy ZSBmb3IgcHJ1bmluZyAqLwotCXBydW5lc3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRl KGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkvKgorCSAqIEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkgbXVz dCBoYXZlIGluaXRpYWxpemVkIHRoZSBQYXJ0aXRpb25QcnVuZVN0YXRlIHRvCisJICogcGVyZm9y bSB0aGUgaW5pdGlhbCBwcnVuaW5nLgorCSAqLworCXBydW5lc3RhdGUgPSBsaXN0X250aChlc3Rh dGUtPmVzX3BhcnRfcHJ1bmVfc3RhdGVzLCBwYXJ0X3BydW5lX2luZGV4KTsKKwlBc3NlcnQocHJ1 bmVzdGF0ZSAhPSBOVUxMKTsKIAogCS8qCiAJICogU3RvcmUgUGxhblN0YXRlIGZvciB1c2luZyBp dCB0byBpbml0aWFsaXplIGV4ZWMgcHJ1bmluZyBjb250ZXh0cyBsYXRlcgpAQCAtMTgzMSwxMSAr MTg4OSwxMSBAQCBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUs CiAJaWYgKHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpCiAJCXBydW5lc3RhdGUtPnBhcmVudF9w bGFuID0gcGxhbnN0YXRlOwogCi0JLyoKLQkgKiBQZXJmb3JtIGFuIGluaXRpYWwgcGFydGl0aW9u IHBydW5lIHBhc3MsIGlmIHJlcXVpcmVkLgotCSAqLworCS8qIFVzZSB0aGUgcmVzdWx0IG9mIGlu aXRpYWwgcHJ1bmluZyBkb25lIGJ5IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCkuICovCiAJaWYgKHBy dW5lc3RhdGUtPmRvX2luaXRpYWxfcHJ1bmUpCi0JCSppbml0aWFsbHlfdmFsaWRfc3VicGxhbnMg PSBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMocHJ1bmVzdGF0ZSwgdHJ1ZSk7CisJCSppbml0aWFs bHlfdmFsaWRfc3VicGxhbnMgPSBsaXN0X250aF9ub2RlKEJpdG1hcHNldCwKKwkJCQkJCQkJCQkJ CSAgZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCisJCQkJCQkJCQkJCQkgIHBhcnRfcHJ1 bmVfaW5kZXgpOwogCWVsc2UKIAl7CiAJCS8qIE5vIHBydW5pbmcsIHNvIHdlJ2xsIG5lZWQgdG8g aW5pdGlhbGl6ZSBhbGwgc3VicGxhbnMgKi8KQEAgLTE4NDYsOCArMTkwNCw4IEBAIEV4ZWNJbml0 UGFydGl0aW9uUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAogCS8qCiAJICogUmUtc2Vx dWVuY2Ugc3VicGxhbiBpbmRleGVzIGNvbnRhaW5lZCBpbiBwcnVuZXN0YXRlIHRvIGFjY291bnQg Zm9yIGFueQotCSAqIHRoYXQgd2VyZSByZW1vdmVkIGFib3ZlIGR1ZSB0byBpbml0aWFsIHBydW5p bmcuICBObyBuZWVkIHRvIGRvIHRoaXMgaWYKLQkgKiBubyBzdGVwcyB3ZXJlIHJlbW92ZWQuCisJ ICogdGhhdCB3ZXJlIHJlbW92ZWQgZHVlIHRvIGluaXRpYWwgcHJ1bmluZy4gIE5vIG5lZWQgdG8g ZG8gdGhpcyBpZiBubworCSAqIHBhcnRpdGlvbnMgd2VyZSByZW1vdmVkLgogCSAqLwogCWlmIChi bXNfbnVtX21lbWJlcnMoKmluaXRpYWxseV92YWxpZF9zdWJwbGFucykgPCBuX3RvdGFsX3N1YnBs YW5zKQogCXsKQEAgLTE4NjgsNiArMTkyNiw4IEBAIEV4ZWNJbml0UGFydGl0aW9uUHJ1bmluZyhQ bGFuU3RhdGUgKnBsYW5zdGF0ZSwKIC8qCiAgKiBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlCiAg KgkJQnVpbGQgdGhlIGRhdGEgc3RydWN0dXJlIHJlcXVpcmVkIGZvciBjYWxsaW5nIEV4ZWNGaW5k TWF0Y2hpbmdTdWJQbGFucworICogCQlEZXRhaWxzIHN0b3JlZCBpbmNsdWRlIGhvdyB0byBtYXAg dGhlIHBhcnRpdGlvbiBpbmRleCByZXR1cm5lZCBieSB0aGUKKyAqCQlwYXJ0aXRpb24gcHJ1bmlu ZyBjb2RlIGludG8gc3VicGxhbiBpbmRleGVzLgogICoKICAqICdwcnVuZWluZm8nIGlzIGEgUGFy dGl0aW9uUHJ1bmVJbmZvIGFzIGdlbmVyYXRlZCBieQogICogbWFrZV9wYXJ0aXRpb25fcHJ1bmVp bmZvLiAgSGVyZSB3ZSBidWlsZCBhIFBhcnRpdGlvblBydW5lU3RhdGUgY29udGFpbmluZyBhCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggZGU3ZWJhYjVjMi4uYjc3ZmY4NDg0MCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtMTQzLDExICsxNDMsMTEgQEAgRXhlY0luaXRB cHBlbmQoQXBwZW5kICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3Vi cGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFsaWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3Vu dCB0aGUKIAkJICogcmVzdWx0IG9mIHBlcmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4K IAkJICovCi0JCXBydW5lc3RhdGUgPSBFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJmFwcGVuZHN0 YXRlLT5wcywKLQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCi0J CQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJICBub2RlLT5h cHByZWxpZHMsCi0JCQkJCQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOworCQlwcnVuZXN0YXRlID0g RXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZygmYXBwZW5kc3RhdGUtPnBzLAorCQkJCQkJCQkJ CQkJICBsaXN0X2xlbmd0aChub2RlLT5hcHBlbmRwbGFucyksCisJCQkJCQkJCQkJCQkgIG5vZGUt PnBhcnRfcHJ1bmVfaW5kZXgsCisJCQkJCQkJCQkJCQkgIG5vZGUtPmFwcHJlbGlkcywKKwkJCQkJ CQkJCQkJCSAgJnZhbGlkc3VicGxhbnMpOwogCQlhcHBlbmRzdGF0ZS0+YXNfcHJ1bmVfc3RhdGUg PSBwcnVuZXN0YXRlOwogCQlucGxhbnMgPSBibXNfbnVtX21lbWJlcnModmFsaWRzdWJwbGFucyk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggM2VkOTE4MDhkZC4u ZTIwMzJhZmNiNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTkx LDExICs5MSwxMSBAQCBFeGVjSW5pdE1lcmdlQXBwZW5kKE1lcmdlQXBwZW5kICpub2RlLCBFU3Rh dGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogc3VicGxhbnMgdG8gaW5pdGlhbGl6ZSAodmFs aWRzdWJwbGFucykgYnkgdGFraW5nIGludG8gYWNjb3VudCB0aGUKIAkJICogcmVzdWx0IG9mIHBl cmZvcm1pbmcgaW5pdGlhbCBwcnVuaW5nIGlmIGFueS4KIAkJICovCi0JCXBydW5lc3RhdGUgPSBF eGVjSW5pdFBhcnRpdGlvblBydW5pbmcoJm1lcmdlc3RhdGUtPnBzLAotCQkJCQkJCQkJCQkgIGxp c3RfbGVuZ3RoKG5vZGUtPm1lcmdlcGxhbnMpLAotCQkJCQkJCQkJCQkgIG5vZGUtPnBhcnRfcHJ1 bmVfaW5kZXgsCi0JCQkJCQkJCQkJCSAgbm9kZS0+YXBwcmVsaWRzLAotCQkJCQkJCQkJCQkgICZ2 YWxpZHN1YnBsYW5zKTsKKwkJcHJ1bmVzdGF0ZSA9IEV4ZWNJbml0UGFydGl0aW9uRXhlY1BydW5p bmcoJm1lcmdlc3RhdGUtPnBzLAorCQkJCQkJCQkJCQkJICBsaXN0X2xlbmd0aChub2RlLT5tZXJn ZXBsYW5zKSwKKwkJCQkJCQkJCQkJCSAgbm9kZS0+cGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJ CQkJCSAgbm9kZS0+YXBwcmVsaWRzLAorCQkJCQkJCQkJCQkJICAmdmFsaWRzdWJwbGFucyk7CiAJ CW1lcmdlc3RhdGUtPm1zX3BydW5lX3N0YXRlID0gcHJ1bmVzdGF0ZTsKIAkJbnBsYW5zID0gYm1z X251bV9tZW1iZXJzKHZhbGlkc3VicGxhbnMpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjUGFydGl0aW9uLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0 aW9uLmgKaW5kZXggN2U0NzBjODJmNi4uMGIzNDc4NDkyMiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4 ZWNQYXJ0aXRpb24uaApAQCAtMTMzLDExICsxMzMsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgUGFydGl0 aW9uUHJ1bmVTdGF0ZQogCVBhcnRpdGlvblBydW5pbmdEYXRhICpwYXJ0cHJ1bmVkYXRhW0ZMRVhJ QkxFX0FSUkFZX01FTUJFUl07CiB9IFBhcnRpdGlvblBydW5lU3RhdGU7CiAKLWV4dGVybiBQYXJ0 aXRpb25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvblBydW5pbmcoUGxhblN0YXRlICpwbGFu c3RhdGUsCi0JCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAotCQkJCQkJCQkJCQkJ CSBpbnQgcGFydF9wcnVuZV9pbmRleCwKLQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICpyZWxpZHMs Ci0JCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJwbGFucyk7Cit2 b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKTsKK2V4dGVybiBQYXJ0aXRp b25QcnVuZVN0YXRlICpFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxh bnN0YXRlLAorCQkJCQkJCQkJCQkJCQkgaW50IG5fdG90YWxfc3VicGxhbnMsCisJCQkJCQkJCQkJ CQkJCSBpbnQgcGFydF9wcnVuZV9pbmRleCwKKwkJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqcmVs aWRzLAorCQkJCQkJCQkJCQkJCQkgQml0bWFwc2V0ICoqaW5pdGlhbGx5X3ZhbGlkX3N1YnBsYW5z KTsKIGV4dGVybiBCaXRtYXBzZXQgKkV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRpb25Q cnVuZVN0YXRlICpwcnVuZXN0YXRlLAogCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSk7 CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKaW5kZXggYjE0NzFlNjhmZS4uZjkzMDYxYzdiZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9k ZXMvZXhlY25vZGVzLmgKQEAgLTY0MCw2ICs2NDAsOCBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUK IAlMaXN0CSAgICplc19ydGVwZXJtaW5mb3M7CS8qIExpc3Qgb2YgUlRFUGVybWlzc2lvbkluZm8g Ki8KIAlQbGFubmVkU3RtdCAqZXNfcGxhbm5lZHN0bXQ7CS8qIGxpbmsgdG8gdG9wIG9mIHBsYW4g dHJlZSAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfaW5mb3M7CS8qIExpc3Qgb2YgUGFydGl0 aW9uUHJ1bmVJbmZvICovCisJTGlzdAkgICAqZXNfcGFydF9wcnVuZV9zdGF0ZXM7CS8qIExpc3Qg b2YgUGFydGl0aW9uUHJ1bmVTdGF0ZSAqLworCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfcmVzdWx0 czsJLyogTGlzdCBvZiBCaXRtYXBzZXQgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0Owkv KiBTb3VyY2UgdGV4dCBmcm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0Zp bHRlcjsJLyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KLS0gCjIuNDMuMAoK --000000000000f3ab0c06290e160f Content-Type: application/octet-stream; name="v59-0005-Remove-the-need-to-check-if-plan-is-valid-from-E.patch" Content-Disposition: attachment; filename="v59-0005-Remove-the-need-to-check-if-plan-is-valid-from-E.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l0yqu64 RnJvbSBlOWViNzIwZDIzYzU2ZjhiOTUwYjk2MTI4YmM1MmI2OTA3MTFkZDY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IE1vbiwgOSBEZWMgMjAyNCAxMjozNDowNCArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU5 IDUvNV0gUmVtb3ZlIHRoZSBuZWVkIHRvIGNoZWNrIGlmIHBsYW4gaXMgdmFsaWQgZnJvbQogRXhl Y3V0b3JTdGFydCBob29rcwoKRm9yIHRlc3RpbmcgdXNpbmcgZGVsYXlfZXhlY3V0aW9uLCBhIG5l dyBob29rCkV4ZWN1dG90U3RhcnRDYWNoZWRQbGFuX2hvb2sgaXMgYWRkZWQuICBUaGlzIGhvb2sg YWxsb3dzIHRoZQpkZWxheV9leGVjdXRpb24gbW9kdWxlIHRvIGJsb2NrIHRoZSBleGVjdXRpb24g b2YgdGhlIGNhY2hlZCBwbGFuIHRvCmFsbG93IGEgY29uY3VycmVudCBzZXNzaW9uIHRvIG1vZGlm eSB0aGUgb2JqZWN0cyByZWZlcmVuY2VkIGluIHRoZQpwbGFuLCB3aGljaCBpcyB0aGVuIGRldGVj dGVkIHdoZW4gdGhlIGxvY2tzIGFyZSB0YWtlbiBvbiBwcnVuYWJsZQpyZWxhdGlvbnMgaW4gRXhl Y3V0b3JTdGFydCgpLgotLS0KIGNvbnRyaWIvYXV0b19leHBsYWluL2F1dG9fZXhwbGFpbi5jICAg ICAgICAgICB8ICAgNCAtCiAuLi4vcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50 cy5jICAgfCAgIDQgLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyAgICAgICAgICAg ICAgIHwgMjU3ICsrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1Bh cnRpdGlvbi5jICAgICAgICAgIHwgICA3ICstCiBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFy dGl0aW9uLmggICAgICAgICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9y LmggICAgICAgICAgICAgICB8ICAzNCArLS0KIHNyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o ICAgICAgICAgICAgICAgICB8ICAgMSAtCiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVs YXlfZXhlY3V0aW9uLmMgfCAgMjAgKy0KIC4uLi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5v dXQgICAgICAgICAgICB8ICAyNiArLQogOSBmaWxlcyBjaGFuZ2VkLCAxNzkgaW5zZXJ0aW9ucygr KSwgMTc3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYXV0b19leHBsYWluL2F1 dG9fZXhwbGFpbi5jIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMKaW5kZXgg OGI1ZWFmM2VmMy4uNjIzYTY3NGY5OSAxMDA2NDQKLS0tIGEvY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMKKysrIGIvY29udHJpYi9hdXRvX2V4cGxhaW4vYXV0b19leHBsYWluLmMK QEAgLTI5OCwxMCArMjk4LDYgQEAgZXhwbGFpbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzKQogCWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVy eURlc2MsIGVmbGFncyk7CiAKLQkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBk dXJpbmcgc3RhbmRhcmRfRXhlY3V0b3JTdGFydCgpICovCi0JaWYgKCFFeGVjUGxhblN0aWxsVmFs aWQocXVlcnlEZXNjLT5lc3RhdGUpKQotCQlyZXR1cm47Ci0KIAlpZiAoYXV0b19leHBsYWluX2Vu YWJsZWQoKSkKIAl7CiAJCS8qCmRpZmYgLS1naXQgYS9jb250cmliL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0 YXRfc3RhdGVtZW50cy5jCmluZGV4IGIxMTY5MWFlMjYuLjQ5YzY1N2IzZTAgMTAwNjQ0Ci0tLSBh L2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCisrKyBiL2Nv bnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCkBAIC05OTQsMTAg Kzk5NCw2IEBAIHBnc3NfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVm bGFncykKIAllbHNlCiAJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3Mp OwogCi0JLyogVGhlIHBsYW4gbWF5IGhhdmUgYmVjb21lIGludmFsaWQgZHVyaW5nIHN0YW5kYXJk X0V4ZWN1dG9yU3RhcnQoKSAqLwotCWlmICghRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ ZXN0YXRlKSkKLQkJcmV0dXJuOwotCiAJLyoKIAkgKiBJZiBxdWVyeSBoYXMgcXVlcnlJZCB6ZXJv LCBkb24ndCB0cmFjayBpdC4gIFRoaXMgcHJldmVudHMgZG91YmxlCiAJICogY291bnRpbmcgb2Yg b3B0aW1pemFibGUgc3RhdGVtZW50cyB0aGF0IGFyZSBkaXJlY3RseSBjb250YWluZWQgaW4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDJkZmE3ZWZmNTQuLmI2MTdhOWNhOGQgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY01haW4uYwpAQCAtNjgsNiArNjgsNyBAQAogCiAvKiBIb29rcyBmb3IgcGx1Z2lu cyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRvclN0YXJ0L1J1bi9GaW5pc2gvRW5kICovCiBFeGVj dXRvclN0YXJ0X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hvb2sgPSBOVUxMOworRXhlY3V0b3JT dGFydENhY2hlZFBsYW5faG9va190eXBlIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuX2hvb2sgPSBO VUxMOwogRXhlY3V0b3JSdW5faG9va190eXBlIEV4ZWN1dG9yUnVuX2hvb2sgPSBOVUxMOwogRXhl Y3V0b3JGaW5pc2hfaG9va190eXBlIEV4ZWN1dG9yRmluaXNoX2hvb2sgPSBOVUxMOwogRXhlY3V0 b3JFbmRfaG9va190eXBlIEV4ZWN1dG9yRW5kX2hvb2sgPSBOVUxMOwpAQCAtMTIzLDYgKzEyNCwx NiBAQCBzdGF0aWMgdm9pZCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBs YW4gKnBsYW5UcmVlKTsKIHZvaWQKIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiB7CisJRVN0YXRlCSAgICplc3RhdGU7CisJTWVtb3J5Q29udGV4dCBvbGRj b250ZXh0OworCVBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQ7CisJTGlzdAkgICAqcmFuZ2VUYWJsZSA9IHBsYW5uZWRzdG10LT5ydGFibGU7CisJQ2FjaGVk UGxhbiAqY2FjaGVkcGxhbiA9IHF1ZXJ5RGVzYy0+Y3BsYW47CisKKwkvKiBzYW5pdHkgY2hlY2tz OiBxdWVyeURlc2MgbXVzdCBub3QgYmUgc3RhcnRlZCBhbHJlYWR5ICovCisJQXNzZXJ0KHF1ZXJ5 RGVzYyAhPSBOVUxMKTsKKwlBc3NlcnQocXVlcnlEZXNjLT5lc3RhdGUgPT0gTlVMTCk7CisKIAkv KgogCSAqIEluIHNvbWUgY2FzZXMgKGUuZy4gYW4gRVhFQ1VURSBzdGF0ZW1lbnQgb3IgYW4gZXhl Y3V0ZSBtZXNzYWdlIHdpdGggdGhlCiAJICogZXh0ZW5kZWQgcXVlcnkgcHJvdG9jb2wpIHRoZSBx dWVyeV9pZCB3b24ndCBiZSByZXBvcnRlZCwgc28gZG8gaXQgbm93LgpAQCAtMTMzLDYgKzE0NCwx MTcgQEAgRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkg Ki8KIAlwZ3N0YXRfcmVwb3J0X3F1ZXJ5X2lkKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnF1ZXJ5 SWQsIGZhbHNlKTsKIAorCS8qCisJICogQnVpbGQgRVN0YXRlLCBzd2l0Y2ggaW50byBwZXItcXVl cnkgbWVtb3J5IGNvbnRleHQgZm9yIHN0YXJ0dXAuCisJICovCisJZXN0YXRlID0gQ3JlYXRlRXhl Y3V0b3JTdGF0ZSgpOworCXF1ZXJ5RGVzYy0+ZXN0YXRlID0gZXN0YXRlOworCisJb2xkY29udGV4 dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhlc3RhdGUtPmVzX3F1ZXJ5X2N4dCk7CisKKwkvKgor CSAqIEZpbGwgaW4gZXh0ZXJuYWwgcGFyYW1ldGVycywgaWYgYW55LCBmcm9tIHF1ZXJ5RGVzYzsg YW5kIGFsbG9jYXRlCisJICogd29ya3NwYWNlIGZvciBpbnRlcm5hbCBwYXJhbWV0ZXJzCisJICov CisJZXN0YXRlLT5lc19wYXJhbV9saXN0X2luZm8gPSBxdWVyeURlc2MtPnBhcmFtczsKKworCWlm IChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5wYXJhbUV4ZWNUeXBlcyAhPSBOSUwpCisJeworCQlp bnQJCQluUGFyYW1FeGVjOworCisJCW5QYXJhbUV4ZWMgPSBsaXN0X2xlbmd0aChxdWVyeURlc2Mt PnBsYW5uZWRzdG10LT5wYXJhbUV4ZWNUeXBlcyk7CisJCWVzdGF0ZS0+ZXNfcGFyYW1fZXhlY192 YWxzID0gKFBhcmFtRXhlY0RhdGEgKikKKwkJCXBhbGxvYzAoblBhcmFtRXhlYyAqIHNpemVvZihQ YXJhbUV4ZWNEYXRhKSk7CisJfQorCisJLyogV2Ugbm93IHJlcXVpcmUgYWxsIGNhbGxlcnMgdG8g cHJvdmlkZSBzb3VyY2VUZXh0ICovCisJQXNzZXJ0KHF1ZXJ5RGVzYy0+c291cmNlVGV4dCAhPSBO VUxMKTsKKwllc3RhdGUtPmVzX3NvdXJjZVRleHQgPSBxdWVyeURlc2MtPnNvdXJjZVRleHQ7CisK KwkvKgorCSAqIEZpbGwgaW4gdGhlIHF1ZXJ5IGVudmlyb25tZW50LCBpZiBhbnksIGZyb20gcXVl cnlEZXNjLgorCSAqLworCWVzdGF0ZS0+ZXNfcXVlcnlFbnYgPSBxdWVyeURlc2MtPnF1ZXJ5RW52 OworCisJLyoKKwkgKiBJZiBub24tcmVhZC1vbmx5IHF1ZXJ5LCBzZXQgdGhlIGNvbW1hbmQgSUQg dG8gbWFyayBvdXRwdXQgdHVwbGVzIHdpdGgKKwkgKi8KKwlzd2l0Y2ggKHF1ZXJ5RGVzYy0+b3Bl cmF0aW9uKQorCXsKKwkJY2FzZSBDTURfU0VMRUNUOgorCisJCQkvKgorCQkJICogU0VMRUNUIEZP UiBbS0VZXSBVUERBVEUvU0hBUkUgYW5kIG1vZGlmeWluZyBDVEVzIG5lZWQgdG8gbWFyaworCQkJ ICogdHVwbGVzCisJCQkgKi8KKwkJCWlmIChxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5yb3dNYXJr cyAhPSBOSUwgfHwKKwkJCQlxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5oYXNNb2RpZnlpbmdDVEUp CisJCQkJZXN0YXRlLT5lc19vdXRwdXRfY2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsK KworCQkJLyoKKwkJCSAqIEEgU0VMRUNUIHdpdGhvdXQgbW9kaWZ5aW5nIENURXMgY2FuJ3QgcG9z c2libHkgcXVldWUgdHJpZ2dlcnMsCisJCQkgKiBzbyBmb3JjZSBza2lwLXRyaWdnZXJzIG1vZGUu IFRoaXMgaXMganVzdCBhIG1hcmdpbmFsIGVmZmljaWVuY3kKKwkJCSAqIGhhY2ssIHNpbmNlIEFm dGVyVHJpZ2dlckJlZ2luUXVlcnkvQWZ0ZXJUcmlnZ2VyRW5kUXVlcnkgYXJlbid0CisJCQkgKiBh bGwgdGhhdCBleHBlbnNpdmUsIGJ1dCB3ZSBtaWdodCBhcyB3ZWxsIGRvIGl0LgorCQkJICovCisJ CQlpZiAoIXF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPmhhc01vZGlmeWluZ0NURSkKKwkJCQllZmxh Z3MgfD0gRVhFQ19GTEFHX1NLSVBfVFJJR0dFUlM7CisJCQlicmVhazsKKworCQljYXNlIENNRF9J TlNFUlQ6CisJCWNhc2UgQ01EX0RFTEVURToKKwkJY2FzZSBDTURfVVBEQVRFOgorCQljYXNlIENN RF9NRVJHRToKKwkJCWVzdGF0ZS0+ZXNfb3V0cHV0X2NpZCA9IEdldEN1cnJlbnRDb21tYW5kSWQo dHJ1ZSk7CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJZWxvZyhFUlJPUiwgInVucmVjb2du aXplZCBvcGVyYXRpb24gY29kZTogJWQiLAorCQkJCSAoaW50KSBxdWVyeURlc2MtPm9wZXJhdGlv bik7CisJCQlicmVhazsKKwl9CisKKwkvKgorCSAqIENvcHkgb3RoZXIgaW1wb3J0YW50IGluZm9y bWF0aW9uIGludG8gdGhlIEVTdGF0ZQorCSAqLworCWVzdGF0ZS0+ZXNfc25hcHNob3QgPSBSZWdp c3RlclNuYXBzaG90KHF1ZXJ5RGVzYy0+c25hcHNob3QpOworCWVzdGF0ZS0+ZXNfY3Jvc3NjaGVj a19zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QocXVlcnlEZXNjLT5jcm9zc2NoZWNrX3NuYXBz aG90KTsKKwllc3RhdGUtPmVzX3RvcF9lZmxhZ3MgPSBlZmxhZ3M7CisJZXN0YXRlLT5lc19pbnN0 cnVtZW50ID0gcXVlcnlEZXNjLT5pbnN0cnVtZW50X29wdGlvbnM7CisJZXN0YXRlLT5lc19qaXRf ZmxhZ3MgPSBxdWVyeURlc2MtPnBsYW5uZWRzdG10LT5qaXRGbGFnczsKKworCWVzdGF0ZS0+ZXNf cGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1bmVJbmZvczsKKworCS8qCisJ ICogRG8gcGVybWlzc2lvbnMgY2hlY2tzCisJICovCisJRXhlY0NoZWNrUGVybWlzc2lvbnMocmFu Z2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywgdHJ1ZSk7CisKKwkvKgorCSAqIGluaXRp YWxpemUgdGhlIG5vZGUncyBleGVjdXRpb24gc3RhdGUKKwkgKi8KKwlFeGVjSW5pdFJhbmdlVGFi bGUoZXN0YXRlLCByYW5nZVRhYmxlLCBwbGFubmVkc3RtdC0+cGVybUluZm9zLAorCQkJCQkgICBi bXNfY29weShwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlkcykpOworCisJLyoKKwkgKiBQZXJm b3JtIHJ1bnRpbWUgImluaXRpYWwiIHBydW5pbmcgdG8gaWRlbnRpZnkgd2hpY2ggY2hpbGQgc3Vi cGxhbnMsCisJICogY29ycmVzcG9uZGluZyB0byB0aGUgY2hpbGRyZW4gb2YgcGxhbiBub2RlcyB0 aGF0IGNvbnRhaW4KKwkgKiBQYXJ0aXRpb25QcnVuZUluZm8gc3VjaCBhcyBBcHBlbmQsIHdpbGwg bm90IGJlIGV4ZWN1dGVkLiBUaGUgcmVzdWx0cywKKwkgKiB3aGljaCBhcmUgYml0bWFwc2V0cyBv ZiBpbmRleGVzIG9mIHRoZSBjaGlsZCBzdWJwbGFucyB0aGF0IHdpbGwgYmUKKwkgKiBleGVjdXRl ZCwgYXJlIHNhdmVkIGluIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29y cmVzcG9uZAorCSAqIHRvIGVhY2ggUGFydGl0aW9uUHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVz X3BhcnRfcHJ1bmVfcmVzdWx0cyBsaXN0IGlzCisJICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVu ZV9pbmZvcy4KKwkgKgorCSAqIFRoaXMgd2lsbCBhbHNvIGFkZCB0aGUgUlQgaW5kZXhlcyBvZiBz dXJ2aXZpbmcgbGVhZiBwYXJ0aXRpb25zIHRvCisJICogZXNfdW5wcnVuZWRfcmVsaWRzLgorCSAq LworCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0ZSwgY2FjaGVkcGxhbik7CisKKwlNZW1vcnlD b250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7CisKKwlpZiAoY2FjaGVkcGxhbiAmJiAhQ2FjaGVk UGxhblZhbGlkKGNhY2hlZHBsYW4pKQorCQlyZXR1cm47CisKIAlpZiAoRXhlY3V0b3JTdGFydF9o b29rKQogCQkoKkV4ZWN1dG9yU3RhcnRfaG9vaykgKHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAllbHNl CkBAIC0xNTksNiArMjgxLDIwIEBAIHZvaWQKIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzLAogCQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxh bnNvdXJjZSwKIAkJCQkJCWludCBxdWVyeV9pbmRleCkKK3sKKwlpZiAoRXhlY3V0b3JTdGFydENh Y2hlZFBsYW5faG9vaykKKwkJKCpFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbl9ob29rKSAocXVlcnlE ZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsCisJCQkJCQkJCQkJIHF1ZXJ5X2luZGV4KTsKKwllbHNl CisJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5RGVzYywgZWZsYWdzLCBw bGFuc291cmNlLAorCQkJCQkJCQkJCSBxdWVyeV9pbmRleCk7CisKK30KKwordm9pZAorc3RhbmRh cmRfRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MsCisJCQkJCQkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJCQkgaW50 IHF1ZXJ5X2luZGV4KQogewogCWlmICh1bmxpa2VseShxdWVyeURlc2MtPmNwbGFuID09IE5VTEwp KQogCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogbWlzc2luZyBDYWNo ZWRQbGFuIik7CkBAIC0xOTgsMTIgKzMzNCwxMiBAQCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbihR dWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncywKIHZvaWQKIHN0YW5kYXJkX0V4ZWN1dG9y U3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7Ci0JRVN0YXRlCSAgICpl c3RhdGU7CiAJTWVtb3J5Q29udGV4dCBvbGRjb250ZXh0OworCUVTdGF0ZQkgICAqZXN0YXRlOwog CiAJLyogc2FuaXR5IGNoZWNrczogcXVlcnlEZXNjIG11c3Qgbm90IGJlIHN0YXJ0ZWQgYWxyZWFk eSAqLwogCUFzc2VydChxdWVyeURlc2MgIT0gTlVMTCk7Ci0JQXNzZXJ0KHF1ZXJ5RGVzYy0+ZXN0 YXRlID09IE5VTEwpOworCUFzc2VydChxdWVyeURlc2MtPmVzdGF0ZSAhPSBOVUxMKTsKIAogCS8q IGNhbGxlciBtdXN0IGVuc3VyZSB0aGUgcXVlcnkncyBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KIAlB c3NlcnQoR2V0QWN0aXZlU25hcHNob3QoKSA9PSBxdWVyeURlc2MtPnNuYXBzaG90KTsKQEAgLTIy Nyw4NSArMzYzLDYgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkJIShlZmxhZ3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkKIAkJ RXhlY0NoZWNrWGFjdFJlYWRPbmx5KHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQpOwogCi0JLyoKLQkg KiBCdWlsZCBFU3RhdGUsIHN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1vcnkgY29udGV4dCBmb3Ig c3RhcnR1cC4KLQkgKi8KLQllc3RhdGUgPSBDcmVhdGVFeGVjdXRvclN0YXRlKCk7Ci0JcXVlcnlE ZXNjLT5lc3RhdGUgPSBlc3RhdGU7Ci0KLQlvbGRjb250ZXh0ID0gTWVtb3J5Q29udGV4dFN3aXRj aFRvKGVzdGF0ZS0+ZXNfcXVlcnlfY3h0KTsKLQotCS8qCi0JICogRmlsbCBpbiBleHRlcm5hbCBw YXJhbWV0ZXJzLCBpZiBhbnksIGZyb20gcXVlcnlEZXNjOyBhbmQgYWxsb2NhdGUKLQkgKiB3b3Jr c3BhY2UgZm9yIGludGVybmFsIHBhcmFtZXRlcnMKLQkgKi8KLQllc3RhdGUtPmVzX3BhcmFtX2xp c3RfaW5mbyA9IHF1ZXJ5RGVzYy0+cGFyYW1zOwotCi0JaWYgKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0 bXQtPnBhcmFtRXhlY1R5cGVzICE9IE5JTCkKLQl7Ci0JCWludAkJCW5QYXJhbUV4ZWM7Ci0KLQkJ blBhcmFtRXhlYyA9IGxpc3RfbGVuZ3RoKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnBhcmFtRXhl Y1R5cGVzKTsKLQkJZXN0YXRlLT5lc19wYXJhbV9leGVjX3ZhbHMgPSAoUGFyYW1FeGVjRGF0YSAq KQotCQkJcGFsbG9jMChuUGFyYW1FeGVjICogc2l6ZW9mKFBhcmFtRXhlY0RhdGEpKTsKLQl9Ci0K LQkvKiBXZSBub3cgcmVxdWlyZSBhbGwgY2FsbGVycyB0byBwcm92aWRlIHNvdXJjZVRleHQgKi8K LQlBc3NlcnQocXVlcnlEZXNjLT5zb3VyY2VUZXh0ICE9IE5VTEwpOwotCWVzdGF0ZS0+ZXNfc291 cmNlVGV4dCA9IHF1ZXJ5RGVzYy0+c291cmNlVGV4dDsKLQotCS8qCi0JICogRmlsbCBpbiB0aGUg cXVlcnkgZW52aXJvbm1lbnQsIGlmIGFueSwgZnJvbSBxdWVyeURlc2MuCi0JICovCi0JZXN0YXRl LT5lc19xdWVyeUVudiA9IHF1ZXJ5RGVzYy0+cXVlcnlFbnY7Ci0KLQkvKgotCSAqIElmIG5vbi1y ZWFkLW9ubHkgcXVlcnksIHNldCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIG91dHB1dCB0dXBsZXMg d2l0aAotCSAqLwotCXN3aXRjaCAocXVlcnlEZXNjLT5vcGVyYXRpb24pCi0JewotCQljYXNlIENN RF9TRUxFQ1Q6Ci0KLQkJCS8qCi0JCQkgKiBTRUxFQ1QgRk9SIFtLRVldIFVQREFURS9TSEFSRSBh bmQgbW9kaWZ5aW5nIENURXMgbmVlZCB0byBtYXJrCi0JCQkgKiB0dXBsZXMKLQkJCSAqLwotCQkJ aWYgKHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQtPnJvd01hcmtzICE9IE5JTCB8fAotCQkJCXF1ZXJ5 RGVzYy0+cGxhbm5lZHN0bXQtPmhhc01vZGlmeWluZ0NURSkKLQkJCQllc3RhdGUtPmVzX291dHB1 dF9jaWQgPSBHZXRDdXJyZW50Q29tbWFuZElkKHRydWUpOwotCi0JCQkvKgotCQkJICogQSBTRUxF Q1Qgd2l0aG91dCBtb2RpZnlpbmcgQ1RFcyBjYW4ndCBwb3NzaWJseSBxdWV1ZSB0cmlnZ2VycywK LQkJCSAqIHNvIGZvcmNlIHNraXAtdHJpZ2dlcnMgbW9kZS4gVGhpcyBpcyBqdXN0IGEgbWFyZ2lu YWwgZWZmaWNpZW5jeQotCQkJICogaGFjaywgc2luY2UgQWZ0ZXJUcmlnZ2VyQmVnaW5RdWVyeS9B ZnRlclRyaWdnZXJFbmRRdWVyeSBhcmVuJ3QKLQkJCSAqIGFsbCB0aGF0IGV4cGVuc2l2ZSwgYnV0 IHdlIG1pZ2h0IGFzIHdlbGwgZG8gaXQuCi0JCQkgKi8KLQkJCWlmICghcXVlcnlEZXNjLT5wbGFu bmVkc3RtdC0+aGFzTW9kaWZ5aW5nQ1RFKQotCQkJCWVmbGFncyB8PSBFWEVDX0ZMQUdfU0tJUF9U UklHR0VSUzsKLQkJCWJyZWFrOwotCi0JCWNhc2UgQ01EX0lOU0VSVDoKLQkJY2FzZSBDTURfREVM RVRFOgotCQljYXNlIENNRF9VUERBVEU6Ci0JCWNhc2UgQ01EX01FUkdFOgotCQkJZXN0YXRlLT5l c19vdXRwdXRfY2lkID0gR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKTsKLQkJCWJyZWFrOwotCi0J CWRlZmF1bHQ6Ci0JCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIG9wZXJhdGlvbiBjb2RlOiAl ZCIsCi0JCQkJIChpbnQpIHF1ZXJ5RGVzYy0+b3BlcmF0aW9uKTsKLQkJCWJyZWFrOwotCX0KLQot CS8qCi0JICogQ29weSBvdGhlciBpbXBvcnRhbnQgaW5mb3JtYXRpb24gaW50byB0aGUgRVN0YXRl Ci0JICovCi0JZXN0YXRlLT5lc19zbmFwc2hvdCA9IFJlZ2lzdGVyU25hcHNob3QocXVlcnlEZXNj LT5zbmFwc2hvdCk7Ci0JZXN0YXRlLT5lc19jcm9zc2NoZWNrX3NuYXBzaG90ID0gUmVnaXN0ZXJT bmFwc2hvdChxdWVyeURlc2MtPmNyb3NzY2hlY2tfc25hcHNob3QpOwotCWVzdGF0ZS0+ZXNfdG9w X2VmbGFncyA9IGVmbGFnczsKLQllc3RhdGUtPmVzX2luc3RydW1lbnQgPSBxdWVyeURlc2MtPmlu c3RydW1lbnRfb3B0aW9uczsKLQllc3RhdGUtPmVzX2ppdF9mbGFncyA9IHF1ZXJ5RGVzYy0+cGxh bm5lZHN0bXQtPmppdEZsYWdzOwotCiAJLyoKIAkgKiBTZXQgdXAgYW4gQUZURVItdHJpZ2dlciBz dGF0ZW1lbnQgY29udGV4dCwgdW5sZXNzIHRvbGQgbm90IHRvLCBvcgogCSAqIHVubGVzcyBpdCdz IEVYUExBSU4tb25seSBtb2RlICh3aGVuIEV4ZWN1dG9yRmluaXNoIHdvbid0IGJlIGNhbGxlZCku CkBAIC0zMTMsNiArMzcwLDkgQEAgc3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1 ZXJ5RGVzYywgaW50IGVmbGFncykKIAlpZiAoIShlZmxhZ3MgJiAoRVhFQ19GTEFHX1NLSVBfVFJJ R0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVl cnkoKTsKIAorCWVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOworCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8oZXN0YXRlLT5lc19xdWVyeV9jeHQpOworCiAJLyoKIAkgKiBJbml0 aWFsaXplIHRoZSBwbGFuIHN0YXRlIHRyZWUKIAkgKi8KQEAgLTkyOCw0NiArOTg4LDE0IEBAIElu aXRQbGFuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogewogCUNtZFR5cGUJCW9w ZXJhdGlvbiA9IHF1ZXJ5RGVzYy0+b3BlcmF0aW9uOwogCVBsYW5uZWRTdG10ICpwbGFubmVkc3Rt dCA9IHF1ZXJ5RGVzYy0+cGxhbm5lZHN0bXQ7Ci0JQ2FjaGVkUGxhbiAqY2FjaGVkcGxhbiA9IHF1 ZXJ5RGVzYy0+Y3BsYW47CiAJUGxhbgkgICAqcGxhbiA9IHBsYW5uZWRzdG10LT5wbGFuVHJlZTsK LQlMaXN0CSAgICpyYW5nZVRhYmxlID0gcGxhbm5lZHN0bXQtPnJ0YWJsZTsKIAlFU3RhdGUJICAg KmVzdGF0ZSA9IHF1ZXJ5RGVzYy0+ZXN0YXRlOwogCVBsYW5TdGF0ZSAgKnBsYW5zdGF0ZTsKIAlU dXBsZURlc2MJdHVwVHlwZTsKIAlMaXN0Q2VsbCAgICpsOwogCWludAkJCWk7CiAKLQkvKgotCSAq IERvIHBlcm1pc3Npb25zIGNoZWNrcwotCSAqLwotCUV4ZWNDaGVja1Blcm1pc3Npb25zKHJhbmdl VGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsIHRydWUpOwotCi0JLyoKLQkgKiBpbml0aWFs aXplIHRoZSBub2RlJ3MgZXhlY3V0aW9uIHN0YXRlCi0JICovCi0JRXhlY0luaXRSYW5nZVRhYmxl KGVzdGF0ZSwgcmFuZ2VUYWJsZSwgcGxhbm5lZHN0bXQtPnBlcm1JbmZvcywKLQkJCQkJICAgYm1z X2NvcHkocGxhbm5lZHN0bXQtPnVucHJ1bmFibGVSZWxpZHMpKTsKLQogCWVzdGF0ZS0+ZXNfcGxh bm5lZHN0bXQgPSBwbGFubmVkc3RtdDsKLQllc3RhdGUtPmVzX2NhY2hlZHBsYW4gPSBjYWNoZWRw bGFuOwotCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvcyA9IHBsYW5uZWRzdG10LT5wYXJ0UHJ1 bmVJbmZvczsKLQotCS8qCi0JICogUGVyZm9ybSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nIHRv IGlkZW50aWZ5IHdoaWNoIGNoaWxkIHN1YnBsYW5zLAotCSAqIGNvcnJlc3BvbmRpbmcgdG8gdGhl IGNoaWxkcmVuIG9mIHBsYW4gbm9kZXMgdGhhdCBjb250YWluCi0JICogUGFydGl0aW9uUHJ1bmVJ bmZvIHN1Y2ggYXMgQXBwZW5kLCB3aWxsIG5vdCBiZSBleGVjdXRlZC4gVGhlIHJlc3VsdHMsCi0J ICogd2hpY2ggYXJlIGJpdG1hcHNldHMgb2YgaW5kZXhlcyBvZiB0aGUgY2hpbGQgc3VicGxhbnMg dGhhdCB3aWxsIGJlCi0JICogZXhlY3V0ZWQsIGFyZSBzYXZlZCBpbiBlc19wYXJ0X3BydW5lX3Jl c3VsdHMuICBUaGVzZSByZXN1bHRzIGNvcnJlc3BvbmQKLQkgKiB0byBlYWNoIFBhcnRpdGlvblBy dW5lSW5mbyBlbnRyeSwgYW5kIHRoZSBlc19wYXJ0X3BydW5lX3Jlc3VsdHMgbGlzdCBpcwotCSAq IHBhcmFsbGVsIHRvIGVzX3BhcnRfcHJ1bmVfaW5mb3MuCi0JICoKLQkgKiBUaGlzIHdpbGwgYWxz byBhZGQgdGhlIFJUIGluZGV4ZXMgb2Ygc3Vydml2aW5nIGxlYWYgcGFydGl0aW9ucyB0bwotCSAq IGVzX3VucHJ1bmVkX3JlbGlkcy4KLQkgKi8KLQlFeGVjRG9Jbml0aWFsUHJ1bmluZyhlc3RhdGUp OwotCi0JaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKLQkJcmV0dXJuOwogCiAJLyoK IAkgKiBOZXh0LCBidWlsZCB0aGUgRXhlY1Jvd01hcmsgYXJyYXkgZnJvbSB0aGUgUGxhblJvd01h cmsocyksIGlmIGFueS4KQEAgLTI5NjEsOSArMjk4OSw2IEBAIEV2YWxQbGFuUXVhbFN0YXJ0KEVQ UVN0YXRlICplcHFzdGF0ZSwgUGxhbiAqcGxhblRyZWUpCiAJICogdGhlIHNuYXBzaG90LCByYW5n ZXRhYmxlLCBhbmQgZXh0ZXJuYWwgUGFyYW0gaW5mby4gIFRoZXkgbmVlZCB0aGVpciBvd24KIAkg KiBjb3BpZXMgb2YgbG9jYWwgc3RhdGUsIGluY2x1ZGluZyBhIHR1cGxlIHRhYmxlLCBlc19wYXJh bV9leGVjX3ZhbHMsCiAJICogcmVzdWx0LXJlbCBpbmZvLCBldGMuCi0JICoKLQkgKiBlc19jYWNo ZWRwbGFuIGlzIG5vdCBjb3BpZWQgYmVjYXVzZSBFUFEgcGxhbiBleGVjdXRpb24gZG9lcyBub3Qg YWNxdWlyZQotCSAqIGFueSBuZXcgbG9ja3MgdGhhdCBjb3VsZCBpbnZhbGlkYXRlIHRoZSBDYWNo ZWRQbGFuLgogCSAqLwogCXJjZXN0YXRlLT5lc19kaXJlY3Rpb24gPSBGb3J3YXJkU2NhbkRpcmVj dGlvbjsKIAlyY2VzdGF0ZS0+ZXNfc25hcHNob3QgPSBwYXJlbnRlc3RhdGUtPmVzX3NuYXBzaG90 OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IGFjNmJjNDMyNmIuLjcyZjU5 NzM3NTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTE4MTMsNyArMTgx Myw3IEBAIGFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0 dHJNYXAgKmF0dHJNYXApCiAgKiB1c2UgdGhlIHNhbWUgaW5kZXggdG8gcmV0cmlldmUgdGhlIHBy dW5pbmcgcmVzdWx0cy4KICAqLwogdm9pZAotRXhlY0RvSW5pdGlhbFBydW5pbmcoRVN0YXRlICpl c3RhdGUpCitFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSwgQ2FjaGVkUGxhbiAq Y3BsYW4pCiB7CiAJTGlzdENlbGwgICAqbGM7CiAJTGlzdAkgICAqbG9ja2VkX3JlbGlkcyA9IE5J TDsKQEAgLTE4NDIsNyArMTg0Miw3IEBAIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0 YXRlKQogCQllbHNlCiAJCQl2YWxpZHN1YnBsYW5fcnRpcyA9IGFsbF9sZWFmcGFydF9ydGlzOwog Ci0JCWlmIChFeGVjU2hvdWxkTG9ja1JlbGF0aW9ucyhlc3RhdGUpKQorCQlpZiAoY3BsYW4gJiYg Q2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhjcGxhbikpCiAJCXsKIAkJCWludAkJcnRpbmRleCA9 IC0xOwogCkBAIC0xODU3LDYgKzE4NTcsNyBAQCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUg KmVzdGF0ZSkKIAkJCQlsb2NrZWRfcmVsaWRzID0gbGFwcGVuZF9pbnQobG9ja2VkX3JlbGlkcywg cnRpbmRleCk7CiAJCQl9CiAJCX0KKwogCQllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IGJt c19hZGRfbWVtYmVycyhlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcywKIAkJCQkJCQkJCQkJCQkg dmFsaWRzdWJwbGFuX3J0aXMpOwogCQllc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cyA9IGxh cHBlbmQoZXN0YXRlLT5lc19wYXJ0X3BydW5lX3Jlc3VsdHMsCkBAIC0xODY3LDcgKzE4NjgsNyBA QCBFeGVjRG9Jbml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSkKIAkgKiBSZWxlYXNlIHRoZSB1 c2VsZXNzIGxvY2tzIGlmIHRoZSBwbGFuIHdvbid0IGJlIGV4ZWN1dGVkLiAgVGhpcyBpcyB0aGUK IAkgKiBzYW1lIGFzIHdoYXQgQ2hlY2tDYWNoZWRQbGFuKCkgaW4gcGxhbmNhY2hlLmMgZG9lcy4K IAkgKi8KLQlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCWlmIChjcGxhbiAmJiAh Q2FjaGVkUGxhblZhbGlkKGNwbGFuKSkKIAl7CiAJCWZvcmVhY2gobGMsIGxvY2tlZF9yZWxpZHMp CiAJCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBi L3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaAppbmRleCBhMDg0MzQ4MWY3Li45 NWQ4ODY4ODRjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUGFydGl0aW9u LmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5oCkBAIC0xNyw2ICsx Nyw3IEBACiAjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgIm5vZGVzL3Bs YW5ub2Rlcy5oIgogI2luY2x1ZGUgInBhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuaCIKKyNpbmNsdWRl ICJ1dGlscy9wbGFuY2FjaGUuaCIKIAogLyogU2VlIGV4ZWNQYXJ0aXRpb24uYyBmb3IgdGhlIGRl ZmluaXRpb25zLiAqLwogdHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9uRGlzcGF0Y2hEYXRhICpQYXJ0 aXRpb25EaXNwYXRjaDsKQEAgLTEzNiw3ICsxMzcsNyBAQCB0eXBlZGVmIHN0cnVjdCBQYXJ0aXRp b25QcnVuZVN0YXRlCiAJUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBhcnRwcnVuZWRhdGFbRkxFWElC TEVfQVJSQVlfTUVNQkVSXTsKIH0gUGFydGl0aW9uUHJ1bmVTdGF0ZTsKIAotdm9pZCBFeGVjRG9J bml0aWFsUHJ1bmluZyhFU3RhdGUgKmVzdGF0ZSk7Cit2b2lkIEV4ZWNEb0luaXRpYWxQcnVuaW5n KEVTdGF0ZSAqZXN0YXRlLCBDYWNoZWRQbGFuICpjcGxhbik7CiBleHRlcm4gUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqRXhlY0luaXRQYXJ0aXRpb25FeGVjUHJ1bmluZyhQbGFuU3RhdGUgKnBsYW5zdGF0 ZSwKIAkJCQkJCQkJCQkJCQkJIGludCBuX3RvdGFsX3N1YnBsYW5zLAogCQkJCQkJCQkJCQkJCQkg aW50IHBhcnRfcHJ1bmVfaW5kZXgsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9l eGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCAwMjU4NGRk MTU0Li5iMDc5NDJhNDU3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRv ci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTc2LDYgKzc2LDEy IEBACiB0eXBlZGVmIHZvaWQgKCpFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSkgKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKIGV4dGVybiBQR0RMTElNUE9SVCBFeGVjdXRvclN0YXJ0 X2hvb2tfdHlwZSBFeGVjdXRvclN0YXJ0X2hvb2s7CiAKKy8qIEhvb2sgZm9yIHBsdWdpbnMgdG8g Z2V0IGNvbnRyb2wgaW4gRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKSAqLwordHlwZWRlZiB2b2lk ICgqRXhlY3V0b3JTdGFydENhY2hlZFBsYW5faG9va190eXBlKSAoUXVlcnlEZXNjICpxdWVyeURl c2MsIGludCBlZmxhZ3MsCisJCQkJCQkJCQkJCQkgICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291 cmNlLAorCQkJCQkJCQkJCQkJICAgaW50IHF1ZXJ5X2luZGV4KTsKK2V4dGVybiBQR0RMTElNUE9S VCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbl9ob29rX3R5cGUgRXhlY3V0b3JTdGFydENhY2hlZFBs YW5faG9vazsKKwogLyogSG9vayBmb3IgcGx1Z2lucyB0byBnZXQgY29udHJvbCBpbiBFeGVjdXRv clJ1bigpICovCiB0eXBlZGVmIHZvaWQgKCpFeGVjdXRvclJ1bl9ob29rX3R5cGUpIChRdWVyeURl c2MgKnF1ZXJ5RGVzYywKIAkJCQkJCQkJCSAgIFNjYW5EaXJlY3Rpb24gZGlyZWN0aW9uLApAQCAt MjAzLDYgKzIwOSw5IEBAIGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKFF1ZXJ5 RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzLAogCQkJCQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZSwKIAkJCQkJCQkJCWludCBxdWVyeV9pbmRleCk7CiBleHRlcm4gdm9pZCBzdGFu ZGFyZF9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKTsKK2V4 dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKFF1ZXJ5RGVzYyAqcXVl cnlEZXNjLCBpbnQgZWZsYWdzLAorCQkJCQkJCQkJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNv dXJjZSwKKwkJCQkJCQkJCQkJIGludCBxdWVyeV9pbmRleCk7CiBleHRlcm4gdm9pZCBFeGVjdXRv clJ1bihRdWVyeURlc2MgKnF1ZXJ5RGVzYywKIAkJCQkJCVNjYW5EaXJlY3Rpb24gZGlyZWN0aW9u LCB1aW50NjQgY291bnQsIGJvb2wgZXhlY3V0ZV9vbmNlKTsKIGV4dGVybiB2b2lkIHN0YW5kYXJk X0V4ZWN1dG9yUnVuKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLApAQCAtMjY1LDMxICsyNzQsNiBAQCBl eHRlcm4gdm9pZCBFeGVjRW5kTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhl Y1NodXRkb3duTm9kZShQbGFuU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1NldFR1cGxl Qm91bmQoaW50NjQgdHVwbGVzX25lZWRlZCwgUGxhblN0YXRlICpjaGlsZF9ub2RlKTsKIAotLyoK LSAqIElzIHRoZSBDYWNoZWRQbGFuIGluIGVzX2NhY2hlZHBsYW4gc3RpbGwgdmFsaWQ/Ci0gKgot ICogQ2FsbGVkIGZyb20gSW5pdFBsYW4oKSBiZWNhdXNlIGludmFsaWRhdGlvbiBtZXNzYWdlcyB0 aGF0IGFmZmVjdCB0aGUgcGxhbgotICogbWlnaHQgYmUgcmVjZWl2ZWQgYWZ0ZXIgbG9ja3MgaGF2 ZSBiZWVuIHRha2VuIG9uIHJ1bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zLgotICogVGhlIGNhbGxl ciBzaG91bGQgdGFrZSBhcHByb3ByaWF0ZSBhY3Rpb24gaWYgdGhlIHBsYW4gaGFzIGJlY29tZSBp bnZhbGlkLgotICovCi1zdGF0aWMgaW5saW5lIGJvb2wKLUV4ZWNQbGFuU3RpbGxWYWxpZChFU3Rh dGUgKmVzdGF0ZSkKLXsKLQlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09IE5VTEwgPyB0 cnVlIDoKLQkJQ2FjaGVkUGxhblZhbGlkKGVzdGF0ZS0+ZXNfY2FjaGVkcGxhbik7Ci19Ci0KLS8q Ci0gKiBMb2NrcyBhcmUgbmVlZGVkIG9ubHkgaWYgcnVubmluZyBhIGNhY2hlZCBwbGFuIHRoYXQg bWlnaHQgY29udGFpbiB1bmxvY2tlZAotICogcmVsYXRpb25zLCBzdWNoIGFzIGEgcmV1c2VkIGdl bmVyaWMgcGxhbi4KLSAqLwotc3RhdGljIGlubGluZSBib29sCi1FeGVjU2hvdWxkTG9ja1JlbGF0 aW9ucyhFU3RhdGUgKmVzdGF0ZSkKLXsKLQlyZXR1cm4gZXN0YXRlLT5lc19jYWNoZWRwbGFuID09 IE5VTEwgPyBmYWxzZSA6Ci0JCUNhY2hlZFBsYW5SZXF1aXJlc0xvY2tpbmcoZXN0YXRlLT5lc19j YWNoZWRwbGFuKTsKLX0KLQogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoJCUV4ZWNQcm9jTm9kZQogICoKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv ZXhlY25vZGVzLmgKaW5kZXggOTY0M2E5ZDYyNi4uNDVhOWUzZTVhNSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25v ZGVzLmgKQEAgLTY0MCw3ICs2NDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBFU3RhdGUKIAkJCQkJCQkJ CQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAqLwogCUxpc3QJICAgKmVzX3J0ZXBl cm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5mbyAqLwogCVBsYW5uZWRTdG10ICpl c19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxhbiB0cmVlICovCi0JQ2FjaGVkUGxh biAqZXNfY2FjaGVkcGxhbjsJCS8qIENhY2hlZFBsYW4gcHJvdmlkaW5nIHRoZSBwbGFuIHRyZWUg Ki8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBy dW5lSW5mbyAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVfc3RhdGVzOwkvKiBMaXN0IG9mIFBh cnRpdGlvblBydW5lU3RhdGUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX3Jlc3VsdHM7CS8q IExpc3Qgb2YgQml0bWFwc2V0ICovCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5 X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IDQ0YWE4MjhmZGYuLmEzYmZhZWQzNzIgMTAw NjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlv bi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlv bi5jCkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbnQJZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9 IDA7CiAKIC8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2VycyB0byBiZSBhIGdvb2QgY2l0aXplbiAq Lwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZfcGxhbm5lcl9ob29rID0gTlVMTDsKLXN0 YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5V TEw7CitzdGF0aWMgRXhlY3V0b3JTdGFydENhY2hlZFBsYW5faG9va190eXBlIHByZXZfRXhlY3V0 b3JTdGFydENhY2hlZFBsYW5faG9vayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0 aW9uIHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTc5LDcgKzc5LDkgQEAgZGVs YXlfZXhlY3V0aW9uX3BsYW5uZXIoUXVlcnkgKnBhcnNlLCBjb25zdCBjaGFyICpxdWVyeV9zdHJp bmcsCiAKIC8qIEV4ZWN1dG9yU3RhcnRfaG9vayBmdW5jdGlvbiB0byBwcm92aWRlIHRoZSBkZXNp cmVkIGRlbGF5ICovCiBzdGF0aWMgdm9pZAotZGVsYXlfZXhlY3V0aW9uX0V4ZWN1dG9yU3RhcnQo UXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCitkZWxheV9leGVjdXRpb25fRXhlY3V0 b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJ CQkJCQkJQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCQkJCQkJCQlpbnQgcXVlcnlf aW5kZXgpCiB7CiAJLyogSWYgZW5hYmxlZCwgZGVsYXkgYnkgdGFraW5nIGFuZCByZWxlYXNpbmcg dGhlIHNwZWNpZmllZCBsb2NrICovCiAJaWYgKGV4ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkK QEAgLTk3LDEzICs5OSwxNSBAQCBkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydChRdWVyeURl c2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAl9CiAKIAkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1 dG9yLCBwb3NzaWJseSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KLQlpZiAocHJldl9FeGVj dXRvclN0YXJ0X2hvb2spCi0JCXByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZs YWdzKTsKKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbl9ob29rKQorCQlwcmV2X0V4 ZWN1dG9yU3RhcnRDYWNoZWRQbGFuX2hvb2socXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2Us CisJCQkJCQkJCQkJICBxdWVyeV9pbmRleCk7CiAJZWxzZQotCQlzdGFuZGFyZF9FeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydENhY2hlZFBs YW4ocXVlcnlEZXNjLCBlZmxhZ3MsIHBsYW5zb3VyY2UsCisJCQkJCQkJCQkJIHF1ZXJ5X2luZGV4 KTsKIAogCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCi0JCWVsb2coTk9USUNFLCAi RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzICVzIiwKKwkJZWxvZyhOT1RJ Q0UsICJGaW5pc2hlZCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBDYWNoZWRQbGFuIGlzICVz IiwKIAkJCSBDYWNoZWRQbGFuVmFsaWQocXVlcnlEZXNjLT5jcGxhbikgPyAidmFsaWQiIDogIm5v dCB2YWxpZCIpOwogfQogCkBAIC0xMzksNiArMTQzLDYgQEAgX1BHX2luaXQodm9pZCkKIAkvKiBJ bnN0YWxsIG91ciBob29rcy4gKi8KIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBsYW5uZXJfaG9vazsK IAlwbGFubmVyX2hvb2sgPSBkZWxheV9leGVjdXRpb25fcGxhbm5lcjsKLQlwcmV2X0V4ZWN1dG9y U3RhcnRfaG9vayA9IEV4ZWN1dG9yU3RhcnRfaG9vazsKLQlFeGVjdXRvclN0YXJ0X2hvb2sgPSBk ZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydDsKKwlwcmV2X0V4ZWN1dG9yU3RhcnRDYWNoZWRQ bGFuX2hvb2sgPSBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbl9ob29rOworCUV4ZWN1dG9yU3RhcnRD YWNoZWRQbGFuX2hvb2sgPSBkZWxheV9leGVjdXRpb25fRXhlY3V0b3JTdGFydENhY2hlZFBsYW47 CiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3Rl ZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKaW5kZXggNWJmYjJiMzNiMy4uMTY1Zjg2 NWI3YSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0 ZWQvY2FjaGVkLXBsYW4taW52YWwub3V0CisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhl Y3V0aW9uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dApAQCAtMzIsOCArMzIsNyBAQCB0 CiAoMSByb3cpCiAKIHN0ZXAgczFleGVjOiA8Li4uIGNvbXBsZXRlZD4KLXMxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCi1zMTogTk9U SUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitzMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAogUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIAogLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogTG9ja1Jvd3MgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIApAQCAtNDgsNyArNDcsNyBAQCBzdGFydGluZyBwZXJtdXRhdGlvbjogczFwcmVw MiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2NrCiBzdGVwIHMxcHJlcDI6IFNFVCBwbGFu X2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CiAJCSAgUFJFUEFSRSBxMiBBUyBTRUxF Q1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKIAkJICBFWFBMQUlO IChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7Ci1zMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JT dGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0 b3JTdGFydENhY2hlZFBsYW4oKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAogUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBBcHBlbmQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtODEsOCArODAsNyBAQCB0CiAoMSByb3cpCiAK IHN0ZXAgczFleGVjMjogPC4uLiBjb21wbGV0ZWQ+Ci1zMTogTk9USUNFOiAgRmluaXNoZWQgRXhl Y3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAotczE6IE5PVElDRTogIEZpbmlz aGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQXBwZW5kICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKQEAgLTk4LDkgKzk2LDkgQEAgc3RhcnRpbmcgcGVybXV0YXRp b246IHMxcHJlcDMgczJsb2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jawogc3RlcCBzMXByZXAz OiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwogCQkgIFBSRVBBUkUg cTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7 CiAJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOwotczE6IE5PVElDRTogIEZpbmlz aGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAotczE6IE5PVElDRTogIEZp bmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAotczE6IE5PVElDRTog IEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElD RTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCk6IENhY2hlZFBsYW4gaXMgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBDYWNo ZWRQbGFuIGlzIHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydENhY2hl ZFBsYW4oKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAogUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIC0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBOZXN0ZWQgTG9vcCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtMTc4 LDEwICsxNzYsOSBAQCB0CiAoMSByb3cpCiAKIHN0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+ Ci1zMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5v dCB2YWxpZAotczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxh biBpcyB2YWxpZAotczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVk UGxhbiBpcyB2YWxpZAotczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2Fj aGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnRDYWNo ZWRQbGFuKCk6IENhY2hlZFBsYW4gaXMgdmFsaWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVj dXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAog UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIApAQCAtMjMzLDcgKzIzMCw3IEBAIHN0ZXAgczFwcmVwNDogU0VUIHBs YW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKIAkJICBTRVQgZW5hYmxlX3NlcXNj YW4gVE8gb2ZmOwogCQkgIFBSRVBBUkUgcTQgQVMgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZP UiBVUERBVEUpOwogCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7Ci1zMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitz MTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogQ2FjaGVkUGxh biBpcyB2YWxpZAogUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIApAQCAtMjY0LDggKzI2MSw3IEBAIHQK ICgxIHJvdykKIAogc3RlcCBzMWV4ZWM0OiA8Li4uIGNvbXBsZXRlZD4KLXMxOiBOT1RJQ0U6ICBG aW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCi1zMTogTk9U SUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitzMTog Tk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTogQ2FjaGVkUGxhbiBp cyB2YWxpZAogUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFJlc3VsdCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLSAKMi40My4wCgo= --000000000000f3ab0c06290e160f Content-Type: application/octet-stream; name="v59-0004-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Disposition: attachment; filename="v59-0004-Defer-locking-of-runtime-prunable-relations-in-c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m4l0yqu53 RnJvbSBiZTU5MDhmODMzNGRhMGE2ZWI2MzlmZjAyZTM0ZWU1MzgzNTcxZjRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbWl0IExhbmdvdGUgPGFtaXRsYW5AcG9zdGdyZXNxbC5vcmc+ CkRhdGU6IFdlZCwgNCBEZWMgMjAyNCAxNjoxNjo1NiArMDkwMApTdWJqZWN0OiBbUEFUQ0ggdjU5 IDQvNV0gRGVmZXIgbG9ja2luZyBvZiBydW50aW1lLXBydW5hYmxlIHJlbGF0aW9ucyBpbiBjYWNo ZWQKIHBsYW5zCgpBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGluIHBsYW5jYWNoZS5jIGxvY2tzIGFs bCByZWxhdGlvbnMgaW4gYQpwbGFuJ3MgcmFuZ2UgdGFibGUgdG8gZW5zdXJlIHRoZSBwbGFuIGlz IHNhZmUgZm9yIGV4ZWN1dGlvbi4gSG93ZXZlciwKdGhpcyBhcHByb2FjaCBhbHNvIGxvY2tzIHJ1 bnRpbWUtcHJ1bmFibGUgcmVsYXRpb25zIHRoYXQgd2lsbCBsYXRlcgpiZSBwcnVuZWQgZHVyaW5n ICJpbml0aWFsIiBydW50aW1lIHBydW5pbmcsIGludHJvZHVjaW5nIHVubmVjZXNzYXJ5Cm92ZXJo ZWFkLiBUaGlzIGNvbW1pdCBkZWZlcnMgbG9ja2luZyBmb3Igc3VjaCByZWxhdGlvbnMgYW5kIGVu c3VyZXMKdGhhdCBhbnkgaW52YWxpZGF0aW9uIGNhdXNlZCBieSB0aGlzIGRlZmVycmFsIGlzIGhh bmRsZWQgYnkKcmVwbGFubmluZyB3aGVuIG5lY2Vzc2FyeS4KCiogTG9ja2luZyBjaGFuZ2VzOgoK VGhlIHBsYW5uZXIgbm93IHRyYWNrcyAidW5wcnVuYWJsZSIgcmVsYXRpb25zIHVzaW5nIHRoZSBu ZXcKUGxhbm5lZFN0bXQudW5wcnVuYWJsZVJlbGlkcyBmaWVsZCwgd2hpY2ggaXMgY29tcHV0ZWQg ZHVyaW5nCnNldF9wbGFuX3JlZnMoKSBieSBzdWJ0cmFjdGluZyBydW50aW1lLXBydW5hYmxlIHJl bGF0aW9uIFJUIGluZGV4ZXMKKGlkZW50aWZpZWQgZnJvbSBQYXJ0aXRpb25QcnVuZUluZm9zKSBm cm9tIGFsbCBSVCBpbmRleGVzLgpBY3F1aXJlRXhlY3V0b3JMb2NrcygpIGxvY2tzIG9ubHkgdGhl c2UgdW5wcnVuYWJsZSByZWxhdGlvbnMuCgpEdXJpbmcgZXhlY3V0b3Igc3RhcnR1cCwgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKSBpZGVudGlmaWVzIHVucHJ1bmVkCnBhcnRpdGlvbnMgYW5kIGFjcXVp cmVzIGxvY2tzIG9uIHRoZW0uIEEgbmV3IGVzX3VucHJ1bmVkX3JlbGlkcyBmaWVsZAppcyBhZGRl ZCB0byBFU3RhdGUgdG8gZW5zdXJlIHRoYXQgc3Vic2VxdWVudCBpbml0aWFsaXphdGlvbiBzdGVw cwpwcm9jZXNzIG9ubHkgbG9ja2VkIHJlbGF0aW9ucy4gSXQgaXMgaW5pdGlhbGx5IHBvcHVsYXRl ZCB3aXRoClBsYW5uZWRTdG10LnVucHJ1bmFibGVSZWxpZHMgYW5kIHVwZGF0ZWQgYnkgRXhlY0Rv SW5pdGlhbFBydW5pbmcoKQp3aXRoIHRoZSBSVCBpbmRleGVzIG9mIHRoZSB1bnBydW5lZCBwYXJ0 aXRpb25zLiBUbyBwb3B1bGF0ZQplc191bnBydW5lZF9yZWxpZHMsIFBhcnRpdGlvbmVkUmVsUHJ1 bmVJbmZvIGFuZApQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhIG5vdyBpbmNsdWRlIGEgbGVhZnBh cnRfcnRpX21hcFtdIHRvIG1hcApwYXJ0aXRpb24gaW5kZXhlcyAoYXMgZGV0ZXJtaW5lZCBieSBn ZXRfbWF0Y2hpbmdfcGFydGl0aW9ucygpKSB0bwp0aGVpciBjb3JyZXNwb25kaW5nIFJUIGluZGV4 ZXMuCgpFeGVjdXRvciBjb2RlIHRoYXQgd29ya3Mgd2l0aCBjaGlsZCByZXN1bHQgcmVsYXRpb25z IGFuZCBjaGlsZApSb3dNYXJrcyByZXF1aXJlIGFkanVzdG1lbnRzIGJlY2F1c2UgcHJ1bmVkIHJl bGF0aW9ucyBhcmUgbm8gbG9uZ2VyCmxvY2tlZCwgYmVjYXVzZSB3aXRob3V0IHN1Y2ggYWRqdXN0 bWVudHMsIHRoZSBleGVjdXRvciBjb3VsZCBhdHRlbXB0CnRvIHByb2Nlc3MgcmVzdWx0IHJlbGF0 aW9ucyBvciBSb3dNYXJrcyBmb3IgcHJ1bmVkIHBhcnRpdGlvbnMuClNwZWNpZmljYWxseSwgRXhl Y0luaXRNb2RpZnlUYWJsZSgpIHRyaW1zIHJlc3VsdCByZWxhdGlvbi1yZWxhdGVkCmxpc3RzIHJl c3VsdFJlbGF0aW9ucywgd2l0aENoZWNrT3B0aW9uTGlzdHMsIHJldHVybmluZ0xpc3RzLCBhbmQK dXBkYXRlQ29sbm9zTGlzdHMgdG8gaW5jbHVkZSBvbmx5IHVucHJ1bmVkIHBhcnRpdGlvbnMgYnkg Y2hlY2tpbmcKZXNfcHJ1bmVkX3JlbGlkcy4gSXQgYWxzbyBjcmVhdGVzIFJlc3VsdFJlbEluZm8g c3RydWN0cyBvbmx5IGZvcgp0aGVzZSB1bnBydW5lZCBwYXJ0aXRpb25zLiBTaW1pbGFybHksIGNo aWxkIFJvd01hcmtzIHdob3NlIG93bmluZwpyZWxhdGlvbnMgYXJlIHBydW5lZCBhcmUgbm93IGln bm9yZWQsIGFnYWluIGJ5IGNoZWNraW5nCmVzX3VucHJ1bmVkX3JlbGlkcywgZW5zdXJpbmcgb25s eSB0aG9zZSBhc3NvY2lhdGVkIHdpdGggdW5wcnVuZWQKcmVsYXRpb25zIGFyZSBwcm9jZXNzZWQu CgpGaW5hbGx5LCBFeGVjQ2hlY2tQZXJtaXNzaW9ucygpIG5vdyBpbmNsdWRlcyBhbiBBc3NlcnQg dG8gdmVyaWZ5IHRoYXQKYWxsIHJlbGF0aW9ucyB1bmRlcmdvaW5nIHBlcm1pc3Npb24gY2hlY2tz IGhhdmUgYmVlbiBwcm9wZXJseSBsb2NrZWQuClRoaXMgc2FmZWd1YXJkIGhlbHBzIGNhdGNoIGFu eSBjYXNlcyB3aGVyZSByZWxhdGlvbnMgdGhhdCBzaG91bGQgaGF2ZQpiZWVuIGFkZGVkIHRvIHRo ZSB1bnBydW5hYmxlUmVsaWRzIHNldCB3ZXJlIG1pc3NlZCBkdXJpbmcgcGxhbm5pbmcuCgoqIENo YW5nZWQgcmVsYXRlZCB0byBoYW5kbGluZyBwbGFuIGludmFsaWRhdGlvbjoKCkRlZmVycmluZyBs b2NrcyBpbnRyb2R1Y2VzIGEgd2luZG93IHdoZXJlIHBydW5hYmxlIHJlbGF0aW9ucyBtYXkgYmUK YWx0ZXJlZCBieSBjb25jdXJyZW50IERETCwgaW52YWxpZGF0aW5nIHRoZSBwbGFuLiBUbyBlbnN1 cmUKY29ycmVjdG5lc3MsIGEgbmV3IEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCkgZnVuY3Rpb24g dGhhdCB3cmFwcwpFeGVjdXRvclN0YXJ0KCkgaXMgYWRkZWQgdG8gZGV0ZWN0IGFuZCBoYW5kbGUg aW52YWxpZCBwbGFucyBjYXVzZWQgYnkKZGVmZXJyZWQgbG9ja2luZy4gV2hlbiBpbnZhbGlkYXRp b24gb2NjdXJzLCBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpCnVwZGF0ZXMgYWxsIHBsYW5zIGlu IHRoZSBDYWNoZWRQbGFuIHVzaW5nIHRoZSBuZXcgVXBkYXRlQ2FjaGVkUGxhbigpCmZ1bmN0aW9u IGFuZCByZXRyaWVzIGV4ZWN1dGlvbiB3aXRoIHRoZSByZWZyZXNoZWQgcGxhbi4KClVwZGF0ZUNh Y2hlZFBsYW4oKSByZXBsYWNlcyBzdGFsZSBwbGFucyBpbiBDYWNoZWRQbGFuLnN0bXRfbGlzdC4g VG8KZW5hYmxlIHRoaXMsIGEgbmV3IENhY2hlZFBsYW4uc3RtdF9jb250ZXh0IGlzIGludHJvZHVj ZWQgYXMgYSBjaGlsZApjb250ZXh0IG9mIENhY2hlZFBsYW4uY29udGV4dC4gVGhpcyBzZXBhcmF0 ZXMgUGxhbm5lZFN0bXRzIGZyb20gdGhlCnBhcmVudCBjb250ZXh0LCBhbGxvd2luZyBVcGRhdGVD YWNoZWRQbGFuKCkgdG8gZnJlZSBvbGQgUGxhbm5lZFN0bXRzCndoZW4gcmVwbGFjaW5nIHRoZW0g d2l0aCBuZXcgcGxhbnMsIHdoaWxlIHByZXNlcnZpbmcgdGhlIENhY2hlZFBsYW4Kc3RydWN0dXJl LCBpbmNsdWRpbmcgdGhlIExpc3QgY29udGFpbmluZyB0aGUgc3RhdGVtZW50cy4KCiogVGVzdGlu ZwoKVGVzdHMgdXNpbmcgdGhlIGRlbGF5X2V4ZWN1dGlvbiBtb2R1bGUgdmVyaWZ5IHNjZW5hcmlv cyB3aGVyZSBhIGNhY2hlZApwbGFuIGJlY29tZXMgaW52YWxpZCBkdWUgdG8gY2hhbmdlcyBpbiBw cnVuYWJsZSByZWxhdGlvbnMgYWZ0ZXIKZGVmZXJyZWQgbG9ja3MgYXJlIHRha2VuLgoKKiBOb3Rl IHRvIGV4dGVuc2lvbiBhdXRob3JzOgoKRXhlY3V0b3JTdGFydF9ob29rIGltcGxlbWVudGF0aW9u cyBzaG91bGQgdmVyaWZ5IHBsYW4gdmFsaWRpdHkgYWZ0ZXIKY2FsbGluZyBzdGFuZGFyZF9FeGVj dXRvclN0YXJ0KCkgdG8gZW5zdXJlIHRoZXkgYXJlIG5vdCB3b3JraW5nIHdpdGgKYW4gaW52YWxp ZCBwbGFuLiBUaGUgZm9sbG93aW5nIGNoZWNrIGNhbiBiZSB1c2VkOgoKICAgIC8qIFRoZSBwbGFu IG1heSBoYXZlIGJlY29tZSBpbnZhbGlkIGR1cmluZyBFeGVjdXRvclN0YXJ0KCkgKi8KICAgIGlm ICghRXhlY1BsYW5TdGlsbFZhbGlkKHF1ZXJ5RGVzYy0+ZXN0YXRlKSkKICAgICAgICByZXR1cm47 CgpBZGRpdGlvbmFsbHksIGFueSBSVCBpbmRleCBpbnNwZWN0ZWQgYnkgYW4gZXh0ZW5zaW9uIHNo b3VsZCBiZQpjaGVja2VkIGFnYWluc3QgRVN0YXRlLmVzX3VucHJ1bmVkX3JlbGlkcyBiZWZvcmUg cHJvY2Vzc2luZyB0aGUKcmVsYXRpb24sIHBhcnRpY3VsYXJseSBpZiB0aGUgcmVsYXRpb24gY291 bGQgYmUgYSBjaGlsZCByZWxhdGlvbgpzdWJqZWN0IHRvIGluaXRpYWwgcGFydGl0aW9uIHBydW5p bmcuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlCmV4dGVuc2lvbnMgY2FuIG5vIGxvbmdlciBh c3N1bWUgdGhhdCBhbGwgcmFuZ2UgdGFibGUgcmVsYXRpb25zIGFyZQpsb2NrZWQ7IG9ubHkgdGhv c2UgaW4gZXNfdW5wcnVuZWRfcmVsaWRzIGFyZS4gIEZvciByZWZlcmVuY2UsIHNlZQpob3cgSW5p dFBsYW4oKSBwcm9jZXNzZXMgZW50cmllcyBmcm9tIFBsYW5uZWRTdG10LnJvd01hcmtzLgoKUmV2 aWV3ZWQtYnk6IFJvYmVydCBIYWFzClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEKRGlzY3Vzc2lv bjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQStIaXdxRkdrTVNnZTZUZ0M5S1F6ZGUwb2hwQXljTFF1 Vjdvb2l0RUVwYktCME9fbWdAbWFpbC5nbWFpbC5jb20KLS0tCiBjb250cmliL2F1dG9fZXhwbGFp bi9hdXRvX2V4cGxhaW4uYyAgICAgICAgICAgfCAgIDQgKwogLi4uL3BnX3N0YXRfc3RhdGVtZW50 cy9wZ19zdGF0X3N0YXRlbWVudHMuYyAgIHwgICA0ICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2Nv cHlmcm9tLmMgICAgICAgICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMgICAgICAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jb21tYW5kcy9jcmVh dGVhcy5jICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxh aW4uYyAgICAgICAgICAgICAgICB8ICAxNiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5z aW9uLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcu YyAgICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21k cy5jICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYyAg ICAgICAgICAgICAgICB8ICAgOSArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jICAg ICAgICAgICAgICAgIHwgIDE0ICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRSAgICAgICAg ICAgICAgICAgICB8ICAzNSArKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMgICAg ICAgICAgICAgICB8IDEzMiArKysrKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFs bGVsLmMgICAgICAgICAgIHwgIDEwICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMgICAgICAgICAgfCAxMjAgKysrKysrKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNV dGlscy5jICAgICAgICAgICAgICB8ICAxOSArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rp b25zLmMgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBcHBl bmQuYyAgICAgICAgICAgICB8ICAgOCArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUxvY2tS b3dzLmMgICAgICAgICAgIHwgICA5ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTWVyZ2VB cHBlbmQuYyAgICAgICAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNb2RpZnlU YWJsZS5jICAgICAgICB8ICA3MCArKysrLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMgICAg ICAgICAgICAgICAgICAgIHwgIDIzICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFu bmVyLmMgICAgICAgICAgfCAgIDIgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVm cy5jICAgICAgICAgIHwgIDI5ICstCiBzcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFydHBydW5l LmMgICAgICAgICAgfCAgMjIgKysKIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29y a2VyLmMgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdv dXRwdXQuYyAgIHwgICAzICstCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAg ICAgICAgICAgfCAgIDQgKy0KIHNyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMgICAgICAgICAgICAg ICAgICAgICB8ICAzOSArKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jICAg ICAgICAgICB8IDIwNCArKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRh bG1lbS5jICAgICAgICAgICAgfCAgIDQgKy0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4u aCAgICAgICAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5o ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaCAgICAgICAgICB8ICAgNiArLQogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaCAg ICAgICAgICAgICAgIHwgICAyICsKIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAg ICAgICAgICAgICB8ICAzMSArLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAg ICAgICAgICAgIHwgIDEzICsKIHNyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oICAgICAgICAg ICAgICAgICB8ICAgOCArCiBzcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaCAgICAgICAgICAg ICAgICAgfCAgIDcgKwogc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggICAgICAgICAgICAg ICAgIHwgIDUwICsrKy0KIHNyYy9pbmNsdWRlL3V0aWxzL3BvcnRhbC5oICAgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZpbGUg ICAgIHwgICAzICstCiAuLi4vbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZGVsYXlfZXhlY3V0aW9u LmMgfCAgNjMgKysrLQogLi4uL2V4cGVjdGVkL2NhY2hlZC1wbGFuLWludmFsLm91dCAgICAgICAg ICAgIHwgMjgyICsrKysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVj dXRpb24vbWVzb24uYnVpbGQgIHwgICAxICsKIC4uLi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5z cGVjICAgICAgICAgICAgICB8ICA4MCArKysrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9w YXJ0aXRpb25fcHJ1bmUub3V0IHwgIDQ0ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbCAgICAgIHwgIDE4ICsrCiA0OCBmaWxlcyBjaGFuZ2VkLCAxMjk5IGluc2Vy dGlvbnMoKyksIDExNyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9j YWNoZWQtcGxhbi1pbnZhbC5zcGVjCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9hdXRvX2V4cGxhaW4v YXV0b19leHBsYWluLmMgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4uYwppbmRl eCA2MjNhNjc0Zjk5Li44YjVlYWYzZWYzIDEwMDY0NAotLS0gYS9jb250cmliL2F1dG9fZXhwbGFp bi9hdXRvX2V4cGxhaW4uYworKysgYi9jb250cmliL2F1dG9fZXhwbGFpbi9hdXRvX2V4cGxhaW4u YwpAQCAtMjk4LDYgKzI5OCwxMCBAQCBleHBsYWluX0V4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MpCiAJZWxzZQogCQlzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KHF1 ZXJ5RGVzYywgZWZsYWdzKTsKIAorCS8qIFRoZSBwbGFuIG1heSBoYXZlIGJlY29tZSBpbnZhbGlk IGR1cmluZyBzdGFuZGFyZF9FeGVjdXRvclN0YXJ0KCkgKi8KKwlpZiAoIUV4ZWNQbGFuU3RpbGxW YWxpZChxdWVyeURlc2MtPmVzdGF0ZSkpCisJCXJldHVybjsKKwogCWlmIChhdXRvX2V4cGxhaW5f ZW5hYmxlZCgpKQogCXsKIAkJLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdfc3RhdF9zdGF0ZW1l bnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdf c3RhdF9zdGF0ZW1lbnRzLmMKaW5kZXggNDljNjU3YjNlMC4uYjExNjkxYWUyNiAxMDA2NDQKLS0t IGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIv Y29udHJpYi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTk5NCw2 ICs5OTQsMTAgQEAgcGdzc19FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQg ZWZsYWdzKQogCWVsc2UKIAkJc3RhbmRhcmRfRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFn cyk7CiAKKwkvKiBUaGUgcGxhbiBtYXkgaGF2ZSBiZWNvbWUgaW52YWxpZCBkdXJpbmcgc3RhbmRh cmRfRXhlY3V0b3JTdGFydCgpICovCisJaWYgKCFFeGVjUGxhblN0aWxsVmFsaWQocXVlcnlEZXNj LT5lc3RhdGUpKQorCQlyZXR1cm47CisKIAkvKgogCSAqIElmIHF1ZXJ5IGhhcyBxdWVyeUlkIHpl cm8sIGRvbid0IHRyYWNrIGl0LiAgVGhpcyBwcmV2ZW50cyBkb3VibGUKIAkgKiBjb3VudGluZyBv ZiBvcHRpbWl6YWJsZSBzdGF0ZW1lbnRzIHRoYXQgYXJlIGRpcmVjdGx5IGNvbnRhaW5lZCBpbgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggNGQ1MmM5M2MzMC4uZGEzZDczZDliMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFja2VuZC9j b21tYW5kcy9jb3B5ZnJvbS5jCkBAIC03NjgsNyArNzY4LDggQEAgQ29weUZyb20oQ29weUZyb21T dGF0ZSBjc3RhdGUpCiAJICogaW5kZXgtZW50cnktbWFraW5nIG1hY2hpbmVyeS4gIChUaGVyZSB1 c2VkIHRvIGJlIGEgaHVnZSBhbW91bnQgb2YgY29kZQogCSAqIGhlcmUgdGhhdCBiYXNpY2FsbHkg ZHVwbGljYXRlZCBleGVjVXRpbHMuYyAuLi4pCiAJICovCi0JRXhlY0luaXRSYW5nZVRhYmxlKGVz dGF0ZSwgY3N0YXRlLT5yYW5nZV90YWJsZSwgY3N0YXRlLT5ydGVwZXJtaW5mb3MpOworCUV4ZWNJ bml0UmFuZ2VUYWJsZShlc3RhdGUsIGNzdGF0ZS0+cmFuZ2VfdGFibGUsIGNzdGF0ZS0+cnRlcGVy bWluZm9zLAorCQkJCQkgICBibXNfbWFrZV9zaW5nbGV0b24oMSkpOwogCXJlc3VsdFJlbEluZm8g PSB0YXJnZXRfcmVzdWx0UmVsSW5mbyA9IG1ha2VOb2RlKFJlc3VsdFJlbEluZm8pOwogCUV4ZWNJ bml0UmVzdWx0UmVsYXRpb24oZXN0YXRlLCByZXN1bHRSZWxJbmZvLCAxKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9j b3B5dG8uYwppbmRleCBmNTVlNmQ5Njc1Li4yN2I2ZjZmMDY5IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5dG8uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5dG8u YwpAQCAtNTU2LDcgKzU1Niw3IEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJ KChEUl9jb3B5ICopIGRlc3QpLT5jc3RhdGUgPSBjc3RhdGU7CiAKIAkJLyogQ3JlYXRlIGEgUXVl cnlEZXNjIHJlcXVlc3Rpbmcgbm8gb3V0cHV0ICovCi0JCWNzdGF0ZS0+cXVlcnlEZXNjID0gQ3Jl YXRlUXVlcnlEZXNjKHBsYW4sIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAorCQljc3RhdGUtPnF1ZXJ5 RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBwc3RhdGUtPnBfc291cmNldGV4dCwK IAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwKIAkJCQkJCQkJCQkJSW52YWxpZFNuYXBz aG90LAogCQkJCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxMLCAwKTsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2NyZWF0ZWFzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jcmVhdGVh cy5jCmluZGV4IDVjOTJlNDhhNTYuLjBjYzc0ZGQ0NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2NvbW1hbmRzL2NyZWF0ZWFzLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY3JlYXRlYXMu YwpAQCAtMzMyLDcgKzMzMiw3IEBAIEV4ZWNDcmVhdGVUYWJsZUFzKFBhcnNlU3RhdGUgKnBzdGF0 ZSwgQ3JlYXRlVGFibGVBc1N0bXQgKnN0bXQsCiAJCVVwZGF0ZUFjdGl2ZVNuYXBzaG90Q29tbWFu ZElkKCk7CiAKIAkJLyogQ3JlYXRlIGEgUXVlcnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8g b3VyIHR1cGxlIHJlY2VpdmVyICovCi0JCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFu LCBwc3RhdGUtPnBfc291cmNldGV4dCwKKwkJcXVlcnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBs YW4sIE5VTEwsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNo b3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQkJZGVzdCwgcGFyYW1zLCBxdWVyeUVudiwg MCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9i YWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCBhM2YxZDUzZDdhLi5iNWM3MzRlNzVjIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvZXhwbGFpbi5jCkBAIC01MTIsNyArNTEyLDggQEAgc3RhbmRhcmRfRXhwbGFp bk9uZVF1ZXJ5KFF1ZXJ5ICpxdWVyeSwgaW50IGN1cnNvck9wdGlvbnMsCiAJfQogCiAJLyogcnVu IGl0IChpZiBuZWVkZWQpIGFuZCBwcm9kdWNlIG91dHB1dCAqLwotCUV4cGxhaW5PbmVQbGFuKHBs YW4sIGludG8sIGVzLCBxdWVyeVN0cmluZywgcGFyYW1zLCBxdWVyeUVudiwKKwlFeHBsYWluT25l UGxhbihwbGFuLCBOVUxMLCBOVUxMLCAtMSwgaW50bywgZXMsIHF1ZXJ5U3RyaW5nLCBwYXJhbXMs CisJCQkJICAgcXVlcnlFbnYsCiAJCQkJICAgJnBsYW5kdXJhdGlvbiwgKGVzLT5idWZmZXJzID8g JmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJICAgZXMtPm1lbW9yeSA/ICZtZW1fY291bnRlcnMgOiBO VUxMKTsKIH0KQEAgLTYzNCw3ICs2MzUsOSBAQCBFeHBsYWluT25lVXRpbGl0eShOb2RlICp1dGls aXR5U3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKICAqIHRvIGNhbGwg aXQuCiAgKi8KIHZvaWQKLUV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpwbGFubmVkc3RtdCwg SW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKK0V4cGxhaW5PbmVQbGFuKFBsYW5u ZWRTdG10ICpwbGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkgICBDYWNoZWRQbGFu U291cmNlICpwbGFuc291cmNlLCBpbnQgcXVlcnlfaW5kZXgsCisJCQkgICBJbnRvQ2xhdXNlICpp bnRvLCBFeHBsYWluU3RhdGUgKmVzLAogCQkJICAgY29uc3QgY2hhciAqcXVlcnlTdHJpbmcsIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsIGNv bnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCSAgIGNvbnN0IEJ1ZmZlclVzYWdlICpi dWZ1c2FnZSwKQEAgLTY5MCw3ICs2OTMsNyBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAq cGxhbm5lZHN0bXQsIEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCWRlc3Qg PSBOb25lX1JlY2VpdmVyOwogCiAJLyogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkg Ki8KLQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MocGxhbm5lZHN0bXQsIHF1ZXJ5U3RyaW5n LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFubmVkc3RtdCwgY3BsYW4sIHF1ZXJ5 U3RyaW5nLAogCQkJCQkJCQlHZXRBY3RpdmVTbmFwc2hvdCgpLCBJbnZhbGlkU25hcHNob3QsCiAJ CQkJCQkJCWRlc3QsIHBhcmFtcywgcXVlcnlFbnYsIGluc3RydW1lbnRfb3B0aW9uKTsKIApAQCAt NzA0LDggKzcwNywxMSBAQCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJaWYgKGludG8pCiAJCWVmbGFn cyB8PSBHZXRJbnRvUmVsRUZsYWdzKGludG8pOwogCi0JLyogY2FsbCBFeGVjdXRvclN0YXJ0IHRv IHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbiAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlE ZXNjLCBlZmxhZ3MpOworCS8qIFByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbi4gKi8KKwlp ZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4ocXVlcnlEZXNj LCBlZmxhZ3MsIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKKwllbHNlCisJCUV4ZWN1dG9yU3Rh cnQocXVlcnlEZXNjLCBlZmxhZ3MpOwogCiAJLyogRXhlY3V0ZSB0aGUgcGxhbiBmb3Igc3RhdGlz dGljcyBpZiBhc2tlZCBmb3IgKi8KIAlpZiAoZXMtPmFuYWx5emUpCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jCmluZGV4IGFmNmJkOGZmNDIuLjdkNGEzYzViOGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL2V4dGVuc2lvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4dGVu c2lvbi5jCkBAIC05MDcsNiArOTA3LDcgQEAgZXhlY3V0ZV9zcWxfc3RyaW5nKGNvbnN0IGNoYXIg KnNxbCwgY29uc3QgY2hhciAqZmlsZW5hbWUpCiAJCQkJUXVlcnlEZXNjICAqcWRlc2M7CiAKIAkJ CQlxZGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhzdG10LAorCQkJCQkJCQkJCU5VTEwsCiAJCQkJCQkJ CQkJc3FsLAogCQkJCQkJCQkJCUdldEFjdGl2ZVNuYXBzaG90KCksIE5VTEwsCiAJCQkJCQkJCQkJ ZGVzdCwgTlVMTCwgTlVMTCwgMCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9t YXR2aWV3LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9tYXR2aWV3LmMKaW5kZXggMDEwMDk3ODcz ZC4uNjliZTc0YjRiZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvbWF0dmlldy5j CisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL21hdHZpZXcuYwpAQCAtNDM4LDcgKzQzOCw3IEBA IHJlZnJlc2hfbWF0dmlld19kYXRhZmlsbChEZXN0UmVjZWl2ZXIgKmRlc3QsIFF1ZXJ5ICpxdWVy eSwKIAlVcGRhdGVBY3RpdmVTbmFwc2hvdENvbW1hbmRJZCgpOwogCiAJLyogQ3JlYXRlIGEgUXVl cnlEZXNjLCByZWRpcmVjdGluZyBvdXRwdXQgdG8gb3VyIHR1cGxlIHJlY2VpdmVyICovCi0JcXVl cnlEZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHBsYW4sIHF1ZXJ5U3RyaW5nLAorCXF1ZXJ5RGVzYyA9 IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBOVUxMLCBxdWVyeVN0cmluZywKIAkJCQkJCQkJR2V0QWN0 aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJCQlkZXN0LCBOVUxMLCBOVUxM LCAwKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jIGIv c3JjL2JhY2tlbmQvY29tbWFuZHMvcG9ydGFsY21kcy5jCmluZGV4IGFjNTJjYTI1ZTkuLjQ4Y2Yw Yjg0ZTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3BvcnRhbGNtZHMuYworKysg Yi9zcmMvYmFja2VuZC9jb21tYW5kcy9wb3J0YWxjbWRzLmMKQEAgLTExNyw2ICsxMTcsNyBAQCBQ ZXJmb3JtQ3Vyc29yT3BlbihQYXJzZVN0YXRlICpwc3RhdGUsIERlY2xhcmVDdXJzb3JTdG10ICpj c3RtdCwgUGFyYW1MaXN0SW5mbyBwYQogCQkJCQkgIHF1ZXJ5U3RyaW5nLAogCQkJCQkgIENNRFRB R19TRUxFQ1QsCS8qIGN1cnNvcidzIHF1ZXJ5IGlzIGFsd2F5cyBhIFNFTEVDVCAqLwogCQkJCQkg IGxpc3RfbWFrZTEocGxhbiksCisJCQkJCSAgTlVMTCwKIAkJCQkJICBOVUxMKTsKIAogCS8qLS0t LS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvcHJlcGFyZS5jCmluZGV4IGE5M2Y5NzBhMjkuLjQ1ZmQ2M2QyYjEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ByZXBhcmUuYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9wcmVwYXJlLmMKQEAgLTIwMiw3ICsyMDIsOCBAQCBFeGVjdXRlUXVlcnko UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkgIHF1ZXJ5X3N0cmluZywKIAkJCQkJICBlbnRyeS0+ cGxhbnNvdXJjZS0+Y29tbWFuZFRhZywKIAkJCQkJICBwbGFuX2xpc3QsCi0JCQkJCSAgY3BsYW4p OworCQkJCQkgIGNwbGFuLAorCQkJCQkgIGVudHJ5LT5wbGFuc291cmNlKTsKIAogCS8qCiAJICog Rm9yIENSRUFURSBUQUJMRSAuLi4gQVMgRVhFQ1VURSwgd2UgbXVzdCB2ZXJpZnkgdGhhdCB0aGUg cHJlcGFyZWQKQEAgLTU4Miw2ICs1ODMsNyBAQCBFeHBsYWluRXhlY3V0ZVF1ZXJ5KEV4ZWN1dGVT dG10ICpleGVjc3RtdCwgSW50b0NsYXVzZSAqaW50bywgRXhwbGFpblN0YXRlICplcywKIAlNZW1v cnlDb250ZXh0Q291bnRlcnMgbWVtX2NvdW50ZXJzOwogCU1lbW9yeUNvbnRleHQgcGxhbm5lcl9j dHggPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgc2F2ZWRfY3R4ID0gTlVMTDsKKwlpbnQJCQlxdWVy eV9pbmRleCA9IDA7CiAKIAlpZiAoZXMtPm1lbW9yeSkKIAl7CkBAIC02NTQsNyArNjU2LDggQEAg RXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2UgKmlu dG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCVBsYW5uZWRTdG10ICpwc3RtdCA9IGxmaXJzdF9ub2Rl KFBsYW5uZWRTdG10LCBwKTsKIAogCQlpZiAocHN0bXQtPmNvbW1hbmRUeXBlICE9IENNRF9VVElM SVRZKQotCQkJRXhwbGFpbk9uZVBsYW4ocHN0bXQsIGludG8sIGVzLCBxdWVyeV9zdHJpbmcsIHBh cmFtTEksIHBzdGF0ZS0+cF9xdWVyeUVudiwKKwkJCUV4cGxhaW5PbmVQbGFuKHBzdG10LCBjcGxh biwgZW50cnktPnBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4LAorCQkJCQkJICAgaW50bywgZXMsIHF1 ZXJ5X3N0cmluZywgcGFyYW1MSSwgcHN0YXRlLT5wX3F1ZXJ5RW52LAogCQkJCQkJICAgJnBsYW5k dXJhdGlvbiwgKGVzLT5idWZmZXJzID8gJmJ1ZnVzYWdlIDogTlVMTCksCiAJCQkJCQkgICBlcy0+ bWVtb3J5ID8gJm1lbV9jb3VudGVycyA6IE5VTEwpOwogCQllbHNlCkBAIC02NjUsNiArNjY4LDgg QEAgRXhwbGFpbkV4ZWN1dGVRdWVyeShFeGVjdXRlU3RtdCAqZXhlY3N0bXQsIEludG9DbGF1c2Ug KmludG8sIEV4cGxhaW5TdGF0ZSAqZXMsCiAJCS8qIFNlcGFyYXRlIHBsYW5zIHdpdGggYW4gYXBw cm9wcmlhdGUgc2VwYXJhdG9yICovCiAJCWlmIChsbmV4dChwbGFuX2xpc3QsIHApICE9IE5VTEwp CiAJCQlFeHBsYWluU2VwYXJhdGVQbGFucyhlcyk7CisKKwkJcXVlcnlfaW5kZXgrKzsKIAl9CiAK IAlpZiAoZXN0YXRlKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdHJpZ2dlci5jCmluZGV4IDA5MzU2ZTQ2ZDEuLjc5NTcy ZWM4ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RyaWdnZXIuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy90cmlnZ2VyLmMKQEAgLTUxMjMsNiArNTEyMywyMCBAQCBBZnRl clRyaWdnZXJFbmRRdWVyeShFU3RhdGUgKmVzdGF0ZSkKIAlhZnRlclRyaWdnZXJzLnF1ZXJ5X2Rl cHRoLS07CiB9CiAKKy8qIC0tLS0tLS0tLS0KKyAqIEFmdGVyVHJpZ2dlckFib3J0UXVlcnkoKQor ICoKKyAqIENhbGxlZCBieSBFeGVjdXRvckVuZCgpIGlmIHRoZSBxdWVyeSBleGVjdXRpb24gd2Fz IGFib3J0ZWQgZHVlIHRvIHRoZQorICogcGxhbiBiZWNvbWluZyBpbnZhbGlkIGR1cmluZyBpbml0 aWFsaXphdGlvbi4KKyAqIC0tLS0tLS0tLS0KKyAqLwordm9pZAorQWZ0ZXJUcmlnZ2VyQWJvcnRR dWVyeSh2b2lkKQoreworCS8qIFJldmVydCB0aGUgYWN0aW9ucyBvZiBBZnRlclRyaWdnZXJCZWdp blF1ZXJ5KCkuICovCisJYWZ0ZXJUcmlnZ2Vycy5xdWVyeV9kZXB0aC0tOworfQorCiAKIC8qCiAg KiBBZnRlclRyaWdnZXJGcmVlUXVlcnkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L1JFQURNRSBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRQppbmRleCA2NDJkNjNiZTYxLi40 NDljNjA2OGFlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUKKysrIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3IvUkVBRE1FCkBAIC0yODAsNiArMjgwLDI4IEBAIGFyZSB0eXBp Y2FsbHkgcmVzZXQgdG8gZW1wdHkgb25jZSBwZXIgdHVwbGUuICBQZXItdHVwbGUgY29udGV4dHMg YXJlIHVzdWFsbHkKIGFzc29jaWF0ZWQgd2l0aCBFeHByQ29udGV4dHMsIGFuZCBjb21tb25seSBl YWNoIFBsYW5TdGF0ZSBub2RlIGhhcyBpdHMgb3duCiBFeHByQ29udGV4dCB0byBldmFsdWF0ZSBp dHMgcXVhbCBhbmQgdGFyZ2V0bGlzdCBleHByZXNzaW9ucyBpbi4KIAorUmVsYXRpb24gTG9ja2lu ZworLS0tLS0tLS0tLS0tLS0tLQorCitUeXBpY2FsbHksIHdoZW4gdGhlIGV4ZWN1dG9yIGluaXRp YWxpemVzIGEgcGxhbiB0cmVlIGZvciBleGVjdXRpb24sIGl0IGRvZXNuJ3QKK2xvY2sgbm9uLWlu ZGV4IHJlbGF0aW9ucyBpZiB0aGUgcGxhbiB0cmVlIGlzIGZyZXNobHkgZ2VuZXJhdGVkIGFuZCBu b3QgZGVyaXZlZAorZnJvbSBhIENhY2hlZFBsYW4uIFRoaXMgaXMgYmVjYXVzZSBzdWNoIGxvY2tz IGhhdmUgYWxyZWFkeSBiZWVuIGVzdGFibGlzaGVkCitkdXJpbmcgdGhlIHF1ZXJ5J3MgcGFyc2lu ZywgcmV3cml0aW5nLCBhbmQgcGxhbm5pbmcgcGhhc2VzLiBIb3dldmVyLCB3aXRoIGEKK2NhY2hl ZCBwbGFuIHRyZWUsIHNvbWUgcmVsYXRpb25zIG1heSByZW1haW4gdW5sb2NrZWQuIFRoZSBmdW5j dGlvbgorQWNxdWlyZUV4ZWN1dG9yTG9ja3MoKSBvbmx5IGxvY2tzIHVucHJ1bmFibGUgcmVsYXRp b25zIGluIHRoZSBwbGFuLCBkZWZlcnJpbmcKK3RoZSBsb2NraW5nIG9mIHBydW5hYmxlIG9uZXMg dG8gZXhlY3V0b3IgaW5pdGlhbGl6YXRpb24uIFRoaXMgYXZvaWRzCit1bm5lY2Vzc2FyeSBsb2Nr aW5nIG9mIHJlbGF0aW9ucyB0aGF0IHdpbGwgYmUgcHJ1bmVkIGR1cmluZyAiaW5pdGlhbCIgcnVu dGltZQorcHJ1bmluZyBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCitUaGlzIGFwcHJvYWNo IGNyZWF0ZXMgYSB3aW5kb3cgd2hlcmUgYSBjYWNoZWQgcGxhbiB0cmVlIHdpdGggY2hpbGQgdGFi bGVzCitjb3VsZCBiZWNvbWUgb3V0ZGF0ZWQgaWYgYW5vdGhlciBiYWNrZW5kIG1vZGlmaWVzIHRo ZXNlIHRhYmxlcyBiZWZvcmUKK0V4ZWNEb0luaXRpYWxQcnVuaW5nKCkgbG9ja3MgdGhlbS4gQXMg YSByZXN1bHQsIHRoZSBleGVjdXRvciBoYXMgdGhlIGFkZGVkIGR1dHkKK3RvIHZlcmlmeSB0aGUg cGxhbiB0cmVlJ3MgdmFsaWRpdHkgd2hlbmV2ZXIgaXQgbG9ja3MgYSBjaGlsZCB0YWJsZSBhZnRl cgorZG9pbmcgaW5pdGlhbCBwcnVuaW5nLiBUaGlzIHZhbGlkYXRpb24gaXMgZG9uZSBieSBjaGVj a2luZyB0aGUgQ2FjaGVkUGxhbi5pc192YWxpZAorZmxhZy4gSWYgdGhlIHBsYW4gdHJlZSBpcyBv dXRkYXRlZCAoaXNfdmFsaWQgPSBmYWxzZSksIHRoZSBleGVjdXRvciBzdG9wcworZnVydGhlciBp bml0aWFsaXphdGlvbiwgY2xlYW5zIHVwIGFueXRoaW5nIGluIEVTdGF0ZSB0aGF0IHdvdWxkIGhh dmUgYmVlbgorYWxsb2NhdGVkIHVwIHRvIHRoYXQgcG9pbnQsIGFuZCByZXRyaWVzIGV4ZWN1dGlv biBhZnRlciByZWNyZWF0aW5nIHRoZQoraW52YWxpZCBwbGFuIGluIHRoZSBDYWNoZWRQbGFuLgog CiBRdWVyeSBQcm9jZXNzaW5nIENvbnRyb2wgRmxvdwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KQEAgLTI4OCwxMSArMzEwLDEzIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBm bG93IGZvciBmdWxsIHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlDcmVhdGVRdWVyeURlc2MKIAotCUV4 ZWN1dG9yU3RhcnQKKwlFeGVjdXRvclN0YXJ0IG9yIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuCiAJ CUNyZWF0ZUV4ZWN1dG9yU3RhdGUKIAkJCWNyZWF0ZXMgcGVyLXF1ZXJ5IGNvbnRleHQKLQkJc3dp dGNoIHRvIHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjSW5pdE5vZGUKKwkJc3dpdGNoIHRv IHBlci1xdWVyeSBjb250ZXh0IHRvIHJ1biBFeGVjRG9Jbml0aWFsUHJ1bmluZyBhbmQgRXhlY0lu aXROb2RlCiAJCUFmdGVyVHJpZ2dlckJlZ2luUXVlcnkKKwkJRXhlY0RvSW5pdGlhbFBydW5pbmcK KwkJCWRvZXMgaW5pdGlhbCBwcnVuaW5nIGFuZCBsb2NrcyBzdXJ2aXZpbmcgcGFydGl0aW9ucyBp ZiBuZWVkZWQKIAkJRXhlY0luaXROb2RlIC0tLSByZWN1cnNpdmVseSBzY2FucyBwbGFuIHRyZWUK IAkJCUV4ZWNJbml0Tm9kZQogCQkJCXJlY3Vyc2UgaW50byBzdWJzaWRpYXJ5IG5vZGVzCkBAIC0z MTYsNyArMzQwLDEyIEBAIFRoaXMgaXMgYSBza2V0Y2ggb2YgY29udHJvbCBmbG93IGZvciBmdWxs IHF1ZXJ5IHByb2Nlc3Npbmc6CiAKIAlGcmVlUXVlcnlEZXNjCiAKLVBlciBhYm92ZSBjb21tZW50 cywgaXQncyBub3QgcmVhbGx5IGNyaXRpY2FsIGZvciBFeGVjRW5kTm9kZSB0byBmcmVlIGFueQor QXMgbWVudGlvbmVkIGluIHRoZSAiUmVsYXRpb24gTG9ja2luZyIgc2VjdGlvbiwgaWYgdGhlIHBs YW4gdHJlZSBpcyBmb3VuZCB0bworYmUgc3RhbGUgYWZ0ZXIgbG9ja2luZyBwYXJ0aXRpb25zIGlu IEV4ZWNEb0luaXRpYWxQcnVuaW5nKCksIHRoZSBjb250cm9sIGlzCitpbW1lZGlhdGVseSByZXR1 cm5lZCB0byBFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpLCB3aGljaCB3aWxsIGNyZWF0ZSBhIG5l dyBwbGFuCit0cmVlIGFuZCBwZXJmb3JtIHRoZSBzdGVwcyBzdGFydGluZyBmcm9tIENyZWF0ZUV4 ZWN1dG9yU3RhdGUoKSBhZ2Fpbi4KKworUGVyIGFib3ZlIGNvbW1lbnRzLCBpdCdzIG5vdCByZWFs bHkgY3JpdGljYWwgZm9yIEV4ZWNFbmRQbGFuIHRvIGZyZWUgYW55CiBtZW1vcnk7IGl0J2xsIGFs bCBnbyBhd2F5IGluIEZyZWVFeGVjdXRvclN0YXRlIGFueXdheS4gIEhvd2V2ZXIsIHdlIGRvIG5l ZWQgdG8KIGJlIGNhcmVmdWwgdG8gY2xvc2UgcmVsYXRpb25zLCBkcm9wIGJ1ZmZlciBwaW5zLCBl dGMsIHNvIHdlIGRvIG5lZWQgdG8gc2NhbgogdGhlIHBsYW4gc3RhdGUgdHJlZSB0byBmaW5kIHRo ZXNlIHNvcnRzIG9mIHJlc291cmNlcy4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNNYWluLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jCmluZGV4IDVkYzQ2 ZjJlOTUuLjJkZmE3ZWZmNTQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwpAQCAtNTUsMTEgKzU1 LDEzIEBACiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCiAjaW5jbHVkZSAicGdz dGF0LmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlSGFuZGxlci5oIgorI2luY2x1ZGUgInN0 b3JhZ2UvbG1nci5oIgogI2luY2x1ZGUgInRjb3AvdXRpbGl0eS5oIgogI2luY2x1ZGUgInV0aWxz L2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2JhY2tlbmRfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRp bHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcGFydGNhY2hlLmgiCisjaW5jbHVkZSAi dXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvcmxzLmgiCiAjaW5jbHVkZSAidXRp bHMvc25hcG1nci5oIgogCkBAIC0xMzcsNiArMTM5LDYyIEBAIEV4ZWN1dG9yU3RhcnQoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiAJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVl cnlEZXNjLCBlZmxhZ3MpOwogfQogCisvKgorICogRXhlY3V0b3JTdGFydENhY2hlZFBsYW4KKyAq CQlTdGFydCBleGVjdXRpb24gZm9yIGEgZ2l2ZW4gcXVlcnkgaW4gdGhlIENhY2hlZFBsYW5Tb3Vy Y2UsIHJlcGxhbm5pbmcKKyAqCQlpZiB0aGUgcGxhbiBpcyBpbnZhbGlkYXRlZCBkdWUgdG8gZGVm ZXJyZWQgbG9ja3MgdGFrZW4gZHVyaW5nIHRoZQorICoJCXBsYW4ncyBpbml0aWFsaXphdGlvbgor ICoKKyAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBjYXNlcyB3aGVyZSB0aGUgQ2FjaGVkUGxhbiBn aXZlbiBpbiBxdWVyeURlc2MtPmNwbGFuCisgKiBtaWdodCBiZWNvbWUgaW52YWxpZCBkdXJpbmcg dGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbGFuIGdpdmVuIGluCisgKiBxdWVyeURlc2MtPnBs YW5uZWRzdG10LCBwYXJ0aWN1bGFybHkgd2hlbiBwcnVuYWJsZSByZWxhdGlvbnMgaW4gaXQgYXJl CisgKiBsb2NrZWQgYWZ0ZXIgcGVyZm9ybWluZyBpbml0aWFsIHBydW5pbmcuIElmIHRoZSBsb2Nr cyBpbnZhbGlkYXRlIHRoZSBwbGFuLAorICogdGhlIGZ1bmN0aW9uIGNhbGxzIFVwZGF0ZUNhY2hl ZFBsYW4oKSB0byByZXBsYW4gYWxsIHF1ZXJpZXMgaW4gdGhlCisgKiBDYWNoZWRQbGFuLCBhbmQg dGhlbiByZXRyaWVzIGluaXRpYWxpemF0aW9uLgorICoKKyAqIFRoZSBmdW5jdGlvbiByZXBlYXRz IHRoZSBwcm9jZXNzIHVudGlsIEV4ZWN1dG9yU3RhcnQoKSBzdWNjZXNzZnVsbHkKKyAqIGluaXRp YWxpemVzIHRoZSBwbGFuLCB0aGF0IGlzIHdpdGhvdXQgdGhlIENhY2hlZFBsYW4gYmVjb21pbmcg aW52YWxpZC4KKyAqLwordm9pZAorRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNjICpx dWVyeURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAorCQkJCQkJaW50IHF1ZXJ5X2luZGV4KQoreworCWlmICh1bmxpa2VseShxdWVyeURlc2MtPmNw bGFuID09IE5VTEwpKQorCQllbG9nKEVSUk9SLCAiRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oKTog bWlzc2luZyBDYWNoZWRQbGFuIik7CisJaWYgKHVubGlrZWx5KHBsYW5zb3VyY2UgPT0gTlVMTCkp CisJCWVsb2coRVJST1IsICJFeGVjdXRvclN0YXJ0Q2FjaGVkUGxhbigpOiBtaXNzaW5nIENhY2hl ZFBsYW5Tb3VyY2UiKTsKKworCS8qCisJICogTG9vcCBhbmQgcmV0cnkgd2l0aCBhbiB1cGRhdGVk IHBsYW4gdW50aWwgbm8gZnVydGhlciBpbnZhbGlkYXRpb24KKwkgKiBvY2N1cnMuCisJICovCisJ d2hpbGUgKDEpCisJeworCQlFeGVjdXRvclN0YXJ0KHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwkJaWYg KCFDYWNoZWRQbGFuVmFsaWQocXVlcnlEZXNjLT5jcGxhbikpCisJCXsKKwkJCS8qCisJCQkgKiBD bGVhbiB1cCB0aGUgY3VycmVudCBleGVjdXRpb24gc3RhdGUgYmVmb3JlIGNyZWF0aW5nIHRoZSBu ZXcKKwkJCSAqIHBsYW4gdG8gcmV0cnkgRXhlY3V0b3JTdGFydCgpLiAgTWFyayBleGVjdXRpb24g YXMgYWJvcnRlZCB0bworCQkJICogZW5zdXJlIHRoYXQgQUZURVIgdHJpZ2dlciBzdGF0ZSBpcyBw cm9wZXJseSByZXNldC4KKwkJCSAqLworCQkJcXVlcnlEZXNjLT5lc3RhdGUtPmVzX2Fib3J0ZWQg PSB0cnVlOworCQkJRXhlY3V0b3JFbmQocXVlcnlEZXNjKTsKKworCQkJLyogUmV0cnkgRXhlY3V0 b3JTdGFydCgpIHdpdGggYW4gdXBkYXRlZCBwbGFuIHRyZWUuICovCisJCQlxdWVyeURlc2MtPnBs YW5uZWRzdG10ID0gVXBkYXRlQ2FjaGVkUGxhbihwbGFuc291cmNlLCBxdWVyeV9pbmRleCwKKwkJ CQkJCQkJCQkJCQkgIHF1ZXJ5RGVzYy0+cXVlcnlFbnYpOworCQl9CisJCWVsc2UKKwkJCS8qCisJ CQkgKiBFeGl0IHRoZSBsb29wIGlmIHRoZSBwbGFuIGlzIGluaXRpYWxpemVkIHN1Y2Nlc3NmdWxs eSBhbmQgbm8KKwkJCSAqIHNpbnZhbCBtZXNzYWdlcyB3ZXJlIHJlY2VpdmVkIHRoYXQgaW52YWxp ZGF0ZWQgdGhlIENhY2hlZFBsYW4uCisJCQkgKi8KKwkJCWJyZWFrOworCX0KK30KKwogdm9pZAog c3RhbmRhcmRfRXhlY3V0b3JTdGFydChRdWVyeURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykK IHsKQEAgLTMyMCw2ICszNzgsNyBAQCBzdGFuZGFyZF9FeGVjdXRvclJ1bihRdWVyeURlc2MgKnF1 ZXJ5RGVzYywKIAllc3RhdGUgPSBxdWVyeURlc2MtPmVzdGF0ZTsKIAogCUFzc2VydChlc3RhdGUg IT0gTlVMTCk7CisJQXNzZXJ0KCFlc3RhdGUtPmVzX2Fib3J0ZWQpOwogCUFzc2VydCghKGVzdGF0 ZS0+ZXNfdG9wX2VmbGFncyAmIEVYRUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qIGNhbGxl ciBtdXN0IGVuc3VyZSB0aGUgcXVlcnkncyBzbmFwc2hvdCBpcyBhY3RpdmUgKi8KQEAgLTQyNiw4 ICs0ODUsMTEgQEAgc3RhbmRhcmRfRXhlY3V0b3JGaW5pc2goUXVlcnlEZXNjICpxdWVyeURlc2Mp CiAJQXNzZXJ0KGVzdGF0ZSAhPSBOVUxMKTsKIAlBc3NlcnQoIShlc3RhdGUtPmVzX3RvcF9lZmxh Z3MgJiBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSk7CiAKLQkvKiBUaGlzIHNob3VsZCBiZSBydW4g b25jZSBhbmQgb25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSAqLwotCUFzc2VydCghZXN0 YXRlLT5lc19maW5pc2hlZCk7CisJLyoKKwkgKiBUaGlzIHNob3VsZCBiZSBydW4gb25jZSBhbmQg b25seSBvbmNlIHBlciBFeGVjdXRvciBpbnN0YW5jZSBhbmQgbmV2ZXIKKwkgKiBpZiB0aGUgZXhl Y3V0aW9uIHdhcyBhYm9ydGVkLgorCSAqLworCUFzc2VydCghZXN0YXRlLT5lc19maW5pc2hlZCAm JiAhZXN0YXRlLT5lc19hYm9ydGVkKTsKIAogCS8qIFN3aXRjaCBpbnRvIHBlci1xdWVyeSBtZW1v cnkgY29udGV4dCAqLwogCW9sZGNvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZXN0YXRl LT5lc19xdWVyeV9jeHQpOwpAQCAtNDkwLDExICs1NTIsMTAgQEAgc3RhbmRhcmRfRXhlY3V0b3JF bmQoUXVlcnlEZXNjICpxdWVyeURlc2MpCiAJCQkJCQkJCQkJCSAoUGdTdGF0X0NvdW50ZXIpIGVz dGF0ZS0+ZXNfcGFyYWxsZWxfd29ya2Vyc19sYXVuY2hlZCk7CiAKIAkvKgotCSAqIENoZWNrIHRo YXQgRXhlY3V0b3JGaW5pc2ggd2FzIGNhbGxlZCwgdW5sZXNzIGluIEVYUExBSU4tb25seSBtb2Rl LiBUaGlzCi0JICogQXNzZXJ0IGlzIG5lZWRlZCBiZWNhdXNlIEV4ZWN1dG9yRmluaXNoIGlzIG5l dyBhcyBvZiA5LjEsIGFuZCBjYWxsZXJzCi0JICogbWlnaHQgZm9yZ2V0IHRvIGNhbGwgaXQuCisJ ICogQ2hlY2sgdGhhdCBFeGVjdXRvckZpbmlzaCB3YXMgY2FsbGVkLCB1bmxlc3MgaW4gRVhQTEFJ Ti1vbmx5IG1vZGUgb3IgaWYKKwkgKiBleGVjdXRpb24gd2FzIGFib3J0ZWQuCiAJICovCi0JQXNz ZXJ0KGVzdGF0ZS0+ZXNfZmluaXNoZWQgfHwKKwlBc3NlcnQoZXN0YXRlLT5lc19maW5pc2hlZCB8 fCBlc3RhdGUtPmVzX2Fib3J0ZWQgfHwKIAkJICAgKGVzdGF0ZS0+ZXNfdG9wX2VmbGFncyAmIEVY RUNfRkxBR19FWFBMQUlOX09OTFkpKTsKIAogCS8qCkBAIC01MDgsNiArNTY5LDE0IEBAIHN0YW5k YXJkX0V4ZWN1dG9yRW5kKFF1ZXJ5RGVzYyAqcXVlcnlEZXNjKQogCVVucmVnaXN0ZXJTbmFwc2hv dChlc3RhdGUtPmVzX3NuYXBzaG90KTsKIAlVbnJlZ2lzdGVyU25hcHNob3QoZXN0YXRlLT5lc19j cm9zc2NoZWNrX3NuYXBzaG90KTsKIAorCS8qCisJICogUmVzZXQgQUZURVIgdHJpZ2dlciBtb2R1 bGUgaWYgdGhlIHF1ZXJ5IGV4ZWN1dGlvbiB3YXMgYWJvcnRlZC4KKwkgKi8KKwlpZiAoZXN0YXRl LT5lc19hYm9ydGVkICYmCisJCSEoZXN0YXRlLT5lc190b3BfZWZsYWdzICYKKwkJICAoRVhFQ19G TEFHX1NLSVBfVFJJR0dFUlMgfCBFWEVDX0ZMQUdfRVhQTEFJTl9PTkxZKSkpCisJCUFmdGVyVHJp Z2dlckFib3J0UXVlcnkoKTsKKwogCS8qCiAJICogTXVzdCBzd2l0Y2ggb3V0IG9mIGNvbnRleHQg YmVmb3JlIGRlc3Ryb3lpbmcgaXQKIAkgKi8KQEAgLTYwNiw2ICs2NzUsMjEgQEAgRXhlY0NoZWNr UGVybWlzc2lvbnMoTGlzdCAqcmFuZ2VUYWJsZSwgTGlzdCAqcnRlcGVybWluZm9zLAogCQkJCSAg IChydGUtPnJ0ZWtpbmQgPT0gUlRFX1NVQlFVRVJZICYmCiAJCQkJCXJ0ZS0+cmVsa2luZCA9PSBS RUxLSU5EX1ZJRVcpKTsKIAorCQkJLyoKKwkJCSAqIEVuc3VyZSB0aGF0IHdlIGhhdmUgYXQgbGVh c3QgYW4gQWNjZXNzU2hhcmVMb2NrIG9uIHJlbGF0aW9ucworCQkJICogd2hvc2UgcGVybWlzc2lv bnMgbmVlZCB0byBiZSBjaGVja2VkLgorCQkJICoKKwkJCSAqIFNraXAgdGhpcyBjaGVjayBpbiBh IHBhcmFsbGVsIHdvcmtlciBiZWNhdXNlIGxvY2tzIHdvbid0IGJlCisJCQkgKiB0YWtlbiB1bnRp bCBFeGVjSW5pdE5vZGUoKSBwZXJmb3JtcyBwbGFuIGluaXRpYWxpemF0aW9uLgorCQkJICoKKwkJ CSAqIFhYWDogRXhlY0NoZWNrUGVybWlzc2lvbnMoKSBpbiBhIHBhcmFsbGVsIHdvcmtlciBtYXkg YmUKKwkJCSAqIHJlZHVuZGFudCB3aXRoIHRoZSBjaGVja3MgZG9uZSBpbiB0aGUgbGVhZGVyIHBy b2Nlc3MsIHNvIHRoaXMKKwkJCSAqIHNob3VsZCBiZSByZXZpZXdlZCB0byBlbnN1cmUgaXTigJlz IG5lY2Vzc2FyeS4KKwkJCSAqLworCQkJQXNzZXJ0KElzUGFyYWxsZWxXb3JrZXIoKSB8fAorCQkJ CSAgIENoZWNrUmVsYXRpb25PaWRMb2NrZWRCeU1lKHJ0ZS0+cmVsaWQsIEFjY2Vzc1NoYXJlTG9j aywKKwkJCQkJCQkJCQkJICB0cnVlKSk7CisKIAkJCSh2b2lkKSBnZXRSVEVQZXJtaXNzaW9uSW5m byhydGVwZXJtaW5mb3MsIHJ0ZSk7CiAJCQkvKiBNYW55LXRvLW9uZSBtYXBwaW5nIG5vdCBhbGxv d2VkICovCiAJCQlBc3NlcnQoIWJtc19pc19tZW1iZXIocnRlLT5wZXJtaW5mb2luZGV4LCBpbmRl eHNldCkpOwpAQCAtODMxLDYgKzkxNSwxMiBAQCBFeGVjQ2hlY2tYYWN0UmVhZE9ubHkoUGxhbm5l ZFN0bXQgKnBsYW5uZWRzdG10KQogICoKICAqCQlJbml0aWFsaXplcyB0aGUgcXVlcnkgcGxhbjog b3BlbiBmaWxlcywgYWxsb2NhdGUgc3RvcmFnZQogICoJCWFuZCBzdGFydCB1cCB0aGUgcnVsZSBt YW5hZ2VyCisgKgorICoJCUlmIHRoZSBwbGFuIG9yaWdpbmF0ZXMgZnJvbSBhIENhY2hlZFBsYW4g KGdpdmVuIGluIHF1ZXJ5RGVzYy0+Y3BsYW4pLAorICoJCWl0IGNhbiBiZWNvbWUgaW52YWxpZCBk dXJpbmcgcnVudGltZSAiaW5pdGlhbCIgcHJ1bmluZyB3aGVuIHRoZQorICoJCXJlbWFpbmluZyBz ZXQgb2YgbG9ja3MgaXMgdGFrZW4uICBUaGUgZnVuY3Rpb24gcmV0dXJucyBlYXJseSBpbiB0aGF0 CisgKgkJY2FzZSB3aXRob3V0IGluaXRpYWxpemluZyB0aGUgcGxhbiwgYW5kIHRoZSBjYWxsZXIg aXMgZXhwZWN0ZWQgdG8KKyAqCQlyZXRyeSB3aXRoIGEgbmV3IHZhbGlkIHBsYW4uCiAgKiAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgKi8KIHN0YXRpYyB2b2lkCkBAIC04MzgsNiArOTI4LDcgQEAgSW5pdFBsYW4oUXVlcnlE ZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpCiB7CiAJQ21kVHlwZQkJb3BlcmF0aW9uID0gcXVl cnlEZXNjLT5vcGVyYXRpb247CiAJUGxhbm5lZFN0bXQgKnBsYW5uZWRzdG10ID0gcXVlcnlEZXNj LT5wbGFubmVkc3RtdDsKKwlDYWNoZWRQbGFuICpjYWNoZWRwbGFuID0gcXVlcnlEZXNjLT5jcGxh bjsKIAlQbGFuCSAgICpwbGFuID0gcGxhbm5lZHN0bXQtPnBsYW5UcmVlOwogCUxpc3QJICAgKnJh bmdlVGFibGUgPSBwbGFubmVkc3RtdC0+cnRhYmxlOwogCUVTdGF0ZQkgICAqZXN0YXRlID0gcXVl cnlEZXNjLT5lc3RhdGU7CkBAIC04NTQsOSArOTQ1LDExIEBAIEluaXRQbGFuKFF1ZXJ5RGVzYyAq cXVlcnlEZXNjLCBpbnQgZWZsYWdzKQogCS8qCiAJICogaW5pdGlhbGl6ZSB0aGUgbm9kZSdzIGV4 ZWN1dGlvbiBzdGF0ZQogCSAqLwotCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIHJhbmdlVGFi bGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MpOworCUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUs IHJhbmdlVGFibGUsIHBsYW5uZWRzdG10LT5wZXJtSW5mb3MsCisJCQkJCSAgIGJtc19jb3B5KHBs YW5uZWRzdG10LT51bnBydW5hYmxlUmVsaWRzKSk7CiAKIAllc3RhdGUtPmVzX3BsYW5uZWRzdG10 ID0gcGxhbm5lZHN0bXQ7CisJZXN0YXRlLT5lc19jYWNoZWRwbGFuID0gY2FjaGVkcGxhbjsKIAll c3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MgPSBwbGFubmVkc3RtdC0+cGFydFBydW5lSW5mb3M7 CiAKIAkvKgpAQCAtODY3LDkgKzk2MCwxNSBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVz YywgaW50IGVmbGFncykKIAkgKiBleGVjdXRlZCwgYXJlIHNhdmVkIGluIGVzX3BhcnRfcHJ1bmVf cmVzdWx0cy4gIFRoZXNlIHJlc3VsdHMgY29ycmVzcG9uZAogCSAqIHRvIGVhY2ggUGFydGl0aW9u UHJ1bmVJbmZvIGVudHJ5LCBhbmQgdGhlIGVzX3BhcnRfcHJ1bmVfcmVzdWx0cyBsaXN0IGlzCiAJ ICogcGFyYWxsZWwgdG8gZXNfcGFydF9wcnVuZV9pbmZvcy4KKwkgKgorCSAqIFRoaXMgd2lsbCBh bHNvIGFkZCB0aGUgUlQgaW5kZXhlcyBvZiBzdXJ2aXZpbmcgbGVhZiBwYXJ0aXRpb25zIHRvCisJ ICogZXNfdW5wcnVuZWRfcmVsaWRzLgogCSAqLwogCUV4ZWNEb0luaXRpYWxQcnVuaW5nKGVzdGF0 ZSk7CiAKKwlpZiAoIUV4ZWNQbGFuU3RpbGxWYWxpZChlc3RhdGUpKQorCQlyZXR1cm47CisKIAkv KgogCSAqIE5leHQsIGJ1aWxkIHRoZSBFeGVjUm93TWFyayBhcnJheSBmcm9tIHRoZSBQbGFuUm93 TWFyayhzKSwgaWYgYW55LgogCSAqLwpAQCAtODg0LDggKzk4MywxMyBAQCBJbml0UGxhbihRdWVy eURlc2MgKnF1ZXJ5RGVzYywgaW50IGVmbGFncykKIAkJCVJlbGF0aW9uCXJlbGF0aW9uOwogCQkJ RXhlY1Jvd01hcmsgKmVybTsKIAotCQkJLyogaWdub3JlICJwYXJlbnQiIHJvd21hcmtzOyB0aGV5 IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJCWlmIChyYy0+aXNQYXJlbnQpCisJCQkv KgorCQkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGlycmVs ZXZhbnQgYXQKKwkJCSAqIHJ1bnRpbWUuICBBbHNvIGlnbm9yZSB0aGUgcm93bWFya3MgYmVsb25n aW5nIHRvIGNoaWxkIHRhYmxlcworCQkJICogdGhhdCBoYXZlIGJlZW4gcHJ1bmVkIGluIEV4ZWNE b0luaXRpYWxQcnVuaW5nKCkuCisJCQkgKi8KKwkJCWlmIChyYy0+aXNQYXJlbnQgfHwKKwkJCQkh Ym1zX2lzX21lbWJlcihyYy0+cnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCiAJCQkJ Y29udGludWU7CiAKIAkJCS8qIGdldCByZWxhdGlvbidzIE9JRCAod2lsbCBwcm9kdWNlIEludmFs aWRPaWQgaWYgc3VicXVlcnkpICovCkBAIC0yODU3LDYgKzI5NjEsOSBAQCBFdmFsUGxhblF1YWxT dGFydChFUFFTdGF0ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCSAqIHRoZSBzbmFwc2hv dCwgcmFuZ2V0YWJsZSwgYW5kIGV4dGVybmFsIFBhcmFtIGluZm8uICBUaGV5IG5lZWQgdGhlaXIg b3duCiAJICogY29waWVzIG9mIGxvY2FsIHN0YXRlLCBpbmNsdWRpbmcgYSB0dXBsZSB0YWJsZSwg ZXNfcGFyYW1fZXhlY192YWxzLAogCSAqIHJlc3VsdC1yZWwgaW5mbywgZXRjLgorCSAqCisJICog ZXNfY2FjaGVkcGxhbiBpcyBub3QgY29waWVkIGJlY2F1c2UgRVBRIHBsYW4gZXhlY3V0aW9uIGRv ZXMgbm90IGFjcXVpcmUKKwkgKiBhbnkgbmV3IGxvY2tzIHRoYXQgY291bGQgaW52YWxpZGF0ZSB0 aGUgQ2FjaGVkUGxhbi4KIAkgKi8KIAlyY2VzdGF0ZS0+ZXNfZGlyZWN0aW9uID0gRm9yd2FyZFNj YW5EaXJlY3Rpb247CiAJcmNlc3RhdGUtPmVzX3NuYXBzaG90ID0gcGFyZW50ZXN0YXRlLT5lc19z bmFwc2hvdDsKQEAgLTI5MjgsNiArMzAzNSwxMyBAQCBFdmFsUGxhblF1YWxTdGFydChFUFFTdGF0 ZSAqZXBxc3RhdGUsIFBsYW4gKnBsYW5UcmVlKQogCQl9CiAJfQogCisJLyoKKwkgKiBDb3B5IGVz X3VucHJ1bmVkX3JlbGlkcyBzbyB0aGF0IFJvd01hcmtzIG9mIHBydW5lZCByZWxhdGlvbnMgYXJl CisJICogaWdub3JlZCBpbiBFeGVjSW5pdExvY2tSb3dzKCkgYW5kIEV4ZWNJbml0TW9kaWZ5VGFi bGUoKSB3aGVuCisJICogaW5pdGlhbGl6aW5nIHRoZSBwbGFuIHRyZWVzIGJlbG93LgorCSAqLwor CXJjZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMgPSBwYXJlbnRlc3RhdGUtPmVzX3VucHJ1bmVk X3JlbGlkczsKKwogCS8qCiAJICogSW5pdGlhbGl6ZSBwcml2YXRlIHN0YXRlIGluZm9ybWF0aW9u IGZvciBlYWNoIFN1YlBsYW4uICBXZSBtdXN0IGRvIHRoaXMKIAkgKiBiZWZvcmUgcnVubmluZyBF eGVjSW5pdE5vZGUgb24gdGhlIG1haW4gcXVlcnkgdHJlZSwgc2luY2UKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY1BhcmFsbGVsLmMKaW5kZXggYjAxYTJmZGZkZC4uMDg0OTIxNjZkNCAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcmFsbGVsLmMKQEAgLTE4Myw2ICsxODMsNyBAQCBFeGVjU2VyaWFsaXplUGxh bihQbGFuICpwbGFuLCBFU3RhdGUgKmVzdGF0ZSkKIAlwc3RtdC0+cGxhblRyZWUgPSBwbGFuOwog CXBzdG10LT5wYXJ0UHJ1bmVJbmZvcyA9IGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9pbmZvczsKIAlw c3RtdC0+cnRhYmxlID0gZXN0YXRlLT5lc19yYW5nZV90YWJsZTsKKwlwc3RtdC0+dW5wcnVuYWJs ZVJlbGlkcyA9IGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzOwogCXBzdG10LT5wZXJtSW5mb3Mg PSBlc3RhdGUtPmVzX3J0ZXBlcm1pbmZvczsKIAlwc3RtdC0+cmVzdWx0UmVsYXRpb25zID0gTklM OwogCXBzdG10LT5hcHBlbmRSZWxhdGlvbnMgPSBOSUw7CkBAIC0xMjU3LDggKzEyNTgsMTUgQEAg RXhlY1BhcmFsbGVsR2V0UXVlcnlEZXNjKHNobV90b2MgKnRvYywgRGVzdFJlY2VpdmVyICpyZWNl aXZlciwKIAlwYXJhbXNwYWNlID0gc2htX3RvY19sb29rdXAodG9jLCBQQVJBTExFTF9LRVlfUEFS QU1MSVNUSU5GTywgZmFsc2UpOwogCXBhcmFtTEkgPSBSZXN0b3JlUGFyYW1MaXN0KCZwYXJhbXNw YWNlKTsKIAotCS8qIENyZWF0ZSBhIFF1ZXJ5RGVzYyBmb3IgdGhlIHF1ZXJ5LiAqLworCS8qCisJ ICogQ3JlYXRlIGEgUXVlcnlEZXNjIGZvciB0aGUgcXVlcnkuICBXZSBwYXNzIE5VTEwgZm9yIGNh Y2hlZHBsYW4sIGJlY2F1c2UKKwkgKiB3ZSBkb24ndCBoYXZlIGEgcG9pbnRlciB0byB0aGUgQ2Fj aGVkUGxhbiBpbiB0aGUgbGVhZGVyJ3MgcHJvY2Vzcy4gSXQncworCSAqIGZpbmUgYmVjYXVzZSB0 aGUgb25seSByZWFzb24gdGhlIGV4ZWN1dG9yIG5lZWRzIHRvIHNlZSBpdCBpcyB0byBkZWNpZGUK KwkgKiBpZiBpdCBzaG91bGQgdGFrZSBsb2NrcyBvbiBjZXJ0YWluIHJlbGF0aW9ucywgYnV0IHBh cmFsbGVsIHdvcmtlcnMKKwkgKiBhbHdheXMgdGFrZSBsb2NrcyBhbnl3YXkuCisJICovCiAJcmV0 dXJuIENyZWF0ZVF1ZXJ5RGVzYyhwc3RtdCwKKwkJCQkJCSAgIE5VTEwsCiAJCQkJCQkgICBxdWVy eVN0cmluZywKIAkJCQkJCSAgIEdldEFjdGl2ZVNuYXBzaG90KCksIEludmFsaWRTbmFwc2hvdCwK IAkJCQkJCSAgIHJlY2VpdmVyLCBwYXJhbUxJLCBOVUxMLCBpbnN0cnVtZW50X29wdGlvbnMpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvZXhlY1BhcnRpdGlvbi5jCmluZGV4IDQ2ZGQxYzc3YTMuLmFjNmJjNDMy NmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uYworKysg Yi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0aW9uLmMKQEAgLTI2LDYgKzI2LDcgQEAK ICNpbmNsdWRlICJwYXJ0aXRpb25pbmcvcGFydGRlc2MuaCIKICNpbmNsdWRlICJwYXJ0aXRpb25p bmcvcGFydHBydW5lLmgiCiAjaW5jbHVkZSAicmV3cml0ZS9yZXdyaXRlTWFuaXAuaCIKKyNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1 dGlscy9sc3lzY2FjaGUuaCIKICNpbmNsdWRlICJ1dGlscy9wYXJ0Y2FjaGUuaCIKQEAgLTE4Miw3 ICsxODMsOCBAQCBzdGF0aWMgY2hhciAqRXhlY0J1aWxkU2xvdFBhcnRpdGlvbktleURlc2NyaXB0 aW9uKFJlbGF0aW9uIHJlbCwKIHN0YXRpYyBMaXN0ICphZGp1c3RfcGFydGl0aW9uX2NvbG5vcyhM aXN0ICpjb2xub3MsIFJlc3VsdFJlbEluZm8gKmxlYWZfcGFydF9ycmkpOwogc3RhdGljIExpc3Qg KmFkanVzdF9wYXJ0aXRpb25fY29sbm9zX3VzaW5nX21hcChMaXN0ICpjb2xub3MsIEF0dHJNYXAg KmF0dHJNYXApOwogc3RhdGljIFBhcnRpdGlvblBydW5lU3RhdGUgKkNyZWF0ZVBhcnRpdGlvblBy dW5lU3RhdGUoRVN0YXRlICplc3RhdGUsCi0JCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUlu Zm8gKnBydW5laW5mbyk7CisJCQkJCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5l aW5mbywKKwkJCQkJCQkJCQkJCQkgIEJpdG1hcHNldCAqKmFsbF9sZWFmcGFydF9ydGlzKTsKIHN0 YXRpYyB2b2lkIEluaXRQYXJ0aXRpb25QcnVuZUNvbnRleHQoUGFydGl0aW9uZWRSZWxQcnVuaW5n RGF0YSAqcHBydW5lLAogCQkJCQkJCQkJICBQYXJ0aXRpb25QcnVuZUNvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCQkgIExpc3QgKnBydW5pbmdfc3RlcHMsCkBAIC0xOTQsNyArMTk2LDggQEAgc3Rh dGljIHZvaWQgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBsYW5TdGF0ZSAqcGFyZW50 X3BsYW4sCiAJCQkJCQkJCQkJICAgUGFydGl0aW9uUHJ1bmluZ0RhdGEgKnBydW5lZGF0YSwKIAkJ CQkJCQkJCQkgICBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhICpwcHJ1bmUsCiAJCQkJCQkJCQkJ ICAgYm9vbCBpbml0aWFsX3BydW5lLAotCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3Vi cGxhbnMpOworCQkJCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbnMsCisJCQkJCQkJ CQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFuX3J0aXMpOwogCiAKIC8qCkBAIC0xNzY0LDcg KzE3NjcsOCBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAqY29sbm9z LCBBdHRyTWFwICphdHRyTWFwKQogICogRXhlY0RvSW5pdGlhbFBydW5pbmc6CiAgKgkJUGVyZm9y bSBydW50aW1lICJpbml0aWFsIiBwcnVuaW5nLCBpZiBuZWNlc3NhcnksIHRvIGRldGVybWluZSB0 aGUgc2V0CiAgKgkJb2YgY2hpbGQgc3Vibm9kZXMgdGhhdCBuZWVkIHRvIGJlIGluaXRpYWxpemVk IGR1cmluZyBFeGVjSW5pdE5vZGUoKSBmb3IKLSAqCQlhbGwgcGxhbiBub2RlcyB0aGF0IGNvbnRh aW4gYSBQYXJ0aXRpb25QcnVuZUluZm8uCisgKgkJYWxsIHBsYW4gbm9kZXMgdGhhdCBjb250YWlu IGEgUGFydGl0aW9uUHJ1bmVJbmZvLiAgVGhpcyBhbHNvIGxvY2tzIHRoZQorICoJCWxlYWYgcGFy dGl0aW9ucyB3aG9zZSBzdWJub2RlcyB3aWxsIGJlIGluaXRpYWxpemVkIGlmIG5lZWRlZC4KICAq CiAgKiBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nOgogICoJCVVwZGF0ZXMgdGhlIFBhcnRp dGlvblBydW5lU3RhdGUgZm91bmQgYXQgZ2l2ZW4gcGFydF9wcnVuZV9pbmRleCBpbgpAQCAtMTc4 NSwxMSArMTc4OSwxMyBAQCBhZGp1c3RfcGFydGl0aW9uX2NvbG5vc191c2luZ19tYXAoTGlzdCAq Y29sbm9zLCBBdHRyTWFwICphdHRyTWFwKQogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKi8KIAorCiAv KgogICogRXhlY0RvSW5pdGlhbFBydW5pbmcKICAqCQlQZXJmb3JtIHJ1bnRpbWUgImluaXRpYWwi IHBydW5pbmcsIGlmIG5lY2Vzc2FyeSwgdG8gZGV0ZXJtaW5lIHRoZSBzZXQKICAqCQlvZiBjaGls ZCBzdWJub2RlcyB0aGF0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQgZHVyaW5nIEV4ZWNJbml0Tm9k ZSgpIGZvcgotICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLgor ICoJCXBsYW4gbm9kZXMgdGhhdCBzdXBwb3J0IHBhcnRpdGlvbiBwcnVuaW5nLiAgVGhpcyBhbHNv IGxvY2tzIHRoZSBsZWFmCisgKgkJcGFydGl0aW9ucyB3aG9zZSBzdWJub2RlcyB3aWxsIGJlIGlu aXRpYWxpemVkIGlmIG5lZWRlZC4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGl0ZXJhdGVzIG92ZXIg ZWFjaCBQYXJ0aXRpb25QcnVuZUluZm8gZW50cnkgaW4KICAqIGVzdGF0ZS0+ZXNfcGFydF9wcnVu ZV9pbmZvcy4gRm9yIGVhY2ggZW50cnksIGl0IGNyZWF0ZXMgYSBQYXJ0aXRpb25QcnVuZVN0YXRl CkBAIC0xODEwLDE1ICsxODE2LDE5IEBAIHZvaWQKIEV4ZWNEb0luaXRpYWxQcnVuaW5nKEVTdGF0 ZSAqZXN0YXRlKQogewogCUxpc3RDZWxsICAgKmxjOworCUxpc3QJICAgKmxvY2tlZF9yZWxpZHMg PSBOSUw7CiAKIAlmb3JlYWNoKGxjLCBlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfaW5mb3MpCiAJewog CQlQYXJ0aXRpb25QcnVuZUluZm8gKnBydW5laW5mbyA9IGxmaXJzdF9ub2RlKFBhcnRpdGlvblBy dW5lSW5mbywgbGMpOwogCQlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwogCQlCaXRt YXBzZXQgICp2YWxpZHN1YnBsYW5zID0gTlVMTDsKKwkJQml0bWFwc2V0ICAqYWxsX2xlYWZwYXJ0 X3J0aXMgPSBOVUxMOworCQlCaXRtYXBzZXQgKnZhbGlkc3VicGxhbl9ydGlzID0gTlVMTDsKIAog CQkvKiBDcmVhdGUgYW5kIHNhdmUgdGhlIFBhcnRpdGlvblBydW5lU3RhdGUuICovCi0JCXBydW5l c3RhdGUgPSBDcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKGVzdGF0ZSwgcHJ1bmVpbmZvKTsKKwkJ cHJ1bmVzdGF0ZSA9IENyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoZXN0YXRlLCBwcnVuZWluZm8s CisJCQkJCQkJCQkJCSAgICZhbGxfbGVhZnBhcnRfcnRpcyk7CiAJCWVzdGF0ZS0+ZXNfcGFydF9w cnVuZV9zdGF0ZXMgPSBsYXBwZW5kKGVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9zdGF0ZXMsCiAJCQkJ CQkJCQkJCSAgIHBydW5lc3RhdGUpOwogCkBAIC0xODI3LDEwICsxODM3LDQ1IEBAIEV4ZWNEb0lu aXRpYWxQcnVuaW5nKEVTdGF0ZSAqZXN0YXRlKQogCQkgKiBiaXRtYXBzZXQgb3IgTlVMTCBhcyBk ZXNjcmliZWQgaW4gdGhlIGhlYWRlciBjb21tZW50LgogCQkgKi8KIAkJaWYgKHBydW5lc3RhdGUt PmRvX2luaXRpYWxfcHJ1bmUpCi0JCQl2YWxpZHN1YnBsYW5zID0gRXhlY0ZpbmRNYXRjaGluZ1N1 YlBsYW5zKHBydW5lc3RhdGUsIHRydWUpOworCQkJdmFsaWRzdWJwbGFucyA9IEV4ZWNGaW5kTWF0 Y2hpbmdTdWJQbGFucyhwcnVuZXN0YXRlLCB0cnVlLAorCQkJCQkJCQkJCQkJCSAmdmFsaWRzdWJw bGFuX3J0aXMpOworCQllbHNlCisJCQl2YWxpZHN1YnBsYW5fcnRpcyA9IGFsbF9sZWFmcGFydF9y dGlzOworCisJCWlmIChFeGVjU2hvdWxkTG9ja1JlbGF0aW9ucyhlc3RhdGUpKQorCQl7CisJCQlp bnQJCXJ0aW5kZXggPSAtMTsKKworCQkJd2hpbGUgKChydGluZGV4ID0gYm1zX25leHRfbWVtYmVy KHZhbGlkc3VicGxhbl9ydGlzLAorCQkJCQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQorCQkJewor CQkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2gocnRpbmRleCwgZXN0YXRlKTsK KworCQkJCUFzc2VydChydGUtPnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OICYmCisJCQkJCSAgIHJ0 ZS0+cmVsbG9ja21vZGUgIT0gTm9Mb2NrKTsKKwkJCQlMb2NrUmVsYXRpb25PaWQocnRlLT5yZWxp ZCwgcnRlLT5yZWxsb2NrbW9kZSk7CisJCQkJbG9ja2VkX3JlbGlkcyA9IGxhcHBlbmRfaW50KGxv Y2tlZF9yZWxpZHMsIHJ0aW5kZXgpOworCQkJfQorCQl9CisJCWVzdGF0ZS0+ZXNfdW5wcnVuZWRf cmVsaWRzID0gYm1zX2FkZF9tZW1iZXJzKGVzdGF0ZS0+ZXNfdW5wcnVuZWRfcmVsaWRzLAorCQkJ CQkJCQkJCQkJCSB2YWxpZHN1YnBsYW5fcnRpcyk7CiAJCWVzdGF0ZS0+ZXNfcGFydF9wcnVuZV9y ZXN1bHRzID0gbGFwcGVuZChlc3RhdGUtPmVzX3BhcnRfcHJ1bmVfcmVzdWx0cywKIAkJCQkJCQkJ CQkJCXZhbGlkc3VicGxhbnMpOwogCX0KKworCS8qCisJICogUmVsZWFzZSB0aGUgdXNlbGVzcyBs b2NrcyBpZiB0aGUgcGxhbiB3b24ndCBiZSBleGVjdXRlZC4gIFRoaXMgaXMgdGhlCisJICogc2Ft ZSBhcyB3aGF0IENoZWNrQ2FjaGVkUGxhbigpIGluIHBsYW5jYWNoZS5jIGRvZXMuCisJICovCisJ aWYgKCFFeGVjUGxhblN0aWxsVmFsaWQoZXN0YXRlKSkKKwl7CisJCWZvcmVhY2gobGMsIGxvY2tl ZF9yZWxpZHMpCisJCXsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0ZSA9IGV4ZWNfcnRfZmV0Y2gobGZp cnN0X2ludChsYyksIGVzdGF0ZSk7CisKKwkJCVVubG9ja1JlbGF0aW9uT2lkKHJ0ZS0+cmVsaWQs IHJ0ZS0+cmVsbG9ja21vZGUpOworCQl9CisJfQogfQogCiAvKgpAQCAtMTk0MCwxMiArMTk4NSwx OCBAQCBFeGVjSW5pdFBhcnRpdGlvbkV4ZWNQcnVuaW5nKFBsYW5TdGF0ZSAqcGxhbnN0YXRlLAog ICogcmUtZXZhbHVhdGUgd2hpY2ggcGFydGl0aW9ucyBtYXRjaCB0aGUgcHJ1bmluZyBzdGVwcyBw cm92aWRlZCBpbiBlYWNoCiAgKiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mby4KICAqCisgKiBPbiBy ZXR1cm4sICphbGxfbGVhZnBhcnRfcnRpcyB3aWxsIGNvbnRhaW4gdGhlIFJUIGluZGV4ZXMgb2Yg YWxsIGxlYWYKKyAqIHBhcnRpdGlvbnMgaWYgaW5pdGlhbCBwcnVuaW5nIHN0ZXBzIGFyZSBza2lw cGVkIChlLmcuLCBkdXJpbmcgRVhQTEFJTgorICogKEdFTkVSSUNfUExBTikpLiBUaGUgY2FsbGVy IGlzIHJlc3BvbnNpYmxlIGZvciBhZGRpbmcgdGhlc2UgUlQgaW5kZXhlcworICogdG8gZXN0YXRl LT5lc191bnBydW5lZF9yZWxpZHMuCisgKgogICogTm90ZSB0aGF0IHRoZSBQYXJ0aXRpb25QcnVu ZUNvbnRleHRzIGZvciBib3RoIGluaXRpYWwgYW5kIGV4ZWMgcHJ1bmluZwogICogKHdoaWNoIGFy ZSBzdG9yZWQgaW4gZWFjaCBQYXJ0aXRpb25lZFJlbFBydW5pbmdEYXRhKSBhcmUgaW5pdGlhbGl6 ZWQgbGF6aWx5CiAgKiBpbiBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoKSB3aGVuIHVz ZWQgZm9yIHRoZSBmaXJzdCB0aW1lLgogICovCiBzdGF0aWMgUGFydGl0aW9uUHJ1bmVTdGF0ZSAq Ci1DcmVhdGVQYXJ0aXRpb25QcnVuZVN0YXRlKEVTdGF0ZSAqZXN0YXRlLCBQYXJ0aXRpb25QcnVu ZUluZm8gKnBydW5laW5mbykKK0NyZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3Rh dGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1bmVpbmZvLAorCQkJCQkJICBCaXRtYXBzZXQgKiph bGxfbGVhZnBhcnRfcnRpcykKIHsKIAlQYXJ0aXRpb25QcnVuZVN0YXRlICpwcnVuZXN0YXRlOwog CWludAkJCW5fcGFydF9oaWVyYXJjaGllczsKQEAgLTIwNDIsOCArMjA5Myw4IEBAIENyZWF0ZVBh cnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAqcHJ1 bmVpbmZvKQogCQkJICogVGhlIHNldCBvZiBwYXJ0aXRpb25zIHRoYXQgZXhpc3Qgbm93IG1pZ2h0 IG5vdCBiZSB0aGUgc2FtZSB0aGF0CiAJCQkgKiBleGlzdGVkIHdoZW4gdGhlIHBsYW4gd2FzIG1h ZGUuICBUaGUgbm9ybWFsIGNhc2UgaXMgdGhhdCBpdCBpczsKIAkJCSAqIG9wdGltaXplIGZvciB0 aGF0IGNhc2Ugd2l0aCBhIHF1aWNrIGNvbXBhcmlzb24sIGFuZCBqdXN0IGNvcHkKLQkJCSAqIHRo ZSBzdWJwbGFuX21hcCBhbmQgbWFrZSBzdWJwYXJ0X21hcCBwb2ludCB0byB0aGUgb25lIGluCi0J CQkgKiBQcnVuZUluZm8uCisJCQkgKiB0aGUgc3VicGxhbl9tYXAgYW5kIG1ha2Ugc3VicGFydF9t YXAsIGxlYWZwYXJ0X3J0aV9tYXAgcG9pbnQgdG8KKwkJCSAqIHRoZSBvbmVzIGluIFBydW5lSW5m by4KIAkJCSAqCiAJCQkgKiBGb3IgdGhlIGNhc2Ugd2hlcmUgdGhleSBhcmVuJ3QgaWRlbnRpY2Fs LCB3ZSBjb3VsZCBoYXZlIG1vcmUKIAkJCSAqIHBhcnRpdGlvbnMgb24gZWl0aGVyIHNpZGU7IG9y IGV2ZW4gZXhhY3RseSB0aGUgc2FtZSBudW1iZXIgb2YKQEAgLTIwNjIsNiArMjExMyw3IEBAIENy ZWF0ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5m byAqcHJ1bmVpbmZvKQogCQkJCQkgICBzaXplb2YoaW50KSAqIHBhcnRkZXNjLT5ucGFydHMpID09 IDApCiAJCQl7CiAJCQkJcHBydW5lLT5zdWJwYXJ0X21hcCA9IHBpbmZvLT5zdWJwYXJ0X21hcDsK KwkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXAgPSBwaW5mby0+bGVhZnBhcnRfcnRpX21hcDsK IAkJCQltZW1jcHkocHBydW5lLT5zdWJwbGFuX21hcCwgcGluZm8tPnN1YnBsYW5fbWFwLAogCQkJ CQkgICBzaXplb2YoaW50KSAqIHBpbmZvLT5ucGFydHMpOwogCQkJfQpAQCAtMjA4Miw2ICsyMTM0 LDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9u UHJ1bmVJbmZvICpwcnVuZWluZm8pCiAJCQkJICogbWlzbWF0Y2hlcy4KIAkJCQkgKi8KIAkJCQlw cHJ1bmUtPnN1YnBhcnRfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICogcGFydGRlc2MtPm5wYXJ0 cyk7CisJCQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwID0gcGFsbG9jKHNpemVvZihpbnQpICog cGFydGRlc2MtPm5wYXJ0cyk7CiAKIAkJCQlmb3IgKHBwX2lkeCA9IDA7IHBwX2lkeCA8IHBhcnRk ZXNjLT5ucGFydHM7IHBwX2lkeCsrKQogCQkJCXsKQEAgLTIwOTksNiArMjE1Miw4IEBAIENyZWF0 ZVBhcnRpdGlvblBydW5lU3RhdGUoRVN0YXRlICplc3RhdGUsIFBhcnRpdGlvblBydW5lSW5mbyAq cHJ1bmVpbmZvKQogCQkJCQkJCXBpbmZvLT5zdWJwbGFuX21hcFtwZF9pZHhdOwogCQkJCQkJcHBy dW5lLT5zdWJwYXJ0X21hcFtwcF9pZHhdID0KIAkJCQkJCQlwaW5mby0+c3VicGFydF9tYXBbcGRf aWR4XTsKKwkJCQkJCXBwcnVuZS0+bGVhZnBhcnRfcnRpX21hcFtwcF9pZHhdID0KKwkJCQkJCQlw aW5mby0+bGVhZnBhcnRfcnRpX21hcFtwZF9pZHhdOwogCQkJCQkJcGRfaWR4Kys7CiAJCQkJCQlj b250aW51ZTsKIAkJCQkJfQpAQCAtMjEzNiw2ICsyMTkxLDcgQEAgQ3JlYXRlUGFydGl0aW9uUHJ1 bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVuZWluZm8pCiAK IAkJCQkJcHBydW5lLT5zdWJwYXJ0X21hcFtwcF9pZHhdID0gLTE7CiAJCQkJCXBwcnVuZS0+c3Vi cGxhbl9tYXBbcHBfaWR4XSA9IC0xOworCQkJCQlwcHJ1bmUtPmxlYWZwYXJ0X3J0aV9tYXBbcHBf aWR4XSA9IDA7CiAJCQkJfQogCQkJfQogCkBAIC0yMTcxLDYgKzIyMjcsMjUgQEAgQ3JlYXRlUGFy dGl0aW9uUHJ1bmVTdGF0ZShFU3RhdGUgKmVzdGF0ZSwgUGFydGl0aW9uUHJ1bmVJbmZvICpwcnVu ZWluZm8pCiAJCQlwcnVuZXN0YXRlLT5leGVjcGFyYW1pZHMgPSBibXNfYWRkX21lbWJlcnMocHJ1 bmVzdGF0ZS0+ZXhlY3BhcmFtaWRzLAogCQkJCQkJCQkJCQkJCSAgIHBpbmZvLT5leGVjcGFyYW1p ZHMpOwogCisJCQkvKgorCQkJICogUmV0dXJuIGFsbCBsZWFmIHBhcnRpdGlvbiBpbmRleGVzIGlm IHdlJ3JlIHNraXBwaW5nIHBydW5pbmcKKwkJCSAqIGluIHRoZSBFWFBMQUlOIChHRU5FUklDX1BM QU4pIGNhc2UuCisJCQkgKi8KKwkJCWlmIChwaW5mby0+aW5pdGlhbF9wcnVuaW5nX3N0ZXBzICYm ICFwcnVuZXN0YXRlLT5kb19pbml0aWFsX3BydW5lKQorCQkJeworCQkJCWludAkJcGFydF9pbmRl eCA9IC0xOworCisJCQkJd2hpbGUgKChwYXJ0X2luZGV4ID0gYm1zX25leHRfbWVtYmVyKHBwcnVu ZS0+cHJlc2VudF9wYXJ0cywKKwkJCQkJCQkJCQkJCQkgcGFydF9pbmRleCkpID49IDApCisJCQkJ eworCQkJCQlJbmRleAlydGluZGV4ID0gcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW3BhcnRfaW5k ZXhdOworCisJCQkJCWlmIChydGluZGV4KQorCQkJCQkJKmFsbF9sZWFmcGFydF9ydGlzID0gYm1z X2FkZF9tZW1iZXIoKmFsbF9sZWFmcGFydF9ydGlzLAorCQkJCQkJCQkJCQkJCQkJcnRpbmRleCk7 CisJCQkJfQorCQkJfQorCiAJCQlqKys7CiAJCX0KIAkJaSsrOwpAQCAtMjQxNCwxMCArMjQ4OSwx NSBAQCBQYXJ0aXRpb25QcnVuZUZpeFN1YlBsYW5NYXAoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1 bmVzdGF0ZSwKICAqIFBhc3MgaW5pdGlhbF9wcnVuZSBpZiBQQVJBTV9FWEVDIFBhcmFtcyBjYW5u b3QgeWV0IGJlIGV2YWx1YXRlZC4gIFRoaXMKICAqIGRpZmZlcmVudGlhdGVzIHRoZSBpbml0aWFs IGV4ZWN1dG9yLXRpbWUgcHJ1bmluZyBzdGVwIGZyb20gbGF0ZXIKICAqIHJ1bnRpbWUgcHJ1bmlu Zy4KKyAqCisgKiBUaGUgY2FsbGVyIG11c3QgcGFzcyBhIG5vbi1OVUxMIHZhbGlkc3VicGxhbl9y dGlzIGR1cmluZyBpbml0aWFsIHBydW5pbmcKKyAqIHRvIGNvbGxlY3QgdGhlIFJUIGluZGV4ZXMg b2YgbGVhZiBwYXJ0aXRpb25zIHdob3NlIHN1Ym5vZGVzIHdpbGwgYmUKKyAqIGV4ZWN1dGVkLiAg VGhlc2UgUlQgaW5kZXhlcyBhcmUgbGF0ZXIgYWRkZWQgdG8gRVN0YXRlLmVzX3VucHJ1bmVkX3Jl bGlkcy4KICAqLwogQml0bWFwc2V0ICoKIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhQYXJ0aXRp b25QcnVuZVN0YXRlICpwcnVuZXN0YXRlLAotCQkJCQkJIGJvb2wgaW5pdGlhbF9wcnVuZSkKKwkJ CQkJCSBib29sIGluaXRpYWxfcHJ1bmUsCisJCQkJCQkgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFu X3J0aXMpCiB7CiAJQml0bWFwc2V0ICAqcmVzdWx0ID0gTlVMTDsKIAlNZW1vcnlDb250ZXh0IG9s ZGNvbnRleHQ7CkBAIC0yNDI5LDYgKzI1MDksNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMo UGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkgKiBldmFsdWF0ZWQgKmFuZCogdGhl cmUgYXJlIHN0ZXBzIGluIHdoaWNoIHRvIGRvIHNvLgogCSAqLwogCUFzc2VydChpbml0aWFsX3By dW5lIHx8IHBydW5lc3RhdGUtPmRvX2V4ZWNfcHJ1bmUpOworCUFzc2VydCh2YWxpZHN1YnBsYW5f cnRpcyAhPSBOVUxMIHx8ICFpbml0aWFsX3BydW5lKTsKIAogCS8qCiAJICogU3dpdGNoIHRvIGEg dGVtcCBjb250ZXh0IHRvIGF2b2lkIGxlYWtpbmcgbWVtb3J5IGluIHRoZSBleGVjdXRvcidzCkBA IC0yNDUzLDcgKzI1MzQsNyBAQCBFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1 bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKIAkJcHBydW5lID0gJnBydW5lZGF0YS0+cGFydHJlbHBydW5l ZGF0YVswXTsKIAkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBydW5lc3RhdGUtPnBh cmVudF9wbGFuLAogCQkJCQkJCQkJICAgcHJ1bmVkYXRhLCBwcHJ1bmUsIGluaXRpYWxfcHJ1bmUs Ci0JCQkJCQkJCQkgICAmcmVzdWx0KTsKKwkJCQkJCQkJCSAgICZyZXN1bHQsIHZhbGlkc3VicGxh bl9ydGlzKTsKIAogCQkvKiBFeHByZXNzaW9uIGV2YWwgbWF5IGhhdmUgdXNlZCBzcGFjZSBpbiBF eHByQ29udGV4dCB0b28gKi8KIAkJaWYgKHBwcnVuZS0+ZXhlY19jb250ZXh0LmluaXRpYWxpemVk KQpAQCAtMjQ3MCw2ICsyNTUxLDggQEAgRXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKFBhcnRpdGlv blBydW5lU3RhdGUgKnBydW5lc3RhdGUsCiAKIAkvKiBDb3B5IHJlc3VsdCBvdXQgb2YgdGhlIHRl bXAgY29udGV4dCBiZWZvcmUgd2UgcmVzZXQgaXQgKi8KIAlyZXN1bHQgPSBibXNfY29weShyZXN1 bHQpOworCWlmICh2YWxpZHN1YnBsYW5fcnRpcykKKwkJKnZhbGlkc3VicGxhbl9ydGlzID0gYm1z X2NvcHkoKnZhbGlkc3VicGxhbl9ydGlzKTsKIAogCU1lbW9yeUNvbnRleHRSZXNldChwcnVuZXN0 YXRlLT5wcnVuZV9jb250ZXh0KTsKIApAQCAtMjQ4MCwxNCArMjU2MywxNyBAQCBFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMoUGFydGl0aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKICAqIGZpbmRf bWF0Y2hpbmdfc3VicGxhbnNfcmVjdXJzZQogICoJCVJlY3Vyc2l2ZSB3b3JrZXIgZnVuY3Rpb24g Zm9yIEV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucwogICoKLSAqIEFkZHMgdmFsaWQgKG5vbi1wcnVu YWJsZSkgc3VicGxhbiBJRHMgdG8gKnZhbGlkc3VicGxhbnMKKyAqIEFkZHMgdmFsaWQgKG5vbi1w cnVuYWJsZSkgc3VicGxhbiBJRHMgdG8gKnZhbGlkc3VicGxhbnMgYW5kIHRoZSBSVCBpbmRleGVz CisgKiBvZiB0aGVpciBjb3JyZXNwb25kaW5nIGxlYWYgcGFydGl0aW9ucyB0byAqdmFsaWRzdWJw bGFuX3J0aXMgaWYKKyAqIGl0J3Mgbm9uLU5VTEwuCiAgKi8KIHN0YXRpYyB2b2lkCiBmaW5kX21h dGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRfcGxhbiwKIAkJCQkJCQkg ICBQYXJ0aXRpb25QcnVuaW5nRGF0YSAqcHJ1bmVkYXRhLAogCQkJCQkJCSAgIFBhcnRpdGlvbmVk UmVsUHJ1bmluZ0RhdGEgKnBwcnVuZSwKIAkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1bmUsCi0J CQkJCQkJICAgQml0bWFwc2V0ICoqdmFsaWRzdWJwbGFucykKKwkJCQkJCQkgICBCaXRtYXBzZXQg Kip2YWxpZHN1YnBsYW5zLAorCQkJCQkJCSAgIEJpdG1hcHNldCAqKnZhbGlkc3VicGxhbl9ydGlz KQogewogCUJpdG1hcHNldCAgKnBhcnRzZXQ7CiAJaW50CQkJaTsKQEAgLTI1MzAsOCArMjYxNiwx MyBAQCBmaW5kX21hdGNoaW5nX3N1YnBsYW5zX3JlY3Vyc2UoUGxhblN0YXRlICpwYXJlbnRfcGxh biwKIAl3aGlsZSAoKGkgPSBibXNfbmV4dF9tZW1iZXIocGFydHNldCwgaSkpID49IDApCiAJewog CQlpZiAocHBydW5lLT5zdWJwbGFuX21hcFtpXSA+PSAwKQorCQl7CiAJCQkqdmFsaWRzdWJwbGFu cyA9IGJtc19hZGRfbWVtYmVyKCp2YWxpZHN1YnBsYW5zLAogCQkJCQkJCQkJCQlwcHJ1bmUtPnN1 YnBsYW5fbWFwW2ldKTsKKwkJCWlmICh2YWxpZHN1YnBsYW5fcnRpcykKKwkJCQkqdmFsaWRzdWJw bGFuX3J0aXMgPSBibXNfYWRkX21lbWJlcigqdmFsaWRzdWJwbGFuX3J0aXMsCisJCQkJCQkJCQkJ CQkJcHBydW5lLT5sZWFmcGFydF9ydGlfbWFwW2ldKTsKKwkJfQogCQllbHNlCiAJCXsKIAkJCWlu dAkJCXBhcnRpZHggPSBwcHJ1bmUtPnN1YnBhcnRfbWFwW2ldOwpAQCAtMjU0MCw3ICsyNjMxLDgg QEAgZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKFBsYW5TdGF0ZSAqcGFyZW50X3BsYW4s CiAJCQkJZmluZF9tYXRjaGluZ19zdWJwbGFuc19yZWN1cnNlKHBhcmVudF9wbGFuLAogCQkJCQkJ CQkJCQkgICBwcnVuZWRhdGEsCiAJCQkJCQkJCQkJCSAgICZwcnVuZWRhdGEtPnBhcnRyZWxwcnVu ZWRhdGFbcGFydGlkeF0sCi0JCQkJCQkJCQkJCSAgIGluaXRpYWxfcHJ1bmUsIHZhbGlkc3VicGxh bnMpOworCQkJCQkJCQkJCQkgICBpbml0aWFsX3BydW5lLCB2YWxpZHN1YnBsYW5zLAorCQkJCQkJ CQkJCQkgICB2YWxpZHN1YnBsYW5fcnRpcyk7CiAJCQllbHNlCiAJCQl7CiAJCQkJLyoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKaW5kZXggYmM5MDVhMGNkYy4uZTg1NTg4MGZiYyAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1V0aWxzLmMKQEAgLTE0Nyw2ICsxNDcsNyBAQCBDcmVhdGVFeGVjdXRvclN0YXRl KHZvaWQpCiAJZXN0YXRlLT5lc190b3BfZWZsYWdzID0gMDsKIAllc3RhdGUtPmVzX2luc3RydW1l bnQgPSAwOwogCWVzdGF0ZS0+ZXNfZmluaXNoZWQgPSBmYWxzZTsKKwllc3RhdGUtPmVzX2Fib3J0 ZWQgPSBmYWxzZTsKIAogCWVzdGF0ZS0+ZXNfZXhwcmNvbnRleHRzID0gTklMOwogCkBAIC03Mjgs NyArNzI5LDggQEAgRXhlY09wZW5TY2FuUmVsYXRpb24oRVN0YXRlICplc3RhdGUsIEluZGV4IHNj YW5yZWxpZCwgaW50IGVmbGFncykKICAqIGluZGV4ZWQgYnkgcmFuZ2V0YWJsZSBpbmRleC4KICAq Lwogdm9pZAotRXhlY0luaXRSYW5nZVRhYmxlKEVTdGF0ZSAqZXN0YXRlLCBMaXN0ICpyYW5nZVRh YmxlLCBMaXN0ICpwZXJtSW5mb3MpCitFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUs IExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcywKKwkJCQkgICBCaXRtYXBzZXQgKnVu cHJ1bmVkX3JlbGlkcykKIHsKIAkvKiBSZW1lbWJlciB0aGUgcmFuZ2UgdGFibGUgTGlzdCBhcy1p cyAqLwogCWVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGUgPSByYW5nZVRhYmxlOwpAQCAtNzM5LDYgKzc0 MSwxNCBAQCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFi bGUsIExpc3QgKnBlcm1JbmZvcykKIAkvKiBTZXQgc2l6ZSBvZiBhc3NvY2lhdGVkIGFycmF5cyAq LwogCWVzdGF0ZS0+ZXNfcmFuZ2VfdGFibGVfc2l6ZSA9IGxpc3RfbGVuZ3RoKHJhbmdlVGFibGUp OwogCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBiaXRtYXBzZXQgb2YgUlQgaW5kZXhlcyAoZXNf dW5wcnVuZWRfcmVsaWRzKSByZXByZXNlbnRpbmcKKwkgKiByZWxhdGlvbnMgdGhhdCB3aWxsIGJl IHNjYW5uZWQgZHVyaW5nIGV4ZWN1dGlvbi4gVGhpcyBzZXQgaXMgaW5pdGlhbGx5CisJICogcG9w dWxhdGVkIGJ5IHRoZSBjYWxsZXIgYW5kIG1heSBiZSBleHRlbmRlZCBsYXRlciBieSBFeGVjRG9J bml0aWFsUHJ1bmluZygpCisJICogdG8gaW5jbHVkZSBSVCBpbmRleGVzIG9mIHVucHJ1bmVkIGxl YWYgcGFydGl0aW9ucy4KKwkgKi8KKwllc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcyA9IHVucHJ1 bmVkX3JlbGlkczsKKwogCS8qCiAJICogQWxsb2NhdGUgYW4gYXJyYXkgdG8gc3RvcmUgYW4gb3Bl biBSZWxhdGlvbiBjb3JyZXNwb25kaW5nIHRvIGVhY2gKIAkgKiByYW5nZXRhYmxlIGVudHJ5LCBh bmQgaW5pdGlhbGl6ZSBlbnRyaWVzIHRvIE5VTEwuICBSZWxhdGlvbnMgYXJlIG9wZW5lZApAQCAt NzYwLDYgKzc3MCwxMCBAQCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3Qg KnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcykKICAqCQlPcGVuIHRoZSBSZWxhdGlvbiBmb3Ig YSByYW5nZSB0YWJsZSBlbnRyeSwgaWYgbm90IGFscmVhZHkgZG9uZQogICoKICAqIFRoZSBSZWxh dGlvbnMgd2lsbCBiZSBjbG9zZWQgaW4gRXhlY0VuZFBsYW4oKS4KKyAqCisgKiBOb3RlOiBUaGUg Y2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgJ3J0aScgcmVmZXJzIHRvIGFuIHVucHJ1bmVkIHJlbGF0 aW9uCisgKiAoaS5lLiwgaXQgaXMgYSBtZW1iZXIgb2YgZXN0YXRlLT5lc191bnBydW5lZF9yZWxp ZHMpIGJlZm9yZSBjYWxsaW5nIHRoaXMKKyAqIGZ1bmN0aW9uLiBBdHRlbXB0aW5nIHRvIG9wZW4g YSBwcnVuZWQgcmVsYXRpb24gd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuCiAgKi8KIFJlbGF0aW9u CiBFeGVjR2V0UmFuZ2VUYWJsZVJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBydGkpCkBA IC03NjgsNiArNzgyLDkgQEAgRXhlY0dldFJhbmdlVGFibGVSZWxhdGlvbihFU3RhdGUgKmVzdGF0 ZSwgSW5kZXggcnRpKQogCiAJQXNzZXJ0KHJ0aSA+IDAgJiYgcnRpIDw9IGVzdGF0ZS0+ZXNfcmFu Z2VfdGFibGVfc2l6ZSk7CiAKKwlpZiAoIWJtc19pc19tZW1iZXIocnRpLCBlc3RhdGUtPmVzX3Vu cHJ1bmVkX3JlbGlkcykpCisJCWVsb2coRVJST1IsICJ0cnlpbmcgdG8gb3BlbiBhIHBydW5lZCBy ZWxhdGlvbiIpOworCiAJcmVsID0gZXN0YXRlLT5lc19yZWxhdGlvbnNbcnRpIC0gMV07CiAJaWYg KHJlbCA9PSBOVUxMKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2Z1bmN0 aW9ucy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKaW5kZXggOGQxZmRhMmRk Yy4uMDU4YzEwYjRkNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25z LmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZnVuY3Rpb25zLmMKQEAgLTg0MCw2ICs4NDAs NyBAQCBwb3N0cXVlbF9zdGFydChleGVjdXRpb25fc3RhdGUgKmVzLCBTUUxGdW5jdGlvbkNhY2hl UHRyIGZjYWNoZSkKIAkJZGVzdCA9IE5vbmVfUmVjZWl2ZXI7CiAKIAllcy0+cWQgPSBDcmVhdGVR dWVyeURlc2MoZXMtPnN0bXQsCisJCQkJCQkJIE5VTEwsCiAJCQkJCQkJIGZjYWNoZS0+c3JjLAog CQkJCQkJCSBHZXRBY3RpdmVTbmFwc2hvdCgpLAogCQkJCQkJCSBJbnZhbGlkU25hcHNob3QsCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQXBwZW5kLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlQXBwZW5kLmMKaW5kZXggYjc3ZmY4NDg0MC4uODllMDViMTlkMCAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFwcGVuZC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL25vZGVBcHBlbmQuYwpAQCAtNTgxLDcgKzU4MSw3IEBAIGNob29zZV9uZXh0 X3N1YnBsYW5fbG9jYWxseShBcHBlbmRTdGF0ZSAqbm9kZSkKIAkJZWxzZSBpZiAoIW5vZGUtPmFz X3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQpCiAJCXsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBs YW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUs IGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3Rh dGUsIGZhbHNlLCBOVUxMKTsKIAkJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQg PSB0cnVlOwogCQl9CiAKQEAgLTY0OCw3ICs2NDgsNyBAQCBjaG9vc2VfbmV4dF9zdWJwbGFuX2Zv cl9sZWFkZXIoQXBwZW5kU3RhdGUgKm5vZGUpCiAJCWlmICghbm9kZS0+YXNfdmFsaWRfc3VicGxh bnNfaWRlbnRpZmllZCkKIAkJewogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJCUV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJ CUV4ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UsIE5V TEwpOwogCQkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJ CS8qCkBAIC03MjQsNyArNzI0LDcgQEAgY2hvb3NlX25leHRfc3VicGxhbl9mb3Jfd29ya2VyKEFw cGVuZFN0YXRlICpub2RlKQogCWVsc2UgaWYgKCFub2RlLT5hc192YWxpZF9zdWJwbGFuc19pZGVu dGlmaWVkKQogCXsKIAkJbm9kZS0+YXNfdmFsaWRfc3VicGxhbnMgPQotCQkJRXhlY0ZpbmRNYXRj aGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSk7CisJCQlFeGVjRmluZE1h dGNoaW5nU3ViUGxhbnMobm9kZS0+YXNfcHJ1bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAkJbm9k ZS0+YXNfdmFsaWRfc3VicGxhbnNfaWRlbnRpZmllZCA9IHRydWU7CiAKIAkJbWFya19pbnZhbGlk X3N1YnBsYW5zX2FzX2ZpbmlzaGVkKG5vZGUpOwpAQCAtODc3LDcgKzg3Nyw3IEBAIEV4ZWNBcHBl bmRBc3luY0JlZ2luKEFwcGVuZFN0YXRlICpub2RlKQogCWlmICghbm9kZS0+YXNfdmFsaWRfc3Vi cGxhbnNfaWRlbnRpZmllZCkKIAl7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zID0KLQkJCUV4 ZWNGaW5kTWF0Y2hpbmdTdWJQbGFucyhub2RlLT5hc19wcnVuZV9zdGF0ZSwgZmFsc2UpOworCQkJ RXhlY0ZpbmRNYXRjaGluZ1N1YlBsYW5zKG5vZGUtPmFzX3BydW5lX3N0YXRlLCBmYWxzZSwgTlVM TCk7CiAJCW5vZGUtPmFzX3ZhbGlkX3N1YnBsYW5zX2lkZW50aWZpZWQgPSB0cnVlOwogCiAJCWNs YXNzaWZ5X21hdGNoaW5nX3N1YnBsYW5zKG5vZGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZUxvY2tSb3dzLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTG9ja1Jv d3MuYwppbmRleCA0MTc1NGRkZmVhLi5jZmVhZDdkZWQyIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9ub2RlTG9ja1Jvd3MuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2Rl TG9ja1Jvd3MuYwpAQCAtMzQ3LDggKzM0NywxMyBAQCBFeGVjSW5pdExvY2tSb3dzKExvY2tSb3dz ICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jvd01hcmsgKmVybTsK IAkJRXhlY0F1eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJlbnQiIHJvd21hcmtz OyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJjLT5pc1BhcmVudCkK KwkJLyoKKwkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNlIHRoZXkgYXJlIGly cmVsZXZhbnQgYXQKKwkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRoZSByb3dtYXJrcyBiZWxv bmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCSAqIHRoYXQgaGF2ZSBiZWVuIHBydW5lZCBpbiBFeGVj RG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJjLT5pc1BhcmVudCB8fAorCQkJIWJt c19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKQogCQkJY29u dGludWU7CiAKIAkJLyogZmluZCBFeGVjUm93TWFyayBhbmQgYnVpbGQgRXhlY0F1eFJvd01hcmsg Ki8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVNZXJnZUFwcGVuZC5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKaW5kZXggZTIwMzJhZmNiNy4u MDY5NmRmZTdlYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBw ZW5kLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1lcmdlQXBwZW5kLmMKQEAgLTIx OSw3ICsyMTksNyBAQCBFeGVjTWVyZ2VBcHBlbmQoUGxhblN0YXRlICpwc3RhdGUpCiAJCSAqLwog CQlpZiAobm9kZS0+bXNfdmFsaWRfc3VicGxhbnMgPT0gTlVMTCkKIAkJCW5vZGUtPm1zX3ZhbGlk X3N1YnBsYW5zID0KLQkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1bmVf c3RhdGUsIGZhbHNlKTsKKwkJCQlFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMobm9kZS0+bXNfcHJ1 bmVfc3RhdGUsIGZhbHNlLCBOVUxMKTsKIAogCQkvKgogCQkgKiBGaXJzdCB0aW1lIHRocm91Z2g6 IHB1bGwgdGhlIGZpcnN0IHR1cGxlIGZyb20gZWFjaCB2YWxpZCBzdWJwbGFuLApkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwppbmRleCAxMTYxNTIwZjc2Li43NDEzYTI5ZWRhIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYworKysgYi9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYwpAQCAtNjM2LDcgKzYzNiw3IEBA IEV4ZWNJbml0VXBkYXRlUHJvamVjdGlvbihNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQlB c3NlcnQod2hpY2hyZWwgPj0gMCAmJiB3aGljaHJlbCA8IG10c3RhdGUtPm10X25yZWxzKTsKIAl9 CiAKLQl1cGRhdGVDb2xub3MgPSAoTGlzdCAqKSBsaXN0X250aChub2RlLT51cGRhdGVDb2xub3NM aXN0cywgd2hpY2hyZWwpOworCXVwZGF0ZUNvbG5vcyA9IChMaXN0ICopIGxpc3RfbnRoKG10c3Rh dGUtPm10X3VwZGF0ZUNvbG5vc0xpc3RzLCB3aGljaHJlbCk7CiAKIAkvKgogCSAqIEZvciBVUERB VEUsIHdlIHVzZSB0aGUgb2xkIHR1cGxlIHRvIGZpbGwgdXAgbWlzc2luZyB2YWx1ZXMgaW4gdGhl IHR1cGxlCkBAIC00MjgyLDcgKzQyODIsMTEgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlU YWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJTW9kaWZ5VGFibGVTdGF0 ZSAqbXRzdGF0ZTsKIAlQbGFuCSAgICpzdWJwbGFuID0gb3V0ZXJQbGFuKG5vZGUpOwogCUNtZFR5 cGUJCW9wZXJhdGlvbiA9IG5vZGUtPm9wZXJhdGlvbjsKLQlpbnQJCQlucmVscyA9IGxpc3RfbGVu Z3RoKG5vZGUtPnJlc3VsdFJlbGF0aW9ucyk7CisJaW50CQkJbnJlbHM7CisJTGlzdAkgICAqcmVz dWx0UmVsYXRpb25zID0gTklMOworCUxpc3QJICAgKndpdGhDaGVja09wdGlvbkxpc3RzID0gTklM OworCUxpc3QJICAgKnJldHVybmluZ0xpc3RzID0gTklMOworCUxpc3QJICAgKnVwZGF0ZUNvbG5v c0xpc3RzID0gTklMOwogCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm87CiAJTGlzdAkgICAq YXJvd21hcmtzOwogCUxpc3RDZWxsICAgKmw7CkBAIC00MjkyLDYgKzQyOTYsNDUgQEAgRXhlY0lu aXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxh Z3MpCiAJLyogY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGZsYWdzICovCiAJQXNzZXJ0KCEoZWZsYWdz ICYgKEVYRUNfRkxBR19CQUNLV0FSRCB8IEVYRUNfRkxBR19NQVJLKSkpOwogCisJLyoKKwkgKiBP bmx5IGNvbnNpZGVyIHVucHJ1bmVkIHJlbGF0aW9ucyBmb3IgaW5pdGlhbGl6aW5nIHRoZWlyIFJl c3VsdFJlbEluZm8KKwkgKiBzdHJ1Y3QgYW5kIG90aGVyIGZpZWxkcyBzdWNoIGFzIHdpdGhDaGVj a09wdGlvbnMsIGV0Yy4KKwkgKi8KKwlpID0gMDsKKwlmb3JlYWNoKGwsIG5vZGUtPnJlc3VsdFJl bGF0aW9ucykKKwl7CisJCUluZGV4CXJ0aSA9IGxmaXJzdF9pbnQobCk7CisKKwkJaWYgKGJtc19p c19tZW1iZXIocnRpLCBlc3RhdGUtPmVzX3VucHJ1bmVkX3JlbGlkcykpCisJCXsKKwkJCXJlc3Vs dFJlbGF0aW9ucyA9IGxhcHBlbmRfaW50KHJlc3VsdFJlbGF0aW9ucywgcnRpKTsKKwkJCWlmIChu b2RlLT53aXRoQ2hlY2tPcHRpb25MaXN0cykKKwkJCXsKKwkJCQlMaXN0ICp3aXRoQ2hlY2tPcHRp b25zID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCSAgIG5vZGUtPndpdGhDaGVj a09wdGlvbkxpc3RzLAorCQkJCQkJCQkJCQkJCSAgIGkpOworCisJCQkJd2l0aENoZWNrT3B0aW9u TGlzdHMgPSBsYXBwZW5kKHdpdGhDaGVja09wdGlvbkxpc3RzLCB3aXRoQ2hlY2tPcHRpb25zKTsK KwkJCX0KKwkJCWlmIChub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJCXsKKwkJCQlMaXN0ICpyZXR1 cm5pbmdMaXN0ID0gbGlzdF9udGhfbm9kZShMaXN0LAorCQkJCQkJCQkJCQkJCW5vZGUtPnJldHVy bmluZ0xpc3RzLAorCQkJCQkJCQkJCQkJCWkpOworCisJCQkJcmV0dXJuaW5nTGlzdHMgPSBsYXBw ZW5kKHJldHVybmluZ0xpc3RzLCByZXR1cm5pbmdMaXN0KTsKKwkJCX0KKwkJCWlmIChub2RlLT51 cGRhdGVDb2xub3NMaXN0cykKKwkJCXsKKwkJCQlMaXN0ICp1cGRhdGVDb2xub3NMaXN0ID0gbGlz dF9udGgobm9kZS0+dXBkYXRlQ29sbm9zTGlzdHMsIGkpOworCisJCQkJdXBkYXRlQ29sbm9zTGlz dHMgPSBsYXBwZW5kKHVwZGF0ZUNvbG5vc0xpc3RzLCB1cGRhdGVDb2xub3NMaXN0KTsKKwkJCX0K KwkJfQorCQlpKys7CisJfQorCW5yZWxzID0gbGlzdF9sZW5ndGgocmVzdWx0UmVsYXRpb25zKTsK KwogCS8qCiAJICogY3JlYXRlIHN0YXRlIHN0cnVjdHVyZQogCSAqLwpAQCAtNDMxMiw2ICs0MzU1 LDcgQEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3Rh dGUsIGludCBlZmxhZ3MpCiAJbXRzdGF0ZS0+bXRfbWVyZ2VfaW5zZXJ0ZWQgPSAwOwogCW10c3Rh dGUtPm10X21lcmdlX3VwZGF0ZWQgPSAwOwogCW10c3RhdGUtPm10X21lcmdlX2RlbGV0ZWQgPSAw OworCW10c3RhdGUtPm10X3VwZGF0ZUNvbG5vc0xpc3RzID0gdXBkYXRlQ29sbm9zTGlzdHM7CiAK IAkvKi0tLS0tLS0tLS0KIAkgKiBSZXNvbHZlIHRoZSB0YXJnZXQgcmVsYXRpb24uIFRoaXMgaXMg dGhlIHNhbWUgYXM6CkBAIC00MzI5LDYgKzQzNzMsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1v ZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkgKi8KIAlpZiAo bm9kZS0+cm9vdFJlbGF0aW9uID4gMCkKIAl7CisJCUFzc2VydChibXNfaXNfbWVtYmVyKG5vZGUt PnJvb3RSZWxhdGlvbiwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxpZHMpKTsKIAkJbXRzdGF0ZS0+ cm9vdFJlc3VsdFJlbEluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKIAkJRXhlY0luaXRS ZXN1bHRSZWxhdGlvbihlc3RhdGUsIG10c3RhdGUtPnJvb3RSZXN1bHRSZWxJbmZvLAogCQkJCQkJ CSAgIG5vZGUtPnJvb3RSZWxhdGlvbik7CkBAIC00MzQzLDcgKzQzODgsNyBAQCBFeGVjSW5pdE1v ZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykK IAogCS8qIHNldCB1cCBlcHFzdGF0ZSB3aXRoIGR1bW15IHN1YnBsYW4gZGF0YSBmb3IgdGhlIG1v bWVudCAqLwogCUV2YWxQbGFuUXVhbEluaXQoJm10c3RhdGUtPm10X2VwcXN0YXRlLCBlc3RhdGUs IE5VTEwsIE5JTCwKLQkJCQkJIG5vZGUtPmVwcVBhcmFtLCBub2RlLT5yZXN1bHRSZWxhdGlvbnMp OworCQkJCQkgbm9kZS0+ZXBxUGFyYW0sIHJlc3VsdFJlbGF0aW9ucyk7CiAJbXRzdGF0ZS0+Zmly ZUJTVHJpZ2dlcnMgPSB0cnVlOwogCiAJLyoKQEAgLTQzNjEsNyArNDQwNiw3IEBAIEV4ZWNJbml0 TW9kaWZ5VGFibGUoTW9kaWZ5VGFibGUgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdz KQogCSAqLwogCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZvOwogCWkgPSAw OwotCWZvcmVhY2gobCwgbm9kZS0+cmVzdWx0UmVsYXRpb25zKQorCWZvcmVhY2gobCwgcmVzdWx0 UmVsYXRpb25zKQogCXsKIAkJSW5kZXgJCXJlc3VsdFJlbGF0aW9uID0gbGZpcnN0X2ludChsKTsK IAkJTGlzdAkgICAqbWVyZ2VBY3Rpb25zID0gTklMOwpAQCAtNDUwNSw3ICs0NTUwLDcgQEAgRXhl Y0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBl ZmxhZ3MpCiAJICogSW5pdGlhbGl6ZSBhbnkgV0lUSCBDSEVDSyBPUFRJT04gY29uc3RyYWludHMg aWYgbmVlZGVkLgogCSAqLwogCXJlc3VsdFJlbEluZm8gPSBtdHN0YXRlLT5yZXN1bHRSZWxJbmZv OwotCWZvcmVhY2gobCwgbm9kZS0+d2l0aENoZWNrT3B0aW9uTGlzdHMpCisJZm9yZWFjaChsLCB3 aXRoQ2hlY2tPcHRpb25MaXN0cykKIAl7CiAJCUxpc3QJICAgKndjb0xpc3QgPSAoTGlzdCAqKSBs Zmlyc3QobCk7CiAJCUxpc3QJICAgKndjb0V4cHJzID0gTklMOwpAQCAtNDUyOCw3ICs0NTczLDcg QEAgRXhlY0luaXRNb2RpZnlUYWJsZShNb2RpZnlUYWJsZSAqbm9kZSwgRVN0YXRlICplc3RhdGUs IGludCBlZmxhZ3MpCiAJLyoKIAkgKiBJbml0aWFsaXplIFJFVFVSTklORyBwcm9qZWN0aW9ucyBp ZiBuZWVkZWQuCiAJICovCi0JaWYgKG5vZGUtPnJldHVybmluZ0xpc3RzKQorCWlmIChyZXR1cm5p bmdMaXN0cykKIAl7CiAJCVR1cGxlVGFibGVTbG90ICpzbG90OwogCQlFeHByQ29udGV4dCAqZWNv bnRleHQ7CkBAIC00NTM3LDcgKzQ1ODIsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRh YmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogSW5pdGlhbGl6ZSBy ZXN1bHQgdHVwbGUgc2xvdCBhbmQgYXNzaWduIGl0cyByb3d0eXBlIHVzaW5nIHRoZSBmaXJzdAog CQkgKiBSRVRVUk5JTkcgbGlzdC4gIFdlIGFzc3VtZSB0aGUgcmVzdCB3aWxsIGxvb2sgdGhlIHNh bWUuCiAJCSAqLwotCQltdHN0YXRlLT5wcy5wbGFuLT50YXJnZXRsaXN0ID0gKExpc3QgKikgbGlu aXRpYWwobm9kZS0+cmV0dXJuaW5nTGlzdHMpOworCQltdHN0YXRlLT5wcy5wbGFuLT50YXJnZXRs aXN0ID0gKExpc3QgKikgbGluaXRpYWwocmV0dXJuaW5nTGlzdHMpOwogCiAJCS8qIFNldCB1cCBh IHNsb3QgZm9yIHRoZSBvdXRwdXQgb2YgdGhlIFJFVFVSTklORyBwcm9qZWN0aW9uKHMpICovCiAJ CUV4ZWNJbml0UmVzdWx0VHVwbGVTbG90VEwoJm10c3RhdGUtPnBzLCAmVFRTT3BzVmlydHVhbCk7 CkBAIC00NTUyLDcgKzQ1OTcsNyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxlKE1vZGlmeVRhYmxlICpu b2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJICogQnVpbGQgYSBwcm9qZWN0aW9u IGZvciBlYWNoIHJlc3VsdCByZWwuCiAJCSAqLwogCQlyZXN1bHRSZWxJbmZvID0gbXRzdGF0ZS0+ cmVzdWx0UmVsSW5mbzsKLQkJZm9yZWFjaChsLCBub2RlLT5yZXR1cm5pbmdMaXN0cykKKwkJZm9y ZWFjaChsLCByZXR1cm5pbmdMaXN0cykKIAkJewogCQkJTGlzdAkgICAqcmxpc3QgPSAoTGlzdCAq KSBsZmlyc3QobCk7CiAKQEAgLTQ2NTMsOCArNDY5OCwxMyBAQCBFeGVjSW5pdE1vZGlmeVRhYmxl KE1vZGlmeVRhYmxlICpub2RlLCBFU3RhdGUgKmVzdGF0ZSwgaW50IGVmbGFncykKIAkJRXhlY1Jv d01hcmsgKmVybTsKIAkJRXhlY0F1eFJvd01hcmsgKmFlcm07CiAKLQkJLyogaWdub3JlICJwYXJl bnQiIHJvd21hcmtzOyB0aGV5IGFyZSBpcnJlbGV2YW50IGF0IHJ1bnRpbWUgKi8KLQkJaWYgKHJj LT5pc1BhcmVudCkKKwkJLyoKKwkJICogSWdub3JlICJwYXJlbnQiIHJvd21hcmtzLCBiZWNhdXNl IHRoZXkgYXJlIGlycmVsZXZhbnQgYXQKKwkJICogcnVudGltZS4gIEFsc28gaWdub3JlIHRoZSBy b3dtYXJrcyBiZWxvbmdpbmcgdG8gY2hpbGQgdGFibGVzCisJCSAqIHRoYXQgaGF2ZSBiZWVuIHBy dW5lZCBpbiBFeGVjRG9Jbml0aWFsUHJ1bmluZygpLgorCQkgKi8KKwkJaWYgKHJjLT5pc1BhcmVu dCB8fAorCQkJIWJtc19pc19tZW1iZXIocmMtPnJ0aSwgZXN0YXRlLT5lc191bnBydW5lZF9yZWxp ZHMpKQogCQkJY29udGludWU7CiAKIAkJLyogRmluZCBFeGVjUm93TWFyayBhbmQgYnVpbGQgRXhl Y0F1eFJvd01hcmsgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL3NwaS5jIGIv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKaW5kZXggMmZiMmU3MzYwNC4uYTdmOTgyNGU0ZCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivc3BpLmMKKysrIGIvc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivc3BpLmMKQEAgLTcwLDcgKzcwLDggQEAgc3RhdGljIGludAlfU1BJX2V4ZWN1dGVf cGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4ZWN1dGVPcHRpb25zICpvcHRpb25zLAog c3RhdGljIFBhcmFtTGlzdEluZm8gX1NQSV9jb252ZXJ0X3BhcmFtcyhpbnQgbmFyZ3MsIE9pZCAq YXJndHlwZXMsCiAJCQkJCQkJCQkJIERhdHVtICpWYWx1ZXMsIGNvbnN0IGNoYXIgKk51bGxzKTsK IAotc3RhdGljIGludAlfU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVzYywgYm9vbCBmaXJl X3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KTsKK3N0YXRpYyBpbnQJX1NQSV9wcXVlcnkoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCQkJ CUNhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCk7CiAKIHN0YXRp YyB2b2lkIF9TUElfZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIApAQCAtMTY4NSw3ICsxNjg2 LDggQEAgU1BJX2N1cnNvcl9vcGVuX2ludGVybmFsKGNvbnN0IGNoYXIgKm5hbWUsIFNQSVBsYW5Q dHIgcGxhbiwKIAkJCQkJICBxdWVyeV9zdHJpbmcsCiAJCQkJCSAgcGxhbnNvdXJjZS0+Y29tbWFu ZFRhZywKIAkJCQkJICBzdG10X2xpc3QsCi0JCQkJCSAgY3BsYW4pOworCQkJCQkgIGNwbGFuLAor CQkJCQkgIHBsYW5zb3VyY2UpOwogCiAJLyoKIAkgKiBTZXQgdXAgb3B0aW9ucyBmb3IgcG9ydGFs LiAgRGVmYXVsdCBTQ1JPTEwgdHlwZSBpcyBjaG9zZW4gdGhlIHNhbWUgd2F5CkBAIC0yNTAwLDYg KzI1MDIsNyBAQCBfU1BJX2V4ZWN1dGVfcGxhbihTUElQbGFuUHRyIHBsYW4sIGNvbnN0IFNQSUV4 ZWN1dGVPcHRpb25zICpvcHRpb25zLAogCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlID0g KENhY2hlZFBsYW5Tb3VyY2UgKikgbGZpcnN0KGxjMSk7CiAJCUxpc3QJICAgKnN0bXRfbGlzdDsK IAkJTGlzdENlbGwgICAqbGMyOworCQlpbnQJCQlxdWVyeV9pbmRleCA9IDA7CiAKIAkJc3BpY2Fs bGJhY2thcmcucXVlcnkgPSBwbGFuc291cmNlLT5xdWVyeV9zdHJpbmc7CiAKQEAgLTI2OTAsMTQg KzI2OTMsMTYgQEAgX1NQSV9leGVjdXRlX3BsYW4oU1BJUGxhblB0ciBwbGFuLCBjb25zdCBTUElF eGVjdXRlT3B0aW9ucyAqb3B0aW9ucywKIAkJCQkJc25hcCA9IEludmFsaWRTbmFwc2hvdDsKIAog CQkJCXFkZXNjID0gQ3JlYXRlUXVlcnlEZXNjKHN0bXQsCisJCQkJCQkJCQkJY3BsYW4sCiAJCQkJ CQkJCQkJcGxhbnNvdXJjZS0+cXVlcnlfc3RyaW5nLAogCQkJCQkJCQkJCXNuYXAsIGNyb3NzY2hl Y2tfc25hcHNob3QsCiAJCQkJCQkJCQkJZGVzdCwKIAkJCQkJCQkJCQlvcHRpb25zLT5wYXJhbXMs CiAJCQkJCQkJCQkJX1NQSV9jdXJyZW50LT5xdWVyeUVudiwKIAkJCQkJCQkJCQkwKTsKLQkJCQly ZXMgPSBfU1BJX3BxdWVyeShxZGVzYywgZmlyZV90cmlnZ2VycywKLQkJCQkJCQkJICBjYW5TZXRU YWcgPyBvcHRpb25zLT50Y291bnQgOiAwKTsKKworCQkJCXJlcyA9IF9TUElfcHF1ZXJ5KHFkZXNj LCBmaXJlX3RyaWdnZXJzLCBjYW5TZXRUYWcgPyBvcHRpb25zLT50Y291bnQgOiAwLAorCQkJCQkJ CQkgIHBsYW5zb3VyY2UsIHF1ZXJ5X2luZGV4KTsKIAkJCQlGcmVlUXVlcnlEZXNjKHFkZXNjKTsK IAkJCX0KIAkJCWVsc2UKQEAgLTI3OTQsNiArMjc5OSw4IEBAIF9TUElfZXhlY3V0ZV9wbGFuKFNQ SVBsYW5QdHIgcGxhbiwgY29uc3QgU1BJRXhlY3V0ZU9wdGlvbnMgKm9wdGlvbnMsCiAJCQkJbXlf cmVzID0gcmVzOwogCQkJCWdvdG8gZmFpbDsKIAkJCX0KKworCQkJcXVlcnlfaW5kZXgrKzsKIAkJ fQogCiAJCS8qIERvbmUgd2l0aCB0aGlzIHBsYW4sIHNvIHJlbGVhc2UgcmVmY291bnQgKi8KQEAg LTI4NzEsNyArMjg3OCw4IEBAIF9TUElfY29udmVydF9wYXJhbXMoaW50IG5hcmdzLCBPaWQgKmFy Z3R5cGVzLAogfQogCiBzdGF0aWMgaW50Ci1fU1BJX3BxdWVyeShRdWVyeURlc2MgKnF1ZXJ5RGVz YywgYm9vbCBmaXJlX3RyaWdnZXJzLCB1aW50NjQgdGNvdW50KQorX1NQSV9wcXVlcnkoUXVlcnlE ZXNjICpxdWVyeURlc2MsIGJvb2wgZmlyZV90cmlnZ2VycywgdWludDY0IHRjb3VudCwKKwkJCUNh Y2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsIGludCBxdWVyeV9pbmRleCkKIHsKIAlpbnQJCQlv cGVyYXRpb24gPSBxdWVyeURlc2MtPm9wZXJhdGlvbjsKIAlpbnQJCQllZmxhZ3M7CkBAIC0yOTI3 LDcgKzI5MzUsMTAgQEAgX1NQSV9wcXVlcnkoUXVlcnlEZXNjICpxdWVyeURlc2MsIGJvb2wgZmly ZV90cmlnZ2VycywgdWludDY0IHRjb3VudCkKIAllbHNlCiAJCWVmbGFncyA9IEVYRUNfRkxBR19T S0lQX1RSSUdHRVJTOwogCi0JRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIGVmbGFncyk7CisJaWYg KHF1ZXJ5RGVzYy0+Y3BsYW4pCisJCUV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKHF1ZXJ5RGVzYywg ZWZsYWdzLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CisJZWxzZQorCQlFeGVjdXRvclN0YXJ0 KHF1ZXJ5RGVzYywgZWZsYWdzKTsKIAogCUV4ZWN1dG9yUnVuKHF1ZXJ5RGVzYywgRm9yd2FyZFNj YW5EaXJlY3Rpb24sIHRjb3VudCwgdHJ1ZSk7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29w dGltaXplci9wbGFuL3BsYW5uZXIuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYwppbmRleCA5YzI1M2U4NjRhLi41ZmUyZWViNjVjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3Bs YW4vcGxhbm5lci5jCkBAIC01NTksNiArNTU5LDggQEAgc3RhbmRhcmRfcGxhbm5lcihRdWVyeSAq cGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmluZywgaW50IGN1cnNvck9wdGlvbnMsCiAJcmVz dWx0LT5wbGFuVHJlZSA9IHRvcF9wbGFuOwogCXJlc3VsdC0+cGFydFBydW5lSW5mb3MgPSBnbG9i LT5wYXJ0UHJ1bmVJbmZvczsKIAlyZXN1bHQtPnJ0YWJsZSA9IGdsb2ItPmZpbmFscnRhYmxlOwor CXJlc3VsdC0+dW5wcnVuYWJsZVJlbGlkcyA9IGJtc19kaWZmZXJlbmNlKGdsb2ItPmFsbFJlbGlk cywKKwkJCQkJCQkJCQkJICBnbG9iLT5wcnVuYWJsZVJlbGlkcyk7CiAJcmVzdWx0LT5wZXJtSW5m b3MgPSBnbG9iLT5maW5hbHJ0ZXBlcm1pbmZvczsKIAlyZXN1bHQtPnJlc3VsdFJlbGF0aW9ucyA9 IGdsb2ItPnJlc3VsdFJlbGF0aW9uczsKIAlyZXN1bHQtPmFwcGVuZFJlbGF0aW9ucyA9IGdsb2It PmFwcGVuZFJlbGF0aW9uczsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFu L3NldHJlZnMuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCA5 ZjEzMjQzZDU0Li4wNTNkMjY4N2YyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vc2V0cmVmcy5j CkBAIC01NjQsNyArNTY0LDggQEAgYWRkX3J0ZV90b19mbGF0X3J0YWJsZShQbGFubmVyR2xvYmFs ICpnbG9iLCBMaXN0ICpydGVwZXJtaW5mb3MsCiAKIAkvKgogCSAqIElmIGl0J3MgYSBwbGFpbiBy ZWxhdGlvbiBSVEUgKG9yIGEgc3VicXVlcnkgdGhhdCB3YXMgb25jZSBhIHZpZXcKLQkgKiByZWZl cmVuY2UpLCBhZGQgdGhlIHJlbGF0aW9uIE9JRCB0byByZWxhdGlvbk9pZHMuCisJICogcmVmZXJl bmNlKSwgYWRkIHRoZSByZWxhdGlvbiBPSUQgdG8gcmVsYXRpb25PaWRzLiAgQWxzbyBhZGQgaXRz IG5ldyBSVAorCSAqIGluZGV4IHRvIHRoZSBzZXQgb2YgcmVsYXRpb25zIHRoYXQgbmVlZCB0byBi ZSBsb2NrZWQgZm9yIGV4ZWN1dGlvbi4KIAkgKgogCSAqIFdlIGRvIHRoaXMgZXZlbiB0aG91Z2gg dGhlIFJURSBtaWdodCBiZSB1bnJlZmVyZW5jZWQgaW4gdGhlIHBsYW4gdHJlZTsKIAkgKiB0aGlz IHdvdWxkIGNvcnJlc3BvbmQgdG8gY2FzZXMgc3VjaCBhcyB2aWV3cyB0aGF0IHdlcmUgZXhwYW5k ZWQsIGNoaWxkCkBAIC01NzYsNyArNTc3LDExIEBAIGFkZF9ydGVfdG9fZmxhdF9ydGFibGUoUGxh bm5lckdsb2JhbCAqZ2xvYiwgTGlzdCAqcnRlcGVybWluZm9zLAogCSAqLwogCWlmIChuZXdydGUt PnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8CiAJCShuZXdydGUtPnJ0ZWtpbmQgPT0gUlRFX1NV QlFVRVJZICYmIE9pZElzVmFsaWQobmV3cnRlLT5yZWxpZCkpKQorCXsKIAkJZ2xvYi0+cmVsYXRp b25PaWRzID0gbGFwcGVuZF9vaWQoZ2xvYi0+cmVsYXRpb25PaWRzLCBuZXdydGUtPnJlbGlkKTsK KwkJZ2xvYi0+YWxsUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZ2xvYi0+YWxsUmVsaWRzLAorCQkJ CQkJCQkJCSBsaXN0X2xlbmd0aChnbG9iLT5maW5hbHJ0YWJsZSkpOworCX0KIAogCS8qCiAJICog QWRkIGEgY29weSBvZiB0aGUgUlRFUGVybWlzc2lvbkluZm8sIGlmIGFueSwgY29ycmVzcG9uZGlu ZyB0byB0aGlzIFJURQpAQCAtMTc0MCw2ICsxNzQ1LDExIEBAIHNldF9jdXN0b21zY2FuX3JlZmVy ZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsCiAgKgogICogQWxzbyB1cGRhdGUgdGhlIFJUIGluZGV4 ZXMgcHJlc2VudCBpbiBQYXJ0aXRpb25lZFJlbFBydW5lSW5mb3MgdG8gYWRkIHRoZQogICogb2Zm c2V0LgorICoKKyAqIEZpbmFsbHksIGlmIHRoZXJlIGFyZSBpbml0aWFsIHBydW5pbmcgc3RlcHMs IGFkZCB0aGUgUlQgaW5kZXhlcyBvZiB0aGUKKyAqIGxlYWYgcGFydGl0aW9ucyB0byB0aGUgc2V0 IG9mIHJlbGF0aW9ucyB0aGF0IGFyZSBwcnVuYWJsZSBhdCBleGVjdXRpb24KKyAqIHN0YXJ0dXAg dGltZS4gIFRoaXMgc2V0IGluZGljYXRlcyB3aGljaCByZWxhdGlvbnMgc2hvdWxkIG5vdCBiZSBs b2NrZWQKKyAqIGJlZm9yZSBleGVjdXRvciBzdGFydHVwLCBhcyB0aGV5IG1heSBiZSBwcnVuZWQg ZHVyaW5nIGluaXRpYWwgcHJ1bmluZy4KICAqLwogc3RhdGljIGludAogcmVnaXN0ZXJfcGFydHBy dW5laW5mbyhQbGFubmVySW5mbyAqcm9vdCwgaW50IHBhcnRfcHJ1bmVfaW5kZXgsIGludCBydG9m ZnNldCkKQEAgLTE3NjIsOCArMTc3MiwyNSBAQCByZWdpc3Rlcl9wYXJ0cHJ1bmVpbmZvKFBsYW5u ZXJJbmZvICpyb290LCBpbnQgcGFydF9wcnVuZV9pbmRleCwgaW50IHJ0b2Zmc2V0KQogCQlmb3Jl YWNoKGwyLCBwcnVuZV9pbmZvcykKIAkJewogCQkJUGFydGl0aW9uZWRSZWxQcnVuZUluZm8gKnBy ZWxpbmZvID0gbGZpcnN0KGwyKTsKKwkJCWludAkJaTsKIAogCQkJcHJlbGluZm8tPnJ0aW5kZXgg Kz0gcnRvZmZzZXQ7CisKKwkJCWZvciAoaSA9IDA7IGkgPCBwcmVsaW5mby0+bnBhcnRzOyBpKysp CisJCQl7CisJCQkJLyoKKwkJCQkgKiBOb24tbGVhZiBwYXJ0aXRpb25zIGFuZCBwYXJ0aXRpb25z IHRoYXQgZG8gbm90IGhhdmUgYQorCQkJCSAqIHN1YnBsYW4gYXJlIG5vdCBpbmNsdWRlZCBpbiB0 aGlzIG1hcCBhcyBtZW50aW9uZWQgaW4KKwkJCQkgKiBtYWtlX3BhcnRpdGlvbmVkcmVsX3BydW5l aW5mbygpLgorCQkJCSAqLworCQkJCWlmIChwcmVsaW5mby0+bGVhZnBhcnRfcnRpX21hcFtpXSkK KwkJCQl7CisJCQkJCXByZWxpbmZvLT5sZWFmcGFydF9ydGlfbWFwW2ldICs9IHJ0b2Zmc2V0Owor CQkJCQlpZiAocHJlbGluZm8tPmluaXRpYWxfcHJ1bmluZ19zdGVwcykKKwkJCQkJCWdsb2ItPnBy dW5hYmxlUmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZ2xvYi0+cHJ1bmFibGVSZWxpZHMsCisJCQkJ CQkJCQkJCQkJCQkgIHByZWxpbmZvLT5sZWFmcGFydF9ydGlfbWFwW2ldKTsKKwkJCQl9CisJCQl9 CiAJCX0KIAl9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1 bmUuYyBiL3NyYy9iYWNrZW5kL3BhcnRpdGlvbmluZy9wYXJ0cHJ1bmUuYwppbmRleCBhZTFkNjlm OTZjLi4wM2U1OTZjNDA1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJ0aXRpb25pbmcvcGFy dHBydW5lLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFydGl0aW9uaW5nL3BhcnRwcnVuZS5jCkBAIC02 NDUsNiArNjQ1LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8oUGxhbm5lckluZm8g KnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJaW50CQkgICAqc3VicGxhbl9tYXA7CiAJ CWludAkJICAgKnN1YnBhcnRfbWFwOwogCQlPaWQJCSAgICpyZWxpZF9tYXA7CisJCWludAkJICAg KmxlYWZwYXJ0X3J0aV9tYXA7CiAKIAkJLyoKIAkJICogQ29uc3RydWN0IHRoZSBzdWJwbGFuIGFu ZCBzdWJwYXJ0IG1hcHMgZm9yIHRoaXMgcGFydGl0aW9uaW5nIGxldmVsLgpAQCAtNjU3LDYgKzY1 OCw3IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZvICpyb290LCBS ZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCXN1YnBhcnRfbWFwID0gKGludCAqKSBwYWxsb2MobnBh cnRzICogc2l6ZW9mKGludCkpOwogCQltZW1zZXQoc3VicGFydF9tYXAsIC0xLCBucGFydHMgKiBz aXplb2YoaW50KSk7CiAJCXJlbGlkX21hcCA9IChPaWQgKikgcGFsbG9jMChucGFydHMgKiBzaXpl b2YoT2lkKSk7CisJCWxlYWZwYXJ0X3J0aV9tYXAgPSAoaW50ICopIHBhbGxvYzAobnBhcnRzICog c2l6ZW9mKGludCkpOwogCQlwcmVzZW50X3BhcnRzID0gTlVMTDsKIAogCQlpID0gLTE7CkBAIC02 NzEsOSArNjczLDI4IEBAIG1ha2VfcGFydGl0aW9uZWRyZWxfcHJ1bmVpbmZvKFBsYW5uZXJJbmZv ICpyb290LCBSZWxPcHRJbmZvICpwYXJlbnRyZWwsCiAJCQlzdWJwbGFuX21hcFtpXSA9IHN1YnBs YW5pZHggPSByZWxpZF9zdWJwbGFuX21hcFtwYXJ0cmVsLT5yZWxpZF0gLSAxOwogCQkJc3VicGFy dF9tYXBbaV0gPSBzdWJwYXJ0aWR4ID0gcmVsaWRfc3VicGFydF9tYXBbcGFydHJlbC0+cmVsaWRd IC0gMTsKIAkJCXJlbGlkX21hcFtpXSA9IHBsYW5uZXJfcnRfZmV0Y2gocGFydHJlbC0+cmVsaWQs IHJvb3QpLT5yZWxpZDsKKworCQkJLyoKKwkJCSAqIFRyYWNrIHRoZSBSVCBpbmRleGVzIG9mICJs ZWFmIiBwYXJ0aXRpb25zIHNvIHRoZXkgY2FuIGJlCisJCQkgKiBpbmNsdWRlZCBpbiB0aGUgUGxh bm5lckdsb2JhbC5wcnVuYWJsZVJlbGlkcyBzZXQsIGluZGljYXRpbmcKKwkJCSAqIHJlbGF0aW9u cyB3aG9zZSBsb2NraW5nIGlzIGRlZmVycmVkIHVudGlsIGV4ZWN1dG9yIHN0YXJ0dXAuCisJCQkg KgorCQkJICogV2UgZG9u4oCZdCBkZWZlciBsb2NraW5nIG9mIHN1Yi1wYXJ0aXRpb25lZCBwYXJ0 aXRpb25zIGJlY2F1c2UKKwkJCSAqIHNldHRpbmcgdXAgUGFydGl0aW9uZWRSZWxQcnVuaW5nRGF0 YSBjdXJyZW50bHkgb2NjdXJzIGJlZm9yZQorCQkJICogaW5pdGlhbCBwcnVuaW5nLCBzbyB0aGUg cmVsYXRpb24gbXVzdCBiZSBsb2NrZWQgYXQgdGhhdCBzdGFnZSwKKwkJCSAqIGV2ZW4gaWYgaXQg bWF5IGJlIHBydW5lZC4KKwkJCSAqCisJCQkgKiBPbmx5IGxlYWYgcGFydGl0aW9ucyB3aXRoIGEg dmFsaWQgc3VicGxhbiB0aGF0IGFyZSBwcnVuYWJsZQorCQkJICogdXNpbmcgaW5pdGlhbCBwcnVu aW5nIGFyZSBhZGRlZCB0byBwcnVuYWJsZVJlbGlkcy4gU28KKwkJCSAqIHBhcnRpdGlvbnMgd2l0 aG91dCBhIHN1YnBsYW4gZHVlIHRvIGNvbnN0cmFpbnQgZXhjbHVzaW9uIHdpbGwKKwkJCSAqIHJl bWFpbiBpbiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzIGFuZCB0aHVzIHRoZWlyIGxvY2tp bmcKKwkJCSAqIHdpbGwgbm90IGJlIGRlZmVycmVkIGV2ZW4gaWYgdGhleSBtYXkgdWx0aW1hdGVs eSBiZSBwcnVuZWQgZHVlCisJCQkgKiB0byBpbml0aWFsIHBydW5pbmcuCisJCQkgKi8KIAkJCWlm IChzdWJwbGFuaWR4ID49IDApCiAJCQl7CiAJCQkJcHJlc2VudF9wYXJ0cyA9IGJtc19hZGRfbWVt YmVyKHByZXNlbnRfcGFydHMsIGkpOworCQkJCWxlYWZwYXJ0X3J0aV9tYXBbaV0gPSAoaW50KSBw YXJ0cmVsLT5yZWxpZDsKIAogCQkJCS8qIFJlY29yZCBmaW5kaW5nIHRoaXMgc3VicGxhbiAgKi8K IAkJCQlzdWJwbGFuc2ZvdW5kID0gYm1zX2FkZF9tZW1iZXIoc3VicGxhbnNmb3VuZCwgc3VicGxh bmlkeCk7CkBAIC02OTUsNiArNzE2LDcgQEAgbWFrZV9wYXJ0aXRpb25lZHJlbF9wcnVuZWluZm8o UGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKnBhcmVudHJlbCwKIAkJcGluZm8tPnN1YnBs YW5fbWFwID0gc3VicGxhbl9tYXA7CiAJCXBpbmZvLT5zdWJwYXJ0X21hcCA9IHN1YnBhcnRfbWFw OwogCQlwaW5mby0+cmVsaWRfbWFwID0gcmVsaWRfbWFwOworCQlwaW5mby0+bGVhZnBhcnRfcnRp X21hcCA9IGxlYWZwYXJ0X3J0aV9tYXA7CiAJfQogCiAJcGZyZWUocmVsaWRfc3VicGFydF9tYXAp OwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYyBi L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvd29ya2VyLmMKaW5kZXggNDZkM2FkNTY2 Zi4uNTBhYzAzYzBkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNh bC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dvcmtlci5j CkBAIC02NjgsNyArNjY4LDggQEAgY3JlYXRlX2VkYXRhX2Zvcl9yZWxhdGlvbihMb2dpY2FsUmVw UmVsTWFwRW50cnkgKnJlbCkKIAogCWFkZFJURVBlcm1pc3Npb25JbmZvKCZwZXJtaW5mb3MsIHJ0 ZSk7CiAKLQlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBlcm1p bmZvcyk7CisJRXhlY0luaXRSYW5nZVRhYmxlKGVzdGF0ZSwgbGlzdF9tYWtlMShydGUpLCBwZXJt aW5mb3MsCisJCQkJCSAgIGJtc19tYWtlX3NpbmdsZXRvbigxKSk7CiAKIAllZGF0YS0+dGFyZ2V0 UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8gPSBtYWtlTm9kZShSZXN1bHRSZWxJbmZvKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRwdXQvcGdvdXRwdXQuYyBiL3Ny Yy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Bnb3V0cHV0L3Bnb3V0cHV0LmMKaW5kZXggNWUyMzQ1M2Yw Ny4uM2MwNTAyZTA2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vcGdvdXRw dXQvcGdvdXRwdXQuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9wZ291dHB1dC9wZ291 dHB1dC5jCkBAIC04MTEsNyArODExLDggQEAgY3JlYXRlX2VzdGF0ZV9mb3JfcmVsYXRpb24oUmVs YXRpb24gcmVsKQogCiAJYWRkUlRFUGVybWlzc2lvbkluZm8oJnBlcm1pbmZvcywgcnRlKTsKIAot CUV4ZWNJbml0UmFuZ2VUYWJsZShlc3RhdGUsIGxpc3RfbWFrZTEocnRlKSwgcGVybWluZm9zKTsK KwlFeGVjSW5pdFJhbmdlVGFibGUoZXN0YXRlLCBsaXN0X21ha2UxKHJ0ZSksIHBlcm1pbmZvcywK KwkJCQkJICAgYm1zX21ha2Vfc2luZ2xldG9uKDEpKTsKIAogCWVzdGF0ZS0+ZXNfb3V0cHV0X2Np ZCA9IEdldEN1cnJlbnRDb21tYW5kSWQoZmFsc2UpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC90Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggNDJh Zjc2ODA0NS4uODExZTBhMDJkZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jl cy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAtMTIzNiw2ICsxMjM2LDcg QEAgZXhlY19zaW1wbGVfcXVlcnkoY29uc3QgY2hhciAqcXVlcnlfc3RyaW5nKQogCQkJCQkJICBx dWVyeV9zdHJpbmcsCiAJCQkJCQkgIGNvbW1hbmRUYWcsCiAJCQkJCQkgIHBsYW50cmVlX2xpc3Qs CisJCQkJCQkgIE5VTEwsCiAJCQkJCQkgIE5VTEwpOwogCiAJCS8qCkBAIC0yMDM4LDcgKzIwMzks OCBAQCBleGVjX2JpbmRfbWVzc2FnZShTdHJpbmdJbmZvIGlucHV0X21lc3NhZ2UpCiAJCQkJCSAg cXVlcnlfc3RyaW5nLAogCQkJCQkgIHBzcmMtPmNvbW1hbmRUYWcsCiAJCQkJCSAgY3BsYW4tPnN0 bXRfbGlzdCwKLQkJCQkJICBjcGxhbik7CisJCQkJCSAgY3BsYW4sCisJCQkJCSAgcHNyYyk7CiAK IAkvKiBEb25lIHdpdGggdGhlIHNuYXBzaG90IHVzZWQgZm9yIHBhcmFtZXRlciBJL08gYW5kIHBh cnNpbmcvcGxhbm5pbmcgKi8KIAlpZiAoc25hcHNob3Rfc2V0KQpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wcXVlcnkuYyBiL3NyYy9iYWNrZW5kL3Rjb3AvcHF1ZXJ5LmMKaW5kZXggMGM0 NWZjZjMxOC4uZmU1MmRiMTM2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdGNvcC9wcXVlcnku YworKysgYi9zcmMvYmFja2VuZC90Y29wL3BxdWVyeS5jCkBAIC0xOSw2ICsxOSw3IEBACiAKICNp bmNsdWRlICJhY2Nlc3MveGFjdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ByZXBhcmUuaCIKKyNp bmNsdWRlICJleGVjdXRvci9leGVjZGVzYy5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL3RzdG9yZVJl Y2VpdmVyLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIK QEAgLTM2LDYgKzM3LDkgQEAgUG9ydGFsCQlBY3RpdmVQb3J0YWwgPSBOVUxMOwogCiAKIHN0YXRp YyB2b2lkIFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKKwkJCQkJCSBDYWNoZWRQbGFu ICpjcGxhbiwKKwkJCQkJCSBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAorCQkJCQkJIGlu dCBxdWVyeV9pbmRleCwKIAkJCQkJCSBjb25zdCBjaGFyICpzb3VyY2VUZXh0LAogCQkJCQkJIFBh cmFtTGlzdEluZm8gcGFyYW1zLAogCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LApA QCAtNjUsNiArNjksNyBAQCBzdGF0aWMgdm9pZCBEb1BvcnRhbFJld2luZChQb3J0YWwgcG9ydGFs KTsKICAqLwogUXVlcnlEZXNjICoKIENyZWF0ZVF1ZXJ5RGVzYyhQbGFubmVkU3RtdCAqcGxhbm5l ZHN0bXQsCisJCQkJQ2FjaGVkUGxhbiAqY3BsYW4sCiAJCQkJY29uc3QgY2hhciAqc291cmNlVGV4 dCwKIAkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQlTbmFwc2hvdCBjcm9zc2NoZWNrX3NuYXBz aG90LApAQCAtNzcsNiArODIsNyBAQCBDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAogCiAJcWQtPm9wZXJhdGlvbiA9IHBsYW5uZWRzdG10LT5jb21tYW5kVHlwZTsJLyog b3BlcmF0aW9uICovCiAJcWQtPnBsYW5uZWRzdG10ID0gcGxhbm5lZHN0bXQ7CS8qIHBsYW4gKi8K KwlxZC0+Y3BsYW4gPSBjcGxhbjsJCQkvKiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbm5l ZHN0bXQgKi8KIAlxZC0+c291cmNlVGV4dCA9IHNvdXJjZVRleHQ7CS8qIHF1ZXJ5IHRleHQgKi8K IAlxZC0+c25hcHNob3QgPSBSZWdpc3RlclNuYXBzaG90KHNuYXBzaG90KTsJLyogc25hcHNob3Qg Ki8KIAkvKiBSSSBjaGVjayBzbmFwc2hvdCAqLwpAQCAtMTIyLDYgKzEyOCw5IEBAIEZyZWVRdWVy eURlc2MoUXVlcnlEZXNjICpxZGVzYykKICAqCQlQT1JUQUxfT05FX1JFVFVSTklORywgb3IgUE9S VEFMX09ORV9NT0RfV0lUSCBwb3J0YWwKICAqCiAgKglwbGFuOiB0aGUgcGxhbiB0cmVlIGZvciB0 aGUgcXVlcnkKKyAqCWNwbGFuOiBDYWNoZWRQbGFuIHN1cHBseWluZyB0aGUgcGxhbgorICoJcGxh bnNvdXJjZTogQ2FjaGVkUGxhblNvdXJjZSBzdXBwbHlpbmcgdGhlIGNwbGFuCisgKglxdWVyeV9p bmRleDogaW5kZXggb2YgdGhlIHF1ZXJ5IGluIHBsYW5zb3VyY2UtPnF1ZXJ5X2xpc3QKICAqCXNv dXJjZVRleHQ6IHRoZSBzb3VyY2UgdGV4dCBvZiB0aGUgcXVlcnkKICAqCXBhcmFtczogYW55IHBh cmFtZXRlcnMgbmVlZGVkCiAgKglkZXN0OiB3aGVyZSB0byBzZW5kIHJlc3VsdHMKQEAgLTEzNCw2 ICsxNDMsOSBAQCBGcmVlUXVlcnlEZXNjKFF1ZXJ5RGVzYyAqcWRlc2MpCiAgKi8KIHN0YXRpYyB2 b2lkCiBQcm9jZXNzUXVlcnkoUGxhbm5lZFN0bXQgKnBsYW4sCisJCQkgQ2FjaGVkUGxhbiAqY3Bs YW4sCisJCQkgQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwKKwkJCSBpbnQgcXVlcnlfaW5k ZXgsCiAJCQkgY29uc3QgY2hhciAqc291cmNlVGV4dCwKIAkJCSBQYXJhbUxpc3RJbmZvIHBhcmFt cywKIAkJCSBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwKQEAgLTE0NSwxNCArMTU3LDE3IEBA IFByb2Nlc3NRdWVyeShQbGFubmVkU3RtdCAqcGxhbiwKIAkvKgogCSAqIENyZWF0ZSB0aGUgUXVl cnlEZXNjIG9iamVjdAogCSAqLwotCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBz b3VyY2VUZXh0LAorCXF1ZXJ5RGVzYyA9IENyZWF0ZVF1ZXJ5RGVzYyhwbGFuLCBjcGxhbiwgc291 cmNlVGV4dCwKIAkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwgSW52YWxpZFNuYXBzaG90LAog CQkJCQkJCQlkZXN0LCBwYXJhbXMsIHF1ZXJ5RW52LCAwKTsKIAogCS8qCi0JICogQ2FsbCBFeGVj dXRvclN0YXJ0IHRvIHByZXBhcmUgdGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgorCSAqIFByZXBhcmUg dGhlIHBsYW4gZm9yIGV4ZWN1dGlvbgogCSAqLwotCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCAw KTsKKwlpZiAocXVlcnlEZXNjLT5jcGxhbikKKwkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4ocXVl cnlEZXNjLCAwLCBwbGFuc291cmNlLCBxdWVyeV9pbmRleCk7CisJZWxzZQorCQlFeGVjdXRvclN0 YXJ0KHF1ZXJ5RGVzYywgMCk7CiAKIAkvKgogCSAqIFJ1biB0aGUgcGxhbiB0byBjb21wbGV0aW9u LgpAQCAtNDkzLDYgKzUwOCw3IEBAIFBvcnRhbFN0YXJ0KFBvcnRhbCBwb3J0YWwsIFBhcmFtTGlz dEluZm8gcGFyYW1zLAogCQkJCSAqIHRoZSBkZXN0aW5hdGlvbiB0byBEZXN0Tm9uZS4KIAkJCQkg Ki8KIAkJCQlxdWVyeURlc2MgPSBDcmVhdGVRdWVyeURlc2MobGluaXRpYWxfbm9kZShQbGFubmVk U3RtdCwgcG9ydGFsLT5zdG10cyksCisJCQkJCQkJCQkJCXBvcnRhbC0+Y3BsYW4sCiAJCQkJCQkJ CQkJCXBvcnRhbC0+c291cmNlVGV4dCwKIAkJCQkJCQkJCQkJR2V0QWN0aXZlU25hcHNob3QoKSwK IAkJCQkJCQkJCQkJSW52YWxpZFNuYXBzaG90LApAQCAtNTEyLDkgKzUyOCwxMyBAQCBQb3J0YWxT dGFydChQb3J0YWwgcG9ydGFsLCBQYXJhbUxpc3RJbmZvIHBhcmFtcywKIAkJCQkJbXllZmxhZ3Mg PSBlZmxhZ3M7CiAKIAkJCQkvKgotCQkJCSAqIENhbGwgRXhlY3V0b3JTdGFydCB0byBwcmVwYXJl IHRoZSBwbGFuIGZvciBleGVjdXRpb24KKwkJCQkgKiBQcmVwYXJlIHRoZSBwbGFuIGZvciBleGVj dXRpb24uCiAJCQkJICovCi0JCQkJRXhlY3V0b3JTdGFydChxdWVyeURlc2MsIG15ZWZsYWdzKTsK KwkJCQlpZiAocG9ydGFsLT5jcGxhbikKKwkJCQkJRXhlY3V0b3JTdGFydENhY2hlZFBsYW4ocXVl cnlEZXNjLCBteWVmbGFncywKKwkJCQkJCQkJCQkJcG9ydGFsLT5wbGFuc291cmNlLCAwKTsKKwkJ CQllbHNlCisJCQkJCUV4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBteWVmbGFncyk7CiAKIAkJCQkv KgogCQkJCSAqIFRoaXMgdGVsbHMgUG9ydGFsQ2xlYW51cCB0byBzaHV0IGRvd24gdGhlIGV4ZWN1 dG9yCkBAIC0xMTk0LDYgKzEyMTQsNyBAQCBQb3J0YWxSdW5NdWx0aShQb3J0YWwgcG9ydGFsLAog ewogCWJvb2wJCWFjdGl2ZV9zbmFwc2hvdF9zZXQgPSBmYWxzZTsKIAlMaXN0Q2VsbCAgICpzdG10 bGlzdF9pdGVtOworCWludAkJCXF1ZXJ5X2luZGV4ID0gMDsKIAogCS8qCiAJICogSWYgdGhlIGRl c3RpbmF0aW9uIGlzIERlc3RSZW1vdGVFeGVjdXRlLCBjaGFuZ2UgdG8gRGVzdE5vbmUuICBUaGUK QEAgLTEyNzUsNiArMTI5Niw5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7 CiAJCQkJLyogc3RhdGVtZW50IGNhbiBzZXQgdGFnIHN0cmluZyAqLwogCQkJCVByb2Nlc3NRdWVy eShwc3RtdCwKKwkJCQkJCQkgcG9ydGFsLT5jcGxhbiwKKwkJCQkJCQkgcG9ydGFsLT5wbGFuc291 cmNlLAorCQkJCQkJCSBxdWVyeV9pbmRleCwKIAkJCQkJCQkgcG9ydGFsLT5zb3VyY2VUZXh0LAog CQkJCQkJCSBwb3J0YWwtPnBvcnRhbFBhcmFtcywKIAkJCQkJCQkgcG9ydGFsLT5xdWVyeUVudiwK QEAgLTEyODQsNiArMTMwOCw5IEBAIFBvcnRhbFJ1bk11bHRpKFBvcnRhbCBwb3J0YWwsCiAJCQl7 CiAJCQkJLyogc3RtdCBhZGRlZCBieSByZXdyaXRlIGNhbm5vdCBzZXQgdGFnICovCiAJCQkJUHJv Y2Vzc1F1ZXJ5KHBzdG10LAorCQkJCQkJCSBwb3J0YWwtPmNwbGFuLAorCQkJCQkJCSBwb3J0YWwt PnBsYW5zb3VyY2UsCisJCQkJCQkJIHF1ZXJ5X2luZGV4LAogCQkJCQkJCSBwb3J0YWwtPnNvdXJj ZVRleHQsCiAJCQkJCQkJIHBvcnRhbC0+cG9ydGFsUGFyYW1zLAogCQkJCQkJCSBwb3J0YWwtPnF1 ZXJ5RW52LApAQCAtMTM0OCw2ICsxMzc1LDggQEAgUG9ydGFsUnVuTXVsdGkoUG9ydGFsIHBvcnRh bCwKIAkJICovCiAJCWlmIChsbmV4dChwb3J0YWwtPnN0bXRzLCBzdG10bGlzdF9pdGVtKSAhPSBO VUxMKQogCQkJQ29tbWFuZENvdW50ZXJJbmNyZW1lbnQoKTsKKworCQlxdWVyeV9pbmRleCsrOwog CX0KIAogCS8qIFBvcCB0aGUgc25hcHNob3QgaWYgd2UgcHVzaGVkIG9uZS4gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3BsYW5jYWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRp bHMvY2FjaGUvcGxhbmNhY2hlLmMKaW5kZXggYzY2YTA4OGY0MC4uODkwOGEwY2RjMiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvY2FjaGUvcGxhbmNhY2hlLmMKQEAgLTEwMSw3ICsxMDEsOCBAQCBzdGF0aWMgZGxp c3RfaGVhZCBjYWNoZWRfZXhwcmVzc2lvbl9saXN0ID0gRExJU1RfU1RBVElDX0lOSVQoY2FjaGVk X2V4cHJlc3Npb25fbAogCiBzdGF0aWMgdm9pZCBSZWxlYXNlR2VuZXJpY1BsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSk7CiBzdGF0aWMgTGlzdCAqUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5 KENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCi0JCQkJCQkJCSAgIFF1ZXJ5RW52aXJvbm1l bnQgKnF1ZXJ5RW52KTsKKwkJCQkJCQkJICAgUXVlcnlFbnZpcm9ubWVudCAqcXVlcnlFbnYsCisJ CQkJCQkJCSAgIGJvb2wgcmVsZWFzZV9nZW5lcmljKTsKIHN0YXRpYyBib29sIENoZWNrQ2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKTsKIHN0YXRpYyBDYWNoZWRQbGFuICpC dWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs CiAJCQkJCQkJCSAgIFBhcmFtTGlzdEluZm8gYm91bmRQYXJhbXMsIFF1ZXJ5RW52aXJvbm1lbnQg KnF1ZXJ5RW52KTsKQEAgLTU3OCwxMCArNTc5LDE3IEBAIFJlbGVhc2VHZW5lcmljUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogICogVGhlIHJlc3VsdCB2YWx1ZSBpcyB0aGUgdHJh bnNpZW50IGFuYWx5emVkLWFuZC1yZXdyaXR0ZW4gcXVlcnkgdHJlZSBpZiB3ZQogICogaGFkIHRv IGRvIHJlLWFuYWx5c2lzLCBhbmQgTklMIG90aGVyd2lzZS4gIChUaGlzIGlzIHJldHVybmVkIGp1 c3QgdG8gc2F2ZQogICogYSB0cmVlIGNvcHlpbmcgc3RlcCBpbiBhIHN1YnNlcXVlbnQgQnVpbGRD YWNoZWRQbGFuIGNhbGwuKQorICoKKyAqIFRoaXMgYWxzbyByZWxlYXNlcyBhbmQgZHJvcHMgdGhl IGdlbmVyaWMgcGxhbiAocGxhbnNvdXJjZS0+Z3BsYW4pLCBpZiBhbnksCisgKiBhcyBtb3N0IGNh bGxlcnMgd2lsbCB0eXBpY2FsbHkgYnVpbGQgYSBuZXcgQ2FjaGVkUGxhbiBmb3IgdGhlIHBsYW5z b3VyY2UKKyAqIHJpZ2h0IGFmdGVyIHRoaXMuIEhvd2V2ZXIsIHdoZW4gY2FsbGVkIGZyb20gVXBk YXRlQ2FjaGVkUGxhbigpLCB0aGUKKyAqIGZ1bmN0aW9uIGRvZXMgbm90IHJlbGVhc2UgdGhlIGdl bmVyaWMgcGxhbiwgYXMgVXBkYXRlQ2FjaGVkUGxhbigpIHVwZGF0ZXMKKyAqIGFuIGV4aXN0aW5n IENhY2hlZFBsYW4gaW4gcGxhY2UuCiAgKi8KIHN0YXRpYyBMaXN0ICoKIFJldmFsaWRhdGVDYWNo ZWRRdWVyeShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAotCQkJCQkgIFF1ZXJ5RW52aXJv bm1lbnQgKnF1ZXJ5RW52KQorCQkJCQkgIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52LAorCQkJ CQkgIGJvb2wgcmVsZWFzZV9nZW5lcmljKQogewogCWJvb2wJCXNuYXBzaG90X3NldDsKIAlSYXdT dG10ICAgICpyYXd0cmVlOwpAQCAtNjc4LDggKzY4Niw5IEBAIFJldmFsaWRhdGVDYWNoZWRRdWVy eShDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogCQlNZW1vcnlDb250ZXh0RGVsZXRlKHFj eHQpOwogCX0KIAotCS8qIERyb3AgdGhlIGdlbmVyaWMgcGxhbiByZWZlcmVuY2UgaWYgYW55ICov Ci0JUmVsZWFzZUdlbmVyaWNQbGFuKHBsYW5zb3VyY2UpOworCS8qIERyb3AgdGhlIGdlbmVyaWMg cGxhbiByZWZlcmVuY2UsIGlmIGFueSwgYW5kIGlmIHJlcXVlc3RlZCAqLworCWlmIChyZWxlYXNl X2dlbmVyaWMpCisJCVJlbGVhc2VHZW5lcmljUGxhbihwbGFuc291cmNlKTsKIAogCS8qCiAJICog Tm93IHJlLWRvIHBhcnNlIGFuYWx5c2lzIGFuZCByZXdyaXRlLiAgVGhpcyBub3QgaW5jaWRlbnRh bGx5IGFjcXVpcmVzCkBAIC04MTUsOCArODI0LDExIEBAIFJldmFsaWRhdGVDYWNoZWRRdWVyeShD YWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAogICogQ2FsbGVyIG11c3QgaGF2ZSBhbHJlYWR5 IGNhbGxlZCBSZXZhbGlkYXRlQ2FjaGVkUXVlcnkgdG8gdmVyaWZ5IHRoYXQgdGhlCiAgKiBxdWVy eXRyZWUgaXMgdXAgdG8gZGF0ZS4KICAqCi0gKiBPbiBhICJ0cnVlIiByZXR1cm4sIHdlIGhhdmUg YWNxdWlyZWQgdGhlIGxvY2tzIG5lZWRlZCB0byBydW4gdGhlIHBsYW4uCi0gKiAoV2UgbXVzdCBk byB0aGlzIGZvciB0aGUgInRydWUiIHJlc3VsdCB0byBiZSByYWNlLWNvbmRpdGlvbi1mcmVlLikK KyAqIE9uIGEgInRydWUiIHJldHVybiwgd2UgaGF2ZSBhY3F1aXJlZCBsb2NrcyBvbiB0aGUgInVu cHJ1bmFibGVSZWxpZHMiIHNldAorICogZm9yIGFsbCBwbGFucyBpbiBwbGFuc291cmNlLT5zdG10 X2xpc3QuIEhvd2V2ZXIsIHRoZSBwbGFucyBhcmUgbm90IGZ1bGx5CisgKiByYWNlLWNvbmRpdGlv bi1mcmVlIHVudGlsIHRoZSBleGVjdXRvciBhY3F1aXJlcyBsb2NrcyBvbiB0aGUgcHJ1bmFibGUK KyAqIHJlbGF0aW9ucyB0aGF0IHN1cnZpdmUgaW5pdGlhbCBydW50aW1lIHBydW5pbmcgZHVyaW5n IGV4ZWN1dG9yCisgKiBpbml0aWFsaXphdGlvbi4KICAqLwogc3RhdGljIGJvb2wKIENoZWNrQ2Fj aGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQpAQCAtODcwLDcgKzg4MiwxMSBA QCBDaGVja0NhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSkKIAkJICovCiAJ CWlmIChwbGFuLT5pc192YWxpZCkKIAkJewotCQkJLyogU3VjY2Vzc2Z1bGx5IHJldmFsaWRhdGVk IGFuZCBsb2NrZWQgdGhlIHF1ZXJ5LiAqLworCQkJLyoKKwkJCSAqIFN1Y2Nlc3NmdWxseSByZXZh bGlkYXRlZCBhbmQgbG9ja2VkIHRoZSBxdWVyeS4gIFNldCBpc19yZXVzZWQKKwkJCSAqIHRvIHRy dWUgc28gdGhhdCBDYWNoZWRQbGFuUmVxdWlyZXNMb2NraW5nKCkgcmV0dXJucyB0cnVlLgorCQkJ ICovCisJCQlwbGFuLT5pc19yZXVzZWQgPSB0cnVlOwogCQkJcmV0dXJuIHRydWU7CiAJCX0KIApA QCAtODk1LDEyICs5MTEsMTQgQEAgQ2hlY2tDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UpCiAgKiBUbyBidWlsZCBhIGdlbmVyaWMsIHBhcmFtZXRlci12YWx1ZS1pbmRlcGVu ZGVudCBwbGFuLCBwYXNzIE5VTEwgZm9yCiAgKiBib3VuZFBhcmFtcy4gIFRvIGJ1aWxkIGEgY3Vz dG9tIHBsYW4sIHBhc3MgdGhlIGFjdHVhbCBwYXJhbWV0ZXIgdmFsdWVzIHZpYQogICogYm91bmRQ YXJhbXMuICBGb3IgYmVzdCBlZmZlY3QsIHRoZSBQQVJBTV9GTEFHX0NPTlNUIGZsYWcgc2hvdWxk IGJlIHNldCBvbgotICogZWFjaCBwYXJhbWV0ZXIgdmFsdWU7IG90aGVyd2lzZSB0aGUgcGxhbm5l ciB3aWxsIHRyZWF0IHRoZSB2YWx1ZSBhcyBhCi0gKiBoaW50IHJhdGhlciB0aGFuIGEgaGFyZCBj b25zdGFudC4KKyAqIGVhY2ggcGFyYW1ldGVyIHZhbHVlOyBvdGhlcndpc2UgdGhlIHBsYW5uZXIg d2lsbCB0cmVhdCB0aGUgdmFsdWUgYXMgYSBoaW50CisgKiByYXRoZXIgdGhhbiBhIGhhcmQgY29u c3RhbnQuCiAgKgogICogUGxhbm5pbmcgd29yayBpcyBkb25lIGluIHRoZSBjYWxsZXIncyBtZW1v cnkgY29udGV4dC4gIFRoZSBmaW5pc2hlZCBwbGFuCiAgKiBpcyBpbiBhIGNoaWxkIG1lbW9yeSBj b250ZXh0LCB3aGljaCB0eXBpY2FsbHkgc2hvdWxkIGdldCByZXBhcmVudGVkCiAgKiAodW5sZXNz IHRoaXMgaXMgYSBvbmUtc2hvdCBwbGFuLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IGNvcHkgdGhl IHBsYW4pLgorICoKKyAqIE5vdGU6IFdoZW4gY2hhbmdpbmcgdGhpcywgeW91IHNob3VsZCBhbHNv IGxvb2sgYXQgVXBkYXRlQ2FjaGVkUGxhbigpLgogICovCiBzdGF0aWMgQ2FjaGVkUGxhbiAqCiBC dWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3Qs CkBAIC05MTEsNiArOTI5LDcgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBs YW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCWJvb2wJCXNuYXBzaG90X3NldDsKIAlib29sCQlpc190 cmFuc2llbnQ7CiAJTWVtb3J5Q29udGV4dCBwbGFuX2NvbnRleHQ7CisJTWVtb3J5Q29udGV4dCBz dG10X2NvbnRleHQgPSBOVUxMOwogCU1lbW9yeUNvbnRleHQgb2xkY3h0ID0gQ3VycmVudE1lbW9y eUNvbnRleHQ7CiAJTGlzdENlbGwgICAqbGM7CiAKQEAgLTkyOCw3ICs5NDcsNyBAQCBCdWlsZENh Y2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJICog bGV0J3MgdHJlYXQgaXQgYXMgcmVhbCBhbmQgcmVkbyB0aGUgUmV2YWxpZGF0ZUNhY2hlZFF1ZXJ5 IGNhbGwuCiAJICovCiAJaWYgKCFwbGFuc291cmNlLT5pc192YWxpZCkKLQkJcWxpc3QgPSBSZXZh bGlkYXRlQ2FjaGVkUXVlcnkocGxhbnNvdXJjZSwgcXVlcnlFbnYpOworCQlxbGlzdCA9IFJldmFs aWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNlLCBxdWVyeUVudiwgdHJ1ZSk7CiAKIAkvKgogCSAq IElmIHdlIGRvbid0IGFscmVhZHkgaGF2ZSBhIGNvcHkgb2YgdGhlIHF1ZXJ5dHJlZSBsaXN0IHRo YXQgY2FuIGJlCkBAIC05NjcsMTAgKzk4NiwxOSBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAqcWxpc3QsCiAJCVBvcEFjdGl2ZVNuYXBzaG90KCk7 CiAKIAkvKgotCSAqIE5vcm1hbGx5IHdlIG1ha2UgYSBkZWRpY2F0ZWQgbWVtb3J5IGNvbnRleHQg Zm9yIHRoZSBDYWNoZWRQbGFuIGFuZCBpdHMKLQkgKiBzdWJzaWRpYXJ5IGRhdGEuICAoSXQncyBw cm9iYWJseSBub3QgZ29pbmcgdG8gYmUgbGFyZ2UsIGJ1dCBqdXN0IGluCi0JICogY2FzZSwgYWxs b3cgaXQgdG8gZ3JvdyBsYXJnZS4gIEl0J3MgdHJhbnNpZW50IGZvciB0aGUgbW9tZW50LikgIEJ1 dCBmb3IKLQkgKiBhIG9uZS1zaG90IHBsYW4sIHdlIGp1c3QgbGVhdmUgaXQgaW4gdGhlIGNhbGxl cidzIG1lbW9yeSBjb250ZXh0LgorCSAqIE5vcm1hbGx5LCB3ZSBjcmVhdGUgYSBkZWRpY2F0ZWQg bWVtb3J5IGNvbnRleHQgZm9yIHRoZSBDYWNoZWRQbGFuIGFuZAorCSAqIGl0cyBzdWJzaWRpYXJ5 IGRhdGEuIEFsdGhvdWdoIGl0J3MgdXN1YWxseSBub3QgdmVyeSBsYXJnZSwgdGhlIGNvbnRleHQK KwkgKiBpcyBkZXNpZ25lZCB0byBhbGxvdyBncm93dGggaWYgbmVjZXNzYXJ5LgorCSAqCisJICog VGhlIFBsYW5uZWRTdG10cyBhcmUgc3RvcmVkIGluIGEgc2VwYXJhdGUgY2hpbGQgY29udGV4dCAo c3RtdF9jb250ZXh0KQorCSAqIG9mIHRoZSBDYWNoZWRQbGFuJ3MgbWVtb3J5IGNvbnRleHQuIFRo aXMgc2VwYXJhdGlvbiBhbGxvd3MKKwkgKiBVcGRhdGVDYWNoZWRQbGFuKCkgdG8gZnJlZSBhbmQg cmVwbGFjZSB0aGUgUGxhbm5lZFN0bXRzIHdpdGhvdXQKKwkgKiBhZmZlY3RpbmcgdGhlIENhY2hl ZFBsYW4gc3RydWN0dXJlIG9yIGl0cyBzdG10X2xpc3QgTGlzdC4KKwkgKgorCSAqIEZvciBvbmUt c2hvdCBwbGFucywgd2UgaW5zdGVhZCB1c2UgdGhlIGNhbGxlcidzIG1lbW9yeSBjb250ZXh0LCBh cyB0aGUKKwkgKiBDYWNoZWRQbGFuIHdpbGwgbm90IHBlcnNpc3QuICBzdG10X2NvbnRleHQgd2ls bCBiZSBzZXQgdG8gTlVMTCBpbiB0aGlzCisJICogY2FzZSwgYmVjYXVzZSBVcGRhdGVDYWNoZWRQ bGFuKCkgc2hvdWxkIG5ldmVyIGdldCBjYWxsZWQgb24gYSBvbmUtc2hvdAorCSAqIHBsYW4uCiAJ ICovCiAJaWYgKCFwbGFuc291cmNlLT5pc19vbmVzaG90KQogCXsKQEAgLTk3OSwxMiArMTAwNywx NyBAQCBCdWlsZENhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJjZSAqcGxhbnNvdXJjZSwgTGlzdCAq cWxpc3QsCiAJCQkJCQkJCQkJCSBBTExPQ1NFVF9TVEFSVF9TTUFMTF9TSVpFUyk7CiAJCU1lbW9y eUNvbnRleHRDb3B5QW5kU2V0SWRlbnRpZmllcihwbGFuX2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1 ZXJ5X3N0cmluZyk7CiAKLQkJLyoKLQkJICogQ29weSBwbGFuIGludG8gdGhlIG5ldyBjb250ZXh0 LgotCQkgKi8KLQkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKHBsYW5fY29udGV4dCk7CisJCXN0bXRf Y29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShDdXJyZW50TWVtb3J5Q29udGV4dCwKKwkJ CQkJCQkJCQkJICJDYWNoZWRQbGFuIFBsYW5uZWRTdG10cyIsCisJCQkJCQkJCQkJCSBBTExPQ1NF VF9TVEFSVF9TTUFMTF9TSVpFUyk7CisJCU1lbW9yeUNvbnRleHRDb3B5QW5kU2V0SWRlbnRpZmll cihzdG10X2NvbnRleHQsIHBsYW5zb3VyY2UtPnF1ZXJ5X3N0cmluZyk7CisJCU1lbW9yeUNvbnRl eHRTZXRQYXJlbnQoc3RtdF9jb250ZXh0LCBwbGFuX2NvbnRleHQpOwogCisJCU1lbW9yeUNvbnRl eHRTd2l0Y2hUbyhzdG10X2NvbnRleHQpOwogCQlwbGlzdCA9IGNvcHlPYmplY3QocGxpc3QpOwor CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhwbGFuX2NvbnRleHQpOworCQlwbGlzdCA9IGxpc3Rf Y29weShwbGlzdCk7CiAJfQogCWVsc2UKIAkJcGxhbl9jb250ZXh0ID0gQ3VycmVudE1lbW9yeUNv bnRleHQ7CkBAIC0xMDI1LDggKzEwNTgsMTAgQEAgQnVpbGRDYWNoZWRQbGFuKENhY2hlZFBsYW5T b3VyY2UgKnBsYW5zb3VyY2UsIExpc3QgKnFsaXN0LAogCQlwbGFuLT5zYXZlZF94bWluID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAJcGxhbi0+cmVmY291bnQgPSAwOwogCXBsYW4tPmNvbnRleHQg PSBwbGFuX2NvbnRleHQ7CisJcGxhbi0+c3RtdF9jb250ZXh0ID0gc3RtdF9jb250ZXh0OwogCXBs YW4tPmlzX29uZXNob3QgPSBwbGFuc291cmNlLT5pc19vbmVzaG90OwogCXBsYW4tPmlzX3NhdmVk ID0gZmFsc2U7CisJcGxhbi0+aXNfcmV1c2VkID0gZmFsc2U7CiAJcGxhbi0+aXNfdmFsaWQgPSB0 cnVlOwogCiAJLyogYXNzaWduIGdlbmVyYXRpb24gbnVtYmVyIHRvIG5ldyBwbGFuICovCkBAIC0x MTUzLDggKzExODgsMTEgQEAgY2FjaGVkX3BsYW5fY29zdChDYWNoZWRQbGFuICpwbGFuLCBib29s IGluY2x1ZGVfcGxhbm5lcikKICAqIHBsYW4gb3IgYSBjdXN0b20gcGxhbiBmb3IgdGhlIGdpdmVu IHBhcmFtZXRlcnM6IHRoZSBjYWxsZXIgZG9lcyBub3Qga25vdwogICogd2hpY2ggaXQgd2lsbCBn ZXQuCiAgKgotICogT24gcmV0dXJuLCB0aGUgcGxhbiBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBzdWZm aWNpZW50IGxvY2tzIHRvIGJlZ2luCi0gKiBleGVjdXRpb24uCisgKiBPbiByZXR1cm4sIHRoZSBw bGFuIGlzIHZhbGlkLCBidXQgbm90IGFsbCBsb2NrcyBhcmUgYWNxdWlyZWQgaWYgdGhlCisgKiBy ZXR1cm5lZCBwbGFuIGlzIGEgcmV1c2VkIGdlbmVyaWMgcGxhbi4gIEluIHN1Y2ggY2FzZXMsIGxv Y2tzIG9uIHJlbGF0aW9ucworICogc3ViamVjdCB0byBpbml0aWFsIHJ1bnRpbWUgcHJ1bmluZyBh cmUgbm90IHRha2VuIGJ5IENoZWNrQ2FjaGVkUGxhbigpIGJ1dAorICogZGVmZXJyZWQgdW50aWwg dGhlIGV4ZWN1dGlvbiBzdGFydHVwIHBoYXNlLCBzcGVjaWZpY2FsbHkgd2hlbgorICogRXhlY0Rv SW5pdGlhbFBydW5pbmcoKSBwZXJmb3JtcyBpbml0aWFsIHBydW5pbmcuCiAgKgogICogT24gcmV0 dXJuLCB0aGUgcmVmY291bnQgb2YgdGhlIHBsYW4gaGFzIGJlZW4gaW5jcmVtZW50ZWQ7IGEgbGF0 ZXIKICAqIFJlbGVhc2VDYWNoZWRQbGFuKCkgY2FsbCBpcyBleHBlY3RlZC4gIElmICJvd25lciIg aXMgbm90IE5VTEwgdGhlbgpAQCAtMTE4MCw3ICsxMjE4LDcgQEAgR2V0Q2FjaGVkUGxhbihDYWNo ZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQll bG9nKEVSUk9SLCAiY2Fubm90IGFwcGx5IFJlc291cmNlT3duZXIgdG8gbm9uLXNhdmVkIGNhY2hl ZCBwbGFuIik7CiAKIAkvKiBNYWtlIHN1cmUgdGhlIHF1ZXJ5dHJlZSBsaXN0IGlzIHZhbGlkIGFu ZCB3ZSBoYXZlIHBhcnNlLXRpbWUgbG9ja3MgKi8KLQlxbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRR dWVyeShwbGFuc291cmNlLCBxdWVyeUVudik7CisJcWxpc3QgPSBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkocGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwogCiAJLyogRGVjaWRlIHdoZXRoZXIgdG8g dXNlIGEgY3VzdG9tIHBsYW4gKi8KIAljdXN0b21wbGFuID0gY2hvb3NlX2N1c3RvbV9wbGFuKHBs YW5zb3VyY2UsIGJvdW5kUGFyYW1zKTsKQEAgLTEyNzYsNiArMTMxNCwxMTMgQEAgR2V0Q2FjaGVk UGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLCBQYXJhbUxpc3RJbmZvIGJvdW5kUGFy YW1zLAogCXJldHVybiBwbGFuOwogfQogCisvKgorICogVXBkYXRlQ2FjaGVkUGxhbgorICoJCUNy ZWF0ZSBmcmVzaCBwbGFucyBmb3IgYWxsIHF1ZXJpZXMgaW4gdGhlIENhY2hlZFBsYW5Tb3VyY2Us IHJlcGxhY2luZworICoJCXRob3NlIGluIHRoZSBnZW5lcmljIHBsYW4ncyBzdG10X2xpc3QsIGFu ZCByZXR1cm4gdGhlIHBsYW4gZm9yIHRoZQorICoJCXF1ZXJ5X2luZGV4J3RoIHF1ZXJ5LgorICoK KyAqIFRoaXMgZnVuY3Rpb24gaXMgcHJpbWFyaWx5IHVzZWQgYnkgRXhlY3V0b3JTdGFydENhY2hl ZFBsYW4oKSB0byBoYW5kbGUKKyAqIGNhc2VzIHdoZXJlIHRoZSBvcmlnaW5hbCBnZW5lcmljIENh Y2hlZFBsYW4gYmVjb21lcyBpbnZhbGlkLiBTdWNoCisgKiBpbnZhbGlkYXRpb24gbWF5IG9jY3Vy IHdoZW4gcHJ1bmFibGUgcmVsYXRpb25zIGluIHRoZSBvbGQgcGxhbiBmb3IgdGhlCisgKiBxdWVy eV9pbmRleCd0aCBxdWVyeSBhcmUgbG9ja2VkIGluIHByZXBhcmF0aW9uIGZvciBleGVjdXRpb24u CisgKgorICogTm90ZSB0aGF0IGludmFsaWRhdGlvbnMgcmVjZWl2ZWQgZHVyaW5nIHRoZSBleGVj dXRpb24gb2YgdGhlIHF1ZXJ5X2luZGV4J3RoCisgKiBxdWVyeSBjYW4gYWZmZWN0IGJvdGggdGhl IHF1ZXJpZXMgdGhhdCBoYXZlIGFscmVhZHkgZmluaXNoZWQgZXhlY3V0aW9uCisgKiAoZS5nLiwg ZHVlIHRvIGNvbmN1cnJlbnQgbW9kaWZpY2F0aW9ucyBvbiBwcnVuYWJsZSByZWxhdGlvbnMgdGhh dCB3ZXJlIG5vdAorICogbG9ja2VkIGR1cmluZyB0aGVpciBleGVjdXRpb24pIGFuZCBhbHNvIHRo ZSBxdWVyaWVzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4KKyAqIGV4ZWN1dGVkLiAgQXMgYSByZXN1 bHQsIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyBhbGwgcGxhbnMgdG8gZW5zdXJlCisgKiBDYWNoZWRQ bGFuLmlzX3ZhbGlkIGlzIHNhZmVseSBzZXQgdG8gdHJ1ZS4KKyAqCisgKiBUaGUgb2xkIFBsYW5u ZWRTdG10cyBpbiBwbGFuc291cmNlLT5ncGxhbi0+c3RtdF9saXN0IGFyZSBmcmVlZCBoZXJlLCBz bworICogdGhlIGNhbGxlciBhbmQgYW55IG9mIGl0cyBjYWxsZXJzIG11c3Qgbm90IHJlbHkgb24g dGhlbSByZW1haW5pbmcgYWNjZXNzaWJsZQorICogYWZ0ZXIgdGhpcyBmdW5jdGlvbiBpcyBjYWxs ZWQuCisgKi8KK1BsYW5uZWRTdG10ICoKK1VwZGF0ZUNhY2hlZFBsYW4oQ2FjaGVkUGxhblNvdXJj ZSAqcGxhbnNvdXJjZSwgaW50IHF1ZXJ5X2luZGV4LAorCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudikKK3sKKwlMaXN0CSAgICpxdWVyeV9saXN0ID0gcGxhbnNvdXJjZS0+cXVlcnlfbGlz dCwKKwkJCSAgICpwbGFuX2xpc3Q7CisJTGlzdENlbGwgICAqbDEsCisJCQkgICAqbDI7CisJQ2Fj aGVkUGxhbiAqcGxhbiA9IHBsYW5zb3VyY2UtPmdwbGFuOworCU1lbW9yeUNvbnRleHQgb2xkY3h0 OworCisJQXNzZXJ0KEFjdGl2ZVNuYXBzaG90U2V0KCkpOworCisJLyogU2FuaXR5IGNoZWNrcyAq LworCWlmIChwbGFuID09IE5VTEwpCisJCWVsb2coRVJST1IsICJVcGRhdGVDYWNoZWRQbGFuKCkg Y2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFuc291cmNlLT5ncGxhbiBpcyBOVUxMIik7 CisJZWxzZSBpZiAocGxhbi0+aXNfdmFsaWQpCisJCWVsb2coRVJST1IsICJVcGRhdGVDYWNoZWRQ bGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFuc291cmNlLT5ncGxhbi0+aXNf dmFsaWQgaXMgdHJ1ZSIpOworCWVsc2UgaWYgKHBsYW4tPmlzX29uZXNob3QpCisJCWVsb2coRVJS T1IsICJVcGRhdGVDYWNoZWRQbGFuKCkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0OiBwbGFu c291cmNlLT5ncGxhbi0+aXNfb25lc2hvdCBpcyB0cnVlIik7CisKKwkvKgorCSAqIFRoZSBwbGFu c291cmNlIG1pZ2h0IGhhdmUgYmVjb21lIGludmFsaWQgc2luY2UgR2V0Q2FjaGVkUGxhbigpIHJl dHVybmVkCisJICogdGhlIENhY2hlZFBsYW4uIFNlZSB0aGUgY29tbWVudCBpbiBCdWlsZENhY2hl ZFBsYW4oKSBmb3IgZGV0YWlscyBvbiB3aHkKKwkgKiB0aGlzIG1pZ2h0IGhhcHBlbi4gIEFsdGhv dWdoIGludmFsaWRhdGlvbiBpcyBsaWtlbHkgYSBmYWxzZSBwb3NpdGl2ZSBhcworCSAqIHN0YXRl ZCB0aGVyZSwgd2UgbWFrZSB0aGUgcGxhbiB2YWxpZCB0byBlbnN1cmUgdGhlIHF1ZXJ5IGxpc3Qg dXNlZCBmb3IKKwkgKiBwbGFubmluZyBpcyB1cCB0byBkYXRlLgorCSAqCisJICogVGhlIHJpc2sg b2YgY2F0Y2hpbmcgYW4gaW52YWxpZGF0aW9uIGlzIGhpZ2hlciBoZXJlIHRoYW4gd2hlbgorCSAq IEJ1aWxkQ2FjaGVkUGxhbigpIGlzIGNhbGxlZCBmcm9tIEdldENhY2hlZFBsYW4oKSwgYmVjYXVz ZSB0aGlzIGZ1bmN0aW9uCisJICogaXMgbm9ybWFsbHkgY2FsbGVkIGxvbmcgYWZ0ZXIgR2V0Q2Fj aGVkUGxhbigpIHJldHVybnMgdGhlIENhY2hlZFBsYW4sIHNvCisJICogbXVjaCBtb3JlIHByb2Nl c3NpbmcgY291bGQgaGF2ZSBvY2N1cnJlZCBpbmNsdWRpbmcgdGhpbmdzIHRoYXQgbWFyaworCSAq IHRoZSBDYWNoZWRQbGFuU291cmNlIGludmFsaWQuCisJICoKKwkgKiBOb3RlOiBEbyBub3QgcmVs ZWFzZSBwbGFuc291cmNlLT5ncGxhbiwgYmVjYXVzZSB0aGUgdXBzdHJlYW0gY2FsbGVycworCSAq IChzdWNoIGFzIHRoZSBjYWxsZXJzIG9mIEV4ZWN1dG9yU3RhcnRDYWNoZWRQbGFuKCkpIHdvdWxk IHN0aWxsIGJlCisJICogcmVmZXJlbmNpbmcgaXQuCisJICovCisJaWYgKCFwbGFuc291cmNlLT5p c192YWxpZCkKKwkJcXVlcnlfbGlzdCA9IFJldmFsaWRhdGVDYWNoZWRRdWVyeShwbGFuc291cmNl LCBxdWVyeUVudiwgZmFsc2UpOworCUFzc2VydChxdWVyeV9saXN0ICE9IE5JTCk7CisKKwkvKgor CSAqIEJ1aWxkIGEgbmV3IGdlbmVyaWMgcGxhbiBmb3IgYWxsIHRoZSBxdWVyaWVzIGFmdGVyIG1h a2luZyBhIGNvcHkgdG8gYmUKKwkgKiBzY3JpYmJsZWQgb24gYnkgdGhlIHBsYW5uZXIuCisJICov CisJcXVlcnlfbGlzdCA9IGNvcHlPYmplY3QocXVlcnlfbGlzdCk7CisKKwkvKgorCSAqIFBsYW5u aW5nIHdvcmsgaXMgZG9uZSBpbiB0aGUgY2FsbGVyJ3MgbWVtb3J5IGNvbnRleHQuICBUaGUgcmVz dWx0aW5nCisJICogUGxhbm5lZFN0bXQgaXMgdGhlbiBjb3BpZWQgaW50byBwbGFuLT5zdG10X2Nv bnRleHQgYWZ0ZXIgdGhyb3dpbmcKKwkgKiBhd2F5IHRoZSBvbGQgb25lcy4KKwkgKi8KKwlwbGFu X2xpc3QgPSBwZ19wbGFuX3F1ZXJpZXMocXVlcnlfbGlzdCwgcGxhbnNvdXJjZS0+cXVlcnlfc3Ry aW5nLAorCQkJCQkJCQlwbGFuc291cmNlLT5jdXJzb3Jfb3B0aW9ucywgTlVMTCk7CisJQXNzZXJ0 KGxpc3RfbGVuZ3RoKHBsYW5fbGlzdCkgPT0gbGlzdF9sZW5ndGgocGxhbi0+c3RtdF9saXN0KSk7 CisKKwlNZW1vcnlDb250ZXh0UmVzZXQocGxhbi0+c3RtdF9jb250ZXh0KTsKKwlvbGRjeHQgPSBN ZW1vcnlDb250ZXh0U3dpdGNoVG8ocGxhbi0+c3RtdF9jb250ZXh0KTsKKwlmb3Jib3RoIChsMSwg cGxhbl9saXN0LCBsMiwgcGxhbi0+c3RtdF9saXN0KQorCXsKKwkJUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10ID0gbGZpcnN0KGwxKTsKKworCQlsZmlyc3QobDIpID0gY29weU9iamVjdChwbGFubmVk c3RtdCk7CisJfQorCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRjeHQpOworCisJLyoKKwkgKiBY WFggU2hvdWxkIHRoaXMgYWxzbyAocmUpc2V0IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBDYWNoZWRQ bGFuIHRoYXQgYXJlCisJICogc2V0IGluIEJ1aWxkQ2FjaGVkUGxhbigpIGFmdGVyIGNyZWF0aW5n IHRoZSBmcmVzaCBwbGFucyBzdWNoIGFzCisJICogcGxhblJvbGVJZCwgZGVwZW5kc09uUm9sZSwg YW5kIHNhdmVfeG1pbj8KKwkgKi8KKworCS8qCisJICogV2UndmUgdXBkYXRlZCBhbGwgdGhlIHBs YW5zIHRoYXQgbWlnaHQgaGF2ZSBiZWVuIGludmFsaWRhdGVkLCBzbyBtYXJrCisJICogdGhlIENh Y2hlZFBsYW4gYXMgdmFsaWQuCisJICovCisJcGxhbi0+aXNfdmFsaWQgPSB0cnVlOworCisJLyog QWxzbyB1cGRhdGUgZ2VuZXJpY19jb3N0IGJlY2F1c2Ugd2UganVzdCBjcmVhdGVkIGEgbmV3IGdl bmVyaWMgcGxhbi4gKi8KKwlwbGFuc291cmNlLT5nZW5lcmljX2Nvc3QgPSBjYWNoZWRfcGxhbl9j b3N0KHBsYW4sIGZhbHNlKTsKKworCXJldHVybiBsaXN0X250aF9ub2RlKFBsYW5uZWRTdG10LCBw bGFuLT5zdG10X2xpc3QsIHF1ZXJ5X2luZGV4KTsKK30KKwogLyoKICAqIFJlbGVhc2VDYWNoZWRQ bGFuOiByZWxlYXNlIGFjdGl2ZSB1c2Ugb2YgYSBjYWNoZWQgcGxhbi4KICAqCkBAIC0xNjU0LDcg KzE3OTksNyBAQCBDYWNoZWRQbGFuR2V0VGFyZ2V0TGlzdChDYWNoZWRQbGFuU291cmNlICpwbGFu c291cmNlLAogCQlyZXR1cm4gTklMOwogCiAJLyogTWFrZSBzdXJlIHRoZSBxdWVyeXRyZWUgbGlz dCBpcyB2YWxpZCBhbmQgd2UgaGF2ZSBwYXJzZS10aW1lIGxvY2tzICovCi0JUmV2YWxpZGF0ZUNh Y2hlZFF1ZXJ5KHBsYW5zb3VyY2UsIHF1ZXJ5RW52KTsKKwlSZXZhbGlkYXRlQ2FjaGVkUXVlcnko cGxhbnNvdXJjZSwgcXVlcnlFbnYsIHRydWUpOwogCiAJLyogR2V0IHRoZSBwcmltYXJ5IHN0YXRl bWVudCBhbmQgZmluZCBvdXQgd2hhdCBpdCByZXR1cm5zICovCiAJcHN0bXQgPSBRdWVyeUxpc3RH ZXRQcmltYXJ5U3RtdChwbGFuc291cmNlLT5xdWVyeV9saXN0KTsKQEAgLTE3NzYsNyArMTkyMSw3 IEBAIEFjcXVpcmVFeGVjdXRvckxvY2tzKExpc3QgKnN0bXRfbGlzdCwgYm9vbCBhY3F1aXJlKQog CWZvcmVhY2gobGMxLCBzdG10X2xpc3QpCiAJewogCQlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQg PSBsZmlyc3Rfbm9kZShQbGFubmVkU3RtdCwgbGMxKTsKLQkJTGlzdENlbGwgICAqbGMyOworCQlp bnQJCQlydGluZGV4OwogCiAJCWlmIChwbGFubmVkc3RtdC0+Y29tbWFuZFR5cGUgPT0gQ01EX1VU SUxJVFkpCiAJCXsKQEAgLTE3OTQsMTMgKzE5MzksMTYgQEAgQWNxdWlyZUV4ZWN1dG9yTG9ja3Mo TGlzdCAqc3RtdF9saXN0LCBib29sIGFjcXVpcmUpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCWZv cmVhY2gobGMyLCBwbGFubmVkc3RtdC0+cnRhYmxlKQorCQlydGluZGV4ID0gLTE7CisJCXdoaWxl ICgocnRpbmRleCA9IGJtc19uZXh0X21lbWJlcihwbGFubmVkc3RtdC0+dW5wcnVuYWJsZVJlbGlk cywKKwkJCQkJCQkJCQkgIHJ0aW5kZXgpKSA+PSAwKQogCQl7Ci0JCQlSYW5nZVRibEVudHJ5ICpy dGUgPSAoUmFuZ2VUYmxFbnRyeSAqKSBsZmlyc3QobGMyKTsKKwkJCVJhbmdlVGJsRW50cnkgKnJ0 ZSA9IGxpc3RfbnRoX25vZGUoUmFuZ2VUYmxFbnRyeSwKKwkJCQkJCQkJCQkJICAgcGxhbm5lZHN0 bXQtPnJ0YWJsZSwKKwkJCQkJCQkJCQkJICAgcnRpbmRleCAtIDEpOwogCi0JCQlpZiAoIShydGUt PnJ0ZWtpbmQgPT0gUlRFX1JFTEFUSU9OIHx8Ci0JCQkJICAocnRlLT5ydGVraW5kID09IFJURV9T VUJRVUVSWSAmJiBPaWRJc1ZhbGlkKHJ0ZS0+cmVsaWQpKSkpCi0JCQkJY29udGludWU7CisJCQlB c3NlcnQocnRlLT5ydGVraW5kID09IFJURV9SRUxBVElPTiB8fAorCQkJCSAgIChydGUtPnJ0ZWtp bmQgPT0gUlRFX1NVQlFVRVJZICYmIE9pZElzVmFsaWQocnRlLT5yZWxpZCkpKTsKIAogCQkJLyoK IAkJCSAqIEFjcXVpcmUgdGhlIGFwcHJvcHJpYXRlIHR5cGUgb2YgbG9jayBvbiBlYWNoIHJlbGF0 aW9uIE9JRC4gTm90ZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21tZ3IvcG9ydGFsbWVtLmMKaW5kZXggOTMxMzc4MjBh Yy4uZWY0NzkxYmY2NSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvbW1nci9wb3J0YWxt ZW0uYworKysgYi9zcmMvYmFja2VuZC91dGlscy9tbWdyL3BvcnRhbG1lbS5jCkBAIC0yODQsNyAr Mjg0LDggQEAgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRhbCwKIAkJCQkgIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCiAJCQkJICBDb21tYW5kVGFnIGNvbW1hbmRUYWcsCiAJCQkJICBMaXN0 ICpzdG10cywKLQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuKQorCQkJCSAgQ2FjaGVkUGxhbiAqY3Bs YW4sCisJCQkJICBDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlKQogewogCUFzc2VydChQb3J0 YWxJc1ZhbGlkKHBvcnRhbCkpOwogCUFzc2VydChwb3J0YWwtPnN0YXR1cyA9PSBQT1JUQUxfTkVX KTsKQEAgLTI5OSw2ICszMDAsNyBAQCBQb3J0YWxEZWZpbmVRdWVyeShQb3J0YWwgcG9ydGFsLAog CXBvcnRhbC0+Y29tbWFuZFRhZyA9IGNvbW1hbmRUYWc7CiAJcG9ydGFsLT5zdG10cyA9IHN0bXRz OwogCXBvcnRhbC0+Y3BsYW4gPSBjcGxhbjsKKwlwb3J0YWwtPnBsYW5zb3VyY2UgPSBwbGFuc291 cmNlOwogCXBvcnRhbC0+c3RhdHVzID0gUE9SVEFMX0RFRklORUQ7CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4cGxhaW4uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2V4 cGxhaW4uaAppbmRleCBhYTU4NzJiYzE1Li4wOWMxYjEzNjdhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9jb21tYW5kcy9leHBsYWluLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvZXhwbGFp bi5oCkBAIC0xMDMsOCArMTAzLDEwIEBAIGV4dGVybiB2b2lkIEV4cGxhaW5PbmVVdGlsaXR5KE5v ZGUgKnV0aWxpdHlTdG10LCBJbnRvQ2xhdXNlICppbnRvLAogCQkJCQkJCSAgRXhwbGFpblN0YXRl ICplcywgUGFyc2VTdGF0ZSAqcHN0YXRlLAogCQkJCQkJCSAgUGFyYW1MaXN0SW5mbyBwYXJhbXMp OwogCi1leHRlcm4gdm9pZCBFeHBsYWluT25lUGxhbihQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQs IEludG9DbGF1c2UgKmludG8sCi0JCQkJCQkgICBFeHBsYWluU3RhdGUgKmVzLCBjb25zdCBjaGFy ICpxdWVyeVN0cmluZywKK2V4dGVybiB2b2lkIEV4cGxhaW5PbmVQbGFuKFBsYW5uZWRTdG10ICpw bGFubmVkc3RtdCwgQ2FjaGVkUGxhbiAqY3BsYW4sCisJCQkJCQkgICBDYWNoZWRQbGFuU291cmNl ICpwbGFuc291cmNlLCBpbnQgcGxhbl9pbmRleCwKKwkJCQkJCSAgIEludG9DbGF1c2UgKmludG8s IEV4cGxhaW5TdGF0ZSAqZXMsCisJCQkJCQkgICBjb25zdCBjaGFyICpxdWVyeVN0cmluZywKIAkJ CQkJCSAgIFBhcmFtTGlzdEluZm8gcGFyYW1zLCBRdWVyeUVudmlyb25tZW50ICpxdWVyeUVudiwK IAkJCQkJCSAgIGNvbnN0IGluc3RyX3RpbWUgKnBsYW5kdXJhdGlvbiwKIAkJCQkJCSAgIGNvbnN0 IEJ1ZmZlclVzYWdlICpidWZ1c2FnZSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L3RyaWdnZXIuaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3RyaWdnZXIuaAppbmRleCA4YTVhOWZl NjQyLi5kYjIxNTYxYzhjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy90cmlnZ2Vy LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdHJpZ2dlci5oCkBAIC0yNTgsNiArMjU4LDcg QEAgZXh0ZXJuIHZvaWQgRXhlY0FTVHJ1bmNhdGVUcmlnZ2VycyhFU3RhdGUgKmVzdGF0ZSwKIGV4 dGVybiB2b2lkIEFmdGVyVHJpZ2dlckJlZ2luWGFjdCh2b2lkKTsKIGV4dGVybiB2b2lkIEFmdGVy VHJpZ2dlckJlZ2luUXVlcnkodm9pZCk7CiBleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJFbmRRdWVy eShFU3RhdGUgKmVzdGF0ZSk7CitleHRlcm4gdm9pZCBBZnRlclRyaWdnZXJBYm9ydFF1ZXJ5KHZv aWQpOwogZXh0ZXJuIHZvaWQgQWZ0ZXJUcmlnZ2VyRmlyZURlZmVycmVkKHZvaWQpOwogZXh0ZXJu IHZvaWQgQWZ0ZXJUcmlnZ2VyRW5kWGFjdChib29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEFm dGVyVHJpZ2dlckJlZ2luU3ViWGFjdCh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWNQYXJ0aXRpb24uaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNQYXJ0aXRp b24uaAppbmRleCAwYjM0Nzg0OTIyLi5hMDg0MzQ4MWY3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9leGVjdXRvci9leGVjUGFydGl0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhl Y1BhcnRpdGlvbi5oCkBAIC00OSw2ICs0OSw4IEBAIGV4dGVybiB2b2lkIEV4ZWNDbGVhbnVwVHVw bGVSb3V0aW5nKE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAgKiBucGFydHMJCQkJCQlMZW5n dGggb2Ygc3VicGxhbl9tYXBbXSBhbmQgc3VicGFydF9tYXBbXS4KICAqIHN1YnBsYW5fbWFwCQkJ CQlTdWJwbGFuIGluZGV4IGJ5IHBhcnRpdGlvbiBpbmRleCwgb3IgLTEuCiAgKiBzdWJwYXJ0X21h cAkJCQkJU3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xLgorICogbGVhZnBh cnRfcnRpX21hcAkJCQlSVCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEg bGVhZgorICogCQkJCQkJCQlwYXJ0aXRpb24uCiAgKiBwcmVzZW50X3BhcnRzCQkJCUEgQml0bWFw c2V0IG9mIHRoZSBwYXJ0aXRpb24gaW5kZXhlcyB0aGF0IHdlCiAgKgkJCQkJCQkJaGF2ZSBzdWJw bGFucyBvciBzdWJwYXJ0cyBmb3IuCiAgKiBpbml0aWFsX3BydW5pbmdfc3RlcHMJCUxpc3Qgb2Yg UGFydGl0aW9uUHJ1bmVTdGVwcyB1c2VkIHRvCkBAIC02OSw2ICs3MSw3IEBAIHR5cGVkZWYgc3Ry dWN0IFBhcnRpdGlvbmVkUmVsUHJ1bmluZ0RhdGEKIAlpbnQJCQlucGFydHM7CiAJaW50CQkgICAq c3VicGxhbl9tYXA7CiAJaW50CQkgICAqc3VicGFydF9tYXA7CisJaW50CQkgICAqbGVhZnBhcnRf cnRpX21hcDsKIAlCaXRtYXBzZXQgICpwcmVzZW50X3BhcnRzOwogCUxpc3QJICAgKmluaXRpYWxf cHJ1bmluZ19zdGVwczsKIAlMaXN0CSAgICpleGVjX3BydW5pbmdfc3RlcHM7CkBAIC0xNDAsNiAr MTQzLDcgQEAgZXh0ZXJuIFBhcnRpdGlvblBydW5lU3RhdGUgKkV4ZWNJbml0UGFydGl0aW9uRXhl Y1BydW5pbmcoUGxhblN0YXRlICpwbGFuc3RhdGUsCiAJCQkJCQkJCQkJCQkJCSBCaXRtYXBzZXQg KnJlbGlkcywKIAkJCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqKmluaXRpYWxseV92YWxpZF9zdWJw bGFucyk7CiBleHRlcm4gQml0bWFwc2V0ICpFeGVjRmluZE1hdGNoaW5nU3ViUGxhbnMoUGFydGl0 aW9uUHJ1bmVTdGF0ZSAqcHJ1bmVzdGF0ZSwKLQkJCQkJCQkJCQkgICBib29sIGluaXRpYWxfcHJ1 bmUpOworCQkJCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9wcnVuZSwKKwkJCQkJCQkJCQkgICBCaXRt YXBzZXQgKip2YWxpZHN1YnBsYW5fcnRpcyk7CiAKICNlbmRpZgkJCQkJCQkvKiBFWEVDUEFSVElU SU9OX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmggYi9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjZGVzYy5oCmluZGV4IDBhNzI3NGUyNmMuLjBlNzI0NTQz NWQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNkZXNjLmgKKysrIGIvc3Jj L2luY2x1ZGUvZXhlY3V0b3IvZXhlY2Rlc2MuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIHN0 cnVjdCBRdWVyeURlc2MKIAkvKiBUaGVzZSBmaWVsZHMgYXJlIHByb3ZpZGVkIGJ5IENyZWF0ZVF1 ZXJ5RGVzYyAqLwogCUNtZFR5cGUJCW9wZXJhdGlvbjsJCS8qIENNRF9TRUxFQ1QsIENNRF9VUERB VEUsIGV0Yy4gKi8KIAlQbGFubmVkU3RtdCAqcGxhbm5lZHN0bXQ7CS8qIHBsYW5uZXIncyBvdXRw dXQgKGNvdWxkIGJlIHV0aWxpdHksIHRvbykgKi8KKwlDYWNoZWRQbGFuICpjcGxhbjsJCQkvKiBD YWNoZWRQbGFuIHRoYXQgc3VwcGxpZXMgdGhlIHBsYW5uZWRzdG10ICovCiAJY29uc3QgY2hhciAq c291cmNlVGV4dDsJCS8qIHNvdXJjZSB0ZXh0IG9mIHRoZSBxdWVyeSAqLwogCVNuYXBzaG90CXNu YXBzaG90OwkJLyogc25hcHNob3QgdG8gdXNlIGZvciBxdWVyeSAqLwogCVNuYXBzaG90CWNyb3Nz Y2hlY2tfc25hcHNob3Q7CS8qIGNyb3NzY2hlY2sgZm9yIFJJIHVwZGF0ZS9kZWxldGUgKi8KQEAg LTU3LDYgKzU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUXVlcnlEZXNjCiAKIC8qIGluIHBxdWVyeS5j ICovCiBleHRlcm4gUXVlcnlEZXNjICpDcmVhdGVRdWVyeURlc2MoUGxhbm5lZFN0bXQgKnBsYW5u ZWRzdG10LAorCQkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAogCQkJCQkJCQkgIGNvbnN0IGNo YXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJCSAgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCSAg U25hcHNob3QgY3Jvc3NjaGVja19zbmFwc2hvdCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4 ZWN1dG9yL2V4ZWN1dG9yLmggYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCmluZGV4 IDY5YzNlYmZmMDAuLjAyNTg0ZGQxNTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKKysrIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaApAQCAtMTks NiArMTksNyBAQAogI2luY2x1ZGUgIm5vZGVzL2xvY2tvcHRpb25zLmgiCiAjaW5jbHVkZSAibm9k ZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCisjaW5jbHVkZSAi dXRpbHMvcGxhbmNhY2hlLmgiCiAKIAogLyoKQEAgLTE5OCw2ICsxOTksOSBAQCBFeGVjR2V0SnVu a0F0dHJpYnV0ZShUdXBsZVRhYmxlU2xvdCAqc2xvdCwgQXR0ck51bWJlciBhdHRubywgYm9vbCAq aXNOdWxsKQogICogcHJvdG90eXBlcyBmcm9tIGZ1bmN0aW9ucyBpbiBleGVjTWFpbi5jCiAgKi8K IGV4dGVybiB2b2lkIEV4ZWN1dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxh Z3MpOworZXh0ZXJuIHZvaWQgRXhlY3V0b3JTdGFydENhY2hlZFBsYW4oUXVlcnlEZXNjICpxdWVy eURlc2MsIGludCBlZmxhZ3MsCisJCQkJCQkJCQlDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNl LAorCQkJCQkJCQkJaW50IHF1ZXJ5X2luZGV4KTsKIGV4dGVybiB2b2lkIHN0YW5kYXJkX0V4ZWN1 dG9yU3RhcnQoUXVlcnlEZXNjICpxdWVyeURlc2MsIGludCBlZmxhZ3MpOwogZXh0ZXJuIHZvaWQg RXhlY3V0b3JSdW4oUXVlcnlEZXNjICpxdWVyeURlc2MsCiAJCQkJCQlTY2FuRGlyZWN0aW9uIGRp cmVjdGlvbiwgdWludDY0IGNvdW50LCBib29sIGV4ZWN1dGVfb25jZSk7CkBAIC0yNjEsNiArMjY1 LDMwIEBAIGV4dGVybiB2b2lkIEV4ZWNFbmROb2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4g dm9pZCBFeGVjU2h1dGRvd25Ob2RlKFBsYW5TdGF0ZSAqbm9kZSk7CiBleHRlcm4gdm9pZCBFeGVj U2V0VHVwbGVCb3VuZChpbnQ2NCB0dXBsZXNfbmVlZGVkLCBQbGFuU3RhdGUgKmNoaWxkX25vZGUp OwogCisvKgorICogSXMgdGhlIENhY2hlZFBsYW4gaW4gZXNfY2FjaGVkcGxhbiBzdGlsbCB2YWxp ZD8KKyAqCisgKiBDYWxsZWQgZnJvbSBJbml0UGxhbigpIGJlY2F1c2UgaW52YWxpZGF0aW9uIG1l c3NhZ2VzIHRoYXQgYWZmZWN0IHRoZSBwbGFuCisgKiBtaWdodCBiZSByZWNlaXZlZCBhZnRlciBs b2NrcyBoYXZlIGJlZW4gdGFrZW4gb24gcnVudGltZS1wcnVuYWJsZSByZWxhdGlvbnMuCisgKiBU aGUgY2FsbGVyIHNob3VsZCB0YWtlIGFwcHJvcHJpYXRlIGFjdGlvbiBpZiB0aGUgcGxhbiBoYXMg YmVjb21lIGludmFsaWQuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorRXhlY1BsYW5TdGlsbFZh bGlkKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hlZHBsYW4gPT0g TlVMTCA/IHRydWUgOgorCQlDYWNoZWRQbGFuVmFsaWQoZXN0YXRlLT5lc19jYWNoZWRwbGFuKTsK K30KKworLyoKKyAqIExvY2tzIGFyZSBuZWVkZWQgb25seSBpZiBydW5uaW5nIGEgY2FjaGVkIHBs YW4gdGhhdCBtaWdodCBjb250YWluIHVubG9ja2VkCisgKiByZWxhdGlvbnMsIHN1Y2ggYXMgYSBy ZXVzZWQgZ2VuZXJpYyBwbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0V4ZWNTaG91bGRM b2NrUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKQoreworCXJldHVybiBlc3RhdGUtPmVzX2NhY2hl ZHBsYW4gPT0gTlVMTCA/IGZhbHNlIDoKKwkJQ2FjaGVkUGxhblJlcXVpcmVzTG9ja2luZyhlc3Rh dGUtPmVzX2NhY2hlZHBsYW4pOworfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRXhlY1Byb2NOb2RlCkBA IC01OTAsNyArNjE4LDggQEAgZXh0ZXJuIGJvb2wgRXhlY1JlbGF0aW9uSXNUYXJnZXRSZWxhdGlv bihFU3RhdGUgKmVzdGF0ZSwgSW5kZXggc2NhbnJlbGlkKTsKIAogZXh0ZXJuIFJlbGF0aW9uIEV4 ZWNPcGVuU2NhblJlbGF0aW9uKEVTdGF0ZSAqZXN0YXRlLCBJbmRleCBzY2FucmVsaWQsIGludCBl ZmxhZ3MpOwogCi1leHRlcm4gdm9pZCBFeGVjSW5pdFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUs IExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1JbmZvcyk7CitleHRlcm4gdm9pZCBFeGVjSW5p dFJhbmdlVGFibGUoRVN0YXRlICplc3RhdGUsIExpc3QgKnJhbmdlVGFibGUsIExpc3QgKnBlcm1J bmZvcywKKwkJCQkJCQkgICBCaXRtYXBzZXQgKnVucHJ1bmVkX3JlbGlkcyk7CiBleHRlcm4gdm9p ZCBFeGVjQ2xvc2VSYW5nZVRhYmxlUmVsYXRpb25zKEVTdGF0ZSAqZXN0YXRlKTsKIGV4dGVybiB2 b2lkIEV4ZWNDbG9zZVJlc3VsdFJlbGF0aW9ucyhFU3RhdGUgKmVzdGF0ZSk7CiAKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggZjkzMDYxYzdiZi4uOTY0M2E5ZDYyNiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVz LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJs ZS5oIgogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKICNpbmNsdWRlICJ1dGlscy9xdWVyeWVu dmlyb25tZW50LmgiCisjaW5jbHVkZSAidXRpbHMvcGxhbmNhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3NoYXJlZHR1cGxlc3RvcmUuaCIKICNp bmNsdWRlICJ1dGlscy9zbmFwc2hvdC5oIgpAQCAtNjM5LDkgKzY0MCwxNCBAQCB0eXBlZGVmIHN0 cnVjdCBFU3RhdGUKIAkJCQkJCQkJCQkgKiBFeGVjUm93TWFya3MsIG9yIE5VTEwgaWYgbm9uZSAq LwogCUxpc3QJICAgKmVzX3J0ZXBlcm1pbmZvczsJLyogTGlzdCBvZiBSVEVQZXJtaXNzaW9uSW5m byAqLwogCVBsYW5uZWRTdG10ICplc19wbGFubmVkc3RtdDsJLyogbGluayB0byB0b3Agb2YgcGxh biB0cmVlICovCisJQ2FjaGVkUGxhbiAqZXNfY2FjaGVkcGxhbjsJCS8qIENhY2hlZFBsYW4gcHJv dmlkaW5nIHRoZSBwbGFuIHRyZWUgKi8KIAlMaXN0CSAgICplc19wYXJ0X3BydW5lX2luZm9zOwkv KiBMaXN0IG9mIFBhcnRpdGlvblBydW5lSW5mbyAqLwogCUxpc3QJICAgKmVzX3BhcnRfcHJ1bmVf c3RhdGVzOwkvKiBMaXN0IG9mIFBhcnRpdGlvblBydW5lU3RhdGUgKi8KIAlMaXN0CSAgICplc19w YXJ0X3BydW5lX3Jlc3VsdHM7CS8qIExpc3Qgb2YgQml0bWFwc2V0ICovCisJQml0bWFwc2V0ICAq ZXNfdW5wcnVuZWRfcmVsaWRzOwkvKiBQbGFubmVkU3RtdC51bnBydW5hYmxlUmVsaWRzICsgUlQK KwkJCQkJCQkJCSAqIGluZGV4ZXMgb2YgbGVhZiBwYXJ0aXRpb25zIHRoYXQKKwkJCQkJCQkJCSAq IHN1cnZpdmUgaW5pdGlhbCBwcnVuaW5nOyBzZWUKKwkJCQkJCQkJCSAqIEV4ZWNEb0luaXRpYWxQ cnVuaW5nKCkgKi8KIAljb25zdCBjaGFyICplc19zb3VyY2VUZXh0OwkvKiBTb3VyY2UgdGV4dCBm cm9tIFF1ZXJ5RGVzYyAqLwogCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJLyogdG9wLWxl dmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KQEAgLTY4Nyw2ICs2OTMsNyBAQCB0eXBlZGVmIHN0 cnVjdCBFU3RhdGUKIAlpbnQJCQllc190b3BfZWZsYWdzOwkvKiBlZmxhZ3MgcGFzc2VkIHRvIEV4 ZWN1dG9yU3RhcnQgKi8KIAlpbnQJCQllc19pbnN0cnVtZW50OwkvKiBPUiBvZiBJbnN0cnVtZW50 T3B0aW9uIGZsYWdzICovCiAJYm9vbAkJZXNfZmluaXNoZWQ7CS8qIHRydWUgd2hlbiBFeGVjdXRv ckZpbmlzaCBpcyBkb25lICovCisJYm9vbAkJZXNfYWJvcnRlZDsJCS8qIHRydWUgd2hlbiBleGVj dXRpb24gd2FzIGFib3J0ZWQgKi8KIAogCUxpc3QJICAgKmVzX2V4cHJjb250ZXh0czsJLyogTGlz dCBvZiBFeHByQ29udGV4dHMgd2l0aGluIEVTdGF0ZSAqLwogCkBAIC0xNDI2LDYgKzE0MzMsMTIg QEAgdHlwZWRlZiBzdHJ1Y3QgTW9kaWZ5VGFibGVTdGF0ZQogCWRvdWJsZQkJbXRfbWVyZ2VfaW5z ZXJ0ZWQ7CiAJZG91YmxlCQltdF9tZXJnZV91cGRhdGVkOwogCWRvdWJsZQkJbXRfbWVyZ2VfZGVs ZXRlZDsKKworCS8qCisJICogTGlzdCBvZiB2YWxpZCB1cGRhdGVDb2xub3NMaXN0cy4gIENvbnRh aW5zIG9ubHkgdGhvc2UgYmVsb25naW5nIHRvCisJICogdW5wcnVuZWQgcmVsYXRpb25zIGZyb20g TW9kaWZ5VGFibGUudXBkYXRlQ29sbm9zTGlzdHMuCisJICovCisJTGlzdAkgICAqbXRfdXBkYXRl Q29sbm9zTGlzdHM7CiB9IE1vZGlmeVRhYmxlU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0K ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oIGIvc3JjL2luY2x1ZGUv bm9kZXMvcGF0aG5vZGVzLmgKaW5kZXggZjhhNGNkNDJjNi4uZWY2MTU2ZjMwYiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMv cGF0aG5vZGVzLmgKQEAgLTExNiw2ICsxMTYsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgUGxhbm5lckds b2JhbAogCS8qICJmbGF0IiByYW5nZXRhYmxlIGZvciBleGVjdXRvciAqLwogCUxpc3QJICAgKmZp bmFscnRhYmxlOwogCisJLyoKKwkgKiBSVCBpbmRleGVzIG9mIGFsbCByZWxhdGlvbiBSVEVzIGlu IGZpbmFscnRhYmxlIChSVEVfUkVMQVRJT04gYW5kCisJICogUlRFX1NVQlFVRVJZIFJURXMgb2Yg dmlld3MpIGFuZCBvZiB0aG9zZSB0aGF0IGFyZSBzdWJqZWN0IHRvIHJ1bnRpbWUKKwkgKiBwcnVu aW5nIGF0IHBsYW4gaW5pdGlhbGl6YXRpb24gdGltZSAoImluaXRpYWwiIHBydW5pbmcpLgorCSAq LworCUJpdG1hcHNldCAgKmFsbFJlbGlkczsKKwlCaXRtYXBzZXQgICpwcnVuYWJsZVJlbGlkczsK KwogCS8qICJmbGF0IiBsaXN0IG9mIFJURVBlcm1pc3Npb25JbmZvcyAqLwogCUxpc3QJICAgKmZp bmFscnRlcGVybWluZm9zOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCmluZGV4IGVmODk5Mjc0NzEuLjU5 Njk5YTFmODYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCisrKyBi L3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oCkBAIC03NCw2ICs3NCwxMCBAQCB0eXBlZGVm IHN0cnVjdCBQbGFubmVkU3RtdAogCiAJTGlzdAkgICAqcnRhYmxlOwkJCS8qIGxpc3Qgb2YgUmFu Z2VUYmxFbnRyeSBub2RlcyAqLwogCisJQml0bWFwc2V0ICAqdW5wcnVuYWJsZVJlbGlkczsJLyog UlQgaW5kZXhlcyBvZiByZWxhdGlvbnMgdGhhdCBhcmUgbm90CisJCQkJCQkJCQkgKiBzdWJqZWN0 IHRvIHJ1bnRpbWUgcHJ1bmluZzsgc2V0IGZvcgorCQkJCQkJCQkJICogQWNxdWlyZUV4ZWN1dG9y TG9ja3MoKS4gKi8KKwogCUxpc3QJICAgKnBlcm1JbmZvczsJCS8qIGxpc3Qgb2YgUlRFUGVybWlz c2lvbkluZm8gbm9kZXMgZm9yIHJ0YWJsZQogCQkJCQkJCQkgKiBlbnRyaWVzIG5lZWRpbmcgb25l ICovCiAKQEAgLTE0NzYsNiArMTQ4MCw5IEBAIHR5cGVkZWYgc3RydWN0IFBhcnRpdGlvbmVkUmVs UHJ1bmVJbmZvCiAJLyogc3VicGFydCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIC0xICov CiAJaW50CQkgICAqc3VicGFydF9tYXAgcGdfbm9kZV9hdHRyKGFycmF5X3NpemUobnBhcnRzKSk7 CiAKKwkvKiBSVCBpbmRleCBieSBwYXJ0aXRpb24gaW5kZXgsIG9yIDAgaWYgbm90IGEgbGVhZiBw YXJ0aXRpb24gKi8KKwlpbnQJCSAgICpsZWFmcGFydF9ydGlfbWFwIHBnX25vZGVfYXR0cihhcnJh eV9zaXplKG5wYXJ0cykpOworCiAJLyogcmVsYXRpb24gT0lEIGJ5IHBhcnRpdGlvbiBpbmRleCwg b3IgMCAqLwogCU9pZAkJICAgKnJlbGlkX21hcCBwZ19ub2RlX2F0dHIoYXJyYXlfc2l6ZShucGFy dHMpKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcGxhbmNhY2hlLmggYi9zcmMv aW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAppbmRleCBhOTBkZmRmOTA2Li43Mjg2MmY1ZTg1IDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9wbGFuY2FjaGUuaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9wbGFuY2FjaGUuaApAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgImFjY2Vzcy90 dXBkZXNjLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibm9kZXMvcGFyYW1z LmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5u b2Rlcy5oIgogI2luY2x1ZGUgInRjb3AvY21kdGFnLmgiCiAjaW5jbHVkZSAidXRpbHMvcXVlcnll bnZpcm9ubWVudC5oIgogI2luY2x1ZGUgInV0aWxzL3Jlc293bmVyLmgiCkBAIC0xMzksMTAgKzE0 MSwxMSBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuU291cmNlCiAgKiBUaGUgcmVmZXJlbmNl IGNvdW50IGluY2x1ZGVzIGJvdGggdGhlIGxpbmsgZnJvbSB0aGUgcGFyZW50IENhY2hlZFBsYW5T b3VyY2UKICAqIChpZiBhbnkpLCBhbmQgYW55IGFjdGl2ZSBwbGFuIGV4ZWN1dGlvbnMsIHNvIHRo ZSBwbGFuIGNhbiBiZSBkaXNjYXJkZWQKICAqIGV4YWN0bHkgd2hlbiByZWZjb3VudCBnb2VzIHRv IHplcm8uICBCb3RoIHRoZSBzdHJ1Y3QgaXRzZWxmIGFuZCB0aGUKLSAqIHN1YnNpZGlhcnkgZGF0 YSBsaXZlIGluIHRoZSBjb250ZXh0IGRlbm90ZWQgYnkgdGhlIGNvbnRleHQgZmllbGQuCi0gKiBU aGlzIG1ha2VzIGl0IGVhc3kgdG8gZnJlZSBhIG5vLWxvbmdlci1uZWVkZWQgY2FjaGVkIHBsYW4u ICAoSG93ZXZlciwKLSAqIGlmIGlzX29uZXNob3QgaXMgdHJ1ZSwgdGhlIGNvbnRleHQgZG9lcyBu b3QgYmVsb25nIHNvbGVseSB0byB0aGUgQ2FjaGVkUGxhbgotICogc28gbm8gZnJlZWluZyBpcyBw b3NzaWJsZS4pCisgKiBzdWJzaWRpYXJ5IGRhdGEsIGV4Y2VwdCB0aGUgUGxhbm5lZFN0bXRzIGlu IHN0bXRfbGlzdCBsaXZlIGluIHRoZSBjb250ZXh0CisgKiBkZW5vdGVkIGJ5IHRoZSBjb250ZXh0 IGZpZWxkOyB0aGUgUGxhbm5lZFN0bXRzIGxpdmUgaW4gdGhlIGNvbnRleHQgZGVub3RlZAorICog Ynkgc3RtdF9jb250ZXh0LiAgU2VwYXJhdGUgY29udGV4dHMgbWFrZXMgaXQgZWFzeSB0byBmcmVl IGEgbm8tbG9uZ2VyLW5lZWRlZAorICogY2FjaGVkIHBsYW4uIChIb3dldmVyLCBpZiBpc19vbmVz aG90IGlzIHRydWUsIHRoZSBjb250ZXh0IGRvZXMgbm90IGJlbG9uZworICogc29sZWx5IHRvIHRo ZSBDYWNoZWRQbGFuIHNvIG5vIGZyZWVpbmcgaXMgcG9zc2libGUuKQogICovCiB0eXBlZGVmIHN0 cnVjdCBDYWNoZWRQbGFuCiB7CkBAIC0xNTAsNiArMTUzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ2Fj aGVkUGxhbgogCUxpc3QJICAgKnN0bXRfbGlzdDsJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICov CiAJYm9vbAkJaXNfb25lc2hvdDsJCS8qIGlzIGl0IGEgIm9uZXNob3QiIHBsYW4/ICovCiAJYm9v bAkJaXNfc2F2ZWQ7CQkvKiBpcyBDYWNoZWRQbGFuIGluIGEgbG9uZy1saXZlZCBjb250ZXh0PyAq LworCWJvb2wJCWlzX3JldXNlZDsJCS8qIGlzIGl0IGEgcmV1c2VkIGdlbmVyaWMgcGxhbj8gKi8K IAlib29sCQlpc192YWxpZDsJCS8qIGlzIHRoZSBzdG10X2xpc3QgY3VycmVudGx5IHZhbGlkPyAq LwogCU9pZAkJCXBsYW5Sb2xlSWQ7CQkvKiBSb2xlIElEIHRoZSBwbGFuIHdhcyBjcmVhdGVkIGZv ciAqLwogCWJvb2wJCWRlcGVuZHNPblJvbGU7CS8qIGlzIHBsYW4gc3BlY2lmaWMgdG8gdGhhdCBy b2xlPyAqLwpAQCAtMTU4LDYgKzE2MiwxMCBAQCB0eXBlZGVmIHN0cnVjdCBDYWNoZWRQbGFuCiAJ aW50CQkJZ2VuZXJhdGlvbjsJCS8qIHBhcmVudCdzIGdlbmVyYXRpb24gbnVtYmVyIGZvciB0aGlz IHBsYW4gKi8KIAlpbnQJCQlyZWZjb3VudDsJCS8qIGNvdW50IG9mIGxpdmUgcmVmZXJlbmNlcyB0 byB0aGlzIHN0cnVjdCAqLwogCU1lbW9yeUNvbnRleHQgY29udGV4dDsJCS8qIGNvbnRleHQgY29u dGFpbmluZyB0aGlzIENhY2hlZFBsYW4gKi8KKwlNZW1vcnlDb250ZXh0IHN0bXRfY29udGV4dDsJ LyogY29udGV4dCBjb250YWluaW5nIHRoZSBQbGFubmVkU3RtdHMgaW4KKwkJCQkJCQkJICogc3Rt dF9saXN0LCBidXQgbm90IHRoZSBMaXN0IGl0c2VsZiB3aGljaAorCQkJCQkJCQkgKiBpcyBpbiB0 aGUgYWJvdmUgY29udGV4dDsgTlVMTCBpZiBpc19vbmVzaG90CisJCQkJCQkJCSAqIGlzIHRydWUu ICovCiB9IENhY2hlZFBsYW47CiAKIC8qCkBAIC0yMjMsNiArMjMxLDEwIEBAIGV4dGVybiBDYWNo ZWRQbGFuICpHZXRDYWNoZWRQbGFuKENhY2hlZFBsYW5Tb3VyY2UgKnBsYW5zb3VyY2UsCiAJCQkJ CQkJCSBQYXJhbUxpc3RJbmZvIGJvdW5kUGFyYW1zLAogCQkJCQkJCQkgUmVzb3VyY2VPd25lciBv d25lciwKIAkJCQkJCQkJIFF1ZXJ5RW52aXJvbm1lbnQgKnF1ZXJ5RW52KTsKK2V4dGVybiBQbGFu bmVkU3RtdCAqVXBkYXRlQ2FjaGVkUGxhbihDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLAor CQkJCQkJCQkJIGludCBxdWVyeV9pbmRleCwKKwkJCQkJCQkJCSBRdWVyeUVudmlyb25tZW50ICpx dWVyeUVudik7CisKIGV4dGVybiB2b2lkIFJlbGVhc2VDYWNoZWRQbGFuKENhY2hlZFBsYW4gKnBs YW4sIFJlc291cmNlT3duZXIgb3duZXIpOwogCiBleHRlcm4gYm9vbCBDYWNoZWRQbGFuQWxsb3dz U2ltcGxlVmFsaWRpdHlDaGVjayhDYWNoZWRQbGFuU291cmNlICpwbGFuc291cmNlLApAQCAtMjM1 LDQgKzI0NywzNCBAQCBleHRlcm4gYm9vbCBDYWNoZWRQbGFuSXNTaW1wbHlWYWxpZChDYWNoZWRQ bGFuU291cmNlICpwbGFuc291cmNlLAogZXh0ZXJuIENhY2hlZEV4cHJlc3Npb24gKkdldENhY2hl ZEV4cHJlc3Npb24oTm9kZSAqZXhwcik7CiBleHRlcm4gdm9pZCBGcmVlQ2FjaGVkRXhwcmVzc2lv bihDYWNoZWRFeHByZXNzaW9uICpjZXhwcik7CiAKKy8qCisgKiBDYWNoZWRQbGFuUmVxdWlyZXNM b2NraW5nOiBzaG91bGQgdGhlIGV4ZWN1dG9yIGFjcXVpcmUgYWRkaXRpb25hbCBsb2Nrcz8KKyAq CisgKiBJZiB0aGUgcGxhbiBpcyBhIHNhdmVkIGdlbmVyaWMgcGxhbiwgdGhlIGV4ZWN1dG9yIG11 c3QgYWNxdWlyZSBsb2NrcyBmb3IKKyAqIHJlbGF0aW9ucyB0aGF0IGFyZSBub3QgY292ZXJlZCBi eSBBY3F1aXJlRXhlY3V0b3JMb2NrcygpLCBzdWNoIGFzIHBhcnRpdGlvbnMKKyAqIHRoYXQgYXJl IHN1YmplY3QgdG8gaW5pdGlhbCBydW50aW1lIHBydW5pbmcuCisgKgorICogTm90ZTogVGhlc2Ug bG9ja3MgYXJlIHVubmVjZXNzYXJ5IGlmIHRoZSBwbGFuIGlzIGV4ZWN1dGVkIGltbWVkaWF0ZWx5 IGFmdGVyCisgKiBpdHMgY3JlYXRpb24sIHNpbmNlIHRoZSBwbGFubmVyIHdvdWxkIGhhdmUgYWxy ZWFkeSBhY3F1aXJlZCB0aGVtLiBIb3dldmVyLAorICogd2UgZG8gbm90IG9wdGltaXplIGZvciB0 aGF0IGNhc2UuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorQ2FjaGVkUGxhblJlcXVpcmVzTG9j a2luZyhDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gIWNwbGFuLT5pc19vbmVzaG90ICYm IGNwbGFuLT5pc19yZXVzZWQ7Cit9CisKKy8qCisgKiBDYWNoZWRQbGFuVmFsaWQKKyAqICAgICAg UmV0dXJucyB3aGV0aGVyIGEgY2FjaGVkIGdlbmVyaWMgcGxhbiBpcyBzdGlsbCB2YWxpZC4KKyAq CisgKiBJbnZva2VkIGJ5IHRoZSBleGVjdXRvciB0byBjaGVjayBpZiB0aGUgcGxhbiBoYXMgbm90 IGJlZW4gaW52YWxpZGF0ZWQgYWZ0ZXIKKyAqIHRha2luZyBsb2NrcyBkdXJpbmcgdGhlIGluaXRp YWxpemF0aW9uIG9mIHRoZSBwbGFuLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhY2hlZFBs YW5WYWxpZChDYWNoZWRQbGFuICpjcGxhbikKK3sKKwlyZXR1cm4gY3BsYW4tPmlzX3ZhbGlkOwor fQorCiAjZW5kaWYJCQkJCQkJLyogUExBTkNBQ0hFX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL3BvcnRhbC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKaW5kZXggMjlm NDk4MjlmMi4uNThjMzgyOGQyYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFs LmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvcG9ydGFsLmgKQEAgLTEzOCw2ICsxMzgsNyBAQCB0 eXBlZGVmIHN0cnVjdCBQb3J0YWxEYXRhCiAJUXVlcnlDb21wbGV0aW9uIHFjOwkJCS8qIGNvbW1h bmQgY29tcGxldGlvbiBkYXRhIGZvciBleGVjdXRlZCBxdWVyeSAqLwogCUxpc3QJICAgKnN0bXRz OwkJCS8qIGxpc3Qgb2YgUGxhbm5lZFN0bXRzICovCiAJQ2FjaGVkUGxhbiAqY3BsYW47CQkJLyog Q2FjaGVkUGxhbiwgaWYgc3RtdHMgYXJlIGZyb20gb25lICovCisJQ2FjaGVkUGxhblNvdXJjZSAq cGxhbnNvdXJjZTsJLyogQ2FjaGVkUGxhblNvdXJjZSwgZm9yIGNwbGFuICovCiAKIAlQYXJhbUxp c3RJbmZvIHBvcnRhbFBhcmFtczsgLyogcGFyYW1zIHRvIHBhc3MgdG8gcXVlcnkgKi8KIAlRdWVy eUVudmlyb25tZW50ICpxdWVyeUVudjsgLyogZW52aXJvbm1lbnQgZm9yIHF1ZXJ5ICovCkBAIC0y NDEsNyArMjQyLDggQEAgZXh0ZXJuIHZvaWQgUG9ydGFsRGVmaW5lUXVlcnkoUG9ydGFsIHBvcnRh bCwKIAkJCQkJCQkgIGNvbnN0IGNoYXIgKnNvdXJjZVRleHQsCiAJCQkJCQkJICBDb21tYW5kVGFn IGNvbW1hbmRUYWcsCiAJCQkJCQkJICBMaXN0ICpzdG10cywKLQkJCQkJCQkgIENhY2hlZFBsYW4g KmNwbGFuKTsKKwkJCQkJCQkgIENhY2hlZFBsYW4gKmNwbGFuLAorCQkJCQkJCSAgQ2FjaGVkUGxh blNvdXJjZSAqcGxhbnNvdXJjZSk7CiBleHRlcm4gUGxhbm5lZFN0bXQgKlBvcnRhbEdldFByaW1h cnlTdG10KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsQ3JlYXRlSG9sZFN0b3Jl KFBvcnRhbCBwb3J0YWwpOwogZXh0ZXJuIHZvaWQgUG9ydGFsSGFzaFRhYmxlRGVsZXRlQWxsKHZv aWQpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vTWFrZWZp bGUgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9NYWtlZmlsZQppbmRleCA3MGYy NGU4NDZkLi4zZWViMDk3ZmRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4 ZWN1dGlvbi9NYWtlZmlsZQorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9N YWtlZmlsZQpAQCAtOCw3ICs4LDggQEAgT0JKUyA9IFwKIAlkZWxheV9leGVjdXRpb24ubwogCiBJ U09MQVRJT04gPSBwYXJ0aXRpb24tYWRkaXRpb24gXAotCSAgICBwYXJ0aXRpb24tcmVtb3ZhbC0x CisJICAgIHBhcnRpdGlvbi1yZW1vdmFsLTEgXAorCQljYWNoZWQtcGxhbi1pbnZhbAogCiBpZmRl ZiBVU0VfUEdYUwogUEdfQ09ORklHID0gcGdfY29uZmlnCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL2RlbGF5X2V4ZWN1dGlvbi9kZWxheV9leGVjdXRpb24uYyBiL3NyYy90ZXN0L21vZHVs ZXMvZGVsYXlfZXhlY3V0aW9uL2RlbGF5X2V4ZWN1dGlvbi5jCmluZGV4IGZhNDY5M2EzZjUuLjQ0 YWE4MjhmZGYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL2Rl bGF5X2V4ZWN1dGlvbi5jCkBAIC0xLDE0ICsxLDE4IEBACiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAq CiAgKiBkZWxheV9leGVjdXRpb24uYwotICoJCVRlc3QgbW9kdWxlIHRvIGFsbG93IGRlbGF5IGJl dHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGEgcXVlcnkuCisgKgkJVGVzdCBtb2R1bGUg dG8gaW50cm9kdWNlIGRlbGF5IGF0IHZhcmlvdXMgcG9pbnRzIGR1cmluZyBleGVjdXRpb24gb2Yg YQorICoJCXF1ZXJ5IHRvIHRlc3QgdGhhdCBleGVjdXRpb24gcHJvY2VlZHMgc2FmZWx5IGluIGxp Z2h0IG9mIGNvbmN1cnJlbnQKKyAqCQljaGFuZ2VzLgogICoKICAqIFRoZSBkZWxheSBpcyBpbXBs ZW1lbnRlZCBieSB0YWtpbmcgYW5kIGltbWVkaWF0ZWx5IHJlbGVhc2luZyBhIHNwZWNpZmllZAog ICogYWR2aXNvcnkgbG9jay4gIElmIGFub3RoZXIgcHJvY2VzcyBoYXMgcHJldmlvdXNseSB0YWtl biB0aGF0IGxvY2ssIHRoZQogICogY3VycmVudCBwcm9jZXNzIHdpbGwgYmUgYmxvY2tlZCB1bnRp bCB0aGUgbG9jayBpcyByZWxlYXNlZDsgb3RoZXJ3aXNlLAogICogdGhlcmUncyBubyBlZmZlY3Qu ICBUaGlzIGFsbG93cyBhbiBpc29sYXRpb250ZXN0ZXIgc2NyaXB0IHRvIHJlbGlhYmx5Ci0gKiB0 ZXN0IGJlaGF2aW9ycyB3aGVyZSBzb21lIHNwZWNpZmllZCBhY3Rpb24gaGFwcGVucyBpbiBhbm90 aGVyIGJhY2tlbmQKLSAqIGJldHdlZW4gcGFyc2luZyBhbmQgZXhlY3V0aW9uIG9mIGFueSBkZXNp cmVkIHF1ZXJ5LgorICogdGVzdCBiZWhhdmlvcnMgd2hlcmUgc29tZSBzcGVjaWZpZWQgYWN0aW9u IGhhcHBlbnMgaW4gYW5vdGhlciBiYWNrZW5kIGluCisgKiBhIGNvdXBsZSBvZiBjYXNlczogMSkg YmV0d2VlbiBwYXJzaW5nIGFuZCBleGVjdXRpb24gb2YgYW55IGRlc2lyZWQgcXVlcnkKKyAqIHdo ZW4gdXNpbmcgdGhlIHBsYW5uZXJfaG9vaywgMikgYmV0d2VlbiBSZXZhbGlkYXRlQ2FjaGVkUXVl cnkoKSBhbmQKKyAqIEV4ZWN1dG9yU3RhcnQoKSB3aGVuIHVzaW5nIHRoZSBFeGVjdXRvclN0YXJ0 X2hvb2suCiAgKgogICogQ29weXJpZ2h0IChjKSAyMDIwLTIwMjQsIFBvc3RncmVTUUwgR2xvYmFs IERldmVsb3BtZW50IEdyb3VwCiAgKgpAQCAtMjIsNiArMjYsNyBAQAogCiAjaW5jbHVkZSA8bGlt aXRzLmg+CiAKKyNpbmNsdWRlICJleGVjdXRvci9leGVjdXRvci5oIgogI2luY2x1ZGUgIm9wdGlt aXplci9wbGFubmVyLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncnByb3Rvcy5oIgogI2luY2x1ZGUg InV0aWxzL2d1Yy5oIgpAQCAtMzIsOSArMzcsMTEgQEAgUEdfTU9EVUxFX01BR0lDOwogCiAvKiBH VUM6IGFkdmlzb3J5IGxvY2sgSUQgdG8gdXNlLiAgWmVybyBkaXNhYmxlcyB0aGUgZmVhdHVyZS4g Ki8KIHN0YXRpYyBpbnQJcG9zdF9wbGFubmluZ19sb2NrX2lkID0gMDsKK3N0YXRpYyBpbnQJZXhl Y3V0b3Jfc3RhcnRfbG9ja19pZCA9IDA7CiAKLS8qIFNhdmUgcHJldmlvdXMgcGxhbm5lciBob29r IHVzZXIgdG8gYmUgYSBnb29kIGNpdGl6ZW4gKi8KKy8qIFNhdmUgcHJldmlvdXMgaG9vayB1c2Vy cyB0byBiZSBhIGdvb2QgY2l0aXplbiAqLwogc3RhdGljIHBsYW5uZXJfaG9va190eXBlIHByZXZf cGxhbm5lcl9ob29rID0gTlVMTDsKK3N0YXRpYyBFeGVjdXRvclN0YXJ0X2hvb2tfdHlwZSBwcmV2 X0V4ZWN1dG9yU3RhcnRfaG9vayA9IE5VTEw7CiAKIAogLyogcGxhbm5lcl9ob29rIGZ1bmN0aW9u IHRvIHByb3ZpZGUgdGhlIGRlc2lyZWQgZGVsYXkgKi8KQEAgLTcwLDExICs3Nyw0MSBAQCBkZWxh eV9leGVjdXRpb25fcGxhbm5lcihRdWVyeSAqcGFyc2UsIGNvbnN0IGNoYXIgKnF1ZXJ5X3N0cmlu ZywKIAlyZXR1cm4gcmVzdWx0OwogfQogCisvKiBFeGVjdXRvclN0YXJ0X2hvb2sgZnVuY3Rpb24g dG8gcHJvdmlkZSB0aGUgZGVzaXJlZCBkZWxheSAqLworc3RhdGljIHZvaWQKK2RlbGF5X2V4ZWN1 dGlvbl9FeGVjdXRvclN0YXJ0KFF1ZXJ5RGVzYyAqcXVlcnlEZXNjLCBpbnQgZWZsYWdzKQorewor CS8qIElmIGVuYWJsZWQsIGRlbGF5IGJ5IHRha2luZyBhbmQgcmVsZWFzaW5nIHRoZSBzcGVjaWZp ZWQgbG9jayAqLworCWlmIChleGVjdXRvcl9zdGFydF9sb2NrX2lkICE9IDApCisJeworCQlEaXJl Y3RGdW5jdGlvbkNhbGwxKHBnX2Fkdmlzb3J5X2xvY2tfaW50OCwKKwkJCQkJCQlJbnQ2NEdldERh dHVtKChpbnQ2NCkgZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCkpOworCQlEaXJlY3RGdW5jdGlvbkNh bGwxKHBnX2Fkdmlzb3J5X3VubG9ja19pbnQ4LAorCQkJCQkJCUludDY0R2V0RGF0dW0oKGludDY0 KSBleGVjdXRvcl9zdGFydF9sb2NrX2lkKSk7CisKKwkJLyoKKwkJICogRW5zdXJlIHRoYXQgd2Ug bm90aWNlIGFueSBwZW5kaW5nIGludmFsaWRhdGlvbnMsIHNpbmNlIHRoZSBhZHZpc29yeQorCQkg KiBsb2NrIGZ1bmN0aW9ucyBkb24ndCBkbyB0aGlzLgorCQkgKi8KKwkJQWNjZXB0SW52YWxpZGF0 aW9uTWVzc2FnZXMoKTsKKwl9CisKKwkvKiBOb3cgc3RhcnQgdGhlIGV4ZWN1dG9yLCBwb3NzaWJs eSB2aWEgYSBwcmV2aW91cyBob29rIHVzZXIgKi8KKwlpZiAocHJldl9FeGVjdXRvclN0YXJ0X2hv b2spCisJCXByZXZfRXhlY3V0b3JTdGFydF9ob29rKHF1ZXJ5RGVzYywgZWZsYWdzKTsKKwllbHNl CisJCXN0YW5kYXJkX0V4ZWN1dG9yU3RhcnQocXVlcnlEZXNjLCBlZmxhZ3MpOworCisJaWYgKGV4 ZWN1dG9yX3N0YXJ0X2xvY2tfaWQgIT0gMCkKKwkJZWxvZyhOT1RJQ0UsICJGaW5pc2hlZCBFeGVj dXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgJXMiLAorCQkJIENhY2hlZFBsYW5WYWxpZChxdWVy eURlc2MtPmNwbGFuKSA/ICJ2YWxpZCIgOiAibm90IHZhbGlkIik7Cit9CisKIC8qIE1vZHVsZSBs b2FkIGZ1bmN0aW9uICovCiB2b2lkCiBfUEdfaW5pdCh2b2lkKQogewotCS8qIFNldCB1cCB0aGUg R1VDIHRvIGNvbnRyb2wgd2hpY2ggbG9jayBpcyB1c2VkICovCisJLyogU2V0IHVwIEdVQ3MgdG8g Y29udHJvbCB3aGljaCBsb2NrIGlzIHVzZWQgKi8KIAlEZWZpbmVDdXN0b21JbnRWYXJpYWJsZSgi ZGVsYXlfZXhlY3V0aW9uLnBvc3RfcGxhbm5pbmdfbG9ja19pZCIsCiAJCQkJCQkJIlNldHMgdGhl IGFkdmlzb3J5IGxvY2sgSUQgdG8gYmUgbG9ja2VkL3VubG9ja2VkIGFmdGVyIHBsYW5uaW5nLiIs CiAJCQkJCQkJIlplcm8gZGlzYWJsZXMgdGhlIGRlbGF5LiIsCkBAIC04NiwxMCArMTIzLDIyIEBA IF9QR19pbml0KHZvaWQpCiAJCQkJCQkJTlVMTCwKIAkJCQkJCQlOVUxMLAogCQkJCQkJCU5VTEwp OwotCisJRGVmaW5lQ3VzdG9tSW50VmFyaWFibGUoImRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9z dGFydF9sb2NrX2lkIiwKKwkJCQkJCQkiU2V0cyB0aGUgYWR2aXNvcnkgbG9jayBJRCB0byBiZSBs b2NrZWQvdW5sb2NrZWQgYmVmb3JlIHN0YXJ0aW5nIGV4ZWN1dGlvbi4iLAorCQkJCQkJCSJaZXJv IGRpc2FibGVzIHRoZSBkZWxheS4iLAorCQkJCQkJCSZleGVjdXRvcl9zdGFydF9sb2NrX2lkLAor CQkJCQkJCTAsCisJCQkJCQkJMCwgSU5UX01BWCwKKwkJCQkJCQlQR0NfVVNFUlNFVCwKKwkJCQkJ CQkwLAorCQkJCQkJCU5VTEwsCisJCQkJCQkJTlVMTCwKKwkJCQkJCQlOVUxMKTsKIAlNYXJrR1VD UHJlZml4UmVzZXJ2ZWQoImRlbGF5X2V4ZWN1dGlvbiIpOwogCi0JLyogSW5zdGFsbCBvdXIgaG9v ayAqLworCS8qIEluc3RhbGwgb3VyIGhvb2tzLiAqLwogCXByZXZfcGxhbm5lcl9ob29rID0gcGxh bm5lcl9ob29rOwogCXBsYW5uZXJfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9wbGFubmVyOworCXBy ZXZfRXhlY3V0b3JTdGFydF9ob29rID0gRXhlY3V0b3JTdGFydF9ob29rOworCUV4ZWN1dG9yU3Rh cnRfaG9vayA9IGRlbGF5X2V4ZWN1dGlvbl9FeGVjdXRvclN0YXJ0OwogfQpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVkLXBsYW4taW52 YWwub3V0IGIvc3JjL3Rlc3QvbW9kdWxlcy9kZWxheV9leGVjdXRpb24vZXhwZWN0ZWQvY2FjaGVk LXBsYW4taW52YWwub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAuLjVi ZmIyYjMzYjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1 dGlvbi9leHBlY3RlZC9jYWNoZWQtcGxhbi1pbnZhbC5vdXQKQEAgLTAsMCArMSwyODIgQEAKK1Bh cnNlZCB0ZXN0IHNwZWMgd2l0aCAyIHNlc3Npb25zCisKK3N0YXJ0aW5nIHBlcm11dGF0aW9uOiBz MXByZXAgczJsb2NrIHMxZXhlYyBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDogU0VUIHBs YW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEgQVMgU0VM RUNUICogRlJPTSBmb292IFdIRVJFIGEgPSAkMSBGT1IgVVBEQVRFOworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxICgxKTsKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCitMb2NrUm93cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAg ICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIC0+ ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEgICAKKyAgICAgICAgICAgICAgUmVj aGVjayBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFw IEluZGV4IFNjYW4gb24gZm9vMTJfMV9hCisgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6 IChhID0gJDEpICAgICAgICAKKyg3IHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxFQ1QgcGdfYWR2 aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjOiBMT0FEICdkZWxheV9leGVj dXRpb24nOworCQkgIFNFVCBkZWxheV9leGVjdXRpb24uZXhlY3V0b3Jfc3RhcnRfbG9ja19pZCA9 IDEyMzQ1OworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBxICgxKTsgPHdhaXRpbmcg Li4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElOREVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6 IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCist LS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMx ZXhlYzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhlY3V0b3JTdGFy dCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorTG9j a1Jvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAyICAgICAgICAgIAor ICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMQorICAgICAgICAgICAgICBGaWx0 ZXI6IChhID0gJDEpICAgICAgIAorKDUgcm93cykKKworCitzdGFydGluZyBwZXJtdXRhdGlvbjog czFwcmVwMiBzMmxvY2sgczFleGVjMiBzMmRyb3BpIHMydW5sb2NrCitzdGVwIHMxcHJlcDI6IFNF VCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxMiBB UyBTRUxFQ1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9IG9uZSgpIG9yIGEgPSB0d28oKTsKKwkJICBF WFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7CitzMTogTk9USUNFOiAgRmluaXNoZWQgRXhl Y3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAg ICAgICAgICAKKyAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28o KSkpCisgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAg ICAgICAgICAgICAgICAgSW5kZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgLT4gIFNlcSBTY2FuIG9uIGZv bzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAgIEZpbHRlcjogKChhID0gb25l KCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorKDExIHJvd3MpCisKK3N0ZXAgczJsb2NrOiBTRUxF Q1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7CitwZ19hZHZpc29yeV9sb2NrCistLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgCisoMSByb3cpCisKK3N0ZXAgczFleGVjMjogTE9BRCAn ZGVsYXlfZXhlY3V0aW9uJzsKKwkJICBTRVQgZGVsYXlfZXhlY3V0aW9uLmV4ZWN1dG9yX3N0YXJ0 X2xvY2tfaWQgPSAxMjM0NTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcTI7IDx3 YWl0aW5nIC4uLj4KK3N0ZXAgczJkcm9waTogRFJPUCBJTkRFWCBmb28xMl8xX2E7CitzdGVwIHMy dW5sb2NrOiBTRUxFQ1QgcGdfYWR2aXNvcnlfdW5sb2NrKDEyMzQ1KTsKK3BnX2Fkdmlzb3J5X3Vu bG9jaworLS0tLS0tLS0tLS0tLS0tLS0tCit0ICAgICAgICAgICAgICAgICAKKygxIHJvdykKKwor c3RlcCBzMWV4ZWMyOiA8Li4uIGNvbXBsZXRlZD4KK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVj dXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMgbm90IHZhbGlkCitzMTogTk9USUNFOiAgRmluaXNo ZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIHZhbGlkCitRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KK0FwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCisgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAKKyAgICAgICAgRmlsdGVy OiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28oKSkpCisgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8y IGZvb18yICAgICAgICAgICAgIAorICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkKKyg2IHJvd3MpCisKKworc3RhcnRpbmcgcGVybXV0YXRpb246IHMxcHJlcDMgczJs b2NrIHMxZXhlYzMgczJkcm9waSBzMnVubG9jaworc3RlcCBzMXByZXAzOiBTRVQgcGxhbl9jYWNo ZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZv b3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUoKSBvciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAo Q09TVFMgT0ZGKSBFWEVDVVRFIHEzOworczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3Rh cnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9y U3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1 dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitOZXN0ZWQgTG9v cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCisgICAgICAgIC0+ICBCaXRtYXAgSGVhcCBTY2FuIG9uIGZvbzEyXzEgZm9vXzEg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6ICgoYSA9IG9uZSgp KSBPUiAoYSA9IHR3bygpKSkgICAgICAKKyAgICAgICAgICAgICAgLT4gIEJpdG1hcE9yICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgICAKKyAgICAgICAgICAg ICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAgICAgCisgICAg ICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gdHdvKCkpICAgICAgICAgICAg IAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAg ICAgICAgICAKKyAgICAgICAgICAgICAgRmlsdGVyOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0d28o KSkpICAgICAgICAgICAgCisgIC0+ICBNYXRlcmlhbGl6ZSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgU3VicGxhbnMgUmVt b3ZlZDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIC0+ICBC aXRtYXAgSGVhcCBTY2FuIG9uIGJhcjEgYmFyXzEgICAgICAgICAgICAgIAorICAgICAgICAgICAg ICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0gb25lKCkpICAgICAgICAgICAgICAgICAKKyAgICAg ICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGJhcjFfYV9pZHggICAgICAg CisgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAgICAg ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKK1VwZGF0ZSBvbiBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgIFVwZGF0ZSBvbiBiYXIxIGJhcl8xICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgTmVzdGVkIExvb3AgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEFwcGVuZCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAg IFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBmb28xMl8xIGZvb18xICAgICAgICAgICAK KyAgICAgICAgICAgICAgICAgICAgUmVjaGVjayBDb25kOiAoKGEgPSBvbmUoKSkgT1IgKGEgPSB0 d28oKSkpCisgICAgICAgICAgICAgICAgICAgIC0+ICBCaXRtYXBPciAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4 IFNjYW4gb24gZm9vMTJfMV9hICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5k ZXggQ29uZDogKGEgPSBvbmUoKSkgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBmb28xMl8xX2EgIAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IHR3bygpKSAgICAgICAKKyAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAgCisgICAgICAg ICAgICAgICAgICAgIEZpbHRlcjogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAor ICAgICAgICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAgICAgLT4gIEFwcGVuZCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDEgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAg U2NhbiBvbiBiYXIxIGJhcl8xICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUmVj aGVjayBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAg ICAgIC0+ICBCaXRtYXAgSW5kZXggU2NhbiBvbiBiYXIxX2FfaWR4IAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitV cGRhdGUgb24gZm9vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICBVcGRhdGUgb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKyAgVXBkYXRlIG9uIGZvbzEyXzIgZm9vXzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCisgIC0+ICBBcHBlbmQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgLT4gIEJpdG1hcCBIZWFw IFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIFJl Y2hlY2sgQ29uZDogKChhID0gb25lKCkpIE9SIChhID0gdHdvKCkpKSAgICAgIAorICAgICAgICAg ICAgICAtPiAgQml0bWFwT3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAg ICAgICAgICAgICAgICAgICAgLT4gIEJpdG1hcCBJbmRleCBTY2FuIG9uIGZvbzEyXzFfYSAgICAg ICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIEluZGV4IENvbmQ6IChhID0gb25lKCkpICAg ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEluZGV4IFNjYW4gb24g Zm9vMTJfMV9hICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSW5kZXggQ29uZDog KGEgPSB0d28oKSkgICAgICAgICAgICAgCisgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBmb28xMl8y IGZvb18yICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgICAKKyg1NiByb3dzKQorCitzdGVw IHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNvcnlfbG9j aworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMx ZXhlYzM6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5l eGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBF WEVDVVRFIHEzOyA8d2FpdGluZyAuLi4+CitzdGVwIHMyZHJvcGk6IERST1AgSU5ERVggZm9vMTJf MV9hOworc3RlcCBzMnVubG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X3VubG9jaygxMjM0NSk7Citw Z19hZHZpc29yeV91bmxvY2sKKy0tLS0tLS0tLS0tLS0tLS0tLQordCAgICAgICAgICAgICAgICAg CisoMSByb3cpCisKK3N0ZXAgczFleGVjMzogPC4uLiBjb21wbGV0ZWQ+CitzMTogTk9USUNFOiAg RmluaXNoZWQgRXhlY3V0b3JTdGFydCgpOiBDYWNoZWRQbGFuIGlzIG5vdCB2YWxpZAorczE6IE5P VElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxpZAor czE6IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyB2YWxp ZAorUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24g Zm9vMTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0 ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorICAgICAgICAtPiAg U2VxIFNjYW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAor ICAtPiAgTWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBi YXIxIGJhcl8xICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6 IChhID0gb25lKCkpICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0 bWFwIEluZGV4IFNjYW4gb24gYmFyMV9hX2lkeCAgICAgIAorICAgICAgICAgICAgICAgICAgICAg ICAgICBJbmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgICAgICAgIAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9u IGJhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBV cGRhdGUgb24gYmFyMSBiYXJfMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAtPiAgTmVzdGVkIExvb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJf MSBmb29fMSAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBGaWx0ZXI6ICgo YSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAgICAgICAtPiAgU2VxIFNj YW4gb24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg ICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgIAorICAgICAgICAtPiAg TWF0ZXJpYWxpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor ICAgICAgICAgICAgICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAg ICAgIAorICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIEhlYXAgU2NhbiBvbiBiYXIxIGJh cl8xICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNoZWNrIENvbmQ6IChhID0g b25lKCkpICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgQml0bWFwIElu ZGV4IFNjYW4gb24gYmFyMV9hX2lkeAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ bmRleCBDb25kOiAoYSA9IG9uZSgpKSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorVXBkYXRlIG9uIGZvbyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUgb24gZm9v MTJfMSBmb29fMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBVcGRhdGUg b24gZm9vMTJfMiBmb29fMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAt PiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorICAgICAgICBTdWJwbGFucyBSZW1vdmVkOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMSBmb29fMSAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9uZSgpKSBPUiAoYSA9 IHR3bygpKSkgICAgICAgICAgIAorICAgICAgICAtPiAgU2VxIFNjYW4gb24gZm9vMTJfMiBmb29f MiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBGaWx0ZXI6ICgoYSA9IG9u ZSgpKSBPUiAoYSA9IHR3bygpKSkgICAgICAgICAgIAorKDQxIHJvd3MpCisKKworc3RhcnRpbmcg cGVybXV0YXRpb246IHMxcHJlcDQgczJsb2NrIHMxZXhlYzQgczJkcm9waSBzMnVubG9jaworc3Rl cCBzMXByZXA0OiBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworCQkg IFNFVCBlbmFibGVfc2Vxc2NhbiBUTyBvZmY7CisJCSAgUFJFUEFSRSBxNCBBUyBTRUxFQ1QgKiBG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxKSBXSEVSRSBFWElTVFMgKFNFTEVDVCAqIEZST00gZm9v diBXSEVSRSBhID0gJDEgRk9SIFVQREFURSk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHE0ICgxKTsKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hl ZFBsYW4gaXMgdmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVy OiAoSW5pdFBsYW4gMSkuY29sMSAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBJbml0UGxh biAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisg ICAgLT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKyAgICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLT4gIEluZGV4IFNjYW4gdXNp bmcgZm9vMTJfMV9hIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBJbmRl eCBDb25kOiAoYSA9ICQxKSAgICAgICAgICAgICAgICAgICAgIAorICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgICAgICAgICAgICAgICAgICAgICAgICAgCisoOSByb3dzKQor CitzdGVwIHMybG9jazogU0VMRUNUIHBnX2Fkdmlzb3J5X2xvY2soMTIzNDUpOworcGdfYWR2aXNv cnlfbG9jaworLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgIAorKDEgcm93KQorCitz dGVwIHMxZXhlYzQ6IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1 dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMg T0ZGKSBFWEVDVVRFIHE0ICgxKTsgPHdhaXRpbmcgLi4uPgorc3RlcCBzMmRyb3BpOiBEUk9QIElO REVYIGZvbzEyXzFfYTsKK3N0ZXAgczJ1bmxvY2s6IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2so MTIzNDUpOworcGdfYWR2aXNvcnlfdW5sb2NrCistLS0tLS0tLS0tLS0tLS0tLS0KK3QgICAgICAg ICAgICAgICAgIAorKDEgcm93KQorCitzdGVwIHMxZXhlYzQ6IDwuLi4gY29tcGxldGVkPgorczE6 IE5PVElDRTogIEZpbmlzaGVkIEV4ZWN1dG9yU3RhcnQoKTogQ2FjaGVkUGxhbiBpcyBub3QgdmFs aWQKK3MxOiBOT1RJQ0U6ICBGaW5pc2hlZCBFeGVjdXRvclN0YXJ0KCk6IENhY2hlZFBsYW4gaXMg dmFsaWQKK1FVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitSZXN1bHQgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgT25lLVRpbWUgRmlsdGVyOiAoSW5p dFBsYW4gMSkuY29sMSAgICAgICAgIAorICBJbml0UGxhbiAxICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCisgICAgLT4gIExvY2tSb3dzICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKyAgICAgICAgICAtPiAgQXBwZW5kICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg ICAgICAgICAgIFN1YnBsYW5zIFJlbW92ZWQ6IDIgICAgICAgICAgCisgICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIGZvbzEyXzEgZm9vXzEKKyAgICAgICAgICAgICAgICAgICAgICBEaXNh YmxlZDogdHJ1ZSAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGEgPSAk MSkgICAgICAgCisgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyAgICAgICAK KygxMCByb3dzKQorCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1 aWxkCmluZGV4IDQxZjNhYzBiODkuLjVhNzBiMTgzZDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21v ZHVsZXMvZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0L21vZHVsZXMv ZGVsYXlfZXhlY3V0aW9uL21lc29uLmJ1aWxkCkBAIC0yNCw2ICsyNCw3IEBAIHRlc3RzICs9IHsK ICAgICAnc3BlY3MnOiBbCiAgICAgICAncGFydGl0aW9uLWFkZGl0aW9uJywKICAgICAgICdwYXJ0 aXRpb24tcmVtb3ZhbC0xJywKKyAgICAgICdjYWNoZWQtcGxhbi1pbnZhbCcsCiAgICAgXSwKICAg fSwKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvZGVsYXlfZXhlY3V0aW9uL3NwZWNz L2NhY2hlZC1wbGFuLWludmFsLnNwZWMgYi9zcmMvdGVzdC9tb2R1bGVzL2RlbGF5X2V4ZWN1dGlv bi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAuLmYyN2U4ZmI1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL2RlbGF5X2V4ZWN1dGlvbi9zcGVjcy9jYWNoZWQtcGxhbi1pbnZhbC5zcGVjCkBAIC0wLDAg KzEsODAgQEAKKyMgVGVzdCB0byBjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBjYWNoZWQgZ2Vu ZXJpYyBwbGFucyBkdXJpbmcgRXhlY3V0b3JTdGFydAorIyBjb3JyZWN0bHkgdHJpZ2dlcnMgcmVw bGFubmluZyBhbmQgcmUtZXhlY3V0aW9uLgorCitzZXR1cAoreworICBDUkVBVEUgVEFCTEUgZm9v IChhIGludCwgYiB0ZXh0KSBQQVJUSVRJT04gQlkgTElTVChhKTsKKyAgQ1JFQVRFIFRBQkxFIGZv bzEyIFBBUlRJVElPTiBPRiBmb28gRk9SIFZBTFVFUyBJTiAoMSwgMikgUEFSVElUSU9OIEJZIExJ U1QgKGEpOworICBDUkVBVEUgVEFCTEUgZm9vMTJfMSBQQVJUSVRJT04gT0YgZm9vMTIgRk9SIFZB TFVFUyBJTiAoMSk7CisgIENSRUFURSBUQUJMRSBmb28xMl8yIFBBUlRJVElPTiBPRiBmb28xMiBG T1IgVkFMVUVTIElOICgyKTsKKyAgQ1JFQVRFIElOREVYIGZvbzEyXzFfYSBPTiBmb28xMl8xIChh KTsKKyAgQ1JFQVRFIFRBQkxFIGZvbzMgUEFSVElUSU9OIE9GIGZvbyBGT1IgVkFMVUVTIElOICgz KTsKKyAgQ1JFQVRFIFZJRVcgZm9vdiBBUyBTRUxFQ1QgKiBGUk9NIGZvbzsKKyAgQ1JFQVRFIEZV TkNUSU9OIG9uZSAoKSBSRVRVUk5TIGludCBBUyAkJCBCRUdJTiBSRVRVUk4gMTsgRU5EOyAkJCBM QU5HVUFHRSBQTFBHU1FMIFNUQUJMRTsKKyAgQ1JFQVRFIEZVTkNUSU9OIHR3byAoKSBSRVRVUk5T IGludCBBUyAkJCBCRUdJTiBSRVRVUk4gMjsgRU5EOyAkJCBMQU5HVUFHRSBQTFBHU1FMIFNUQUJM RTsKKyAgQ1JFQVRFIFRBQkxFIGJhciAoYSBpbnQsIGIgdGV4dCkgUEFSVElUSU9OIEJZIExJU1Qo YSk7CisgIENSRUFURSBUQUJMRSBiYXIxIFBBUlRJVElPTiBPRiBiYXIgRk9SIFZBTFVFUyBJTiAo MSk7CisgIENSRUFURSBJTkRFWCBPTiBiYXIxKGEpOworICBDUkVBVEUgVEFCTEUgYmFyMiBQQVJU SVRJT04gT0YgYmFyIEZPUiBWQUxVRVMgSU4gKDIpOworICBDUkVBVEUgUlVMRSB1cGRhdGVfZm9v IEFTIE9OIFVQREFURSBUTyBmb28gRE8gQUxTTyBVUERBVEUgYmFyIFNFVCBhID0gYSBXSEVSRSBh ID0gb25lKCk7CisgIENSRUFURSBSVUxFIHVwZGF0ZV9iYXIgQVMgT04gVVBEQVRFIFRPIGJhciBE TyBBTFNPIFNFTEVDVCAxOworfQorCit0ZWFyZG93bgoreworICBEUk9QIFZJRVcgZm9vdjsKKyAg RFJPUCBSVUxFIHVwZGF0ZV9mb28gT04gZm9vOworICBEUk9QIFRBQkxFIGZvbywgYmFyOworICBE Uk9QIEZVTkNUSU9OIG9uZSgpLCB0d28oKTsKK30KKworc2Vzc2lvbiAiczEiCisjIEFwcGVuZCB3 aXRoIHJ1bi10aW1lIHBydW5pbmcKK3N0ZXAgInMxcHJlcCIgICB7IFNFVCBwbGFuX2NhY2hlX21v ZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CisJCSAgUFJFUEFSRSBxIEFTIFNFTEVDVCAqIEZST00g Zm9vdiBXSEVSRSBhID0gJDEgRk9SIFVQREFURTsKKwkJICBFWFBMQUlOIChDT1NUUyBPRkYpIEVY RUNVVEUgcSAoMSk7IH0KKworIyBBbm90aGVyIGNhc2Ugd2l0aCBBcHBlbmQgd2l0aCBydW4tdGlt ZSBwcnVuaW5nCitzdGVwICJzMXByZXAyIiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNl X2dlbmVyaWNfcGxhbjsKKwkJICBQUkVQQVJFIHEyIEFTIFNFTEVDVCAqIEZST00gZm9vdiBXSEVS RSBhID0gb25lKCkgb3IgYSA9IHR3bygpOworCQkgIEVYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VU RSBxMjsgfQorCisjIENhc2Ugd2l0aCBhIHJ1bGUgYWRkaW5nIGFub3RoZXIgcXVlcnkKK3N0ZXAg InMxcHJlcDMiICAgeyBTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOwor CQkgIFBSRVBBUkUgcTMgQVMgVVBEQVRFIGZvb3YgU0VUIGEgPSBhIFdIRVJFIGEgPSBvbmUoKSBv ciBhID0gdHdvKCk7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEzOyB9CisKKyMg QW5vdGhlciBjYXNlIHdpdGggQXBwZW5kIHdpdGggcnVuLXRpbWUgcHJ1bmluZyBpbiBhIHN1YnF1 ZXJ5CitzdGVwICJzMXByZXA0IiAgIHsgU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVy aWNfcGxhbjsKKwkJICBTRVQgZW5hYmxlX3NlcXNjYW4gVE8gb2ZmOworCQkgIFBSRVBBUkUgcTQg QVMgU0VMRUNUICogRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMSkgV0hFUkUgRVhJU1RTIChTRUxF Q1QgKiBGUk9NIGZvb3YgV0hFUkUgYSA9ICQxIEZPUiBVUERBVEUpOworCQkgIEVYUExBSU4gKENP U1RTIE9GRikgRVhFQ1VURSBxNCAoMSk7IH0KKworIyBFeGVjdXRlcyBhIGdlbmVyaWMgcGxhbgor c3RlcCAiczFleGVjIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4 ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09T VFMgT0ZGKSBFWEVDVVRFIHEgKDEpOyB9CitzdGVwICJzMWV4ZWMyIgl7IExPQUQgJ2RlbGF5X2V4 ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lk ID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHEyOyB9CitzdGVwICJz MWV4ZWMzIgl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlv bi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZG KSBFWEVDVVRFIHEzOyB9CitzdGVwICJzMWV4ZWM0Igl7IExPQUQgJ2RlbGF5X2V4ZWN1dGlvbic7 CisJCSAgU0VUIGRlbGF5X2V4ZWN1dGlvbi5leGVjdXRvcl9zdGFydF9sb2NrX2lkID0gMTIzNDU7 CisJCSAgRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHE0ICgxKTsgfQorCitzZXNzaW9uICJz MiIKK3N0ZXAgInMybG9jayIJeyBTRUxFQ1QgcGdfYWR2aXNvcnlfbG9jaygxMjM0NSk7IH0KK3N0 ZXAgInMydW5sb2NrIgl7IFNFTEVDVCBwZ19hZHZpc29yeV91bmxvY2soMTIzNDUpOyB9CitzdGVw ICJzMmRyb3BpIgl7IERST1AgSU5ERVggZm9vMTJfMV9hOyB9CisKKyMgV2hpbGUgInMxZXhlYyIs IGV0Yy4gd2FpdCB0byBhY3F1aXJlIHRoZSBhZHZpc29yeSBsb2NrLCAiczJkcm9wIiBpcyBhYmxl IHRvCisjIGRyb3AgdGhlIGluZGV4IGJlaW5nIHVzZWQgaW4gdGhlIGNhY2hlZCBwbGFuLiAgV2hl biAiczFleGVjIiBpcyB0aGVuCisjIHVuYmxvY2tlZCBhbmQgaW5pdGlhbGl6ZXMgdGhlIGNhY2hl ZCBwbGFuIGZvciBleGVjdXRpb24sIGl0IGRldGVjdHMgdGhlCisjIGNvbmN1cnJlbnQgaW5kZXgg ZHJvcCBhbmQgY2F1c2VzIHRoZSBjYWNoZWQgcGxhbiB0byBiZSBkaXNjYXJkZWQgYW5kCisjIHJl Y3JlYXRlZCB3aXRob3V0IHRoZSBpbmRleC4KK3Blcm11dGF0aW9uICJzMXByZXAiICJzMmxvY2si ICJzMWV4ZWMiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVwMiIgInMy bG9jayIgInMxZXhlYzIiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAiczFwcmVw MyIgInMybG9jayIgInMxZXhlYzMiICJzMmRyb3BpIiAiczJ1bmxvY2siCitwZXJtdXRhdGlvbiAi czFwcmVwNCIgInMybG9jayIgInMxZXhlYzQiICJzMmRyb3BpIiAiczJ1bmxvY2siCmRpZmYgLS1n aXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQgYi9zcmMv dGVzdC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9wcnVuZS5vdXQKaW5kZXggN2EwM2I0ZTM2 MC4uNzA1Y2Q5MjJmYyAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0 aXRpb25fcHJ1bmUub3V0CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9u X3BydW5lLm91dApAQCAtNDQ0MCwzICs0NDQwLDQ3IEBAIGRyb3AgdGFibGUgaHBfY29udHJhZGlj dF90ZXN0OwogZHJvcCBvcGVyYXRvciBjbGFzcyBwYXJ0X3Rlc3RfaW50NF9vcHMyIHVzaW5nIGhh c2g7CiBkcm9wIG9wZXJhdG9yID09PShpbnQ0LCBpbnQ0KTsKIGRyb3AgZnVuY3Rpb24gZXhwbGFp bl9hbmFseXplKHRleHQpOworLS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRI IENIRUNLIE9QVElPTlMgYW5kIFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGlu dCwgYiB0ZXh0LCBjIGJvb2wpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBw YXJ0X2FiY18xIChiIHRleHQsIGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJj XzIgKGEgaW50LCBjIGJvb2wsIGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2gg cGFydGl0aW9uIHBhcnRfYWJjXzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0 X2FiYyBhdHRhY2ggcGFydGl0aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNl cnQgaW50byBwYXJ0X2FiYyB2YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0 X2FiYyB2YWx1ZXMgKDIsICdjJywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFz IHNlbGVjdCAqIGZyb20gcGFydF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247 CitwcmVwYXJlIHVwZGF0ZV9wYXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNl dCBiID0gJDIgd2hlcmUgYSA9ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBl eGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0X2Fi YworICAgVXBkYXRlIG9uIHBhcnRfYWJjXzEKKyAgIC0+ICBBcHBlbmQKKyAgICAgICAgIFN1YnBs YW5zIFJlbW92ZWQ6IDEKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwYXJ0X2FiY18xCisgICAg ICAgICAgICAgICBGaWx0ZXI6ICgoYiA8PiAnYSc6OnRleHQpIEFORCAoYSA9ICQxKSkKKyg2IHJv d3MpCisKK2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDEsICdkJyk7CisgYSB8IGIgfCBj IAorLS0tKy0tLSstLS0KKyAxIHwgZCB8IHQKKygxIHJvdykKKworZXhwbGFpbiAoY29zdHMgb2Zm KSBleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3ICgyLCAnYScpOworICAgICAgICAgICAgICAg ICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFVwZGF0ZSBvbiBwYXJ0 X2FiYworICAgVXBkYXRlIG9uIHBhcnRfYWJjXzIgcGFydF9hYmNfMQorICAgLT4gIEFwcGVuZAor ICAgICAgICAgU3VicGxhbnMgUmVtb3ZlZDogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh cnRfYWJjXzIgcGFydF9hYmNfMQorICAgICAgICAgICAgICAgRmlsdGVyOiAoKGIgPD4gJ2EnOjp0 ZXh0KSBBTkQgKGEgPSAkMSkpCisoNiByb3dzKQorCitleGVjdXRlIHVwZGF0ZV9wYXJ0X2FiY192 aWV3ICgyLCAnYScpOworRVJST1I6ICBuZXcgcm93IHZpb2xhdGVzIGNoZWNrIG9wdGlvbiBmb3Ig dmlldyAicGFydF9hYmNfdmlldyIKK0RFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgyLCBh LCB0KS4KK2RlYWxsb2NhdGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXc7Citkcm9wIHZpZXcgcGFydF9h YmNfdmlldzsKK2Ryb3AgdGFibGUgcGFydF9hYmM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdy ZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcGFydGl0 aW9uX3BydW5lLnNxbAppbmRleCA0NDI0MjhkOTM3Li5hZjI2YWQyZmIyIDEwMDY0NAotLS0gYS9z cmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fcHJ1bmUuc3FsCisrKyBiL3NyYy90ZXN0L3Jl Z3Jlc3Mvc3FsL3BhcnRpdGlvbl9wcnVuZS5zcWwKQEAgLTEzMzksMyArMTMzOSwyMSBAQCBkcm9w IG9wZXJhdG9yIGNsYXNzIHBhcnRfdGVzdF9pbnQ0X29wczIgdXNpbmcgaGFzaDsKIGRyb3Agb3Bl cmF0b3IgPT09KGludDQsIGludDQpOwogCiBkcm9wIGZ1bmN0aW9uIGV4cGxhaW5fYW5hbHl6ZSh0 ZXh0KTsKKworLS0gUnVudGltZSBwcnVuaW5nIG9uIFVQREFURSB1c2luZyBXSVRIIENIRUNLIE9Q VElPTlMgYW5kIFJFVFVSTklORworY3JlYXRlIHRhYmxlIHBhcnRfYWJjIChhIGludCwgYiB0ZXh0 LCBjIGJvb2wpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJsZSBwYXJ0X2FiY18x IChiIHRleHQsIGEgaW50LCBjIGJvb2wpOworY3JlYXRlIHRhYmxlIHBhcnRfYWJjXzIgKGEgaW50 LCBjIGJvb2wsIGIgdGV4dCk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRhY2ggcGFydGl0aW9u IHBhcnRfYWJjXzEgZm9yIHZhbHVlcyBpbiAoMSk7CithbHRlciB0YWJsZSBwYXJ0X2FiYyBhdHRh Y2ggcGFydGl0aW9uIHBhcnRfYWJjXzIgZm9yIHZhbHVlcyBpbiAoMik7CitpbnNlcnQgaW50byBw YXJ0X2FiYyB2YWx1ZXMgKDEsICdiJywgdHJ1ZSk7CitpbnNlcnQgaW50byBwYXJ0X2FiYyB2YWx1 ZXMgKDIsICdjJywgdHJ1ZSk7CitjcmVhdGUgdmlldyBwYXJ0X2FiY192aWV3IGFzIHNlbGVjdCAq IGZyb20gcGFydF9hYmMgd2hlcmUgYiA8PiAnYScgd2l0aCBjaGVjayBvcHRpb247CitwcmVwYXJl IHVwZGF0ZV9wYXJ0X2FiY192aWV3IGFzIHVwZGF0ZSBwYXJ0X2FiY192aWV3IHNldCBiID0gJDIg d2hlcmUgYSA9ICQxIHJldHVybmluZyAqOworZXhwbGFpbiAoY29zdHMgb2ZmKSBleGVjdXRlIHVw ZGF0ZV9wYXJ0X2FiY192aWV3ICgxLCAnZCcpOworZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNfdmll dyAoMSwgJ2QnKTsKK2V4cGxhaW4gKGNvc3RzIG9mZikgZXhlY3V0ZSB1cGRhdGVfcGFydF9hYmNf dmlldyAoMiwgJ2EnKTsKK2V4ZWN1dGUgdXBkYXRlX3BhcnRfYWJjX3ZpZXcgKDIsICdhJyk7Citk ZWFsbG9jYXRlIHVwZGF0ZV9wYXJ0X2FiY192aWV3OworZHJvcCB2aWV3IHBhcnRfYWJjX3ZpZXc7 Citkcm9wIHRhYmxlIHBhcnRfYWJjOwotLSAKMi40My4wCgo= --000000000000f3ab0c06290e160f--