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 1uuenZ-00ElBn-MD for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Sep 2025 22:20:51 +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 1uuenY-00Akrr-RV for pgsql-hackers@arkaria.postgresql.org; Fri, 05 Sep 2025 22:20:49 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uuenX-00Akrj-Q4 for pgsql-hackers@lists.postgresql.org; Fri, 05 Sep 2025 22:20:48 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uuenM-000kPw-1A for pgsql-hackers@lists.postgresql.org; Fri, 05 Sep 2025 22:20:47 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-6188b7550c0so3692466a12.2 for ; Fri, 05 Sep 2025 15:20:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757110835; x=1757715635; darn=lists.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=NVmmZqvZdXDe9WIF3hxVsIdv2OyrC01kMl5odSkCAAk=; b=LIPSRd0SmawZjuMMmXBEv0gLqRq2fmrH9MCWYxzX5qUxk+R4vKbKuCEJWJxIL5pMKK JiP4H72MzKxpDC7sAoXdibGFlunePzJ1SbmrEIDWsKjvpJ6Z6mvEt+g7U0jBaTqszsIn KDmBCaVpy+4dVCuhN8K3KTDfey0WJVksXO/fRRjox1wuw6EdyL+xE5uyzMLdhxUQL53W rOpEm99FNmxCOi3KqSKygW0WEJc/vEGuVvGnlQ3323STzxk3fvXSYf3WgeLEIJf8fGRb zrSH4XKegqvrKI9v8v/ADfrb2zuTb+3LxxDMPE1+A6C/aRJluusVZCL3cO/PQj752A8w Lj7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757110835; x=1757715635; 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=NVmmZqvZdXDe9WIF3hxVsIdv2OyrC01kMl5odSkCAAk=; b=eLR8bncOVYHUQo/axJrhU57oHUjY6HxkPCiALA7q+QOh8V43C2iMx9nvclzKkYL14U 7CmaFf1Rsum2Jx0H3xfrkKK6o+i1yWXEQKww3Cyp90Hc0CWOvhbiOcNpMJvCbU5ifyfv HuufLvuJLJ6NezTbudGFc2Jyg/VE0hA7O2Au3bq0m/leBx+9AQcA1DAp7tki1/ql+PXP 1sALcFcXdHnHyjvqCvGnVieDPC6jg9O8YYvwLL4PbpmgBpDz7I5WZHGyD0T+kVUDqToZ KE9LB/q3HDQvG9OZHuE26b/QGccBGogQMQ9h0/fYONhxbuMJvLXEbvPeKjg/Ck3aNbiu DrxQ== X-Forwarded-Encrypted: i=1; AJvYcCUExhazY5YvBGBPNphpbLAqnjz6ztxw8b3TZagRhVFwd8dbgaoxh92f6eH6D4Qmw+wzhvzGtX6ZPxPefPMD@lists.postgresql.org X-Gm-Message-State: AOJu0YzXngkiRhwFqxPGYZgDrwJ3mlFKVLQRepNV+bLGcf1YrM0oKmfL yNR6mLgE4vJ4QscmDQeU/qqSamLf5QD92xZbsk0jDubv6Lrit+n3EDEzJr65o6RnD+gh026aUh3 fDo0bzsjrsvKOi3p7PVWSI18DfIGlEAKoAH/G X-Gm-Gg: ASbGnctBTjW9koWR5x8+ySbW+JNrSR/WI27/3uaNOd44ZoxvuFOgxoedGmt3MgZjw/x 5KMbMuhHLy2pEcJy3h0LN8xNbbfzkiyTFibzxg4pzceDdd3TQLt63EOxtMtAY64nxPX3xzVfRHz 3LoU01BIQ5e0Jw1W+DOUUDvqSSKXrQufYb0gvLY5V1OnVXYw6ONs0BP5o3Z6ZTOcLgU0R6v8MWM RTvUrs= X-Google-Smtp-Source: AGHT+IG0kUuONUXgOgw32zTwgvlVgi1tjkhjyLOR0gSgdZtSV2jU0fNGRyDVGaqRd6/ouXx0FAMM6B5q5ZveG43DzVs= X-Received: by 2002:a05:6402:2351:b0:61d:3e6a:197d with SMTP id 4fb4d7f45d1cf-62376b43ca4mr492606a12.22.1757110834331; Fri, 05 Sep 2025 15:20:34 -0700 (PDT) MIME-Version: 1.0 References: <87DD95AA-274F-4F4F-BAD9-7738E5B1F905@yandex-team.ru> In-Reply-To: From: Melanie Plageman Date: Fri, 5 Sep 2025 18:20:21 -0400 X-Gm-Features: Ac12FXwGRv0F6inmO0gzurXWscaQusfa6zjOlCIrKsEShMr3iiEZzoxhKBt2Xvo Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Andres Freund Cc: Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Robert Haas , Heikki Linnakangas Content-Type: multipart/mixed; boundary="0000000000001d3a1a063e153f05" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001d3a1a063e153f05 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! On Tue, Sep 2, 2025 at 7:54=E2=80=AFPM Andres Freund w= rote: > > On 2025-09-02 19:11:01 -0400, Melanie Plageman wrote: > > From dd98177294011ee93cac122405516abd89f4e393 Mon Sep 17 00:00:00 2001 > > From: Melanie Plageman > > Date: Wed, 27 Aug 2025 08:50:15 -0400 > > Subject: [PATCH v8 01/22] Remove unneeded VM pin from VM replay I didn't push it yet because I did a new version that actually eliminates the asserts in heap_multi_insert() before calling visibilitymap_set() -- since they are redundant with checks inside visibilitymap_set(). 0001 of attached v9 is what I plan to push, barring any objections. > > From 7c5cb3edf89735eaa8bee9ca46111bd6c554720b Mon Sep 17 00:00:00 2001 > > From: Melanie Plageman > > Date: Wed, 27 Aug 2025 10:07:29 -0400 > > Subject: [PATCH v8 02/22] Add assert and log message to visibilitymap_s= et I pushed this. > From an abstraction POV I don't love that heapam now is responsible for > acquiring and releasing the lock. But that ship already kind of has saile= d, as > heapam.c is already responsible for releasing the vm buffer etc... > > I've wondered about splitting the responsibilities up into multiple > visibilitymap_set_* functions, so that heapam.c wouldn't need to acquire = the > lock and set the LSN. But it's probably not worth it. Yea, I explored heap wrappers coupling heap operations related to setting the VM along with the VM updates [1], but the results weren't appealing. Setting the heap LSN and marking the heap buffer dirty and such happens in a different place in different callers because it is happening as part of the operations that actually end up rendering the page all-visible. And a VM-only helper would literally just acquire and release the lock and set the LSN on the vm page -- which I don't think is worth it. > > + /* > > + * Now read and update the VM block. Even if we skipped updating = the heap > > + * page due to the file being dropped or truncated later in recov= ery, it's > > + * still safe to update the visibility map. Any WAL record that = clears > > + * the visibility map bit does so before checking the page LSN, s= o any > > + * bits that need to be cleared will still be cleared. > > + * > > + * It is only okay to set the VM bits without holding the heap pa= ge lock > > + * because we can expect no other writers of this page. > > + */ > > + if (xlrec->flags & XLH_INSERT_ALL_FROZEN_SET && > > + XLogReadBufferForRedoExtended(record, 1, RBM_ZERO_ON_ERRO= R, false, > > + = &vmbuffer) =3D=3D BLK_NEEDS_REDO) > > + { > > + Relation reln =3D CreateFakeRelcacheEntry(rlocator= ); > > + > > + Assert(visibilitymap_pin_ok(blkno, vmbuffer)); > > + visibilitymap_set_vmbyte(reln, blkno, > > + vmbuffer= , > > + VISIBILI= TYMAP_ALL_VISIBLE | > > + VISIBILI= TYMAP_ALL_FROZEN); > > + > > + /* > > + * It is not possible that the VM was already set for thi= s heap page, > > + * so the vmbuffer must have been modified and marked dir= ty. > > + */ > > + Assert(BufferIsDirty(vmbuffer)); > > How about making visibilitymap_set_vmbyte() return whether it needed to d= o > something? This seems somewhat indirect... It does return the state of the previous bits. But, I am specifically asserting that the buffer is dirty because I am about to set the page LSN. So I don't just care that changes were made, I care that we remembered to mark the buffer dirty. > I think it might be good to encapsulate this code into a helper in > visibilitymap.c, there will be more callers in the subsequent patches. By the end of the set, the different callers have different expectations (some don't expect the buffer to have been dirtied necessarily) and where they do the various related operations is spread out depending on the caller. I just couldn't come up with a helper solution I liked. That being said, I definitely don't think it's needed for this patch (logging setting the VM in xl_heap_multi_insert()). > > +uint8 > > +visibilitymap_set_vmbyte(Relation rel, BlockNumber heapBlk, > > + Buffer vmBuf, uint8 flag= s) > > Why is it named vmbyte? This actually just sets the two bits correspondin= g to > the buffer, not the entire byte. So it seems somewhat misleading to refer= ence > byte. Renamed it to visibilitymap_set_vmbits. > > Instead of emitting a separate xl_heap_visible record for each page tha= t > > is rendered all-visible by vacuum's third phase, include the updates to > > the VM in the already emitted xl_heap_prune record. > > Reading through the change I didn't particularly like that there's anothe= r > optional field in xl_heap_prune, as it seemed liked something that should= be > encoded in flags. Of course there aren't enough flag bits available. Bu= t > that made me look at the rest of the record: Uh, what do we use the reaso= n > field for? As far as I can tell f83d709760d8 added it without introducin= g any > users? It doesn't even seem to be set. yikes, you are right about the "reason" member. Attached 0002 removes it, and I'll go ahead and fix it in the back branches too. I can't fathom how that slipped through the cracks. We do pass the PruneReason for setting the rmgr info about what type of record it is (i.e. if it is one emitted by vacuum phase I, phase III, or on-access pruning). But we don't need or use a separate member.. I went back and tried to figure out what the rationale was, but I couldn't find anything. As for the VM flags being an optional unaligned member -- in v9, I've expanded the flags member to a uint16 to make room for the extra flags. Seems we've been surviving with using up 2 bytes this long. > > @@ -51,10 +52,15 @@ heap_xlog_prune_freeze(XLogReaderState *record) > > (xlrec.flags & (XLHP_HAS_REDIRECTIONS | XLHP_HAS_DEAD_= ITEMS)) =3D=3D 0); > > > > /* > > - * We are about to remove and/or freeze tuples. In Hot Standby m= ode, > > - * ensure that there are no queries running for which the removed= tuples > > - * are still visible or which still consider the frozen xids as r= unning. > > - * The conflict horizon XID comes after xl_heap_prune. > > + * After xl_heap_prune is the optional snapshot conflict horizon. > > + * > > + * In Hot Standby mode, we must ensure that there are no running = queries > > + * which would conflict with the changes in this record. If pruni= ng, that > > + * means we cannot remove tuples still visible to transactions on= the > > + * standby. If freezing, that means we cannot freeze tuples with = xids that > > + * are still considered running on the standby. And for setting t= he VM, we > > + * cannot do so if the page isn't all-visible to all transactions= on the > > + * standby. > > */ > > I'm a bit confused by this new comment - it sounds like we're deciding wh= ether > to remove tuple versions, but that decision has long been made, no? Well, the comment is a revision of a comment that was already there on essentially why replaying this record could cause recovery conflicts. It mentioned pruning and freezing, so I expanded it to mention setting the VM. Taking into account your confusion, I tried rewording it in attached v9. > > + if (heap_page_is_all_visible_except_lpdead(vacrel->rel, buffer, > > + = vacrel->cutoffs.OldestXmin, > > + = deadoffsets, num_offsets, > > + = &all_frozen, &visibility_cutoff_xid, > > + = &vacrel->offnum)) > > I am rather confused - we never can set all-visible if there are any LP_D= EAD > items left. If the idea is that we are removing the LP_DEAD items in > lazy_vacuum_heap_page() - what guarantees that all LP_DEAD items are bein= g > removed? Couldn't some tuples get marked LP_DEAD by on-access pruning, af= ter > vacuum visited the page and collected dead items? > > Ugh, I see - it works because we pass in the set of dead items. I think = that > makes the name *really* misleading, it's not except LP_DEAD, it's except = the > offsets passed in, no? > > But then you actually check that the set of dead items didn't change - wh= at > guarantees that? So, I pass in the deadoffsets we got from the TIDStore. If the only dead items on the page are exactly those dead items, then the page will be all-visible as soon as we set those LP_UNUSED -- which we do unconditionally. And we have the lock on the page, so no one can on-access prune and make new dead items while we are in lazy_vacuum_heap_page(). Given your confusion, I've refactored this and used a different approach -- I explicitly check the passed-in deadoffsets array when I encounter a dead item and see if it is there. That should hopefully make it more clear. > I didn't look at the later patches, except that I did notice this: <--snip--> > Why are we manually pinning the vm buffer here? Shouldn't the xlog machin= ery > have done so, as you noticed in one of the early on patches? Fixed. Thanks! - Melanie [1] [1] https://www.postgresql.org/message-id/flat/CAAKRu_Yj%3DyrL%2BgGGsqf= YVQcYn7rDp6hDeoF1vN453JDp8dEY%2Bw%40mail.gmail.com#94602c599abdc8dfc5e438bd= 24bd8d50 --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0002-Remove-unused-xl_heap_prune-member-reason.patch" Content-Disposition: attachment; filename="v9-0002-Remove-unused-xl_heap_prune-member-reason.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhg51 RnJvbSBkZjliODdkMGExYTk3M2MwYzY1NWY1YmE4NTg0ODU3OTVmZjk4OTUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMgU2VwIDIwMjUgMTU6MDI6NTggLTA0MDAKU3ViamVjdDogW1BB VENIIHY5IDAyLzIyXSBSZW1vdmUgdW51c2VkIHhsX2hlYXBfcHJ1bmUgbWVtYmVyLCByZWFzb24K CmY4M2Q3MDk3NjBkOCByZWZhY3RvcmVkIHhsX2hlYXBfcHJ1bmUgYW5kIGFkZGVkIGFuIHVudXNl ZCBtZW1iZXIsCnJlYXNvbi4gV2hpbGUgUHJ1bmVSZWFzb24gaXMgdXNlZCB3aGVuIGNvbnN0cnVj dGluZyB0aGlzIFdBTCByZWNvcmQgdG8Kc2V0IHRoZSBXQUwgcmVjb3JkIGRlZmluaXRpb24sIGl0 IGRvZXNuJ3QgbmVlZCB0byBiZSBzdG9yZWQgaW4gYQpzZXBhcmF0ZSBmaWVsZCBpbiB0aGUgcmVj b3JkLiBSZW1vdmUgaXQuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1h bkBnbWFpbC5jb20+ClJlcG9ydGVkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwu ZGU+CgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL3R2dnRmb3h6NXlrcHNjdHhqYnp4 ZzNubGRuemZjN2dlcGxydDJ6MnM1NHBtZ3RvMjd5JTQwaGJpanNuZGlmdTQ1Ci0tLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggfCAxIC0KIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0 aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCAyNzdkZjZiM2NmMC4uZDRjMDYy NWI2MzIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBi L3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC0yODQsNyArMjg0LDYgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9w cnVuZQogewotCXVpbnQ4CQlyZWFzb247CiAJdWludDgJCWZsYWdzOwogCiAJLyoKLS0gCjIuNDMu MAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v9-0005-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgg4 RnJvbSA4MWIxMzQzNDZjMWE5ODEzODJkMWViOTE1NDcyYWEzZjI2YmIzNTg2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwNS8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJSUkKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSB4bF9oZWFwX3Zpc2libGUgcmVj b3JkIGZvciBlYWNoIHBhZ2UgdGhhdAppcyByZW5kZXJlZCBhbGwtdmlzaWJsZSBieSB2YWN1dW0n cyB0aGlyZCBwaGFzZSwgaW5jbHVkZSB0aGUgdXBkYXRlcyB0bwp0aGUgVk0gaW4gdGhlIGFscmVh ZHkgZW1pdHRlZCB4bF9oZWFwX3BydW5lIHJlY29yZC4KClRoZSB2aXNpYmlsaXR5bWFwIGJpdHMg YXJlIHN0b3JlZCBpbiB0aGUgZmxhZ3MgbWVtYmVyIG9mIHRoZQp4bF9oZWFwX3BydW5lIHJlY29y ZC4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ClJldmll d2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6ZWwuZGU+CkRpc2N1c3Npb246IGh0 dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFE aDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgfCAxNDUgKysrKysrKysrKysrKysrKysrLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgfCAgNjYgKysrKysrKystLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgfCAxNjQgKysrKysrKysrKysrKysr KystLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgfCAgIDcg Ky0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgIHwgICA5ICsrCiBzcmMv aW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCAgICAgICB8ICAzNiArKysrLS0KIDYgZmlsZXMg Y2hhbmdlZCwgMzMwIGluc2VydGlvbnMoKyksIDk3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDA4MjBmN2QwNTJkLi4xMWMxMTkyOWVkOSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0zNSw3ICszNSw5IEBAIGhlYXBf eGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQnVmZmVyCQlidWZm ZXI7CiAJUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7CiAJQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExv Z1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwor CXVpbnQ4CQl2bWZsYWdzID0gMDsKKwlTaXplCQlmcmVlc3BhY2UgPSAwOwogCiAJWExvZ1JlY0dl dEJsb2NrVGFnKHJlY29yZCwgMCwgJnJsb2NhdG9yLCBOVUxMLCAmYmxrbm8pOwogCW1lbWNweSgm eGxyZWMsIG1haW5kYXRhcHRyLCBTaXplT2ZIZWFwUHJ1bmUpOwpAQCAtNTAsMTEgKzUyLDE3IEBA IGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJQXNzZXJ0 KCh4bHJlYy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwIHx8CiAJCSAgICh4bHJlYy5m bGFncyAmIChYTEhQX0hBU19SRURJUkVDVElPTlMgfCBYTEhQX0hBU19ERUFEX0lURU1TKSkgPT0g MCk7CiAKKwl2bWZsYWdzID0geGxyZWMuZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7 CisKIAkvKgotCSAqIFdlIGFyZSBhYm91dCB0byByZW1vdmUgYW5kL29yIGZyZWV6ZSB0dXBsZXMu ICBJbiBIb3QgU3RhbmRieSBtb2RlLAotCSAqIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBxdWVy aWVzIHJ1bm5pbmcgZm9yIHdoaWNoIHRoZSByZW1vdmVkIHR1cGxlcwotCSAqIGFyZSBzdGlsbCB2 aXNpYmxlIG9yIHdoaWNoIHN0aWxsIGNvbnNpZGVyIHRoZSBmcm96ZW4geGlkcyBhcyBydW5uaW5n LgotCSAqIFRoZSBjb25mbGljdCBob3Jpem9uIFhJRCBjb21lcyBhZnRlciB4bF9oZWFwX3BydW5l LgorCSAqIEFmdGVyIHhsX2hlYXBfcHJ1bmUgaXMgdGhlIG9wdGlvbmFsIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24uCisJICoKKwkgKiBJbiBIb3QgU3RhbmRieSBtb2RlLCB3ZSBtdXN0IGVuc3Vy ZSB0aGF0IHRoZXJlIGFyZSBubyBydW5uaW5nIHF1ZXJpZXMKKwkgKiB3aGljaCB3b3VsZCBjb25m bGljdCB3aXRoIHRoZSBjaGFuZ2VzIGluIHRoaXMgcmVjb3JkLiBUaGF0IG1lYW5zIHdlCisJICog Y2FuJ3QgcmVwbGF5IHRoaXMgcmVjb3JkIGlmIGl0IHJlbW92ZXMgdHVwbGVzIHRoYXQgYXJlIHN0 aWxsIHZpc2libGUgdG8KKwkgKiB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5kYnksIGZyZWV6ZSB0 dXBsZXMgd2l0aCB4aWRzIHRoYXQgYXJlIHN0aWxsCisJICogY29uc2lkZXJlZCBydW5uaW5nIG9u IHRoZSBzdGFuZGJ5LCBvciBzZXQgYSBwYWdlIGFzIGFsbC12aXNpYmxlIGluIHRoZQorCSAqIFZN IGlmIGl0IGlzbid0IGFsbC12aXNpYmxlIHRvIGFsbCB0cmFuc2FjdGlvbnMgb24gdGhlIHN0YW5k YnkuCiAJICovCiAJaWYgKCh4bHJlYy5mbGFncyAmIFhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04p ICE9IDApCiAJewpAQCAtNzEsMTIgKzc5LDEyIEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExv Z1JlYWRlclN0YXRlICpyZWNvcmQpCiAJfQogCiAJLyoKLQkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1w YWdlIGltYWdlLCByZXN0b3JlIGl0IGFuZCB3ZSdyZSBkb25lLgorCSAqIElmIHdlIGhhdmUgYSBm dWxsLXBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2ssIHJlc3RvcmUgaXQgYW5kIHdlJ3JlCisJ ICogZG9uZSB3aXRoIHRoZSBoZWFwIGJsb2NrLgogCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVm ZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX05PUk1BTCwKLQkJCQkJCQkJCQkgICAo eGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgIT0gMCwKLQkJCQkJCQkJCQkgICAmYnVm ZmVyKTsKLQlpZiAoYWN0aW9uID09IEJMS19ORUVEU19SRURPKQorCWlmIChYTG9nUmVhZEJ1ZmZl ckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsCisJCQkJCQkJCQkgICh4bHJl Yy5mbGFncyAmIFhMSFBfQ0xFQU5VUF9MT0NLKSAhPSAwLAorCQkJCQkJCQkJICAmYnVmZmVyKSA9 PSBCTEtfTkVFRFNfUkVETykKIAl7CiAJCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZl cik7CiAJCU9mZnNldE51bWJlciAqcmVkaXJlY3RlZDsKQEAgLTg5LDYgKzk3LDkgQEAgaGVhcF94 bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJU2l6ZQkJZGF0YWxl bjsKIAkJeGxocF9mcmVlemVfcGxhbiAqcGxhbnM7CiAJCU9mZnNldE51bWJlciAqZnJ6X29mZnNl dHM7CisJCWJvb2wJCWRvX3BydW5lOworCQlib29sCQltYXJrX2J1ZmZlcl9kaXJ0eTsKKwkJYm9v bAkJc2V0X2hlYXBfbHNuOwogCQljaGFyCSAgICpkYXRhcHRyID0gWExvZ1JlY0dldEJsb2NrRGF0 YShyZWNvcmQsIDAsICZkYXRhbGVuKTsKIAogCQloZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVf YW5kX2ZyZWV6ZShkYXRhcHRyLCB4bHJlYy5mbGFncywKQEAgLTk3LDExICsxMDgsMTggQEAgaGVh cF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCQkJCQkJCQkJ ICAgJm5kZWFkLCAmbm93ZGVhZCwKIAkJCQkJCQkJCQkJICAgJm51bnVzZWQsICZub3d1bnVzZWQp OwogCisJCWRvX3BydW5lID0gbnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2Vk ID4gMDsKKwkJc2V0X2hlYXBfbHNuID0gbWFya19idWZmZXJfZGlydHkgPSBkb19wcnVuZSB8fCBu cGxhbnMgPiAwOworCisJCS8qIEVuc3VyZSB0aGUgcmVjb3JkIGRvZXMgc29tZXRoaW5nICovCisJ CUFzc2VydChkb19wcnVuZSB8fCBucGxhbnMgPiAwIHx8CisJCQkgICB2bWZsYWdzICYgVklTSUJJ TElUWU1BUF9WQUxJRF9CSVRTKTsKKwogCQkvKgogCQkgKiBVcGRhdGUgYWxsIGxpbmUgcG9pbnRl cnMgcGVyIHRoZSByZWNvcmQsIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbgogCQkgKiBpZiBuZWVk ZWQuCiAJCSAqLwotCQlpZiAobnJlZGlyZWN0ZWQgPiAwIHx8IG5kZWFkID4gMCB8fCBudW51c2Vk ID4gMCkKKwkJaWYgKGRvX3BydW5lKQogCQkJaGVhcF9wYWdlX3BydW5lX2V4ZWN1dGUoYnVmZmVy LAogCQkJCQkJCQkJKHhscmVjLmZsYWdzICYgWExIUF9DTEVBTlVQX0xPQ0spID09IDAsCiAJCQkJ CQkJCQlyZWRpcmVjdGVkLCBucmVkaXJlY3RlZCwKQEAgLTEzOCwzNiArMTU2LDExNyBAQCBoZWFw X3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkvKiBUaGVyZSBz aG91bGQgYmUgbm8gbW9yZSBkYXRhICovCiAJCUFzc2VydCgoY2hhciAqKSBmcnpfb2Zmc2V0cyA9 PSBkYXRhcHRyICsgZGF0YWxlbik7CiAKKwkJLyoKKwkJICogTm93IHNldCBQRF9BTExfVklTSUJM RSwgaWYgcmVxdWlyZWQuIFdlJ2xsIG9ubHkgZG8gdGhpcyBpZiB3ZSBhcmUKKwkJICogYWxzbyBn b2luZyB0byBzZXQgYml0cyBpbiB0aGUgVk0gbGF0ZXIuCisJCSAqCisJCSAqIFdlIG11c3QgbmV2 ZXIgZW5kIHVwIHdpdGggdGhlIFZNIGJpdCBzZXQgYW5kIHRoZSBwYWdlLWxldmVsCisJCSAqIFBE X0FMTF9WSVNJQkxFIGJpdCBjbGVhci4gSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCBhIHN1YnNlcXVl bnQgcGFnZQorCQkgKiBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgVk0gYml0 LgorCQkgKi8KKwkJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSAmJiAh UGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKKwkJeworCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7 CisKKwkJCS8qCisJCQkgKiBJZiB0aGUgb25seSBjaGFuZ2UgdG8gdGhlIGhlYXAgcGFnZSBpcyBz ZXR0aW5nIFBEX0FMTF9WSVNJQkxFLAorCQkJICogd2UgY2FuIGF2b2lkIHNldHRpbmcgdGhlIHBh Z2UgTFNOIHVubGVzcyBjaGVja3N1bXMgb3IKKwkJCSAqIHdhbF9sb2dfaGludHMgYXJlIGVuYWJs ZWQuCisJCQkgKi8KKwkJCXNldF9oZWFwX2xzbiA9IFhMb2dIaW50Qml0SXNOZWVkZWQoKSA/IHRy dWUgOiBzZXRfaGVhcF9sc247CisJCQltYXJrX2J1ZmZlcl9kaXJ0eSA9IHRydWU7CisJCX0KKwog CQkvKgogCQkgKiBOb3RlOiB3ZSBkb24ndCB3b3JyeSBhYm91dCB1cGRhdGluZyB0aGUgcGFnZSdz IHBydW5hYmlsaXR5IGhpbnRzLgogCQkgKiBBdCB3b3JzdCB0aGlzIHdpbGwgY2F1c2UgYW4gZXh0 cmEgcHJ1bmUgY3ljbGUgdG8gb2NjdXIgc29vbi4KIAkJICovCiAKLQkJUGFnZVNldExTTihwYWdl LCBsc24pOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKG1hcmtfYnVmZmVyX2Rp cnR5KQorCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChzZXRfaGVhcF9sc24pCisJ CQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7CiAJfQogCiAJLyoKLQkgKiBJZiB3ZSByZWxlYXNlZCBh bnkgc3BhY2Ugb3IgbGluZSBwb2ludGVycywgdXBkYXRlIHRoZSBmcmVlIHNwYWNlIG1hcC4KKwkg KiBJZiB3ZSByZWxlYXNlZCBhbnkgc3BhY2Ugb3IgbGluZSBwb2ludGVycyBvciB3aWxsIGJlIHNl dHRpbmcgYSBwYWdlIGluCisJICogdGhlIHZpc2liaWxpdHkgbWFwLCBtZWFzdXJlIHRoZSBwYWdl J3MgZnJlZXNwYWNlIHRvIGxhdGVyIHVwZGF0ZSB0aGUKKwkgKiBmcmVlc3BhY2UgbWFwLgorCSAq CisJICogRXZlbiBpZiB3ZSBhcmUganVzdCB1cGRhdGluZyB0aGUgVk0gKGFuZCB0aHVzIG5vdCBm cmVlaW5nIHVwIGFueQorCSAqIHNwYWNlKSwgd2UnbGwgc3RpbGwgdXBkYXRlIHRoZSBGU00gZm9y IHRoaXMgcGFnZS4gU2luY2UgRlNNIGlzIG5vdAorCSAqIFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBk YXRlZCBoZXVyaXN0aWNhbGx5LCBpdCBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbgorCSAqIHN0YW5k YnlzLiAgSWYgdGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQgYW5kIHJ1bnMgVkFDVVVNLCBp dCB3aWxsCisJICogc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UgZmlndXJlcyBm b3IgcGFnZXMgdGhhdCBiZWNhbWUKKwkgKiBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVw ZW5kaW5nIG9uIHRoZSB2YWN1dW0gbW9kZSwpIHdoaWNoIGlzCisJICogdHJvdWJsZXNvbWUgd2hl biBGcmVlU3BhY2VNYXBWYWN1dW0gcHJvcGFnYXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlCisJICog c3BhY2UgdmFsdWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7IGxhdGVyIGluc2VydGVycyB0cnkgdG8g dXNlIHN1Y2ggcGFnZXMKKwkgKiBvbmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleSBhcmUgdW51c2Fi bGUuICBUaGlzIGNhbiBjYXVzZSBsb25nIHN0YWxscworCSAqIHdoZW4gdGhlcmUgYXJlIG1hbnkg c3VjaCBwYWdlcy4KKwkgKgorCSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGlu ZyBGU00ncyBpZGVhIGFib3V0IGEgcGFnZSB0aGF0IGlzCisJICogYmVjb21pbmcgYWxsLXZpc2li bGUgb3IgYWxsLWZyb3plbi4KIAkgKgogCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwt cGFnZSBpbWFnZSBiZWluZyBhcHBsaWVkLCBzaW5jZSB0aGUgRlNNCiAJICogZGF0YSBpcyBub3Qg aW4gdGhlIHBhZ2UgYW55d2F5LgorCSAqCisJICogV2Ugd2FudCB0byBhdm9pZCBob2xkaW5nIGFu IGV4Y2x1c2l2ZSBsb2NrIG9uIHRoZSBoZWFwIGJ1ZmZlciB3aGlsZQorCSAqIGRvaW5nIElPIChl aXRoZXIgb2YgdGhlIEZTTSBvciB0aGUgVk0pLCBzbyB3ZSdsbCByZWxlYXNlIHRoZSBsb2NrIG9u CisJICogdGhlIGhlYXAgYnVmZmVyIGJlZm9yZSBkb2luZyBlaXRoZXIuCiAJICovCiAJaWYgKEJ1 ZmZlcklzVmFsaWQoYnVmZmVyKSkKIAl7Ci0JCWlmICh4bHJlYy5mbGFncyAmIChYTEhQX0hBU19S RURJUkVDVElPTlMgfAotCQkJCQkJICAgWExIUF9IQVNfREVBRF9JVEVNUyB8Ci0JCQkJCQkgICBY TEhQX0hBU19OT1dfVU5VU0VEX0lURU1TKSkKLQkJewotCQkJU2l6ZQkJZnJlZXNwYWNlID0gUGFn ZUdldEhlYXBGcmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKKwkJaWYgKCh4bHJlYy5m bGFncyAmIChYTEhQX0hBU19SRURJUkVDVElPTlMgfAorCQkJCQkJCVhMSFBfSEFTX0RFQURfSVRF TVMgfAorCQkJCQkJCVhMSFBfSEFTX05PV19VTlVTRURfSVRFTVMpKSB8fAorCQkJdm1mbGFncyAm IFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykKKwkJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJl ZVNwYWNlKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSk7CisKKwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihi dWZmZXIpOworCX0KKworCS8qCisJICogUmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4gRXZl biBpZiB3ZSBza2lwcGVkIHVwZGF0aW5nIHRoZSBoZWFwIHBhZ2UKKwkgKiBkdWUgdG8gdGhlIGZp bGUgYmVpbmcgZHJvcHBlZCBvciB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0J3MKKwkg KiBzdGlsbCBzYWZlIHRvIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29y ZCB0aGF0IGNsZWFycworCSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUg Y2hlY2tpbmcgdGhlIHBhZ2UgTFNOLCBzbyBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBj bGVhcmVkIHdpbGwgc3RpbGwgYmUgY2xlYXJlZC4KKwkgKgorCSAqIE5vdGUgdGhhdCBpdCBpcyBf b25seV8gb2theSB0aGF0IHdlIGRvIG5vdCBob2xkIGEgbG9jayBvbiB0aGUgaGVhcCBwYWdlCisJ ICogYmVjYXVzZSB3ZSBhcmUgaW4gcmVjb3ZlcnkgYW5kIGNhbiBleHBlY3Qgbm8gb3RoZXIgd3Jp dGVycyB0byBjbGVhcgorCSAqIFBEX0FMTF9WSVNJQkxFIGJlZm9yZSB3ZSBhcmUgYWJsZSB0byB1 cGRhdGUgdGhlIFZNLgorCSAqLworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTICYmCisJCVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwKKwkJCQkJ CQkJCSAgUkJNX1pFUk9fT05fRVJST1IsCisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICAm dm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQorCXsKKwkJUGFnZQkJdm1wYWdlID0gQnVmZmVy R2V0UGFnZSh2bWJ1ZmZlcik7CisJCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKKwkJUmVsYXRpb24J cmVsbiA9IENyZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKIAotCQkJVW5sb2NrUmVs ZWFzZUJ1ZmZlcihidWZmZXIpOworCQkvKiBpbml0aWFsaXplIHRoZSBwYWdlIGlmIGl0IHdhcyBy ZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkKKwkJCVBhZ2VJbml0KHZt cGFnZSwgQkxDS1NaLCAwKTsKKworCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CiAKLQkJCVhMb2dSZWNvcmRQYWdl V2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFjZSk7CisJCS8qIE9ubHkgc2V0 IFZNIHBhZ2UgTFNOIGlmIHdlIG1vZGlmaWVkIHRoZSBwYWdlICovCisJCWlmIChvbGRfdm1iaXRz ICE9IHZtZmxhZ3MpCisJCXsKKwkJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CisJ CQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCBsc24pOwogCQl9Ci0JCWVsc2UK LQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKKworCQlGcmVlRmFrZVJlbGNhY2hlRW50 cnkocmVsbik7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQodm1idWZmZXIpKQorCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKHZtYnVmZmVyKTsKKworCWlmIChmcmVlc3BhY2UgPiAwKQorCQlYTG9nUmVj b3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBmcmVlc3BhY2UpOwogfQogCiAv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA3ZWJkMjJmMDBhMy4uZjBiMzNk MWI2OTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMSw2ICsyMSw3IEBA CiAjaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgog I2luY2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCiAjaW5jbHVkZSAiZXhl Y3V0b3IvaW5zdHJ1bWVudC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgpAQCAtODM1LDYgKzgz Niw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUubGF0ZXN0X3hpZF9yZW1vdmVk OwogCiAJCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsCisJCQkJ CQkJCQkgIEludmFsaWRCdWZmZXIsIDAsIGZhbHNlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQs CiAJCQkJCQkJCQkgIHRydWUsIHJlYXNvbiwKIAkJCQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4sIHBy c3RhdGUubmZyb3plbiwKQEAgLTIwMzAsMTQgKzIwMzIsMTggQEAgaGVhcF9sb2dfZnJlZXplX3Bs YW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICoKICAqIFRoaXMgaXMg dXNlZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgcGFnZSBtYWludGVuYW5jZSBvcGVyYXRpb25zOgog ICoKLSAqIC0gUGFnZSBwcnVuaW5nLCBpbiBWQUNVVU0ncyAxc3QgcGFzcyBvciBvbiBhY2Nlc3M6 IFNvbWUgaXRlbXMgYXJlCisgKiAtIFBhZ2UgcHJ1bmluZywgaW4gdmFjdXVtIHBoYXNlIEkgb3Ig b24tYWNjZXNzOiBTb21lIGl0ZW1zIGFyZQogICogICByZWRpcmVjdGVkLCBzb21lIG1hcmtlZCBk ZWFkLCBhbmQgc29tZSByZW1vdmVkIGFsdG9nZXRoZXIuCiAgKgotICogLSBGcmVlemluZzogSXRl bXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJy4KKyAqIC0gRnJlZXppbmc6IER1cmluZyB2YWN1dW0g cGhhc2UgSSwgaXRlbXMgYXJlIG1hcmtlZCBhcyAnZnJvemVuJwogICoKLSAqIC0gVmFjdXVtLCAy bmQgcGFzczogSXRlbXMgdGhhdCBhcmUgYWxyZWFkeSBMUF9ERUFEIGFyZSBtYXJrZWQgYXMgdW51 c2VkLgorICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBh cmUgYWxyZWFkeSBMUF9ERUFEIGFyZQorICogICBtYXJrZWQgYXMgdW51c2VkLgogICoKLSAqIFRo ZXkgaGF2ZSBlbm91Z2ggY29tbW9uYWxpdGllcyB0aGF0IHdlIHVzZSBhIHNpbmdsZSBXQUwgcmVj b3JkIGZvciB0aGVtCisgKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZSBJSUksIHRo ZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl bi4KKyAqCisgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBh IHNpbmdlbCBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCiAgKgogICogSWYgcmVwbGF5aW5n IHRoZSByZWNvcmQgcmVxdWlyZXMgYSBjbGVhbnVwIGxvY2ssIHBhc3MgY2xlYW51cF9sb2NrID0g dHJ1ZS4KQEAgLTIwNDUsMTIgKzIwNTEsMjMgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1 cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICogcmVwbGF5aW5nICd1bnVzZWQnIGl0 ZW1zIGRlcGVuZHMgb24gd2hldGhlciB0aGV5IHdlcmUgYWxsIHByZXZpb3VzbHkgbWFya2VkCiAg KiBhcyBkZWFkLgogICoKKyAqIElmIHRoZSBWTSBpcyBiZWluZyB1cGRhdGVkLCB2bWZsYWdzIHdp bGwgY29udGFpbiB0aGUgYml0cyB0byBzZXQuIEluIHRoaXMKKyAqIGNhc2UsIHZtYnVmZmVyIHNo b3VsZCBhbHJlYWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3Vs ZAorICogc3RpbGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCisgKgorICogc2V0X3BkX2FsbF92aXMg aW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FMTF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRh dGUKKyAqIHRoZSBwYWdlIExTTiB3aGVuIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFi bGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAorICogcHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUg cGFnZS4KKyAqCiAgKiBOb3RlOiBUaGlzIGZ1bmN0aW9uIHNjcmliYmxlcyBvbiB0aGUgJ2Zyb3pl bicgYXJyYXkuCiAgKgogICogTm90ZTogVGhpcyBpcyBjYWxsZWQgaW4gYSBjcml0aWNhbCBzZWN0 aW9uLCBzbyBjYXJlZnVsIHdoYXQgeW91IGRvIGhlcmUuCiAgKi8KIHZvaWQKIGxvZ19oZWFwX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkg IEJ1ZmZlciB2bWJ1ZmZlciwKKwkJCQkJCSAgdWludDggdm1mbGFncywKKwkJCQkJCSAgYm9vbCBz ZXRfcGRfYWxsX3ZpcywKIAkJCQkJCSAgVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQsCiAJCQkJ CQkgIGJvb2wgY2xlYW51cF9sb2NrLAogCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCkBAIC0y MDYyLDYgKzIwNzksNyBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCXhsX2hlYXBfcHJ1bmUgeGxyZWM7CiAJWExvZ1JlY1B0cgly ZWNwdHI7CiAJdWludDgJCWluZm87CisJdWludDgJCXJlZ2J1Zl9mbGFnczsKIAogCS8qIFRoZSBm b2xsb3dpbmcgbG9jYWwgdmFyaWFibGVzIGhvbGQgZGF0YSByZWdpc3RlcmVkIGluIHRoZSBXQUwg cmVjb3JkOiAqLwogCXhsaHBfZnJlZXplX3BsYW4gcGxhbnNbTWF4SGVhcFR1cGxlc1BlclBhZ2Vd OwpAQCAtMjA3MCw4ICsyMDg4LDIxIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9wcnVuZV9pdGVtcyBkZWFkX2l0ZW1z OwogCXhsaHBfcHJ1bmVfaXRlbXMgdW51c2VkX2l0ZW1zOwogCU9mZnNldE51bWJlciBmcnpfb2Zm c2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJYm9vbAkJZG9fcHJ1bmUgPSBucmVkaXJlY3Rl ZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCisJQXNzZXJ0KCh2bWZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKKwl4bHJlYy5mbGFncyA9IHZt ZmxhZ3M7CiAKLQl4bHJlYy5mbGFncyA9IDA7CisJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5E QVJEOworCisJLyoKKwkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJIGlmIHRoZSBvbmx5IG1vZGlmaWNh dGlvbiB3ZSBhcmUgbWFraW5nIHRvIHRoZSBoZWFwCisJICogcGFnZSBpcyB0byBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBkaXNhYmxlZC4KKwkgKi8K KwlpZiAoIWRvX3BydW5lICYmCisJCW5mcm96ZW4gPT0gMCAmJgorCQkoIXNldF9wZF9hbGxfdmlz IHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCQlyZWdidWZfZmxhZ3MgfD0gUkVHQlVGX05P X0lNQUdFOwogCiAJLyoKIAkgKiBQcmVwYXJlIGRhdGEgZm9yIHRoZSBidWZmZXIuICBUaGUgYXJy YXlzIGFyZSBub3QgYWN0dWFsbHkgaW4gdGhlCkBAIC0yMDc5LDcgKzIxMTAsMTEgQEAgbG9nX2hl YXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkg KiBwYWdlIGltYWdlLCB0aGUgYXJyYXlzIGNhbiBiZSBvbWl0dGVkLgogCSAqLwogCVhMb2dCZWdp bkluc2VydCgpOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigwLCBidWZmZXIsIFJFR0JVRl9TVEFOREFS RCk7CisJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgcmVnYnVmX2ZsYWdzKTsKKworCWlm ICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKQorCQlYTG9nUmVnaXN0ZXJCdWZm ZXIoMSwgdm1idWZmZXIsIDApOworCiAJaWYgKG5mcm96ZW4gPiAwKQogCXsKIAkJaW50CQkJbnBs YW5zOwpAQCAtMjE2OCw1ICsyMjAzLDIyIEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJfQogCXJlY3B0ciA9IFhMb2dJbnNlcnQo Uk1fSEVBUDJfSUQsIGluZm8pOwogCi0JUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKGJ1ZmZlciks IHJlY3B0cik7CisJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJewor CQlBc3NlcnQoQnVmZmVySXNEaXJ0eSh2bWJ1ZmZlcikpOworCQlQYWdlU2V0TFNOKEJ1ZmZlckdl dFBhZ2Uodm1idWZmZXIpLCByZWNwdHIpOworCX0KKworCS8qCisJICogSWYgcHJ1bmluZyBvciBm cmVlemluZyB0dXBsZXMgb3Igc2V0dGluZyB0aGUgcGFnZSBhbGwtdmlzaWJsZSB3aGVuCisJICog Y2hlY2tzdW1zIG9yIHdhbF9oaW50X2JpdHMgYXJlIGVuYWJsZWQsIHdlIG11c3QgYnVtcCB0aGUg TFNOLiBUb3JuCisJICogcGFnZXMgYXJlIHBvc3NpYmxlIGlmIHdlIHVwZGF0ZSBQRF9BTExfVklT SUJMRSB3aXRob3V0IGJ1bXBpbmcgdGhlIExTTiwKKwkgKiBidXQgdGhpcyBpcyBkZWVtZWQgb2th eSBmb3IgcGFnZSBoaW50IHVwZGF0ZXMuCisJICovCisJaWYgKGRvX3BydW5lIHx8IG5mcm96ZW4g PiAwIHx8CisJCShzZXRfcGRfYWxsX3ZpcyAmJiBYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCXsK KwkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkoYnVmZmVyKSk7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0 UGFnZShidWZmZXIpLCByZWNwdHIpOworCX0KIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA3ZjZmNjg0YmM2My4uYTUwNjUyY2E1YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQ2MywxMSArNDYzLDEzIEBAIHN0YXRpYyB2b2lkIGRlYWRfaXRl bXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIE9mZnNldE51bWJl ciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19y ZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19jbGVhbnVw KExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xk ZXN0WG1pbiwKLQkJCQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJCQkJIFRyYW5zYWN0 aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxv Z2dpbmdfb2ZmbnVtKTsKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJs ZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluLAorCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJ CQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKKwkJCQkJCQkJCQkgICBib29sICphbGxfZnJvemVu LAorCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJ CQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIHN0YXRpYyB2b2lkIHVw ZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZv aWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCB1cGRhdGVf dmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAtMjg0Niw4ICsyODQ4LDEx IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCU9mZnNldE51bWJlciB1bnVzZWRbTWF4SGVhcFR1cGxl c1BlclBhZ2VdOwogCWludAkJCW51bnVzZWQgPSAwOwogCVRyYW5zYWN0aW9uSWQgdmlzaWJpbGl0 eV9jdXRvZmZfeGlkOworCVRyYW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5z YWN0aW9uSWQ7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlMVlNhdmVkRXJySW5mbyBzYXZlZF9lcnJf aW5mbzsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJYm9vbAkJc2V0X3BkX2FsbF92aXMgPSBmYWxz ZTsKIAogCUFzc2VydCh2YWNyZWwtPmRvX2luZGV4X3ZhY3V1bWluZyk7CiAKQEAgLTI4NTgsNiAr Mjg2MywyMCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9j a051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkgVkFDVVVNX0VSUkNCX1BIQVNF X1ZBQ1VVTV9IRUFQLCBibGtubywKIAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKKwlp ZiAoaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCisJ CQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgIGRlYWRv ZmZzZXRzLCBudW1fb2Zmc2V0cywKKwkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0 eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKKwl7CisJCXZtZmxh Z3MgfD0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJaWYgKGFsbF9mcm96ZW4pCisJCXsK KwkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJQXNzZXJ0KCFUcmFu c2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQpKTsKKwkJfQorCX0KKwogCVNU QVJUX0NSSVRfU0VDVElPTigpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1fb2Zmc2V0czsg aSsrKQpAQCAtMjg3Nyw2ICsyODk2LDE4IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0 YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCS8qIEF0dGVt cHQgdG8gdHJ1bmNhdGUgbGluZSBwb2ludGVyIGFycmF5IG5vdyAqLwogCVBhZ2VUcnVuY2F0ZUxp bmVQb2ludGVyQXJyYXkocGFnZSk7CiAKKwlpZiAoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpICE9IDApCisJeworCQlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwor CQlzZXRfcGRfYWxsX3ZpcyA9IHRydWU7CisJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQlM b2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQl2aXNpYmlsaXR5 bWFwX3NldF92bWJpdHModmFjcmVsLT5yZWwsCisJCQkJCQkJCSBibGtubywKKwkJCQkJCQkJIHZt YnVmZmVyLCB2bWZsYWdzKTsKKwkJY29uZmxpY3RfeGlkID0gdmlzaWJpbGl0eV9jdXRvZmZfeGlk OworCX0KKwogCS8qCiAJICogTWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdlIHdyaXRlIFdBTC4K IAkgKi8KQEAgLTI4ODYsNyArMjkxNywxMCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxT dGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVs YXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJl ZXplKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0JCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQs CisJCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJCQkJICBzZXRf cGRfYWxsX3ZpcywKKwkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCSAgZmFsc2UsCS8q IG5vIGNsZWFudXAgbG9jayByZXF1aXJlZCAqLwogCQkJCQkJCQkgIFBSVU5FX1ZBQ1VVTV9DTEVB TlVQLAogCQkJCQkJCQkgIE5VTEwsIDAsCS8qIGZyb3plbiAqLwpAQCAtMjg5NSwzOSArMjkyOSwx MiBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJl ciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJICB1bnVzZWQsIG51bnVzZWQpOwogCX0K IAotCS8qCi0JICogRW5kIGNyaXRpY2FsIHNlY3Rpb24sIHNvIHdlIHNhZmVseSBjYW4gZG8gdmlz aWJpbGl0eSB0ZXN0cyAod2hpY2gKLQkgKiBwb3NzaWJseSBuZWVkIHRvIHBlcmZvcm0gSU8gYW5k IGFsbG9jYXRlIG1lbW9yeSEpLiBJZiB3ZSBjcmFzaCBub3cgdGhlCi0JICogcGFnZSAoaW5jbHVk aW5nIHRoZSBjb3JyZXNwb25kaW5nIHZtIGJpdCkgbWlnaHQgbm90IGJlIG1hcmtlZCBhbGwKLQkg KiB2aXNpYmxlLCBidXQgdGhhdCdzIGZpbmUuIEEgbGF0ZXIgdmFjdXVtIHdpbGwgZml4IHRoYXQu Ci0JICovCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyoKLQkgKiBOb3cgdGhhdCB3ZSBoYXZl IHJlbW92ZWQgdGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSwgb25jZSBhZ2FpbgotCSAq IGNoZWNrIGlmIHRoZSBwYWdlIGhhcyBiZWNvbWUgYWxsLXZpc2libGUuICBUaGUgcGFnZSBpcyBh bHJlYWR5IG1hcmtlZAotCSAqIGRpcnR5LCBleGNsdXNpdmVseSBsb2NrZWQsIGFuZCwgaWYgbmVl ZGVkLCBhIGZ1bGwgcGFnZSBpbWFnZSBoYXMgYmVlbgotCSAqIGVtaXR0ZWQuCi0JICovCi0JQXNz ZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKLQlpZiAoaGVhcF9wYWdlX2lzX2FsbF92aXNp YmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAotCQkJ CQkJCQkgJmFsbF9mcm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsICZ2YWNyZWwtPm9mZm51 bSkpCisJaWYgKCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSkgIT0gMCkKIAl7 Ci0JCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0KLQkJaWYgKGFs bF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQodmlzaWJpbGl0 eV9jdXRvZmZfeGlkKSk7Ci0JCQlmbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0J CX0KLQotCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0eW1hcF9zZXQodmFj cmVsLT5yZWwsIGJsa25vLCBidWZmZXIsCi0JCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJ CQkJICB2bWJ1ZmZlciwgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAotCQkJCQkJICBmbGFncyk7Ci0K IAkJLyogQ291bnQgdGhlIG5ld2x5IHNldCBWTSBwYWdlIGZvciBsb2dnaW5nICovCisJCUxvY2tC dWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAJCXZhY3JlbC0+dm1fbmV3X3Zp c2libGVfcGFnZXMrKzsKIAkJaWYgKGFsbF9mcm96ZW4pCiAJCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcysrOwpAQCAtMzU5NCw0MCArMzYwMSw4NSBAQCBkZWFkX2l0ZW1zX2Ns ZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQogfQogCiAvKgotICogQ2hlY2sgaWYgZXZlcnkgdHVw bGUgaW4gdGhlIGdpdmVuIHBhZ2UgaW4gYnVmIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQgYW5k Ci0gKiBmdXR1cmUgdHJhbnNhY3Rpb25zLgorICogV3JhcHBlciBmb3IgaGVhcF9wYWdlX3dvdWxk X2JlX2FsbF92aXNpYmxlKCkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yCisgKiBjYWxsZXJzIHRoYXQg ZXhwZWN0IG5vIExQX0RFQUQgb24gdGhlIHBhZ2UuCisgKi8KK2Jvb2wKK2hlYXBfcGFnZV9pc19h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkgVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluLAorCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkgVHJhbnNhY3Rp b25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2lu Z19vZmZudW0pCit7CisKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKHJl bCwgYnVmLCBPbGRlc3RYbWluLAorCQkJCQkJCQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIGFs bF9mcm96ZW4sCisJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCisJCQkJCQkJCQkJ ICBsb2dnaW5nX29mZm51bSk7Cit9CisKKy8qCisgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90 IHRoZSBoZWFwIHBhZ2UgaW4gYnVmIGlzIGFsbC12aXNpYmxlIG90aGVyIHRoYW4KKyAqIHRoZSBk ZWFkIGxpbmUgcG9pbnRlcnMgcmVmZXJyZWQgdG8gYnkgdGhlIHByb3ZpZGVkIGRlYWRvZmZzZXRz IGFycmF5LgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0 eS4KKyAqIGRlYWRvZmZzZXRzIGFyZSB0aGUgb2Zmc2V0cyB0aGUgY2FsbGVyIGtub3dzIGFib3V0 IGFuZCBhbHJlYWR5IHJlbW92ZWQKKyAqIGFzc29jaWF0ZWQgaW5kZXggZW50cmllcy4gVmFjdXVt IHdpbGwgY2FsbCB0aGlzIGJlZm9yZSBzZXR0aW5nIHRob3NlIGxpbmUKKyAqIHBvaW50ZXJzIExQ X1VOVVNFRC4gU28sIGlmIHRoZXJlIGFyZSBubyBuZXcgTFBfREVBRCBpdGVtcywgdGhlbiB0aGUg cGFnZQorICogY2FuIGJlIHNldCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gYnkgdGhlIGNhbGxlci4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUgb3RoZXIgdGhh biB0aGUgcHJvdmlkZWQKKyAqIGRlYWRvZmZzZXRzIGFuZCBmYWxzZSBvdGhlcndpc2UuCiAgKgot ICogU2V0cyAqYWxsX2Zyb3plbiB0byB0cnVlIGlmIGV2ZXJ5IHR1cGxlIG9uIHRoaXMgcGFnZSBp cyBmcm96ZW4uCisgKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHku CiAgKgotICogU2V0cyAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkIHRvIHRoZSBoaWdoZXN0IHhtaW4g YW1vbmdzdCB0aGUgdmlzaWJsZSB0dXBsZXMuCi0gKiBJdCBpcyBvbmx5IHZhbGlkIGlmIHRoZSBw YWdlIGlzIGFsbC12aXNpYmxlLgorICogKmFsbF9mcm96ZW4gaXMgYW4gb3V0cHV0IHBhcmFtZXRl ciBpbmRpY2F0aW5nIHRvIHRoZSBjYWxsZXIgaWYgZXZlcnkgdHVwbGUKKyAqIG9uIHRoZSBwYWdl IGlzIGZyb3plbi4KICAqCiAgKiAqbG9nZ2luZ19vZmZudW0gd2lsbCBoYXZlIHRoZSBPZmZzZXRO dW1iZXIgb2YgdGhlIGN1cnJlbnQgdHVwbGUgYmVpbmcKICAqIHByb2Nlc3NlZCBmb3IgdmFjdXVt J3MgZXJyb3IgY2FsbGJhY2sgc3lzdGVtLgogICoKLSAqIFRoaXMgaXMgYSBzdHJpcHBlZCBkb3du IHZlcnNpb24gb2YgbGF6eV9zY2FuX3BydW5lKCkuICBJZiB5b3UgY2hhbmdlCi0gKiBhbnl0aGlu ZyBoZXJlLCBtYWtlIHN1cmUgdGhhdCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlIHRo YXQgYW4KLSAqIGFzc2VydGlvbiBjYWxscyB1cyB0byB2ZXJpZnkgdGhhdCBldmVyeWJvZHkgc3Rp bGwgYWdyZWVzLiAgQmUgc3VyZSB0byBhdm9pZAotICogaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZm ZWN0cyBoZXJlLgorICogKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyBhbiBvdXRwdXQgcGFyYW1l dGVyIHdpdGggdGhlIGhpZ2hlc3QgeG1pbiBhbW9uZ3N0IHRoZQorICogdmlzaWJsZSB0dXBsZXMu IEl0IGlzIG9ubHkgdmFsaWQgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuCisgKgorICogQ2Fs bGVycyBsb29raW5nIHRvIHZlcmlmeSB0aGF0IHRoZSBwYWdlIGlzIGFscmVhZHkgYWxsLXZpc2li bGUgY2FuIGNhbGwKKyAqIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpLgorICoKKyAqIFRoaXMg aXMgc2ltaWxhciBsb2dpYyB0byB0aGF0IGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9s cF9ub3JtYWwoKSBJZgorICogeW91IGNoYW5nZSBhbnl0aGluZyBoZXJlLCBtYWtlIHN1cmUgdGhh dCBldmVyeXRoaW5nIHN0YXlzIGluIHN5bmMuICBOb3RlCisgKiB0aGF0IGFuIGFzc2VydGlvbiBj YWxscyB1cyB0byB2ZXJpZnkgdGhhdCBldmVyeWJvZHkgc3RpbGwgYWdyZWVzLiAgQmUgc3VyZQor ICogdG8gYXZvaWQgaW50cm9kdWNpbmcgbmV3IHNpZGUtZWZmZWN0cyBoZXJlLgogICovCiBzdGF0 aWMgYm9vbAotaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkgYm9vbCAqYWxsX2Zy b3plbiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJ CQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKK2hlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJICAgVHJhbnNhY3Rpb25J ZCBPbGRlc3RYbWluLAorCQkJCQkJCSAgIE9mZnNldE51bWJlciAqZGVhZG9mZnNldHMsCisJCQkJ CQkJICAgaW50IG5kZWFkb2Zmc2V0cywKKwkJCQkJCQkgICBib29sICphbGxfZnJvemVuLAorCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkgICBP ZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQogewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQ YWdlKGJ1Zik7CiAJQmxvY2tOdW1iZXIgYmxvY2tubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1 Zik7CiAJT2Zmc2V0TnVtYmVyIG9mZm51bSwKIAkJCQltYXhvZmY7CiAJYm9vbAkJYWxsX3Zpc2li bGUgPSB0cnVlOworCWludAkJCW1hdGNoZWRfZGVhZF9jb3VudCA9IDA7CiAKIAkqdmlzaWJpbGl0 eV9jdXRvZmZfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJKmFsbF9mcm96ZW4gPSB0cnVl OwogCisJQXNzZXJ0KG5kZWFkb2Zmc2V0cyA9PSAwIHx8IGRlYWRvZmZzZXRzKTsKKworI2lmZGVm IFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiBDb25maXJtIGlucHV0IGRlYWRvZmZzZXRzW10gaXMg c3RyaWN0bHkgc29ydGVkICovCisJaWYgKG5kZWFkb2Zmc2V0cyA+IDEpCisJeworCQlmb3IgKGlu dCBpID0gMTsgaSA8IG5kZWFkb2Zmc2V0czsgaSsrKQorCQkJQXNzZXJ0KGRlYWRvZmZzZXRzW2kg LSAxXSA8IGRlYWRvZmZzZXRzW2ldKTsKKwl9CisjZW5kaWYKKwogCW1heG9mZiA9IFBhZ2VHZXRN YXhPZmZzZXROdW1iZXIocGFnZSk7CiAJZm9yIChvZmZudW0gPSBGaXJzdE9mZnNldE51bWJlcjsK IAkJIG9mZm51bSA8PSBtYXhvZmYgJiYgYWxsX3Zpc2libGU7CkBAIC0zNjU1LDkgKzM3MDcsMTUg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJ ICovCiAJCWlmIChJdGVtSWRJc0RlYWQoaXRlbWlkKSkKIAkJewotCQkJYWxsX3Zpc2libGUgPSBm YWxzZTsKLQkJCSphbGxfZnJvemVuID0gZmFsc2U7Ci0JCQlicmVhazsKKwkJCWlmICghZGVhZG9m ZnNldHMgfHwKKwkJCQltYXRjaGVkX2RlYWRfY291bnQgPj0gbmRlYWRvZmZzZXRzIHx8CisJCQkJ ZGVhZG9mZnNldHNbbWF0Y2hlZF9kZWFkX2NvdW50XSAhPSBvZmZudW0pCisJCQl7CisJCQkJKmFs bF9mcm96ZW4gPSBhbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQkJbWF0 Y2hlZF9kZWFkX2NvdW50Kys7CisJCQljb250aW51ZTsKIAkJfQogCiAJCUFzc2VydChJdGVtSWRJ c05vcm1hbChpdGVtaWQpKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9oZWFwZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5k ZXggYjQ4ZDdkYzFkMjQuLmM5NWQzMGRmZThkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3Mvcm1ncmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYwpAQCAtMTAzLDcgKzEwMyw3IEBAIHBsYW5fZWxlbV9kZXNjKFN0cmluZ0luZm8g YnVmLCB2b2lkICpwbGFuLCB2b2lkICpkYXRhKQogICogY29kZSwgdGhlIGxhdHRlciBvZiB3aGlj aCBpcyB1c2VkIGluIGZyb250ZW5kIChwZ193YWxkdW1wKSBjb2RlLgogICovCiB2b2lkCi1oZWFw X3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQ4IGZs YWdzLAoraGVhcF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29y LCB1aW50MTYgZmxhZ3MsCiAJCQkJCQkJCQkgICBpbnQgKm5wbGFucywgeGxocF9mcmVlemVfcGxh biAqKnBsYW5zLAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICoqZnJ6X29mZnNldHMsCiAJCQkJ CQkJCQkgICBpbnQgKm5yZWRpcmVjdGVkLCBPZmZzZXROdW1iZXIgKipyZWRpcmVjdGVkLApAQCAt Mjc5LDcgKzI3OSw2IEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CiAKIAkJCW1lbWNweSgm Y29uZmxpY3RfeGlkLCByZWMgKyBTaXplT2ZIZWFwUHJ1bmUsIHNpemVvZihUcmFuc2FjdGlvbklk KSk7Ci0KIAkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAic25hcHNob3RDb25mbGljdEhvcml6b246 ICV1IiwKIAkJCQkJCQkgY29uZmxpY3RfeGlkKTsKIAkJfQpAQCAtMjg3LDYgKzI4NiwxMCBAQCBo ZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJYXBw ZW5kU3RyaW5nSW5mbyhidWYsICIsIGlzQ2F0YWxvZ1JlbDogJWMiLAogCQkJCQkJIHhscmVjLT5m bGFncyAmIFhMSFBfSVNfQ0FUQUxPR19SRUwgPyAnVCcgOiAnRicpOwogCisJCWlmICh4bHJlYy0+ ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCisJCQlhcHBlbmRTdHJpbmdJbmZvKGJ1 ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsCisJCQkJCQkJIHhscmVjLT5mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUyk7CisKIAkJaWYgKFhMb2dSZWNIYXNCbG9ja0RhdGEocmVjb3JkLCAw KSkKIAkJewogCQkJU2l6ZQkJZGF0YWxlbjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBhMmJkNWE4OTdm OC4uOGI0NzI5NWVmYTIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM0NCw2ICszNDQsMTIgQEAgZXh0 ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3VwZGF0ZV9hbmRfdW5sb2NrKFJlbGF0aW9uIHJlbGF0aW9u LAogCQkJCQkJCQkJCSAgIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNl X3VubG9jayhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJSGVhcFR1cGxlIG9sZHR1cCwgQnVm ZmVyIGJ1ZmZlcik7CisKK2V4dGVybiBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxh dGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWlu LAorCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19v ZmZudW0pOwogZXh0ZXJuIGJvb2wgaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZShIZWFwVHVwbGVI ZWFkZXIgdHVwbGUsCiAJCQkJCQkJCQkgIGNvbnN0IHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRv ZmZzLAogCQkJCQkJCQkJICBIZWFwUGFnZUZyZWV6ZSAqcGFnZWZyeiwKQEAgLTM4OCw2ICszOTQs OSBAQCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBi b29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwg aW50IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJ ICBCdWZmZXIgdm1idWZmZXIsCisJCQkJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCisJCQkJCQkJCQkg IGJvb2wgdm1fbW9kaWZpZWRfaGVhcF9wYWdlLAogCQkJCQkJCQkJICBUcmFuc2FjdGlvbklkIGNv bmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCiAJCQkJCQkJCQkgIFBy dW5lUmVhc29uIHJlYXNvbiwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1f eGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZDRjMDYyNWI2 MzIuLmQ4NTA4NTkzZTdjIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hs b2cuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtMjQ5LDcgKzI0 OSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdXBkYXRlCiAgKiBNYWluIGRhdGEgc2VjdGlv bjoKICAqCiAgKgl4bF9oZWFwX3BydW5lCi0gKgkJdWludDgJCQkJZmxhZ3MKKyAqCQl1aW50MTYJ CQkJZmxhZ3MKICAqCVRyYW5zYWN0aW9uSWQJCQlzbmFwc2hvdF9jb25mbGljdF9ob3Jpem9uCiAg KgogICogQmxvY2sgMCBkYXRhIHNlY3Rpb246CkBAIC0yODQsNyArMjg0LDcgQEAgdHlwZWRlZiBz dHJ1Y3QgeGxfaGVhcF91cGRhdGUKICAqLwogdHlwZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQog ewotCXVpbnQ4CQlmbGFnczsKKwl1aW50MTYJCWZsYWdzOwogCiAJLyoKIAkgKiBJZiBYTEhQX0hB U19DT05GTElDVF9IT1JJWk9OIGlzIHNldCwgdGhlIGNvbmZsaWN0IGhvcml6b24gWElEIGZvbGxv d3MsCkBAIC0yOTIsMTAgKzI5MiwyMiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAJ ICovCiB9IHhsX2hlYXBfcHJ1bmU7CiAKLSNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRv Zih4bF9oZWFwX3BydW5lLCBmbGFncykgKyBzaXplb2YodWludDgpKQorI2RlZmluZSBTaXplT2ZI ZWFwUHJ1bmUgKG9mZnNldG9mKHhsX2hlYXBfcHJ1bmUsIGZsYWdzKSArIHNpemVvZih1aW50MTYp KQorCisvKgorICogVGhlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkJ3MgZmxhZ3MgbWF5IGFsc28gY29u dGFpbiB3aGljaCBWTSBiaXRzIHRvIHNldC4gQXMKKyAqIHN1Y2gsICgxIDw8IDApIGFuZCAoMSA8 PCAxKSBhcmUgcmVzZXJ2ZWQgZm9yIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUgYW5kCisgKiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4uCisgKi8KIAotLyogdG8gaGFuZGxlIHJlY292ZXJ5IGNv bmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgKi8KLSNkZWZpbmUJCVhM SFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAxKQorLyoKKyAqIFRvIGhhbmRsZSByZWNvdmVyeSBj b25mbGljdCBkdXJpbmcgbG9naWNhbCBkZWNvZGluZyBvbiBzdGFuZGJ5LCB3ZSBtdXN0IGtub3cK KyAqIGlmIHRoZSB0YWJsZSBpcyBhIGNhdGFsb2cgdGFibGUuIE5vdGUgdGhhdCBpbiB2aXNpYmls aXR5bWFwZGVmcy5oCisgKiBWSVNJQkxJVFlNQVBfWExPR19DQVRBTE9HX1JFTCBpcyBhbHNvIGRl ZmluZWQgYXMgKDEgPDwgMikuIHhsX2hlYXBfcHJ1bmUKKyAqIHJlY29yZHMgc2hvdWxkIHVzZSBY TEhQX0lTX0NBVEFMT0dfUkVMLCBub3QgVklTSUJJTElZVE1BUF9YTE9HX0NBVEFMT0dfUkVMIC0t CisgKiBldmVuIGlmIHRoZXkgb25seSBjb250YWluIHVwZGF0ZXMgdG8gdGhlIFZNLgorICovCisj ZGVmaW5lCQlYTEhQX0lTX0NBVEFMT0dfUkVMCQkJKDEgPDwgMikKIAogLyoKICAqIERvZXMgcmVw bGF5aW5nIHRoZSByZWNvcmQgcmVxdWlyZSBhIGNsZWFudXAtbG9jaz8KQEAgLTMwNSw3ICszMTcs NyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAgKiBtYXJrcyBMUF9ERUFEIGxpbmUg cG9pbnRlcnMgYXMgdW51c2VkIHdpdGhvdXQgbW92aW5nIGFueSB0dXBsZSBkYXRhLCBhbgogICog b3JkaW5hcnkgZXhjbHVzaXZlIGxvY2sgaXMgc3VmZmljaWVudC4KICAqLwotI2RlZmluZQkJWExI UF9DTEVBTlVQX0xPQ0sJICAgICAgICgxIDw8IDIpCisjZGVmaW5lCQlYTEhQX0NMRUFOVVBfTE9D SwkgICAgICAgKDEgPDwgMykKIAogLyoKICAqIElmIHdlIHJlbW92ZSBvciBmcmVlemUgYW55IGVu dHJpZXMgdGhhdCBjb250YWluIHhpZHMsIHdlIG5lZWQgdG8gaW5jbHVkZSBhCkBAIC0zMTMsMjIg KzMyNSwyMiBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3BydW5lCiAgKiB0aGVyZSBhcmUgbm8g cXVlcmllcyBydW5uaW5nIGZvciB3aGljaCB0aGUgcmVtb3ZlZCB0dXBsZXMgYXJlIHN0aWxsCiAg KiB2aXNpYmxlLCBvciB3aGljaCBzdGlsbCBjb25zaWRlciB0aGUgZnJvemVuIFhJRHMgYXMgcnVu bmluZy4KICAqLwotI2RlZmluZQkJWExIUF9IQVNfQ09ORkxJQ1RfSE9SSVpPTiAgICgxIDw8IDMp CisjZGVmaW5lCQlYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OICAgKDEgPDwgNCkKIAogLyoKICAq IEluZGljYXRlcyB0aGF0IGFuIHhsaHBfZnJlZXplX3BsYW5zIHN1Yi1yZWNvcmQgYW5kIG9uZSBv ciBtb3JlCiAgKiB4bGhwX2ZyZWV6ZV9wbGFuIHN1Yi1yZWNvcmRzIGFyZSBwcmVzZW50LgogICov Ci0jZGVmaW5lCQlYTEhQX0hBU19GUkVFWkVfUExBTlMJCSgxIDw8IDQpCisjZGVmaW5lCQlYTEhQ X0hBU19GUkVFWkVfUExBTlMJCSgxIDw8IDUpCiAKIC8qCiAgKiBYTEhQX0hBU19SRURJUkVDVElP TlMsIFhMSFBfSEFTX0RFQURfSVRFTVMsIGFuZCBYTEhQX0hBU19OT1dfVU5VU0VEX0lURU1TCiAg KiBpbmRpY2F0ZSB0aGF0IHhsaHBfcHJ1bmVfaXRlbXMgc3ViLXJlY29yZHMgd2l0aCByZWRpcmVj dGVkLCBkZWFkLCBhbmQKICAqIHVudXNlZCBpdGVtIG9mZnNldHMgYXJlIHByZXNlbnQuCiAgKi8K LSNkZWZpbmUJCVhMSFBfSEFTX1JFRElSRUNUSU9OUwkJKDEgPDwgNSkKLSNkZWZpbmUJCVhMSFBf SEFTX0RFQURfSVRFTVMJICAgICAgICAoMSA8PCA2KQotI2RlZmluZQkJWExIUF9IQVNfTk9XX1VO VVNFRF9JVEVNUyAgICgxIDw8IDcpCisjZGVmaW5lCQlYTEhQX0hBU19SRURJUkVDVElPTlMJCSgx IDw8IDYpCisjZGVmaW5lCQlYTEhQX0hBU19ERUFEX0lURU1TCSAgICAgICAgKDEgPDwgNykKKyNk ZWZpbmUJCVhMSFBfSEFTX05PV19VTlVTRURfSVRFTVMgICAoMSA8PCA4KQogCiAvKgogICogeGxo cF9mcmVlemVfcGxhbiBkZXNjcmliZXMgaG93IHRvIGZyZWV6ZSBhIGdyb3VwIG9mIG9uZSBvciBt b3JlIGhlYXAgdHVwbGVzCkBAIC00OTcsNyArNTA5LDcgQEAgZXh0ZXJuIFhMb2dSZWNQdHIgbG9n X2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwKIAkJCQkJCQkJ ICAgdWludDggdm1mbGFncyk7CiAKIC8qIGluIGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFy ZWQgYmV0d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNvZGUgKi8KLWV4dGVybiB2b2lkIGhlYXBfeGxv Z19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3Ms CitleHRlcm4gdm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFy ICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhw X2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKipmcnpf b2Zmc2V0cywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQsIE9mZnNldE51bWJlciAq KnJlZGlyZWN0ZWQsCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0001-Remove-unneeded-VM-pin-from-VM-replay.patch" Content-Disposition: attachment; filename="v9-0001-Remove-unneeded-VM-pin-from-VM-replay.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhfz0 RnJvbSA2ODZlZGJmYmU2NTU2ZGE4Y2RkNjIxOWZkOWNkMjcwY2NmYzliYjMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI3IEF1ZyAyMDI1IDA4OjUwOjE1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwMS8yMl0gUmVtb3ZlIHVubmVlZGVkIFZNIHBpbiBmcm9tIFZNIHJlcGxheQoKUHJl dmlvdXNseSwgaGVhcF94bG9nX3Zpc2libGUoKSBjYWxsZWQgdmlzaWJpbGl0eW1hcF9waW4oKSBl dmVuIGFmdGVyCmdldHRpbmcgYSBidWZmZXIgZnJvbSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRl bmRlZCgpIC0tIHdoaWNoIHJldHVybnMgYQpwaW5uZWQgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIHNw ZWNpZmllZCBibG9jayBvZiB0aGUgdmlzaWJpbGl0eSBtYXAuCgpUaGlzIHdvdWxkIGp1c3QgaGF2 ZSByZXN1bHRlZCBpbiB2aXNpYmlsaXR5bWFwX3BpbigpIHJldHVybmluZyBlYXJseQpzaW5jZSB0 aGUgc3BlY2lmaWVkIHBhZ2Ugd2FzIGFscmVhZHkgcHJlc2VudCBhbmQgcGlubmVkLCBidXQgaXQg d2FzCmNvbmZ1c2luZyBleHRyYW5lb3VzIGNvZGUsIHNvIHJlbW92ZSBpdC4KCkl0IGFwcGVhcnMg dG8gYmUgYW4gb3ZlcnNpZ2h0IGluIDJjMDMyMTYuCgpXaGlsZSB3ZSBhcmUgYXQgaXQsIHJlbW92 ZSB0d28gVk0tcmVsYXRlZCByZWR1bmRhbnQgYXNzZXJ0cyBpbiB0aGUgQ09QWQpGUkVFWkUgY29k ZSBwYXRoLiB2aXNpYmlsaXR5bWFwX3NldCgpIGFscmVhZHkgYXNzZXJ0cyB0aGF0ClBEX0FMTF9W SVNJQkxFIGlzIHNldCBvbiB0aGUgaGVhcCBwYWdlIGFuZCBjaGVja3MgdGhhdCB0aGUgdm1idWZm ZXIKY29udGFpbnMgdGhlIGJpdHMgY29ycmVzcG9uZGluZyB0byB0aGUgc3BlY2lmaWVkIGhlYXAg YmxvY2ssIHNvIGNhbGxlcnMKZG8gbm90IGFsc28gbmVlZCB0byBjaGVjayB0aGlzLgoKQXV0aG9y OiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXBvcnRlZC1i eTogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4KUmVwb3J0ZWQt Ynk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBL aXJpbGwgUmVzaGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW5kcmVz IEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgoKRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3Iu ZXMvbS9DQUxkU1NQaHU3V1pkJTJCRWZRRGhhMW56JTNEREM5M090WTElM0RVRkVkV3dTWnNBU2th XzJlUlElNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBh bS5jICAgICAgfCAzIC0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyB8 IDEgLQogMiBmaWxlcyBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtLmMKaW5kZXggZTNlNzMwN2VmNWYuLjRjNWFlMjA1YTdhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW0uYwpAQCAtMjY0Nyw5ICsyNjQ3LDYgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24g cmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkgKi8KIAkJ aWYgKGFsbF9mcm96ZW5fc2V0KQogCQl7Ci0JCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdl KSk7Ci0JCQlBc3NlcnQodmlzaWJpbGl0eW1hcF9waW5fb2soQnVmZmVyR2V0QmxvY2tOdW1iZXIo YnVmZmVyKSwgdm1idWZmZXIpKTsKLQogCQkJLyoKIAkJCSAqIEl0J3MgZmluZSB0byB1c2UgSW52 YWxpZFRyYW5zYWN0aW9uSWQgaGVyZSAtIHRoaXMgaXMgb25seSB1c2VkCiAJCQkgKiB3aGVuIEhF QVBfSU5TRVJUX0ZST1pFTiBpcyBzcGVjaWZpZWQsIHdoaWNoIGludGVudGlvbmFsbHkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCmluZGV4IDVkNDhmMDcxZjUzLi5jZjg0MzI3Nzkz OCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCkBAIC0yOTUsNyArMjk1LDYg QEAgaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJcmVsbiA9IENyZWF0ZUZha2VS ZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKLQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsbiwgYmxrbm8s ICZ2bWJ1ZmZlcik7CiAKIAkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sIEludmFsaWRC dWZmZXIsIGxzbiwgdm1idWZmZXIsCiAJCQkJCQkgIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9y aXpvbiwgdm1iaXRzKTsKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v9-0003-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhg92 RnJvbSA3YjYyMjJmMTY3MGEwMDc4YzMyMzgzZTY0ZmIzNzgyZjU1NWE2NTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwMy8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBpbiBDT1BZIEZSRUVaRQoK SW5zdGVhZCBvZiBlbWl0dGluZyBhIHNlcGFyYXRlIFdBTCByZWNvcmQgZm9yIHNldHRpbmcgdGhl IFZNIGJpdHMgaW4KeGxfaGVhcF92aXNpYmxlLCBzcGVjaWZ5IHRoZSBjaGFuZ2VzIHRvIG1ha2Ug dG8gdGhlIFZNIGJsb2NrIGluIHRoZQp4bF9oZWFwX211bHRpX2luc2VydCByZWNvcmQgaW5zdGVh ZC4KCkF1dGhvcjogTWVsYW5pZSBQbGFnZW1hbiA8bWVsYW5pZXBsYWdlbWFuQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBnbWFpbC5jb20+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxhdC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3 UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgIHwgNDcgKysrKysrKysrKy0tLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICB8IDQzICsrKysrKysrKysr KysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyB8IDY3ICsrKysr KysrKysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVz Yy5jICB8ICA1ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oICAgICAgfCAg MiArCiA1IGZpbGVzIGNoYW5nZWQsIDE0NCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDRjNWFlMjA1YTdhLi44OTNhNzM5MDA5YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTI1MDQsOSArMjUwNCw2IEBAIGhlYXBfbXVs dGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQg bnR1cGxlcywKIAkJLyoKIAkJICogSWYgdGhlIHBhZ2UgaXMgYWxsIHZpc2libGUsIG5lZWQgdG8g Y2xlYXIgdGhhdCwgdW5sZXNzIHdlJ3JlIG9ubHkKIAkJICogZ29pbmcgdG8gYWRkIGZ1cnRoZXIg ZnJvemVuIHJvd3MgdG8gaXQuCi0JCSAqCi0JCSAqIElmIHdlJ3JlIG9ubHkgYWRkaW5nIGFscmVh ZHkgZnJvemVuIHJvd3MgdG8gYSBwcmV2aW91c2x5IGVtcHR5Ci0JCSAqIHBhZ2UsIG1hcmsgaXQg YXMgYWxsLXZpc2libGUuCiAJCSAqLwogCQlpZiAoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSAmJiAh KG9wdGlvbnMgJiBIRUFQX0lOU0VSVF9GUk9aRU4pKQogCQl7CkBAIC0yNTE2LDggKzI1MTMsMjIg QEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoq c2xvdHMsIGludCBudHVwbGVzLAogCQkJCQkJCQlCdWZmZXJHZXRCbG9ja051bWJlcihidWZmZXIp LAogCQkJCQkJCQl2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAkJfQorCisJ CS8qCisJCSAqIElmIHdlJ3JlIG9ubHkgYWRkaW5nIGFscmVhZHkgZnJvemVuIHJvd3MgdG8gYSBw cmV2aW91c2x5IGVtcHR5CisJCSAqIHBhZ2UsIG1hcmsgaXQgYXMgYWxsLWZyb3plbiBhbmQgdXBk YXRlIHRoZSB2aXNpYmlsaXR5IG1hcC4gV2UncmUKKwkJICogYWxyZWFkeSBob2xkaW5nIGEgcGlu IG9uIHRoZSB2bWJ1ZmZlci4KKwkJICovCiAJCWVsc2UgaWYgKGFsbF9mcm96ZW5fc2V0KQorCQl7 CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMocmVsYXRp b24sCisJCQkJCQkJCQkgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKKwkJCQkJCQkJCSB2 bWJ1ZmZlciwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJ CSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCQl9CiAKIAkJLyoKIAkJICogWFhYIFNob3Vs ZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/IFNlZSBoZWFwX2luc2VydCgp CkBAIC0yNTY1LDYgKzI1NzYsMTIgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRp b24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJeGxyZWMtPmZsYWdz ID0gMDsKIAkJCWlmIChhbGxfdmlzaWJsZV9jbGVhcmVkKQogCQkJCXhscmVjLT5mbGFncyA9IFhM SF9JTlNFUlRfQUxMX1ZJU0lCTEVfQ0xFQVJFRDsKKworCQkJLyoKKwkJCSAqIFdlIGRvbid0IGhh dmUgdG8gd29ycnkgYWJvdXQgaW5jbHVkaW5nIGEgY29uZmxpY3QgeGlkIGluIHRoZQorCQkJICog V0FMIHJlY29yZCBhcyBIRUFQX0lOU0VSVF9GUk9aRU4gaW50ZW50aW9uYWxseSB2aW9sYXRlcwor CQkJICogdmlzaWJpbGl0eSBydWxlcy4KKwkJCSAqLwogCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQog CQkJCXhscmVjLT5mbGFncyA9IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQ7CiAKQEAgLTI2Mjcs NyArMjY0NCwxMCBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVU YWJsZVNsb3QgKipzbG90cywgaW50IG50dXBsZXMsCiAKIAkJCVhMb2dCZWdpbkluc2VydCgpOwog CQkJWExvZ1JlZ2lzdGVyRGF0YSh4bHJlYywgdHVwbGVkYXRhIC0gc2NyYXRjaC5kYXRhKTsKKwog CQkJWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEIHwgYnVmZmxh Z3MpOworCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQorCQkJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2 bWJ1ZmZlciwgMCk7CiAKIAkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdHVwbGVkYXRhLCB0b3Rh bGRhdGFsZW4pOwogCkBAIC0yNjM3LDI2ICsyNjU3LDE3IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJl bGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJ CXJlY3B0ciA9IFhMb2dJbnNlcnQoUk1fSEVBUDJfSUQsIGluZm8pOwogCiAJCQlQYWdlU2V0TFNO KHBhZ2UsIHJlY3B0cik7CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJCQl7CisJCQkJQXNzZXJ0 KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uo dm1idWZmZXIpLCByZWNwdHIpOworCQkJfQogCQl9CiAKIAkJRU5EX0NSSVRfU0VDVElPTigpOwog Ci0JCS8qCi0JCSAqIElmIHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRh dGUgdGhlIHZpc2liaWxpdHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24g dGhlIHZtYnVmZmVyLgotCQkgKi8KIAkJaWYgKGFsbF9mcm96ZW5fc2V0KQotCQl7Ci0JCQkvKgot CQkJICogSXQncyBmaW5lIHRvIHVzZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBoZXJlIC0gdGhpcyBp cyBvbmx5IHVzZWQKLQkJCSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVOIGlzIHNwZWNpZmllZCwg d2hpY2ggaW50ZW50aW9uYWxseQotCQkJICogdmlvbGF0ZXMgdmlzaWJpbGl0eSBydWxlcy4KLQkJ CSAqLwotCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1ZmZlciksIGJ1ZmZlciwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLCB2bWJ1ZmZlciwK LQkJCQkJCQkgIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0JCX0KKwkJCUxvY2tCdWZm ZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZl cihidWZmZXIpOwogCQluZG9uZSArPSBudGhpc3BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwppbmRleCBjZjg0MzI3NzkzOC4uMDgyMGY3ZDA1MmQgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNTUxLDYgKzU1MSw3IEBAIGhlYXBfeGxvZ19tdWx0 aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJaW50CQkJaTsKIAlib29sCQlpc2lu aXQgPSAoWExvZ1JlY0dldEluZm8ocmVjb3JkKSAmIFhMT0dfSEVBUF9JTklUX1BBR0UpICE9IDA7 CiAJWExvZ1JlZG9BY3Rpb24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVm ZmVyOwogCiAJLyoKIAkgKiBJbnNlcnRpb24gZG9lc24ndCBvdmVyd3JpdGUgTVZDQyBkYXRhLCBz byBubyBjb25mbGljdCBwcm9jZXNzaW5nIGlzCkBAIC01NzEsMTEgKzU3MiwxMSBAQCBoZWFwX3hs b2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmICh4bHJlYy0+Zmxh Z3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJewogCQlSZWxhdGlvbglyZWxu ID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwotCQlCdWZmZXIJCXZtYnVmZmVy ID0gSW52YWxpZEJ1ZmZlcjsKIAogCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywgJnZt YnVmZmVyKTsKIAkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxuLCBibGtubywgdm1idWZmZXIsIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCQl2 bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsK IAl9CiAKQEAgLTY2Miw2ICs2NjMsNDYgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVh ZGVyU3RhdGUgKnJlY29yZCkKIAlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQogCQlVbmxvY2tS ZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAKKwlidWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCisJLyoK KwkgKiBOb3cgcmVhZCBhbmQgdXBkYXRlIHRoZSBWTSBibG9jay4gRXZlbiBpZiB3ZSBza2lwcGVk IHVwZGF0aW5nIHRoZSBoZWFwCisJICogcGFnZSBkdWUgdG8gdGhlIGZpbGUgYmVpbmcgZHJvcHBl ZCBvciB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIGl0J3MKKwkgKiBzdGlsbCBzYWZlIHRv IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuICBBbnkgV0FMIHJlY29yZCB0aGF0IGNsZWFycwor CSAqIHRoZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcgdGhlIHBh Z2UgTFNOLCBzbyBhbnkKKwkgKiBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3Rp bGwgYmUgY2xlYXJlZC4KKwkgKgorCSAqIEl0IGlzIG9ubHkgb2theSB0byBzZXQgdGhlIFZNIGJp dHMgd2l0aG91dCBob2xkaW5nIHRoZSBoZWFwIHBhZ2UgbG9jaworCSAqIGJlY2F1c2Ugd2UgY2Fu IGV4cGVjdCBubyBvdGhlciB3cml0ZXJzIG9mIHRoaXMgcGFnZS4KKwkgKi8KKwlpZiAoeGxyZWMt PmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCAmJgorCQlYTG9nUmVhZEJ1ZmZlckZv clJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VSUk9SLCBmYWxzZSwKKwkJCQkJ CQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKKwl7CisJCVBhZ2UJCXZtcGFnZSA9 IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOworCQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJl bGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCS8qIGluaXRpYWxpemUgdGhlIHBhZ2UgaWYgaXQg d2FzIHJlYWQgYXMgemVyb3MgKi8KKwkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQorCQkJUGFnZUlu aXQodm1wYWdlLCBCTENLU1osIDApOworCisJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhyZWxu LCBibGtubywKKwkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSB8CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCisJCS8qCisJ CSAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IHRoZSBWTSB3YXMgYWxyZWFkeSBzZXQgZm9yIHRo aXMgaGVhcCBwYWdlLAorCQkgKiBzbyB0aGUgdm1idWZmZXIgbXVzdCBoYXZlIGJlZW4gbW9kaWZp ZWQgYW5kIG1hcmtlZCBkaXJ0eS4KKwkJICovCisJCUFzc2VydChCdWZmZXJJc0RpcnR5KHZtYnVm ZmVyKSk7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CisJCUZy ZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKKwl9CisKKwlpZiAoQnVmZmVySXNWYWxpZCh2bWJ1 ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCiAJLyoKIAkgKiBJZiB0 aGUgcGFnZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1cGRhdGUgdGhlIEZTTSBhcyB3 ZWxsLgogCSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBvZiAibG93IiBpcyBsZXNzIHRo YW4gMjAlLiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5 bWFwLmMKaW5kZXggNzMwNmMxNmYwNWMuLmJiOGRmZDg5MTBhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw3ICsxNCw4IEBACiAgKgkJdmlzaWJpbGl0eW1h cF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAK ICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0dGluZyBhIGJp dAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3JyZWN0IG1hcCBw YWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0gc2V0IGEgYml0 IGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQorICoJCXZpc2liaWxpdHltYXBfc2V0CSAtIHNl dCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFuZCBsb2cKKyAqICAgICAgdmlz aWJpbGl0eW1hcF9zZXRfdm1iaXRzIC0gc2V0IGJpdChzKSBpbiBhIHBpbm5lZCBwYWdlCiAgKgkJ dmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAgKgkJdmlzaWJp bGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlzaWJpbGl0eSBt YXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMzIxLDYgKzMyMiw3 MCBAQCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGss IEJ1ZmZlciBoZWFwQnVmLAogCXJldHVybiBzdGF0dXM7CiB9CiAKKy8qCisgKiBTZXQgZmxhZ3Mg aW4gdGhlIFZNIGJsb2NrIGNvbnRhaW5lZCBpbiB0aGUgcGFzc2VkIGluIHZtQnVmLgorICoKKyAq IFRoaXMgZnVuY3Rpb24gaXMgZm9yIGNhbGxlcnMgd2hpY2ggaW5jbHVkZSB0aGUgVk0gY2hhbmdl cyBpbiB0aGUgc2FtZSBXQUwKKyAqIHJlY29yZCBhcyB0aGUgbW9kaWZpY2F0aW9ucyBvZiB0aGUg aGVhcCBwYWdlIHdoaWNoIHJlbmRlcmVkIGl0IGFsbC12aXNpYmxlLgorICogQ2FsbGVycyBzZXBh cmF0ZWx5IGxvZ2dpbmcgdGhlIFZNIGNoYW5nZXMgc2hvdWxkIGludm9rZSB2aXNpYmlsaXR5bWFw X3NldCgpCisgKiBpbnN0ZWFkLgorICoKKyAqIENhbGxlciBtdXN0IGhhdmUgcGlubmVkIGFuZCBl eGNsdXNpdmUgbG9ja2VkIHRoZSBjb3JyZWN0IGJsb2NrIG9mIHRoZSBWTSBpbgorICogdm1CdWYu IFRoaXMgYmxvY2sgc2hvdWxkIGNvbnRhaW4gdGhlIFZNIGJpdHMgZm9yIHRoZSBnaXZlbiBoZWFw QmxrLgorICoKKyAqIER1cmluZyBub3JtYWwgb3BlcmF0aW9uIChpLmUuIG5vdCByZWNvdmVyeSks IHRoaXMgc2hvdWxkIGJlIGNhbGxlZCBpbiBhCisgKiBjcml0aWNhbCBzZWN0aW9uIHdoaWNoIGFs c28gbWFrZXMgYW55IG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHRoZSBoZWFwIHBhZ2UKKyAqIGFuZCwg aWYgcmVsZXZhbnQsIGVtaXRzIFdBTC4KKyAqCisgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9y IFdBTCBsb2dnaW5nIHRoZSBjaGFuZ2VzIHRvIHRoZSBWTSBidWZmZXIgYW5kIGZvcgorICogbWFr aW5nIGFueSBjaGFuZ2VzIG5lZWRlZCB0byB0aGUgYXNzb2NpYXRlZCBoZWFwIHBhZ2UuIFRoaXMg aW5jbHVkZXMKKyAqIG1haW50YWluaW5nIGFueSBpbnZhcmlhbnRzIHN1Y2ggYXMgZW5zdXJpbmcg dGhlIGJ1ZmZlciBjb250YWluaW5nIGhlYXBCbGsKKyAqIGlzIHBpbm5lZCBhbmQgZXhjbHVzaXZl IGxvY2tlZC4KKyAqLwordWludDgKK3Zpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhSZWxhdGlvbiBy ZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssCisJCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFn cykKK3sKKwlCbG9ja051bWJlciBtYXBCbG9jayA9IEhFQVBCTEtfVE9fTUFQQkxPQ0soaGVhcEJs ayk7CisJdWludDMyCQltYXBCeXRlID0gSEVBUEJMS19UT19NQVBCWVRFKGhlYXBCbGspOworCXVp bnQ4CQltYXBPZmZzZXQgPSBIRUFQQkxLX1RPX09GRlNFVChoZWFwQmxrKTsKKwlQYWdlCQlwYWdl OworCXVpbnQ4CSAgICptYXA7CisJdWludDgJCXN0YXR1czsKKworI2lmZGVmIFRSQUNFX1ZJU0lC SUxJVFlNQVAKKwllbG9nKERFQlVHMSwgInZtX3NldCBmbGFncyAweCUwMlggZm9yICVzICVkIiwK KwkJIGZsYWdzLCBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpLCBoZWFwQmxrKTsKKyNlbmRp ZgorCisJLyogQ2FsbCBpbiBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gd2hlcmUgV0FMIGlzIGVtaXR0 ZWQuICovCisJQXNzZXJ0KEluUmVjb3ZlcnkgfHwgQ3JpdFNlY3Rpb25Db3VudCA+IDApOworCisJ LyogRmxhZ3Mgc2hvdWxkIGJlIHZhbGlkLiBBbHNvIG5ldmVyIGNsZWFyIGJpdHMgd2l0aCB0aGlz IGZ1bmN0aW9uICovCisJQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykg PT0gZmxhZ3MpOworCisJLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91dCBh bHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCisJQXNzZXJ0KGZsYWdzICE9IFZJU0lCSUxJ VFlNQVBfQUxMX0ZST1pFTik7CisKKwkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0IFZN IHBhZ2UgcGlubmVkICovCisJaWYgKCFCdWZmZXJJc1ZhbGlkKHZtQnVmKSB8fCBCdWZmZXJHZXRC bG9ja051bWJlcih2bUJ1ZikgIT0gbWFwQmxvY2spCisJCWVsb2coRVJST1IsICJ3cm9uZyBWTSBi dWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7CisKKwlBc3NlcnQoQnVmZmVySXNF eGNsdXNpdmVMb2NrZWQodm1CdWYpKTsKKworCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsK KwltYXAgPSAodWludDggKikgUGFnZUdldENvbnRlbnRzKHBhZ2UpOworCisJc3RhdHVzID0gKG1h cFttYXBCeXRlXSA+PiBtYXBPZmZzZXQpICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCWlm IChmbGFncyAhPSBzdGF0dXMpCisJeworCQltYXBbbWFwQnl0ZV0gfD0gKGZsYWdzIDw8IG1hcE9m ZnNldCk7CisJCU1hcmtCdWZmZXJEaXJ0eSh2bUJ1Zik7CisJfQorCisJcmV0dXJuIHN0YXR1czsK K30KKwogLyoKICAqCXZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0dXMgb2YgYml0 cwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggODJiNjJjOTVk ZTUuLmI0OGQ3ZGMxZDI0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2Mv aGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpA QCAtMTYsNiArMTYsNyBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL2hlYXBhbV94bG9nLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3JtZ3JkZXNjX3V0aWxzLmgiCisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFuZGJ5ZGVmcy5oIgogCiAvKgpAQCAt MzU0LDYgKzM1NSwxMCBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9nUmVhZGVyU3Rh dGUgKnJlY29yZCkKIAkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJudHVwbGVzOiAlZCwgZmxhZ3M6 IDB4JTAyWCIsIHhscmVjLT5udHVwbGVzLAogCQkJCQkJIHhscmVjLT5mbGFncyk7CiAKKwkJaWYg KHhscmVjLT5mbGFncyAmIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQpCisJCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiwgdm1fZmxhZ3M6IDB4JTAyWCIsCisJCQkJCQkJIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUgfCBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOworCiAJCWlmIChYTG9nUmVj SGFzQmxvY2tEYXRhKHJlY29yZCwgMCkgJiYgIWlzaW5pdCkKIAkJewogCQkJYXBwZW5kU3RyaW5n SW5mb1N0cmluZyhidWYsICIsIG9mZnNldHM6Iik7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAu aAppbmRleCBiZTIxYzZkZDFhMy4uZmM3MDU2YTkxZWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L2FjY2Vzcy92aXNpYmlsaXR5bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXAuaApAQCAtMzcsNiArMzcsOCBAQCBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQo UmVsYXRpb24gcmVsLAogCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwKIAkJCQkJCQkgICBUcmFuc2Fj dGlvbklkIGN1dG9mZl94aWQsCiAJCQkJCQkJICAgdWludDggZmxhZ3MpOworZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssCisJCQkJCQkJCQkgIEJ1ZmZlciB2bUJ1ZiwgdWludDggZmxhZ3MpOwogZXh0ZXJuIHVpbnQ4 IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9jb3VudChSZWxh dGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJsZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96 ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZShS ZWxhdGlvbiByZWwsCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Disposition: attachment; filename="v9-0004-Make-heap_page_is_all_visible-independent-of-LVRe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgd3 RnJvbSBhYmQ0NmEwZTU3NDQ1NjQwMWNiMzQzODAyMzY2NzMyMzljMzE3MzYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwNC8yMl0gTWFrZSBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUgaW5kZXBlbmRlbnQg b2YKIExWUmVsU3RhdGUKCkZ1dHVyZSBjb21taXRzIHdpbGwgdXNlIHRoaXMgZnVuY3Rpb24gaW5z aWRlIG9mIHBydW5laGVhcC5jIHdoZXJlIHdlIGRvCm5vdCBoYXZlIGFjY2VzcyB0byB0aGUgTFZS ZWxTdGF0ZS4gV2Ugb25seSBuZWVkIGEgZmV3IHBhcmFtZXRlcnMgZnJvbQp0aGUgTFZSZWxTdGF0 ZSwgc28ganVzdCBwYXNzIHRob3NlIGluIGV4cGxpY2l0bHkuCgpBdXRob3I6IE1lbGFuaWUgUGxh Z2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBLaXJpbGwgUmVz aGtlIDxyZXNoa2VraXJpbGxAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5l cy9tL2ZsYXQvQ0FBS1J1X1pNdzZOcGRfcW0yS00lMkJGd1EzY01PTXgxRGgzVk1ocDgtVjdTT0x4 ZEs5LWclNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyB8IDQ4ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAzMSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKaW5kZXggOTMyNzAxZDg0MjAuLjdmNmY2ODRiYzYzIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjMsOCArNDYzLDExIEBAIHN0YXRpYyB2b2lkIGRl YWRfaXRlbXNfYWRkKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIE9mZnNl dE51bWJlciAqCiAJCQkJCQkgICBpbnQgbnVtX29mZnNldHMpOwogc3RhdGljIHZvaWQgZGVhZF9p dGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIHZvaWQgZGVhZF9pdGVtc19j bGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7Ci1zdGF0aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCQkJIFRyYW5z YWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgYm9vbCAqYWxsX2Zyb3plbik7CitzdGF0 aWMgYm9vbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSBib29sICph bGxfZnJvemVuLAorCQkJCQkJCQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hp ZCwKKwkJCQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKTsKIHN0YXRpYyB2b2lk IHVwZGF0ZV9yZWxzdGF0c19hbGxfaW5kZXhlcyhMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGlj IHZvaWQgdmFjdXVtX2Vycm9yX2NhbGxiYWNrKHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCB1cGRh dGVfdmFjdXVtX2Vycm9yX2luZm8oTFZSZWxTdGF0ZSAqdmFjcmVsLApAQCAtMjAwOSw4ICsyMDEy LDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCQlBc3NlcnQocHJl c3VsdC5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUodmFjcmVsLCBidWYsCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZkZWJ1Z19hbGxfZnJv emVuKSkKKwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZiwK KwkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sICZkZWJ1Z19hbGxfZnJvemVu LAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5vZmZudW0pKQogCQkJQXNzZXJ0 KGZhbHNlKTsKIAogCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96 ZW4pOwpAQCAtMjkwNiw4ICsyOTEwLDggQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJICogZW1pdHRl ZC4KIAkgKi8KIAlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwotCWlmIChoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLCBidWZmZXIsICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQs Ci0JCQkJCQkJCSAmYWxsX2Zyb3plbikpCisJaWYgKGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2 YWNyZWwtPnJlbCwgYnVmZmVyLCB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJ ICZhbGxfZnJvemVuLCAmdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCAmdmFjcmVsLT5vZmZudW0pKQog CXsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKIApAQCAtMzU5 MCwxMCArMzU5NCwxOCBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVsKQog fQogCiAvKgotICogQ2hlY2sgaWYgZXZlcnkgdHVwbGUgaW4gdGhlIGdpdmVuIHBhZ2UgaXMgdmlz aWJsZSB0byBhbGwgY3VycmVudCBhbmQgZnV0dXJlCi0gKiB0cmFuc2FjdGlvbnMuIEFsc28gcmV0 dXJuIHRoZSB2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2hpY2ggaXMgdGhlIGhpZ2hlc3QKLSAqIHht aW4gYW1vbmdzdCB0aGUgdmlzaWJsZSB0dXBsZXMuICBTZXQgKmFsbF9mcm96ZW4gdG8gdHJ1ZSBp ZiBldmVyeSB0dXBsZQotICogb24gdGhpcyBwYWdlIGlzIGZyb3plbi4KKyAqIENoZWNrIGlmIGV2 ZXJ5IHR1cGxlIGluIHRoZSBnaXZlbiBwYWdlIGluIGJ1ZiBpcyB2aXNpYmxlIHRvIGFsbCBjdXJy ZW50IGFuZAorICogZnV0dXJlIHRyYW5zYWN0aW9ucy4KKyAqCisgKiBPbGRlc3RYbWluIGlzIHVz ZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisgKgorICogU2V0cyAqYWxsX2Zyb3plbiB0byB0 cnVlIGlmIGV2ZXJ5IHR1cGxlIG9uIHRoaXMgcGFnZSBpcyBmcm96ZW4uCisgKgorICogU2V0cyAq dmlzaWJpbGl0eV9jdXRvZmZfeGlkIHRvIHRoZSBoaWdoZXN0IHhtaW4gYW1vbmdzdCB0aGUgdmlz aWJsZSB0dXBsZXMuCisgKiBJdCBpcyBvbmx5IHZhbGlkIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNp YmxlLgorICoKKyAqICpsb2dnaW5nX29mZm51bSB3aWxsIGhhdmUgdGhlIE9mZnNldE51bWJlciBv ZiB0aGUgY3VycmVudCB0dXBsZSBiZWluZworICogcHJvY2Vzc2VkIGZvciB2YWN1dW0ncyBlcnJv ciBjYWxsYmFjayBzeXN0ZW0uCiAgKgogICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lv biBvZiBsYXp5X3NjYW5fcHJ1bmUoKS4gIElmIHlvdSBjaGFuZ2UKICAqIGFueXRoaW5nIGhlcmUs IG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgpA QCAtMzYwMSw5ICszNjEzLDExIEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNy ZWwpCiAgKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBi b29sCi1oZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIg YnVmLAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK KwkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9vbCAqYWxsX2Zyb3pl biwKIAkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkg Ym9vbCAqYWxsX2Zyb3plbikKKwkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdfb2ZmbnVtKQog ewogCVBhZ2UJCXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1Zik7CiAJQmxvY2tOdW1iZXIgYmxvY2tu byA9IEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1Zik7CkBAIC0zNjI2LDcgKzM2NDAsNyBAQCBoZWFw X3BhZ2VfaXNfYWxsX3Zpc2libGUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkg KiBTZXQgdGhlIG9mZnNldCBudW1iZXIgc28gdGhhdCB3ZSBjYW4gZGlzcGxheSBpdCBhbG9uZyB3 aXRoIGFueQogCQkgKiBlcnJvciB0aGF0IG9jY3VycmVkIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyB0 dXBsZS4KIAkJICovCi0JCXZhY3JlbC0+b2ZmbnVtID0gb2ZmbnVtOworCQkqbG9nZ2luZ19vZmZu dW0gPSBvZmZudW07CiAJCWl0ZW1pZCA9IFBhZ2VHZXRJdGVtSWQocGFnZSwgb2ZmbnVtKTsKIAog CQkvKiBVbnVzZWQgb3IgcmVkaXJlY3QgbGluZSBwb2ludGVycyBhcmUgb2Ygbm8gaW50ZXJlc3Qg Ki8KQEAgLTM2NTAsOSArMzY2NCw5IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0 YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAKIAkJdHVwbGUudF9kYXRhID0gKEhlYXBUdXBsZUhl YWRlcikgUGFnZUdldEl0ZW0ocGFnZSwgaXRlbWlkKTsKIAkJdHVwbGUudF9sZW4gPSBJdGVtSWRH ZXRMZW5ndGgoaXRlbWlkKTsKLQkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVsaWQo dmFjcmVsLT5yZWwpOworCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZChyZWwp OwogCi0JCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0dXBsZSwgdmFjcmVsLT5j dXRvZmZzLk9sZGVzdFhtaW4sCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKCZ0 dXBsZSwgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkgYnVmKSkKIAkJewogCQkJY2FzZSBIRUFQVFVQ TEVfTElWRToKQEAgLTM2NzMsNyArMzY4Nyw3IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShM VlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCQkJCSAqLwogCQkJCQl4bWluID0gSGVh cFR1cGxlSGVhZGVyR2V0WG1pbih0dXBsZS50X2RhdGEpOwogCQkJCQlpZiAoIVRyYW5zYWN0aW9u SWRQcmVjZWRlcyh4bWluLAotCQkJCQkJCQkJCQkgICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1p bikpCisJCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4pKQogCQkJCQl7CiAJCQkJCQlhbGxfdmlzaWJs ZSA9IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxzZTsKQEAgLTM3MDgsNyArMzcyMiw3 IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsCiAJfQkJCQkJCQkvKiBzY2FuIGFsb25nIHBhZ2UgKi8KIAogCS8qIENsZWFyIHRoZSBvZmZz ZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFnZS4gKi8K LQl2YWNyZWwtPm9mZm51bSA9IEludmFsaWRPZmZzZXROdW1iZXI7CisJKmxvZ2dpbmdfb2ZmbnVt ID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAogCXJldHVybiBhbGxfdmlzaWJsZTsKIH0KLS0gCjIu NDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Disposition: attachment; filename="v9-0006-Use-xl_heap_prune-record-for-setting-empty-pages-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgk5 RnJvbSAxNWViNzdkMmI1NGQ0ODU2ZDZkZDM5MmM0OGNiNjhkNjcyMWQyMGZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwNi8yMl0gVXNlIHhsX2hlYXBfcHJ1bmUgcmVjb3JkIGZvciBzZXR0aW5nIGVtcHR5 IHBhZ2VzCiBhbGwtdmlzaWJsZQoKQXMgcGFydCBvZiBhIHByb2plY3QgdG8gZWxpbWluYXRlIHhs X2hlYXBfdmlzaWJsZSByZWNvcmRzLCBlbGltaW5hdGUKdGhlaXIgdXNhZ2UgaW4gcGhhc2UgSSB2 YWN1dW0gb2YgZW1wdHkgcGFnZXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMgIHwgMTQgKysrKystLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgNTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hl YXBhbS5oICAgICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCsp LCAyMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGYw YjMzZDFiNjk2Li4zNzM5ODZiMjA0YSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTgzNiw2ICs4MzYsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVz dF94aWRfcmVtb3ZlZDsKIAogCQkJbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwg YnVmZmVyLAorCQkJCQkJCQkJICBmYWxzZSwKIAkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwgMCwg ZmFsc2UsCiAJCQkJCQkJCQkgIGNvbmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29u LApAQCAtMjA1NSw2ICsyMDU2LDkgQEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJl ZXplICp0dXBsZXMsIGludCBudHVwbGVzLAogICogY2FzZSwgdm1idWZmZXIgc2hvdWxkIGFscmVh ZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0eSBhbmQgc2hvdWxkCiAgKiBzdGls bCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KICAqCisgKiBmb3JjZV9oZWFwX2ZwaSBpbmRpY2F0ZXMg dGhhdCBhIGZ1bGwgcGFnZSBpbWFnZSBvZiB0aGUgaGVhcCBibG9jayBzaG91bGQgYmUKKyAqIGZv cmNlZC4KKyAqCiAgKiBzZXRfcGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxM X1ZJU0lCTEUgYW5kIHRodXMgc2hvdWxkIHVwZGF0ZQogICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hl Y2tzdW1zL3dhbF9sb2dfaGludHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CiAgKiBw cnVuZSBvciBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlLgpAQCAtMjA2NSw2ICsyMDY5LDcgQEAg aGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVwbGVz LAogICovCiB2b2lkCiBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJICBC dWZmZXIgdm1idWZmZXIsCiAJCQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkgIGJvb2wgc2V0 X3BkX2FsbF92aXMsCkBAIC0yMDk1LDEzICsyMTAwLDE2IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlyZWdidWZfZmxhZ3Mg PSBSRUdCVUZfU1RBTkRBUkQ7CiAKKwlpZiAoZm9yY2VfaGVhcF9mcGkpCisJCXJlZ2J1Zl9mbGFn cyB8PSBSRUdCVUZfRk9SQ0VfSU1BR0U7CisKIAkvKgogCSAqIFdlIGNhbiBhdm9pZCBhbiBGUEkg aWYgdGhlIG9ubHkgbW9kaWZpY2F0aW9uIHdlIGFyZSBtYWtpbmcgdG8gdGhlIGhlYXAKIAkgKiBw YWdlIGlzIHRvIHNldCBQRF9BTExfVklTSUJMRSBhbmQgY2hlY2tzdW1zL3dhbF9sb2dfaGludHMg YXJlIGRpc2FibGVkLgogCSAqLwotCWlmICghZG9fcHJ1bmUgJiYKLQkJbmZyb3plbiA9PSAwICYm Ci0JCSghc2V0X3BkX2FsbF92aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCisJZWxzZSBp ZiAoIWRvX3BydW5lICYmCisJCQkgbmZyb3plbiA9PSAwICYmCisJCQkgKCFzZXRfcGRfYWxsX3Zp cyB8fCAhWExvZ0hpbnRCaXRJc05lZWRlZCgpKSkKIAkJcmVnYnVmX2ZsYWdzIHw9IFJFR0JVRl9O T19JTUFHRTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggYTUw NjUyY2E1YTAuLmVkZDI4MTIzYjdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0xODc3LDMzICsxODc3LDQ3IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0 ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJICovCiAJCWlmICgh UGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKIAkJeworCQkJdWludDgJCW5ld192bWJpdHMgPSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQlWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisK IAkJCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBtYXJrIGJ1ZmZlciBkaXJ0eSBiZWZv cmUgd3JpdGluZyBhIFdBTCByZWNvcmQgKi8KKwkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwog CQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKLQkJCS8qCi0JCQkgKiBJdCdzIHBvc3NpYmxlIHRo YXQgYW5vdGhlciBiYWNrZW5kIGhhcyBleHRlbmRlZCB0aGUgaGVhcCwKLQkJCSAqIGluaXRpYWxp emVkIHRoZSBwYWdlLCBhbmQgdGhlbiBmYWlsZWQgdG8gV0FMLWxvZyB0aGUgcGFnZSBkdWUKLQkJ CSAqIHRvIGFuIEVSUk9SLiAgU2luY2UgaGVhcCBleHRlbnNpb24gaXMgbm90IFdBTC1sb2dnZWQs IHJlY292ZXJ5Ci0JCQkgKiBtaWdodCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0 aGUgcGFnZSBhbGwtdmlzaWJsZSBhbmQKLQkJCSAqIGZpbmQgdGhhdCB0aGUgcGFnZSBpc24ndCBp bml0aWFsaXplZCwgd2hpY2ggd2lsbCBjYXVzZSBhIFBBTklDLgotCQkJICogVG8gcHJldmVudCB0 aGF0LCBjaGVjayB3aGV0aGVyIHRoZSBwYWdlIGhhcyBiZWVuIHByZXZpb3VzbHkKLQkJCSAqIFdB TC1sb2dnZWQsIGFuZCBpZiBub3QsIGRvIHRoYXQgbm93LgotCQkJICovCi0JCQlpZiAoUmVsYXRp b25OZWVkc1dBTCh2YWNyZWwtPnJlbCkgJiYKLQkJCQlQYWdlR2V0TFNOKHBhZ2UpID09IEludmFs aWRYTG9nUmVjUHRyKQotCQkJCWxvZ19uZXdwYWdlX2J1ZmZlcihidWYsIHRydWUpOworCQkJTG9j a0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCisJCQkJCQkJCQkgdm1idWZmZXIsIG5l d192bWJpdHMpOworCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJCQl7 CisJCQkJLyoKKwkJCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgYW5vdGhlciBiYWNrZW5kIGhhcyBl eHRlbmRlZCB0aGUgaGVhcCwKKwkJCQkgKiBpbml0aWFsaXplZCB0aGUgcGFnZSwgYW5kIHRoZW4g ZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UKKwkJCQkgKiBkdWUgdG8gYW4gRVJST1IuICBTaW5j ZSBoZWFwIGV4dGVuc2lvbiBpcyBub3QgV0FMLWxvZ2dlZCwKKwkJCQkgKiByZWNvdmVyeSBtaWdo dCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0aGUgcGFnZQorCQkJCSAqIGFsbC12 aXNpYmxlIGFuZCBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6ZWQsIHdoaWNoCisJ CQkJICogd2lsbCBjYXVzZSBhIFBBTklDLiBUbyBwcmV2ZW50IHRoYXQsIGlmIHRoZSBwYWdlIGhh c24ndAorCQkJCSAqIGJlZW4gcHJldmlvdXNseSBXQUwtbG9nZ2VkLCBmb3JjZSBhIGhlYXAgRlBJ LgorCQkJCSAqLworCQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWwsIGJ1 ZiwKKwkJCQkJCQkJCQkgIFBhZ2VHZXRMU04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIsCisJ CQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIG5ld192bWJpdHMsCisJCQkJCQkJCQkJ ICB0cnVlLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJICBm YWxzZSwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJ CSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAwKTsK KwkJCX0KIAotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFwX3Nl dCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLAot CQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4p OwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxsLWZy b3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVS X0xPQ0tfVU5MT0NLKTsKKworCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFnZXMg Zm9yIGxvZ2dpbmcuICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJCQl2 YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQl9CkBAIC0yOTE3LDYgKzI5 MzEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051 bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwt PnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBidWZm ZXIsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgdm1idWZmZXIsCiAJCQkJCQkJCSAgdm1m bGFncywKIAkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCA4YjQ3 Mjk1ZWZhMi4uZTcxMjlhNjQ0YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM5NCw2ICszOTQsNyBA QCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBib29s IGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwgaW50 IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdlLCBP ZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJICBi b29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkJ CQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkgIGJvb2wgdm1fbW9kaWZpZWRfaGVhcF9wYWdl LAotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v9-0007-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgn6 RnJvbSBjNzExNjk2ZDA3MzA0Y2EzMTMwYTU2ZGQ5YjA2ODc3OWM3NGU1ZWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwNy8yMl0gQ29tYmluZSBsYXp5X3NjYW5fcHJ1bmUgVk0gY29ycnVwdGlvbiBjYXNl cwoKbGF6eV9zY2FuX3BydW5lKCkgdXBkYXRlcyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhh c2UgSSBvZiBoZWFwCnZhY3V1bWluZy4gSXQgYWxzbyBjaGVja3MgYW5kIGZpeGVzIGNvcnJ1cHRp b24gaW4gdGhlIFZNLiBUaGUgY29ycnVwdGlvbgpjYXNlcyB3aGVyZSBtaXhlZCBpbiB3aXRoIHRo ZSBub3JtYWwgdmlzaWJpbGl0eSBtYXAgdXBkYXRlIGNhc2VzLgoKQ2FyZWZ1bCBzdHVkeSBvZiB0 aGUgb3JkZXJpbmcgb2YgdGhlIGN1cnJlbnQgbG9naWMgcmV2ZWFscyB0aGF0IHRoZQpjb3JydXB0 aW9uIGNhc2VzIGNhbiBiZSByZW9yZGVyZWQgYW5kIGV4dHJhY3RlZCBpbnRvIGEgc2VwYXJhdGUK ZnVuY3Rpb24uIFRoaXMgc2hvdWxkIHJlc3VsdCBpbiBubyBhZGRpdGlvbmFsIG92ZXJoZWFkIHdo ZW4gY29tcGFyZWQgdG8KcHJldmlvdXMgZXhlY3V0aW9uLgoKVGhpcyByZW9yZGVyaW5nIG1ha2Vz IGl0IGNsZWFyIHdoaWNoIGNhc2VzIGFyZSBhYm91dCBjb3JydXB0aW9uIGFuZAp3aGljaCBjYXNl cyBhcmUgbm9ybWFsIFZNIHVwZGF0ZXMuIFNlcGFyYXRpbmcgdGhlbSBhbHNvIG1ha2VzIGl0CnBv c3NpYmxlIHRvIGNvbWJpbmUgdGhlIG5vcm1hbCBjYXNlcyBpbiBhIGZ1dHVyZSBjb21taXQuIFRo aXMgd2lsbCBtYWtlCnRoZSBsb2dpYyBlYXNpZXIgdG8gdW5kZXJzdGFuZCBhbmQgYWxsb3cgZm9y IGZ1cnRoZXIgc2VwYXJhdGlvbiBvZiB0aGUKbG9naWMgdG8gYWxsb3cgdXBkYXRpbmcgdGhlIFZN IGluIHRoZSBzYW1lIHJlY29yZCBhcyBwcnVuaW5nIGFuZApmcmVlemluZyBpbiBwaGFzZSBJLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDExNCArKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA3MyBpbnNlcnRpb25zKCspLCA0MSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZWRkMjgx MjNiN2QuLjE0NzQ4MzVjNzRiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC00MzAsNiArNDMwLDEyIEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j ayhMVlJlbFN0YXRlICp2YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxh enlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJ CQkJCQkgICBCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNo YXJlbG9jaywgQnVmZmVyIHZtYnVmZmVyKTsKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhf dm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJl ciBoZWFwX2JsaywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9w YWdlLAorCQkJCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAg aW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3Rh dGljIGludAlsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkJCUJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVm ZmVyLCBib29sIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5MzIsNiArMTkzOCw2 NiBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1 ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCisvKgorICogV2hlbiB1 cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywg d2UgdGFrZSB0aGUKKyAqIG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNv cnJ1cHRpb24uCisgKgorICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3Rh dHVzIG9mIHRoZSBoZWFwIHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0 IHVuc2tpcHBhYmxlIGJsb2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitz dGF0aWMgYm9vbAoraWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0 aW9uLAorCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBo ZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93 bl9hdiwKKwkJCQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2 bWJ1ZmZlcikKK3sKKwkvKgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0 eSBtYXAgYml0IHNob3VsZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQg aXMgY2xlYXIuICBIb3dldmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBj bGVhcmVkIGFmdGVyIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdl IG11c3QgcmVjaGVjaworCSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhh dCB0aGUgVk0gaXMgY29ycnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBh Z2VJc0FsbFZpc2libGUoaGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMo cmVsYXRpb24sIGhlYXBfYmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcs ICJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBp cyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0 aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUg dmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklk KCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNl ZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5 ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHht aW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1v dmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyBy ZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ug c2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0 IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBh cmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkg KiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9B TExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+ IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAi cGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGlu IHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShy ZWxhdGlvbiksIGhlYXBfYmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOwor CQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJl bGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9C SVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQorCisKIC8qIHFz b3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3RhdGljIGludAog Y21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpAQCAtMjA3OCw5 ICsyMTQ0LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyoKIAkg KiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5mb3JtYXRpb24g ZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSBj YWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2YXJpYWJsZXMK KwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNv cnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJl c3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHZh Y3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCXsKKwkJLyog RG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAq LworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQu YWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0g VklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzIsNDUgKzIyMDMsNiBAQCBsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkgKiBBcyBvZiBQ b3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0 IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3Nz aWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3aXRoIGJ1ZmZl ciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQuCi0JICovCi0J ZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNBbGxWaXNpYmxl KHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+cmVsLCBibGtu bywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZWxvZyhXQVJOSU5HLCAicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCSB2YWNyZWwtPnJlbG5hbWUsIGJsa25vKTsKLQkJdmlzaWJp bGl0eW1hcF9jbGVhcih2YWNyZWwtPnJlbCwgYmxrbm8sIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lC SUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JfQotCi0JLyoKLQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0 aGUgdmFsdWUgcmV0dXJuZWQgYnkKLQkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90Ci0JICogd3JvbmcgZm9yIHVzIHRv IHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKLQkg KiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZl IHhtaW4gdmFsdWUKLQkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25S ZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKLQkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1l cyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCi0JICogc28gaWYg d2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0 aGF0IHdlCi0JICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxs eSBhcmUsIGFuZCB0aGUKLQkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCi0JICoK LQkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQ RF9BTExfVklTSUJMRSBzZXQsCi0JICogaG93ZXZlci4KLQkgKi8KLQllbHNlIGlmIChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShwYWdlKSkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBhbGwt dmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgdmFjcmVsLT5yZWxuYW1l LCBibGtubyk7Ci0JCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0 eShidWYpOwotCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHZhY3JlbC0+cmVsLCBibGtubywgdm1idWZm ZXIsCi0JCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKLQl9Ci0KIAkvKgogCSAqIElm IHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4gYnV0IG5vdCBtYXJrZWQgYXMgc3Vj aCB5ZXQsIG1hcmsKIAkgKiBpdCBhcyBhbGwtZnJvemVuLiAgTm90ZSB0aGF0IGFsbF9mcm96ZW4g aXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Disposition: attachment; filename="v9-0009-Find-and-fix-VM-corruption-in-heap_page_prune_and.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgv8 RnJvbSAxYjg2YjU3MjRmYzM0Njg0NTdmMWUyZDVkNTdkZjRjNzA4MDgwMTY0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwOS8yMl0gRmluZCBhbmQgZml4IFZNIGNvcnJ1cHRpb24gaW4KIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVwZGF0ZSB0aGUgVk0gaW4gdGhl IHNhbWUgY3JpdGljYWwgc2VjdGlvbiBhbmQgV0FMCnJlY29yZCBhcyBwcnVuaW5nIGFuZCBmcmVl emluZy4gRm9yIGVhc2Ugb2YgcmV2aWV3LCB0aGlzIGNvbW1pdCBtYWtlcwpvbmUgc3RlcCB0b3dh cmQgZG9pbmcgdGhpcy4gSXQgbW92ZXMgdGhlIFZNIGNvcnJ1cHRpb24gaGFuZGxpbmcgY2FzZSB0 bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jICB8IDg3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8IDc3ICsrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDQgKysKIDMgZmls ZXMgY2hhbmdlZCwgOTYgaW5zZXJ0aW9ucygrKSwgNzIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAzNzM5ODZiMjA0YS4uNWMwOGE1ZDQ0YzcgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSAi YWNjZXNzL3RyYW5zYW0uaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZy5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9naW5zZXJ0LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgi CisjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNpbmNsdWRlICJjb21tYW5kcy92 YWN1dW0uaCIKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCkBAIC0xNzcsNiArMTc3LDEzIEBAIHN0YXRpYyB2b2lkIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9yZWRpcmVjdChQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROCiAK IHN0YXRpYyB2b2lkIHBhZ2VfdmVyaWZ5X3JlZGlyZWN0cyhQYWdlIHBhZ2UpOwogCitzdGF0aWMg Ym9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJ CQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhl YXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tu b3duX2F2LAorCQkJCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKTsKKwogCiAvKgogICogT3B0aW9uYWxseSBwcnVuZSBhbmQgcmVwYWly IGZyYWdtZW50YXRpb24gaW4gdGhlIHNwZWNpZmllZCBwYWdlLgpAQCAtMjYxLDcgKzI2OCw5IEBA IGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJ CQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBjYW5ub3Qgc2FmZWx5 IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcgd2l0aCB0aGUg Y3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUocmVsYXRpb24sIGJ1ZmZlciwgdmlzdGVzdCwgMCwKKwkJCWhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAorCQkJCQkJCQkJICAgSW52YWxpZEJ1 ZmZlciwKKwkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCiAJCQkJCQkJCQkgICBOVUxMLCAmcHJlc3Vs dCwgUFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CiAKIAkJCS8q CkBAIC0yOTQsNiArMzAzLDY0IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJfQogfQogCisvKgorICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKKyAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCisgKgor ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCisgKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgorICovCitzdGF0aWMgYm9vbAoraWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAorCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCisJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKKwkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAorCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKK3sKKwkv KgorCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCisJICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKKwkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawor CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KKwkgKi8KKwlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgorCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCisJeworCQllbG9nKFdBUk5JTkcsICJwYWdlIGlzIG5vdCBt YXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRp b24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywg dm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRy dWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQg YnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNr d2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3JvbmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBh cHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8gZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FM TF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBUaGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBu ZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUgYW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUg dGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGwsCisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJh ZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQgdGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsg YXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lIHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkg KiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNvcnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQg bmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBhIHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQs CisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAobmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxs VmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJZWxvZyhXQVJOSU5HLCAicGFnZSBjb250YWluaW5n IExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNc IiBwYWdlICV1IiwKKwkJCSBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBf YmxrKTsKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFwX3BhZ2UpOworCQlNYXJrQnVmZmVyRGly dHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Js aywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJu IHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQogCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQpAQCAt MzE0LDYgKzM4MSwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyKQogICogSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIG5vdCBzZXQsIGJl Y2F1c2UgYXQgdGhlIG1vbWVudCBvbmx5IGNhbGxlcnMKICAqIHRoYXQgYWxzbyBmcmVlemUgbmVl ZCB0aGF0IGluZm9ybWF0aW9uLgogICoKKyAqIGJsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJpbGl0 eSBzdGF0dXMgb2YgdGhlIGhlYXAgYmxvY2sgYXMgb2YgdGhlIGxhc3QgY2FsbAorICogdG8gZmlu ZF9uZXh0X3Vuc2tpcHBhYmxlX2Jsb2NrKCkuIHZtYnVmZmVyIGlzIHRoZSBidWZmZXIgdGhhdCBt YXkgYWxyZWFkeQorICogY29udGFpbiB0aGUgcmVxdWlyZWQgYmxvY2sgb2YgdGhlIHZpc2liaWxp dHkgbWFwLgorICoKICAqIHZpc3Rlc3QgaXMgdXNlZCB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1 cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECiAgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNm aWVzX3ZhY3V1bSkuCiAgKgpAQCAtMzQ5LDYgKzQyMCw4IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCiAgKi8KIHZvaWQKIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJ ICAgYm9vbCBibGtfa25vd25fYXYsCisJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJCQkg ICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJ ICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCkBAIC04OTcsNiArOTcwLDE2IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOwogCS8qIHRo ZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KIAor CS8qCisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBi ZSBkb25lIGluIGEgY3JpdGljYWwKKwkgKiBzZWN0aW9uLgorCSAqLworCXByZXN1bHQtPnZtX2Nv cnJ1cHRpb24gPSBmYWxzZTsKKwlpZiAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVf Vk0pCisJCXByZXN1bHQtPnZtX2NvcnJ1cHRpb24gPSBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1 cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJCQkJCQkJYmxvY2tubywgYnVmZmVyLCBwYWdlLAor CQkJCQkJCQkJCQkJCQkJCWJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkJCQkJCQlwcnN0YXRlLmxw ZGVhZF9pdGVtcywgdm1idWZmZXIpOwogCWlmIChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChw cmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRl eCBjYmUzNzM2OTc5MC4uZDQ5YzcxYmMxYjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1s YXp5LmMKQEAgLTQzMCwxMiArNDMwLDYgQEAgc3RhdGljIHZvaWQgZmluZF9uZXh0X3Vuc2tpcHBh YmxlX2Jsb2NrKExWUmVsU3RhdGUgKnZhY3JlbCwgYm9vbCAqc2tpcHNhbGx2aXMpOwogc3RhdGlj IGJvb2wgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsCiAJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJCSAg IGJvb2wgc2hhcmVsb2NrLCBCdWZmZXIgdm1idWZmZXIpOwotc3RhdGljIGJvb2wgaWRlbnRpZnlf YW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIEJs b2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJ CQkJCQkgICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZl cik7CiBzdGF0aWMgaW50CWxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZl ciBidWYsCiAJCQkJCQkJQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQlCdWZm ZXIgdm1idWZmZXIsIGJvb2wgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLApAQCAtMTkzOCw2 NSArMTkzMiw2IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBC dWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qCi0g KiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAgdmFj dXVtaW5nLCB3ZSB0YWtlIHRoZQotICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZpeCBh bnkgVk0gY29ycnVwdGlvbi4KLSAqCi0gKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlzaWJp bGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKLSAqIHdoaWxlIGZpbmRpbmcg dGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCku Ci0gKi8KLXN0YXRpYyBib29sCi1pZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVsYXRp b24gcmVsYXRpb24sCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCi0JCQkJCQkJICAg QnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKLQkJCQkJCQkgICBib29sIGhlYXBf YmxrX2tub3duX2F2LAotCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCi0JCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyKQotewotCS8qCi0JICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRoZSB2 aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKLQkgKiBwYWdlLWxl dmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0IGdv dAotCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNhbGxl ZCwgc28gd2UgbXVzdCByZWNoZWNrCi0JICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29uY2x1 ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgotCSAqLwotCWlmIChoZWFwX2Jsa19rbm93bl9h diAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCi0JCXZpc2liaWxpdHltYXBfZ2V0 X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKLQl7Ci0JCWVsb2co V0FSTklORywgInBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBt YXAgYml0IGlzIHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkgUmVsYXRpb25H ZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2Jsayk7Ci0JCXZpc2liaWxpdHltYXBfY2xl YXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQkvKgotCSAqIEl0J3MgcG9zc2libGUg Zm9yIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5z YWN0aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKLQkgKiB3cm9uZyBmb3Ig dXMgdG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9u ZQotCSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFs IHNhZmUgeG1pbiB2YWx1ZQotCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVz dE5vblJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcwotCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29t ZXRpbWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKLQkgKiBz byBpZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVw bGVzIHRoYXQgd2UKLQkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFj dHVhbGx5IGFyZSwgYW5kIHRoZQotCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4K LQkgKgotCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3 aXRoIFBEX0FMTF9WSVNJQkxFIHNldCwKLQkgKiBob3dldmVyLgotCSAqLwotCWlmIChubHBkZWFk X2l0ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCi0JewotCQllbG9nKFdB Uk5JTkcsICJwYWdlIGNvbnRhaW5pbmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZp c2libGUgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAotCQkJIFJlbGF0aW9uR2V0UmVsYXRp b25OYW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspOwotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBf cGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBf Y2xlYXIocmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFMpOwotCQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0K IAogLyogcXNvcnQgY29tcGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0 aWMgaW50CkBAIC0yMDU1LDExICsxOTkwLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRl ICp2YWNyZWwsCiAJICogdHVwbGVzLiBQcnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRo ZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0 aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFH RV9QUlVORV9GUkVFWkUgfCBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwt Pm5pbmRleGVzID09IDApCiAJCXBydW5lX29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktf VU5VU0VEX05PVzsKIAotCWhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNy ZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlvbnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo cmVsLCBidWYsCisJCQkJCQkJICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJ CSAgIHZtYnVmZmVyLAorCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywK IAkJCQkJCQkgICAmdmFjcmVsLT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4s CiAJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZy b3plblhpZCwgJnZhY3JlbC0+TmV3UmVsbWluTXhpZCk7CkBAIC0yMTQ0LDEwICsyMDgyLDkgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0 aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAo YXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJv bSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9v a2luZyBmb3IgYW55IFZNIGNvcnJ1cHRpb24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJ ICovCi0JaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxr bm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJCSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwg cHJlc3VsdC5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0 aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29y cnVwdGlvbiBpbiBpdCAqLwogCX0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCBlNzEyOWE2NDRhMS4uMGM3 ZWI1ZTQ2ZjQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9z cmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25z IiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhF QVBfUEFHRV9QUlVORV9NQVJLX1VOVVNFRF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFH RV9QUlVORV9GUkVFWkUJCQkJKDEgPDwgMSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFU RV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVkZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1 bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBA QCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwog CWJvb2wJCWFsbF9mcm96ZW47CiAJVHJhbnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOwor CWJvb2wJCXZtX2NvcnJ1cHRpb247CiAKIAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdl IG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVuc2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiAr MzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJl bGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFn ZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZv aWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAgIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwK IAkJCQkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9m ZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v9-0008-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgr7 RnJvbSA1MGNhOGM3M2E2MjUzMWY4ZDFiMzA4ODY1NTFjNDkyMDIzZWE5ZTQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAwOC8yMl0gQ29tYmluZSB2YWN1dW0gcGhhc2UgSSBWTSB1cGRhdGUgY2FzZXMKCldl IHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW0gLS0gZWl0aGVyIHNldHRpbmcg Ym90aCB0aGUgVk0KYml0cyB3aGVuIGFsbCBiaXRzIGFyZSBjdXJyZW50bHkgdW5zZXQgb3Igc2V0 dGluZyBqdXN0IHRoZSBmcm96ZW4gYml0CndoZW4gdGhlIGFsbC12aXNpYmxlIGJpdCBpcyBhbHJl YWR5IHNldC4KClRob3NlIHR3byBjYXNlcyBzaGFyZWQgbXVjaCBvZiB0aGUgc2FtZSBjb2RlIC0t IGxlYWRpbmcgdG8gdW5uZWNlc3NhcnkKZHVwbGljYXRpb24uIFRoaXMgY29tbWl0IGNvbWJpbmVz IHRoZW0sIHdoaWNoIGlzIHNpbXBsZXIgYW5kIGVhc2llciB0bwp1bmRlcnN0YW5kLgoKVGhlIGNv bWJpbmVkIGNhc2UgYWxzbyBoYXBwZW5zIHRvIGZpeCBhIGxvbmdzdGFuZGluZyBidWcgd2hlcmUg aWYgd2UgYXJlCm9ubHkgc2V0dGluZyBhbiBhbGwtdmlzaWJsZSBwYWdlIGFsbC1mcm96ZW4gYW5k IGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRzCmFyZSBlbmFibGVkLCB3ZSB3b3VsZCBmYWlsIHRvIHNl dCB0aGUgYnVmZmVyIGRpcnR5IGJlZm9yZSBzZXR0aW5nIHRoZQpwYWdlIExTTiBpbiB2aXNpYmls aXR5bWFwX3NldCgpLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDEwMSArKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzMiBpbnNl cnRpb25zKCspLCA2OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggMTQ3NDgzNWM3NGIuLmNiZTM3MzY5NzkwIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC0yMTUxLDExICsyMTUxLDI2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJl bFN0YXRlICp2YWNyZWwsCiAJewogCQkvKiBEb24ndCB1cGRhdGUgdGhlIFZNIGlmIHdlIGp1c3Qg Y2xlYXJlZCBjb3JydXB0aW9uIGluIGl0ICovCiAJfQotCWVsc2UgaWYgKCFhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKworCS8qCisJICogSWYgdGhl IHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5k IG5lZWRzCisJICogdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0 aGF0IGFsbF9mcm96ZW4gaXMgb25seQorCSAqIHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUs IHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuLgor CSAqLworCWVsc2UgaWYgKHByZXN1bHQuYWxsX3Zpc2libGUgJiYKKwkJCSAoIWFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSB8fAorCQkJICAocHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExf RlJPWkVOKHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkpKQogCXsKIAkJdWludDgJCW9s ZF92bWJpdHM7CiAJCXVpbnQ4CQlmbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CiAK KwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxp ZFRyYW5zYWN0aW9uSWQgYXMgb3VyCisJCSAqIGN1dG9mZl94aWQsIHNpbmNlIGEgc25hcHNob3RD b25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlCisJCSAqIGV2ZXJ5dGhpbmcgc2FmZSBm b3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZQorCQkgKiBmcm96 ZW4uCisJCSAqLwogCQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQogCQl7CiAJCQlBc3NlcnQoIVRy YW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbikpOwpAQCAtMjE2 OCwyMSArMjE4MywyOSBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQkg KiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3MsIHNldCBib3RoIGJpdHMg c28gdGhhdCB3ZQogCQkgKiBnZXQgYmFjayBpbiBzeW5jLgogCQkgKgotCQkgKiBOQjogSWYgdGhl IGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQot CQkgKiBkb24ndCBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVj a3N1bXMgYXJlCi0JCSAqIGVuYWJsZWQsIHdlIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhl IGhlYXAgcGFnZSBpcyBkaXJ0aWVkCi0JCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxp dHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICogR2l2ZW4gdGhhdCB0 aGlzIHNpdHVhdGlvbiBzaG91bGQgb25seSBoYXBwZW4gaW4gcmFyZSBjYXNlcyBhZnRlciBhCi0J CSAqIGNyYXNoLCBpdCBpcyBub3Qgd29ydGggb3B0aW1pemluZy4KKwkJICogSWYgdGhlIGhlYXAg cGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZSBkb24ndAor CQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMg YXJlIGVuYWJsZWQsIHdlCisJCSAqIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAg cGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCisJCSAqIGl0IHRvIHZpc2liaWxpdHltYXBf c2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KIAkJICovCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJaWYgKCFQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKKwkJeworCQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmKTsKKwkJfQorCiAJCW9sZF92bWJp dHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKIAkJCQkJCQkJ CSAgIEludmFsaWRYTG9nUmVjUHRyLAogCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQudm1f Y29uZmxpY3RfaG9yaXpvbiwKIAkJCQkJCQkJCSAgIGZsYWdzKTsKIAogCQkvKgorCQkgKiBFdmVu IGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96ZW4gYml0LCB0aGVyZSBpcyBhIHNt YWxsCisJCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2Vl biBzZXR0aW5nCisJCSAqIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcg dGhlIHZpc2liaWxpdHkgZHVyaW5nCisJCSAqIHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFs dWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCisJCSAqIHZpc2liaWxpdHkgbWFwIGNvdW50 ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgorCQkgKgogCQkgKiBJZiB0aGUgcGFn ZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5kL29yIGFsbC1mcm96ZW4gaW4gdGhl CiAJCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9yIGxvZ2dpbmcuCiAJCSAqLwpAQCAt MjIwMyw2NiArMjIyNiw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ CX0KIAl9CiAKLQkvKgotCSAqIElmIHRoZSBhbGwtdmlzaWJsZSBwYWdlIGlzIGFsbC1mcm96ZW4g YnV0IG5vdCBtYXJrZWQgYXMgc3VjaCB5ZXQsIG1hcmsKLQkgKiBpdCBhcyBhbGwtZnJvemVuLiAg Tm90ZSB0aGF0IGFsbF9mcm96ZW4gaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcwotCSAq IHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aCBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4K LQkgKi8KLQllbHNlIGlmIChhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gJiYgcHJlc3VsdC5h bGxfdmlzaWJsZSAmJgotCQkJIHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTih2 YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpCi0JewotCQl1aW50OAkJb2xkX3ZtYml0czsK LQotCQkvKgotCQkgKiBBdm9pZCByZWx5aW5nIG9uIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192 bSBhcyBhIHByb3h5IGZvciB0aGUKLQkJICogcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQg YmVpbmcgc2V0LCBzaW5jZSBpdCBtaWdodCBoYXZlIGJlY29tZQotCQkgKiBzdGFsZSAtLSBldmVu IHdoZW4gYWxsX3Zpc2libGUgaXMgc2V0Ci0JCSAqLwotCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUo cGFnZSkpCi0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRp cnR5KGJ1Zik7Ci0JCX0KLQotCQkvKgotCQkgKiBTZXQgdGhlIHBhZ2UgYWxsLWZyb3plbiAoYW5k IGFsbC12aXNpYmxlKSBpbiB0aGUgVk0uCi0JCSAqCi0JCSAqIFdlIGNhbiBwYXNzIEludmFsaWRU cmFuc2FjdGlvbklkIGFzIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhCi0JCSAqIHNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZSBldmVyeXRoaW5nIHNhZmUgZm9yIFJFRE8K LQkJICogd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUgZnJvemVuLgotCQkg Ki8KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hv cml6b24pKTsKLQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBi bGtubywgYnVmLAotCQkJCQkJCQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkJCQkgICB2 bWJ1ZmZlciwgSW52YWxpZFRyYW5zYWN0aW9uSWQsCi0JCQkJCQkJCQkgICBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0K LQkJLyoKLQkJICogVGhlIHBhZ2Ugd2FzIGxpa2VseSBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBp biB0aGUgVk0uIEhvd2V2ZXIsCi0JCSAqIHRoZXJlIGlzIGEgc21hbGwgY2hhbmNlIHRoYXQgaXQg d2FzIG1vZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4KLQkJICogc2V0dGluZyBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5Ci0JCSAqIGR1cmluZyBw cnVuaW5nLiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgYW55d2F5IHRvCi0J CSAqIGVuc3VyZSB0aGUgdmlzaWJpbGl0eSBtYXAgY291bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBh cmUgYWNjdXJhdGUuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7 Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3BhZ2Vf ZnJvemVuID0gdHJ1ZTsKLQkJfQotCi0JCS8qCi0JCSAqIFdlIGFscmVhZHkgY2hlY2tlZCB0aGF0 IHRoZSBwYWdlIHdhcyBub3Qgc2V0IGFsbC1mcm96ZW4gaW4gdGhlIFZNCi0JCSAqIGFib3ZlLCBz byB3ZSBkb24ndCBuZWVkIHRvIHRlc3QgdGhlIHZhbHVlIG9mIG9sZF92bWJpdHMuCi0JCSAqLwot CQllbHNlCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOwotCQkJKnZtX3Bh Z2VfZnJvemVuID0gdHJ1ZTsKLQkJfQotCX0KLQogCXJldHVybiBwcmVzdWx0Lm5kZWxldGVkOwog fQogCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0010-Keep-all_frozen-updated-too-in-heap_page_prune_an.patch" Content-Disposition: attachment; filename="v9-0010-Keep-all_frozen-updated-too-in-heap_page_prune_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhgy9 RnJvbSBjOTQ3ZjM1NjQ1ODUwNDliNDM0OTIxNmNiYmM1N2M0MmFhZWE4YWFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIzIEp1bCAyMDI1IDE2OjAxOjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxMC8yMl0gS2VlcCBhbGxfZnJvemVuIHVwZGF0ZWQgdG9vIGluCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZQoKV2UgcHJldmlvdXNseSByZWxpZWQgb24gb25seSB1c2luZyBhbGwt dmlzaWJsZSBhbmQgYWxsLWZyb3plbiB0b2dldGhlcgpidXQgaXQncyBiZXN0IHRvIGtlZXAgdGhl bSBib3RoIHVwZGF0ZWQuCgpGdXR1cmUgY29tbWl0cyB3aWxsIHNlcGFyYXRlIHVzYWdlIG9mIHRo ZXNlIGZpZWxkcywgc28gaXQgaXMgYmVzdCBub3QgdG8KcmVseSBvbiBhbGxfdmlzaWJsZSBmb3Ig YWxsX2Zyb3plbidzIHZhbGlkaXR5LgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jIHwgMTUgKysrKysrLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25z KCspLCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg NWMwOGE1ZDQ0YzcuLjE4ZWFiOGQwNTE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMTQzLDEwICsxNDMsNiBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIHdoZXRoZXIgdG8gZnJl ZXplIHRoZSBwYWdlIG9yIG5vdC4gIFRoZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbgogCSAq IHZhbHVlcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGFyZSBhZGp1c3RlZCB0byBpbmNsdWRlIExQ X0RFQUQgaXRlbXMgYXQKIAkgKiB0aGUgZW5kLgotCSAqCi0JICogYWxsX2Zyb3plbiBzaG91bGQg b25seSBiZSBjb25zaWRlcmVkIHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIGFsc28gc2V0OwotCSAq IHdlIGRvbid0IGJvdGhlciB0byBjbGVhciB0aGUgYWxsX2Zyb3plbiBmbGFnIGV2ZXJ5IHRpbWUg d2UgY2xlYXIgdGhlCi0JICogYWxsX3Zpc2libGUgZmxhZy4KIAkgKi8KIAlib29sCQlhbGxfdmlz aWJsZTsKIAlib29sCQlhbGxfZnJvemVuOwpAQCAtODI0LDYgKzgyMCw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkgKi8K IAl9CiAKKwlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNpYmxl KTsKIAkvKiBBbnkgZXJyb3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwg Ki8KIAlTVEFSVF9DUklUX1NFQ1RJT04oKTsKIApAQCAtMTQ2OCw3ICsxNDY1LDcgQEAgaGVhcF9w cnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnBy c3RhdGUsIE9mZnNldE51bWIKIAogCQkJCWlmICghSGVhcFR1cGxlSGVhZGVyWG1pbkNvbW1pdHRl ZChodHVwKSkKIAkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJ CQlicmVhazsKIAkJCQl9CiAKQEAgLTE0OTAsNyArMTQ4Nyw3IEBAIGhlYXBfcHJ1bmVfcmVjb3Jk X3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZz ZXROdW1iCiAJCQkJQXNzZXJ0KHByc3RhdGUtPmN1dG9mZnMpOwogCQkJCWlmICghVHJhbnNhY3Rp b25JZFByZWNlZGVzKHhtaW4sIHByc3RhdGUtPmN1dG9mZnMtPk9sZGVzdFhtaW4pKQogCQkJCXsK LQkJCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCQkJcHJzdGF0ZS0+YWxsX3Zp c2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAJCQkJCWJyZWFrOwogCQkJCX0K IApAQCAtMTUwMyw3ICsxNTAwLDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAogCQljYXNl IEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEOgogCQkJcHJzdGF0ZS0+cmVjZW50bHlfZGVhZF90dXBs ZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRlLT5hbGxf dmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJCSAqIFRo aXMgdHVwbGUgd2lsbCBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZpZWxkIHNv CkBAIC0xNTIyLDcgKzE1MTksNyBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9y bWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJICogYXNz dW1wdGlvbiBpcyBhIGJpdCBzaGFreSwgYnV0IGl0IGlzIHdoYXQgYWNxdWlyZV9zYW1wbGVfcm93 cygpCiAJCQkgKiBkb2VzLCBzbyBiZSBjb25zaXN0ZW50LgogCQkJICovCi0JCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5h bGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBJZiB3ZSB3YW50ZWQgdG8gb3B0aW1p emUgZm9yIGFib3J0cywgd2UgbWlnaHQgY29uc2lkZXIgbWFya2luZwpAQCAtMTU0MCw3ICsxNTM3 LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIHdpbGwgY29tbWl0IGFuZCB1cGRh dGUgdGhlIGNvdW50ZXJzIGFmdGVyIHdlIHJlcG9ydC4KIAkJCSAqLwogCQkJcHJzdGF0ZS0+bGl2 ZV90dXBsZXMrKzsKLQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQlwcnN0YXRl LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCQkJLyoKIAkJ CSAqIFRoaXMgdHVwbGUgbWF5IHNvb24gYmVjb21lIERFQUQuICBVcGRhdGUgdGhlIGhpbnQgZmll bGQgc28gdGhhdAotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0011-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v9-0011-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhh210 RnJvbSBmZTkwOTYwOWMwZDc2YjgzNTQzMDE2OWEyYjc1NzliMDE3N2NhMmQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHY5IDExLzIyXSBVcGRhdGUgVk0gaW4gcHJ1bmVoZWFwLmMKCkFzIGEgc3RlcCB0b3dhcmQg dXBkYXRpbmcgdGhlIFZNIGluIHRoZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNv cmQgYXMgcHJ1bmluZyBhbmQgZnJlZXppbmcgKGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWluZyks IGZpcnN0IG1vdmUKdGhlIFZNIHVwZGF0ZSAoc3RpbGwgaW4gaXRzIG93biBjcml0aWNhbCBzZWN0 aW9uIGFuZCBXQUwgcmVjb3JkKSBpbnRvCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkuIFRo aXMgbWFrZXMgcmV2aWV3IGVhc2llci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCA5OSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAxNSArKystLQogMyBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMThlYWI4ZDA1MTguLjM0ODNiNWNhZmYzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzYwLDcgKzM2MCw4IEBAIGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdl J3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZN LgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9u IHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1h dGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQzNiw2 ICs0MzcsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9v bAkJZG9faGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKIApAQCAtOTM2LDcgKzkzOSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJl ZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUK IAkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3Qg dGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNh bGxlci4KKwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKQogCXsKQEAgLTk1MiwzMSArOTU1LDkxIEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCiAJLyoKLQkgKiBGb3IgY2FsbGVycyBwbGFubmlu ZyB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpvbgotCSAq IGZvciB0aGF0IHJlY29yZCBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gIEhv d2V2ZXIsIGlmIHRoZQotCSAqIHBhZ2UgaXMgY29tcGxldGVseSBmcm96ZW4sIHRoZXJlIGNhbiBi ZSBubyBjb25mbGljdCBhbmQgdGhlCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBzaG91bGQgcmVt YWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcwotCSAqIHRoZSBjYXNlIHRo YXQgd2UganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSByZWNvcmQK LQkgKiBpbmNsdWRlZCB0aGUgY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIGNhbGxlciBkb2Vz bid0IG5lZWQgaXQuCisJICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29u ZmxpY3QgaG9yaXpvbiBmb3IgdGhhdCByZWNvcmQKKwkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1p biBvbiB0aGUgcGFnZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCisJICogY29tcGxldGVseSBm cm96ZW4sIHRoZXJlIGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6 b24KKwkgKiBzaG91bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRl cyB0aGUgY2FzZSB0aGF0IHdlCisJICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBy dW5lLWZyZWV6ZSByZWNvcmQgaW5jbHVkZWQgdGhlCisJICogY29uZmxpY3QgWElEIGFscmVhZHkg c28gdGhlIFZNIHVwZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgogCSAqLwogCWlmIChwcmVz dWx0LT5hbGxfZnJvemVuKQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxp ZFRyYW5zYWN0aW9uSWQ7CiAJZWxzZQogCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAKLQlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKLQkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCi0KIAkvKgotCSAqIENsZWFyIGFueSBWTSBjb3Jy dXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCi0JICog c2VjdGlvbi4KKwkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24g aW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCisJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25l eHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCisJICogYWxsX2Zyb3pl biB2YXJpYWJsZXMuCiAJICovCi0JcHJlc3VsdC0+dm1fY29ycnVwdGlvbiA9IGZhbHNlOwogCWlm IChvcHRpb25zICYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSkKLQkJcHJlc3VsdC0+dm1fY29y cnVwdGlvbiA9IGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJ CQkJCQkJCQkJCQlibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0JCQkJCQkJCQkJCQkJCQkJYmxrX2tu b3duX2F2LAotCQkJCQkJCQkJCQkJCQkJCXByc3RhdGUubHBkZWFkX2l0ZW1zLCB2bWJ1ZmZlcik7 CisJeworCQlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJ CQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkgICBibGtfa25vd25f YXYsCisJCQkJCQkJCQkJICAgcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJewor CQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24sIGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAq LworCQl9CisKKwkJLyoKKwkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0IG1hcmtlZCBhbGwtdmlz aWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIG1lIG1hcmtlZCBhbGwt ZnJvemVuLCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBhbGxfZnJvemVuCisJCSAqIGlzIG9ubHkg dmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoCisJCSAq IGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuLgorCQkgKi8KKwkJZWxzZSBpZiAocHJlc3VsdC0+ YWxsX3Zpc2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYgfHwKKwkJCQkgIChwcmVzdWx0LT5h bGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25vLCAmdm1idWZmZXIp KSkpCisJCXsKKwkJCUFzc2VydChwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKTsKKwkJCXZtZmxh Z3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOworCisJCQkvKgorCQkJICogSWYgdGhlIHBh Z2UgaXMgYWxsLWZyb3plbiwgd2UgY2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKKwkJ CSAqIG91ciBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZp Y2llbnQgdG8KKwkJCSAqIG1ha2UgZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQg d2hlbiB0aGUgcGFnZSdzIHR1cGxlcworCQkJICogd2VyZSBmcm96ZW4uCisJCQkgKi8KKwkJCWlm IChwcmVzdWx0LT5hbGxfZnJvemVuKQorCQkJeworCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElz VmFsaWQocHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbikpOworCQkJCXZtZmxhZ3MgfD0gVklT SUJJTElUWU1BUF9BTExfRlJPWkVOOworCQkJfQorCisJCQkvKgorCQkJICogSXQncyBwb3NzaWJs ZSBmb3IgdGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQgdGhlIHBhZ2UtbGV2ZWwgYml0CisJCQkg KiB0byBiZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZC4KKwkJCSAqCisJCQkgKiBB bmQgZXZlbiBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0byB1cGRhdGUgdGhlIGZyb3plbiBiaXQg aW4KKwkJCSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJlbHkgb24gYWxsX3Zpc2libGVfYWNjb3Jk aW5nX3RvX3ZtIGFzIGEKKwkJCSAqIHByb3h5IGZvciB0aGUgcGFnZS1sZXZlbCBQRF9BTExfVklT SUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdAorCQkJICogbWlnaHQgaGF2ZSBiZWNvbWUgc3Rh bGUuCisJCQkgKgorCQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhl IFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQorCQkJICogZG9uJ3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVh cCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFyZQorCQkJICogZW5hYmxlZCwgd2UgZG8g bmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKKwkJCSAqIGJl Zm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJl CisJCQkgKiBsb2dnZWQuCisJCQkgKi8KKwkJCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8 fCBYTG9nSGludEJpdElzTmVlZGVkKCkpCisJCQl7CisJCQkJUGFnZVNldEFsbFZpc2libGUocGFn ZSk7CisJCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCQl9CisKKwkJCW9sZF92bWJpdHMg PSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxvY2tubywgYnVmZmVyLCBJbnZhbGlkWExv Z1JlY1B0ciwKKwkJCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC0+dm1fY29uZmxpY3RfaG9y aXpvbiwKKwkJCQkJCQkJCQkgICB2bWZsYWdzKTsKKwkJfQorCX0KKworCXByZXN1bHQtPmxwZGVh ZF9pdGVtcyA9IHByc3RhdGUubHBkZWFkX2l0ZW1zOworCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zm c2V0cyBhcnJheSB3YXMgYWxyZWFkeSBmaWxsZWQgaW4gKi8KKworCXByZXN1bHQtPm9sZF92bWJp dHMgPSBvbGRfdm1iaXRzOworCXByZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOworCiAJaWYg KHByc3RhdGUuZnJlZXplKQogCXsKIAkJaWYgKHByZXN1bHQtPm5mcm96ZW4gPiAwKQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGQ0OWM3MWJjMWI1Li4wNWQzZDJhMzI2NyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMTkzMiw3ICsxOTMyLDYgQEAg bGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsIEJs b2NrTnVtYmVyIGJsa25vLAogCXJldHVybiBmYWxzZTsKIH0KIAotCiAvKiBxc29ydCBjb21wYXJh dG9yIGZvciBzb3J0aW5nIE9mZnNldE51bWJlcnMgKi8KIHN0YXRpYyBpbnQKIGNtcE9mZnNldE51 bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKQEAgLTE5NDgsNyArMTk0Nyw4IEBA IGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCiAgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBv ZiBkYXRlLiBUaGVzZSB3aWxsIGJlCisgKiBwYXNzZWQgb24gdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoKSB0byB1c2Ugd2hpbGUgc2V0dGluZyB0aGUgVk0uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMTk3Nyw2ICsxOTc3LDcgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRh dGUgY2hhaW5zIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KKwkg KiBUaGVuLCBpZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRh dGUgdGhlIFZNLgogCSAqCiAJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCB3ZSBj YW4gaW1tZWRpYXRlbHkgbWFyayB3b3VsZC1iZSBkZWFkCiAJICogaXRlbXMgTFBfVU5VU0VELgpA QCAtMTk4NSwxMCArMTk4Niw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJICogcHJlc3VsdC5uZGVsZXRlZC4gIEl0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBw cmVzdWx0LmxwZGVhZF9pdGVtczsKIAkgKiBwcmVzdWx0LmxwZGVhZF9pdGVtcydzIGZpbmFsIHZh bHVlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBudW1iZXIgb2YKIAkgKiB0dXBsZXMgdGhhdCB3 ZXJlIGRlbGV0ZWQgZnJvbSBpbmRleGVzLgotCSAqCi0JICogV2Ugd2lsbCB1cGRhdGUgdGhlIFZN IGFmdGVyIGNvbGxlY3RpbmcgTFBfREVBRCBpdGVtcyBhbmQgZnJlZXppbmcKLQkgKiB0dXBsZXMu IFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK LQkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KIAlwcnVuZV9vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk07CiAJaWYgKHZhY3JlbC0+bmluZGV4 ZXMgPT0gMCkKQEAgLTIwODAsODggKzIwNzcsMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVh ZF9pdGVtcykpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQg YmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICog YWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBj b3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2li bGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAocHJlc3VsdC52bV9j b3JydXB0aW9uKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVz dCBjbGVhcmVkIGNvcnJ1cHRpb24gaW4gaXQgKi8KLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdl IGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFuZCBuZWVk cwotCSAqIHRvIG1lIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNIE5vdGUgdGhhdCBh bGxfZnJvemVuIGlzIG9ubHkKLQkgKiB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3 ZSBtdXN0IGNoZWNrIGJvdGggYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbi4KLQkgKi8K LQllbHNlIGlmIChwcmVzdWx0LmFsbF92aXNpYmxlICYmCi0JCQkgKCFhbGxfdmlzaWJsZV9hY2Nv cmRpbmdfdG9fdm0gfHwKLQkJCSAgKHByZXN1bHQuYWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pF Tih2YWNyZWwtPnJlbCwgYmxrbm8sICZ2bWJ1ZmZlcikpKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1i aXRzOwotCQl1aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwotCi0JCS8q Ci0JCSAqIElmIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFu c2FjdGlvbklkIGFzIG91cgotCQkgKiBjdXRvZmZfeGlkLCBzaW5jZSBhIHNuYXBzaG90Q29uZmxp Y3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8gbWFrZQotCQkgKiBldmVyeXRoaW5nIHNhZmUgZm9yIFJF RE8gd2FzIGxvZ2dlZCB3aGVuIHRoZSBwYWdlJ3MgdHVwbGVzIHdlcmUKLQkJICogZnJvemVuLgot CQkgKi8KLQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkSXNWYWxpZChwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQotCi0JCS8qCi0JCSAqIEl0IHNob3VsZCBu ZXZlciBiZSB0aGUgY2FzZSB0aGF0IHRoZSB2aXNpYmlsaXR5IG1hcCBwYWdlIGlzIHNldAotCQkg KiB3aGlsZSB0aGUgcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIsIGJ1dCB0aGUgcmV2ZXJzZSBpcyBh bGxvd2VkIChpZgotCQkgKiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVkKS4gIFJlZ2FyZGxlc3Ms IHNldCBib3RoIGJpdHMgc28gdGhhdCB3ZQotCQkgKiBnZXQgYmFjayBpbiBzeW5jLgotCQkgKgot CQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5v dCBzZXQsIHdlIGRvbid0Ci0JCSAqIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2 ZXIsIGlmIGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgd2UKLQkJICogZG8gbmVlZCB0byBtYWtlIHN1 cmUgdGhhdCB0aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQgYmVmb3JlIHBhc3NpbmcKLQkJICogaXQg dG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKi8K LQkJaWYgKCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkK LQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVyRGlydHkoYnVm KTsKLQkJfQotCi0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwg Ymxrbm8sIGJ1ZiwKLQkJCQkJCQkJCSAgIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJICAg dm1idWZmZXIsIHByZXN1bHQudm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCSAgIGZsYWdz KTsKLQotCQkvKgotCQkgKiBFdmVuIGlmIHdlIGFyZSBvbmx5IHNldHRpbmcgdGhlIGFsbC1mcm96 ZW4gYml0LCB0aGVyZSBpcyBhIHNtYWxsCi0JCSAqIGNoYW5jZSB0aGF0IHRoZSBWTSB3YXMgbW9k aWZpZWQgc29tZXRpbWUgYmV0d2VlbiBzZXR0aW5nCi0JCSAqIGFsbF92aXNpYmxlX2FjY29yZGlu Z190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkgZHVyaW5nCi0JCSAqIHBydW5pbmcu IENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyB0byBlbnN1cmUgdGhlCi0JCSAq IHZpc2liaWxpdHkgbWFwIGNvdW50ZXJzIHVzZWQgZm9yIGxvZ2dpbmcgYXJlIGFjY3VyYXRlLgot CQkgKgotCQkgKiBJZiB0aGUgcGFnZSB3YXNuJ3QgYWxyZWFkeSBzZXQgYWxsLXZpc2libGUgYW5k L29yIGFsbC1mcm96ZW4gaW4gdGhlCi0JCSAqIFZNLCBjb3VudCBpdCBhcyBuZXdseSBzZXQgZm9y IGxvZ2dpbmcuCi0JCSAqLwotCQlpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9W SVNJQkxFKSA9PSAwKQotCQl7Ci0JCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7Ci0J CQlpZiAocHJlc3VsdC5hbGxfZnJvemVuKQotCQkJewotCQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2li bGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKLQkJCX0KLQkJ fQotCQllbHNlIGlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTikgPT0g MCAmJgotCQkJCSBwcmVzdWx0LmFsbF9mcm96ZW4pCisJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVf cGFnZXMrKzsKKwkJaWYgKChwcmVzdWx0Lm5ld192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pICE9IDApCiAJCXsKLQkJCXZhY3JlbC0+dm1fbmV3X2Zyb3plbl9wYWdlcysrOworCQkJ dmFjcmVsLT52bV9uZXdfdmlzaWJsZV9mcm96ZW5fcGFnZXMrKzsKIAkJCSp2bV9wYWdlX2Zyb3pl biA9IHRydWU7CiAJCX0KIAl9CisJZWxzZSBpZiAoKHByZXN1bHQub2xkX3ZtYml0cyAmIFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTikgPT0gMCAmJgorCQkJIChwcmVzdWx0Lm5ld192bWJpdHMgJiBW SVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pICE9IDApCisJeworCQlBc3NlcnQoKHByZXN1bHQubmV3 X3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEUpICE9IDApOworCQl2YWNyZWwtPnZt X25ld19mcm96ZW5fcGFnZXMrKzsKKwkJKnZtX3BhZ2VfZnJvemVuID0gdHJ1ZTsKKwl9CiAKIAly ZXR1cm4gcHJlc3VsdC5uZGVsZXRlZDsKIH0KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYzdlYjVlNDZm NC4uYjg1NjQ4NDU2ZTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIzNSwyMCArMjM1LDIxIEBAIHR5 cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJaW50CQkJcmVjZW50bHlfZGVhZF90dXBs ZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGluZGljYXRlIGlmIHRo ZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgotCSAqIGJpdHMgaW4gdGhlIHZpc2liaWxpdHkg bWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSwgYWZ0ZXIgcHJ1bmluZy4KKwkgKiBhbGxfdmlz aWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSB0aGUgc3RhdHVzIG9mIHRoZSBwYWdlIGFzIHJl ZmxlY3RlZAorCSAqIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwcnVuaW5nLCBmcmVlemlu ZywgYW5kIHNldHRpbmcgYW55IHBhZ2VzCisJICogYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxp dHkgbWFwLgogCSAqCi0JICogdm1fY29uZmxpY3RfaG9yaXpvbiBpcyB0aGUgbmV3ZXN0IHhtaW4g b2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuICBUaGUKLQkgKiBjYWxsZXIgY2FuIHVzZSBpdCBh cyB0aGUgY29uZmxpY3QgaG9yaXpvbiB3aGVuIHNldHRpbmcgdGhlIFZNIGJpdHMuICBJdAotCSAq IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMgKG5mcm96ZW4gPiAwKSwgYW5k IGFsbF9mcm96ZW4gaXMKLQkgKiB0cnVlLgorCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlCisJICogKG9sZGVyIHRoYW4g T2xkZXN0WG1pbikuICBJdCB3aWxsIG9ubHkgYmUgdmFsaWQgaWYgd2UgZGlkIG5vdCBzZXQgdGhl CisJICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4KIAkgKgogCSAqIFRoZXNlIGFyZSBvbmx5 IHNldCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KIAkgKi8KIAlib29s CQlhbGxfdmlzaWJsZTsKIAlib29sCQlhbGxfZnJvemVuOwogCVRyYW5zYWN0aW9uSWQgdm1fY29u ZmxpY3RfaG9yaXpvbjsKLQlib29sCQl2bV9jb3JydXB0aW9uOworCXVpbnQ4CQlvbGRfdm1iaXRz OworCXVpbnQ4CQluZXdfdm1iaXRzOwogCiAJLyoKIAkgKiBXaGV0aGVyIG9yIG5vdCB0aGUgcGFn ZSBtYWtlcyByZWwgdHJ1bmNhdGlvbiB1bnNhZmUuICBUaGlzIGlzIHNldCB0bwotLSAKMi40My4w Cgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0013-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Disposition: attachment; filename="v9-0013-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhha12 RnJvbSA5NjAxM2IwZmJmZDNiZjYzZDI5NDA1NDllNTEzMTdhODllZTczYjRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDE0OjA3OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxMy8yMl0gUmVuYW1lIFBydW5lU3RhdGUuZnJlZXplIHRvIGF0dGVtcHRfZnJlZXpl CgpUaGlzIG1ha2VzIGl0IG1vcmUgY2xlYXIgdGhhdCB0aGlzIGlzIHRvIGluZGljYXRlIHRoZSBj YWxsZXIgd291bGQgbGlrZQpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGNvbnNpZGVy IGZyZWV6aW5nIHR1cGxlcyAtLSBub3QgdGhhdCB3ZQp1bHRpbWF0ZWx5IHdpbGwgZW5kIHVwIGZy ZWV6aW5nIHRoZW0uCgpBbHNvIHJlbmFtZSBsb2NhbCB2YXJpYWJsZSBoaW50X2JpdF9mcGkgdG8g ZGlkX3R1cGxlX2hpbnRfZnBpLiBUaGlzCm1ha2VzIGl0IGNsZWFyIGl0IGlzIGFib3V0IHR1cGxl IGhpbnRzIGFuZCBub3QgcGFnZSBoaW50cyBhbmQgdGhhdCBpdAppbmRpY2F0ZXMgc29tZXRoaW5n IHRoYXQgaGFwcGVuZWQgYW5kIG5vdCBzb21ldGhpbmcgdGhhdCBjb3VsZCBoYXBwZW4uCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgfCAyMCArKysrKysrKysrLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNjgzYzE3NjJjMjUuLjY2OWMwODhj Y2ZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDMsNyArNDMsNyBAQCB0 eXBlZGVmIHN0cnVjdAogCS8qIHdoZXRoZXIgb3Igbm90IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nIHBydW5pbmcgKi8KIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyog d2hldGhlciB0byBhdHRlbXB0IGZyZWV6aW5nIHR1cGxlcyAqLwotCWJvb2wJCWZyZWV6ZTsKKwli b29sCQlhdHRlbXB0X2ZyZWV6ZTsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdG8gY29uc2lk ZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21lIGJvb2trZWVwaW5nCkBAIC00NTIsNyAr NDUyLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJYm9vbAkJZG9fc2V0X3ZtOwogCXVpbnQ4CQl2bWZsYWdzID0gMDsKIAl1 aW50OAkJb2xkX3ZtYml0cyA9IDA7Ci0JYm9vbAkJaGludF9iaXRfZnBpOworCWJvb2wJCWRpZF90 dXBsZV9oaW50X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uud2FsX2ZwaTsK IAlib29sCQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gZmFsc2U7CiAJYm9vbAkJc2V0X3Bk X2FsbF92aXNpYmxlID0gZmFsc2U7CkBAIC00NjAsNyArNDYwLDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJLyogQ29weSBw YXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXBy c3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJlZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAm IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CiAJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVf dm0gPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0 ZS5jdXRvZmZzID0gY3V0b2ZmczsKIApAQCAtNDg1LDcgKzQ4NSw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJLyogaW5p dGlhbGl6ZSBwYWdlIGZyZWV6aW5nIHdvcmtpbmcgc3RhdGUgKi8KIAlwcnN0YXRlLnBhZ2Vmcnou ZnJlZXplX3JlcXVpcmVkID0gZmFsc2U7Ci0JaWYgKHByc3RhdGUuZnJlZXplKQorCWlmIChwcnN0 YXRlLmF0dGVtcHRfZnJlZXplKQogCXsKIAkJQXNzZXJ0KG5ld19yZWxmcm96ZW5feGlkICYmIG5l d19yZWxtaW5fbXhpZCk7CiAJCXByc3RhdGUucGFnZWZyei5GcmVlemVQYWdlUmVsZnJvemVuWGlk ID0gKm5ld19yZWxmcm96ZW5feGlkOwpAQCAtNTM1LDcgKzUzNSw3IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGJvb2tr ZWVwaW5nLiBJbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5n IHRoZSB3b3JrCiAJICogdG8gdXBkYXRlIHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFu Z2VkX2xwX25vcm1hbCgpLgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0 ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlw cnN0YXRlLmFsbF9mcm96ZW4gPSB0cnVlOwpAQCAtNjUzLDcgKzY1Myw3IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElm IGNoZWNrc3VtcyBhcmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5 IGhhdmUgY2F1c2VkCiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRf ZnBpID0gZnBpX2JlZm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nl c3MgSE9UIGNoYWlucy4KQEAgLTc3MCw3ICs3NzAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVw YXJlZCwgb3Igbm90LgogCSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZy ZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBh Z2VmcnouZnJlZXplX3JlcXVpcmVkKQogCQl7CkBAIC04MDMsNyArODAzLDcgQEAgaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJ ICovCiAJCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQkJCXsKLQkJCQkJaWYg KGhpbnRfYml0X2ZwaSkKKwkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKIAkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7CiAJCQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCQl7CkBAIC0xMTI4LDcg KzExMjgsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9p dGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmls bGVkIGluICovCiAKLQlpZiAocHJzdGF0ZS5mcmVlemUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9m cmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCiAJCXsKQEAgLTE3MTUsNyAr MTcxNSw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdl LCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJICogdG8gdXBkYXRlIHRoZSBWTSwg d2UgaGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVyeQogCSAq IHR1cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3RhbGx5IGZy b3plbi4KIAkgKi8KLQlpZiAocHJzdGF0ZS0+ZnJlZXplKQorCWlmIChwcnN0YXRlLT5hdHRlbXB0 X2ZyZWV6ZSkKIAl7CiAJCWJvb2wJCXRvdGFsbHlfZnJvemVuOwogCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0014-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v9-0014-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhd13 RnJvbSBmYWY5MzYwNDJiYmUyMjUxNzVlOGJjNjQ3NGQzNjE3ZTcwY2IyMTVkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxNC8yMl0gUmVtb3ZlIHhsX2hlYXBfdmlzaWJsZSBlbnRpcmVseQoKVGhlcmUgYXJl IG5vdyBubyB1c2VycyBvZiB0aGlzLCBzbyBlbGltaW5hdGUgaXQgZW50aXJlbHkuCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMgICAgICB8ICAgMyArLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICB8ICA1NCArLS0tLS0tLQogc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICB8IDE1MiArKy0tLS0tLS0tLS0tLS0tLS0t LS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICB8ICAgNCArLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jICAgICB8ICAxMCArLQogc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jICB8IDEwOSArLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyAgIHwgIDEwIC0tCiBzcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jIHwgICAxIC0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3N0YW5kYnkuYyAgICAgICAgfCAgMTIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW1feGxvZy5oICAgICAgICAgfCAgMjAgLS0tCiBzcmMvaW5jbHVkZS9hY2Nlc3Mvdmlz aWJpbGl0eW1hcC5oICAgICAgIHwgIDExICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaCAgIHwgICA5IC0tCiBzcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCAg ICAgICAgIHwgICAxIC0KIDEzIGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDM2NCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1h c2suYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCmluZGV4IGJiMjYwY2Zm YTY4Li4xZmZmMDEzODNiMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9i dWZtYXNrLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZtYXNrLmMKQEAgLTU2 LDggKzU2LDcgQEAgbWFza19wYWdlX2hpbnRfYml0cyhQYWdlIHBhZ2UpCiAKIAkvKgogCSAqIER1 cmluZyByZXBsYXksIGlmIHRoZSBwYWdlIExTTiBoYXMgYWR2YW5jZWQgcGFzdCBvdXIgWExPRyBy ZWNvcmQncyBMU04sCi0JICogd2UgZG9uJ3QgbWFyayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4gU2Vl IGhlYXBfeGxvZ192aXNpYmxlKCkgZm9yCi0JICogZGV0YWlscy4KKwkgKiB3ZSBkb24ndCBtYXJr IHRoZSBwYWdlIGFsbC12aXNpYmxlLgogCSAqLwogCVBhZ2VDbGVhckFsbFZpc2libGUocGFnZSk7 CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IDg5M2E3MzkwMDlhLi5jYjE2YmIwY2Ji ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl ICJhY2Nlc3MvdmFsaWQuaCIKICNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1hcC5oIgogI2lu Y2x1ZGUgImFjY2Vzcy94bG9naW5zZXJ0LmgiCisjaW5jbHVkZSAiYWNjZXNzL3hsb2d1dGlscy5o IgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZGF0YWJhc2UuaCIKICNpbmNsdWRlICJjYXRhbG9nL3Bn X2RhdGFiYXNlX2QuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKQEAgLTI1MjMsMTEg KzI1MjQsMTEgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFi bGVTbG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQl7CiAJCQlQYWdlU2V0QWxsVmlzaWJsZShw YWdlKTsKIAkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7Ci0J CQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMocmVsYXRpb24sCi0JCQkJCQkJCQkgQnVmZmVyR2V0 QmxvY2tOdW1iZXIoYnVmZmVyKSwKLQkJCQkJCQkJCSB2bWJ1ZmZlciwKLQkJCQkJCQkJCSBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOworCQkJdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sCisJCQkJCQkJICBCdWZmZXJHZXRC bG9ja051bWJlcihidWZmZXIpLAorCQkJCQkJCSAgdm1idWZmZXIsCisJCQkJCQkJICBWSVNJQklM SVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkgIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7 CiAJCX0KIAogCQkvKgpAQCAtODc5OCw0OSArODc5OSw2IEBAIGJvdHRvbXVwX3NvcnRfYW5kX3No cmluayhUTV9JbmRleERlbGV0ZU9wICpkZWxzdGF0ZSkKIAlyZXR1cm4gbmJsb2Nrc2Zhdm9yYWJs ZTsKIH0KIAotLyoKLSAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXZpc2libGUgb3Bl cmF0aW9uLiAgJ2Jsb2NrJyBpcyB0aGUgYmxvY2sKLSAqIGJlaW5nIG1hcmtlZCBhbGwtdmlzaWJs ZSwgYW5kIHZtX2J1ZmZlciBpcyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgdGhlCi0gKiBjb3JyZXNw b25kaW5nIHZpc2liaWxpdHkgbWFwIGJsb2NrLiAgQm90aCBzaG91bGQgaGF2ZSBhbHJlYWR5IGJl ZW4gbW9kaWZpZWQKLSAqIGFuZCBkaXJ0aWVkLgotICoKLSAqIHNuYXBzaG90Q29uZmxpY3RIb3Jp em9uIGNvbWVzIGZyb20gdGhlIGxhcmdlc3QgeG1pbiBvbiB0aGUgcGFnZSBiZWluZwotICogbWFy a2VkIGFsbC12aXNpYmxlLiAgUkVETyByb3V0aW5lIHVzZXMgaXQgdG8gZ2VuZXJhdGUgcmVjb3Zl cnkgY29uZmxpY3RzLgotICoKLSAqIElmIGNoZWNrc3VtcyBvciB3YWxfbG9nX2hpbnRzIGFyZSBl bmFibGVkLCB3ZSBtYXkgYWxzbyBnZW5lcmF0ZSBhIGZ1bGwtcGFnZQotICogaW1hZ2Ugb2YgaGVh cF9idWZmZXIuIE90aGVyd2lzZSwgd2Ugb3B0aW1pemUgYXdheSB0aGUgRlBJIChieSBzcGVjaWZ5 aW5nCi0gKiBSRUdCVUZfTk9fSU1BR0UgZm9yIHRoZSBoZWFwIGJ1ZmZlciksIGluIHdoaWNoIGNh c2UgdGhlIGNhbGxlciBzaG91bGQgKm5vdCoKLSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNO LgotICovCi1YTG9nUmVjUHRyCi1sb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVy IGhlYXBfYnVmZmVyLCBCdWZmZXIgdm1fYnVmZmVyLAotCQkJCSBUcmFuc2FjdGlvbklkIHNuYXBz aG90Q29uZmxpY3RIb3Jpem9uLCB1aW50OCB2bWZsYWdzKQotewotCXhsX2hlYXBfdmlzaWJsZSB4 bHJlYzsKLQlYTG9nUmVjUHRyCXJlY3B0cjsKLQl1aW50OAkJZmxhZ3M7Ci0KLQlBc3NlcnQoQnVm ZmVySXNWYWxpZChoZWFwX2J1ZmZlcikpOwotCUFzc2VydChCdWZmZXJJc1ZhbGlkKHZtX2J1ZmZl cikpOwotCi0JeGxyZWMuc25hcHNob3RDb25mbGljdEhvcml6b24gPSBzbmFwc2hvdENvbmZsaWN0 SG9yaXpvbjsKLQl4bHJlYy5mbGFncyA9IHZtZmxhZ3M7Ci0JaWYgKFJlbGF0aW9uSXNBY2Nlc3Np YmxlSW5Mb2dpY2FsRGVjb2RpbmcocmVsKSkKLQkJeGxyZWMuZmxhZ3MgfD0gVklTSUJJTElUWU1B UF9YTE9HX0NBVEFMT0dfUkVMOwotCVhMb2dCZWdpbkluc2VydCgpOwotCVhMb2dSZWdpc3RlckRh dGEoJnhscmVjLCBTaXplT2ZIZWFwVmlzaWJsZSk7Ci0KLQlYTG9nUmVnaXN0ZXJCdWZmZXIoMCwg dm1fYnVmZmVyLCAwKTsKLQotCWZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOwotCWlmICghWExvZ0hp bnRCaXRJc05lZWRlZCgpKQotCQlmbGFncyB8PSBSRUdCVUZfTk9fSU1BR0U7Ci0JWExvZ1JlZ2lz dGVyQnVmZmVyKDEsIGhlYXBfYnVmZmVyLCBmbGFncyk7Ci0KLQlyZWNwdHIgPSBYTG9nSW5zZXJ0 KFJNX0hFQVAyX0lELCBYTE9HX0hFQVAyX1ZJU0lCTEUpOwotCi0JcmV0dXJuIHJlY3B0cjsKLX0K IAogLyoKICAqIFBlcmZvcm0gWExvZ0luc2VydCBmb3IgYSBoZWFwLXVwZGF0ZSBvcGVyYXRpb24u ICBDYWxsZXIgbXVzdCBhbHJlYWR5CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpp bmRleCAxMWMxMTkyOWVkOS4uZmYzYWQ4YjRjZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVh cGFtX3hsb2cuYwpAQCAtNTMsNiArNTMsOCBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dS ZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkgICAoeGxyZWMuZmxhZ3MgJiAoWExIUF9IQVNfUkVESVJF Q1RJT05TIHwgWExIUF9IQVNfREVBRF9JVEVNUykpID09IDApOwogCiAJdm1mbGFncyA9IHhscmVj LmZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCS8qIE11c3QgbmV2ZXIgc2V0IGFs bF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLworCUFz c2VydCh2bWZsYWdzICE9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CiAKIAkvKgogCSAqIEFm dGVyIHhsX2hlYXBfcHJ1bmUgaXMgdGhlIG9wdGlvbmFsIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6 b24uCkBAIC0yNTAsNyArMjUyLDcgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJaWYgKFBhZ2VJc05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1w YWdlLCBCTENLU1osIDApOwogCi0JCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJp dHMocmVsbiwgYmxrbm8sIHZtYnVmZmVyLCB2bWZsYWdzKTsKKwkJb2xkX3ZtYml0cyA9IHZpc2li aWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CiAKIAkJLyogT25s eSBzZXQgVk0gcGFnZSBMU04gaWYgd2UgbW9kaWZpZWQgdGhlIHBhZ2UgKi8KIAkJaWYgKG9sZF92 bWJpdHMgIT0gdm1mbGFncykKQEAgLTI2OSwxNDIgKzI3MSw2IEBAIGhlYXBfeGxvZ19wcnVuZV9m cmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVT cGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFjZSk7CiB9CiAKLS8qCi0gKiBSZXBsYXkgWExP R19IRUFQMl9WSVNJQkxFIHJlY29yZHMuCi0gKgotICogVGhlIGNyaXRpY2FsIGludGVncml0eSBy ZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2UgbXVzdCBuZXZlciBlbmQgdXAgd2l0aAotICogYSBz aXR1YXRpb24gd2hlcmUgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBpcyBzZXQsIGFuZCB0aGUgcGFn ZS1sZXZlbAotICogUERfQUxMX1ZJU0lCTEUgYml0IGlzIGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRv IG9jY3VyLCB0aGVuIGEgc3Vic2VxdWVudAotICogcGFnZSBtb2RpZmljYXRpb24gd291bGQgZmFp bCB0byBjbGVhciB0aGUgdmlzaWJpbGl0eSBtYXAgYml0LgotICovCi1zdGF0aWMgdm9pZAotaGVh cF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCi17Ci0JWExvZ1JlY1B0cgls c24gPSByZWNvcmQtPkVuZFJlY1B0cjsKLQl4bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hl YXBfdmlzaWJsZSAqKSBYTG9nUmVjR2V0RGF0YShyZWNvcmQpOwotCUJ1ZmZlcgkJdm1idWZmZXIg PSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlcgkJYnVmZmVyOwotCVBhZ2UJCXBhZ2U7Ci0JUmVsRmls ZUxvY2F0b3IgcmxvY2F0b3I7Ci0JQmxvY2tOdW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24g YWN0aW9uOwotCi0JQXNzZXJ0KCh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1hMT0dfVkFM SURfQklUUykgPT0geGxyZWMtPmZsYWdzKTsKLQotCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQs IDEsICZybG9jYXRvciwgTlVMTCwgJmJsa25vKTsKLQotCS8qCi0JICogSWYgdGhlcmUgYXJlIGFu eSBIb3QgU3RhbmRieSB0cmFuc2FjdGlvbnMgcnVubmluZyB0aGF0IGhhdmUgYW4geG1pbgotCSAq IGhvcml6b24gb2xkIGVub3VnaCB0aGF0IHRoaXMgcGFnZSBpc24ndCBhbGwtdmlzaWJsZSBmb3Ig dGhlbSwgdGhleQotCSAqIG1pZ2h0IGluY29ycmVjdGx5IGRlY2lkZSB0aGF0IGFuIGluZGV4LW9u bHkgc2NhbiBjYW4gc2tpcCBhIGhlYXAgZmV0Y2guCi0JICoKLQkgKiBOQjogSXQgbWlnaHQgYmUg YmV0dGVyIHRvIHRocm93IHNvbWUga2luZCBvZiAic29mdCIgY29uZmxpY3QgaGVyZSB0aGF0Ci0J ICogZm9yY2VzIGFueSBpbmRleC1vbmx5IHNjYW4gdGhhdCBpcyBpbiBmbGlnaHQgdG8gcGVyZm9y bSBoZWFwIGZldGNoZXMsCi0JICogcmF0aGVyIHRoYW4ga2lsbGluZyB0aGUgdHJhbnNhY3Rpb24g b3V0cmlnaHQuCi0JICovCi0JaWYgKEluSG90U3RhbmRieSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29u ZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNuYXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJ CQkJCQl4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwsCi0JCQkJ CQkJCQkJCXJsb2NhdG9yKTsKLQotCS8qCi0JICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBz dGlsbCBleGlzdHMuIElmIHRoZSBoZWFwIGZpbGUgaGFzIGRyb3BwZWQgb3IKLQkgKiB0cnVuY2F0 ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIHdlIGRvbid0IG5lZWQgdG8gdXBkYXRlIHRoZSBwYWdlLCBi dXQgd2UnZAotCSAqIGJldHRlciBzdGlsbCB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAq LwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVyRm9yUmVkbyhyZWNvcmQsIDEsICZidWZmZXIpOwot CWlmIChhY3Rpb24gPT0gQkxLX05FRURTX1JFRE8pCi0JewotCQkvKgotCQkgKiBXZSBkb24ndCBi dW1wIHRoZSBMU04gb2YgdGhlIGhlYXAgcGFnZSB3aGVuIHNldHRpbmcgdGhlIHZpc2liaWxpdHkK LQkJICogbWFwIGJpdCAodW5sZXNzIGNoZWNrc3VtcyBvciB3YWxfaGludF9iaXRzIGlzIGVuYWJs ZWQsIGluIHdoaWNoCi0JCSAqIGNhc2Ugd2UgbXVzdCkuIFRoaXMgZXhwb3NlcyB1cyB0byB0b3Ju IHBhZ2UgaGF6YXJkcywgYnV0IHNpbmNlCi0JCSAqIHdlJ3JlIG5vdCBpbnNwZWN0aW5nIHRoZSBl eGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFueSB3YXksIHdlCi0JCSAqIGRvbid0IGNhcmUuCi0J CSAqLwotCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwotCi0JCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwotCi0JCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQlQYWdlU2V0TFNO KHBhZ2UsIGxzbik7Ci0KLQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7Ci0JfQotCWVsc2UgaWYg KGFjdGlvbiA9PSBCTEtfUkVTVE9SRUQpCi0JewotCQkvKgotCQkgKiBJZiBoZWFwIGJsb2NrIHdh cyBiYWNrZWQgdXAsIHdlIGFscmVhZHkgcmVzdG9yZWQgaXQgYW5kIHRoZXJlJ3MKLQkJICogbm90 aGluZyBtb3JlIHRvIGRvLiAoVGhpcyBjYW4gb25seSBoYXBwZW4gd2l0aCBjaGVja3N1bXMgb3IK LQkJICogd2FsX2xvZ19oaW50cyBlbmFibGVkLikKLQkJICovCi0JfQotCi0JaWYgKEJ1ZmZlcklz VmFsaWQoYnVmZmVyKSkKLQl7Ci0JCVNpemUJCXNwYWNlID0gUGFnZUdldEZyZWVTcGFjZShCdWZm ZXJHZXRQYWdlKGJ1ZmZlcikpOwotCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKLQot CQkvKgotCQkgKiBTaW5jZSBGU00gaXMgbm90IFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBo ZXVyaXN0aWNhbGx5LCBpdAotCQkgKiBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbiBzdGFuZGJ5cy4g IElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHByb21vdGVkCi0JCSAqIGFuZCBydW5zIFZBQ1VVTSwg aXQgd2lsbCBza2lwIHVwZGF0aW5nIGluZGl2aWR1YWwgZnJlZSBzcGFjZQotCQkgKiBmaWd1cmVz IGZvciBwYWdlcyB0aGF0IGJlY2FtZSBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5k aW5nCi0JCSAqIG9uIHRoZSB2YWN1dW0gbW9kZSwpIHdoaWNoIGlzIHRyb3VibGVzb21lIHdoZW4g RnJlZVNwYWNlTWFwVmFjdXVtCi0JCSAqIHByb3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZSBz cGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxheWVyczsKLQkJICogbGF0ZXIgaW5zZXJ0ZXJzIHRy eSB0byB1c2Ugc3VjaCBwYWdlcyBvbmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleQotCQkgKiBhcmUg dW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBsb25nIHN0YWxscyB3aGVuIHRoZXJlIGFyZSBtYW55 IHN1Y2gKLQkJICogcGFnZXMuCi0JCSAqCi0JCSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBi eSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0IGEgcGFnZSB0aGF0Ci0JCSAqIGlzIGJlY29taW5n IGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4uCi0JCSAqCi0JCSAqIERvIHRoaXMgcmVnYXJkbGVz cyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWluZyBhcHBsaWVkLCBzaW5jZSB0aGUKLQkJICogRlNN IGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFueXdheS4KLQkJICovCi0JCWlmICh4bHJlYy0+Zmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpCi0JCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVl U3BhY2UocmxvY2F0b3IsIGJsa25vLCBzcGFjZSk7Ci0JfQotCi0JLyoKLQkgKiBFdmVuIGlmIHdl IHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRhdGUgZHVlIHRvIHRoZSBMU04gaW50ZXJsb2NrLCBp dCdzCi0JICogc3RpbGwgc2FmZSB0byB1cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdB TCByZWNvcmQgdGhhdCBjbGVhcnMKLQkgKiB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28g YmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExTTiwgc28gYW55Ci0JICogYml0cyB0aGF0IG5lZWQg dG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJlIGNsZWFyZWQuCi0JICovCi0JaWYgKFhMb2dSZWFk QnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMCwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNl LAotCQkJCQkJCQkJICAmdm1idWZmZXIpID09IEJMS19ORUVEU19SRURPKQotCXsKLQkJUGFnZQkJ dm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlcik7Ci0JCVJlbGF0aW9uCXJlbG47Ci0JCXVp bnQ4CQl2bWJpdHM7Ci0KLQkJLyogaW5pdGlhbGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBh cyB6ZXJvcyAqLwotCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCi0JCQlQYWdlSW5pdCh2bXBhZ2Us IEJMQ0tTWiwgMCk7Ci0KLQkJLyogcmVtb3ZlIFZJU0lCSUxJVFlNQVBfWExPR18qICovCi0JCXZt Yml0cyA9IHhscmVjLT5mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQotCQkvKgot CQkgKiBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZCBsb2NrZWQgdGhlIGJ1ZmZlci4gQnV0 Ci0JCSAqIHZpc2liaWxpdHltYXBfc2V0IHdpbGwgaGFuZGxlIGxvY2tpbmcgaXRzZWxmLgotCQkg Ki8KLQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQlyZWxu ID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOwotCi0JCXZpc2liaWxpdHltYXBf c2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVmZmVyLCBsc24sIHZtYnVmZmVyLAotCQkJCQkJICB4 bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6b24sIHZtYml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZl cih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBp ZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikpCi0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZm ZXIpOwotfQotCiAvKgogICogR2l2ZW4gYW4gImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cg cmVjb3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0cyBpbiB0aGUKICAqIGdpdmVuIGluZm9tYXNrIGFu ZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBsZSB0b3VjaGVkIGJ5IHRoZSByZWNvcmQuCkBAIC03ODUs MTUgKzY1MSwxNCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVj b3JkKQogCQlpZiAoUGFnZUlzTmV3KHZtcGFnZSkpCiAJCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tT WiwgMCk7CiAKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHJlbG4sIGJsa25vLAotCQkJCQkJ CQkgdm1idWZmZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJ CQkJIFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KIAkJLyoKIAkJICogSXQgaXMgbm90IHBv c3NpYmxlIHRoYXQgdGhlIFZNIHdhcyBhbHJlYWR5IHNldCBmb3IgdGhpcyBoZWFwIHBhZ2UsCiAJ CSAqIHNvIHRoZSB2bWJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBtb2RpZmllZCBhbmQgbWFya2VkIGRp cnR5LgogCQkgKi8KKwkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sCisJCQkJCQkgIHZt YnVmZmVyLAorCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfRlJPWkVOKTsKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIp KTsKIAkJUGFnZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKIAkJRnJlZUZh a2VSZWxjYWNoZUVudHJ5KHJlbG4pOwpAQCAtMTM3NCw5ICsxMjM5LDYgQEAgaGVhcDJfcmVkbyhY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9D TEVBTlVQOgogCQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0J CWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsK LQkJCWJyZWFrOwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9n X211bHRpX2luc2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jCmluZGV4IDY2OWMwODhjY2ZmLi5lY2MxMDBjMzM2MiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKQEAgLTk4MCw4ICs5ODAsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJewogCQkJQXNzZXJ0KFBh Z2VJc0FsbFZpc2libGUocGFnZSkpOwogCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xP Q0tfRVhDTFVTSVZFKTsKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMo cmVsYXRpb24sIGJsb2Nrbm8sCi0JCQkJCQkJCQkJCQkgIHZtYnVmZmVyLCB2bWZsYWdzKTsKKwkJ CW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxvY2tubywKKwkJCQkJ CQkJCQkgICB2bWJ1ZmZlciwgdm1mbGFncyk7CiAKIAkJCWlmIChvbGRfdm1iaXRzID09IHZtZmxh Z3MpCiAJCQl7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNzVjMTBiYTIw YzYuLjJmZjY3ZDc3Y2I0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1 dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0x ODg2LDggKzE4ODYsOCBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3Jl bCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCQlNYXJrQnVmZmVyRGlydHkoYnVm KTsKIAogCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKLQkJ CXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCi0JCQkJCQkJCQkg dm1idWZmZXIsIG5ld192bWJpdHMpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLAorCQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMpOwogCiAJCQlpZiAoUmVsYXRp b25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCiAJCQl7CkBAIC0yNzUzLDkgKzI3NTMsOSBAQCBsYXp5 X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywg QnVmZmVyIGJ1ZmZlciwKIAkJc2V0X3BkX2FsbF92aXMgPSB0cnVlOwogCQlQYWdlU2V0QWxsVmlz aWJsZShwYWdlKTsKIAkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZF KTsKLQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHZhY3JlbC0+cmVsLAotCQkJCQkJCQkgYmxr bm8sCi0JCQkJCQkJCSB2bWJ1ZmZlciwgdm1mbGFncyk7CisJCXZpc2liaWxpdHltYXBfc2V0KHZh Y3JlbC0+cmVsLAorCQkJCQkJICBibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MpOwog CQljb25mbGljdF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggYmI4ZGZkODkxMGEuLmY3YmFkNjhmZmM1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3 IEBACiAgKgkJdmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBp biB0aGUgdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAg cGFnZSBmb3Igc2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sg d2hldGhlciBjb3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0 eW1hcF9zZXQJIC0gc2V0IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxv ZwotICogICAgICB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlu bmVkIHBhZ2UKKyAqCQl2aXNpYmlsaXR5bWFwX3NldAkgLSBzZXQgYml0KHMpIGluIGEgcHJldmlv dXNseSBwaW5uZWQgcGFnZQogICoJCXZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyAtIGdldCBzdGF0 dXMgb2YgYml0cwogICoJCXZpc2liaWxpdHltYXBfY291bnQgIC0gY291bnQgbnVtYmVyIG9mIGJp dHMgc2V0IGluIHZpc2liaWxpdHkgbWFwCiAgKgkJdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5j YXRlIC0KQEAgLTIyMCwxMDggKzIxOSw2IEBAIHZpc2liaWxpdHltYXBfcGluX29rKEJsb2NrTnVt YmVyIGhlYXBCbGssIEJ1ZmZlciB2bWJ1ZikKIAlyZXR1cm4gQnVmZmVySXNWYWxpZCh2bWJ1Zikg JiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIodm1idWYpID09IG1hcEJsb2NrOwogfQogCi0vKgotICoJ dmlzaWJpbGl0eW1hcF9zZXQgLSBzZXQgYml0KHMpIG9uIGEgcHJldmlvdXNseSBwaW5uZWQgcGFn ZQotICoKLSAqIHJlY3B0ciBpcyB0aGUgTFNOIG9mIHRoZSBYTE9HIHJlY29yZCB3ZSdyZSByZXBs YXlpbmcsIGlmIHdlJ3JlIGluIHJlY292ZXJ5LAotICogb3IgSW52YWxpZFhMb2dSZWNQdHIgaW4g bm9ybWFsIHJ1bm5pbmcuICBUaGUgVk0gcGFnZSBMU04gaXMgYWR2YW5jZWQgdG8gdGhlCi0gKiBv bmUgcHJvdmlkZWQ7IGluIG5vcm1hbCBydW5uaW5nLCB3ZSBnZW5lcmF0ZSBhIG5ldyBYTE9HIHJl Y29yZCBhbmQgc2V0IHRoZQotICogcGFnZSBMU04gdG8gdGhhdCB2YWx1ZSAodGhvdWdoIHRoZSBo ZWFwIHBhZ2UncyBMU04gbWF5ICpub3QqIGJlIHVwZGF0ZWQ7Ci0gKiBzZWUgYmVsb3cpLiAgY3V0 b2ZmX3hpZCBpcyB0aGUgbGFyZ2VzdCB4bWluIG9uIHRoZSBwYWdlIGJlaW5nIG1hcmtlZAotICog YWxsLXZpc2libGU7IGl0IGlzIG5lZWRlZCBmb3IgSG90IFN0YW5kYnksIGFuZCBjYW4gYmUgSW52 YWxpZFRyYW5zYWN0aW9uSWQKLSAqIGlmIHRoZSBwYWdlIGNvbnRhaW5zIG5vIHR1cGxlcy4gIEl0 IGNhbiBhbHNvIGJlIHNldCB0byBJbnZhbGlkVHJhbnNhY3Rpb25JZAotICogd2hlbiBhIHBhZ2Ug dGhhdCBpcyBhbHJlYWR5IGFsbC12aXNpYmxlIGlzIGJlaW5nIG1hcmtlZCBhbGwtZnJvemVuLgot ICoKLSAqIENhbGxlciBpcyBleHBlY3RlZCB0byBzZXQgdGhlIGhlYXAgcGFnZSdzIFBEX0FMTF9W SVNJQkxFIGJpdCBiZWZvcmUgY2FsbGluZwotICogdGhpcyBmdW5jdGlvbi4gRXhjZXB0IGluIHJl Y292ZXJ5LCBjYWxsZXIgc2hvdWxkIGFsc28gcGFzcyB0aGUgaGVhcAotICogYnVmZmVyLiBXaGVu IGNoZWNrc3VtcyBhcmUgZW5hYmxlZCBhbmQgd2UncmUgbm90IGluIHJlY292ZXJ5LCB3ZSBtdXN0 IGFkZAotICogdGhlIGhlYXAgYnVmZmVyIHRvIHRoZSBXQUwgY2hhaW4gdG8gcHJvdGVjdCBpdCBm cm9tIGJlaW5nIHRvcm4uCi0gKgotICogWW91IG11c3QgcGFzcyBhIGJ1ZmZlciBjb250YWluaW5n IHRoZSBjb3JyZWN0IG1hcCBwYWdlIHRvIHRoaXMgZnVuY3Rpb24uCi0gKiBDYWxsIHZpc2liaWxp dHltYXBfcGluIGZpcnN0IHRvIHBpbiB0aGUgcmlnaHQgb25lLiBUaGlzIGZ1bmN0aW9uIGRvZXNu J3QgZG8KLSAqIGFueSBJL08uCi0gKgotICogUmV0dXJucyB0aGUgc3RhdGUgb2YgdGhlIHBhZ2Un cyBWTSBiaXRzIGJlZm9yZSBzZXR0aW5nIGZsYWdzLgotICovCi11aW50OAotdmlzaWJpbGl0eW1h cF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwK LQkJCQkgIFhMb2dSZWNQdHIgcmVjcHRyLCBCdWZmZXIgdm1CdWYsIFRyYW5zYWN0aW9uSWQgY3V0 b2ZmX3hpZCwKLQkJCQkgIHVpbnQ4IGZsYWdzKQotewotCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0g SEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKLQl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxL X1RPX01BUEJZVEUoaGVhcEJsayk7Ci0JdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZG U0VUKGhlYXBCbGspOwotCVBhZ2UJCXBhZ2U7Ci0JdWludDgJICAgKm1hcDsKLQl1aW50OAkJc3Rh dHVzOwotCi0jaWZkZWYgVFJBQ0VfVklTSUJJTElUWU1BUAotCWVsb2coREVCVUcxLCAidm1fc2V0 IGZsYWdzIDB4JTAyWCBmb3IgJXMgJWQiLAotCQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbCksIGhlYXBCbGspOwotI2VuZGlmCi0KLQlBc3NlcnQoSW5SZWNvdmVyeSB8fCBYTG9n UmVjUHRySXNJbnZhbGlkKHJlY3B0cikpOwotCUFzc2VydChJblJlY292ZXJ5IHx8IFBhZ2VJc0Fs bFZpc2libGUoQnVmZmVyR2V0UGFnZShoZWFwQnVmKSkpOwotCUFzc2VydCgoZmxhZ3MgJiBWSVNJ QklMSVRZTUFQX1ZBTElEX0JJVFMpID09IGZsYWdzKTsKLQotCS8qIE11c3QgbmV2ZXIgc2V0IGFs bF9mcm96ZW4gYml0IHdpdGhvdXQgYWxzbyBzZXR0aW5nIGFsbF92aXNpYmxlIGJpdCAqLwotCUFz c2VydChmbGFncyAhPSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwotCi0JLyogQ2hlY2sgdGhh dCB3ZSBoYXZlIHRoZSByaWdodCBoZWFwIHBhZ2UgcGlubmVkLCBpZiBwcmVzZW50ICovCi0JaWYg KEJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgJiYgQnVmZmVyR2V0QmxvY2tOdW1iZXIoaGVhcEJ1Zikg IT0gaGVhcEJsaykKLQkJZWxvZyhFUlJPUiwgIndyb25nIGhlYXAgYnVmZmVyIHBhc3NlZCB0byB2 aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JQXNzZXJ0KCFCdWZmZXJJc1ZhbGlkKGhlYXBCdWYpIHx8 IEJ1ZmZlcklzRXhjbHVzaXZlTG9ja2VkKGhlYXBCdWYpKTsKLQotCS8qIENoZWNrIHRoYXQgd2Ug aGF2ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KLQlpZiAoIUJ1ZmZlcklzVmFsaWQodm1C dWYpIHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKLQkJZWxvZyhF UlJPUiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKLQot CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKHZtQnVmKTsKLQltYXAgPSAodWludDggKikgUGFnZUdldENv bnRlbnRzKHBhZ2UpOwotCUxvY2tCdWZmZXIodm1CdWYsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7 Ci0KLQlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQ X1ZBTElEX0JJVFM7Ci0JaWYgKGZsYWdzICE9IHN0YXR1cykKLQl7Ci0JCVNUQVJUX0NSSVRfU0VD VElPTigpOwotCi0JCW1hcFttYXBCeXRlXSB8PSAoZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKLQkJTWFy a0J1ZmZlckRpcnR5KHZtQnVmKTsKLQotCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWwpKQotCQl7 Ci0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChyZWNwdHIpKQotCQkJewotCQkJCUFzc2VydCgh SW5SZWNvdmVyeSk7Ci0JCQkJcmVjcHRyID0gbG9nX2hlYXBfdmlzaWJsZShyZWwsIGhlYXBCdWYs IHZtQnVmLCBjdXRvZmZfeGlkLCBmbGFncyk7Ci0KLQkJCQkvKgotCQkJCSAqIElmIGRhdGEgY2hl Y2tzdW1zIGFyZSBlbmFibGVkIChvciB3YWxfbG9nX2hpbnRzPW9uKSwgd2UKLQkJCQkgKiBuZWVk IHRvIHByb3RlY3QgdGhlIGhlYXAgcGFnZSBmcm9tIGJlaW5nIHRvcm4uCi0JCQkJICoKLQkJCQkg KiBJZiBub3QsIHRoZW4gd2UgbXVzdCAqbm90KiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4g SW4KLQkJCQkgKiB0aGlzIGNhc2UsIHRoZSBGUEkgZm9yIHRoZSBoZWFwIHBhZ2Ugd2FzIG9taXR0 ZWQgZnJvbSB0aGUKLQkJCQkgKiBXQUwgcmVjb3JkIGluc2VydGVkIGFib3ZlLCBzbyBpdCB3b3Vs ZCBiZSBpbmNvcnJlY3QgdG8KLQkJCQkgKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLQkJ CQkgKi8KLQkJCQlpZiAoWExvZ0hpbnRCaXRJc05lZWRlZCgpKQotCQkJCXsKLQkJCQkJUGFnZQkJ aGVhcFBhZ2UgPSBCdWZmZXJHZXRQYWdlKGhlYXBCdWYpOwotCi0JCQkJCVBhZ2VTZXRMU04oaGVh cFBhZ2UsIHJlY3B0cik7Ci0JCQkJfQotCQkJfQotCQkJUGFnZVNldExTTihwYWdlLCByZWNwdHIp OwotCQl9Ci0KLQkJRU5EX0NSSVRfU0VDVElPTigpOwotCX0KLQotCUxvY2tCdWZmZXIodm1CdWYs IEJVRkZFUl9MT0NLX1VOTE9DSyk7Ci0JcmV0dXJuIHN0YXR1czsKLX0KLQogLyoKICAqIFNldCBm bGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGluIHRoZSBwYXNzZWQgaW4gdm1CdWYuCiAg KgpAQCAtMzQzLDggKzI0MCw4IEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAgKiBpcyBwaW5uZWQgYW5kIGV4Y2x1 c2l2ZSBsb2NrZWQuCiAgKi8KIHVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAotCQkJCQkJIEJ1ZmZlciB2bUJ1ZiwgdWludDgg ZmxhZ3MpCit2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyIGhlYXBC bGssCisJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKQogewogCUJsb2NrTnVtYmVyIG1h cEJsb2NrID0gSEVBUEJMS19UT19NQVBCTE9DSyhoZWFwQmxrKTsKIAl1aW50MzIJCW1hcEJ5dGUg PSBIRUFQQkxLX1RPX01BUEJZVEUoaGVhcEJsayk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9o ZWFwZGVzYy5jCmluZGV4IGM5NWQzMGRmZThkLi40Nzk5OGYxZGYxNSAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKQEAgLTM0MywxMyArMzQzLDYgQEAgaGVhcDJfZGVzYyhT dHJpbmdJbmZvIGJ1ZiwgWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCQl9CiAJCX0KIAl9Ci0J ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX1ZJU0lCTEUpCi0JewotCQl4bF9oZWFwX3Zpc2li bGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSByZWM7Ci0KLQkJYXBwZW5kU3RyaW5nSW5m byhidWYsICJzbmFwc2hvdENvbmZsaWN0SG9yaXpvbjogJXUsIGZsYWdzOiAweCUwMlgiLAotCQkJ CQkJIHhscmVjLT5zbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwgeGxyZWMtPmZsYWdzKTsKLQl9CiAJ ZWxzZSBpZiAoaW5mbyA9PSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCkKIAl7CiAJCXhsX2hlYXBf bXVsdGlfaW5zZXJ0ICp4bHJlYyA9ICh4bF9oZWFwX211bHRpX2luc2VydCAqKSByZWM7CkBAIC00 NTQsOSArNDQ3LDYgQEAgaGVhcDJfaWRlbnRpZnkodWludDggaW5mbykKIAkJY2FzZSBYTE9HX0hF QVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgogCQkJaWQgPSAiUFJVTkVfVkFDVVVNX0NMRUFOVVAi OwogCQkJYnJlYWs7Ci0JCWNhc2UgWExPR19IRUFQMl9WSVNJQkxFOgotCQkJaWQgPSAiVklTSUJM RSI7Ci0JCQlicmVhazsKIAkJY2FzZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVDoKIAkJCWlkID0g Ik1VTFRJX0lOU0VSVCI7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L2RlY29kZS5jCmluZGV4IGNjMDNmMDcwNmU5Li4yZmRkNGFmOTBhOCAxMDA2NDQKLS0tIGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYworKysgYi9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi9sb2dpY2FsL2RlY29kZS5jCkBAIC00NTQsNyArNDU0LDYgQEAgaGVhcDJfZGVj b2RlKExvZ2ljYWxEZWNvZGluZ0NvbnRleHQgKmN0eCwgWExvZ1JlY29yZEJ1ZmZlciAqYnVmKQog CQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfT05fQUNDRVNTOgogCQljYXNlIFhMT0dfSEVBUDJfUFJV TkVfVkFDVVVNX1NDQU46CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fQ0xFQU5VUDoK LQkJY2FzZSBYTE9HX0hFQVAyX1ZJU0lCTEU6CiAJCWNhc2UgWExPR19IRUFQMl9MT0NLX1VQREFU RUQ6CiAJCQlicmVhazsKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwppbmRl eCA0MjIyYmRhYjA3OC4uYzYxOTY0M2UxMjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3N0YW5kYnkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMK QEAgLTQ3NSwxMiArNDc1LDEyIEBAIFJlc29sdmVSZWNvdmVyeUNvbmZsaWN0V2l0aFNuYXBzaG90 KFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6b24sCiAJICogSWYgd2UgZ2V0IHBh c3NlZCBJbnZhbGlkVHJhbnNhY3Rpb25JZCB0aGVuIHdlIGRvIG5vdGhpbmcgKG5vIGNvbmZsaWN0 KS4KIAkgKgogCSAqIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHJlcGxheWluZyBhbHJlYWR5LWFwcGxp ZWQgV0FMIHJlY29yZHMgYWZ0ZXIgYQotCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Ig d2hlbiByZXBsYXlpbmcgYW4gWExPR19IRUFQMl9WSVNJQkxFCi0JICogcmVjb3JkIHRoYXQgbWFy a3MgYXMgZnJvemVuIGEgcGFnZSB3aGljaCB3YXMgYWxyZWFkeSBhbGwtdmlzaWJsZS4gIEl0J3MK LQkgKiBhbHNvIHF1aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBpbmRl eCBkZWxldGlvbgotCSAqIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNhbiBy ZWFzb24gdGhhdCBhIHJlY292ZXJ5IGNvbmZsaWN0Ci0JICogd2hpY2ggaXMgc3VmZmljaWVudCBm b3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UgYmVmb3JlCi0JICogcmVw bGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KKwkgKiBzdGFuZGJ5IGNyYXNoIG9y IHJlc3RhcnQsIG9yIHdoZW4gcmVwbGF5aW5nIGEgcmVjb3JkIHRoYXQgbWFya3MgYXMKKwkgKiBm cm96ZW4gYSBwYWdlIHdoaWNoIHdhcyBhbHJlYWR5IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUg dmlzaWJpbGl0eQorCSAqIG1hcC4gIEl0J3MgYWxzbyBxdWl0ZSBjb21tb24gd2l0aCByZWNvcmRz IGdlbmVyYXRlZCBkdXJpbmcgaW5kZXgKKwkgKiBkZWxldGlvbiAob3JpZ2luYWwgZXhlY3V0aW9u IG9mIHRoZSBkZWxldGlvbiBjYW4gcmVhc29uIHRoYXQgYSByZWNvdmVyeQorCSAqIGNvbmZsaWN0 IHdoaWNoIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSBkZWxldGlvbiBvcGVyYXRpb24gbXVzdCB0YWtl IHBsYWNlCisJICogYmVmb3JlIHJlcGxheSBvZiB0aGUgZGVsZXRpb24gcmVjb3JkIGl0c2VsZiku CiAJICovCiAJaWYgKCFUcmFuc2FjdGlvbklkSXNWYWxpZChzbmFwc2hvdENvbmZsaWN0SG9yaXpv bikpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxv Zy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKaW5kZXggZDg1MDg1OTNlN2Mu LjM2NzJmMzcyYWE4IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cu aAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaApAQCAtNjAsNyArNjAsNiBA QAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX09OX0FDQ0VTUwkJMHgxMAogI2RlZmluZSBYTE9H X0hFQVAyX1BSVU5FX1ZBQ1VVTV9TQ0FOCTB4MjAKICNkZWZpbmUgWExPR19IRUFQMl9QUlVORV9W QUNVVU1fQ0xFQU5VUAkweDMwCi0jZGVmaW5lIFhMT0dfSEVBUDJfVklTSUJMRQkJMHg0MAogI2Rl ZmluZSBYTE9HX0hFQVAyX01VTFRJX0lOU0VSVCAweDUwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTE9D S19VUERBVEVEIDB4NjAKICNkZWZpbmUgWExPR19IRUFQMl9ORVdfQ0lECQkweDcwCkBAIC00NDYs MjAgKzQ0NSw2IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfaW5wbGFjZQogCiAjZGVmaW5lIE1p blNpemVPZkhlYXBJbnBsYWNlCShvZmZzZXRvZih4bF9oZWFwX2lucGxhY2UsIG5tc2dzKSArIHNp emVvZihpbnQpKQogCi0vKgotICogVGhpcyBpcyB3aGF0IHdlIG5lZWQgdG8ga25vdyBhYm91dCBz ZXR0aW5nIGEgdmlzaWJpbGl0eSBtYXAgYml0Ci0gKgotICogQmFja3VwIGJsayAwOiB2aXNpYmls aXR5IG1hcCBidWZmZXIKLSAqIEJhY2t1cCBibGsgMTogaGVhcCBidWZmZXIKLSAqLwotdHlwZWRl ZiBzdHJ1Y3QgeGxfaGVhcF92aXNpYmxlCi17Ci0JVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbjsKLQl1aW50OAkJZmxhZ3M7Ci19IHhsX2hlYXBfdmlzaWJsZTsKLQotI2RlZmlu ZSBTaXplT2ZIZWFwVmlzaWJsZSAob2Zmc2V0b2YoeGxfaGVhcF92aXNpYmxlLCBmbGFncykgKyBz aXplb2YodWludDgpKQotCiB0eXBlZGVmIHN0cnVjdCB4bF9oZWFwX25ld19jaWQKIHsKIAkvKgpA QCAtNTAzLDExICs0ODgsNiBAQCBleHRlcm4gdm9pZCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVm LCBYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gY29uc3QgY2hhciAqaGVhcDJfaWRl bnRpZnkodWludDggaW5mbyk7CiBleHRlcm4gdm9pZCBoZWFwX3hsb2dfbG9naWNhbF9yZXdyaXRl KFhMb2dSZWFkZXJTdGF0ZSAqcik7CiAKLWV4dGVybiBYTG9nUmVjUHRyIGxvZ19oZWFwX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgaGVhcF9idWZmZXIsCi0JCQkJCQkJCSAgIEJ1ZmZlciB2 bV9idWZmZXIsCi0JCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgc25hcHNob3RDb25mbGljdEhvcml6 b24sCi0JCQkJCQkJCSAgIHVpbnQ4IHZtZmxhZ3MpOwotCiAvKiBpbiBoZWFwZGVzYy5jLCBzbyBp dCBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZnJvbnRlbmQvYmFja2VuZCBjb2RlICovCiBleHRlcm4g dm9pZCBoZWFwX3hsb2dfZGVzZXJpYWxpemVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3Is IHVpbnQxNiBmbGFncywKIAkJCQkJCQkJCQkJCSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9w bGFuICoqcGxhbnMsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1h cC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAppbmRleCBmYzcwNTZhOTFl YS4uYzViMWUxZjdhZGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5 bWFwLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaApAQCAtMTUsNyAr MTUsNiBAQAogI2RlZmluZSBWSVNJQklMSVRZTUFQX0gKIAogI2luY2x1ZGUgImFjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oIgotI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1ZGUg InN0b3JhZ2UvYmxvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zi5oIgogI2luY2x1ZGUgInV0 aWxzL3JlbGNhY2hlLmgiCkBAIC0zMSwxNCArMzAsOCBAQCBleHRlcm4gYm9vbCB2aXNpYmlsaXR5 bWFwX2NsZWFyKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIGV4dGVybiB2b2lk IHZpc2liaWxpdHltYXBfcGluKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKIAkJ CQkJCQkgIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIGJvb2wgdmlzaWJpbGl0eW1hcF9waW5fb2so QmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyIHZtYnVmKTsKLWV4dGVybiB1aW50OCB2aXNpYmls aXR5bWFwX3NldChSZWxhdGlvbiByZWwsCi0JCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcEJsaywg QnVmZmVyIGhlYXBCdWYsCi0JCQkJCQkJICAgWExvZ1JlY1B0ciByZWNwdHIsCi0JCQkJCQkJICAg QnVmZmVyIHZtQnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKLQkJCQkJ CQkgICB1aW50OCBmbGFncyk7Ci1leHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRz KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKLQkJCQkJCQkJCSAgQnVmZmVyIHZt QnVmLCB1aW50OCBmbGFncyk7CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRp b24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAorCQkJCQkJCSAgIEJ1ZmZlciB2bUJ1ZiwgdWlu dDggZmxhZ3MpOwogZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfZ2V0X3N0YXR1cyhSZWxhdGlv biByZWwsIEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciAqdm1idWYpOwogZXh0ZXJuIHZvaWQg dmlzaWJpbGl0eW1hcF9jb3VudChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVyICphbGxfdmlzaWJs ZSwgQmxvY2tOdW1iZXIgKmFsbF9mcm96ZW4pOwogZXh0ZXJuIEJsb2NrTnVtYmVyIHZpc2liaWxp dHltYXBfcHJlcGFyZV90cnVuY2F0ZShSZWxhdGlvbiByZWwsCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNp YmlsaXR5bWFwZGVmcy5oCmluZGV4IDVhZDVjMDIwODc3Li5lMDFiY2U0Yzk5ZiAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKQEAgLTIxLDE0ICsyMSw1IEBACiAjZGVmaW5l IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTgkweDAyCiAjZGVmaW5lIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUwkweDAzCS8qIE9SIG9mIGFsbCB2YWxpZCB2aXNpYmlsaXR5bWFwCiAJCQkJCQkJCQkJ CSAqIGZsYWdzIGJpdHMgKi8KLS8qCi0gKiBUbyBkZXRlY3QgcmVjb3ZlcnkgY29uZmxpY3RzIGR1 cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIGEgc3RhbmRieSwgd2UgbmVlZAotICogdG8ga25vdyBp ZiBhIHRhYmxlIGlzIGEgdXNlciBjYXRhbG9nIHRhYmxlLiBGb3IgdGhhdCB3ZSBhZGQgYW4gYWRk aXRpb25hbAotICogYml0IGludG8geGxfaGVhcF92aXNpYmxlLmZsYWdzLCBpbiBhZGRpdGlvbiB0 byB0aGUgYWJvdmUuCi0gKgotICogTkI6IFZJU0lCSUxJVFlNQVBfWExPR18qIG1heSBub3QgYmUg cGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0KCkuCi0gKi8KLSNkZWZpbmUgVklTSUJJTElUWU1B UF9YTE9HX0NBVEFMT0dfUkVMCTB4MDQKLSNkZWZpbmUgVklTSUJJTElUWU1BUF9YTE9HX1ZBTElE X0JJVFMJKFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyB8IFZJU0lCSUxJVFlNQVBfWExPR19DQVRB TE9HX1JFTCkKIAogI2VuZGlmCQkJCQkJCS8qIFZJU0lCSUxJVFlNQVBERUZTX0ggKi8KZGlmZiAt LWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTEzZTgxNjI4OTAuLmI0Yzg4MGMwODNmIDEwMDY0NAot LS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdApAQCAtNDI3Myw3ICs0MjczLDYgQEAgeGxfaGVhcF9wcnVuZQog eGxfaGVhcF9yZXdyaXRlX21hcHBpbmcKIHhsX2hlYXBfdHJ1bmNhdGUKIHhsX2hlYXBfdXBkYXRl Ci14bF9oZWFwX3Zpc2libGUKIHhsX2ludmFsaWRfcGFnZQogeGxfaW52YWxpZF9wYWdlX2tleQog eGxfaW52YWxpZGF0aW9ucwotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0015-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisXi.patch" Content-Disposition: attachment; filename="v9-0015-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisXi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhg14 RnJvbSAwMDAxMmJlODM2YjQ3MmMyZjAxODViMWMwMzdjZjI5YjQ4MGU1NTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxNS8yMl0gUmVuYW1lIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIHRvCiBH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoKQoKQ3VycmVudGx5LCB3ZSBvbmx5IHVzZSBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0byBjaGVjayBpZiBhCnR1cGxlJ3MgeG1heCBpcyB2aXNp YmxlIHRvIGFsbCwgbWVhbmluZyB3ZSBjYW4gcmVtb3ZlIGl0LiBCdXQgZnV0dXJlCmNvbW1pdHMg d2lsbCB1c2UgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8gdGVzdCBpZiBhIHR1cGxl J3MgeG1pbgppcyB2aXNpYmxlIHRvIGFsbCBmb3IgdGhlIHB1cnBvc2VzIG9mIGRldGVybWluaW5n IGlmIHNldHRpbmcgdGhlIHBhZ2UKYWxsLXZpc2libGUgaW4gdGhlIFZNLiBJbiB0aGF0IGNhc2Us IGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gY2FsbCB0aGUKZnVuY3Rpb24gR2xvYmFsVmlzWGlkVmlz aWJsZVRvQWxsKCkuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxp dHkuYyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAg ICAgICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3Zh Y3V1bS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5j ICAgICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgg ICAgICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25z KCspLCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9oZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zp c2liaWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAg SGVhcFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qg c25hcHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikp OwogCi0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3Qs IGRlYWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52 aXN0ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNl CkBAIC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0 dXAsIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxl dGVyIGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2gu ICovCi0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJ CQkJICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxW aXNYaWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJh d1htYXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5k ZXggZWNjMTAwYzMzNjIuLjczY2E0ZTg4YzFmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwpAQCAtMjMxLDcgKzIzMSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3Io cmVsYXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwg cHJ1bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVu ZV94aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNTc0LDkgKzU3NCw5IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERl dGVybWluaW5nIEhUU1Ygb25seSBvbmNlIGZvciBlYWNoIHR1cGxlIGlzIHJlcXVpcmVkIGZvciBj b3JyZWN0bmVzcywKIAkgKiB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgcnVubmluZyBIVFNWIHR3 aWNlIGNvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQKIAkgKiByZXN1bHRzLiAgRm9yIGV4YW1wbGUs IFJFQ0VOVExZX0RFQUQgY2FuIHR1cm4gdG8gREVBRCBpZiBhbm90aGVyCi0JICogY2hlY2tlZCBp dGVtIGNhdXNlcyBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgdG8gdXBkYXRlIHRo ZQotCSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQg aWYgdGhlIGluc2VydGluZwotCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KKwkgKiBjaGVja2VkIGl0 ZW0gY2F1c2VzIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIHRvIHVwZGF0ZSB0aGUgaG9yaXpv biwKKwkgKiBvciBJTlNFUlRfSU5fUFJPR1JFU1MgY2FuIGNoYW5nZSB0byBERUFEIGlmIHRoZSBp bnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBhYm9ydHMuCiAJICoKIAkgKiBJdCdzIGFsc28gZ29v ZCBmb3IgcGVyZm9ybWFuY2UuIE1vc3QgY29tbW9ubHkgdHVwbGVzIHdpdGhpbiBhIHBhZ2UgYXJl CiAJICogc3RvcmVkIGF0IGRlY3JlYXNpbmcgb2Zmc2V0cyAod2hpbGUgdGhlIGl0ZW1zIGFyZSBz dG9yZWQgYXQgaW5jcmVhc2luZwpAQCAtMTE3MywxMSArMTE3MywxMSBAQCBoZWFwX3BydW5lX3Nh dGlzZmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVy IGJ1ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNp ZGVyZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlz U3RhdGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRv ZmZzLiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRl cgotCSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291 bGQgZmluZCB0aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4g dXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0 WG1pbiwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQg aWYKKwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVn aW5uaW5nIG9mIHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlm IChHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikp CiAJCXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3NwZ2lzdC9zcGd2YWN1dW0uYwppbmRleCA4ZjhhMWFkNzc5Ni4uNDk2Y2NhNjk0MTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZhY3V1 bVJlZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWws IEJ1ZmZlciBidWZmZXIpCiAJCSAqLwogCQlpZiAoZHQtPnR1cHN0YXRlID09IFNQR0lTVF9SRURJ UkVDVCAmJgogCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZChkdC0+eGlkKSB8fAotCQkJIEdsb2Jh bFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LCBkdC0+eGlkKSkpCisJCQkgR2xvYmFsVmlz WGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGR0LT54aWQpKSkKIAkJewogCQkJZHQtPnR1cHN0YXRl ID0gU1BHSVNUX1BMQUNFSE9MREVSOwogCQkJQXNzZXJ0KG9wYXF1ZS0+blJlZGlyZWN0aW9uID4g MCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDIwMGY3MmM2ZTI1Li5mNjdm MDFjMTdjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMK KysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQxODEsOCArNDE4 MSw3IEBAIEdsb2JhbFZpc1VwZGF0ZSh2b2lkKQogICogU2VlIGNvbW1lbnQgZm9yIEdsb2JhbFZp c1N0YXRlIGZvciBkZXRhaWxzLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVG dWxsWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKLQkJCQkJCQkJRnVsbFRyYW5zYWN0aW9uSWQg ZnhpZCkKK0dsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRl LCBGdWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCS8qCiAJICogSWYgZnhpZCBpcyBvbGRlciB0 aGFuIG1heWJlX25lZWRlZCBib3VuZCwgaXQgZGVmaW5pdGVseSBpcyB2aXNpYmxlIHRvCkBAIC00 MjIzLDcgKzQyMjIsNyBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKEdsb2JhbFZp c1N0YXRlICpzdGF0ZSwKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlk KQorR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNh Y3Rpb25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApAQCAtNDIzNyw3ICs0 MjM2LDcgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0 ZSwgVHJhbnNhY3Rpb25JZCB4aWQpCiAJICovCiAJZnhpZCA9IEZ1bGxYaWRSZWxhdGl2ZVRvKHN0 YXRlLT5kZWZpbml0ZWx5X25lZWRlZCwgeGlkKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNS ZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZp c2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCkBAIC00MjUxLDEyICs0MjUwLDEyIEBA IEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2Fj dGlvbklkIGZ4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVy biBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4g R2xvYmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBD b252ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9i YWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFs VmlzVGVzdElzVmlzaWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEds b2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQp CkBAIC00MjY1LDcgKzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlv biByZWwsIFRyYW5zYWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJl bCk7CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOwor CXJldHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGls cy9zbmFwbWdyLmgKaW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1n ci5oCkBAIC0xMDAsOCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBz aG90IHNuYXBzaG90KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFs VmlzU3RhdGU7CiBleHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRp b24gcmVsKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNh Y3Rpb25JZCBmeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9i YWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2Jh bFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNh Y3Rpb25JZCBmeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJl bGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hl Y2tSZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7 CiAKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0016-Use-GlobalVisState-to-determine-page-level-visibi.patch" Content-Disposition: attachment; filename="v9-0016-Use-GlobalVisState-to-determine-page-level-visibi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhk15 RnJvbSA0MzhjZTg1OWMwMzkzNmIwMTZlMTM0NWJlNWU5ZDU5NTBkOTZmNTE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxNi8yMl0gVXNlIEdsb2JhbFZpc1N0YXRlIHRvIGRldGVybWluZSBwYWdlIGxldmVs CiB2aXNpYmlsaXR5CgpEdXJpbmcgcHJ1bmluZyBhbmQgZHVyaW5nIHZhY3V1bSdzIHRoaXJkIHBo YXNlLCB3ZSB0cnkgdG8gZGV0ZXJtaW5lIGlmCnRoZSB3aG9sZSBwYWdlIGNhbiBiZSBzZXQgYWxs LXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwLiBJbnN0ZWFkIG9mCnVzaW5nIE9sZGVzdFht aW4gdG8gZGV0ZXJtaW5lIGlmIGFsbCB0aGUgdHVwbGVzIG9uIGEgcGFnZSBhcmUgdmlzaWJsZSB0 bwpldmVyeW9uZSwgdXNlIHRoZSBHbG9iYWxWaXNTdGF0ZS4gVGhpcyBhbGxvd3MgdXMgdG8gc3Rh cnQgc2V0dGluZyB0aGUgVk0KZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIGluIGEgZnV0dXJlIGNv bW1pdC4KCkl0IGlzIHBvc3NpYmxlIGZvciB0aGUgR2xvYmFsVmlzU3RhdGUgdG8gY2hhbmdlIGR1 cmluZyB0aGUgY291cnNlIG9mIGEKdmFjdXVtLiBJbiBhbGwgYnV0IGV4dHJhb3JkaW5hcnkgY2Fz ZXMsIGl0IG1vdmVzIGZvcndhcmQsIG1lYW5pbmcgbW9yZQpwYWdlcyBjb3VsZCBwb3RlbnRpYWxs eSBiZSBzZXQgaW4gdGhlIFZNLgoKQmVjYXVzZSBjb21wYXJpbmcgYSB0cmFuc2FjdGlvbiBJRCB0 byB0aGUgR2xvYmFsVmlzU3RhdGUgcmVxdWlyZXMgbW9yZQpvcGVyYXRpb25zIHRoYW4gY29tcGFy aW5nIGl0IHRvIGFub3RoZXIgc2luZ2xlIHRyYW5zYWN0aW9uIElELCB3ZSBub3cKd2FpdCB1bnRp bCBhZnRlciBleGFtaW5pbmcgYWxsIHRoZSB0dXBsZXMgb24gdGhlIHBhZ2UgYW5kIGlmIHdlIGhh dmUKbWFpbnRhaW5lZCB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCB3ZSBjb21wYXJlIHRoYXQg dG8gdGhlCkdsb2JhbFZpc1N0YXRlIGp1c3Qgb25jZSBwZXIgcGFnZS4gVGhpcyB3b3JrcyBiZWNh dXNlIGlmIHRoZSBwYWdlIGlzCmFsbC12aXNpYmxlIGFuZCBoYXMgbGl2ZSwgY29tbWl0dGVkIHR1 cGxlcyBvbiBpdCwgdGhlCnZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aWxsIGNvbnRhaW4gdGhlIG5l d2VzdCB4bWluIG9uIHRoZSBwYWdlLiBJZgpldmVyeW9uZSBjYW4gc2VlIGl0LCB0aGUgcGFnZSBp cyB0cnVseSBhbGwtdmlzaWJsZS4KCkRvaW5nIHRoaXMgbWF5IG1lYW4gd2UgZXhhbWluZSBtb3Jl IHR1cGxlcycgeG1pbnMgdGhhbiBiZWZvcmUsIGFzIHdlIG1heQpoYXZlIHNldCBhbGxfdmlzaWJs ZSB0byBmYWxzZSBzb29uZXIgd2hlbiBlbmNvdW50ZXJpbmcgYSBsaXZlIHR1cGxlCm5ld2VyIHRo YW4gT2xkZXN0WG1pbi4gSG93ZXZlciwgdGhlc2UgZXh0cmEgY29tcGFyaXNvbnMgd2VyZSBmb3Vu ZCBub3QKdG8gYmUgc2lnbmlmaWNhbnQgaW4gYSBwcm9maWxlLgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMgfCAyOCArKysrKysrKysrKysKIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgfCA0OCArKysrKysrKystLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgICAgfCAxOSAr KysrLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgICAgICAgICB8ICA0 ICstCiA0IGZpbGVzIGNoYW5nZWQsIDYwIGluc2VydGlvbnMoKyksIDM5IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jCmluZGV4IDRlYmM4 YWJkYmViLi5lZGQ1MjlkYzNjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv aGVhcGFtX3Zpc2liaWxpdHkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f dmlzaWJpbGl0eS5jCkBAIC0xMTg5LDYgKzExODksMzQgQEAgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtKEhlYXBUdXBsZSBodHVwLCBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJcmV0dXJuIHJl czsKIH0KIAorLyoKKyAqIE5lYXJseSB0aGUgc2FtZSBhcyBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW0sIGJ1dCB1c2VzIGEgR2xvYmFsVmlzU3RhdGUgdG8KKyAqIGRldGVybWluZSB3aGV0aGVyIG9y IG5vdCBhIHR1cGxlIGlzIEhFQVBUVVBMRV9ERUFEIE9yCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlf REVBRC4gSXQgc2VydmVzIHRoZSBzYW1lIHB1cnBvc2UgYnV0IGNhbiBiZSB1c2VkIGJ5CisgKiBj YWxsZXJzIHRoYXQgaGF2ZSBub3QgY2FsY3VsYXRlZCBhIHNpbmdsZSBPbGRlc3RYbWluIHZhbHVl LgorICovCitIVFNWX1Jlc3VsdAorSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhl YXBUdXBsZSBodHVwLCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKKwkJCQkJCQkJICBCdWZmZXIg YnVmZmVyKQoreworCVRyYW5zYWN0aW9uSWQgZGVhZF9hZnRlciA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCUhUU1ZfUmVzdWx0IHJlczsKKworCXJlcyA9IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1 bUhvcml6b24oaHR1cCwgYnVmZmVyLCAmZGVhZF9hZnRlcik7CisKKwlpZiAocmVzID09IEhFQVBU VVBMRV9SRUNFTlRMWV9ERUFEKQorCXsKKwkJQXNzZXJ0KFRyYW5zYWN0aW9uSWRJc1ZhbGlkKGRl YWRfYWZ0ZXIpKTsKKworCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGRl YWRfYWZ0ZXIpKQorCQkJcmVzID0gSEVBUFRVUExFX0RFQUQ7CisJfQorCWVsc2UKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWFkX2FmdGVyKSk7CisKKwlyZXR1cm4gcmVzOworfQor CiAvKgogICogV29yayBob3JzZSBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtIGFuZCBzaW1p bGFyIHJvdXRpbmVzLgogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3By dW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggNzNj YTRlODhjMWYuLjI3M2U5NDEyYTAxIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpA QCAtMTQxLDEwICsxNDEsOSBAQCB0eXBlZGVmIHN0cnVjdAogCSAqIGFsbF92aXNpYmxlIGFuZCBh bGxfZnJvemVuIGluZGljYXRlIGlmIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbgogCSAq IGJpdHMgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFnZSBhZnRl ciBwcnVuaW5nLgogCSAqCi0JICogdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGlzIHRoZSBuZXdlc3Qg eG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4KLQkgKiBUaGUgY2FsbGVyIGNhbiB1c2Ug aXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0KLQkgKiBiaXRz LiAgSXQgaXMgb25seSB2YWxpZCBpZiB3ZSBmcm96ZSBzb21lIHR1cGxlcywgYW5kIGFsbF9mcm96 ZW4gaXMKLQkgKiB0cnVlLgorCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuIEl0CisJICogY2FuIGJlIHVzZWQgYXMg dGhlIGNvbmZsaWN0IGhvcml6b24sIHdoZW4gc2V0dGluZyB0aGUgVk0gb3Igd2hlbgorCSAqIGZy ZWV6aW5nIGFsbCB0aGUgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCiAJICoKIAkgKiBOT1RFOiBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMgdW50 aWwKIAkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLiBXZSBpZ25vcmUgTFBfREVB RCBpdGVtcyB3aGVuIGRlY2lkaW5nCkBAIC01NTMsMTQgKzU1MiwxMiBAQCBoZWFwX3BhZ2VfcHJ1 bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAogCS8qCiAJ ICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2YgbGl2ZSwg Y29tbWl0dGVkIHR1cGxlcwotCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUgcGFnZS4g VGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQotCSAqIGlmIHRoZSBwYWdlIGlzIGFs bC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBpcwotCSAq IG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFzIGxvbmcg YXMgaXQgaXMKLQkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgdGhl IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCi0JICogVGhpcyBpcyBtb3N0IGxpa2VseSB0byBo YXBwZW4gd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbAotCSAqIGxpdmUg dHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyB1cGRhdGVkIGJlZm9yZSByZXR1cm5pbmcgdG8gdGhl IGNhbGxlcgotCSAqIGJlY2F1c2UgdmFjdXVtIGRvZXMgYXNzZXJ0LWJ1aWxkIG9ubHkgdmFsaWRh dGlvbiBvbiB0aGUgcGFnZSB1c2luZyB0aGlzCi0JICogZmllbGQuCisJICogb24gdGhlIHBhZ2Ug b2xkZXIgdGhhbiB0aGUgdmlzaWJpbGl0eSBob3Jpem9uIHJlcHJlc2VudGVkIGluIHRoZQorCSAq IEdsb2JhbFZpc1N0YXRlLgorCSAqCisJICogSWYgd2UgZW5jb3VudGVyIGFuIHVuY29tbWl0dGVk IHR1cGxlLCB0aGlzIGZpZWxkIGlzIHVubWFpbnRhaW5lZC4gSWYKKwkgKiB0aGUgcGFnZSBpcyBi ZWluZyBzZXQgYWxsLXZpc2libGUgb3Igd2hlbiBmcmVlemluZyBhbGwgbGl2ZSB0dXBsZXMgb24K KwkgKiB0aGUgcGFnZSwgaXQgaXMgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHNuYXBzaG90IGNvbmZs aWN0IGhvcml6b24uCiAJICovCiAJcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKIApAQCAtNzU2LDYgKzc1MywxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVf YW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJcHJzdGF0ZS5u ZGVhZCA+IDAgfHwKIAkJcHJzdGF0ZS5udW51c2VkID4gMDsKIAorCS8qCisJICogQWZ0ZXIgcHJv Y2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHht aW4KKwkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdl IGNhbm5vdCBiZQorCSAqIGFsbC12aXNpYmxlLgorCSAqLworCWlmIChwcnN0YXRlLmFsbF92aXNp YmxlICYmCisJCVRyYW5zYWN0aW9uSWRJc05vcm1hbChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkgJiYKKwkJIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHBy c3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHBy c3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOworCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBy dW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCiAJICogcGRfcHJ1 bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUg dGhvc2UKQEAgLTEwOTksMTIgKzExMDYsMTAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUo UmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCVRyYW5zYWN0aW9uSWQgZGVidWdf Y3V0b2ZmOwogCQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwogCi0JCUFzc2VydChjdXRvZmZzKTsK LQogCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CiAKIAkJaWYgKCFoZWFwX3Bh Z2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKLQkJCQkJCQkJCSAgY3V0b2Zmcy0+ T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgcHJzdGF0ZS52aXN0ZXN0LAogCQkJCQkJCQkJICAmZGVi dWdfYWxsX2Zyb3plbiwKIAkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgb2ZmX2xvYykpCiAJCQlB c3NlcnQoZmFsc2UpOwpAQCAtMTYyOSwxOSArMTYzNCw2IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3Vu Y2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXRO dW1iCiAJCQkJICovCiAJCQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4oaHR1cCk7CiAK LQkJCQkvKgotCQkJCSAqIEZvciBub3cgYWx3YXlzIHVzZSBwcnN0YXRlLT5jdXRvZmZzIGZvciB0 aGlzIHRlc3QsIGJlY2F1c2UKLQkJCQkgKiB3ZSBvbmx5IHVwZGF0ZSAnYWxsX3Zpc2libGUnIHdo ZW4gZnJlZXppbmcgaXMgcmVxdWVzdGVkLiBXZQotCQkJCSAqIGNvdWxkIHVzZSBHbG9iYWxWaXNU ZXN0SXNSZW1vdmFibGVYaWQgaW5zdGVhZCwgaWYgYQotCQkJCSAqIG5vbi1mcmVlemluZyBjYWxs ZXIgd2FudGVkIHRvIHNldCB0aGUgVk0gYml0LgotCQkJCSAqLwotCQkJCUFzc2VydChwcnN0YXRl LT5jdXRvZmZzKTsKLQkJCQlpZiAoIVRyYW5zYWN0aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRl LT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKLQkJCQl7Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxl ID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwotCQkJCQlicmVhazsKLQkJCQl9Ci0KIAkJ CQkvKiBUcmFjayBuZXdlc3QgeG1pbiBvbiBwYWdlLiAqLwogCQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyh4bWluLCBwcnN0YXRlLT52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCiAJCQkJCVRy YW5zYWN0aW9uSWRJc05vcm1hbCh4bWluKSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCAyZmY2N2Q3N2NiNC4uNzU1OGFjNjk3ZjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTQ2NCw3ICs0NjQsNyBAQCBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2Fk ZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBPZmZzZXROdW1iZXIgKgog c3RhdGljIHZvaWQgZGVhZF9pdGVtc19yZXNldChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGlj IHZvaWQgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgYm9v bCBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVm LAotCQkJCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBH bG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLAogCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKQEAgLTI3MTUsNyArMjcxNSw3IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCSBJbnZhbGlkT2Zmc2V0TnVtYmVyKTsKIAogCWlmIChoZWFwX3BhZ2Vfd291bGRfYmVf YWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwKLQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0 b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkJICAgdmFjcmVsLT52aXN0ZXN0LAogCQkJCQkJCQkJ ICAgZGVhZG9mZnNldHMsIG51bV9vZmZzZXRzLAogCQkJCQkJCQkJICAgJmFsbF9mcm96ZW4sICZ2 aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0pKQpAQCAt MzQ1OCwxMyArMzQ1OCwxMyBAQCBkZWFkX2l0ZW1zX2NsZWFudXAoTFZSZWxTdGF0ZSAqdmFjcmVs KQogICovCiBib29sCiBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZm ZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBHbG9iYWxW aXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJCQkJIFRyYW5z YWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKIAkJCQkJCSBPZmZzZXROdW1iZXIgKmxv Z2dpbmdfb2ZmbnVtKQogewogCi0JcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJs ZShyZWwsIGJ1ZiwgT2xkZXN0WG1pbiwKKwlyZXR1cm4gaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92 aXNpYmxlKHJlbCwgYnVmLCB2aXN0ZXN0LAogCQkJCQkJCQkJCSAgTlVMTCwgMCwKIAkJCQkJCQkJ CQkgIGFsbF9mcm96ZW4sCiAJCQkJCQkJCQkJICB2aXNpYmlsaXR5X2N1dG9mZl94aWQsCkBAIC0z NDgzLDcgKzM0ODMsNyBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBC dWZmZXIgYnVmLAogICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlIG90 aGVyIHRoYW4gdGhlIHByb3ZpZGVkCiAgKiBkZWFkb2Zmc2V0cyBhbmQgZmFsc2Ugb3RoZXJ3aXNl LgogICoKLSAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KKyAq IHZpc3Rlc3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCiAgKiAqYWxsX2Zy b3plbiBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGluZGljYXRpbmcgdG8gdGhlIGNhbGxlciBpZiBl dmVyeSB0dXBsZQogICogb24gdGhlIHBhZ2UgaXMgZnJvemVuLgpAQCAtMzUwNCw3ICszNTA0LDcg QEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKICAq Lwogc3RhdGljIGJvb2wKIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZShSZWxhdGlvbiBy ZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJICAgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJ CQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCSAgIE9mZnNldE51bWJlciAq ZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgaW50IG5kZWFkb2Zmc2V0cywKIAkJCQkJCQkgICBib29s ICphbGxfZnJvemVuLApAQCAtMzU3Niw4ICszNTc2LDggQEAgaGVhcF9wYWdlX3dvdWxkX2JlX2Fs bF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKIAkJdHVwbGUudF9sZW4gPSBJdGVt SWRHZXRMZW5ndGgoaXRlbWlkKTsKIAkJdHVwbGUudF90YWJsZU9pZCA9IFJlbGF0aW9uR2V0UmVs aWQocmVsKTsKIAotCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSgmdHVwbGUsIE9s ZGVzdFhtaW4sCi0JCQkJCQkJCQkJIGJ1ZikpCisJCXN3aXRjaCAoSGVhcFR1cGxlU2F0aXNmaWVz VmFjdXVtR2xvYmFsVmlzKCZ0dXBsZSwgdmlzdGVzdCwKKwkJCQkJCQkJCQkJCSAgYnVmKSkKIAkJ ewogCQkJY2FzZSBIRUFQVFVQTEVfTElWRToKIAkJCQl7CkBAIC0zNTk2LDggKzM1OTYsNyBAQCBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAog CQkJCQkgKiB0aGF0IGV2ZXJ5b25lIHNlZXMgaXQgYXMgY29tbWl0dGVkPwogCQkJCQkgKi8KIAkJ CQkJeG1pbiA9IEhlYXBUdXBsZUhlYWRlckdldFhtaW4odHVwbGUudF9kYXRhKTsKLQkJCQkJaWYg KCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwKLQkJCQkJCQkJCQkJICAgT2xkZXN0WG1pbikp CisJCQkJCWlmICghR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHZpc3Rlc3QsIHhtaW4pKQogCQkJ CQl7CiAJCQkJCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwogCQkJCQkJKmFsbF9mcm96ZW4gPSBmYWxz ZTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW0uaAppbmRleCAwYjliYjFjOWIxMy4uNDI3OGYzNTFiZGYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv aGVhcGFtLmgKQEAgLTM0Miw3ICszNDIsNyBAQCBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2VfdW5s b2NrKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQlIZWFwVHVwbGUgb2xkdHVwLCBCdWZmZXIg YnVmZmVyKTsKIAogZXh0ZXJuIGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9u IHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJ CQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkgYm9vbCAqYWxsX2Zy b3plbiwKIAkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJ CQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CkBAIC00MTUsNiArNDE1LDgg QEAgZXh0ZXJuIFRNX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNVcGRhdGUoSGVhcFR1cGxlIGh0 dXAsIENvbW1hbmRJZCBjdXJjaWQsCiAJCQkJCQkJCQkJICBCdWZmZXIgYnVmZmVyKTsKIGV4dGVy biBIVFNWX1Jlc3VsdCBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oSGVhcFR1cGxlIGh0dXAsIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKIAkJCQkJCQkJCQkJQnVmZmVyIGJ1ZmZlcik7CitleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtR2xvYmFsVmlzKEhlYXBUdXBs ZSBodHVwLAorCQkJCQkJCQkJCQkJCSBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwgQnVmZmVyIGJ1 ZmZlcik7CiBleHRlcm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtSG9yaXpv bihIZWFwVHVwbGUgaHR1cCwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJCQkJCQkJCSAgIFRyYW5zYWN0 aW9uSWQgKmRlYWRfYWZ0ZXIpOwogZXh0ZXJuIHZvaWQgSGVhcFR1cGxlU2V0SGludEJpdHMoSGVh cFR1cGxlSGVhZGVyIHR1cGxlLCBCdWZmZXIgYnVmZmVyLAotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0012-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Disposition: attachment; filename="v9-0012-Eliminate-xl_heap_visible-from-vacuum-phase-I-pru.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhh611 RnJvbSA3M2NmYmUyNDZiYTA3NWRiMDUyYWZkMjA3NzQ5YTdjNjZlYzFhOWJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxMi8yMl0gRWxpbWluYXRlIHhsX2hlYXBfdmlzaWJsZSBmcm9tIHZhY3V1bSBwaGFz ZSBJCiBwcnVuZS9mcmVlemUKCkluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVj b3JkIGZvciBldmVyeSBibG9jayByZW5kZXJlZAphbGwtdmlzaWJsZS9mcm96ZW4gYnkgdmFjdXVt J3MgcGhhc2UgSSwgaW5jbHVkZSB0aGUgY2hhbmdlcyB0byB0aGUgVk0gaW4KdGhlIHhsX2hlYXBf cHJ1bmUgcmVjb3JkIGFscmVhZHkgZW1pdHRlZC4KClRoaXMgaXMgb25seSBlbmFibGVkIGZvciB2 YWN1dW0ncyBwcnVuZS9mcmVlemUgd29yaywgbm90IGZvciBvbi1hY2Nlc3MKcHJ1bmluZy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCA0NTYgKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAg MzAgLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICAxNSArLQogMyBm aWxlcyBjaGFuZ2VkLCAyNzkgaW5zZXJ0aW9ucygrKSwgMjIyIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggMzQ4M2I1Y2FmZjMuLjY4M2MxNzYyYzI1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtNDQsNiArNDQsMTMgQEAgdHlwZWRl ZiBzdHJ1Y3QKIAlib29sCQltYXJrX3VudXNlZF9ub3c7CiAJLyogd2hldGhlciB0byBhdHRlbXB0 IGZyZWV6aW5nIHR1cGxlcyAqLwogCWJvb2wJCWZyZWV6ZTsKKworCS8qCisJICogV2hldGhlciBv ciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21lIGJvb2trZWVw aW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlrZSB0byB1cGRh dGUgdGhlIFZNLgorCSAqLworCWJvb2wJCWNvbnNpZGVyX3VwZGF0ZV92bTsKKwogCXN0cnVjdCBW YWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAgdHlwZWRlZiBz dHJ1Y3QKIAkgKgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1bmluZyBpdHNl bGYgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxlY3QgaW5mb3Jt YXRpb24gYWJvdXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQotCSAqIHBhZ2Ug aXMgaW4gYWZ0ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxsZXIuICBUaGV5 IGFyZQotCSAqIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1bHQgYXQgdGhl IGVuZC4KKwkgKiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4gdXBkYXRpbmcg dGhlIHZpc2liaWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0aGUgY2FsbGVy LiAgVGhleSBhcmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJlZXplUmVzdWx0 IGF0IHRoZSBlbmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0eXBlZGVmIHN0 cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVz LCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBhbGxfdmlzaWJs ZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBUaGF0J3MKLQkg KiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0byB1c2UgdGhl bSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUg YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNh bGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0JICogdGhlIGVu ZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQ X0RFQUQgaXRlbXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcgdGhlIFZNLiBX ZSBpZ25vcmUgTFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhlciBvciBub3Qg dG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5nIHRoZQorCSAq IHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemluZyB0dXBsZXMu CiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTM3MSwx MiArMzc4LDE1IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxh dGlvbiwKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSB3aWxs IGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRlciB0byBhZHZh bmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNvbnNpZGVyZWQg YWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBkbyBzbyBub3cu ICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94aWQnIGFuZCAn bmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVuIGZyZWV6aW5n LiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNvCi0gKiBzZXQg cHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24gZXhpdCwgdG8g aW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFyZSBhbHdheXMg c2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgbm90 IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhhdCBhbHNvIGZy ZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnY3V0b2ZmcycsICduZXdfcmVsZnJvemVu X3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQKKyAqIHdo ZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBzZXQg YW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZQorICogaGFzIGNoYW5nZWQsIHdl IHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcgYW5kIGZyZWV6 aW5nCisgKiB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1bHQtPm9sZF92 bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRlIG9mIHRoZSBW TSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxlciB0byB1c2Ug aW4gYm9va2tlZXBpbmcuIE5vdGUgdGhhdCBuZXcgYW5kIG9sZF92bWJpdHMgd2lsbCBiZQorICog MCBpZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIG5vdCBzZXQuCiAgKgogICogYmxrX2tu b3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9jayBhcyBvZiB0 aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2soKS4gdm1idWZm ZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CkBAIC0zOTIsNiArNDAyLDggQEAgaWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogICogICBGUkVF WkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJl dHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxl ci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFn ZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXpl IGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB2 YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0 aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVy bWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQzNiwxOCArNDQ4LDI0IEBAIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCUhlYXBU dXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVuZTsKLQlib29s CQlkb19oaW50OworCWJvb2wJCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZTsKKwlib29sCQlkb19z ZXRfdm07CiAJdWludDgJCXZtZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKIAli b29sCQloaW50X2JpdF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBwZ1dhbFVzYWdlLndhbF9m cGk7CisJYm9vbAkJYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IGZhbHNlOworCWJvb2wJCXNl dF9wZF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3Rh dGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3RhdGUubWFya191bnVzZWRf bm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwog CXByc3RhdGUuZnJlZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAw OworCXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJV TkVfVVBEQVRFX1ZNKSAhPSAwOwogCXByc3RhdGUuY3V0b2ZmcyA9IGN1dG9mZnM7CiAKKwlBc3Nl cnQoIXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtIHx8IHZtYnVmZmVyKTsKKwogCS8qCiAJICog T3VyIHN0cmF0ZWd5IGlzIHRvIHNjYW4gdGhlIHBhZ2UgYW5kIG1ha2UgbGlzdHMgb2YgaXRlbXMg dG8gY2hhbmdlLAogCSAqIHRoZW4gYXBwbHkgdGhlIGNoYW5nZXMgd2l0aGluIGEgY3JpdGljYWwg c2VjdGlvbi4gIFRoaXMga2VlcHMgYXMgbXVjaApAQCAtNDkyLDUwICs1MTAsNTcgQEAgaGVhcF9w YWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJ cHJzdGF0ZS5kZWFkb2Zmc2V0cyA9IHByZXN1bHQtPmRlYWRvZmZzZXRzOwogCiAJLyoKLQkgKiBD YWxsZXIgbWF5IHVwZGF0ZSB0aGUgVk0gYWZ0ZXIgd2UncmUgZG9uZS4gIFdlIGNhbiBrZWVwIHRy YWNrIG9mCi0JICogd2hldGhlciB0aGUgcGFnZSB3aWxsIGJlIGFsbC12aXNpYmxlIGFuZCBhbGwt ZnJvemVuIGFmdGVyIHBydW5pbmcgYW5kCi0JICogZnJlZXppbmcgdG8gaGVscCB0aGUgY2FsbGVy IHRvIGRvIHRoYXQuCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3 aWxsIGJlIGFsbC12aXNpYmxlIGFuZAorCSAqIGFsbC1mcm96ZW4gZm9yIHVzZSBpbiBvcHBvcnR1 bmlzdGljIGZyZWV6aW5nIGFuZCB0byB1cGRhdGUgdGhlIFZNIGlmCisJICogdGhlIGNhbGxlciBy ZXF1ZXN0cyBpdC4KKwkgKgorCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0ZW1wdHMgZnJl ZXppbmcgYW5kIHNldHRpbmcgdGhlIFZNIGJpdHMuIEJ1dAorCSAqIG90aGVyIGNhbGxlcnMgY291 bGQgZG8gZWl0aGVyIG9uZS4gVGhlIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMKKwkgKiByZXF1 aXJlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4gYWRkaXRpb24gdG8gc2V0dGluZyB0 aGUgVk0KKwkgKiBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0dW5pc3RpY2Fs bHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZQorCSAqIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lIGFs bC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4KKwkgKiBleGNlcHQg Zm9yIGRlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4KIAkgKgotCSAq IEN1cnJlbnRseSwgb25seSBWQUNVVU0gc2V0cyB0aGUgVk0gYml0cy4gIFRvIHNhdmUgdGhlIGVm Zm9ydCwgb25seSBkbwotCSAqIHRoZSBib29ra2VlcGluZyBpZiB0aGUgY2FsbGVyIG5lZWRzIGl0 LiAgQ3VycmVudGx5LCB0aGF0J3MgdGllZCB0bwotCSAqIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUs IGJ1dCBpdCBjb3VsZCBiZSBhIHNlcGFyYXRlIGZsYWcgaWYgeW91IHdhbnRlZAotCSAqIHRvIHVw ZGF0ZSB0aGUgVk0gYml0cyB3aXRob3V0IGFsc28gZnJlZXppbmcgb3IgZnJlZXplIHdpdGhvdXQg YWxzbwotCSAqIHNldHRpbmcgdGhlIFZNIGJpdHMuCisJICogSWYgb25seSB1cGRhdGluZyB0aGUg Vk0sIHdlIG11c3QgaW5pdGlhbGl6ZSBhbGxfZnJvemVuIHRvIGZhbHNlLCBhcworCSAqIGhlYXBf cHJlcGFyZV9mcmVlemVfdHVwbGUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGVhY2ggdHVwbGUg b24gdGhlCisJICogcGFnZSBhbmQgd2Ugd2lsbCBub3QgZW5kIHVwIGNvcnJlY3RseSBzZXR0aW5n IGl0IHRvIGZhbHNlIGxhdGVyLgogCSAqCi0JICogSW4gYWRkaXRpb24gdG8gdGVsbGluZyB0aGUg Y2FsbGVyIHdoZXRoZXIgaXQgY2FuIHNldCB0aGUgVk0gYml0LCB3ZQotCSAqIGFsc28gdXNlICdh bGxfdmlzaWJsZScgYW5kICdhbGxfZnJvemVuJyBmb3Igb3VyIG93biBkZWNpc2lvbi1tYWtpbmcu IElmCi0JICogdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lIGZyb3plbiwgd2UgY29uc2lkZXIg b3Bwb3J0dW5pc3RpY2FsbHkKLQkgKiBmcmVlemluZyB0dXBsZXMuICBXZSB3aWxsIG5vdCBiZSBh YmxlIHRvIGZyZWV6ZSB0aGUgd2hvbGUgcGFnZSBpZiB0aGVyZQotCSAqIGFyZSB0dXBsZXMgcHJl c2VudCB0aGF0IGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSBvciBpZiB0aGVyZSBhcmUKLQkg KiBkZWFkIHR1cGxlcyB3aGljaCBhcmUgbm90IHlldCByZW1vdmFibGUuICBIb3dldmVyLCBkZWFk IHR1cGxlcyB3aGljaAotCSAqIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZhY3V1bWlu ZyBzaG91bGQgbm90IHByZWNsdWRlIHVzIGZyb20KLQkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVl emluZy4gIEJlY2F1c2Ugb2YgdGhhdCwgd2UgZG8gbm90IGNsZWFyCi0JICogYWxsX3Zpc2libGUg d2hlbiB3ZSBzZWUgTFBfREVBRCBpdGVtcy4gIFdlIGZpeCB0aGF0IGF0IHRoZSBlbmQgb2YgdGhl Ci0JICogZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVyLCBz byB0aGF0IHRoZSBjYWxsZXIKLQkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5 LgorCSAqIERlYWQgdHVwbGVzIHdoaWNoIHdpbGwgYmUgcmVtb3ZlZCBieSB0aGUgZW5kIG9mIHZh Y3V1bWluZyBzaG91bGQgbm90CisJICogcHJlY2x1ZGUgdXMgZnJvbSBvcHBvcnR1bmlzdGljYWxs eSBmcmVlemluZywgc28gd2UgZG8gbm90IGNsZWFyCisJICogYWxsX3Zpc2libGUgd2hlbiB3ZSBz ZWUgTFBfREVBRCBpdGVtcy4gV2UgZml4IHRoYXQgYWZ0ZXIgZGV0ZXJtaW5pbmcKKwkgKiB3aGV0 aGVyIG9yIG5vdCB0byBmcmVlemUgYnV0IGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0 byB1cGRhdGUKKwkgKiB0aGUgVk0gc28gdGhhdCB3ZSBkb24ndCBzZXQgdGhlIFZNIGJpdCBpbmNv cnJlY3RseS4KKwkgKgorCSAqIElmIG5vdCBmcmVlemluZyBvciB1cGRhdGluZyB0aGUgVk0sIHdl IG90aGVyd2lzZSBhdm9pZCB0aGUgZXh0cmEKKwkgKiBib29ra2VlcGluZy4gSW5pdGlhbGl6aW5n IGFsbF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yaworCSAqIHRvIHVw ZGF0ZSB0aGVtIGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkg Ki8KIAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1 ZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gdHJ1ZTsKIAl9CisJZWxzZSBpZiAocHJzdGF0ZS5j b25zaWRlcl91cGRhdGVfdm0pCisJeworCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gdHJ1ZTsKKwkJ cHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQogCWVsc2UKIAl7Ci0JCS8qCi0JCSAqIElu aXRpYWxpemluZyB0byBmYWxzZSBhbGxvd3Mgc2tpcHBpbmcgdGhlIHdvcmsgdG8gdXBkYXRlIHRo ZW0gaW4KLQkJICogaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgotCQkg Ki8KIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwogCQlwcnN0YXRlLmFsbF9mcm96ZW4g PSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhl IG5ld2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZQotCSAqIHBhZ2UuICBJbiB0aGUgY29t bW9uIGNhc2UsIHRoaXMgd2lsbCBiZSBzZXQgYXMgdGhlIGNvbmZsaWN0IGhvcml6b24gdGhlCi0J ICogY2FsbGVyIGNhbiB1c2UgZm9yIHVwZGF0aW5nIHRoZSBWTS4gIElmLCBhdCB0aGUgZW5kIG9m IGZyZWV6aW5nIGFuZAotCSAqIHBydW5pbmcsIHRoZSBwYWdlIGlzIGFsbC1mcm96ZW4sIHRoZXJl IGlzIG5vIHBvc3NpYmlsaXR5IHRoYXQgYW55Ci0JICogcnVubmluZyB0cmFuc2FjdGlvbiBvbiB0 aGUgc3RhbmRieSBkb2VzIG5vdCBzZWUgdHVwbGVzIG9uIHRoZSBwYWdlIGFzCi0JICogYWxsLXZp c2libGUsIHNvIHRoZSBjb25mbGljdCBob3Jpem9uIHJlbWFpbnMgSW52YWxpZFRyYW5zYWN0aW9u SWQuCisJICogVGhlIHZpc2liaWxpdHkgY3V0b2ZmIHhpZCBpcyB0aGUgbmV3ZXN0IHhtaW4gb2Yg bGl2ZSwgY29tbWl0dGVkIHR1cGxlcworCSAqIG9sZGVyIHRoYW4gT2xkZXN0WG1pbiBvbiB0aGUg cGFnZS4gVGhpcyBmaWVsZCBpcyBvbmx5IGtlcHQgdXAtdG8tZGF0ZQorCSAqIGlmIHRoZSBwYWdl IGlzIGFsbC12aXNpYmxlLiBBcyBzb29uIGFzIGEgdHVwbGUgaXMgZW5jb3VudGVyZWQgdGhhdCBp cworCSAqIG5vdCB2aXNpYmxlIHRvIGFsbCwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIEFz IGxvbmcgYXMgaXQgaXMKKwkgKiBtYWludGFpbmVkLCBpdCBjYW4gYmUgdXNlZCB0byBjYWxjdWxh dGUgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24uCisJICogVGhpcyBpcyBtb3N0IGxpa2Vs eSB0byBoYXBwZW4gd2hlbiB1cGRhdGluZyB0aGUgVk0gYW5kL29yIGZyZWV6aW5nIGFsbAorCSAq IGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdCBpcyB1cGRhdGVkIGJlZm9yZSByZXR1cm5pbmcg dG8gdGhlIGNhbGxlcgorCSAqIGJlY2F1c2UgdmFjdXVtIGRvZXMgYXNzZXJ0LWJ1aWxkIG9ubHkg dmFsaWRhdGlvbiBvbiB0aGUgcGFnZSB1c2luZyB0aGlzCisJICogZmllbGQuCiAJICovCiAJcHJz dGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIApAQCAt NzMzLDEwICs3NTgsMTEgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAkvKgogCSAqIEV2ZW4gaWYgd2UgZG9uJ3QgcHJ1bmUg YW55dGhpbmcsIGlmIHdlIGZvdW5kIGEgbmV3IHZhbHVlIGZvciB0aGUKLQkgKiBwZF9wcnVuZV94 aWQgZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1hcmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aGUg aGludAotCSAqIGJpdC4KKwkgKiBwZF9wcnVuZV94aWQgZmllbGQgb3IgdGhlIHBhZ2Ugd2FzIG1h cmtlZCBmdWxsLCB3ZSB3aWxsIHVwZGF0ZSB0aG9zZQorCSAqIGhpbnQgYml0cy4KIAkgKi8KLQlk b19oaW50ID0gKChQYWdlSGVhZGVyKSBwYWdlKS0+cGRfcHJ1bmVfeGlkICE9IHByc3RhdGUubmV3 X3BydW5lX3hpZCB8fAorCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSA9CisJCSgoUGFnZUhlYWRl cikgcGFnZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKIAkJUGFn ZUlzRnVsbChwYWdlKTsKIAogCS8qCkBAIC03ODQsNyArODEwLDcgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQlpZiAo WExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKIAkJCQkJCQlkb19mcmVlemUgPSB0 cnVlOwogCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKGRvX2hpbnQpCisJCQkJCWVsc2UgaWYgKGRvX2hp bnRfZnVsbF9vcl9wcnVuYWJsZSkKIAkJCQkJewogCQkJCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVk ZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKQogCQkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7CkBAIC04MjMsMTEgKzg0OSw4NCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICovCiAJfQogCisJLyoK KwkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxfdmlz aWJsZSBlYXJsaWVyIG9uIHRvCisJICogbWFrZSB0aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Igbm90 IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQorCSAqIHNob3J0LXRlcm0gcHJl c2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgd2VyZQorCSAqIGVm ZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcuICBJ dCBkb2Vzbid0CisJICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwgcGFz cyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCisJICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJvemVu LCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgorCSAqCisJICogTm93IHRo YXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVy ZSBhcmUKKwkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gSXQgbmVlZHMgdG8gcmVm bGVjdCB0aGUgcHJlc2VudCBzdGF0ZSBvZgorCSAqIHRoZSBwYWdlIHdoZW4gdXNpbmcgaXQgdG8g ZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZSB0aGUgVk0uCisJICoKKwkgKiBLZWVw IHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBhbGwtZnJvemVuIGV4Y2VwdCBM UF9ERUFECisJICogaXRlbXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjYWxjdWxhdGluZyB0aGUgc25h cHNob3QgY29uZmxpY3QgaG9yaXpvbiwKKwkgKiB0aG91Z2guCisJICovCisJYWxsX2Zyb3plbl9l eGNlcHRfbHBfZGVhZCA9IHByc3RhdGUuYWxsX2Zyb3plbjsKKwlpZiAocHJzdGF0ZS5scGRlYWRf aXRlbXMgPiAwKQorCXsKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRl LmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8 fCBwcnN0YXRlLmFsbF92aXNpYmxlKTsKKworCS8qCisJICogSGFuZGxlIHNldHRpbmcgdmlzaWJp bGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcworCSAqIG9m IGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNp YmxlIGFuZAorCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAqLworCWlmIChwcnN0YXRlLmNv bnNpZGVyX3VwZGF0ZV92bSkKKwl7CisJCS8qCisJCSAqIENsZWFyIGFueSBWTSBjb3JydXB0aW9u LiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gYSBjcml0aWNhbAorCQkgKiBzZWN0aW9uLCBz byB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUgaXMgaW5jb3JyZWN0bHkgc2V0LAor CQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBwYWdlIGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3Vs ZCBlbmQgdXAgZG9pbmcKKwkJICogc28gYWdhaW4gbGF0ZXIuIFRoaXMgaXMgbm90IGEgY29ycmVj dG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBwYXRoCisJCSAqIG9mIFZNIGNvcnJ1cHRpb24sIHNv IHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJhCisJCSAqIHBlcmZvcm1hbmNl IG92ZXJoZWFkLgorCQkgKi8KKwkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihy ZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCisJCQkJCQkJCQkJ ICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQorCQl7CisJ CQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICov CisJCX0KKworCQkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZN IGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KKwkJZWxzZSBpZiAocHJzdGF0ZS5hbGxfdmlzaWJs ZSAmJgorCQkJCSAoIWJsa19rbm93bl9hdiB8fAorCQkJCSAgKHByc3RhdGUuYWxsX2Zyb3plbiAm JiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVyKSkpKQorCQl7CisJ CQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCQlpZiAocHJzdGF0ZS5h bGxfZnJvemVuKQorCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOworCQl9 CisJfQorCisJZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsK KworCS8qCisJICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxFIHVubGVzcyB3ZSBhbHNvIHBsYW4g dG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKKwkgKiBjb3JyZWN0IGZvciBhIGhlYXAgcGFnZSB0 byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZNIGlzIG5vdAorCSAqIHNldCwgd2Ug c3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5jLgorCSAqCisJICogUHJpb3IgdG8g UG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJl IHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyLiBUaGlzIGNvdWxkIGhhcHBlbiBp ZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQRF9BTExfVklTSUJMRSBidXQgYmVmb3Jl IHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICovCisJc2V0X3BkX2FsbF92aXNpYmxlID0gZG9f c2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCisJLyogU2F2ZSB0aGVzZSBmb3Ig dGhlIGNhbGxlciBpbiBjYXNlIHdlIGxhdGVyIHplcm8gb3V0IHZtZmxhZ3MgKi8KKwlwcmVzdWx0 LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCS8qIEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0 aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCi0JaWYg KGRvX2hpbnQpCisJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKIAl7CiAJCS8qCiAJCSAq IFVwZGF0ZSB0aGUgcGFnZSdzIHBkX3BydW5lX3hpZCBmaWVsZCB0byBlaXRoZXIgemVybywgb3Ig dGhlIGxvd2VzdApAQCAtODQzLDE1ICs5NDIsMTYgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCVBhZ2VDbGVhckZ1bGwocGFn ZSk7CiAKIAkJLyoKLQkJICogSWYgdGhhdCdzIGFsbCB3ZSBoYWQgdG8gZG8gdG8gdGhlIHBhZ2Us IHRoaXMgaXMgYSBub24tV0FMLWxvZ2dlZAotCQkgKiBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRv IGZyZWV6ZSBvciBwcnVuZSB0aGUgcGFnZSwgd2Ugd2lsbCBtYXJrCi0JCSAqIHRoZSBidWZmZXIg ZGlydHkgYmVsb3cuCisJCSAqIElmIHdlIGFyZSBfb25seV8gc2V0dGluZyB0aGUgcHJ1bmVfeGlk IG9yIFBEX1BBR0VfRlVMTCBoaW50LCB0aGVuCisJCSAqIHRoaXMgaXMgYSBub24tV0FMLWxvZ2dl ZCBoaW50LiAgSWYgd2UgYXJlIGdvaW5nIHRvIGZyZWV6ZSBvciBwcnVuZQorCQkgKiB0dXBsZXMg b24gdGhlIHBhZ2Ugb3Igc2V0IFBEX0FMTF9WSVNJQkxFLCB3ZSB3aWxsIG1hcmsgdGhlIGJ1ZmZl cgorCQkgKiBkaXJ0eSBhbmQgZW1pdCBXQUwgYmVsb3cuCiAJCSAqLwotCQlpZiAoIWRvX2ZyZWV6 ZSAmJiAhZG9fcHJ1bmUpCisJCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiAhc2V0X3Bk X2FsbF92aXNpYmxlKQogCQkJTWFya0J1ZmZlckRpcnR5SGludChidWZmZXIsIHRydWUpOwogCX0K IAotCWlmIChkb19wcnVuZSB8fCBkb19mcmVlemUpCisJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6 ZSB8fCBkb19zZXRfdm0pCiAJewogCQkvKiBBcHBseSB0aGUgcGxhbm5lZCBpdGVtIGNoYW5nZXMg YW5kIHJlcGFpciBwYWdlIGZyYWdtZW50YXRpb24uICovCiAJCWlmIChkb19wcnVuZSkKQEAgLTg2 NSwxMiArOTY1LDQ4IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlpZiAoZG9fZnJlZXplKQogCQkJaGVhcF9mcmVlemVfcHJl cGFyZWRfdHVwbGVzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7CiAK LQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7CisJCWlmIChzZXRfcGRfYWxsX3Zpc2libGUpCisJ CQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKworCQkvKgorCQkgKiBXZSBvbmx5IHNldCBQRF9B TExfVklTSUJMRSBpZiB3ZSBhbHNvIHNldCB0aGUgVk0sIGFuZCBzaW5jZSBzZXR0aW5nCisJCSAq IHRoZSBWTSByZXF1aXJlcyBlbWl0dGluZyBXQUwsIE1hcmtCdWZmZXJEaXJ0eUhpbnQoKSBpc24n dAorCQkgKiBhcHByb3ByaWF0ZSBoZXJlLgorCQkgKi8KKwkJaWYgKGRvX3BydW5lIHx8IGRvX2Zy ZWV6ZSB8fCBzZXRfcGRfYWxsX3Zpc2libGUpCisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsK KworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJCQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdl KSk7CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCQkJ b2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhyZWxhdGlvbiwgYmxvY2tubywK KwkJCQkJCQkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MpOworCisJCQlpZiAob2xkX3ZtYml0cyA9 PSB2bWZsYWdzKQorCQkJeworCQkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX1VO TE9DSyk7CisJCQkJZG9fc2V0X3ZtID0gZmFsc2U7CisJCQkJLyogMCBvdXQgdm1mbGFncyBzbyB3 ZSBkb24ndCBlbWl0IFdBTCB0byB1cGRhdGUgdGhlIFZNICovCisJCQkJdm1mbGFncyA9IDA7CisJ CQl9CisJCX0KKworCQkvKgorCQkgKiBJdCBzaG91bGQgbmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCBQ RF9BTExfVklTSUJMRSBpcyBub3Qgc2V0IGFuZCB0aGUKKwkJICogVk0gaXMgc2V0LiBPciwgaWYg aXQgd2VyZSwgd2Ugc2hvdWxkIGhhdmUgY2F1Z2h0IGl0IGVhcmxpZXIgd2hlbgorCQkgKiBmaW5k aW5nIGFuZCBmaXhpbmcgVk0gY29ycnVwdGlvbi4gU28sIGlmIHdlIGZvdW5kIG91dCB0aGUgVk0g d2FzCisJCSAqIGFscmVhZHkgc2V0IGFib3ZlLCB3ZSBzaG91bGQgaGF2ZSBmb3VuZCBQRF9BTExf VklTSUJMRSBzZXQgZWFybGllci4KKwkJICovCisJCUFzc2VydCghc2V0X3BkX2FsbF92aXNpYmxl IHx8IGRvX3NldF92bSk7CiAKIAkJLyoKLQkJICogRW1pdCBhIFdBTCBYTE9HX0hFQVAyX1BSVU5F X0ZSRUVaRSByZWNvcmQgc2hvd2luZyB3aGF0IHdlIGRpZAorCQkgKiBFbWl0IGEgV0FMIFhMT0df SEVBUDJfUFJVTkVfRlJFRVpFIHJlY29yZCBzaG93aW5nIHdoYXQgd2UgZGlkLiBJZgorCQkgKiB3 ZSB3ZXJlIG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFuZCBpdCB0dXJucyBvdXQgaXQgd2FzIGFscmVh ZHkgc2V0LAorCQkgKiB3ZSB3aWxsIGhhdmUgdW5zZXQgZG9fc2V0X3ZtIGVhcmxpZXIuIEFzIHN1 Y2gsIGNoZWNrIGl0IGFnYWluCisJCSAqIGJlZm9yZSBlbWl0dGluZyB0aGUgcmVjb3JkLgogCQkg Ki8KLQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQorCQlpZiAoUmVsYXRpb25OZWVk c1dBTChyZWxhdGlvbikgJiYgKGRvX3NldF92bSB8fCBkb19wcnVuZSB8fCBkb19mcmVlemUpKQog CQl7CiAJCQkvKgogCQkJICogVGhlIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIGZvciB0aGUgd2hv bGUgcmVjb3JkIHNob3VsZCBiZSB0aGUKQEAgLTg4MiwzNSArMTAxOCw1NiBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCSAq IG9uIHRoZSBzdGFuZGJ5IHdpdGggeGlkcyBvbGRlciB0aGFuIHRoZSB5b3VuZ2VzdCB0dXBsZSB0 aGlzCiAJCQkgKiByZWNvcmQgd2lsbCBmcmVlemUgd2lsbCBjb25mbGljdC4KIAkJCSAqLwotCQkJ VHJhbnNhY3Rpb25JZCBmcnpfY29uZmxpY3RfaG9yaXpvbiA9IEludmFsaWRUcmFuc2FjdGlvbklk OwotCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQ7CisJCQlUcmFuc2FjdGlvbklkIGNvbmZs aWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCisJCQkvKgorCQkJICogSWYgd2UgYXJl IHVwZGF0aW5nIHRoZSBWTSwgdGhlIGNvbmZsaWN0IGhvcml6b24gaXMgYWxtb3N0CisJCQkgKiBh bHdheXMgdGhlIHZpc2liaWxpdHkgY3V0b2ZmIFhJRC4KKwkJCSAqCisJCQkgKiBTZXBhcmF0ZWx5 LCBpZiB3ZSBhcmUgZnJlZXppbmcgYW55IHR1cGxlcywgYXMgYW4gb3B0aW1pemF0aW9uLAorCQkJ ICogd2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRvZmZfeGlkIGFzIHRoZSBjb25mbGljdCBo b3Jpem9uIGlmCisJCQkgKiB0aGUgcGFnZSB3aWxsIGJlIGFsbC1mcm96ZW4uIFRoaXMgaXMgdHJ1 ZSBldmVuIGlmIHRoZXJlIGFyZQorCQkJICogTFBfREVBRCBsaW5lIHBvaW50ZXJzIGJlY2F1c2Ug d2UgaWdub3JlZCB0aG9zZSB3aGVuIG1haW50YWluaW5nCisJCQkgKiB0aGUgdmlzaWJpbGl0eV9j dXRvZmZfeGlkLgorCQkJICovCisJCQlpZiAoZG9fc2V0X3ZtIHx8IChkb19mcmVlemUgJiYgYWxs X2Zyb3plbl9leGNlcHRfbHBfZGVhZCkpCisJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQ7CiAKIAkJCS8qCi0JCQkgKiBXZSBjYW4gdXNlIHRoZSB2aXNpYmls aXR5X2N1dG9mZl94aWQgYXMgb3VyIGN1dG9mZiBmb3IKLQkJCSAqIGNvbmZsaWN0cyB3aGVuIHRo ZSB3aG9sZSBwYWdlIGlzIGVsaWdpYmxlIHRvIGJlY29tZSBhbGwtZnJvemVuCi0JCQkgKiBpbiB0 aGUgVk0gb25jZSB3ZSdyZSBkb25lIHdpdGggaXQuICBPdGhlcndpc2Ugd2UgZ2VuZXJhdGUgYQot CQkJICogY29uc2VydmF0aXZlIGN1dG9mZiBieSBzdGVwcGluZyBiYWNrIGZyb20gT2xkZXN0WG1p bi4KKwkJCSAqIE90aGVyd2lzZSwgaWYgd2UgYXJlIGZyZWV6aW5nIGJ1dCB0aGUgcGFnZSB3b3Vs ZCBub3QgYmUKKwkJCSAqIGFsbC1mcm96ZW4sIHdlIGhhdmUgdG8gdXNlIHRoZSBtb3JlIHBlc3Np bWlzdGljIGhvcml6b24gb2YKKwkJCSAqIE9sZGVzdFhtaW4sIHdoaWNoIG1heSBiZSBuZXdlciB0 aGFuIHRoZSBuZXdlc3QgdHVwbGUgd2UgZnJvemUuCisJCQkgKiBXZSBjdXJyZW50bHkgZG9uJ3Qg dHJhY2sgdGhlIG5ld2VzdCB0dXBsZSB3ZSBmcm96ZS4KIAkJCSAqLwotCQkJaWYgKGRvX2ZyZWV6 ZSkKKwkJCWVsc2UgaWYgKGRvX2ZyZWV6ZSkKIAkJCXsKLQkJCQlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJCWZyel9jb25mbGljdF9ob3Jpem9uID0g cHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQ7Ci0JCQkJZWxzZQotCQkJCXsKLQkJCQkJLyog QXZvaWRzIGZhbHNlIGNvbmZsaWN0cyB3aGVuIGhvdF9zdGFuZGJ5X2ZlZWRiYWNrIGluIHVzZSAq LwotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUuY3V0b2Zmcy0+T2xkZXN0WG1p bjsKLQkJCQkJVHJhbnNhY3Rpb25JZFJldHJlYXQoZnJ6X2NvbmZsaWN0X2hvcml6b24pOwotCQkJ CX0KKwkJCQljb25mbGljdF94aWQgPSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47CisJCQkJ VHJhbnNhY3Rpb25JZFJldHJlYXQoY29uZmxpY3RfeGlkKTsKIAkJCX0KIAotCQkJaWYgKFRyYW5z YWN0aW9uSWRGb2xsb3dzKGZyel9jb25mbGljdF9ob3Jpem9uLCBwcnN0YXRlLmxhdGVzdF94aWRf cmVtb3ZlZCkpCi0JCQkJY29uZmxpY3RfeGlkID0gZnJ6X2NvbmZsaWN0X2hvcml6b247Ci0JCQll bHNlCisJCQkvKgorCQkJICogSWYgd2UgYXJlIHJlbW92aW5nIHR1cGxlcyB3aXRoIGEgeW91bmdl ciB4bWF4IHRoYW4gb3VyIHNvIGZhcgorCQkJICogY2FsY3VsYXRlZCBjb25mbGljdF94aWQsIHdl IG11c3QgdXNlIHRoaXMgYXMgb3VyIGhvcml6b24uCisJCQkgKi8KKwkJCWlmIChUcmFuc2FjdGlv bklkRm9sbG93cyhwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZCwgY29uZmxpY3RfeGlkKSkKIAkJ CQljb25mbGljdF94aWQgPSBwcnN0YXRlLmxhdGVzdF94aWRfcmVtb3ZlZDsKIAorCQkJLyoKKwkJ CSAqIFdlIGNhbiBvbWl0IHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGlmIHdlIGFyZSBu b3QgcHJ1bmluZworCQkJICogb3IgZnJlZXppbmcgYW55IHR1cGxlcyBhbmQgYXJlIHNldHRpbmcg YW4gYWxyZWFkeSBhbGwtdmlzaWJsZQorCQkJICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4g SW4gdGhpcyBjYXNlLCBhbGwgb2YgdGhlIHR1cGxlcyBvbgorCQkJICogdGhlIHBhZ2UgbXVzdCBh bHJlYWR5IGJlIHZpc2libGUgdG8gYWxsIE1WQ0Mgc25hcHNob3RzIG9uIHRoZQorCQkJICogc3Rh bmRieS4KKwkJCSAqLworCQkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmIGRvX3NldF92 bSAmJgorCQkJCWJsa19rbm93bl9hdiAmJiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfQUxMX0ZS T1pFTikpCisJCQkJY29uZmxpY3RfeGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CisKIAkJCWxv Z19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwKIAkJCQkJCQkJCSAgZmFs c2UsCi0JCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAsIGZhbHNlLAorCQkJCQkJCQkJICB2bWJ1 ZmZlciwKKwkJCQkJCQkJCSAgdm1mbGFncywKKwkJCQkJCQkJCSAgc2V0X3BkX2FsbF92aXNpYmxl LAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNvbiwKIAkJ CQkJCQkJCSAgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbiwKQEAgLTkyMiwxMjQgKzEw NzksNTUgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAKIAlFTkRfQ1JJVF9TRUNUSU9OKCk7CiAKLQkvKiBDb3B5IGluZm9ybWF0 aW9uIGJhY2sgZm9yIGNhbGxlciAqLwotCXByZXN1bHQtPm5kZWxldGVkID0gcHJzdGF0ZS5uZGVs ZXRlZDsKLQlwcmVzdWx0LT5ubmV3bHBkZWFkID0gcHJzdGF0ZS5uZGVhZDsKLQlwcmVzdWx0LT5u ZnJvemVuID0gcHJzdGF0ZS5uZnJvemVuOwotCXByZXN1bHQtPmxpdmVfdHVwbGVzID0gcHJzdGF0 ZS5saXZlX3R1cGxlczsKLQlwcmVzdWx0LT5yZWNlbnRseV9kZWFkX3R1cGxlcyA9IHByc3RhdGUu cmVjZW50bHlfZGVhZF90dXBsZXM7Ci0KLQkvKgotCSAqIEl0IHdhcyBjb252ZW5pZW50IHRvIGln bm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KLQkgKiBtYWtl IHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0 ZWQgYnkgdGhlCi0JICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhl c2UgTFBfREVBRCBpdGVtcyB3ZXJlCi0JICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9V TlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2gg dmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkg KiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFD VVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5hbGl6 ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1z IG9uIHRoZSBwYWdlLiAgSXQgbmVlZHMgdG8gcmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZQotCSAq IG9mIHRoZSBwYWdlLCBhcyBleHBlY3RlZCBmb3IgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFw LgotCSAqLwotCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUubHBkZWFkX2l0ZW1z ID09IDApCi0JewotCQlwcmVzdWx0LT5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX3Zpc2libGU7 Ci0JCXByZXN1bHQtPmFsbF9mcm96ZW4gPSBwcnN0YXRlLmFsbF9mcm96ZW47Ci0JfQotCWVsc2UK LQl7Ci0JCXByZXN1bHQtPmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCXByZXN1bHQtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKLQl9Ci0KLQlwcmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKKwlp ZiAoZG9fc2V0X3ZtKQorCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19VTkxPQ0sp OwogCi0JLyoKLQkgKiBJZiB1cGRhdGluZyB0aGUgdmlzaWJpbGl0eSBtYXAsIHRoZSBjb25mbGlj dCBob3Jpem9uIGZvciB0aGF0IHJlY29yZAotCSAqIG11c3QgYmUgdGhlIG5ld2VzdCB4bWluIG9u IHRoZSBwYWdlLiAgSG93ZXZlciwgaWYgdGhlIHBhZ2UgaXMKLQkgKiBjb21wbGV0ZWx5IGZyb3pl biwgdGhlcmUgY2FuIGJlIG5vIGNvbmZsaWN0IGFuZCB0aGUgdm1fY29uZmxpY3RfaG9yaXpvbgot CSAqIHNob3VsZCByZW1haW4gSW52YWxpZFRyYW5zYWN0aW9uSWQuICBUaGlzIGluY2x1ZGVzIHRo ZSBjYXNlIHRoYXQgd2UKLQkgKiBqdXN0IGZyb3plIGFsbCB0aGUgdHVwbGVzOyB0aGUgcHJ1bmUt ZnJlZXplIHJlY29yZCBpbmNsdWRlZCB0aGUKLQkgKiBjb25mbGljdCBYSUQgYWxyZWFkeSBzbyB0 aGUgVk0gdXBkYXRlIHJlY29yZCBkb2Vzbid0IG5lZWQgaXQuCi0JICovCi0JaWYgKHByZXN1bHQt PmFsbF9mcm96ZW4pCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKLQllbHNlCi0JCXByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24gPSBwcnN0 YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlBc3NlcnQoIXByc3RhdGUuYWxsX3Zpc2libGUg fHwgKHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRp bmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChh cwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9t IGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4gdmFyaWFibGVzLgorCSAqIFZBQ1VVTSB3 aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgZHVyaW5nIHRoZSBzZWNvbmQgcGFz cyBvdmVyCisJICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJv emVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCisJICogaXMgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9m IHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cgdGhhdAorCSAqIHdlJ3ZlIGZpbmlz aGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBpbiB0b3RhbAor CSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVzaW5nIGFuIGFz c2VydGlvbi4gV2Ugd2lsbAorCSAqIGhhdmUgYWxyZWFkeSBzZXQgdGhlIHBhZ2UgaW4gdGhlIFZN LCBzbyB0aGlzIGFzc2VydGlvbiB3aWxsIG9ubHkgbGV0CisJICogeW91IGtub3cgdGhhdCB5b3Un dmUgYWxyZWFkeSBkb25lIHNvbWV0aGluZyB3cm9uZy4KIAkgKi8KLQlpZiAob3B0aW9ucyAmIEhF QVBfUEFHRV9QUlVORV9VUERBVEVfVk0pCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCWlm IChwcnN0YXRlLmFsbF92aXNpYmxlKQogCXsKLQkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1fY29y cnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2UsCi0J CQkJCQkJCQkJICAgYmxrX2tub3duX2F2LAotCQkJCQkJCQkJCSAgIHByc3RhdGUubHBkZWFkX2l0 ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24ndCB1 cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQorCQlUcmFuc2FjdGlvbklkIGRlYnVnX2N1dG9m ZjsKKwkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQkvKgotCQkgKiBJZiB0aGUgcGFnZSBp c24ndCB5ZXQgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSBWTSBvciBpdCBpcyBhbmQKLQkJICog bmVlZHMgdG8gbWUgbWFya2VkIGFsbC1mcm96ZW4sIHVwZGF0ZSB0aGUgVk0gTm90ZSB0aGF0IGFs bF9mcm96ZW4KLQkJICogaXMgb25seSB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyB0cnVlLCBzbyB3 ZSBtdXN0IGNoZWNrIGJvdGgKLQkJICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4uCi0JCSAq LwotCQllbHNlIGlmIChwcmVzdWx0LT5hbGxfdmlzaWJsZSAmJgotCQkJCSAoIWJsa19rbm93bl9h diB8fAotCQkJCSAgKHByZXN1bHQtPmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRp b24sIGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKLQkJewotCQkJQXNzZXJ0KHByc3RhdGUubHBkZWFk X2l0ZW1zID09IDApOwotCQkJdm1mbGFncyA9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJ CUFzc2VydChjdXRvZmZzKTsKIAotCQkJLyoKLQkJCSAqIElmIHRoZSBwYWdlIGlzIGFsbC1mcm96 ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCi0JCQkgKiBvdXIgY3V0b2Zm X3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvCi0JCQkg KiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2Un cyB0dXBsZXMKLQkJCSAqIHdlcmUgZnJvemVuLgotCQkJICovCi0JCQlpZiAocHJlc3VsdC0+YWxs X2Zyb3plbikKLQkJCXsKLQkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQt PnZtX2NvbmZsaWN0X2hvcml6b24pKTsKLQkJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxM X0ZST1pFTjsKLQkJCX0KKwkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCi0J CQkvKgotCQkJICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIFZNIGJpdCB0byBiZSBjbGVhciBhbmQg dGhlIHBhZ2UtbGV2ZWwgYml0Ci0JCQkgKiB0byBiZSBzZXQgaWYgY2hlY2tzdW1zIGFyZSBub3Qg ZW5hYmxlZC4KLQkJCSAqCi0JCQkgKiBBbmQgZXZlbiBpZiB3ZSBhcmUganVzdCBwbGFubmluZyB0 byB1cGRhdGUgdGhlIGZyb3plbiBiaXQgaW4KLQkJCSAqIHRoZSBWTSwgd2Ugc2hvdWxkbid0IHJl bHkgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFzIGEKLQkJCSAqIHByb3h5IGZvciB0 aGUgcGFnZS1sZXZlbCBQRF9BTExfVklTSUJMRSBiaXQgYmVpbmcgc2V0LCBzaW5jZSBpdAotCQkJ ICogbWlnaHQgaGF2ZSBiZWNvbWUgc3RhbGUuCi0JCQkgKgotCQkJICogSWYgdGhlIGhlYXAgcGFn ZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBub3Qgc2V0LCB3ZQotCQkJICogZG9u J3QgbmVlZCB0byBkaXJ0eSB0aGUgaGVhcCBwYWdlLiAgSG93ZXZlciwgaWYgY2hlY2tzdW1zIGFy ZQotCQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVhcCBw YWdlIGlzIGRpcnRpZWQKLQkJCSAqIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHZpc2liaWxpdHltYXBf c2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlCi0JCQkgKiBsb2dnZWQuCi0JCQkgKi8KLQkJCWlmICgh UGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkpCi0JCQl7Ci0J CQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQkJTWFya0J1ZmZlckRpcnR5KGJ1ZmZlcik7 Ci0JCQl9CisJCWlmICghaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIs CisJCQkJCQkJCQkgIGN1dG9mZnMtPk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgICZkZWJ1Z19hbGxf ZnJvemVuLAorCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCBvZmZfbG9jKSkKKwkJCUFzc2VydChm YWxzZSk7CiAKLQkJCW9sZF92bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldChyZWxhdGlvbiwgYmxv Y2tubywgYnVmZmVyLCBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCQkgICB2bWJ1ZmZlciwg cHJlc3VsdC0+dm1fY29uZmxpY3RfaG9yaXpvbiwKLQkJCQkJCQkJCQkgICB2bWZsYWdzKTsKLQkJ fQorCQlBc3NlcnQocHJzdGF0ZS5hbGxfZnJvemVuID09IGRlYnVnX2FsbF9mcm96ZW4pOworCisJ CUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVidWdfY3V0b2ZmKSB8fAorCQkJICAgZGVi dWdfY3V0b2ZmID09IHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKTsKIAl9CisjZW5kaWYK IAorCS8qIENvcHkgaW5mb3JtYXRpb24gYmFjayBmb3IgY2FsbGVyICovCisJcHJlc3VsdC0+bmRl bGV0ZWQgPSBwcnN0YXRlLm5kZWxldGVkOworCXByZXN1bHQtPm5uZXdscGRlYWQgPSBwcnN0YXRl Lm5kZWFkOworCXByZXN1bHQtPm5mcm96ZW4gPSBwcnN0YXRlLm5mcm96ZW47CisJcHJlc3VsdC0+ bGl2ZV90dXBsZXMgPSBwcnN0YXRlLmxpdmVfdHVwbGVzOworCXByZXN1bHQtPnJlY2VudGx5X2Rl YWRfdHVwbGVzID0gcHJzdGF0ZS5yZWNlbnRseV9kZWFkX3R1cGxlczsKKwlwcmVzdWx0LT5vbGRf dm1iaXRzID0gb2xkX3ZtYml0czsKKwkvKiBuZXdfdm1iaXRzIHdhcyBzZXQgYWJvdmUgKi8KKwlw cmVzdWx0LT5oYXN0dXAgPSBwcnN0YXRlLmhhc3R1cDsKIAlwcmVzdWx0LT5scGRlYWRfaXRlbXMg PSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMgYXJy YXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKLQlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xk X3ZtYml0czsKLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKLQogCWlmIChwcnN0YXRl LmZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKQEAgLTE2MjEsNyArMTcw OSwxMiBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwg UHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYgogCQkJYnJlYWs7CiAJfQogCi0JLyogQ29u c2lkZXIgZnJlZXppbmcgYW55IG5vcm1hbCB0dXBsZXMgd2hpY2ggd2lsbCBub3QgYmUgcmVtb3Zl ZCAqLworCS8qCisJICogQ29uc2lkZXIgZnJlZXppbmcgYW55IG5vcm1hbCB0dXBsZXMgd2hpY2gg d2lsbCBub3QgYmUgcmVtb3ZlZC4KKwkgKiBSZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHdl IHdhbnQgdG8gZnJlZXplIHRoZSB0dXBsZXMsIGlmIHdlIHdhbnQKKwkgKiB0byB1cGRhdGUgdGhl IFZNLCB3ZSBoYXZlIHRvIGNhbGwgaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIG9uIGV2ZXJ5 CisJICogdHVwbGUgdG8ga25vdyB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3aWxsIGJlIHRvdGFs bHkgZnJvemVuLgorCSAqLwogCWlmIChwcnN0YXRlLT5mcmVlemUpCiAJewogCQlib29sCQl0b3Rh bGx5X2Zyb3plbjsKQEAgLTIxODQsNyArMjI3Nyw3IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhl YXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIC0gUmVhcGluZzogRHVyaW5n IHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAq ICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBw aGFzZSBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogLSBWTSB1cGRhdGVzOiBB ZnRlciB2YWN1dW0gcGhhc2VzIEkgYW5kIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkgYmUgbWFya2Vk CiAgKiAgIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgogICoKICAqIFRoZXNlIGNoYW5nZXMg YWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2luZ2VsIFdBTCByZWNvcmQgZm9yIHRo ZW0KQEAgLTIyMzgsNiArMjMzMSw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJT2Zmc2V0TnVtYmVyIGZyel9vZmZzZXRzW01h eEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlib29sCQlkb19wcnVuZSA9IG5yZWRpcmVjdGVkID4gMCB8 fCBuZGVhZCA+IDAgfHwgbnVudXNlZCA+IDA7CiAKKwlBc3NlcnQoZG9fcHJ1bmUgfHwgbmZyb3pl biA+IDAgfHwgdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CiAJQXNzZXJ0KCh2 bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKSA9PSB2bWZsYWdzKTsKIAl4bHJlYy5m bGFncyA9IHZtZmxhZ3M7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAw NWQzZDJhMzI2Ny4uNzVjMTBiYTIwYzYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKQEAgLTIwMTMsMzQgKzIwMTMsNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFj cmVsLAogCQl2YWNyZWwtPm5ld19mcm96ZW5fdHVwbGVfcGFnZXMrKzsKIAl9CiAKLQkvKgotCSAq IFZBQ1VVTSB3aWxsIGNhbGwgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgZHVyaW5nIHRoZSBz ZWNvbmQgcGFzcyBvdmVyCi0JICogdGhlIGhlYXAgdG8gZGV0ZXJtaW5lIGFsbF92aXNpYmxlIGFu ZCBhbGxfZnJvemVuIGZvciB0aGUgcGFnZSAtLSB0aGlzCi0JICogaXMgYSBzcGVjaWFsaXplZCB2 ZXJzaW9uIG9mIHRoZSBsb2dpYyBmcm9tIHRoaXMgZnVuY3Rpb24uICBOb3cgdGhhdAotCSAqIHdl J3ZlIGZpbmlzaGVkIHBydW5pbmcgYW5kIGZyZWV6aW5nLCBtYWtlIHN1cmUgdGhhdCB3ZSdyZSBp biB0b3RhbAotCSAqIGFncmVlbWVudCB3aXRoIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIHVz aW5nIGFuIGFzc2VydGlvbi4KLQkgKi8KLSNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCi0JLyog Tm90ZSB0aGF0IGFsbF9mcm96ZW4gdmFsdWUgZG9lcyBub3QgbWF0dGVyIHdoZW4gIWFsbF92aXNp YmxlICovCi0JaWYgKHByZXN1bHQuYWxsX3Zpc2libGUpCi0JewotCQlUcmFuc2FjdGlvbklkIGRl YnVnX2N1dG9mZjsKLQkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKLQotCQlBc3NlcnQocHJlc3Vs dC5scGRlYWRfaXRlbXMgPT0gMCk7Ci0KLQkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUo dmFjcmVsLT5yZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4s ICZkZWJ1Z19hbGxfZnJvemVuLAotCQkJCQkJCQkJICAmZGVidWdfY3V0b2ZmLCAmdmFjcmVsLT5v ZmZudW0pKQotCQkJQXNzZXJ0KGZhbHNlKTsKLQotCQlBc3NlcnQocHJlc3VsdC5hbGxfZnJvemVu ID09IGRlYnVnX2FsbF9mcm96ZW4pOwotCi0JCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQo ZGVidWdfY3V0b2ZmKSB8fAotCQkJICAgZGVidWdfY3V0b2ZmID09IHByZXN1bHQudm1fY29uZmxp Y3RfaG9yaXpvbik7Ci0JfQotI2VuZGlmCi0KIAkvKgogCSAqIE5vdyBzYXZlIGRldGFpbHMgb2Yg dGhlIExQX0RFQUQgaXRlbXMgZnJvbSB0aGUgcGFnZSBpbiB2YWNyZWwKIAkgKi8KQEAgLTIwNzQs OCArMjA0Niw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJLyogRGlk IHdlIGZpbmQgTFBfREVBRCBpdGVtcz8gKi8KIAkqaGFzX2xwZGVhZF9pdGVtcyA9IChwcmVzdWx0 LmxwZGVhZF9pdGVtcyA+IDApOwogCi0JQXNzZXJ0KCFwcmVzdWx0LmFsbF92aXNpYmxlIHx8ICEo Kmhhc19scGRlYWRfaXRlbXMpKTsKLQogCS8qCiAJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dn aW5nLCBjb3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKIAkgKiBzZXQgYWxs LXZpc2libGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRl eCBiODU2NDg0NTZlOS4uMGI5YmIxYzliMTMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTIzNSwxOSAr MjM1LDEyIEBAIHR5cGVkZWYgc3RydWN0IFBydW5lRnJlZXplUmVzdWx0CiAJaW50CQkJcmVjZW50 bHlfZGVhZF90dXBsZXM7CiAKIAkvKgotCSAqIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIGlu ZGljYXRlIHRoZSBzdGF0dXMgb2YgdGhlIHBhZ2UgYXMgcmVmbGVjdGVkCi0JICogaW4gdGhlIHZp c2liaWxpdHkgbWFwIGFmdGVyIHBydW5pbmcsIGZyZWV6aW5nLCBhbmQgc2V0dGluZyBhbnkgcGFn ZXMKLQkgKiBhbGwtdmlzaWJsZSBpbiB0aGUgdmlzaWJpbGl0eSBtYXAuCisJICogb2xkX3ZtYml0 cyBhcmUgdGhlIHN0YXRlIG9mIHRoZSBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbiBiaXRzIGlu IHRoZQorCSAqIHZpc2liaWxpdHkgbWFwIGJlZm9yZSB1cGRhdGluZyBpdCBkdXJpbmcgcGhhc2Ug SSBvZiB2YWN1dW1pbmcuCisJICogbmV3X3ZtYml0cyBhcmUgdGhlIHN0YXRlIG9mIHRob3NlIGJp dHMgYWZ0ZXIgcGhhc2UgSSBvZiB2YWN1dW1pbmcuCiAJICoKLQkgKiB2bV9jb25mbGljdF9ob3Jp em9uIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZQotCSAqIChv bGRlciB0aGFuIE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBu b3Qgc2V0IHRoZQotCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCi0JICoKLQkgKiBUaGVz ZSBhcmUgb25seSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCisJ ICogVGhlc2UgYXJlIG9ubHkgc2V0IGlmIHRoZSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIG9w dGlvbiBpcyBzZXQuCiAJICovCi0JYm9vbAkJYWxsX3Zpc2libGU7Ci0JYm9vbAkJYWxsX2Zyb3pl bjsKLQlUcmFuc2FjdGlvbklkIHZtX2NvbmZsaWN0X2hvcml6b247CiAJdWludDgJCW9sZF92bWJp dHM7CiAJdWludDgJCW5ld192bWJpdHM7CiAKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0017-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v9-0017-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhho16 RnJvbSA1YmUwNTZmNDg0NzhkYjQyZGMwYWQwOWQ0ODBlMDkxY2Q4YzUzZWJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxNy8yMl0gSW5saW5lIFRyYW5zYWN0aW9uSWRGb2xsb3dzL1ByZWNlZGVzKCkKCkNh bGxpbmcgdGhlc2UgZnJvbSBvbi1hY2Nlc3MgcHJ1bmluZyBjb2RlIGhhZCBub3RpY2VhYmxlIG92 ZXJoZWFkIGluIGEKcHJvZmlsZS4gVGhlcmUgZG9lcyBub3Qgc2VlbSB0byBiZSBhIHJlYXNvbiBu b3QgdG8gaW5saW5lIHRoZW0uCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNh bS5jIHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Ry YW5zYW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxl cyBjaGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5z YWN0aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rp b25JZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxp ZFhMb2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBp ZDEgbG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJh bnNhY3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVy IElEIGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICog Y29tcGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJp c29uLgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQy KTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwot fQotCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dp Y2FsbHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhU cmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0K LQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3Jt YWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEg LSBpZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRG b2xsb3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlv bklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50 MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2Fj dGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChp bnQzMikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFu c2FjdGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAq LwotYm9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwg VHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9u SWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJu IChpZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAo ZGlmZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxh dGVzdCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2Ft LmgKaW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAg LTI1NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0g VHJhbnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVz IC0tLSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1Ry YW5zYWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIp Cit7CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2Fu IGp1c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBk byBhIG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAo IVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQy KSkKKwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7 CisJcmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNP ckVxdWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUg Ym9vbAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRy YW5zYWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklk SXNOb3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAo aWQxIDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRp ZmYgPD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxv Z2ljYWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9s bG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRp ZmY7CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklk SXNOb3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikg KGlkMSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlv bklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3Rh dGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9u SWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJh bnNhY3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQor CQlyZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRl cm4gZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBA IGV4dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0 aW9uSWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25J ZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFu c2FjdGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRy YW5zYWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25J ZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVj ZWRlc09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRl cm4gYm9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rp b25JZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQg VHJhbnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGlu dCBueGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBU cmFuc2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0019-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v9-0019-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhv18 RnJvbSBhODM5MDZkZWY5NmRiMzVjZTc1ZjkzYjM0ODhhZDY0ZmM4MWIwNjdmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxOS8yMl0gQWxsb3cgb24tYWNjZXNzIHBydW5pbmcgdG8gc2V0IHBhZ2VzIGFsbC12 aXNpYmxlCgpNYW55IHF1ZXJpZXMgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyByZWxhdGlv bi4gRm9yIHN1Y2ggcXVlcmllcywgaWYKb24tYWNjZXNzIHBydW5pbmcgb2NjdXJzIGR1cmluZyB0 aGUgc2Nhbiwgd2UgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHBhZ2UKaGFzIGJlY29tZSBhbGwtdmlz aWJsZSBhbmQgdXBkYXRlIHRoZSB2aXNpYmlsaXR5IG1hcCBhY2NvcmRpbmdseS4KUHJldmlvdXNs eSwgb25seSB2YWN1dW0gbWFya2VkIHBhZ2VzIGFzIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4u CgpTdXBwb3J0aW5nIHRoaXMgcmVxdWlyZXMgcGFzc2luZyBpbmZvcm1hdGlvbiBhYm91dCB3aGV0 aGVyIHRoZSByZWxhdGlvbgppcyBtb2RpZmllZCBmcm9tIHRoZSBleGVjdXRvciBkb3duIHRvIHRo ZSBzY2FuIGRlc2NyaXB0b3IuCgpUaGlzIGNvbW1pdCBpbXBsZW1lbnRzIG9uLWFjY2VzcyBWTSBz ZXR0aW5nIGZvciBzZXF1ZW50aWFsIHNjYW5zIGFzIHdlbGwKYXMgZm9yIHRoZSB1bmRlcmx5aW5n IGhlYXAgcmVsYXRpb24gaW4gaW5kZXggc2NhbnMgYW5kIGJpdG1hcCBoZWFwCnNjYW5zLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDE1ICsrKyst CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jICAgICAgfCAxNSArKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAgICAgIHwgNjcgKysr KysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYyAgICAg ICAgICAgIHwgNDYgKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxl YW0uYyAgICAgICAgICAgIHwgMzkgKysrKysrKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4 ZWNNYWluLmMgICAgICAgICAgICAgICB8ICA0ICsrCiBzcmMvYmFja2VuZC9leGVjdXRvci9leGVj VXRpbHMuYyAgICAgICAgICAgICAgfCAgMiArCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0 bWFwSGVhcHNjYW4uYyAgICAgfCAgNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4 c2Nhbi5jICAgICAgICAgIHwgMTggKysrLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFz Y2FuLmMgICAgICAgICAgICB8IDI0ICsrKysrLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5o ICAgICAgICAgICAgICAgICAgICB8IDExICsrKwogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5o ICAgICAgICAgICAgICAgICAgIHwgMjQgKysrKysrLQogc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNj YW4uaCAgICAgICAgICAgICAgICAgIHwgIDYgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFt LmggICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysrLQogc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmggICAgICAgICAgICAgICAgIHwgIDYgKysKIC4uLi90LzAzNV9zdGFuZGJ5X2xvZ2lj YWxfZGVjb2RpbmcucGwgICAgICAgICB8ICA0ICstCiAxNiBmaWxlcyBjaGFuZ2VkLCAyNzggaW5z ZXJ0aW9ucygrKSwgNDAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRl eCBjYjE2YmIwY2JiZC4uZDA3NjkzYjcwNzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBA IC01NTYsNiArNTU2LDcgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2NhbkRlc2Mgc3Nj YW4pCiAJQnVmZmVyCQlidWZmZXIgPSBzY2FuLT5yc19jYnVmOwogCUJsb2NrTnVtYmVyIGJsb2Nr ID0gc2Nhbi0+cnNfY2Jsb2NrOwogCVNuYXBzaG90CXNuYXBzaG90OworCUJ1ZmZlcgkgICAqdm1i dWZmZXIgPSBOVUxMOwogCVBhZ2UJCXBhZ2U7CiAJaW50CQkJbGluZXM7CiAJYm9vbAkJYWxsX3Zp c2libGU7CkBAIC01NzAsNyArNTcxLDkgQEAgaGVhcF9wcmVwYXJlX3BhZ2VzY2FuKFRhYmxlU2Nh bkRlc2Mgc3NjYW4pCiAJLyoKIAkgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9y IHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4KIAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0 KHNjYW4tPnJzX2Jhc2UucnNfcmQsIGJ1ZmZlcik7CisJaWYgKHNzY2FuLT5yc19mbGFncyAmIFNP X0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAmc2Nhbi0+cnNfdm1idWZmZXI7CisJaGVhcF9w YWdlX3BydW5lX29wdChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIsIHZtYnVmZmVyKTsKIAog CS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZlciBjb250ZW50IHdo aWxlIGV4YW1pbmluZyB0dXBsZQpAQCAtMTI0Nyw2ICsxMjUwLDcgQEAgaGVhcF9iZWdpbnNjYW4o UmVsYXRpb24gcmVsYXRpb24sIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQkJCQkgIHNp emVvZihUQk1JdGVyYXRlUmVzdWx0KSk7CiAJfQogCisJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZh bGlkQnVmZmVyOwogCiAJcmV0dXJuIChUYWJsZVNjYW5EZXNjKSBzY2FuOwogfQpAQCAtMTI4NSw2 ICsxMjg5LDEyIEBAIGhlYXBfcmVzY2FuKFRhYmxlU2NhbkRlc2Mgc3NjYW4sIFNjYW5LZXkga2V5 LCBib29sIHNldF9wYXJhbXMsCiAJCXNjYW4tPnJzX2NidWYgPSBJbnZhbGlkQnVmZmVyOwogCX0K IAorCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX3ZtYnVmZmVyKSkKKwl7CisJCVJlbGVhc2VC dWZmZXIoc2Nhbi0+cnNfdm1idWZmZXIpOworCQlzY2FuLT5yc192bWJ1ZmZlciA9IEludmFsaWRC dWZmZXI7CisJfQorCiAJLyoKIAkgKiBTT19UWVBFX0JJVE1BUFNDQU4gd291bGQgYmUgY2xlYW5l ZCB1cCBoZXJlLCBidXQgaXQgZG9lcyBub3QgaG9sZCBhbnkKIAkgKiBhZGRpdGlvbmFsIGRhdGEg dnMgYSBub3JtYWwgSGVhcFNjYW4KQEAgLTEzMTcsNiArMTMyNyw5IEBAIGhlYXBfZW5kc2NhbihU YWJsZVNjYW5EZXNjIHNzY2FuKQogCWlmIChCdWZmZXJJc1ZhbGlkKHNjYW4tPnJzX2NidWYpKQog CQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX2NidWYpOwogCisJaWYgKEJ1ZmZlcklzVmFsaWQoc2Nh bi0+cnNfdm1idWZmZXIpKQorCQlSZWxlYXNlQnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwog CS8qCiAJICogTXVzdCBmcmVlIHRoZSByZWFkIHN0cmVhbSBiZWZvcmUgZnJlZWluZyB0aGUgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kuCiAJICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hh bmRsZXIuYwppbmRleCBiY2JhYzg0NGJiNi4uZjA1YjllNDk2OGQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtODUsNiArODUsNyBAQCBoZWFwYW1faW5kZXhf ZmV0Y2hfYmVnaW4oUmVsYXRpb24gcmVsKQogCiAJaHNjYW4tPnhzX2Jhc2UucmVsID0gcmVsOwog CWhzY2FuLT54c19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKKwloc2Nhbi0+eHNfdm1idWZmZXIgPSBJ bnZhbGlkQnVmZmVyOwogCiAJcmV0dXJuICZoc2Nhbi0+eHNfYmFzZTsKIH0KQEAgLTk5LDYgKzEw MCwxMiBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfcmVzZXQoSW5kZXhGZXRjaFRhYmxlRGF0YSAqc2Nh bikKIAkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfY2J1Zik7CiAJCWhzY2FuLT54c19jYnVmID0g SW52YWxpZEJ1ZmZlcjsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZChoc2Nhbi0+eHNfdm1idWZm ZXIpKQorCXsKKwkJUmVsZWFzZUJ1ZmZlcihoc2Nhbi0+eHNfdm1idWZmZXIpOworCQloc2Nhbi0+ eHNfdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCX0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTEz OCw3ICsxNDUsOCBAQCBoZWFwYW1faW5kZXhfZmV0Y2hfdHVwbGUoc3RydWN0IEluZGV4RmV0Y2hU YWJsZURhdGEgKnNjYW4sCiAJCSAqIFBydW5lIHBhZ2UsIGJ1dCBvbmx5IGlmIHdlIHdlcmVuJ3Qg YWxyZWFkeSBvbiB0aGlzIHBhZ2UKIAkJICovCiAJCWlmIChwcmV2X2J1ZiAhPSBoc2Nhbi0+eHNf Y2J1ZikKLQkJCWhlYXBfcGFnZV9wcnVuZV9vcHQoaHNjYW4tPnhzX2Jhc2UucmVsLCBoc2Nhbi0+ eHNfY2J1Zik7CisJCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNj YW4tPnhzX2NidWYsCisJCQkJCQkJCXNjYW4tPm1vZGlmaWVzX2Jhc2VfcmVsID8gTlVMTCA6ICZo c2Nhbi0+eHNfdm1idWZmZXIpOwogCX0KIAogCS8qIE9idGFpbiBzaGFyZS1sb2NrIG9uIHRoZSBi dWZmZXIgc28gd2UgY2FuIGV4YW1pbmUgdmlzaWJpbGl0eSAqLwpAQCAtMjQ3MSw2ICsyNDc5LDcg QEAgQml0bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCVRCTUl0ZXJh dGVSZXN1bHQgKnRibXJlczsKIAlPZmZzZXROdW1iZXIgb2Zmc2V0c1tUQk1fTUFYX1RVUExFU19Q RVJfUEFHRV07CiAJaW50CQkJbm9mZnNldHMgPSAtMTsKKwlCdWZmZXIJICAgKnZtYnVmZmVyID0g TlVMTDsKIAogCUFzc2VydChzY2FuLT5yc19mbGFncyAmIFNPX1RZUEVfQklUTUFQU0NBTik7CiAJ QXNzZXJ0KGhzY2FuLT5yc19yZWFkX3N0cmVhbSk7CkBAIC0yNTE3LDcgKzI1MjYsOSBAQCBCaXRt YXBIZWFwU2Nhbk5leHRCbG9jayhUYWJsZVNjYW5EZXNjIHNjYW4sCiAJLyoKIAkgKiBQcnVuZSBh bmQgcmVwYWlyIGZyYWdtZW50YXRpb24gZm9yIHRoZSB3aG9sZSBwYWdlLCBpZiBwb3NzaWJsZS4K IAkgKi8KLQloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIpOworCWlmIChz Y2FuLT5yc19mbGFncyAmIFNPX0FMTE9XX1ZNX1NFVCkKKwkJdm1idWZmZXIgPSAmaHNjYW4tPnJz X3ZtYnVmZmVyOworCWhlYXBfcGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfcmQsIGJ1ZmZlciwgdm1i dWZmZXIpOwogCiAJLyoKIAkgKiBXZSBtdXN0IGhvbGQgc2hhcmUgbG9jayBvbiB0aGUgYnVmZmVy IGNvbnRlbnQgd2hpbGUgZXhhbWluaW5nIHR1cGxlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCmluZGV4IGJhM2ZhYWI5MWZkLi40NDAwYmY1ODNkZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKQEAgLTE5OCw5ICsxOTgsMTMgQEAgc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5k X2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogICogaWYgdGhlcmUncyBub3Qg YW55IHVzZSBpbiBwcnVuaW5nLgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIG9uIHRoZSBi dWZmZXIsIGFuZCBtdXN0ICpub3QqIGhhdmUgYSBsb2NrIG9uIGl0LgorICoKKyAqIElmIHZtYnVm ZmVyIGlzIG5vdCBOVUxMLCBpdCBpcyBva2F5IGZvciBwcnVuaW5nIHRvIHNldCB0aGUgdmlzaWJp bGl0eSBtYXAgaWYKKyAqIHRoZSBwYWdlIGlzIGFsbCB2aXNpYmxlLiBXZSB3aWxsIHRha2UgY2Fy ZSBvZiBwaW5uaW5nIGFuZCwgaWYgbmVlZGVkLAorICogcmVhZGluZyBpbiB0aGUgcGFnZSBvZiB0 aGUgdmlzaWJpbGl0eSBtYXAuCiAgKi8KIHZvaWQKLWhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRp b24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIpCitoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLCBCdWZmZXIgKnZtYnVmZmVyKQogewogCVBhZ2UJCXBh Z2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CiAJVHJhbnNhY3Rpb25JZCBwcnVuZV94aWQ7CkBA IC0yNjQsNiArMjY4LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24s IEJ1ZmZlciBidWZmZXIpCiAJCXsKIAkJCU9mZnNldE51bWJlciBkdW1teV9vZmZfbG9jOwogCQkJ UHJ1bmVGcmVlemVSZXN1bHQgcHJlc3VsdDsKKwkJCWludAkJCW9wdGlvbnMgPSAwOworCisJCQlp ZiAodm1idWZmZXIpCisJCQl7CisJCQkJdmlzaWJpbGl0eW1hcF9waW4ocmVsYXRpb24sIEJ1ZmZl ckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIHZtYnVmZmVyKTsKKwkJCQlvcHRpb25zID0gSEVBUF9Q QUdFX1BSVU5FX1VQREFURV9WTTsKKwkJCX0KIAogCQkJLyoKIAkJCSAqIEZvciBub3csIHBhc3Mg bWFya191bnVzZWRfbm93IGFzIGZhbHNlIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBvcgpAQCAtMjcx LDkgKzI4MiwxMCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcgd2l0aCB0aGUg Y3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwogCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFsc2UsCi0JCQkJCQkJCQkgICBJbnZhbGlkQnVmZmVy LAotCQkJCQkJCQkJICAgdmlzdGVzdCwgMCwKLQkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQ UlVORV9PTl9BQ0NFU1MsICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKKwkJCQkJCQkJCSAg IHZtYnVmZmVyID8gKnZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKKwkJCQkJCQkJCSAgIHZpc3Rl c3QsIG9wdGlvbnMsCisJCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwgUFJVTkVfT05fQUNDRVNT LAorCQkJCQkJCQkJICAgJmR1bW15X29mZl9sb2MsIE5VTEwsIE5VTEwpOwogCiAJCQkvKgogCQkJ ICogUmVwb3J0IHRoZSBudW1iZXIgb2YgdHVwbGVzIHJlY2xhaW1lZCB0byBwZ3N0YXRzLiAgVGhp cyBpcwpAQCAtNTEzLDEyICs1MjUsMTcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogYWxsLWZyb3plbiBmb3IgdXNlIGlu IG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUgVk0gaWYKIAkgKiB0aGUg Y2FsbGVyIHJlcXVlc3RzIGl0LgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBhdHRl bXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0Ci0JICogb3RoZXIgY2Fs bGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBib29ra2VlcGluZyBpcwot CSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChpbiBhZGRpdGlvbiB0byBz ZXR0aW5nIHRoZSBWTQotCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBjb25zaWRlciBvcHBvcnR1 bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCi0JICogd2hvbGUgcGFnZSB3b3VsZCBi ZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxsIGJlIGZyb3plbgotCSAq IGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdmFjdXVtLgor CSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0ZW1wdHMgZnJlZXppbmcuIEJ1dCBvdGhlciBj YWxsZXJzIGNvdWxkLiBUaGUKKwkgKiB2aXNpYmlsaXR5IGJvb2trZWVwaW5nIGlzIHJlcXVpcmVk IGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChpbgorCSAqIGFkZGl0aW9uIHRvIHNldHRpbmcg dGhlIFZNIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBjb25zaWRlcgorCSAqIG9wcG9ydHVuaXN0aWNh bGx5IGZyZWV6aW5nIHR1cGxlcyBpZiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNvbWUKKwkgKiBh bGwtZnJvemVuIG9yIGlmIHRoZSB3aG9sZSBwYWdlIHdpbGwgYmUgZnJvemVuIGV4Y2VwdCBmb3Ig ZGVhZCB0dXBsZXMKKwkgKiB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBieSB2YWN1dW0uIEJ1dCBpZiBj b25zaWRlcl91cGRhdGVfdm0gaXMgZmFsc2UsCisJICogd2UnbGwgbm90IHNldCB0aGUgVk0gZXZl biBpZiB0aGUgcGFnZSBpcyBkaXNjb3ZlcmVkIHRvIGJlIGFsbC12aXNpYmxlLgorCSAqCisJICog SWYgb25seSBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIHBhc3NlZCBhbmQgbm90CisJICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgcHJzdGF0ZS5hbGxfZnJvemVuIG11c3QgYmUgaW5pdGlh bGl6ZWQgdG8gZmFsc2UKKwkgKiBiZWNhdXNlIHdlIHdpbGwgbm90IGNhbGwgaGVhcF9wcmVwYXJl X2ZyZWV6ZV90dXBsZSgpIG9uIGVhY2ggdHVwbGUuCiAJICoKIAkgKiBJZiBvbmx5IHVwZGF0aW5n IHRoZSBWTSwgd2UgbXVzdCBpbml0aWFsaXplIGFsbF9mcm96ZW4gdG8gZmFsc2UsIGFzCiAJICog aGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIHdpbGwgbm90IGJlIGNhbGxlZCBmb3IgZWFjaCB0 dXBsZSBvbiB0aGUKQEAgLTUzMCw3ICs1NDcsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiB3aGV0aGVyIG9yIG5vdCB0 byBmcmVlemUgYnV0IGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdCB0byB1cGRhdGUKIAkg KiB0aGUgVk0gc28gdGhhdCB3ZSBkb24ndCBzZXQgdGhlIFZNIGJpdCBpbmNvcnJlY3RseS4KIAkg KgotCSAqIElmIG5vdCBmcmVlemluZyBvciB1cGRhdGluZyB0aGUgVk0sIHdlIG90aGVyd2lzZSBh dm9pZCB0aGUgZXh0cmEKKwkgKiBJZiBub3QgZnJlZXppbmcgYW5kIG5vdCB1cGRhdGluZyB0aGUg Vk0sIHdlIGF2b2lkIHRoZSBleHRyYQogCSAqIGJvb2trZWVwaW5nLiBJbml0aWFsaXppbmcgYWxs X3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBwaW5nIHRoZSB3b3JrCiAJICogdG8gdXBkYXRl IHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpLgogCSAqLwpA QCAtODc5LDEyICs4OTYsMzAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwog CX0KIAorCS8qCisJICogSWYgdGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90 IGFjdHVhbGx5IHBydW5pbmcsIGF2b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAg aWYgaXQgd291bGQgbmV3bHkgZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFn ZSBpcyBhbHJlYWR5IGRpcnR5LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBh CisJICogZnVsbC1wYWdlIGltYWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4g VGhpcyBzaXR1YXRpb24KKwkgKiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcg aXMgb25seSBhdHRlbXB0ZWQgd2hlbgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8K KwlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLmNvbnNpZGVyX3Vw ZGF0ZV92bSAmJgorCQlwcnN0YXRlLmFsbF92aXNpYmxlICYmCisJCSFkb19wcnVuZSAmJiAhZG9f ZnJlZXplICYmCisJCSghQnVmZmVySXNEaXJ0eShidWZmZXIpIHx8IFhMb2dDaGVja0J1ZmZlck5l ZWRzQmFja3VwKGJ1ZmZlcikpKQorCXsKKwkJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSBm YWxzZTsKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KKwogCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2li bGUpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQg b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3ZhY19zY2Fu X25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zy b3plbiB2YXJpYWJsZXMuCisJICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJh c2VkIG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChpZgorCSAqIHByb3ZpZGVkLCBlLmcuIGJ5 IHZhY3V1bSBmcm9tIHRoZSBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpCisJICogY2Fs bCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVuIHZhcmlhYmxlcy4KIAkgKi8K IAlpZiAocHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0pCiAJewpAQCAtMjI3NSw4ICsyMzEwLDgg QEAgaGVhcF9sb2dfZnJlZXplX3BsYW4oSGVhcFR1cGxlRnJlZXplICp0dXBsZXMsIGludCBudHVw bGVzLAogICogLSBSZWFwaW5nOiBEdXJpbmcgdmFjdXVtIHBoYXNlIElJSSwgaXRlbXMgdGhhdCBh cmUgYWxyZWFkeSBMUF9ERUFEIGFyZQogICogICBtYXJrZWQgYXMgdW51c2VkLgogICoKLSAqIC0g Vk0gdXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUksIHRoZSBoZWFwIHBhZ2Ug bWF5IGJlIG1hcmtlZAotICogICBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3plbi4KKyAqIC0gVk0g dXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBoYXNlcyBJIGFuZCBJSUkgYW5kIG9uLWFjY2VzcywgdGhl IGhlYXAgcGFnZQorICogICBtYXkgYmUgbWFya2VkIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVu LgogICoKICAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEg c2luZ2VsIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5kZXgvaW5k ZXhhbS5jCmluZGV4IDg2ZDExZjRlYzc5Li40NjAzZWNlMDliZCAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvYWNjZXNzL2luZGV4L2luZGV4YW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaW5k ZXgvaW5kZXhhbS5jCkBAIC0yODksNiArMjg5LDMyIEBAIGluZGV4X2JlZ2luc2NhbihSZWxhdGlv biBoZWFwUmVsYXRpb24sCiAJcmV0dXJuIHNjYW47CiB9CiAKKy8qCisgKiBTaW1pbGFyIHRvIGlu ZGV4X2JlZ2luc2NhbigpLCBidXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gaW5kaWNhdGUgd2hldGhl ciB0aGUKKyAqIHF1ZXJ5IG1vZGlmaWVzIHRoZSB1bmRlcmx5aW5nIGJhc2UgcmVsYXRpb24uIFRo aXMgaXMgdXNlZCB3aGVuIHRoZSBjYWxsZXIKKyAqIHdhbnRzIHRvIGF0dGVtcHQgbWFya2luZyBw YWdlcyBpbiB0aGUgYmFzZSByZWxhdGlvbiBhcyBhbGwtdmlzaWJsZSBpbiB0aGUKKyAqIHZpc2li aWxpdHkgbWFwIGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZy4KKyAqLworSW5kZXhTY2FuRGVzYwor aW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJICBSZWxh dGlvbiBpbmRleFJlbGF0aW9uLAorCQkJCQkgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkgIElu ZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJICBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBz Y2FuOworCisJc2NhbiA9IGluZGV4X2JlZ2luc2NhbihoZWFwUmVsYXRpb24sCisJCQkJCQkgICBp bmRleFJlbGF0aW9uLAorCQkJCQkJICAgc25hcHNob3QsCisJCQkJCQkgICBpbnN0cnVtZW50LAor CQkJCQkJICAgbmtleXMsIG5vcmRlcmJ5cyk7CisKKwlzY2FuLT54c19oZWFwZmV0Y2gtPm1vZGlm aWVzX2Jhc2VfcmVsID0gbW9kaWZpZXNfYmFzZV9yZWw7CisKKwlyZXR1cm4gc2NhbjsKK30KKwog LyoKICAqIGluZGV4X2JlZ2luc2Nhbl9iaXRtYXAgLSBzdGFydCBhIHNjYW4gb2YgYW4gaW5kZXgg d2l0aCBhbWdldGJpdG1hcAogICoKQEAgLTYyMCw2ICs2NDYsMjYgQEAgaW5kZXhfYmVnaW5zY2Fu X3BhcmFsbGVsKFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAogCXJldHVybiBz Y2FuOwogfQogCisvKgorICogUGFyYWxsZWwgdmVyc2lvbiBvZiBpbmRleF9iZWdpbnNjYW5fdm1z ZXQoKQorICovCitJbmRleFNjYW5EZXNjCitpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQo UmVsYXRpb24gaGVhcHJlbCwgUmVsYXRpb24gaW5kZXhyZWwsCisJCQkJCQkJICAgSW5kZXhTY2Fu SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAorCQkJCQkJCSAgIGludCBua2V5cywgaW50IG5v cmRlcmJ5cywKKwkJCQkJCQkgICBQYXJhbGxlbEluZGV4U2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJ ICAgYm9vbCBtb2RpZmllc19iYXNlX3JlbCkKK3sKKwlJbmRleFNjYW5EZXNjIHNjYW47CisKKwlz Y2FuID0gaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsKGhlYXByZWwsIGluZGV4cmVsLAorCQkJCQkJ CQkJaW5zdHJ1bWVudCwKKwkJCQkJCQkJCW5rZXlzLCBub3JkZXJieXMsCisJCQkJCQkJCQlwc2Nh bik7CisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2RpZmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jh c2VfcmVsOworCXJldHVybiBzY2FuOworfQorCiAvKiAtLS0tLS0tLS0tLS0tLS0tCiAgKiBpbmRl eF9nZXRuZXh0X3RpZCAtIGdldCB0aGUgbmV4dCBUSUQgZnJvbSBhIHNjYW4KICAqCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RhYmxlL3RhYmxlYW0uYwppbmRleCBhNTZjNWVjZWIxNC4uNjdkYmY5OWY1YjUgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYwpAQCAtNDksNiArNDksMTAgQEAKIGNoYXIJICAgKmRl ZmF1bHRfdGFibGVfYWNjZXNzX21ldGhvZCA9IERFRkFVTFRfVEFCTEVfQUNDRVNTX01FVEhPRDsK IGJvb2wJCXN5bmNocm9uaXplX3NlcXNjYW5zID0gdHJ1ZTsKIAorLyogSGVscGVyIGZvciB0YWJs ZV9iZWdpbnNjYW5fcGFyYWxsZWwoKSBhbmQgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0 KCkgKi8KK3N0YXRpYyBUYWJsZVNjYW5EZXNjIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9jb21t b24oUmVsYXRpb24gcmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKKwkJCQkJ CQkJCQkJCQkgdWludDMyIGZsYWdzKTsKKwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBT bG90IGZ1bmN0aW9ucy4KQEAgLTE2MiwxMiArMTY2LDE0IEBAIHRhYmxlX3BhcmFsbGVsc2Nhbl9p bml0aWFsaXplKFJlbGF0aW9uIHJlbCwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAogCX0K IH0KIAotVGFibGVTY2FuRGVzYwotdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJl bGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCisvKgorICogQ29tbW9uIGhlbHBl ciBmb3IgdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJh bGxlbF92bXNldCgpCisgKi8KK3N0YXRpYyBUYWJsZVNjYW5EZXNjCit0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWxfY29tbW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2Mg cHNjYW4sCisJCQkJCQkJCXVpbnQzMiBmbGFncykKIHsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKLQl1 aW50MzIJCWZsYWdzID0gU09fVFlQRV9TRVFTQ0FOIHwKLQkJU09fQUxMT1dfU1RSQVQgfCBTT19B TExPV19TWU5DIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKIAlBc3NlcnQoUmVsRmlsZUxvY2F0b3JF cXVhbHMocmVsYXRpb24tPnJkX2xvY2F0b3IsIHBzY2FuLT5waHNfbG9jYXRvcikpOwogCkBAIC0x ODgsNiArMTk0LDMxIEBAIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlv biwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQogCQkJCQkJCQkJCQlwc2NhbiwgZmxhZ3Mp OwogfQogCitUYWJsZVNjYW5EZXNjCit0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24g cmVsYXRpb24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKK3sKKwl1aW50MzIJCWZsYWdz ID0gU09fVFlQRV9TRVFTQ0FOIHwKKwkJU09fQUxMT1dfU1RSQVQgfCBTT19BTExPV19TWU5DIHwg U09fQUxMT1dfUEFHRU1PREU7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsX2Nv bW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKworLyoKKyAqIFBhcmFsbGVsIHZlcnNp b24gb2YgdGFibGVfYmVnaW5zY2FuX3Ztc2V0KCkKKyAqLworVGFibGVTY2FuRGVzYwordGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxl U2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJICAgYm9vbCBtb2RpZmllc19yZWwpCit7CisJdWludDMy CQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1df U1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJaWYgKCFtb2RpZmllc19yZWwpCisJCWZsYWdz IHw9IFNPX0FMTE9XX1ZNX1NFVDsKKworCXJldHVybiB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxf Y29tbW9uKHJlbGF0aW9uLCBwc2NhbiwgZmxhZ3MpOworfQorCiAKIC8qIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KICAqIEluZGV4IHNjYW4gcmVsYXRlZCBmdW5jdGlvbnMuCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9leGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwppbmRleCBmZjEyZTJlMTM2NC4uMmUwNDc0Yzk0OGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01h aW4uYwpAQCAtOTE2LDYgKzkxNiwxMCBAQCBJbml0UGxhbihRdWVyeURlc2MgKnF1ZXJ5RGVzYywg aW50IGVmbGFncykKIAkJCQkJYnJlYWs7CiAJCQl9CiAKKwkJCS8qIElmIGl0IGhhcyBhIHJvd21h cmssIHRoZSByZWxhdGlvbiBpcyBtb2RpZmllZCAqLworCQkJZXN0YXRlLT5lc19tb2RpZmllZF9y ZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcywKKwkJCQkJ CQkJCQkJCQkJcmMtPnJ0aSk7CisKIAkJCS8qIENoZWNrIHRoYXQgcmVsYXRpb24gaXMgYSBsZWdh bCB0YXJnZXQgZm9yIG1hcmtpbmcgKi8KIAkJCWlmIChyZWxhdGlvbikKIAkJCQlDaGVja1ZhbGlk Um93TWFya1JlbChyZWxhdGlvbiwgcmMtPm1hcmtUeXBlKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNVdGlscy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0aWxz LmMKaW5kZXggZmRjNjVjMmI0MmIuLjI4YTA2ZGNkMjQ0IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjVXRpbHMuYworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjVXRp bHMuYwpAQCAtODkzLDYgKzg5Myw4IEBAIEV4ZWNJbml0UmVzdWx0UmVsYXRpb24oRVN0YXRlICpl c3RhdGUsIFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCWVzdGF0ZS0+ZXNfcmVzdWx0 X3JlbGF0aW9ucyA9IChSZXN1bHRSZWxJbmZvICoqKQogCQkJcGFsbG9jMChlc3RhdGUtPmVzX3Jh bmdlX3RhYmxlX3NpemUgKiBzaXplb2YoUmVzdWx0UmVsSW5mbyAqKSk7CiAJZXN0YXRlLT5lc19y ZXN1bHRfcmVsYXRpb25zW3J0aSAtIDFdID0gcmVzdWx0UmVsSW5mbzsKKwllc3RhdGUtPmVzX21v ZGlmaWVkX3JlbGlkcyA9IGJtc19hZGRfbWVtYmVyKGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRz LAorCQkJCQkJCQkJCQkJcnRpKTsKIAogCS8qCiAJICogU2F2aW5nIGluIHRoZSBsaXN0IGFsbG93 cyB0byBhdm9pZCBuZWVkbGVzc2x5IHRyYXZlcnNpbmcgdGhlIHdob2xlCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9leGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCmluZGV4IGJmMjRmM2Q3ZmUwLi5hZjZkYjlmNzkx OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMKQEAgLTEwNSwx MSArMTA1LDE2IEBAIEJpdG1hcFRhYmxlU2NhblNldHVwKEJpdG1hcEhlYXBTY2FuU3RhdGUgKm5v ZGUpCiAJICovCiAJaWYgKCFub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MpCiAJeworCQlib29s CQltb2RpZmllc19yZWwgPQorCQkJYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMu cGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgbm9kZS0+c3MucHMuc3RhdGUtPmVzX21vZGlmaWVk X3JlbGlkcyk7CisKIAkJbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KIAkJCXRhYmxlX2Jl Z2luc2Nhbl9ibShub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sCiAJCQkJCQkJICAgbm9kZS0+ c3MucHMuc3RhdGUtPmVzX3NuYXBzaG90LAogCQkJCQkJCSAgIDAsCi0JCQkJCQkJICAgTlVMTCk7 CisJCQkJCQkJICAgTlVMTCwKKwkJCQkJCQkgICBtb2RpZmllc19yZWwpOwogCX0KIAogCW5vZGUt PnNzLnNzX2N1cnJlbnRTY2FuRGVzYy0+c3QucnNfdGJtaXRlcmF0b3IgPSB0Ym1pdGVyYXRvcjsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwppbmRleCA3ZmNhYTM3ZmU2Mi4uYzJmZmJk M2IwOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRleHNjYW4uYwor KysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKQEAgLTEwMiwxNiArMTAy LDIyIEBAIEluZGV4TmV4dChJbmRleFNjYW5TdGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9 PSBOVUxMKQogCXsKKworCQlib29sCQltb2RpZmllc19iYXNlX3JlbCA9CisJCQlibXNfaXNfbWVt YmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJICBlc3Rh dGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoKIAkJICogV2UgcmVhY2ggaGVyZSBpZiB0 aGUgaW5kZXggc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdlJ3JlCiAJCSAqIHNlcmlhbGx5 IGV4ZWN1dGluZyBhbiBpbmRleCBzY2FuIHRoYXQgd2FzIHBsYW5uZWQgdG8gYmUgcGFyYWxsZWwu CiAJCSAqLwotCQlzY2FuZGVzYyA9IGluZGV4X2JlZ2luc2Nhbihub2RlLT5zcy5zc19jdXJyZW50 UmVsYXRpb24sCi0JCQkJCQkJCSAgIG5vZGUtPmlzc19SZWxhdGlvbkRlc2MsCi0JCQkJCQkJCSAg IGVzdGF0ZS0+ZXNfc25hcHNob3QsCi0JCQkJCQkJCSAgICZub2RlLT5pc3NfSW5zdHJ1bWVudCwK LQkJCQkJCQkJICAgbm9kZS0+aXNzX051bVNjYW5LZXlzLAotCQkJCQkJCQkgICBub2RlLT5pc3Nf TnVtT3JkZXJCeUtleXMpOworCQlzY2FuZGVzYyA9IGluZGV4X2JlZ2luc2Nhbl92bXNldChub2Rl LT5zcy5zc19jdXJyZW50UmVsYXRpb24sCisJCQkJCQkJCQkJIG5vZGUtPmlzc19SZWxhdGlvbkRl c2MsCisJCQkJCQkJCQkJIGVzdGF0ZS0+ZXNfc25hcHNob3QsCisJCQkJCQkJCQkJICZub2RlLT5p c3NfSW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgbm9kZS0+aXNzX051bVNjYW5LZXlzLAorCQkJCQkJ CQkJCSBub2RlLT5pc3NfTnVtT3JkZXJCeUtleXMsCisJCQkJCQkJCQkJIG1vZGlmaWVzX2Jhc2Vf cmVsKTsKIAogCQlub2RlLT5pc3NfU2NhbkRlc2MgPSBzY2FuZGVzYzsKIApkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L25vZGVTZXFzY2FuLmMKaW5kZXggOTQwNDdkMjk0MzAuLmZkNjkyNzVjMTgxIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vxc2Nhbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL25vZGVTZXFzY2FuLmMKQEAgLTY1LDEzICs2NSwxOCBAQCBTZXFOZXh0KFNlcVNjYW5T dGF0ZSAqbm9kZSkKIAogCWlmIChzY2FuZGVzYyA9PSBOVUxMKQogCXsKKwkJYm9vbAkJbW9kaWZp ZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5z Y2FucmVsaWQsCisJCQkJCQkgIGVzdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKKwogCQkvKgog CQkgKiBXZSByZWFjaCBoZXJlIGlmIHRoZSBzY2FuIGlzIG5vdCBwYXJhbGxlbCwgb3IgaWYgd2Un cmUgc2VyaWFsbHkKIAkJICogZXhlY3V0aW5nIGEgc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJl IHBhcmFsbGVsLgogCQkgKi8KLQkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW4obm9kZS0+c3Mu c3NfY3VycmVudFJlbGF0aW9uLAotCQkJCQkJCQkgICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJ CQkJCQkgICAwLCBOVUxMKTsKKwkJc2NhbmRlc2MgPSB0YWJsZV9iZWdpbnNjYW5fdm1zZXQobm9k ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90 LAorCQkJCQkJCQkJCSAwLCBOVUxMLCBtb2RpZmllc19yZWwpOworCiAJCW5vZGUtPnNzLnNzX2N1 cnJlbnRTY2FuRGVzYyA9IHNjYW5kZXNjOwogCX0KIApAQCAtMzY2LDYgKzM3MSw3IEBAIEV4ZWNT ZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3RhdGUgKm5vZGUsCiAJCQkJCQkgUGFyYWxsZWxD b250ZXh0ICpwY3h0KQogewogCUVTdGF0ZQkgICAqZXN0YXRlID0gbm9kZS0+c3MucHMuc3RhdGU7 CisJYm9vbAkJbW9kaWZpZXNfcmVsOwogCVBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbjsKIAog CXBzY2FuID0gc2htX3RvY19hbGxvY2F0ZShwY3h0LT50b2MsIG5vZGUtPnBzY2FuX2xlbik7CkBA IC0zNzMsOCArMzc5LDExIEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZURTTShTZXFTY2FuU3RhdGUg Km5vZGUsCiAJCQkJCQkJCSAgcHNjYW4sCiAJCQkJCQkJCSAgZXN0YXRlLT5lc19zbmFwc2hvdCk7 CiAJc2htX3RvY19pbnNlcnQocGN4dC0+dG9jLCBub2RlLT5zcy5wcy5wbGFuLT5wbGFuX25vZGVf aWQsIHBzY2FuKTsKKwltb2RpZmllc19yZWwgPSBibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2Rl LT5zcy5wcy5wbGFuKS0+c2NhbnJlbGlkLAorCQkJCQkJCQkgZXN0YXRlLT5lc19tb2RpZmllZF9y ZWxpZHMpOwogCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nh bl9wYXJhbGxlbChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNj YW4sCisJCQkJCQkJCQkgICBtb2RpZmllc19yZWwpOwogfQogCiAvKiAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00MDQs OCArNDEzLDEzIEBAIEV4ZWNTZXFTY2FuSW5pdGlhbGl6ZVdvcmtlcihTZXFTY2FuU3RhdGUgKm5v ZGUsCiAJCQkJCQkJUGFyYWxsZWxXb3JrZXJDb250ZXh0ICpwd2N4dCkKIHsKIAlQYXJhbGxlbFRh YmxlU2NhbkRlc2MgcHNjYW47CisJYm9vbAkJbW9kaWZpZXNfcmVsID0KKwkJYm1zX2lzX21lbWJl cigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJICBub2RlLT5z cy5wcy5zdGF0ZS0+ZXNfbW9kaWZpZWRfcmVsaWRzKTsKIAogCXBzY2FuID0gc2htX3RvY19sb29r dXAocHdjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2RlX2lkLCBmYWxzZSk7CiAJ bm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjID0KLQkJdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwgcHNjYW4pOworCQl0YWJsZV9iZWdpbnNjYW5f cGFyYWxsZWxfdm1zZXQobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJICAg cHNjYW4sCisJCQkJCQkJCQkgICBtb2RpZmllc19yZWwpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCA1 YjJhYjE4MWI1Zi4uYmYyNzJjMmMzN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9n ZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCkBAIC0xODAsNiArMTgwLDEx IEBAIGV4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2NhbihSZWxhdGlvbiBoZWFwUmVs YXRpb24sCiAJCQkJCQkJCQkgU25hcHNob3Qgc25hcHNob3QsCiAJCQkJCQkJCQkgSW5kZXhTY2Fu SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAogCQkJCQkJCQkJIGludCBua2V5cywgaW50IG5v cmRlcmJ5cyk7CitleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW5fdm1zZXQoUmVs YXRpb24gaGVhcFJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIFJlbGF0aW9uIGluZGV4UmVsYXRpb24s CisJCQkJCQkJCQkJICAgU25hcHNob3Qgc25hcHNob3QsCisJCQkJCQkJCQkJICAgSW5kZXhTY2Fu SW5zdHJ1bWVudGF0aW9uICppbnN0cnVtZW50LAorCQkJCQkJCQkJCSAgIGludCBua2V5cywgaW50 IG5vcmRlcmJ5cywgYm9vbCBtb2RpZmllc19oZWFwX3JlbCk7CiBleHRlcm4gSW5kZXhTY2FuRGVz YyBpbmRleF9iZWdpbnNjYW5fYml0bWFwKFJlbGF0aW9uIGluZGV4UmVsYXRpb24sCiAJCQkJCQkJ CQkJCVNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJCQlJbmRleFNjYW5JbnN0cnVtZW50YXRp b24gKmluc3RydW1lbnQsCkBAIC0yMDYsNiArMjExLDEyIEBAIGV4dGVybiBJbmRleFNjYW5EZXNj IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLAogCQkJCQkJCQkJCQkg IEluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCQkJICBpbnQg bmtleXMsIGludCBub3JkZXJieXMsCiAJCQkJCQkJCQkJCSAgUGFyYWxsZWxJbmRleFNjYW5EZXNj IHBzY2FuKTsKKworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVs X3Ztc2V0KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCQkJCQkJ CUluZGV4U2Nhbkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkJCQlpbnQg bmtleXMsIGludCBub3JkZXJieXMsCisJCQkJCQkJCQkJCQkJUGFyYWxsZWxJbmRleFNjYW5EZXNj IHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9kaWZpZXNfcmVsKTsKIGV4dGVybiBJdGVtUG9p bnRlciBpbmRleF9nZXRuZXh0X3RpZChJbmRleFNjYW5EZXNjIHNjYW4sCiAJCQkJCQkJCQkgU2Nh bkRpcmVjdGlvbiBkaXJlY3Rpb24pOwogc3RydWN0IFR1cGxlVGFibGVTbG90OwpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCmluZGV4IDQyNzhmMzUxYmRmLi4xNmY3OTA0YTIxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt OTQsNiArOTQsMTMgQEAgdHlwZWRlZiBzdHJ1Y3QgSGVhcFNjYW5EZXNjRGF0YQogCSAqLwogCVBh cmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRhICpyc19wYXJhbGxlbHdvcmtlcmRhdGE7CiAK KwkvKgorCSAqIEZvciBzZXF1ZW50aWFsIHNjYW5zIGFuZCBiaXRtYXAgaGVhcCBzY2Fucy4gSWYg dGhlIHJlbGF0aW9uIGlzIG5vdAorCSAqIGJlaW5nIG1vZGlmaWVkLCBvbi1hY2Nlc3MgcHJ1bmlu ZyBtYXkgcmVhZCBpbiB0aGUgY3VycmVudCBoZWFwIHBhZ2UncworCSAqIGNvcnJlc3BvbmRpbmcg Vk0gYmxvY2sgdG8gdGhpcyBidWZmZXIuCisJICovCisJQnVmZmVyCQlyc192bWJ1ZmZlcjsKKwog CS8qIHRoZXNlIGZpZWxkcyBvbmx5IHVzZWQgaW4gcGFnZS1hdC1hLXRpbWUgbW9kZSBhbmQgZm9y IGJpdG1hcCBzY2FucyAqLwogCXVpbnQzMgkJcnNfY2luZGV4OwkJLyogY3VycmVudCB0dXBsZSdz IGluZGV4IGluIHZpc3R1cGxlcyAqLwogCXVpbnQzMgkJcnNfbnR1cGxlczsJCS8qIG51bWJlciBv ZiB2aXNpYmxlIHR1cGxlcyBvbiBwYWdlICovCkBAIC0xMTYsOCArMTIzLDE4IEBAIHR5cGVkZWYg c3RydWN0IEluZGV4RmV0Y2hIZWFwRGF0YQogewogCUluZGV4RmV0Y2hUYWJsZURhdGEgeHNfYmFz ZTsJLyogQU0gaW5kZXBlbmRlbnQgcGFydCBvZiB0aGUgZGVzY3JpcHRvciAqLwogCi0JQnVmZmVy CQl4c19jYnVmOwkJLyogY3VycmVudCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBhbnkgKi8KLQkv KiBOQjogaWYgeHNfY2J1ZiBpcyBub3QgSW52YWxpZEJ1ZmZlciwgd2UgaG9sZCBhIHBpbiBvbiB0 aGF0IGJ1ZmZlciAqLworCS8qCisJICogQ3VycmVudCBoZWFwIGJ1ZmZlciBpbiBzY2FuLCBpZiBh bnkuIE5COiBpZiB4c19jYnVmIGlzIG5vdAorCSAqIEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBw aW4gb24gdGhhdCBidWZmZXIuCisJICovCisJQnVmZmVyCQl4c19jYnVmOworCisJLyoKKwkgKiBG b3IgaW5kZXggc2NhbnMgdGhhdCBkbyBub3QgbW9kaWZ5IHRoZSB1bmRlcmx5aW5nIGhlYXAgdGFi bGUsIG9uLWFjY2VzcworCSAqIHBydW5pbmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBw YWdlJ3MgY29ycmVzcG9uZGluZyBWTSBibG9jayB0bworCSAqIHRoaXMgYnVmZmVyLgorCSAqLwor CUJ1ZmZlcgkJeHNfdm1idWZmZXI7CiB9IEluZGV4RmV0Y2hIZWFwRGF0YTsKIAogLyogUmVzdWx0 IGNvZGVzIGZvciBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0gKi8KQEAgLTM3NCw3ICszOTEsOCBA QCBleHRlcm4gVHJhbnNhY3Rpb25JZCBoZWFwX2luZGV4X2RlbGV0ZV90dXBsZXMoUmVsYXRpb24g cmVsLAogCiAvKiBpbiBoZWFwL3BydW5laGVhcC5jICovCiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7 Ci1leHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKTsKK2V4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCUJ1ZmZlciAqdm1idWZmZXIpOwogZXh0ZXJu IHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZl ciBidWZmZXIsCiAJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCQkJCSAgIEJ1 ZmZlciB2bWJ1ZmZlciwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgg Yi9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCmluZGV4IGI1ZTBmYjM4NmMwLi5mNDk2ZTBi NDkzOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAorKysgYi9zcmMv aW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5oCkBAIC0xMjEsNiArMTIxLDEyIEBAIHR5cGVkZWYgc3Ry dWN0IFBhcmFsbGVsQmxvY2tUYWJsZVNjYW5Xb3JrZXJEYXRhICpQYXJhbGxlbEJsb2NrVGFibGVT Y2FuV29ya2VyOwogdHlwZWRlZiBzdHJ1Y3QgSW5kZXhGZXRjaFRhYmxlRGF0YQogewogCVJlbGF0 aW9uCXJlbDsKKworCS8qCisJICogU29tZSBvcHRpbWl6YXRpb25zIGNhbiBvbmx5IGJlIHBlcmZv cm1lZCBpZiB0aGUgcXVlcnkgZG9lcyBub3QgbW9kaWZ5CisJICogdGhlIHVuZGVybHlpbmcgcmVs YXRpb24uIFRyYWNrIHRoYXQgaGVyZS4KKwkgKi8KKwlib29sCQltb2RpZmllc19iYXNlX3JlbDsK IH0gSW5kZXhGZXRjaFRhYmxlRGF0YTsKIAogc3RydWN0IEluZGV4U2Nhbkluc3RydW1lbnRhdGlv bjsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IGIyY2UzNWUyYTM0Li5lMzFjMjFjZjhlYiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nl c3MvdGFibGVhbS5oCkBAIC02Miw2ICs2Miw4IEBAIHR5cGVkZWYgZW51bSBTY2FuT3B0aW9ucwog CiAJLyogdW5yZWdpc3RlciBzbmFwc2hvdCBhdCBzY2FuIGVuZD8gKi8KIAlTT19URU1QX1NOQVBT SE9UID0gMSA8PCA5LAorCS8qIHdoZXRoZXIgb3Igbm90IHNjYW4gc2hvdWxkIGF0dGVtcHQgdG8g c2V0IHRoZSBWTSAqLworCVNPX0FMTE9XX1ZNX1NFVCA9IDEgPDwgMTAsCiB9CQkJU2Nhbk9wdGlv bnM7CiAKIC8qCkBAIC04ODEsNiArODgzLDI1IEBAIHRhYmxlX2JlZ2luc2NhbihSZWxhdGlvbiBy ZWwsIFNuYXBzaG90IHNuYXBzaG90LAogCXJldHVybiByZWwtPnJkX3RhYmxlYW0tPnNjYW5fYmVn aW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwgZmxhZ3MpOwogfQogCisvKgorICog U2ltaWxhciB0byB0YWJsZV9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGlu ZGljYXRlIHdoZXRoZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgcmVsYXRpb24uIFRoaXMg aXMgdXNlZCB3aGVuIHRoZSBjYWxsZXIgd2FudHMgdG8gYXR0ZW1wdAorICogbWFya2luZyBwYWdl cyBpbiB0aGUgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlIHZpc2liaWxpdHkgbWFwIGR1 cmluZworICogb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK3N0YXRpYyBpbmxpbmUgVGFibGVTY2Fu RGVzYwordGFibGVfYmVnaW5zY2FuX3Ztc2V0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNo b3QsCisJCQkJCSAgaW50IG5rZXlzLCBzdHJ1Y3QgU2NhbktleURhdGEgKmtleSwgYm9vbCBtb2Rp Zmllc19yZWwpCit7CisJdWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FM TE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOworCisJaWYgKCFt b2RpZmllc19yZWwpCisJCWZsYWdzIHw9IFNPX0FMTE9XX1ZNX1NFVDsKKworCXJldHVybiByZWwt PnJkX3RhYmxlYW0tPnNjYW5fYmVnaW4ocmVsLCBzbmFwc2hvdCwgbmtleXMsIGtleSwgTlVMTCwg ZmxhZ3MpOworfQorCiAvKgogICogTGlrZSB0YWJsZV9iZWdpbnNjYW4oKSwgYnV0IGZvciBzY2Fu bmluZyBjYXRhbG9nLiBJdCdsbCBhdXRvbWF0aWNhbGx5IHVzZSBhCiAgKiBzbmFwc2hvdCBhcHBy b3ByaWF0ZSBmb3Igc2Nhbm5pbmcgY2F0YWxvZyByZWxhdGlvbnMuCkBAIC05MTgsMTAgKzkzOSwx MyBAQCB0YWJsZV9iZWdpbnNjYW5fc3RyYXQoUmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hv dCwKICAqLwogc3RhdGljIGlubGluZSBUYWJsZVNjYW5EZXNjCiB0YWJsZV9iZWdpbnNjYW5fYm0o UmVsYXRpb24gcmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKLQkJCQkgICBpbnQgbmtleXMsIHN0cnVj dCBTY2FuS2V5RGF0YSAqa2V5KQorCQkJCSAgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRh ICprZXksIGJvb2wgbW9kaWZpZXNfcmVsKQogewogCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX0JJ VE1BUFNDQU4gfCBTT19BTExPV19QQUdFTU9ERTsKIAorCWlmICghbW9kaWZpZXNfcmVsKQorCQlm bGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2Fu X2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksCiAJCQkJCQkJCQkgICBOVUxMLCBmbGFn cyk7CiB9CkBAIC0xMTMwLDYgKzExNTQsMTAgQEAgZXh0ZXJuIHZvaWQgdGFibGVfcGFyYWxsZWxz Y2FuX2luaXRpYWxpemUoUmVsYXRpb24gcmVsLAogZXh0ZXJuIFRhYmxlU2NhbkRlc2MgdGFibGVf YmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCQkgIFBhcmFs bGVsVGFibGVTY2FuRGVzYyBwc2Nhbik7CiAKK2V4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxlX2Jl Z2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkJCQlQ YXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJCQkJCQkJCQkJYm9vbCBtb2RpZmllc19y ZWwpOworCiAvKgogICogUmVzdGFydCBhIHBhcmFsbGVsIHNjYW4uICBDYWxsIHRoaXMgaW4gdGhl IGxlYWRlciBwcm9jZXNzLiAgQ2FsbGVyIGlzCiAgKiByZXNwb25zaWJsZSBmb3IgbWFraW5nIHN1 cmUgdGhhdCBhbGwgd29ya2VycyBoYXZlIGZpbmlzaGVkIHRoZSBzY2FuCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rl cy5oCmluZGV4IGRlNzgyMDE0YjJkLi44MzljMWJlMWQ3YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvbm9kZXMvZXhlY25vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmgK QEAgLTY3OCw2ICs2NzgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgRVN0YXRlCiAJCQkJCQkJCQkgKiBF eGVjRG9Jbml0aWFsUHJ1bmluZygpICovCiAJY29uc3QgY2hhciAqZXNfc291cmNlVGV4dDsJLyog U291cmNlIHRleHQgZnJvbSBRdWVyeURlc2MgKi8KIAorCS8qCisJICogUlQgaW5kZXhlcyBvZiBy ZWxhdGlvbnMgbW9kaWZpZWQgYnkgdGhlIHF1ZXJ5IGVpdGhlciB0aHJvdWdoCisJICogVVBEQVRF L0RFTEVURS9JTlNFUlQvTUVSR0Ugb3IgU0VMRUNUIEZPUiBVUERBVEUKKwkgKi8KKwlCaXRtYXBz ZXQgICplc19tb2RpZmllZF9yZWxpZHM7CisKIAlKdW5rRmlsdGVyICplc19qdW5rRmlsdGVyOwkv KiB0b3AtbGV2ZWwganVuayBmaWx0ZXIsIGlmIGFueSAqLwogCiAJLyogSWYgcXVlcnkgY2FuIGlu c2VydC9kZWxldGUgdHVwbGVzLCB0aGUgY29tbWFuZCBJRCB0byBtYXJrIHRoZW0gd2l0aCAqLwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29k aW5nLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5n LnBsCmluZGV4IGM5YzE4Mjg5MmNmLi44NzBmMDNiZGQ3OSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVjb3ZlcnkvdC8wMzVfc3RhbmRieV9sb2dpY2FsX2RlY29kaW5nLnBsCisrKyBiL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbApAQCAtMTAsNiArMTAs NyBAQCB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0 OjpVdGlsczsKIHVzZSBUaW1lOjpIaVJlcyBxdyh1c2xlZXApOwogdXNlIFRlc3Q6Ok1vcmU7Cit1 c2UgVGltZTo6SGlSZXMgcXcodXNsZWVwKTsKIAogaWYgKCRFTlZ7ZW5hYmxlX2luamVjdGlvbl9w b2ludHN9IG5lICd5ZXMnKQogewpAQCAtMjk2LDYgKzI5Nyw3IEBAIHdhbF9sZXZlbCA9ICdsb2dp Y2FsJwogbWF4X3JlcGxpY2F0aW9uX3Nsb3RzID0gNAogbWF4X3dhbF9zZW5kZXJzID0gNAogYXV0 b3ZhY3V1bSA9IG9mZgoraG90X3N0YW5kYnlfZmVlZGJhY2sgPSBvbgogfSk7CiAkbm9kZV9wcmlt YXJ5LT5kdW1wX2luZm87CiAkbm9kZV9wcmltYXJ5LT5zdGFydDsKQEAgLTc0NSw3ICs3NDcsNyBA QCBjaGVja19wZ19yZWN2bG9naWNhbF9zdGRlcnIoJGhhbmRsZSwKICRsb2dzdGFydCA9IC1zICRu b2RlX3N0YW5kYnktPmxvZ2ZpbGU7CiAKIHJlYWN0aXZlX3Nsb3RzX2NoYW5nZV9oZnNfYW5kX3dh aXRfZm9yX3htaW5zKCdzaGFyZWRfcm93X3JlbW92YWxfJywKLQknbm9fY29uZmxpY3RfJywgMCwg MSk7CisJJ25vX2NvbmZsaWN0XycsIDEsIDApOwogCiAjIFRoaXMgc2hvdWxkIG5vdCB0cmlnZ2Vy IGEgY29uZmxpY3QKIHdhaXRfdW50aWxfdmFjdXVtX2Nhbl9yZW1vdmUoCi0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0018-Unset-all-visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v9-0018-Unset-all-visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhr17 RnJvbSAyZGM2ZjdhZGE2NDM1MjI4NGM5NmU1ZjBkMDY5OTEzYTZmMWY2ZWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM1OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAxOC8yMl0gVW5zZXQgYWxsLXZpc2libGUgc29vbmVyIGlmIG5vdCBmcmVlemluZwoK SW4gcHJ1bmUvZnJlZXplIGNvZGUsIHdlIGRlbGF5IHVuc2V0dGluZyBhbGwtdmlzaWJsZS9hbGwt ZnJvemVuIGluIHRoZQpwcmVzZW5jZSBvZiBkZWFkIGl0ZW1zIHRvIGFsbG93IG9wcG9ydHVuaXN0 aWNhbGx5IGZyZWV6aW5nIHR1cGxlcyBpZiB0aGUKd2hvbGUgcGFnZSB3b3VsZCBiZSBmcm96ZW4g ZXhjZXB0IGZvciB0aG9zZSBkZWFkIGl0ZW1zIC0tIHdoaWNoIGFyZQpyZW1vdmVkIGxhdGVyIGlu IHZhY3V1bSdzIHRoaXJkIHBoYXNlLgoKRnV0dXJlIGNvbW1pdHMgd2lsbCBhbGxvdyBvbi1hY2Nl c3MgcHJ1bmluZyB0byBzZXQgdGhlIFZNLCB3aGljaCBtZWFucwphbGwtdmlzaWJsZSB3aWxsIGJl IGluaXRpYWxpemVkIHRvIHRydWUgaW5zdGVhZCBvZiBmYWxzZSBhbmQgd2Ugd2lsbCBkbwpleHRy YSBib29ra2VlcGluZyBpbiBoZWFwX3BydW5lX3VuY2hhbmdlZF9scF9ub3JtYWwoKSB0byBrZWVw IHRyYWNrIG9mCndoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzIGFsbC12aXNpYmxlLgoKQmVjYXVz ZSBvbi1hY2Nlc3MgcHJ1bmluZyB3aWxsIG5vdCBmcmVlemUgdHVwbGVzLCBpdCBtYWtlcyBzZW5z ZSB0bwp1bnNldCBhbGwtdmlzaWJsZSBhcyBzb29uIGFzIHdlIGVuY291bnRlciBhbiBMUF9ERUFE IGl0ZW0gYW5kCmF2b2lkIGNvbnRpbnVlZCBib29ra2VlcGluZyBzaW5jZSB3ZSBrbm93IHRoZSBw YWdlIGlzIG5vdCBhbGwtdmlzaWJsZQphbmQgd2Ugd29uJ3QgYmUgYWJsZSB0byByZW1vdmUgdGhv c2UgZGVhZCBpdGVtcy4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyB8 IDEwICsrKysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCAyNzNlOTQxMmEwMS4u YmEzZmFhYjkxZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCkBAIC0xNDk0LDgg KzE0OTQsMTEgQEAgaGVhcF9wcnVuZV9yZWNvcmRfZGVhZChQcnVuZVN0YXRlICpwcnN0YXRlLCBP ZmZzZXROdW1iZXIgb2ZmbnVtLAogCiAJLyoKIAkgKiBEZWxpYmVyYXRlbHkgZGVsYXkgdW5zZXR0 aW5nIGFsbF92aXNpYmxlIHVudGlsIGxhdGVyIGR1cmluZyBwcnVuaW5nLgotCSAqIFJlbW92YWJs ZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBhZ2UuCisJICog UmVtb3ZhYmxlIGRlYWQgdHVwbGVzIHNob3VsZG4ndCBwcmVjbHVkZSBmcmVlemluZyB0aGUgcGFn ZS4gSWYgd2Ugd29uJ3QKKwkgKiBhdHRlbXB0IGZyZWV6aW5nLCBqdXN0IHVuc2V0IGFsbC12aXNp YmxlIG5vdywgdGhvdWdoLgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJ CXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJ LyogUmVjb3JkIHRoZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9m ZnNldHNbcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwpAQCAtMTc1Myw4ICsxNzU2 LDExIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9kZWFkKFBhZ2UgcGFnZSwgUHJ1 bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0TnVtYmVyCiAJICogU2ltaWxhcmx5LCBkb24ndCB1bnNl dCBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciwgYXQgdGhlIGVuZCBvZgogCSAqIGhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKCkuICBUaGlzIHdpbGwgYWxsb3cgdXMgdG8gYXR0ZW1wdCB0byBmcmVl emUKIAkgKiB0aGUgcGFnZSBhZnRlciBwcnVuaW5nLiAgQXMgbG9uZyBhcyB3ZSB1bnNldCBpdCBi ZWZvcmUgdXBkYXRpbmcgdGhlCi0JICogdmlzaWJpbGl0eSBtYXAsIHRoaXMgd2lsbCBiZSBjb3Jy ZWN0LgorCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29ycmVjdC4gSWYgd2Ugd29u J3QgYXR0ZW1wdCBmcmVlemluZywKKwkgKiB0aG91Z2gsIGp1c3QgdW5zZXQgYWxsLXZpc2libGUg bm93LgogCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJLyogUmVjb3JkIHRo ZSBkZWFkIG9mZnNldCBmb3IgdmFjdXVtICovCiAJcHJzdGF0ZS0+ZGVhZG9mZnNldHNbcHJzdGF0 ZS0+bHBkZWFkX2l0ZW1zKytdID0gb2ZmbnVtOwotLSAKMi40My4wCgo= --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0021-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Disposition: attachment; filename="v9-0021-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhi320 RnJvbSBmZDU2NjgzZTUwMGU1MjhlZTlkYTk5YTczMjYzNjhhY2E4Y2I4YmFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDEyOjA4OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAyMS8yMl0gUmVvcmRlciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSBwYXJhbWV0 ZXJzCgpSZW9yZGVyIHBhcmFtZXRlcnMgc28gdGhhdCBhbGwgb2YgdGhlIG91dHB1dCBwYXJhbWV0 ZXJzIGFyZSB0b2dldGhlciBhdAp0aGUgZW5kIG9mIHRoZSBwYXJhbWV0ZXIgbGlzdC4KLS0tCiBz cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgfCAzOCArKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAgNiAr Ky0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAgICAgIHwgIDQgKy0tCiAzIGZp bGVzIGNoYW5nZWQsIDI0IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYjlmODVkMTQ1MmUuLjUzY2I4MWQyNTEwIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMjk3LDEwICsyOTcsMTAgQEAgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2 bWJ1ZmZlcikKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4ZXMsIHNpbmNlIHdlIGNh bm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBvbi1hY2Nlc3MgcHJ1bmlu ZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICovCi0JCQloZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBmYWxzZSwKKwkJCWhlYXBfcGFnZV9w cnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIG9wdGlvbnMsIGZhbHNlLAogCQkJCQkJ CQkJICAgdm1idWZmZXIgPyAqdm1idWZmZXIgOiBJbnZhbGlkQnVmZmVyLAotCQkJCQkJCQkJICAg dmlzdGVzdCwgb3B0aW9ucywKLQkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9B Q0NFU1MsCisJCQkJCQkJCQkgICB2aXN0ZXN0LAorCQkJCQkJCQkJICAgTlVMTCwgUFJVTkVfT05f QUNDRVNTLCAmcHJlc3VsdCwKIAkJCQkJCQkJCSAgICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxM KTsKIAogCQkJLyoKQEAgLTY0NSw2ICs2NDUsMTUgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogYWxzbyBuZWVkIHRvIGFjY291bnQg Zm9yIGEgcmVkdWN0aW9uIGluIHRoZSBsZW5ndGggb2YgdGhlIGxpbmUgcG9pbnRlcgogICogYXJy YXkgZm9sbG93aW5nIGFycmF5IHRydW5jYXRpb24gYnkgdXMuCiAgKgorICogb3B0aW9uczoKKyAq ICAgTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nCisgKiAgIHBydW5pbmcuCisgKgorICogICBGUkVFWkUgaW5kaWNhdGVz IHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgorICogICAn YWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KKyAqCisgKiAg IFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cyBp biB0aGUgVk0uCisgKgogICogSWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQs IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzIGlmIGl0J3MKICAqIHJlcXVpcmVkIGluIG9yZGVy IHRvIGFkdmFuY2UgcmVsZnJvemVueGlkIC8gcmVsbWlubXhpZCwgb3IgaWYgaXQncwogICogY29u c2lkZXJlZCBhZHZhbnRhZ2VvdXMgZm9yIG92ZXJhbGwgc3lzdGVtIHBlcmZvcm1hbmNlIHRvIGRv IHNvIG5vdy4gIFRoZQpAQCAtNjYzLDMwICs2NzIsMjEgQEAgaGVhcF9wYWdlX3dpbGxfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogICogY29udGFpbiB0aGUgcmVxdWly ZWQgYmxvY2sgb2YgdGhlIHZpc2liaWxpdHkgbWFwLgogICoKICAqIHZpc3Rlc3QgaXMgdXNlZCB0 byBkaXN0aW5ndWlzaCB3aGV0aGVyIHR1cGxlcyBhcmUgREVBRCBvciBSRUNFTlRMWV9ERUFECi0g KiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSkuCi0gKgotICogb3B0aW9uczoKLSAq ICAgTUFSS19VTlVTRURfTk9XIGluZGljYXRlcyB0aGF0IGRlYWQgaXRlbXMgY2FuIGJlIHNldCBM UF9VTlVTRUQgZHVyaW5nCi0gKiAgIHBydW5pbmcuCi0gKgotICogICBGUkVFWkUgaW5kaWNhdGVz IHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFuZCB3aWxsIHJldHVybgotICogICAn YWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8gdGhlIGNhbGxlci4KLSAqCi0gKiAg IFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNldCB0aGUgcGFnZSdzIHN0YXR1cyBp biB0aGUgVk0uCisgKiAoc2VlIGhlYXBfcHJ1bmVfc2F0aXNmaWVzX3ZhY3V1bSkuIEl0IGlzIGFu IGlucHV0IHBhcmFtZXRlci4KICAqCiAgKiBjdXRvZmZzIGNvbnRhaW5zIHRoZSBmcmVlemUgY3V0 b2ZmcywgZXN0YWJsaXNoZWQgYnkgVkFDVVVNIGF0IHRoZSBiZWdpbm5pbmcKICAqIG9mIHZhY3V1 bWluZyB0aGUgcmVsYXRpb24uICBSZXF1aXJlZCBpZiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24g aXMgc2V0LgogICogY3V0b2Zmcy0+T2xkZXN0WG1pbiBpcyBhbHNvIHVzZWQgdG8gZGV0ZXJtaW5l IGlmIGRlYWQgdHVwbGVzIGFyZQotICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRV UExFX0RFQUQuCisgKiBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRCBvciBIRUFQVFVQTEVfREVBRC4g SXQgaXMgYW4gaW5wdXQgcGFyYW1ldGVyLgorICoKKyAqIHJlYXNvbiBpbmRpY2F0ZXMgd2h5IHRo ZSBwcnVuaW5nIGlzIHBlcmZvcm1lZC4gIEl0IGlzIGluY2x1ZGVkIGluIHRoZSBXQUwKKyAqIHJl Y29yZCBmb3IgZGVidWdnaW5nIGFuZCBhbmFseXNpcyBwdXJwb3NlcywgYnV0IG90aGVyd2lzZSBo YXMgbm8gZWZmZWN0LgogICoKICAqIHByZXN1bHQgY29udGFpbnMgb3V0cHV0IHBhcmFtZXRlcnMg bmVlZGVkIGJ5IGNhbGxlcnMsIHN1Y2ggYXMgdGhlIG51bWJlciBvZgogICogdHVwbGVzIHJlbW92 ZWQgYW5kIHRoZSBvZmZzZXRzIG9mIGRlYWQgaXRlbXMgb24gdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmlu Zy4KICAqIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaXMgcmVzcG9uc2libGUgZm9yIGlu aXRpYWxpemluZyBpdC4gIFJlcXVpcmVkCiAgKiBieSBhbGwgY2FsbGVycy4KICAqCi0gKiByZWFz b24gaW5kaWNhdGVzIHdoeSB0aGUgcHJ1bmluZyBpcyBwZXJmb3JtZWQuICBJdCBpcyBpbmNsdWRl ZCBpbiB0aGUgV0FMCi0gKiByZWNvcmQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9z ZXMsIGJ1dCBvdGhlcndpc2UgaGFzIG5vIGVmZmVjdC4KLSAqCiAgKiBvZmZfbG9jIGlzIHRoZSBv ZmZzZXQgbG9jYXRpb24gcmVxdWlyZWQgYnkgdGhlIGNhbGxlciB0byB1c2UgaW4gZXJyb3IKICAq IGNhbGxiYWNrLgogICoKQEAgLTY5OSwxMyArNjk5LDEzIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqLwogdm9pZAogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJ CQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAogCQkJCQkJICAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCi0JCQkJ CQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZz LAotCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJCQkgICBQcnVuZVJl YXNvbiByZWFzb24sCisJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJCQkJ CSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19y ZWxmcm96ZW5feGlkLAogCQkJCQkJICAgTXVsdGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCkKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA3NTU4YWM2OTdmMS4uOTliOWNhYjA5 NzQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5OTEsMTEgKzE5OTEs MTEgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAlpZiAodmFjcmVsLT5u aW5kZXhlcyA9PSAwKQogCQlwcnVuZV9vcHRpb25zIHw9IEhFQVBfUEFHRV9QUlVORV9NQVJLX1VO VVNFRF9OT1c7CiAKLQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1ZiwKKwloZWFw X3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWwsIGJ1ZiwgcHJ1bmVfb3B0aW9ucywKIAkJCQkJCQkg ICBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCiAJCQkJCQkJICAgdm1idWZmZXIsCi0JCQkJ CQkJICAgdmFjcmVsLT52aXN0ZXN0LCBwcnVuZV9vcHRpb25zLAotCQkJCQkJCSAgICZ2YWNyZWwt PmN1dG9mZnMsICZwcmVzdWx0LCBQUlVORV9WQUNVVU1fU0NBTiwKKwkJCQkJCQkgICB2YWNyZWwt PnZpc3Rlc3QsCisJCQkJCQkJICAgJnZhY3JlbC0+Y3V0b2ZmcywgUFJVTkVfVkFDVVVNX1NDQU4s ICZwcmVzdWx0LAogCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSwKIAkJCQkJCQkgICAmdmFjcmVs LT5OZXdSZWxmcm96ZW5YaWQsICZ2YWNyZWwtPk5ld1JlbG1pbk14aWQpOwogCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKaW5kZXggMTZmNzkwNGEyMWUuLjBjNGU1NjA3NjI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0z OTQsMTMgKzM5NCwxMyBAQCBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGU7CiBleHRlcm4gdm9pZCBoZWFw X3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJ CQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJICAgaW50IG9w dGlvbnMsCiAJCQkJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCQkJCSAgIEJ1ZmZl ciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAgIHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwK LQkJCQkJCQkJCSAgIGludCBvcHRpb25zLAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9m ZnMgKmN1dG9mZnMsCi0JCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJlc3VsdCAqcHJlc3VsdCwKIAkJ CQkJCQkJCSAgIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCQkJCSAgIFBydW5lRnJlZXplUmVz dWx0ICpwcmVzdWx0LAogCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpvZmZfbG9jLAogCQkJCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCAqbmV3X3JlbGZyb3plbl94aWQsCiAJCQkJCQkJCQkgICBNdWx0 aVhhY3RJZCAqbmV3X3JlbG1pbl9teGlkKTsKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0020-Add-helper-functions-to-heap_page_prune_and_freez.patch" Content-Disposition: attachment; filename="v9-0020-Add-helper-functions-to-heap_page_prune_and_freez.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhhz19 RnJvbSBiNGEyOGNmMGFiNmNkODZiZTJhYmM0ZmYyMGVjZjdlOTllZDEzY2Y0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMwIEp1bCAyMDI1IDE4OjUxOjQzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAyMC8yMl0gQWRkIGhlbHBlciBmdW5jdGlvbnMgdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUKCmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgaGFzIGdvdHRlbiByYXRoZXIg bG9uZy4gSXQgaGFzIHNldmVyYWwKc3RhZ2VzOgoKMSkgc2V0dXAgLSB3aGVyZSB0aGUgUHJ1bmVT dGF0ZWlzIHNldCB1cAoyKSB0dXBsZSBleGFtaW5hdGlvbiAtLSB3aGVyZSB0dXBsZXMgYW5kIGxp bmUgcG9pbnRlcnMgYXJlIGV4YW1pbmVkIHRvCiAgIGRldGVybWluZSB3aGF0IG5lZWRzIHRvIGJl IHBydW5lZCBhbmQgd2hhdCBjb3VsZCBiZSBmcm96ZW4KMykgZXZhbHVhdGlvbiAtLSB3aGVyZSB3 ZSBkZXRlcm1pbmUgYmFzZWQgb24gY2FsbGVyIHByb3ZpZGVkIG9wdGlvbnMsCiAgIGhldXJpc3Rp Y3MsIGFuZCBzdGF0ZSBnYXRoZXJlZCBkdXJpbmcgc3RhZ2UgMiB3aGV0aGVyIG9yIG5vdCB0bwog ICBmcmVlemUgdHVwbGVzIGFuZCBzZXQgdGhlIHBhZ2UgaW4gdGhlIFZNCjQpIGV4ZWN1dGlvbiAt IHdoZXJlIHRoZSBwYWdlIGNoYW5nZXMgYXJlIGFjdHVhbGx5IG1hZGUgYW5kIGxvZ2dlZAoKVGhp cyBjb21taXQgcmVmYWN0b3JzIHRoZSBldmFsdWF0aW9uIHN0YWdlIGludG8gaGVscGVycyB3aGlj aCByZXR1cm4Kd2hldGhlciBvciBub3QgdG8gZnJlZXplIGFuZCBzZXQgdGhlIFZNLgoKRm9yIHRo ZSBwdXJwb3NlcyBvZiBjb21taXR0aW5nLCB0aGlzIGxpa2VseSBzaG91bGRuJ3QgYmUgYSBzZXBh cmF0ZQpjb21taXQuIEJ1dCBJJ20gbm90IHN1cmUgeWV0IHdoZXRoZXIgaXQgbWFrZXMgbW9yZSBz ZW5zZSB0byBkbyB0aGlzCnJlZmFjdG9yaW5nIGVhcmxpZXIgaW4gdGhlIHNldCBmb3IgY2xhcml0 eSBmb3IgdGhlIHJldmlld2VyLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVh cC5jIHwgNDcxICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAy OTUgaW5zZXJ0aW9ucygrKSwgMTc2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKaW5kZXggNDQwMGJmNTgzZGQuLmI5Zjg1ZDE0NTJlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYwpAQCAtMTc5LDYgKzE3OSwyMiBAQCBzdGF0aWMgdm9pZCBoZWFwX3By dW5lX3JlY29yZF91bmNoYW5nZWRfbHBfcmVkaXJlY3QoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TgogCiBzdGF0aWMgdm9pZCBwYWdlX3ZlcmlmeV9yZWRpcmVjdHMoUGFnZSBwYWdlKTsKIAor c3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAorCQkJCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJCQkJCSAgYm9vbCBkb19o aW50X2Z1bGxfb3JfcHJ1bmFibGUsCisJCQkJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGks CisJCQkJCQkJCSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJICBib29sICphbGxfZnJv emVuX2V4Y2VwdF9scF9kZWFkKTsKKworc3RhdGljIGJvb2wgaGVhcF9wYWdlX3dpbGxfdXBkYXRl X3ZtKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJIEJ1ZmZlciBidWZmZXIsIEJsb2NrTnVt YmVyIGJsb2Nrbm8sIFBhZ2UgcGFnZSwKKwkJCQkJCQkJCSBQcnVuZVJlYXNvbiByZWFzb24sCisJ CQkJCQkJCQkgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkJCQkgYm9vbCBi bGtfa25vd25fYXYsCisJCQkJCQkJCQkgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCQkJCSBC dWZmZXIgKnZtYnVmZmVyLCB1aW50OCAqdm1mbGFncywKKwkJCQkJCQkJCSBib29sICpzZXRfcGRf YWxsX3Zpc2libGUpOworCiBzdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRp b24oUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGss CiAJCQkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKQEAgLTM3 Niw2ICszOTIsMjQ5IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiBy ZWxhdGlvbiwKIAlyZXR1cm4gZmFsc2U7CiB9CiAKKworLyoKKyAqIERldGVybWluZSB3aGV0aGVy IHRvIHNldCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0cyBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9t CisgKiB0aGUgUHJ1bmVTdGF0ZSBhbmQgYmxrX2tub3duX2F2LCB3aGljaCBzb21lIGNhbGxlcnMg d2lsbCBwcm92aWRlIGFmdGVyCisgKiBwcmV2aW91c2x5IGV4YW1pbmluZyB0aGlzIGhlYXAgcGFn ZSdzIFZNIGJpdHMgKGUuZy4gdmFjdXVtIGZyb20gdGhlIGxhc3QKKyAqIGhlYXBfdmFjX3NjYW5f bmV4dF9ibG9jaygpIGNhbGwpLgorICoKKyAqIFdlIHBhc3MgaW4gYmxvY2tubyBhbmQgcGFnZSBl dmVuIHRob3NlIGNhbiBiZSBkZXJpdmVkIGZyb20gYnVmZmVyIHRvIGF2b2lkCisgKiBleHRyYSBC dWZmZXJHZXRCbG9jaygpIGFuZCBCdWZmZXJHZXRCbG9ja051bWJlcigpIGNhbGxzLgorICoKKyAq IFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBvbmx5IGFmdGVyIGRvX2ZyZWV6ZSBoYXMgYmVlbiBkZWNp ZGVkIChhbmQgZG9fcHJ1bmUKKyAqIGhhcyBiZWVuIHNldCksIGFzIHRoZXNlIGZhY3RvciBpbnRv IG91ciBoZXVyaXN0aWMtYmFzZWQgZGVjaXNpb24uCisgKgorICogcHJzdGF0ZSBhbmQgdm1idWZm ZXIgYXJlIGlucHV0L291dHB1dCBmaWVsZHMuIHZtZmxhZ3MgYW5kIGFuZAorICogc2V0X3BkX2Fs bF92aXNpYmxlIGFyZSBvdXRwdXQgZmllbGRzLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUg Y2FsbGVyIHNob3VsZCBzZXQgb25lIG9yIGJvdGggb2YgdGhlIFZNIGJpdHMgYW5kIGZhbHNlCisg KiBvdGhlcndpc2UuCisgKi8KK3N0YXRpYyBib29sCitoZWFwX3BhZ2Vfd2lsbF91cGRhdGVfdm0o UmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkgQnVmZmVyIGJ1ZmZlciwgQmxvY2tOdW1iZXIgYmxv Y2tubywgUGFnZSBwYWdlLAorCQkJCQkJIFBydW5lUmVhc29uIHJlYXNvbiwKKwkJCQkJCSBib29s IGRvX3BydW5lLCBib29sIGRvX2ZyZWV6ZSwKKwkJCQkJCSBib29sIGJsa19rbm93bl9hdiwKKwkJ CQkJCSBQcnVuZVN0YXRlICpwcnN0YXRlLAorCQkJCQkJIEJ1ZmZlciAqdm1idWZmZXIsIHVpbnQ4 ICp2bWZsYWdzLAorCQkJCQkJIGJvb2wgKnNldF9wZF9hbGxfdmlzaWJsZSkKK3sKKwlib29sCQlk b19zZXRfdm0gPSBmYWxzZTsKKworCS8qCisJICogSWYgdGhlIGNhbGxlciBzcGVjaWZpZWQgbm90 IHRvIHVwZGF0ZSB0aGUgVk0sIHZhbGlkYXRlIGV2ZXJ5dGhpbmcgaXMgaW4KKwkgKiB0aGUgcmln aHQgc3RhdGUgYW5kIGV4aXQuCisJICovCisJaWYgKCFwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVf dm0pCisJeworCQlBc3NlcnQoIXByc3RhdGUtPmFsbF92aXNpYmxlICYmICFwcnN0YXRlLT5hbGxf ZnJvemVuKTsKKwkJLyogV2UgZG9uJ3Qgc2V0IG9ubHkgdGhlIHBhZ2UgbGV2ZWwgdmlzaWJpbGl0 eSBoaW50ICovCisJCUFzc2VydCghKCpzZXRfcGRfYWxsX3Zpc2libGUpKTsKKwkJQXNzZXJ0KCp2 bWZsYWdzID09IDApOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoKKwkgKiBJZiB0aGlzIGlz IGFuIG9uLWFjY2VzcyBjYWxsIGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQK KwkgKiBzZXR0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0 aGUgaGVhcCBwYWdlIG9yLCBpZgorCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRv aW5nIHNvIHdvdWxkIHJlcXVpcmUgaW5jbHVkaW5nIGEKKwkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQ SSkgb2YgdGhlIGhlYXAgcGFnZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgorCSAqIHNob3Vs ZCBiZSByYXJlLCBhcyBvbi1hY2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCisJ ICogcGRfcHJ1bmVfeGlkIGlzIHZhbGlkLgorCSAqLworCWlmIChyZWFzb24gPT0gUFJVTkVfT05f QUNDRVNTICYmCisJCXByc3RhdGUtPmNvbnNpZGVyX3VwZGF0ZV92bSAmJgorCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklz RGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIpKSkKKwl7 CisJCXByc3RhdGUtPmNvbnNpZGVyX3VwZGF0ZV92bSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxf dmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisKKwlBc3NlcnQoIXBy c3RhdGUtPmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS0+YWxsX3Zpc2libGUpOworCisJLyoKKwkgKiBD bGVhciBhbnkgVk0gY29ycnVwdGlvbi4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJlIGluIGEgY3Jp dGljYWwKKwkgKiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUg aXMgaW5jb3JyZWN0bHkgc2V0LCB3ZQorCSAqIG1heSBtYXJrIHRoZSBoZWFwIHBhZ2UgYnVmZmVy IGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1cCBkb2luZyBzbworCSAqIGFnYWluIGxhdGVyLiBU aGlzIGlzIG5vdCBhIGNvcnJlY3RuZXNzIGlzc3VlIGFuZCBpcyBpbiB0aGUgcGF0aCBvZiBWTQor CSAqIGNvcnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJh IHBlcmZvcm1hbmNlCisJICogb3ZlcmhlYWQuCisJICovCisJaWYgKGlkZW50aWZ5X2FuZF9maXhf dm1fY29ycnVwdGlvbihyZWxhdGlvbiwKKwkJCQkJCQkJCSAgIGJsb2Nrbm8sIGJ1ZmZlciwgcGFn ZSwKKwkJCQkJCQkJCSAgIGJsa19rbm93bl9hdiwgcHJzdGF0ZS0+bHBkZWFkX2l0ZW1zLAorCQkJ CQkJCQkJICAgKnZtYnVmZmVyKSkKKwl7CisJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24n dCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KKwl9CisKKwkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0 dWFsbHkgbmVlZCB0byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KKwllbHNl IGlmIChwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJgorCQkJICghYmxrX2tub3duX2F2IHx8CisJCQkg IChwcnN0YXRlLT5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9ja25v LCB2bWJ1ZmZlcikpKSkKKwl7CisJCSp2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lC TEU7CisJCWlmIChwcnN0YXRlLT5hbGxfZnJvemVuKQorCQkJKnZtZmxhZ3MgfD0gVklTSUJJTElU WU1BUF9BTExfRlJPWkVOOworCX0KKworCWRvX3NldF92bSA9ICp2bWZsYWdzICYgVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTOworCisJLyoKKwkgKiBEb24ndCBzZXQgUERfQUxMX1ZJU0lCTEUgdW5s ZXNzIHdlIGFsc28gcGxhbiB0byBzZXQgdGhlIFZNLiBXaGlsZSBpdCBpcworCSAqIGNvcnJlY3Qg Zm9yIGEgaGVhcCBwYWdlIHRvIGhhdmUgUERfQUxMX1ZJU0lCTEUgZXZlbiBpZiB0aGUgVk0gaXMg bm90CisJICogc2V0LCB3ZSBzdHJvbmdseSBwcmVmZXIgdG8ga2VlcCB0aGVtIGluIHN5bmMuCisJ ICoKKwkgKiBQcmlvciB0byBQb3N0Z3JlcyAxOSwgaXQgd2FzIHBvc3NpYmxlIGZvciB0aGUgcGFn ZS1sZXZlbCBiaXQgdG8gYmUgc2V0CisJICogYW5kIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRo aXMgY291bGQgaGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9W SVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGluIHRoZSBWTS4KKwkgKi8KKwkqc2V0X3Bk X2FsbF92aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCXJl dHVybiBkb19zZXRfdm07Cit9CisKKy8qCisgKiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVh ZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0byB0aGUgZnJlZXplIHBsYW5zIHdlCisgKiBwcmVw YXJlZCBmb3IgdGhlIGdpdmVuIGJ1ZmZlciBvciBub3QuIElmIHRoZSBjYWxsZXIgc3BlY2lmaWVk IHdlIHNob3VsZCBub3QKKyAqIGZyZWV6ZSB0dXBsZXMsIGl0IGV4aXRzIGVhcmx5LgorICoKKyAq IGRvX3BydW5lLCBkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUsIGFuZCBkaWRfdHVwbGVfaGludF9m cGkgbXVzdCBhbGwgaGF2ZQorICogYmVlbiBkZWNpZGVkIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVu Y3Rpb24uCisgKgorICogcHJzdGF0ZSBpcyBhbiBpbnB1dC9vdXRwdXQgcGFyYW1ldGVyLiBhbGxf ZnJvemVuX2V4Y2VwdF9scF9kZWFkIGlzIHNldCBhbmQKKyAqIHVzZWQgbGF0ZXIgdG8gZGV0ZXJt aW5lIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uIGZvciB0aGUgcmVjb3JkLgorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgdXNlIG91ciBmcmVlemUgcGxhbnMgYW5kIGZyZWV6 ZSB0dXBsZXMgb24gdGhlIHBhZ2UKKyAqIGFuZCBmYWxzZSBvdGhlcndpc2UuCisgKi8KK3N0YXRp YyBib29sCitoZWFwX3BhZ2Vfd2lsbF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBi dWZmZXIsCisJCQkJCSAgYm9vbCBkb19wcnVuZSwKKwkJCQkJICBib29sIGRvX2hpbnRfZnVsbF9v cl9wcnVuYWJsZSwKKwkJCQkJICBib29sIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJICBQcnVu ZVN0YXRlICpwcnN0YXRlLAorCQkJCQkgIGJvb2wgKmFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQp Cit7CisJYm9vbAkJZG9fZnJlZXplID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIg c3BlY2lmaWVkIHdlIHNob3VsZCBub3QgYXR0ZW1wdCB0byBmcmVlemUgYW55IHR1cGxlcywKKwkg KiB2YWxpZGF0ZSB0aGF0IGV2ZXJ5dGhpbmcgaXMgaW4gdGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0 LgorCSAqLworCWlmICghcHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCisJeworCQlBc3NlcnQoIXBy c3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZyb3plbiA9PSAwKTsKKwkJQXNzZXJ0KHBy c3RhdGUtPmxwZGVhZF9pdGVtcyA9PSAwIHx8ICFwcnN0YXRlLT5hbGxfdmlzaWJsZSk7CisJCUFz c2VydCghKCphbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKSk7CisJCXJldHVybiBmYWxzZTsKKwl9 CisKKwlpZiAocHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCisJeworCQkvKgorCQkg KiBoZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxlYXN0IG9uZSBY SUQvTVhJRCBmcm9tCisJCSAqIGJlZm9yZSBGcmVlemVMaW1pdC9NdWx0aVhhY3RDdXRvZmYgaXMg cHJlc2VudC4gIE11c3QgZnJlZXplIHRvCisJCSAqIGFkdmFuY2UgcmVsZnJvemVueGlkL3JlbG1p bm14aWQuCisJCSAqLworCQlkb19mcmVlemUgPSB0cnVlOworCX0KKwllbHNlCisJeworCQkvKgor CQkgKiBPcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRp bmcgYW4gRlBJCisJCSAqIGFueXdheSBhbmQgaWYgZG9pbmcgc28gbWVhbnMgdGhhdCB3ZSBjYW4g c2V0IHRoZSBwYWdlIGFsbC1mcm96ZW4KKwkJICogYWZ0ZXJ3YXJkcyAobWlnaHQgbm90IGhhcHBl biB1bnRpbCBWQUNVVU0ncyBmaW5hbCBoZWFwIHBhc3MpLgorCQkgKgorCQkgKiBYWFg6IFByZXZp b3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBjaGVja2luZworCQkg KiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAgT25jZSB0aGUg ZnJlZXplIGFuZAorCQkgKiBwcnVuZSByZWNvcmRzIHdlcmUgY29tYmluZWQsIHRoaXMgaGV1cmlz dGljIGNvdWxkbid0IGJlIHVzZWQKKwkJICogYW55bW9yZS4gIFRoZSBvcHBvcnR1bmlzdGljIGZy ZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZSBpbXByb3ZlZDsKKwkJICogaG93ZXZlciwgZm9yIG5vdywg dHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCisJCSAqLworCQlpZiAocHJzdGF0ZS0+ YWxsX3Zpc2libGUgJiYgcHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiBwcnN0YXRlLT5uZnJvemVuID4g MCkKKwkJeworCQkJLyoKKwkJCSAqIEZyZWV6aW5nIHdvdWxkIG1ha2UgdGhlIHBhZ2UgYWxsLWZy b3plbi4gIEhhdmUgYWxyZWFkeSBlbWl0dGVkCisJCQkgKiBhbiBGUEkgb3Igd2lsbCBkbyBzbyBh bnl3YXk/CisJCQkgKi8KKwkJCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0aW9uKSkKKwkJCXsK KwkJCQlpZiAoZGlkX3R1cGxlX2hpbnRfZnBpKQorCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJ CWVsc2UgaWYgKGRvX3BydW5lKQorCQkJCXsKKwkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRz QmFja3VwKGJ1ZmZlcikpCisJCQkJCQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCQllbHNl IGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUpCisJCQkJeworCQkJCQlpZiAoWExvZ0hpbnRC aXRJc05lZWRlZCgpICYmIFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCisJCQkJ CQlkb19mcmVlemUgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCWlmIChkb19mcmVl emUpCisJeworCQkvKgorCQkgKiBWYWxpZGF0ZSB0aGUgdHVwbGVzIHdlIHdpbGwgYmUgZnJlZXpp bmcgYmVmb3JlIGVudGVyaW5nIHRoZQorCQkgKiBjcml0aWNhbCBzZWN0aW9uLgorCQkgKi8KKwkJ aGVhcF9wcmVfZnJlZXplX2NoZWNrcyhidWZmZXIsIHByc3RhdGUtPmZyb3plbiwgcHJzdGF0ZS0+ bmZyb3plbik7CisJfQorCWVsc2UgaWYgKHByc3RhdGUtPm5mcm96ZW4gPiAwKQorCXsKKwkJLyoK KwkJICogVGhlIHBhZ2UgY29udGFpbmVkIHNvbWUgdHVwbGVzIHRoYXQgd2VyZSBub3QgYWxyZWFk eSBmcm96ZW4sIGFuZCB3ZQorCQkgKiBjaG9zZSBub3QgdG8gZnJlZXplIHRoZW0gbm93LiAgVGhl IHBhZ2Ugd29uJ3QgYmUgYWxsLWZyb3plbiB0aGVuLgorCQkgKi8KKwkJQXNzZXJ0KCFwcnN0YXRl LT5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7CisKKwkJcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZh bHNlOworCQlwcnN0YXRlLT5uZnJvemVuID0gMDsJLyogYXZvaWQgbWlzY291bnRzIGluIGluc3Ry dW1lbnRhdGlvbiAqLworCX0KKwllbHNlCisJeworCQkvKgorCQkgKiBXZSBoYXZlIG5vIGZyZWV6 ZSBwbGFucyB0byBleGVjdXRlLiAgVGhlIHBhZ2UgbWlnaHQgYWxyZWFkeSBiZQorCQkgKiBhbGwt ZnJvemVuIChwZXJoYXBzIG9ubHkgZm9sbG93aW5nIHBydW5pbmcpLCB0aG91Z2guICBTdWNoIHBh Z2VzCisJCSAqIGNhbiBiZSBtYXJrZWQgYWxsLWZyb3plbiBpbiB0aGUgVk0gYnkgb3VyIGNhbGxl ciwgZXZlbiB0aG91Z2ggbm9uZQorCQkgKiBvZiBpdHMgdHVwbGVzIHdlcmUgbmV3bHkgZnJvemVu IGhlcmUuCisJCSAqLworCX0KKworCS8qCisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8gaWdub3Jl IExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGllciBvbiB0bworCSAqIG1ha2UgdGhl IGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZlY3RlZCBi eSB0aGUKKwkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBUaGVzZSBM UF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQX1VOVVNF RCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGljaCB2YWN1 dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAorCSAqIHNl dHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBWQUNVVU0g ZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFsaXplZCwg dW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCisJICogYW55IExQX0RFQUQgaXRlbXMgb24g dGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YKKwkgKiB0 aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0byB1cGRh dGUgdGhlIFZNLgorCSAqCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgcGFn ZSB3YXMgYWxsLWZyb3plbiBleGNlcHQgTFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUgcHVycG9z ZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJICogdGhv dWdoLgorCSAqLworCSphbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJzdGF0ZS0+YWxsX2Zy b3plbjsKKwlpZiAocHJzdGF0ZS0+bHBkZWFkX2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUtPmFs bF92aXNpYmxlID0gZmFsc2U7CisJCXByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKKwl9CisK KwlyZXR1cm4gZG9fZnJlZXplOworfQorCisKIC8qCiAgKiBQcnVuZSBhbmQgcmVwYWlyIGZyYWdt ZW50YXRpb24gYW5kIHBvdGVudGlhbGx5IGZyZWV6ZSB0dXBsZXMgb24gdGhlCiAgKiBzcGVjaWZp ZWQgcGFnZS4gSWYgdGhlIHBhZ2UncyB2aXNpYmlsaXR5IHN0YXR1cyBoYXMgY2hhbmdlZCwgdXBk YXRlIGl0IGluCkBAIC03NjYsMjAgKzEwMjUsMzAgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJLyogQ2xlYXIgdGhlIG9mZnNl dCBpbmZvcm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwog CSpvZmZfbG9jID0gSW52YWxpZE9mZnNldE51bWJlcjsKIAotCWRvX3BydW5lID0gcHJzdGF0ZS5u cmVkaXJlY3RlZCA+IDAgfHwKLQkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKLQkJcHJzdGF0ZS5udW51 c2VkID4gMDsKLQogCS8qCiAJICogQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdGhlIGxpdmUgdHVwbGVz IG9uIHRoZSBwYWdlLCBpZiB0aGUgbmV3ZXN0IHhtaW4KIAkgKiBhbW9uZ3N0IHRoZW0gaXMgbm90 IHZpc2libGUgdG8gZXZlcnlvbmUsIHRoZSBwYWdlIGNhbm5vdCBiZQotCSAqIGFsbC12aXNpYmxl LgorCSAqIGFsbC12aXNpYmxlLiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgd2UgZGVjaWRlIHdo ZXRoZXIgb3Igbm90IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGJlbG93IGJlY2F1 c2Ugd2UgZG8gbm90IHdhbnQgdG8KKwkgKiBvcHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBh Z2UgaWYgdGhlcmUgYXJlIGxpdmUgdHVwbGVzIG5vdCB2aXNpYmxlCisJICogdG8gZXZlcnlvbmUs IHdoaWNoIHdvdWxkIHByZXZlbnQgc2V0dGluZyB0aGUgcGFnZSBmcm96ZW4gaW4gdGhlIFZNLgog CSAqLwogCWlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCiAJCVRyYW5zYWN0aW9uSWRJc05vcm1h bChwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkgJiYKIAkJIUdsb2JhbFZpc1hpZFZpc2li bGVUb0FsbChwcnN0YXRlLnZpc3Rlc3QsIHByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkKSkK IAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwogCisJ LyoKKwkgKiBOb3cgZGVjaWRlIGJhc2VkIG9uIGluZm9ybWF0aW9uIGNvbGxlY3RlZCB3aGlsZSBl eGFtaW5pbmcgZXZlcnkgdHVwbGUKKwkgKiB3aGljaCBhY3Rpb25zIHRvIHRha2UuIElmIHRoZXJl IGFyZSBhbnkgcHJ1bmFibGUgdHVwbGVzLCB3ZSdsbCBwcnVuZQorCSAqIHRoZW0uIEhvd2V2ZXIs IHdlIHdpbGwgZGVjaWRlIGJhc2VkIG9uIG9wdGlvbnMgc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIK KwkgKiBhbmQgdmFyaW91cyBoZXVyaXN0aWNzIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSBhbnkg dHVwbGVzIGFuZCB3aGV0aGVyCisJICogb3Igbm90IHRoZSBwYWdlIHNob3VsZCBiZSBzZXQgYWxs LXZpc2libGUvYWxsLWZyb3plbiBpbiB0aGUgVk0uCisJICovCisJZG9fcHJ1bmUgPSBwcnN0YXRl Lm5yZWRpcmVjdGVkID4gMCB8fAorCQlwcnN0YXRlLm5kZWFkID4gMCB8fAorCQlwcnN0YXRlLm51 bnVzZWQgPiAwOworCiAJLyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBp ZiB3ZSBmb3VuZCBhIG5ldyB2YWx1ZSBmb3IgdGhlCiAJICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9y IHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhvc2UKQEAgLTc5MCwx ODIgKzEwNTksMzIgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIsCiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgotCSAqIERlY2lk ZSBpZiB3ZSB3YW50IHRvIGdvIGFoZWFkIHdpdGggZnJlZXppbmcgYWNjb3JkaW5nIHRvIHRoZSBm cmVlemUKLQkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90LgotCSAqLwotCWRvX2ZyZWV6ZSA9 IGZhbHNlOwotCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQotCXsKLQkJaWYgKHByc3RhdGUu cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpCi0JCXsKLQkJCS8qCi0JCQkgKiBoZWFwX3ByZXBhcmVf ZnJlZXplX3R1cGxlIGluZGljYXRlZCB0aGF0IGF0IGxlYXN0IG9uZSBYSUQvTVhJRAotCQkJICog ZnJvbSBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0b2ZmIGlzIHByZXNlbnQuICBNdXN0 Ci0JCQkgKiBmcmVlemUgdG8gYWR2YW5jZSByZWxmcm96ZW54aWQvcmVsbWlubXhpZC4KLQkJCSAq LwotCQkJZG9fZnJlZXplID0gdHJ1ZTsKLQkJfQotCQllbHNlCi0JCXsKLQkJCS8qCi0JCQkgKiBP cHBvcnR1bmlzdGljYWxseSBmcmVlemUgdGhlIHBhZ2UgaWYgd2UgYXJlIGdlbmVyYXRpbmcgYW4g RlBJCi0JCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQgd2UgY2FuIHNldCB0 aGUgcGFnZQotCQkJICogYWxsLWZyb3plbiBhZnRlcndhcmRzIChtaWdodCBub3QgaGFwcGVuIHVu dGlsIFZBQ1VVTSdzIGZpbmFsCi0JCQkgKiBoZWFwIHBhc3MpLgotCQkJICoKLQkJCSAqIFhYWDog UHJldmlvdXNseSwgd2Uga25ldyBpZiBwcnVuaW5nIGVtaXR0ZWQgYW4gRlBJIGJ5IGNoZWNraW5n Ci0JCQkgKiBwZ1dhbFVzYWdlLndhbF9mcGkgYmVmb3JlIGFuZCBhZnRlciBwcnVuaW5nLiAgT25j ZSB0aGUgZnJlZXplCi0JCQkgKiBhbmQgcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlz IGhldXJpc3RpYyBjb3VsZG4ndCBiZQotCQkJICogdXNlZCBhbnltb3JlLiAgVGhlIG9wcG9ydHVu aXN0aWMgZnJlZXplIGhldXJpc3RpYyBtdXN0IGJlCi0JCQkgKiBpbXByb3ZlZDsgaG93ZXZlciwg Zm9yIG5vdywgdHJ5IHRvIGFwcHJveGltYXRlIHRoZSBvbGQgbG9naWMuCi0JCQkgKi8KLQkJCWlm IChwcnN0YXRlLmFsbF92aXNpYmxlICYmIHByc3RhdGUuYWxsX2Zyb3plbiAmJiBwcnN0YXRlLm5m cm96ZW4gPiAwKQotCQkJewotCQkJCS8qCi0JCQkJICogRnJlZXppbmcgd291bGQgbWFrZSB0aGUg cGFnZSBhbGwtZnJvemVuLiAgSGF2ZSBhbHJlYWR5Ci0JCQkJICogZW1pdHRlZCBhbiBGUEkgb3Ig d2lsbCBkbyBzbyBhbnl3YXk/Ci0JCQkJICovCi0JCQkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVs YXRpb24pKQotCQkJCXsKLQkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKLQkJCQkJCWRvX2Zy ZWV6ZSA9IHRydWU7Ci0JCQkJCWVsc2UgaWYgKGRvX3BydW5lKQotCQkJCQl7Ci0JCQkJCQlpZiAo WExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCQlkb19mcmVlemUgPSB0 cnVlOwotCQkJCQl9Ci0JCQkJCWVsc2UgaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKLQkJ CQkJewotCQkJCQkJaWYgKFhMb2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKQotCQkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCQkJCX0KLQkJ CQl9Ci0JCQl9Ci0JCX0KLQl9Ci0KLQlpZiAoZG9fZnJlZXplKQotCXsKLQkJLyoKLQkJICogVmFs aWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJlIGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUK LQkJICogY3JpdGljYWwgc2VjdGlvbi4KLQkJICovCi0JCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3Mo YnVmZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKLQl9Ci0JZWxzZSBpZiAo cHJzdGF0ZS5uZnJvemVuID4gMCkKLQl7Ci0JCS8qCi0JCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBz b21lIHR1cGxlcyB0aGF0IHdlcmUgbm90IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKLQkJICogY2hv c2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5vdy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4g dGhlbi4KLQkJICovCi0JCUFzc2VydCghcHJzdGF0ZS5wYWdlZnJ6LmZyZWV6ZV9yZXF1aXJlZCk7 Ci0KLQkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7Ci0JCXByc3RhdGUubmZyb3plbiA9IDA7 CS8qIGF2b2lkIG1pc2NvdW50cyBpbiBpbnN0cnVtZW50YXRpb24gKi8KLQl9Ci0JZWxzZQotCXsK LQkJLyoKLQkJICogV2UgaGF2ZSBubyBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdl IG1pZ2h0IGFscmVhZHkgYmUKLQkJICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2lu ZyBwcnVuaW5nKSwgdGhvdWdoLiAgU3VjaCBwYWdlcwotCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1m cm96ZW4gaW4gdGhlIFZNIGJ5IG91ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKLQkJICogb2Yg aXRzIHR1cGxlcyB3ZXJlIG5ld2x5IGZyb3plbiBoZXJlLgotCQkgKi8KLQl9Ci0KLQkvKgotCSAq IEl0IHdhcyBjb252ZW5pZW50IHRvIGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxl IGVhcmxpZXIgb24gdG8KLQkgKiBtYWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8g ZnJlZXplIHRoZSBwYWdlIHVuYWZmZWN0ZWQgYnkgdGhlCi0JICogc2hvcnQtdGVybSBwcmVzZW5j ZSBvZiBMUF9ERUFEIGl0ZW1zLiAgVGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCi0JICogZWZmZWN0 aXZlbHkgYXNzdW1lZCB0byBiZSBMUF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRv ZXNuJ3QKLQkgKiBtYXR0ZXIgd2hpY2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9y IGZpbmFsIHBhc3MpIGVuZHMgdXAKLQkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFz IGxvbmcgYXMgdGhlIG9uZ29pbmcgVkFDVVVNIGRvZXMgaXQuCi0JICoKLQkgKiBOb3cgdGhhdCBm cmVlemluZyBoYXMgYmVlbiBmaW5hbGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFy ZQotCSAqIGFueSBMUF9ERUFEIGl0ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0 IHRoZSBwcmVzZW50IHN0YXRlIG9mCi0JICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRl cm1pbmUgd2hldGhlciBvciBub3QgdG8gdXBkYXRlIHRoZSBWTS4KLQkgKgotCSAqIEtlZXAgdHJh Y2sgb2Ygd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RF QUQKLQkgKiBpdGVtcyBmb3IgdGhlIHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hv dCBjb25mbGljdCBob3Jpem9uLAotCSAqIHRob3VnaC4KKwkgKiBXZSBtdXN0IGRlY2lkZSB3aGV0 aGVyIG9yIG5vdCB0byBmcmVlemUgYmVmb3JlIGRlY2lkaW5nIGlmIGFuZCB3aGF0IHRvCisJICog c2V0IGluIHRoZSBWTS4KIAkgKi8KLQlhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkID0gcHJzdGF0 ZS5hbGxfZnJvemVuOwotCWlmIChwcnN0YXRlLmxwZGVhZF9pdGVtcyA+IDApCi0JewotCQlwcnN0 YXRlLmFsbF92aXNpYmxlID0gZmFsc2U7Ci0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwot CX0KLQotCS8qCi0JICogSWYgdGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90 IGFjdHVhbGx5IHBydW5pbmcsIGF2b2lkCi0JICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAg aWYgaXQgd291bGQgbmV3bHkgZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKLQkgKiB0aGUgcGFn ZSBpcyBhbHJlYWR5IGRpcnR5LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBh Ci0JICogZnVsbC1wYWdlIGltYWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4g VGhpcyBzaXR1YXRpb24KLQkgKiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcg aXMgb25seSBhdHRlbXB0ZWQgd2hlbgotCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KLQkgKi8K LQlpZiAocmVhc29uID09IFBSVU5FX09OX0FDQ0VTUyAmJgotCQlwcnN0YXRlLmNvbnNpZGVyX3Vw ZGF0ZV92bSAmJgotCQlwcnN0YXRlLmFsbF92aXNpYmxlICYmCi0JCSFkb19wcnVuZSAmJiAhZG9f ZnJlZXplICYmCi0JCSghQnVmZmVySXNEaXJ0eShidWZmZXIpIHx8IFhMb2dDaGVja0J1ZmZlck5l ZWRzQmFja3VwKGJ1ZmZlcikpKQotCXsKLQkJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSBm YWxzZTsKLQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OwotCX0KLQotCUFzc2VydCghcHJzdGF0ZS5hbGxfZnJvemVuIHx8IHByc3RhdGUuYWxsX3Zpc2li bGUpOwotCi0JLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQg b24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGlmCi0JICogcHJvdmlkZWQsIGUuZy4gYnkgdmFj dXVtIGZyb20gdGhlIGxhc3QgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkKLQkgKiBjYWxsKSwg YW5kIGZyb20gYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gdmFyaWFibGVzLgotCSAqLwotCWlm IChwcnN0YXRlLmNvbnNpZGVyX3VwZGF0ZV92bSkKLQl7Ci0JCS8qCi0JCSAqIENsZWFyIGFueSBW TSBjb3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgaW4gYSBjcml0aWNhbAotCQkg KiBzZWN0aW9uLCBzbyB3ZSBkbyBpdCBmaXJzdC4gSWYgUERfQUxMX1ZJU0lCTEUgaXMgaW5jb3Jy ZWN0bHkgc2V0LAotCQkgKiB3ZSBtYXkgbWFyayB0aGUgaGVhcCBwYWdlIGJ1ZmZlciBkaXJ0eSBo ZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcKLQkJICogc28gYWdhaW4gbGF0ZXIuIFRoaXMgaXMg bm90IGEgY29ycmVjdG5lc3MgaXNzdWUgYW5kIGlzIGluIHRoZSBwYXRoCi0JCSAqIG9mIFZNIGNv cnJ1cHRpb24sIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIGV4dHJhCi0JCSAq IHBlcmZvcm1hbmNlIG92ZXJoZWFkLgotCQkgKi8KLQkJaWYgKGlkZW50aWZ5X2FuZF9maXhfdm1f Y29ycnVwdGlvbihyZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBibG9ja25vLCBidWZmZXIsIHBhZ2Us Ci0JCQkJCQkJCQkJICAgYmxrX2tub3duX2F2LCBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1idWZm ZXIpKQotCQl7Ci0JCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRoZSBW TSBmdXJ0aGVyICovCi0JCX0KLQotCQkvKiBEZXRlcm1pbmUgaWYgd2UgYWN0dWFsbHkgbmVlZCB0 byBzZXQgdGhlIFZNIGFuZCB3aGljaCBiaXRzIHRvIHNldC4gKi8KLQkJZWxzZSBpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSAmJgotCQkJCSAoIWJsa19rbm93bl9hdiB8fAotCQkJCSAgKHByc3RhdGUu YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVy KSkpKQotCQl7Ci0JCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7Ci0JCQlp ZiAocHJzdGF0ZS5hbGxfZnJvemVuKQotCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf RlJPWkVOOwotCQl9Ci0JfQotCi0JZG9fc2V0X3ZtID0gdm1mbGFncyAmIFZJU0lCSUxJVFlNQVBf VkFMSURfQklUUzsKLQotCS8qCi0JICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxFIHVubGVzcyB3 ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKLQkgKiBjb3JyZWN0IGZvciBh IGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZNIGlzIG5vdAot CSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5jLgotCSAqCi0J ICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhlIHBhZ2UtbGV2 ZWwgYml0IHRvIGJlIHNldAotCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFyLiBUaGlzIGNv dWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCi0JICogc2V0dGluZyBQRF9BTExfVklTSUJM RSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCi0JICovCi0Jc2V0X3BkX2FsbF92 aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpOworCWRvX2ZyZWV6 ZSA9IGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLAorCQkJCQkJCQkJICBk b19wcnVuZSwKKwkJCQkJCQkJCSAgZG9faGludF9mdWxsX29yX3BydW5hYmxlLAorCQkJCQkJCQkJ ICBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJCQkJCQkgICZwcnN0YXRlLAorCQkJCQkJCQkJICAm YWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCk7CisKKwlkb19zZXRfdm0gPSBoZWFwX3BhZ2Vfd2ls bF91cGRhdGVfdm0ocmVsYXRpb24sCisJCQkJCQkJCQkJIGJ1ZmZlciwgYmxvY2tubywgcGFnZSwK KwkJCQkJCQkJCQkgcmVhc29uLAorCQkJCQkJCQkJCSBkb19wcnVuZSwgZG9fZnJlZXplLAorCQkJ CQkJCQkJCSBibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICZwcnN0YXRlLAorCQkJCQkJCQkJCSAm dm1idWZmZXIsCisJCQkJCQkJCQkJICZ2bWZsYWdzLCAmc2V0X3BkX2FsbF92aXNpYmxlKTsKIAog CS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIgaW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2 bWZsYWdzICovCiAJcHJlc3VsdC0+bmV3X3ZtYml0cyA9IHZtZmxhZ3M7CiAKLQkvKiBBbnkgZXJy b3Igd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwgKi8KKwkvKgorCSAqIFRp bWUgdG8gYWN0dWFsbHkgbWFrZSB0aGUgY2hhbmdlcyB0byB0aGUgcGFnZSBhbmQgbG9nIHRoZW0u IEFueSBlcnJvcgorCSAqIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2FsLgor CSAqLwogCVNUQVJUX0NSSVRfU0VDVElPTigpOwogCiAJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVu YWJsZSkKLS0gCjIuNDMuMAoK --0000000000001d3a1a063e153f05 Content-Type: text/x-patch; charset="US-ASCII"; name="v9-0022-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v9-0022-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mf7edhi721 RnJvbSA5YjUyNzNlYzQzNWE4MDI1Mjk1YzNjZmJkZWQ2MTE3OTViNTBmNGQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2OSAyMi8yMl0gU2V0IHBkX3BydW5lX3hpZCBvbiBpbnNlcnQKCk5vdyB0aGF0IHdlIGNh biBzZXQgdGhlIFZNIGR1cmluZyByZWFkLW9ubHkgcXVlcmllcywgaXQgbWFrZXMgc2Vuc2UgdG8K c3RhcnQgc2V0dGluZyB0aGUgcGFnZSBwcnVuYWJsZSBoaW50IG9uIGluc2VydC4gVGhpcyB3aWxs IGFsbG93CmhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgdG8gYmUgY2FsbGVkIHdoZW4gdGhl IHBhZ2UgaXMgZnVsbCBvcgptb3N0bHkgZnVsbC4KCkZvciB5ZWFycyB0aGVyZSBoYXMgYmVlbiBh IG5vdGUgaW4gaGVhcF9pbnNlcnQoKSBhbmQgaGVhcF9tdWx0aV9pbnNlcnQoKQpwb2ludGluZyBv dXQgdGhhdCBzZXR0aW5nIHBkX3BydW5lX3hpZCB3b3VsZCBoZWxwIGNsZWFuIHVwIGFib3J0ZWQK aW5zZXJ0ZWQgdHVwbGVzIHRoYXQgd291bGQgb3RoZXJ3aXNlIG5vdCBiZSBjbGVhbmVkIHVwIHVu dGlsIHZhY3V1bS4KU28sIHRoYXQncyBhbm90aGVyIGJlbmVmaXQgb2Ygc2V0dGluZyBpdC4KClNl dHRpbmcgcGRfcHJ1bmVfeGlkIG9uIGluc2VydCBjYXVzZXMgYSBwYWdlIHRvIGJlIHBydW5lZCBh bmQgdGhlbgp3cml0dGVuIG91dCB3aGljaCB0aGVuIGFmZmVjdHMgdGhlIHJlcG9ydGVkIG51bWJl ciBvZiBoaXRzIGluIHRoZQppbmRleC1raWxsdHVwbGVzIGlzb2xhdGlvbiB0ZXN0LiBUaGlzIGlz IGEgcXVpcmsgb2YgaG93IGhpdHMgYXJlIHRyYWNrZWQKd2hpY2ggc29tZXRpbWVzIGxlYWRzIHRo ZW0gdG8gYmUgZG91YmxlIGNvdW50ZWQuIFRoaXMgc2hvdWxkIHByb2JhYmx5IGJlCmZpeGVkIG9y IGNoYW5nZWQgaW5kZXBlbmRlbnRseS4KCmNpLW9zLW9ubHk6Ci0tLQogc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMgICAgICAgICAgICAgIHwgMjUgKysrKysrKysrKysrKy0tLS0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyAgICAgICAgIHwgMTUgKysrKysr KysrKy0KIC4uLi9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgICB8ICA2 ICsrLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggZDA3NjkzYjcwNzUuLjAyYWEyMzgzYzUw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjEwNSw2ICsyMTA1LDcgQEAgaGVhcF9p bnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIEhlYXBUdXBsZSB0dXAsIENvbW1hbmRJZCBjaWQsCiAJ VHJhbnNhY3Rpb25JZCB4aWQgPSBHZXRDdXJyZW50VHJhbnNhY3Rpb25JZCgpOwogCUhlYXBUdXBs ZQloZWFwdHVwOwogCUJ1ZmZlcgkJYnVmZmVyOworCVBhZ2UJCXBhZ2U7CiAJQnVmZmVyCQl2bWJ1 ZmZlciA9IEludmFsaWRCdWZmZXI7CiAJYm9vbAkJYWxsX3Zpc2libGVfY2xlYXJlZCA9IGZhbHNl OwogCkBAIC0yMTY0LDE1ICsyMTY1LDE5IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCX0KIAogCS8qCi0JICogWFhYIFNob3Vs ZCB3ZSBzZXQgUGFnZVNldFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/CisJICogU2V0IHBkX3BydW5l X3hpZCB0byB0cmlnZ2VyIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKCkgb25jZSB0aGUgcGFn ZQorCSAqIGlzIGZ1bGwgc28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBwYWdlIGFsbC12aXNpYmxlIGlu IHRoZSBWTS4KIAkgKgotCSAqIFRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24gbWF5IGV2ZW50dWFs bHkgYWJvcnQgdGh1cyBtYWtpbmcgdGhpcyB0dXBsZQotCSAqIERFQUQgYW5kIGhlbmNlIGF2YWls YWJsZSBmb3IgcHJ1bmluZy4gVGhvdWdoIHdlIGRvbid0IHdhbnQgdG8gb3B0aW1pemUKLQkgKiBm b3IgYWJvcnRzLCBpZiBubyBvdGhlciB0dXBsZSBpbiB0aGlzIHBhZ2UgaXMgVVBEQVRFZC9ERUxF VEVkLCB0aGUKLQkgKiBhYm9ydGVkIHR1cGxlIHdpbGwgbmV2ZXIgYmUgcHJ1bmVkIHVudGlsIG5l eHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KKwkgKiBTZXR0aW5nIHBkX3BydW5lX3hpZCBpcyBhbHNv IGhhbmR5IGlmIHRoZSBpbnNlcnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBldmVudHVhbGx5IGFib3J0 cyBtYWtpbmcgdGhpcyB0dXBsZSBERUFEIGFuZCBoZW5jZSBhdmFpbGFibGUgZm9yCisJICogcHJ1 bmluZy4gSWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVMRVRFZCwg dGhlIGFib3J0ZWQKKwkgKiB0dXBsZSB3b3VsZCBuZXZlciBvdGhlcndpc2UgYmUgcHJ1bmVkIHVu dGlsIG5leHQgdmFjdXVtIGlzIHRyaWdnZXJlZC4KIAkgKgotCSAqIElmIHlvdSBkbyBhZGQgUGFn ZVNldFBydW5hYmxlIGhlcmUsIGFkZCBpdCBpbiBoZWFwX3hsb2dfaW5zZXJ0IHRvby4KKwkgKiBE b24ndCBzZXQgaXQgaWYgd2UgYXJlIGluIGJvb3RzdHJhcCBtb2RlLCB0aG91Z2guCiAJICovCisJ cGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKKwlpZiAoVHJhbnNhY3Rpb25JZElzTm9ybWFs KHhpZCkpCisJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJTWFya0J1ZmZlckRpcnR5 KGJ1ZmZlcik7CiAKQEAgLTIxODIsNyArMjE4Nyw2IEBAIGhlYXBfaW5zZXJ0KFJlbGF0aW9uIHJl bGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAogCQl4bF9oZWFwX2luc2VydCB4 bHJlYzsKIAkJeGxfaGVhcF9oZWFkZXIgeGxoZHI7CiAJCVhMb2dSZWNQdHIJcmVjcHRyOwotCQlQ YWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQl1aW50OAkJaW5mbyA9IFhMT0df SEVBUF9JTlNFUlQ7CiAJCWludAkJCWJ1ZmZsYWdzID0gMDsKIApAQCAtMjU0NSw4ICsyNTQ5LDEz IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAq KnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJfQogCiAJCS8qCi0JCSAqIFhYWCBTaG91bGQgd2Ugc2V0 IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPyBTZWUgaGVhcF9pbnNlcnQoKQorCQkgKiBT ZXQgcGRfcHJ1bmVfeGlkLiBTZWUgaGVhcF9pbnNlcnQoKSBmb3IgbW9yZSBvbiB3aHkgd2UgZG8g dGhpcyB3aGVuCisJCSAqIGluc2VydGluZyB0dXBsZXMuIFRoaXMgb25seSBtYWtlcyBzZW5zZSBp ZiB3ZSBhcmVuJ3QgYWxyZWFkeQorCQkgKiBzZXR0aW5nIHRoZSBwYWdlIGZyb3plbiBpbiB0aGUg Vk0uIFdlIGFsc28gZG9uJ3Qgc2V0IGl0IGluCisJCSAqIGJvb3RzdHJhcCBtb2RlLgogCQkgKi8K KwkJaWYgKCFhbGxfZnJvemVuX3NldCAmJiBUcmFuc2FjdGlvbklkSXNOb3JtYWwoeGlkKSkKKwkJ CVBhZ2VTZXRQcnVuYWJsZShwYWdlLCB4aWQpOwogCiAJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIp OwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRleCBmZjNhZDhiNGNkMi4u ZTdkNzgwNDg3MWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94 bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwpAQCAtNDcw LDYgKzQ3MCwxMiBAQCBoZWFwX3hsb2dfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQog CiAJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKHBhZ2UpOyAvKiBuZWVkZWQgdG8g dXBkYXRlIEZTTSBiZWxvdyAqLwogCisJCS8qCisJCSAqIFNldCB0aGUgcGFnZSBwcnVuYWJsZSB0 byB0cmlnZ2VyIG9uLWFjY2VzcyBwcnVuaW5nIGxhdGVyIHdoaWNoIG1heQorCQkgKiBzZXQgdGhl IHBhZ2UgYWxsLXZpc2libGUgaW4gdGhlIFZNLgorCQkgKi8KKwkJUGFnZVNldFBydW5hYmxlKHBh Z2UsIFhMb2dSZWNHZXRYaWQocmVjb3JkKSk7CisKIAkJUGFnZVNldExTTihwYWdlLCBsc24pOwog CiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NMRUFSRUQpCkBA IC02MTksOSArNjI1LDE2IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1JlYWRlclN0YXRl ICpyZWNvcmQpCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJUX0FMTF9WSVNJQkxFX0NM RUFSRUQpCiAJCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2UpOwogCi0JCS8qIFhMSF9JTlNFUlRf QUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBsZXMgYXJlIHZpc2libGUgKi8KKwkJ LyoKKwkJICogWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCBpbXBsaWVzIHRoYXQgYWxsIHR1cGxl cyBhcmUgdmlzaWJsZS4gSWYKKwkJICogd2UgYXJlIG5vdCBzZXR0aW5nIHRoZSBwYWdlIGZyb3pl biwgdGhlbiBzZXQgdGhlIHBhZ2UncyBwcnVuYWJsZQorCQkgKiBoaW50IHNvIHRoYXQgd2UgdHJp Z2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkgc2V0IHRoZQorCQkgKiBwYWdl IGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCiAJCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhf SU5TRVJUX0FMTF9GUk9aRU5fU0VUKQogCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7CisJCWVs c2UKKwkJCVBhZ2VTZXRQcnVuYWJsZShwYWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOwogCiAJ CU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOwogCX0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L2lzb2xh dGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dCBiL3NyYy90ZXN0L2lzb2xhdGlvbi9l eHBlY3RlZC9pbmRleC1raWxsdHVwbGVzLm91dAppbmRleCBiZTdkZGQ3NTZlZi4uYjI5ZjI0MzRi MDAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L2lzb2xhdGlvbi9leHBlY3RlZC9pbmRleC1raWxsdHVw bGVzLm91dAorKysgYi9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxl cy5vdXQKQEAgLTU0LDcgKzU0LDcgQEAgc3RlcCBmbHVzaDogU0VMRUNUIEZST00gcGdfc3RhdF9m b3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDogU0VMRUNUIGhlYXBfYmxrc19yZWFkICsg aGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nlc3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3Nl cyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3NlcwogLS0tLS0tLS0tLS0tLS0tLS0KLSAg ICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAgMgogKDEgcm93KQogCiBzdGVwIG1lYXN1 cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vzc2VzID0gKFNFTEVDVCBoZWFwX2Jsa3Nf cmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxu YW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTEzMCw3ICsxMzAsNyBAQCBzdGVwIGZsdXNo OiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRfZmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBT RUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3NfaGl0IC0gY291bnRlci5oZWFwX2FjY2Vz c2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291bnRlciwgcGdfc3RhdGlvX2FsbF90YWJs ZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2Vz CiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAgICAy CiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRFIGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNz ZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRp b19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZScpOwpAQCAtMjgz LDcgKzI4Myw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRfZm9yY2VfbmV4dF9m bHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19o aXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNzZXMgRlJPTSBjb3Vu dGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVw bGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICAgICAg ICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFzdXJlOiBVUERBVEUg Y291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFw X2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxs X3ByaW9yX3R1cGxlJyk7Ci0tIAoyLjQzLjAKCg== --0000000000001d3a1a063e153f05--