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 1uw7Rk-006EFX-RA for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Sep 2025 23:08:22 +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 1uw7Rj-00FTZ7-Uu for pgsql-hackers@arkaria.postgresql.org; Tue, 09 Sep 2025 23:08:20 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1uw7Rj-00FTYy-CL for pgsql-hackers@lists.postgresql.org; Tue, 09 Sep 2025 23:08:19 +0000 Received: from mail-ed1-x52f.google.com ([2a00:1450:4864:20::52f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uw7Rb-001bRH-2S for pgsql-hackers@lists.postgresql.org; Tue, 09 Sep 2025 23:08:19 +0000 Received: by mail-ed1-x52f.google.com with SMTP id 4fb4d7f45d1cf-6188b72b7caso6840970a12.2 for ; Tue, 09 Sep 2025 16:08:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1757459291; x=1758064091; 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=b4dJXMoj9hNhvcq7Ntx53qnd3evSGCVrLzPIi/hxIhk=; b=e7UNgHTZ7CgHP3fsKbrHhSTX1hq0c8/uZIiZX3M3DuBTY1cPc6XjwOcLNrLqNBlNwn JM7ckHaP8tVklh97GBspgokFAwKCtLHBEweC1UPDv9a/0N3vm1vyTWWzr7OoiwXxEd6J qYx/xq5iKGNnePWyVhfP4pB3zsQgtIbt/Aeb1Y+lwtkxIwhClsjwrV85Ir0lfIkmipin 3O9E88NB7stacnd1jJRFx8IL529uCK75Q64fzyz38VfNSaJPYZfNwYREoPiXLwGyMPBG sr+FDwV8PcNnnXEvTF17mz3DCjFCoh724P18GpatxT7nMYbNDB5E7duTbGMcXk3f6bIO B2+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1757459291; x=1758064091; 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=b4dJXMoj9hNhvcq7Ntx53qnd3evSGCVrLzPIi/hxIhk=; b=gyt6ayk+7LtLQDN3+UZlrdt2fbaH/6JqGnfCiknA+RByJNEozf62lm0m1avdGx87YC BISxiY9oiCXoOFRvWH6FM/FHce8EzBpJtwqtJ2pDhOMJYTocB75gFSxMUZht4XiDOOAH A451nERdhmxN7wY760KUAK+ZVzez63Bg5LnE7I7H7UZrYjUp039cbV4nTK1fDGxQPwG6 1/Xa5/BslKryXjiDJ11lVVlWQd9KfiN1mtvrlNdTtqzI1ZUrDI/XMdeicXFXRxY+ynAw +F97/AYNm4I/LmeoJE7jzb3bWccyKobieNU+47kEmFUjzv2AAX4ewI3KJXWzwCMVMimc gRIQ== X-Forwarded-Encrypted: i=1; AJvYcCWdGDulukMhZLkm+p8lUVxx3ElBBaSHk6fVT426Xfd9QsPJKRQMr73uolAe6pfl9fhZfF62n+IiOdaQeAfA@lists.postgresql.org X-Gm-Message-State: AOJu0YybB9lS8pHyErGWsTJYkzxwUPPdMPvU6PYKMyCBkA3nYUpAWCwa Q38kQMj89wevu0qqeG511mvfMV8WNVW3qg+34RKBFPFki48Z07y/EBq9nprskguB03SlOXbnSw8 tQmSfFfiB1UFO8TeVd0JpzY6kQGo+3c3lFjK9 X-Gm-Gg: ASbGncudH9hMiH1NTQbuv6YWTzM1r+4XQKRD4j8DBnqqAtp35cz+qfzmN6t5jXSSMGH b9psWhuFMnZM1JHSDwdScE8wPd/Ajpdt+3vrC7TPuUb1fgwLwgCkAZAyoFNwmDwzLjjjGUDca81 903p5sMsiK19Jxh08+PerczqeqB3nLmKhMSFoS8bJ3beQtWAgrceH/TSlf1+Hlvc2Yy/DNfhkPs 7wjkUCD+soJO12++efqZuyCUkaoPcTqVkkYCc0= X-Google-Smtp-Source: AGHT+IGSTIF/EUz/9gWIBhPsAK07Ju7bP6pQDjF9pEHTUOUynuAqdSezN+prjlsui7sArBeT7AosPveQ9XBN24Nen6E= X-Received: by 2002:a05:6402:358f:b0:628:bee2:b31d with SMTP id 4fb4d7f45d1cf-628bee2b6e7mr8567367a12.3.1757459290925; Tue, 09 Sep 2025 16:08:10 -0700 (PDT) MIME-Version: 1.0 References: <87DD95AA-274F-4F4F-BAD9-7738E5B1F905@yandex-team.ru> In-Reply-To: From: Melanie Plageman Date: Tue, 9 Sep 2025 19:07:58 -0400 X-Gm-Features: AS18NWAYhkB5uh4NbmyIWrZQGwQacug5uyOjD8UwgkXH6d1CTE_hJ-sHklFhVEA Message-ID: Subject: Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) To: Robert Haas Cc: Andres Freund , Kirill Reshke , Andrey Borodin , PostgreSQL Hackers , Heikki Linnakangas Content-Type: multipart/mixed; boundary="000000000000bebfe1063e66606b" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000bebfe1063e66606b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the review! I've made the changes to comments and minor fixes you suggested in attached v13 and have limited my inline responses to areas where further discussion is required. On Tue, Sep 9, 2025 at 3:26=E2=80=AFPM Robert Haas = wrote: > > 0003. What you've done here with xl_heap_prune.flags is kind of > horrifying. The problem is that, while you've added code explaining > that VISIBILITYMAP_ALL_{VISIBLE,FROZEN} are honorary XLHP flags, > nobody who isn't looking directly at that comment is going to > understand the muddling of the two namespaces. I would suggest not > doing this, even if it means defining redundant constants and writing > technically-unnecessary code to translate between them. Fair. I've introduced new XLHP flags in attached v13. Hopefully it puts an end to the horror. > 0004. It is not clear to me why you need to get > log_heap_prune_and_freeze to do the work here. Why can't > log_newpage_buffer get the job done already? Well, I need something to emit the changes to the VM. I'm eliminating all users of xl_heap_visible. Empty pages are the ones that benefit the least from switching from xl_heap_visible -> xl_heap_prune. But, if I don't transition them, we have to maintain all the xl_heap_visible code (including visibilitymap_set() in its long form). As for log_newpage_buffer(), I could keep it if you think it is too confusing to change log_heap_prune_and_freeze()'s API (by passing force_heap_fpi) to handle this case, I can leave log_newpage_buffer() there and then call log_heap_prune_and_freeze(). I just thought it seemed simple to avoid emitting the new page record and the VM update record, so why not -- but I don't have strong feelings. > 0005. It looks a little curious that you delete the > identify-corruption logic from the end of the if-nest and add it to > the beginning. Ceteris paribus, you'd expect that to be worse, since > corruption is a rare case. On master, the two corruption cases are sandwiched between the normal VM set cases. And I actually think doing it this way is brittle. If you put the cases which set the VM first, you have to have completely bulletproof the if statements guarding them to foreclose any possible corruption case from entering because otherwise you will overwrite the corruption you then try to detect. But, specifically, from a performance perspective: I think moving up the third case doesn't matter because the check is so che= ap: else if (presult.lpdead_items > 0 && PageIsAllVisible(page)) And as for moving up the second case (the other corruption case), the non-cheap thing it does is call visibilitymap_get_status() else if (all_visible_according_to_vm && !PageIsAllVisible(page) && visibilitymap_get_status(vacrel->rel, blkno, &vmbuffer) !=3D 0= ) But once you call visibilitymap_get_status() once, assuming there is no corruption and you need to go set the VM, you've already got that page of the VM read, so it is probably pretty cheap. Overall, I didn't think this would add noticeable overhead or many wasted operations. And I thought that reorganizing the code improved clarity as well as decreased the likelihood of bugs from insufficiently guarding positive cases against corrupt pages and overwriting corruption instead of detecting it. If we're really worried about it from a performance perspective, I could add an extra test at the top of identify_and_fix_vm_corruption() that dumps out early if (!all_visible_according_to_vm && presult.all_visible). > + * If the heap page is all-visible but the VM bit is > not set, we don't > + * need to dirty the heap page. However, if checksums > are enabled, we > + * do need to make sure that the heap page is dirtied > before passing > + * it to visibilitymap_set(), because it may be logged. > */ > - PageSetAllVisible(page); > - MarkBufferDirty(buf); > + if (!PageIsAllVisible(page) || XLogHintBitIsNeeded()) > + { > + PageSetAllVisible(page); > + MarkBufferDirty(buf); > + } > > I really hate this. Maybe you're going to argue that it's not the job > of this patch to fix the awfulness here, but surely marking a buffer > dirty in case some other function decides to WAL-log it is a > ridiculous plan. Right, it isn't pretty. But I don't quite see what the alternative is. We need to mark the buffer dirty before setting the LSN. We could perhaps rewrite visibilitymap_set()'s API to return the LSN of the xl_heap_visible record and stamp it on the heap buffer ourselves. But 1) I think visibilitymap_set() purposefully conceals its WAL logging ways from the caller and propagating that info back up starts to make the API messy in another way and 2) I'm a bit loath to make big changes to visibilitymap_set() right now since my patch set eventually resolves this by putting the changes to the VM and heap page in the same WAL record. - Melanie --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Disposition: attachment; filename="v13-0004-Use-xl_heap_prune-record-for-setting-empty-pages.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy3y4 RnJvbSA2ZDlhNDUwMjMxOWUxMjVkNGZhNTM1MGNmNjMwMTk0MjdhZmJhMDY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjE5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDQvMjBdIFVzZSB4bF9oZWFwX3BydW5lIHJlY29yZCBmb3Igc2V0dGluZyBlbXB0 eSBwYWdlcwogYWxsLXZpc2libGUKCkFzIHBhcnQgb2YgYSBwcm9qZWN0IHRvIGVsaW1pbmF0ZSB4 bF9oZWFwX3Zpc2libGUgcmVjb3JkcywgZWxpbWluYXRlCnRoZWlyIHVzYWdlIGluIHBoYXNlIEkg dmFjdXVtIG9mIGVtcHR5IHBhZ2VzLgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5l aGVhcC5jICB8IDE0ICsrKysrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YyB8IDU3ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaCAgICAgICAgICB8ICAxICsKIDMgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygr KSwgMjMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwppbmRleCA2 ODBjMDU2MjMyMi4uMzQzYWI1NWU1MjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j CkBAIC04MzYsNiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRl c3RfeGlkX3JlbW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24s IGJ1ZmZlciwKKwkJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCQkgIEludmFsaWRCdWZmZXIsIDAs IGZhbHNlLAogCQkJCQkJCQkJICBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIHRydWUsIHJlYXNv biwKQEAgLTIwNTUsNiArMjA1Niw5IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZy ZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIGNhc2UsIHZtYnVmZmVyIHNob3VsZCBhbHJl YWR5IGhhdmUgYmVlbiB1cGRhdGVkIGFuZCBtYXJrZWQgZGlydHkgYW5kIHNob3VsZAogICogc3Rp bGwgYmUgcGlubmVkIGFuZCBsb2NrZWQuCiAgKgorICogZm9yY2VfaGVhcF9mcGkgaW5kaWNhdGVz IHRoYXQgYSBmdWxsIHBhZ2UgaW1hZ2Ugb2YgdGhlIGhlYXAgYmxvY2sgc2hvdWxkIGJlCisgKiBm b3JjZWQuCisgKgogICogc2V0X3BkX2FsbF92aXMgaW5kaWNhdGVzIHRoYXQgd2Ugc2V0IFBEX0FM TF9WSVNJQkxFIGFuZCB0aHVzIHNob3VsZCB1cGRhdGUKICAqIHRoZSBwYWdlIExTTiB3aGVuIGNo ZWNrc3Vtcy93YWxfbG9nX2hpbnRzIGFyZSBlbmFibGVkIGV2ZW4gaWYgd2UgZGlkIG5vdAogICog cHJ1bmUgb3IgZnJlZXplIHR1cGxlcyBvbiB0aGUgcGFnZS4KQEAgLTIwNjUsNiArMjA2OSw3IEBA IGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxl cywKICAqLwogdm9pZAogbG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgYm9vbCBmb3JjZV9oZWFwX2ZwaSwKIAkJCQkJCSAg QnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICB1aW50OCB2bWZsYWdzLAogCQkJCQkJICBib29sIHNl dF9wZF9hbGxfdmlzLApAQCAtMjA5NiwxMyArMjEwMSwxNiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRf ZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJcmVnYnVmX2ZsYWdz ID0gUkVHQlVGX1NUQU5EQVJEOwogCisJaWYgKGZvcmNlX2hlYXBfZnBpKQorCQlyZWdidWZfZmxh Z3MgfD0gUkVHQlVGX0ZPUkNFX0lNQUdFOworCiAJLyoKIAkgKiBXZSBjYW4gYXZvaWQgYW4gRlBJ IGlmIHRoZSBvbmx5IG1vZGlmaWNhdGlvbiB3ZSBhcmUgbWFraW5nIHRvIHRoZSBoZWFwCiAJICog cGFnZSBpcyB0byBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIGNoZWNrc3Vtcy93YWxfbG9nX2hpbnRz IGFyZSBkaXNhYmxlZC4KIAkgKi8KLQlpZiAoIWRvX3BydW5lICYmCi0JCW5mcm96ZW4gPT0gMCAm JgotCQkoIXNldF9wZF9hbGxfdmlzIHx8ICFYTG9nSGludEJpdElzTmVlZGVkKCkpKQorCWVsc2Ug aWYgKCFkb19wcnVuZSAmJgorCQkJIG5mcm96ZW4gPT0gMCAmJgorCQkJICghc2V0X3BkX2FsbF92 aXMgfHwgIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkpCiAJCXJlZ2J1Zl9mbGFncyB8PSBSRUdCVUZf Tk9fSU1BR0U7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFj dXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDUx MDY3MjY0MDA0Li5hMWNkYWFlYmI1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwpAQCAtMTg3NywzMyArMTg3Nyw0OSBAQCBsYXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIgYmxrbm8sCiAJCSAqLwogCQlpZiAo IVBhZ2VJc0FsbFZpc2libGUocGFnZSkpCiAJCXsKKwkJCXVpbnQ4CQluZXdfdm1iaXRzID0gVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJVklTSUJJTElUWU1BUF9BTExfRlJPWkVOOwor CisJCQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNhbCBzZWN0aW9uICov CisJCQlMb2NrQnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCiAJCQlT VEFSVF9DUklUX1NFQ1RJT04oKTsKIAotCQkJLyogbWFyayBidWZmZXIgZGlydHkgYmVmb3JlIHdy aXRpbmcgYSBXQUwgcmVjb3JkICovCisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKIAkJCU1h cmtCdWZmZXJEaXJ0eShidWYpOwogCi0JCQkvKgotCQkJICogSXQncyBwb3NzaWJsZSB0aGF0IGFu b3RoZXIgYmFja2VuZCBoYXMgZXh0ZW5kZWQgdGhlIGhlYXAsCi0JCQkgKiBpbml0aWFsaXplZCB0 aGUgcGFnZSwgYW5kIHRoZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UgZHVlCi0JCQkgKiB0 byBhbiBFUlJPUi4gIFNpbmNlIGhlYXAgZXh0ZW5zaW9uIGlzIG5vdCBXQUwtbG9nZ2VkLCByZWNv dmVyeQotCQkJICogbWlnaHQgdHJ5IHRvIHJlcGxheSBvdXIgcmVjb3JkIHNldHRpbmcgdGhlIHBh Z2UgYWxsLXZpc2libGUgYW5kCi0JCQkgKiBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlh bGl6ZWQsIHdoaWNoIHdpbGwgY2F1c2UgYSBQQU5JQy4KLQkJCSAqIFRvIHByZXZlbnQgdGhhdCwg Y2hlY2sgd2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiBwcmV2aW91c2x5Ci0JCQkgKiBXQUwtbG9n Z2VkLCBhbmQgaWYgbm90LCBkbyB0aGF0IG5vdy4KLQkJCSAqLwotCQkJaWYgKFJlbGF0aW9uTmVl ZHNXQUwodmFjcmVsLT5yZWwpICYmCi0JCQkJUGFnZUdldExTTihwYWdlKSA9PSBJbnZhbGlkWExv Z1JlY1B0cikKLQkJCQlsb2dfbmV3cGFnZV9idWZmZXIoYnVmLCB0cnVlKTsKKwkJCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCisJCQkJCQkJCQkgdm1idWZmZXIs IG5ld192bWJpdHMpOworCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNyZWwtPnJlbCkpCisJ CQl7CisJCQkJLyoKKwkJCQkgKiBJdCdzIHBvc3NpYmxlIHRoYXQgYW5vdGhlciBiYWNrZW5kIGhh cyBleHRlbmRlZCB0aGUgaGVhcCwKKwkJCQkgKiBpbml0aWFsaXplZCB0aGUgcGFnZSwgYW5kIHRo ZW4gZmFpbGVkIHRvIFdBTC1sb2cgdGhlIHBhZ2UKKwkJCQkgKiBkdWUgdG8gYW4gRVJST1IuICBT aW5jZSBoZWFwIGV4dGVuc2lvbiBpcyBub3QgV0FMLWxvZ2dlZCwKKwkJCQkgKiByZWNvdmVyeSBt aWdodCB0cnkgdG8gcmVwbGF5IG91ciByZWNvcmQgc2V0dGluZyB0aGUgcGFnZQorCQkJCSAqIGFs bC12aXNpYmxlIGFuZCBmaW5kIHRoYXQgdGhlIHBhZ2UgaXNuJ3QgaW5pdGlhbGl6ZWQsIHdoaWNo CisJCQkJICogd2lsbCBjYXVzZSBhIFBBTklDLiBUbyBwcmV2ZW50IHRoYXQsIGlmIHRoZSBwYWdl IGhhc24ndAorCQkJCSAqIGJlZW4gcHJldmlvdXNseSBXQUwtbG9nZ2VkLCBmb3JjZSBhIGhlYXAg RlBJLgorCQkJCSAqLworCQkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWws IGJ1ZiwKKwkJCQkJCQkJCQkgIFBhZ2VHZXRMU04ocGFnZSkgPT0gSW52YWxpZFhMb2dSZWNQdHIs CisJCQkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgIG5ld192bWJpdHMsCisJCQkJCQkJ CQkJICB0cnVlLAorCQkJCQkJCQkJCSAgSW52YWxpZFRyYW5zYWN0aW9uSWQsCisJCQkJCQkJCQkJ ICBmYWxzZSwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJCQkJICBOVUxMLCAwLAorCQkJCQkJ CQkJCSAgTlVMTCwgMCwKKwkJCQkJCQkJCQkgIE5VTEwsIDAsCisJCQkJCQkJCQkJICBOVUxMLCAw KTsKKwkJCX0KIAotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQl2aXNpYmlsaXR5bWFw X3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRy LAotCQkJCQkJCSAgdm1idWZmZXIsIEludmFsaWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklT SUJJTElUWU1BUF9BTExfVklTSUJMRSB8Ci0JCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9a RU4pOwogCQkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCQkvKiBDb3VudCB0aGUgbmV3bHkgYWxs LWZyb3plbiBwYWdlcyBmb3IgbG9nZ2luZyAqLworCQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfVU5MT0NLKTsKKworCQkJLyogQ291bnQgdGhlIG5ld2x5IGFsbC1mcm96ZW4gcGFn ZXMgZm9yIGxvZ2dpbmcuICovCiAJCQl2YWNyZWwtPnZtX25ld192aXNpYmxlX3BhZ2VzKys7CiAJ CQl2YWNyZWwtPnZtX25ld192aXNpYmxlX2Zyb3plbl9wYWdlcysrOwogCQl9CkBAIC0yOTI1LDYg KzI5NDEsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9j a051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlpZiAoUmVsYXRpb25OZWVkc1dBTCh2YWNy ZWwtPnJlbCkpCiAJewogCQlsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKHZhY3JlbC0+cmVsLCBi dWZmZXIsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgdm1idWZmZXIsCiAJCQkJCQkJCSAg dm1mbGFncywKIAkJCQkJCQkJICBzZXRfcGRfYWxsX3ZpcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAppbmRleCAx MzkzNGNiN2RjNi4uN2VjMjcwZmVlZDAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAgLTM5NCw2ICszOTQs NyBAQCBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShCdWZmZXIgYnVmZmVyLCBi b29sIGxwX3RydW5jYXRlX29ubHksCiAJCQkJCQkJCQlPZmZzZXROdW1iZXIgKm5vd3VudXNlZCwg aW50IG51bnVzZWQpOwogZXh0ZXJuIHZvaWQgaGVhcF9nZXRfcm9vdF90dXBsZXMoUGFnZSBwYWdl LCBPZmZzZXROdW1iZXIgKnJvb3Rfb2Zmc2V0cyk7CiBleHRlcm4gdm9pZCBsb2dfaGVhcF9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQkJ ICBib29sIGZvcmNlX2hlYXBfZnBpLAogCQkJCQkJCQkJICBCdWZmZXIgdm1idWZmZXIsCiAJCQkJ CQkJCQkgIHVpbnQ4IHZtZmxhZ3MsCiAJCQkJCQkJCQkgIGJvb2wgc2V0X3BkX2FsbF92aXMsCi0t IAoyLjQzLjAKCg== --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Disposition: attachment; filename="v13-0001-Eliminate-xl_heap_visible-in-COPY-FREEZE.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy3m1 RnJvbSA1OGYwZTYyOGU5MDE3NjY2OTdiY2JiZmJhZWI3YWJlNjg1ZjIzZDU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDE3IEp1biAyMDI1IDE3OjIyOjEwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgaW4gQ09QWSBGUkVFWkUK Ckluc3RlYWQgb2YgZW1pdHRpbmcgYSBzZXBhcmF0ZSBXQUwgcmVjb3JkIGZvciBzZXR0aW5nIHRo ZSBWTSBiaXRzIGluCnhsX2hlYXBfdmlzaWJsZSwgc3BlY2lmeSB0aGUgY2hhbmdlcyB0byBtYWtl IHRvIHRoZSBWTSBibG9jayBpbiB0aGUKeGxfaGVhcF9tdWx0aV9pbnNlcnQgcmVjb3JkIGluc3Rl YWQuCgpUaGlzIGhhbHZlcyB0aGUgbnVtYmVyIG9mIFdBTCByZWNvcmRzIGVtaXR0ZWQgYnkgQ09Q WSBGUkVFWkUuCgpBdXRob3I6IE1lbGFuaWUgUGxhZ2VtYW4gPG1lbGFuaWVwbGFnZW1hbkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9iZXJ0bWhhYXNAZ21haWwuY29tPgpS ZXZpZXdlZC1ieTogQW5kcmVzIEZyZXVuZCA8YW5kcmVzQGFuYXJhemVsLmRlPgpSZXZpZXdlZC1i eTogS2lyaWxsIFJlc2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0 cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURo M1ZNaHA4LVY3U09MeGRLOS1nJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYyAgICAgICAgfCA0NCArKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jICAgfCA1NCArKysrKysrKysrKysrKysrKysrLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jIHwgNjcgKysrKysrKysrKysr KysrKysrKysrKysrLQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgIHwg IDUgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggICAgICB8ICAyICsKIDUg ZmlsZXMgY2hhbmdlZCwgMTU0IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKaW5kZXggNGM1YWUyMDVhN2EuLmM4Y2Q5ZDIyNzI2IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYwpAQCAtMjQ2Niw3ICsyNDY2LDExIEBAIGhlYXBfbXVsdGlfaW5z ZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxl cywKIAkJc3RhcnRpbmdfd2l0aF9lbXB0eV9wYWdlID0gUGFnZUdldE1heE9mZnNldE51bWJlcihw YWdlKSA9PSAwOwogCiAJCWlmIChzdGFydGluZ193aXRoX2VtcHR5X3BhZ2UgJiYgKG9wdGlvbnMg JiBIRUFQX0lOU0VSVF9GUk9aRU4pKQorCQl7CiAJCQlhbGxfZnJvemVuX3NldCA9IHRydWU7CisJ CQkvKiBMb2NrIHRoZSB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcgdGhlIGNyaXRpY2FsIHNlY3Rp b24gKi8KKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xVU0lWRSk7CisJ CX0KIAogCQkvKiBOTyBFUkVQT1JUKEVSUk9SKSBmcm9tIGhlcmUgdGlsbCBjaGFuZ2VzIGFyZSBs b2dnZWQgKi8KIAkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CkBAIC0yNTA2LDcgKzI1MTAsOCBAQCBo ZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90 cywgaW50IG50dXBsZXMsCiAJCSAqIGdvaW5nIHRvIGFkZCBmdXJ0aGVyIGZyb3plbiByb3dzIHRv IGl0LgogCQkgKgogCQkgKiBJZiB3ZSdyZSBvbmx5IGFkZGluZyBhbHJlYWR5IGZyb3plbiByb3dz IHRvIGEgcHJldmlvdXNseSBlbXB0eQotCQkgKiBwYWdlLCBtYXJrIGl0IGFzIGFsbC12aXNpYmxl LgorCQkgKiBwYWdlLCBtYXJrIGl0IGFzIGFsbC1mcm96ZW4gYW5kIHVwZGF0ZSB0aGUgdmlzaWJp bGl0eSBtYXAuIFdlJ3JlCisJCSAqIGFscmVhZHkgaG9sZGluZyBhIHBpbiBvbiB0aGUgdm1idWZm ZXIuCiAJCSAqLwogCQlpZiAoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSAmJiAhKG9wdGlvbnMgJiBI RUFQX0lOU0VSVF9GUk9aRU4pKQogCQl7CkBAIC0yNTE3LDcgKzI1MjIsMTQgQEAgaGVhcF9tdWx0 aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVTbG90ICoqc2xvdHMsIGludCBu dHVwbGVzLAogCQkJCQkJCQl2bWJ1ZmZlciwgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTKTsKIAkJ fQogCQllbHNlIGlmIChhbGxfZnJvemVuX3NldCkKKwkJewogCQkJUGFnZVNldEFsbFZpc2libGUo cGFnZSk7CisJCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMocmVsYXRpb24sCisJCQkJCQkJCQkg QnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwKKwkJCQkJCQkJCSB2bWJ1ZmZlciwKKwkJCQkJ CQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCQkJCSBWSVNJQklMSVRZTUFQ X0FMTF9GUk9aRU4pOworCQl9CiAKIAkJLyoKIAkJICogWFhYIFNob3VsZCB3ZSBzZXQgUGFnZVNl dFBydW5hYmxlIG9uIHRoaXMgcGFnZSA/IFNlZSBoZWFwX2luc2VydCgpCkBAIC0yNTY1LDYgKzI1 NzcsMTIgQEAgaGVhcF9tdWx0aV9pbnNlcnQoUmVsYXRpb24gcmVsYXRpb24sIFR1cGxlVGFibGVT bG90ICoqc2xvdHMsIGludCBudHVwbGVzLAogCQkJeGxyZWMtPmZsYWdzID0gMDsKIAkJCWlmIChh bGxfdmlzaWJsZV9jbGVhcmVkKQogCQkJCXhscmVjLT5mbGFncyA9IFhMSF9JTlNFUlRfQUxMX1ZJ U0lCTEVfQ0xFQVJFRDsKKworCQkJLyoKKwkJCSAqIFdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJv dXQgaW5jbHVkaW5nIGEgY29uZmxpY3QgeGlkIGluIHRoZQorCQkJICogV0FMIHJlY29yZCBhcyBI RUFQX0lOU0VSVF9GUk9aRU4gaW50ZW50aW9uYWxseSB2aW9sYXRlcworCQkJICogdmlzaWJpbGl0 eSBydWxlcy4KKwkJCSAqLwogCQkJaWYgKGFsbF9mcm96ZW5fc2V0KQogCQkJCXhscmVjLT5mbGFn cyA9IFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQ7CiAKQEAgLTI2MjcsNyArMjY0NSwxMCBAQCBo ZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3QgKipzbG90 cywgaW50IG50dXBsZXMsCiAKIAkJCVhMb2dCZWdpbkluc2VydCgpOwogCQkJWExvZ1JlZ2lzdGVy RGF0YSh4bHJlYywgdHVwbGVkYXRhIC0gc2NyYXRjaC5kYXRhKTsKKwogCQkJWExvZ1JlZ2lzdGVy QnVmZmVyKDAsIGJ1ZmZlciwgUkVHQlVGX1NUQU5EQVJEIHwgYnVmZmxhZ3MpOworCQkJaWYgKGFs bF9mcm96ZW5fc2V0KQorCQkJCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCB2bWJ1ZmZlciwgMCk7CiAK IAkJCVhMb2dSZWdpc3RlckJ1ZkRhdGEoMCwgdHVwbGVkYXRhLCB0b3RhbGRhdGFsZW4pOwogCkBA IC0yNjM3LDI2ICsyNjU4LDE3IEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9u LCBUdXBsZVRhYmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJCXJlY3B0ciA9IFhMb2dJ bnNlcnQoUk1fSEVBUDJfSUQsIGluZm8pOwogCiAJCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7 CisJCQlpZiAoYWxsX2Zyb3plbl9zZXQpCisJCQl7CisJCQkJQXNzZXJ0KEJ1ZmZlcklzRGlydHko dm1idWZmZXIpKTsKKwkJCQlQYWdlU2V0TFNOKEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpLCByZWNw dHIpOworCQkJfQogCQl9CiAKIAkJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JCS8qCi0JCSAqIElm IHdlJ3ZlIGZyb3plbiBldmVyeXRoaW5nIG9uIHRoZSBwYWdlLCB1cGRhdGUgdGhlIHZpc2liaWxp dHltYXAuCi0JCSAqIFdlJ3JlIGFscmVhZHkgaG9sZGluZyBwaW4gb24gdGhlIHZtYnVmZmVyLgot CQkgKi8KIAkJaWYgKGFsbF9mcm96ZW5fc2V0KQotCQl7Ci0JCQkvKgotCQkJICogSXQncyBmaW5l IHRvIHVzZSBJbnZhbGlkVHJhbnNhY3Rpb25JZCBoZXJlIC0gdGhpcyBpcyBvbmx5IHVzZWQKLQkJ CSAqIHdoZW4gSEVBUF9JTlNFUlRfRlJPWkVOIGlzIHNwZWNpZmllZCwgd2hpY2ggaW50ZW50aW9u YWxseQotCQkJICogdmlvbGF0ZXMgdmlzaWJpbGl0eSBydWxlcy4KLQkJCSAqLwotCQkJdmlzaWJp bGl0eW1hcF9zZXQocmVsYXRpb24sIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciksIGJ1ZmZl ciwKLQkJCQkJCQkgIEludmFsaWRYTG9nUmVjUHRyLCB2bWJ1ZmZlciwKLQkJCQkJCQkgIEludmFs aWRUcmFuc2FjdGlvbklkLAotCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0JCX0KKwkJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJV RkZFUl9MT0NLX1VOTE9DSyk7CiAKIAkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCQlu ZG9uZSArPSBudGhpc3BhZ2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1feGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYwppbmRl eCBjZjg0MzI3NzkzOC4uZmFhN2M1NjFhOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL2hlYXBhbV94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3hsb2cuYwpAQCAtNTUxLDYgKzU1MSw3IEBAIGhlYXBfeGxvZ19tdWx0aV9pbnNlcnQoWExvZ1Jl YWRlclN0YXRlICpyZWNvcmQpCiAJaW50CQkJaTsKIAlib29sCQlpc2luaXQgPSAoWExvZ1JlY0dl dEluZm8ocmVjb3JkKSAmIFhMT0dfSEVBUF9JTklUX1BBR0UpICE9IDA7CiAJWExvZ1JlZG9BY3Rp b24gYWN0aW9uOworCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCiAJLyoKIAkg KiBJbnNlcnRpb24gZG9lc24ndCBvdmVyd3JpdGUgTVZDQyBkYXRhLCBzbyBubyBjb25mbGljdCBw cm9jZXNzaW5nIGlzCkBAIC01NzEsMTEgKzU3MiwxMSBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0 KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCWlmICh4bHJlYy0+ZmxhZ3MgJiBYTEhfSU5TRVJU X0FMTF9WSVNJQkxFX0NMRUFSRUQpCiAJewogCQlSZWxhdGlvbglyZWxuID0gQ3JlYXRlRmFrZVJl bGNhY2hlRW50cnkocmxvY2F0b3IpOwotCQlCdWZmZXIJCXZtYnVmZmVyID0gSW52YWxpZEJ1ZmZl cjsKIAogCQl2aXNpYmlsaXR5bWFwX3BpbihyZWxuLCBibGtubywgJnZtYnVmZmVyKTsKIAkJdmlz aWJpbGl0eW1hcF9jbGVhcihyZWxuLCBibGtubywgdm1idWZmZXIsIFZJU0lCSUxJVFlNQVBfVkFM SURfQklUUyk7CiAJCVJlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCQl2bWJ1ZmZlciA9IEludmFs aWRCdWZmZXI7CiAJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKIAl9CiAKQEAgLTY2Miw2 ICs2NjMsNTcgQEAgaGVhcF94bG9nX211bHRpX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29y ZCkKIAlpZiAoQnVmZmVySXNWYWxpZChidWZmZXIpKQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1 ZmZlcik7CiAKKwlidWZmZXIgPSBJbnZhbGlkQnVmZmVyOworCisJLyoKKwkgKiBOb3cgcmVhZCBh bmQgdXBkYXRlIHRoZSBWTSBibG9jay4KKwkgKgorCSAqIE5vdGUgdGhhdCB0aGUgaGVhcCByZWxh dGlvbiBtYXkgaGF2ZSBiZWVuIGRyb3BwZWQgb3IgdHJ1bmNhdGVkLCBsZWFkaW5nCisJICogdXMg dG8gc2tpcCB1cGRhdGluZyB0aGUgaGVhcCBibG9jayBkdWUgdG8gdGhlIExTTiBpbnRlcmxvY2su IEhvd2V2ZXIsCisJICogZXZlbiBpbiB0aGF0IGNhc2UsIGl0J3Mgc3RpbGwgc2FmZSB0byB1cGRh dGUgdGhlIHZpc2liaWxpdHkgbWFwLiBBbnkKKwkgKiBXQUwgcmVjb3JkIHRoYXQgY2xlYXJzIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgZG9lcyBzbyBiZWZvcmUgY2hlY2tpbmcKKwkgKiB0aGUgcGFn ZSBMU04sIHNvIGFueSBiaXRzIHRoYXQgbmVlZCB0byBiZSBjbGVhcmVkIHdpbGwgc3RpbGwgYmUK KwkgKiBjbGVhcmVkLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBsb2NrIG9uIHRoZSBoZWFwIHBh Z2Ugd2FzIGRyb3BwZWQgYWJvdmUuIEluIG5vcm1hbAorCSAqIG9wZXJhdGlvbiB0aGlzIHdvdWxk IG5ldmVyIGJlIHNhZmUgYmVjYXVzZSBhIGNvbmN1cnJlbnQgcXVlcnkgY291bGQKKwkgKiBtb2Rp ZnkgdGhlIGhlYXAgcGFnZSBhbmQgY2xlYXIgUERfQUxMX1ZJU0lCTEUgLS0gdmlvbGF0aW5nIHRo ZQorCSAqIGludmFyaWFudCB0aGF0IFBEX0FMTF9WSVNJQkxFIG11c3QgYmUgc2V0IGlmIHRoZSBj b3JyZXNwb25kaW5nIGJpdCBpbgorCSAqIHRoZSBWTSBpcyBzZXQuCisJICoKKwkgKiBJbiByZWNv dmVyeSwgd2UgZXhwZWN0IG5vIG90aGVyIHdyaXRlcnMsIHNvIHdyaXRpbmcgdG8gdGhlIFZNIHBh Z2UKKwkgKiB3aXRob3V0IGhvbGRpbmcgYSBsb2NrIG9uIHRoZSBoZWFwIHBhZ2UgaXMgY29uc2lk ZXJlZCBzYWZlIGVub3VnaC4gSXQKKwkgKiBpcyBkb25lIHRoaXMgd2F5IHdoZW4gcmVwbGF5aW5n IHhsX2hlYXBfdmlzaWJsZSByZWNvcmRzIChzZWUKKwkgKiBoZWFwX3hsb2dfdmlzaWJsZSgpKS4K KwkgKi8KKwlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCAmJgor CQlYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsIFJCTV9aRVJPX09OX0VS Uk9SLCBmYWxzZSwKKwkJCQkJCQkJCSAgJnZtYnVmZmVyKSA9PSBCTEtfTkVFRFNfUkVETykKKwl7 CisJCVBhZ2UJCXZtcGFnZSA9IEJ1ZmZlckdldFBhZ2Uodm1idWZmZXIpOworCQlSZWxhdGlvbgly ZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnkocmxvY2F0b3IpOworCisJCS8qIGluaXRpYWxp emUgdGhlIHBhZ2UgaWYgaXQgd2FzIHJlYWQgYXMgemVyb3MgKi8KKwkJaWYgKFBhZ2VJc05ldyh2 bXBhZ2UpKQorCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOworCisJCXZpc2liaWxpdHlt YXBfc2V0X3ZtYml0cyhyZWxuLCBibGtubywKKwkJCQkJCQkJIHZtYnVmZmVyLAorCQkJCQkJCQkg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8CisJCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9G Uk9aRU4pOworCisJCS8qCisJCSAqIEl0IGlzIG5vdCBwb3NzaWJsZSB0aGF0IHRoZSBWTSB3YXMg YWxyZWFkeSBzZXQgZm9yIHRoaXMgaGVhcCBwYWdlLAorCQkgKiBzbyB0aGUgdm1idWZmZXIgbXVz dCBoYXZlIGJlZW4gbW9kaWZpZWQgYW5kIG1hcmtlZCBkaXJ0eS4KKwkJICovCisJCUFzc2VydChC dWZmZXJJc0RpcnR5KHZtYnVmZmVyKSk7CisJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1 ZmZlciksIGxzbik7CisJCUZyZWVGYWtlUmVsY2FjaGVFbnRyeShyZWxuKTsKKwl9CisKKwlpZiAo QnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikpCisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIp OworCiAJLyoKIAkgKiBJZiB0aGUgcGFnZSBpcyBydW5uaW5nIGxvdyBvbiBmcmVlIHNwYWNlLCB1 cGRhdGUgdGhlIEZTTSBhcyB3ZWxsLgogCSAqIEFyYml0cmFyaWx5LCBvdXIgZGVmaW5pdGlvbiBv ZiAibG93IiBpcyBsZXNzIHRoYW4gMjAlLiBXZSBjYW4ndCBkbyBtdWNoCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKaW5kZXggNzMwNmMxNmYwNWMuLmFhNDhhNDM2MTA4IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw3ICsxNCw4IEBA CiAgKgkJdmlzaWJpbGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0 aGUgdmlzaWJpbGl0eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFn ZSBmb3Igc2V0dGluZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hl dGhlciBjb3JyZWN0IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1h cF9zZXQJIC0gc2V0IGEgYml0IGluIGEgcHJldmlvdXNseSBwaW5uZWQgcGFnZQorICoJCXZpc2li aWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlIGFu ZCBsb2cKKyAqCQl2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMgLSBzZXQgYml0KHMpIGluIGEgcGlu bmVkIHBhZ2UKICAqCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMgLSBnZXQgc3RhdHVzIG9mIGJp dHMKICAqCQl2aXNpYmlsaXR5bWFwX2NvdW50ICAtIGNvdW50IG51bWJlciBvZiBiaXRzIHNldCBp biB2aXNpYmlsaXR5IG1hcAogICoJCXZpc2liaWxpdHltYXBfcHJlcGFyZV90cnVuY2F0ZSAtCkBA IC0zMjEsNiArMzIyLDcwIEBAIHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tO dW1iZXIgaGVhcEJsaywgQnVmZmVyIGhlYXBCdWYsCiAJcmV0dXJuIHN0YXR1czsKIH0KIAorLyoK KyAqIFNldCBmbGFncyBpbiB0aGUgVk0gYmxvY2sgY29udGFpbmVkIGluIHRoZSBwYXNzZWQgaW4g dm1CdWYuCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBmb3IgY2FsbGVycyB3aGljaCBpbmNsdWRl IHRoZSBWTSBjaGFuZ2VzIGluIHRoZSBzYW1lIFdBTAorICogcmVjb3JkIGFzIHRoZSBtb2RpZmlj YXRpb25zIG9mIHRoZSBoZWFwIHBhZ2Ugd2hpY2ggcmVuZGVyZWQgaXQgYWxsLXZpc2libGUuCisg KiBDYWxsZXJzIHNlcGFyYXRlbHkgbG9nZ2luZyB0aGUgVk0gY2hhbmdlcyBzaG91bGQgaW52b2tl IHZpc2liaWxpdHltYXBfc2V0KCkKKyAqIGluc3RlYWQuCisgKgorICogQ2FsbGVyIG11c3QgaGF2 ZSBwaW5uZWQgYW5kIGV4Y2x1c2l2ZSBsb2NrZWQgdGhlIGNvcnJlY3QgYmxvY2sgb2YgdGhlIFZN IGluCisgKiB2bUJ1Zi4gVGhpcyBibG9jayBzaG91bGQgY29udGFpbiB0aGUgVk0gYml0cyBmb3Ig dGhlIGdpdmVuIGhlYXBCbGsuCisgKgorICogRHVyaW5nIG5vcm1hbCBvcGVyYXRpb24gKGkuZS4g bm90IHJlY292ZXJ5KSwgdGhpcyBzaG91bGQgYmUgY2FsbGVkIGluIGEKKyAqIGNyaXRpY2FsIHNl Y3Rpb24gd2hpY2ggYWxzbyBtYWtlcyBhbnkgbmVjZXNzYXJ5IGNoYW5nZXMgdG8gdGhlIGhlYXAg cGFnZQorICogYW5kLCBpZiByZWxldmFudCwgZW1pdHMgV0FMLgorICoKKyAqIENhbGxlciBpcyBy ZXNwb25zaWJsZSBmb3IgV0FMIGxvZ2dpbmcgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGJ1ZmZlciBh bmQgZm9yCisgKiBtYWtpbmcgYW55IGNoYW5nZXMgbmVlZGVkIHRvIHRoZSBhc3NvY2lhdGVkIGhl YXAgcGFnZS4gVGhpcyBpbmNsdWRlcworICogbWFpbnRhaW5pbmcgYW55IGludmFyaWFudHMgc3Vj aCBhcyBlbnN1cmluZyB0aGUgYnVmZmVyIGNvbnRhaW5pbmcgaGVhcEJsaworICogaXMgcGlubmVk IGFuZCBleGNsdXNpdmUgbG9ja2VkLgorICovCit1aW50OAordmlzaWJpbGl0eW1hcF9zZXRfdm1i aXRzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCSBCdWZmZXIgdm1C dWYsIHVpbnQ4IGZsYWdzKQoreworCUJsb2NrTnVtYmVyIG1hcEJsb2NrID0gSEVBUEJMS19UT19N QVBCTE9DSyhoZWFwQmxrKTsKKwl1aW50MzIJCW1hcEJ5dGUgPSBIRUFQQkxLX1RPX01BUEJZVEUo aGVhcEJsayk7CisJdWludDgJCW1hcE9mZnNldCA9IEhFQVBCTEtfVE9fT0ZGU0VUKGhlYXBCbGsp OworCVBhZ2UJCXBhZ2U7CisJdWludDgJICAgKm1hcDsKKwl1aW50OAkJc3RhdHVzOworCisjaWZk ZWYgVFJBQ0VfVklTSUJJTElUWU1BUAorCWVsb2coREVCVUcxLCAidm1fc2V0IGZsYWdzIDB4JTAy WCBmb3IgJXMgJWQiLAorCQkgZmxhZ3MsIFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbCksIGhl YXBCbGspOworI2VuZGlmCisKKwkvKiBDYWxsIGluIHNhbWUgY3JpdGljYWwgc2VjdGlvbiB3aGVy ZSBXQUwgaXMgZW1pdHRlZC4gKi8KKwlBc3NlcnQoSW5SZWNvdmVyeSB8fCBDcml0U2VjdGlvbkNv dW50ID4gMCk7CisKKwkvKiBGbGFncyBzaG91bGQgYmUgdmFsaWQuIEFsc28gbmV2ZXIgY2xlYXIg Yml0cyB3aXRoIHRoaXMgZnVuY3Rpb24gKi8KKwlBc3NlcnQoKGZsYWdzICYgVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKSA9PSBmbGFncyk7CisKKwkvKiBNdXN0IG5ldmVyIHNldCBhbGxfZnJvemVu IGJpdCB3aXRob3V0IGFsc28gc2V0dGluZyBhbGxfdmlzaWJsZSBiaXQgKi8KKwlBc3NlcnQoZmxh Z3MgIT0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKworCS8qIENoZWNrIHRoYXQgd2UgaGF2 ZSB0aGUgcmlnaHQgVk0gcGFnZSBwaW5uZWQgKi8KKwlpZiAoIUJ1ZmZlcklzVmFsaWQodm1CdWYp IHx8IEJ1ZmZlckdldEJsb2NrTnVtYmVyKHZtQnVmKSAhPSBtYXBCbG9jaykKKwkJZWxvZyhFUlJP UiwgIndyb25nIFZNIGJ1ZmZlciBwYXNzZWQgdG8gdmlzaWJpbGl0eW1hcF9zZXQiKTsKKworCUFz c2VydChCdWZmZXJJc0V4Y2x1c2l2ZUxvY2tlZCh2bUJ1ZikpOworCisJcGFnZSA9IEJ1ZmZlckdl dFBhZ2Uodm1CdWYpOworCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7CisK KwlzdGF0dXMgPSAobWFwW21hcEJ5dGVdID4+IG1hcE9mZnNldCkgJiBWSVNJQklMSVRZTUFQX1ZB TElEX0JJVFM7CisJaWYgKGZsYWdzICE9IHN0YXR1cykKKwl7CisJCW1hcFttYXBCeXRlXSB8PSAo ZmxhZ3MgPDwgbWFwT2Zmc2V0KTsKKwkJTWFya0J1ZmZlckRpcnR5KHZtQnVmKTsKKwl9CisKKwly ZXR1cm4gc3RhdHVzOworfQorCiAvKgogICoJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0 IHN0YXR1cyBvZiBiaXRzCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3Jk ZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwpp bmRleCA4MmI2MmM5NWRlNS4uYjQ4ZDdkYzFkMjQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVz Yy9oZWFwZGVzYy5jCkBAIC0xNiw2ICsxNiw3IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcGFt X3hsb2cuaCIKICNpbmNsdWRlICJhY2Nlc3Mvcm1ncmRlc2NfdXRpbHMuaCIKKyNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N0YW5kYnlkZWZz LmgiCiAKIC8qCkBAIC0zNTQsNiArMzU1LDEwIEBAIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYs IFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIm50dXBs ZXM6ICVkLCBmbGFnczogMHglMDJYIiwgeGxyZWMtPm50dXBsZXMsCiAJCQkJCQkgeGxyZWMtPmZs YWdzKTsKIAorCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfRlJPWkVOX1NFVCkK KwkJCWFwcGVuZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwKKwkJCQkJCQkg VklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTik7CisK IAkJaWYgKFhMb2dSZWNIYXNCbG9ja0RhdGEocmVjb3JkLCAwKSAmJiAhaXNpbml0KQogCQl7CiAJ CQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgb2Zmc2V0czoiKTsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv dmlzaWJpbGl0eW1hcC5oCmluZGV4IGJlMjFjNmRkMWEzLi5mYzcwNTZhOTFlYSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0zNyw2ICszNyw4IEBAIGV4dGVybiB1aW50OCB2aXNp YmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsCiAJCQkJCQkJICAgQnVmZmVyIHZtQnVmLAogCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgY3V0b2ZmX3hpZCwKIAkJCQkJCQkgICB1aW50OCBmbGFncyk7 CitleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgaGVhcEJsaywKKwkJCQkJCQkJCSAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7 CiBleHRlcm4gdWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxv Y2tOdW1iZXIgaGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5 bWFwX2NvdW50KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051 bWJlciAqYWxsX2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVw YXJlX3RydW5jYXRlKFJlbGF0aW9uIHJlbCwKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Disposition: attachment; filename="v13-0002-Make-heap_page_is_all_visible-independent-of-LVR.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy3r2 RnJvbSBhMGQ0OGVmN2JhMWIyOGMwODRhNmE1YmRlNGUyN2M2YWY2ZmI5ODIwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDE1OjQ4OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDIvMjBdIE1ha2UgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlIGluZGVwZW5kZW50 IG9mCiBMVlJlbFN0YXRlCgpGdXR1cmUgY29tbWl0cyB3aWxsIHVzZSB0aGlzIGZ1bmN0aW9uIGlu c2lkZSBvZiBwcnVuZWhlYXAuYyB3aGVyZSB3ZSBkbwpub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIExW UmVsU3RhdGUuIFdlIG9ubHkgbmVlZCBhIGZldyBwYXJhbWV0ZXJzIGZyb20KdGhlIExWUmVsU3Rh dGUsIHNvIGp1c3QgcGFzcyB0aG9zZSBpbiBleHBsaWNpdGx5LgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vZmxh dC9DQUFLUnVfWk13Nk5wZF9xbTJLTSUyQkZ3UTNjTU9NeDFEaDNWTWhwOC1WN1NPTHhkSzktZyU0 MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j IHwgNDggKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDMxIGlu c2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxh enkuYwppbmRleCA5ODFkOTM4MGE5Mi4uOGE4NGJkZmUwYTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKQEAgLTQ2Myw4ICs0NjMsMTEgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVt c19hZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVy ICoKIAkJCQkJCSAgIGludCBudW1fb2Zmc2V0cyk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX3Jl c2V0KExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCBkZWFkX2l0ZW1zX2NsZWFudXAo TFZSZWxTdGF0ZSAqdmFjcmVsKTsKLXN0YXRpYyBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJs ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25J ZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLCBib29sICphbGxfZnJvemVuKTsKK3N0YXRpYyBib29s IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCisJCQkJ CQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAorCQkJCQkJCQkJIGJvb2wgKmFsbF9mcm96 ZW4sCisJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJ CQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwogc3RhdGljIHZvaWQgdXBkYXRl X3JlbHN0YXRzX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCk7CiBzdGF0aWMgdm9pZCB2 YWN1dW1fZXJyb3JfY2FsbGJhY2sodm9pZCAqYXJnKTsKIHN0YXRpYyB2b2lkIHVwZGF0ZV92YWN1 dW1fZXJyb3JfaW5mbyhMVlJlbFN0YXRlICp2YWNyZWwsCkBAIC0yMDA5LDggKzIwMTIsOSBAQCBs YXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCiAJCUFzc2VydChwcmVzdWx0Lmxw ZGVhZF9pdGVtcyA9PSAwKTsKIAotCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNy ZWwsIGJ1ZiwKLQkJCQkJCQkJCSAgJmRlYnVnX2N1dG9mZiwgJmRlYnVnX2FsbF9mcm96ZW4pKQor CQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwgYnVmLAorCQkJCQkJ CQkJICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9mcm96ZW4sCisJCQkJ CQkJCQkgICZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpCiAJCQlBc3NlcnQoZmFsc2Up OwogCiAJCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CkBA IC0yOTEyLDggKzI5MTYsOCBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFj cmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAkgKiBlbWl0dGVkLgogCSAq LwogCUFzc2VydCghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7Ci0JaWYgKGhlYXBfcGFnZV9pc19h bGxfdmlzaWJsZSh2YWNyZWwsIGJ1ZmZlciwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJ CQkJICZhbGxfZnJvemVuKSkKKwlpZiAoaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKHZhY3JlbC0+ cmVsLCBidWZmZXIsIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluLAorCQkJCQkJCQkgJmFsbF9m cm96ZW4sICZ2aXNpYmlsaXR5X2N1dG9mZl94aWQsICZ2YWNyZWwtPm9mZm51bSkpCiAJewogCQl1 aW50OAkJZmxhZ3MgPSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFOwogCkBAIC0zNTk2LDEwICsz NjAwLDE4IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpCiB9CiAKIC8q Ci0gKiBDaGVjayBpZiBldmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpcyB2aXNpYmxlIHRv IGFsbCBjdXJyZW50IGFuZCBmdXR1cmUKLSAqIHRyYW5zYWN0aW9ucy4gQWxzbyByZXR1cm4gdGhl IHZpc2liaWxpdHlfY3V0b2ZmX3hpZCB3aGljaCBpcyB0aGUgaGlnaGVzdAotICogeG1pbiBhbW9u Z3N0IHRoZSB2aXNpYmxlIHR1cGxlcy4gIFNldCAqYWxsX2Zyb3plbiB0byB0cnVlIGlmIGV2ZXJ5 IHR1cGxlCi0gKiBvbiB0aGlzIHBhZ2UgaXMgZnJvemVuLgorICogQ2hlY2sgaWYgZXZlcnkgdHVw bGUgaW4gdGhlIGdpdmVuIHBhZ2UgaW4gYnVmIGlzIHZpc2libGUgdG8gYWxsIGN1cnJlbnQgYW5k CisgKiBmdXR1cmUgdHJhbnNhY3Rpb25zLgorICoKKyAqIE9sZGVzdFhtaW4gaXMgdXNlZCB0byBk ZXRlcm1pbmUgdmlzaWJpbGl0eS4KKyAqCisgKiBTZXRzICphbGxfZnJvemVuIHRvIHRydWUgaWYg ZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdlIGlzIGZyb3plbi4KKyAqCisgKiBTZXRzICp2aXNpYmls aXR5X2N1dG9mZl94aWQgdG8gdGhlIGhpZ2hlc3QgeG1pbiBhbW9uZ3N0IHRoZSB2aXNpYmxlIHR1 cGxlcy4KKyAqIEl0IGlzIG9ubHkgdmFsaWQgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuCisg KgorICogKmxvZ2dpbmdfb2ZmbnVtIHdpbGwgaGF2ZSB0aGUgT2Zmc2V0TnVtYmVyIG9mIHRoZSBj dXJyZW50IHR1cGxlIGJlaW5nCisgKiBwcm9jZXNzZWQgZm9yIHZhY3V1bSdzIGVycm9yIGNhbGxi YWNrIHN5c3RlbS4KICAqCiAgKiBUaGlzIGlzIGEgc3RyaXBwZWQgZG93biB2ZXJzaW9uIG9mIGxh enlfc2Nhbl9wcnVuZSgpLiAgSWYgeW91IGNoYW5nZQogICogYW55dGhpbmcgaGVyZSwgbWFrZSBz dXJlIHRoYXQgZXZlcnl0aGluZyBzdGF5cyBpbiBzeW5jLiAgTm90ZSB0aGF0IGFuCkBAIC0zNjA3 LDkgKzM2MTksMTEgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3JlbCkKICAq IGludHJvZHVjaW5nIG5ldyBzaWRlLWVmZmVjdHMgaGVyZS4KICAqLwogc3RhdGljIGJvb2wKLWhl YXBfcGFnZV9pc19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCito ZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJ IFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCSBib29sICphbGxfZnJvemVuLAogCQkJ CQkJIFRyYW5zYWN0aW9uSWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBib29sICph bGxfZnJvemVuKQorCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pCiB7CiAJUGFn ZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlCbG9ja051bWJlciBibG9ja25vID0gQnVm ZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKQEAgLTM2MzIsNyArMzY0Niw3IEBAIGhlYXBfcGFnZV9p c19hbGxfdmlzaWJsZShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBidWYsCiAJCSAqIFNldCB0 aGUgb2Zmc2V0IG51bWJlciBzbyB0aGF0IHdlIGNhbiBkaXNwbGF5IGl0IGFsb25nIHdpdGggYW55 CiAJCSAqIGVycm9yIHRoYXQgb2NjdXJyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGlzIHR1cGxlLgog CQkgKi8KLQkJdmFjcmVsLT5vZmZudW0gPSBvZmZudW07CisJCSpsb2dnaW5nX29mZm51bSA9IG9m Zm51bTsKIAkJaXRlbWlkID0gUGFnZUdldEl0ZW1JZChwYWdlLCBvZmZudW0pOwogCiAJCS8qIFVu dXNlZCBvciByZWRpcmVjdCBsaW5lIHBvaW50ZXJzIGFyZSBvZiBubyBpbnRlcmVzdCAqLwpAQCAt MzY1Niw5ICszNjcwLDkgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZh Y3JlbCwgQnVmZmVyIGJ1ZiwKIAogCQl0dXBsZS50X2RhdGEgPSAoSGVhcFR1cGxlSGVhZGVyKSBQ YWdlR2V0SXRlbShwYWdlLCBpdGVtaWQpOwogCQl0dXBsZS50X2xlbiA9IEl0ZW1JZEdldExlbmd0 aChpdGVtaWQpOwotCQl0dXBsZS50X3RhYmxlT2lkID0gUmVsYXRpb25HZXRSZWxpZCh2YWNyZWwt PnJlbCk7CisJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CiAKLQkJ c3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCB2YWNyZWwtPmN1dG9mZnMu T2xkZXN0WG1pbiwKKwkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBP bGRlc3RYbWluLAogCQkJCQkJCQkJCSBidWYpKQogCQl7CiAJCQljYXNlIEhFQVBUVVBMRV9MSVZF OgpAQCAtMzY3OSw3ICszNjkzLDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3Rh dGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJCQkJICovCiAJCQkJCXhtaW4gPSBIZWFwVHVwbGVI ZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7CiAJCQkJCWlmICghVHJhbnNhY3Rpb25JZFByZWNl ZGVzKHhtaW4sCi0JCQkJCQkJCQkJCSAgIHZhY3JlbC0+Y3V0b2Zmcy5PbGRlc3RYbWluKSkKKwkJ CQkJCQkJCQkJICAgT2xkZXN0WG1pbikpCiAJCQkJCXsKIAkJCQkJCWFsbF92aXNpYmxlID0gZmFs c2U7CiAJCQkJCQkqYWxsX2Zyb3plbiA9IGZhbHNlOwpAQCAtMzcxNCw3ICszNzI4LDcgQEAgaGVh cF9wYWdlX2lzX2FsbF92aXNpYmxlKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAl9 CQkJCQkJCS8qIHNjYW4gYWxvbmcgcGFnZSAqLwogCiAJLyogQ2xlYXIgdGhlIG9mZnNldCBpbmZv cm1hdGlvbiBvbmNlIHdlIGhhdmUgcHJvY2Vzc2VkIHRoZSBnaXZlbiBwYWdlLiAqLwotCXZhY3Jl bC0+b2ZmbnVtID0gSW52YWxpZE9mZnNldE51bWJlcjsKKwkqbG9nZ2luZ19vZmZudW0gPSBJbnZh bGlkT2Zmc2V0TnVtYmVyOwogCiAJcmV0dXJuIGFsbF92aXNpYmxlOwogfQotLSAKMi40My4wCgo= --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Disposition: attachment; filename="v13-0003-Eliminate-xl_heap_visible-from-vacuum-phase-III.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy3u3 RnJvbSBjMGFlNzQyMTUzMTlkY2QzZTc5Y2NkM2YxNTA5MWNmNDBjZjVhNjkyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQyOjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDMvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSUlJCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgeGxfaGVhcF92aXNpYmxlIHJl Y29yZCBmb3IgZWFjaCBwYWdlIHRoYXQKaXMgcmVuZGVyZWQgYWxsLXZpc2libGUgYnkgdmFjdXVt J3MgdGhpcmQgcGhhc2UsIGluY2x1ZGUgdGhlIHVwZGF0ZXMgdG8KdGhlIFZNIGluIHRoZSBhbHJl YWR5IGVtaXR0ZWQgeGxfaGVhcF9wcnVuZSByZWNvcmQuCgpUaGUgdmlzaWJpbGl0eW1hcCBiaXRz IGFyZSBzdG9yZWQgaW4gdGhlIGZsYWdzIG1lbWJlciBvZiB0aGUKeGxfaGVhcF9wcnVuZSByZWNv cmQuCgpUaGlzIGNhbiBkZWNyZWFzZSB0aGUgbnVtYmVyIG9mIG9mIFdBTCByZWNvcmRzIHZhY3V1 bSBwaGFzZSBJSUkgZW1pdHMgYnkKYXMgbXVjaCBhcyBoYWxmLgoKQXV0aG9yOiBNZWxhbmllIFBs YWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogS2lyaWxsIFJl c2hrZSA8cmVzaGtla2lyaWxsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1bmQg PGFuZHJlc0BhbmFyYXplbC5kZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9mbGF0 L0NBQUtSdV9aTXc2TnBkX3FtMktNJTJCRndRM2NNT014MURoM1ZNaHA4LVY3U09MeGRLOS1nJTQw bWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5j ICB8IDE2MCArKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jICAgIHwgIDcxICsrKysrKysrKystCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMgICB8IDE2NiArKysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmFj a2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYyB8ICAxMSArLQogc3JjL2luY2x1ZGUvYWNj ZXNzL2hlYXBhbS5oICAgICAgICAgICAgfCAgIDkgKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW1feGxvZy5oICAgICAgIHwgIDQwICsrKystLQogNiBmaWxlcyBjaGFuZ2VkLCAzNjIgaW5zZXJ0 aW9ucygrKSwgOTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX3hsb2cuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9n LmMKaW5kZXggZmFhN2M1NjFhOGEuLjgzYjM5YTkxMDJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV94bG9nLmMKQEAgLTM1LDcgKzM1LDkgQEAgaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShY TG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlCdWZmZXIJCWJ1ZmZlcjsKIAlSZWxGaWxlTG9jYXRv ciBybG9jYXRvcjsKIAlCbG9ja051bWJlciBibGtubzsKLQlYTG9nUmVkb0FjdGlvbiBhY3Rpb247 CisJQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJdWludDgJCXZtZmxhZ3MgPSAw OworCVNpemUJCWZyZWVzcGFjZSA9IDA7CiAKIAlYTG9nUmVjR2V0QmxvY2tUYWcocmVjb3JkLCAw LCAmcmxvY2F0b3IsIE5VTEwsICZibGtubyk7CiAJbWVtY3B5KCZ4bHJlYywgbWFpbmRhdGFwdHIs IFNpemVPZkhlYXBQcnVuZSk7CkBAIC01MCwxMSArNTIsMjIgQEAgaGVhcF94bG9nX3BydW5lX2Zy ZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAlBc3NlcnQoKHhscmVjLmZsYWdzICYgWExI UF9DTEVBTlVQX0xPQ0spICE9IDAgfHwKIAkJICAgKHhscmVjLmZsYWdzICYgKFhMSFBfSEFTX1JF RElSRUNUSU9OUyB8IFhMSFBfSEFTX0RFQURfSVRFTVMpKSA9PSAwKTsKIAorCWlmICh4bHJlYy5m bGFncyAmIFhMSFBfVk1fQUxMX1ZJU0lCTEUpCisJeworCQl2bWZsYWdzID0gVklTSUJJTElUWU1B UF9BTExfVklTSUJMRTsKKwkJaWYgKHhscmVjLmZsYWdzICYgWExIUF9WTV9BTExfRlJPWkVOKQor CQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47CisJfQorCiAJLyoKLQkgKiBX ZSBhcmUgYWJvdXQgdG8gcmVtb3ZlIGFuZC9vciBmcmVlemUgdHVwbGVzLiAgSW4gSG90IFN0YW5k YnkgbW9kZSwKLQkgKiBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgbm8gcXVlcmllcyBydW5uaW5nIGZv ciB3aGljaCB0aGUgcmVtb3ZlZCB0dXBsZXMKLQkgKiBhcmUgc3RpbGwgdmlzaWJsZSBvciB3aGlj aCBzdGlsbCBjb25zaWRlciB0aGUgZnJvemVuIHhpZHMgYXMgcnVubmluZy4KLQkgKiBUaGUgY29u ZmxpY3QgaG9yaXpvbiBYSUQgY29tZXMgYWZ0ZXIgeGxfaGVhcF9wcnVuZS4KKwkgKiBBZnRlciB4 bF9oZWFwX3BydW5lIGlzIHRoZSBvcHRpb25hbCBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgor CSAqCisJICogSW4gSG90IFN0YW5kYnkgbW9kZSwgd2UgbXVzdCBlbnN1cmUgdGhhdCB0aGVyZSBh cmUgbm8gcnVubmluZyBxdWVyaWVzCisJICogd2hpY2ggd291bGQgY29uZmxpY3Qgd2l0aCB0aGUg Y2hhbmdlcyBpbiB0aGlzIHJlY29yZC4gVGhhdCBtZWFucyB3ZQorCSAqIGNhbid0IHJlcGxheSB0 aGlzIHJlY29yZCBpZiBpdCByZW1vdmVzIHR1cGxlcyB0aGF0IGFyZSBzdGlsbCB2aXNpYmxlIHRv CisJICogdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5LCBmcmVlemUgdHVwbGVzIHdpdGggeGlk cyB0aGF0IGFyZSBzdGlsbAorCSAqIGNvbnNpZGVyZWQgcnVubmluZyBvbiB0aGUgc3RhbmRieSwg b3Igc2V0IGEgcGFnZSBhcyBhbGwtdmlzaWJsZSBpbiB0aGUKKwkgKiBWTSBpZiBpdCBpc24ndCBh bGwtdmlzaWJsZSB0byBhbGwgdHJhbnNhY3Rpb25zIG9uIHRoZSBzdGFuZGJ5LgogCSAqLwogCWlm ICgoeGxyZWMuZmxhZ3MgJiBYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OKSAhPSAwKQogCXsKQEAg LTcxLDEyICs4NCwxMiBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKQogCX0KIAogCS8qCi0JICogSWYgd2UgaGF2ZSBhIGZ1bGwtcGFnZSBpbWFnZSwgcmVz dG9yZSBpdCBhbmQgd2UncmUgZG9uZS4KKwkgKiBJZiB3ZSBoYXZlIGEgZnVsbC1wYWdlIGltYWdl IG9mIHRoZSBoZWFwIGJsb2NrLCByZXN0b3JlIGl0IGFuZCB3ZSdyZQorCSAqIGRvbmUgd2l0aCB0 aGUgaGVhcCBibG9jay4KIAkgKi8KLQlhY3Rpb24gPSBYTG9nUmVhZEJ1ZmZlckZvclJlZG9FeHRl bmRlZChyZWNvcmQsIDAsIFJCTV9OT1JNQUwsCi0JCQkJCQkJCQkJICAgKHhscmVjLmZsYWdzICYg WExIUF9DTEVBTlVQX0xPQ0spICE9IDAsCi0JCQkJCQkJCQkJICAgJmJ1ZmZlcik7Ci0JaWYgKGFj dGlvbiA9PSBCTEtfTkVFRFNfUkVETykKKwlpZiAoWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5k ZWQocmVjb3JkLCAwLCBSQk1fTk9STUFMLAorCQkJCQkJCQkJICAoeGxyZWMuZmxhZ3MgJiBYTEhQ X0NMRUFOVVBfTE9DSykgIT0gMCwKKwkJCQkJCQkJCSAgJmJ1ZmZlcikgPT0gQkxLX05FRURTX1JF RE8pCiAJewogCQlQYWdlCQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCQlPZmZzZXRO dW1iZXIgKnJlZGlyZWN0ZWQ7CkBAIC04OSw2ICsxMDIsOSBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJl ZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlTaXplCQlkYXRhbGVuOwogCQl4bGhwX2Zy ZWV6ZV9wbGFuICpwbGFuczsKIAkJT2Zmc2V0TnVtYmVyICpmcnpfb2Zmc2V0czsKKwkJYm9vbAkJ ZG9fcHJ1bmU7CisJCWJvb2wJCW1hcmtfYnVmZmVyX2RpcnR5OworCQlib29sCQlzZXRfaGVhcF9s c247CiAJCWNoYXIJICAgKmRhdGFwdHIgPSBYTG9nUmVjR2V0QmxvY2tEYXRhKHJlY29yZCwgMCwg JmRhdGFsZW4pOwogCiAJCWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGRh dGFwdHIsIHhscmVjLmZsYWdzLApAQCAtOTcsMTEgKzExMywxOCBAQCBoZWFwX3hsb2dfcHJ1bmVf ZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQkJCQkJCQkJCQkgICAmbmRlYWQsICZu b3dkZWFkLAogCQkJCQkJCQkJCQkgICAmbnVudXNlZCwgJm5vd3VudXNlZCk7CiAKKwkJZG9fcHJ1 bmUgPSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOworCQlzZXRf aGVhcF9sc24gPSBtYXJrX2J1ZmZlcl9kaXJ0eSA9IGRvX3BydW5lIHx8IG5wbGFucyA+IDA7CisK KwkJLyogRW5zdXJlIHRoZSByZWNvcmQgZG9lcyBzb21ldGhpbmcgKi8KKwkJQXNzZXJ0KGRvX3By dW5lIHx8IG5wbGFucyA+IDAgfHwKKwkJCSAgIHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOworCiAJCS8qCiAJCSAqIFVwZGF0ZSBhbGwgbGluZSBwb2ludGVycyBwZXIgdGhlIHJl Y29yZCwgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uCiAJCSAqIGlmIG5lZWRlZC4KIAkJICovCi0J CWlmIChucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwKQorCQlpZiAo ZG9fcHJ1bmUpCiAJCQloZWFwX3BhZ2VfcHJ1bmVfZXhlY3V0ZShidWZmZXIsCiAJCQkJCQkJCQko eGxyZWMuZmxhZ3MgJiBYTEhQX0NMRUFOVVBfTE9DSykgPT0gMCwKIAkJCQkJCQkJCXJlZGlyZWN0 ZWQsIG5yZWRpcmVjdGVkLApAQCAtMTM4LDM2ICsxNjEsMTI3IEBAIGhlYXBfeGxvZ19wcnVuZV9m cmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNvcmQpCiAJCS8qIFRoZXJlIHNob3VsZCBiZSBubyBt b3JlIGRhdGEgKi8KIAkJQXNzZXJ0KChjaGFyICopIGZyel9vZmZzZXRzID09IGRhdGFwdHIgKyBk YXRhbGVuKTsKIAorCQkvKgorCQkgKiBOb3cgc2V0IFBEX0FMTF9WSVNJQkxFLCBpZiByZXF1aXJl ZC4gV2UnbGwgb25seSBkbyB0aGlzIGlmIHdlIGFyZQorCQkgKiBhbHNvIGdvaW5nIHRvIHNldCBi aXRzIGluIHRoZSBWTSBsYXRlci4KKwkJICoKKwkJICogV2UgbXVzdCBuZXZlciBlbmQgdXAgd2l0 aCB0aGUgVk0gYml0IHNldCBhbmQgdGhlIHBhZ2UtbGV2ZWwKKwkJICogUERfQUxMX1ZJU0lCTEUg Yml0IGNsZWFyLiBJZiB0aGF0IHdlcmUgdG8gb2NjdXIsIGEgc3Vic2VxdWVudCBwYWdlCisJCSAq IG1vZGlmaWNhdGlvbiB3b3VsZCBmYWlsIHRvIGNsZWFyIHRoZSBWTSBiaXQuCisJCSAqLworCQlp ZiAoKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpICYmICFQYWdlSXNBbGxWaXNp YmxlKHBhZ2UpKQorCQl7CisJCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKKworCQkJLyoKKwkJ CSAqIElmIHRoZSBvbmx5IGNoYW5nZSB0byB0aGUgaGVhcCBwYWdlIGlzIHNldHRpbmcgUERfQUxM X1ZJU0lCTEUsCisJCQkgKiB3ZSBjYW4gYXZvaWQgc2V0dGluZyB0aGUgcGFnZSBMU04gdW5sZXNz IGNoZWNrc3VtcyBvcgorCQkJICogd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZC4KKwkJCSAqLwor CQkJc2V0X2hlYXBfbHNuID0gWExvZ0hpbnRCaXRJc05lZWRlZCgpID8gdHJ1ZSA6IHNldF9oZWFw X2xzbjsKKwkJCW1hcmtfYnVmZmVyX2RpcnR5ID0gdHJ1ZTsKKwkJfQorCiAJCS8qCiAJCSAqIE5v dGU6IHdlIGRvbid0IHdvcnJ5IGFib3V0IHVwZGF0aW5nIHRoZSBwYWdlJ3MgcHJ1bmFiaWxpdHkg aGludHMuCiAJCSAqIEF0IHdvcnN0IHRoaXMgd2lsbCBjYXVzZSBhbiBleHRyYSBwcnVuZSBjeWNs ZSB0byBvY2N1ciBzb29uLgogCQkgKi8KIAotCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0JCU1h cmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQlpZiAobWFya19idWZmZXJfZGlydHkpCisJCQlNYXJr QnVmZmVyRGlydHkoYnVmZmVyKTsKKwkJaWYgKHNldF9oZWFwX2xzbikKKwkJCVBhZ2VTZXRMU04o cGFnZSwgbHNuKTsKIAl9CiAKIAkvKgotCSAqIElmIHdlIHJlbGVhc2VkIGFueSBzcGFjZSBvciBs aW5lIHBvaW50ZXJzLCB1cGRhdGUgdGhlIGZyZWUgc3BhY2UgbWFwLgorCSAqIElmIHdlIHJlbGVh c2VkIGFueSBzcGFjZSBvciBsaW5lIHBvaW50ZXJzIG9yIHdpbGwgYmUgc2V0dGluZyBhIHBhZ2Ug aW4KKwkgKiB0aGUgdmlzaWJpbGl0eSBtYXAsIG1lYXN1cmUgdGhlIHBhZ2UncyBmcmVlc3BhY2Ug dG8gbGF0ZXIgdXBkYXRlIHRoZQorCSAqIGZyZWVzcGFjZSBtYXAuCisJICoKKwkgKiBFdmVuIGlm IHdlIGFyZSBqdXN0IHVwZGF0aW5nIHRoZSBWTSAoYW5kIHRodXMgbm90IGZyZWVpbmcgdXAgYW55 CisJICogc3BhY2UpLCB3ZSdsbCBzdGlsbCB1cGRhdGUgdGhlIEZTTSBmb3IgdGhpcyBwYWdlLiBT aW5jZSB0aGUgRlNNIGlzIG5vdAorCSAqIFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVy aXN0aWNhbGx5LCBpdCBlYXNpbHkgYmVjb21lcyBzdGFsZSBpbgorCSAqIHN0YW5kYnlzLiAgSWYg dGhlIHN0YW5kYnkgaXMgbGF0ZXIgcHJvbW90ZWQgYW5kIHJ1bnMgVkFDVVVNLCBpdCB3aWxsCisJ ICogc2tpcCB1cGRhdGluZyBpbmRpdmlkdWFsIGZyZWUgc3BhY2UgZmlndXJlcyBmb3IgcGFnZXMg dGhhdCBiZWNhbWUKKwkgKiBhbGwtdmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nIG9u IHRoZSB2YWN1dW0gbW9kZSwpIHdoaWNoIGlzCisJICogdHJvdWJsZXNvbWUgd2hlbiBGcmVlU3Bh Y2VNYXBWYWN1dW0gcHJvcGFnYXRlcyB0b28gb3B0aW1pc3RpYyBmcmVlCisJICogc3BhY2UgdmFs dWVzIHRvIHVwcGVyIEZTTSBsYXllcnM7IGxhdGVyIGluc2VydGVycyB0cnkgdG8gdXNlIHN1Y2gg cGFnZXMKKwkgKiBvbmx5IHRvIGZpbmQgb3V0IHRoYXQgdGhleSBhcmUgdW51c2FibGUuICBUaGlz IGNhbiBjYXVzZSBsb25nIHN0YWxscworCSAqIHdoZW4gdGhlcmUgYXJlIG1hbnkgc3VjaCBwYWdl cy4KKwkgKgorCSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBp ZGVhIGFib3V0IGEgcGFnZSB0aGF0IGlzCisJICogYmVjb21pbmcgYWxsLXZpc2libGUgb3IgYWxs LWZyb3plbi4KIAkgKgogCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFn ZSBiZWluZyBhcHBsaWVkLCBzaW5jZSB0aGUgRlNNCiAJICogZGF0YSBpcyBub3QgaW4gdGhlIHBh Z2UgYW55d2F5LgorCSAqCisJICogV2Ugd2FudCB0byBhdm9pZCBob2xkaW5nIGFuIGV4Y2x1c2l2 ZSBsb2NrIG9uIHRoZSBoZWFwIGJ1ZmZlciB3aGlsZQorCSAqIGRvaW5nIElPIChlaXRoZXIgb2Yg dGhlIEZTTSBvciB0aGUgVk0pLCBzbyB3ZSdsbCByZWxlYXNlIHRoZSBsb2NrIG9uCisJICogdGhl IGhlYXAgYnVmZmVyIGJlZm9yZSBkb2luZyBlaXRoZXIuCiAJICovCiAJaWYgKEJ1ZmZlcklzVmFs aWQoYnVmZmVyKSkKIAl7Ci0JCWlmICh4bHJlYy5mbGFncyAmIChYTEhQX0hBU19SRURJUkVDVElP TlMgfAotCQkJCQkJICAgWExIUF9IQVNfREVBRF9JVEVNUyB8Ci0JCQkJCQkgICBYTEhQX0hBU19O T1dfVU5VU0VEX0lURU1TKSkKLQkJewotCQkJU2l6ZQkJZnJlZXNwYWNlID0gUGFnZUdldEhlYXBG cmVlU3BhY2UoQnVmZmVyR2V0UGFnZShidWZmZXIpKTsKKwkJaWYgKCh4bHJlYy5mbGFncyAmIChY TEhQX0hBU19SRURJUkVDVElPTlMgfAorCQkJCQkJCVhMSFBfSEFTX0RFQURfSVRFTVMgfAorCQkJ CQkJCVhMSFBfSEFTX05PV19VTlVTRURfSVRFTVMpKSB8fAorCQkJdm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUykKKwkJCWZyZWVzcGFjZSA9IFBhZ2VHZXRIZWFwRnJlZVNwYWNlKEJ1 ZmZlckdldFBhZ2UoYnVmZmVyKSk7CiAKLQkJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsK KwkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCX0KIAotCQkJWExvZ1JlY29yZFBhZ2VX aXRoRnJlZVNwYWNlKHJsb2NhdG9yLCBibGtubywgZnJlZXNwYWNlKTsKKwkvKgorCSAqIE5vdyBy ZWFkIGFuZCB1cGRhdGUgdGhlIFZNIGJsb2NrLgorCSAqCisJICogTm90ZSB0aGF0IHRoZSBoZWFw IHJlbGF0aW9uIG1heSBoYXZlIGJlZW4gZHJvcHBlZCBvciB0cnVuY2F0ZWQsIGxlYWRpbmcKKwkg KiB1cyB0byBza2lwIHVwZGF0aW5nIHRoZSBoZWFwIGJsb2NrIGR1ZSB0byB0aGUgTFNOIGludGVy bG9jay4gSG93ZXZlciwKKwkgKiBldmVuIGluIHRoYXQgY2FzZSwgaXQncyBzdGlsbCBzYWZlIHRv IHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAuIEFueQorCSAqIFdBTCByZWNvcmQgdGhhdCBjbGVh cnMgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBkb2VzIHNvIGJlZm9yZSBjaGVja2luZworCSAqIHRo ZSBwYWdlIExTTiwgc28gYW55IGJpdHMgdGhhdCBuZWVkIHRvIGJlIGNsZWFyZWQgd2lsbCBzdGls bCBiZQorCSAqIGNsZWFyZWQuCisJICoKKwkgKiBOb3RlIHRoYXQgdGhlIGxvY2sgb24gdGhlIGhl YXAgcGFnZSB3YXMgZHJvcHBlZCBhYm92ZS4gSW4gbm9ybWFsCisJICogb3BlcmF0aW9uIHRoaXMg d291bGQgbmV2ZXIgYmUgc2FmZSBiZWNhdXNlIGEgY29uY3VycmVudCBxdWVyeSBjb3VsZAorCSAq IG1vZGlmeSB0aGUgaGVhcCBwYWdlIGFuZCBjbGVhciBQRF9BTExfVklTSUJMRSAtLSB2aW9sYXRp bmcgdGhlCisJICogaW52YXJpYW50IHRoYXQgUERfQUxMX1ZJU0lCTEUgbXVzdCBiZSBzZXQgaWYg dGhlIGNvcnJlc3BvbmRpbmcgYml0IGluCisJICogdGhlIFZNIGlzIHNldC4KKwkgKgorCSAqIElu IHJlY292ZXJ5LCB3ZSBleHBlY3Qgbm8gb3RoZXIgd3JpdGVycywgc28gd3JpdGluZyB0byB0aGUg Vk0gcGFnZQorCSAqIHdpdGhvdXQgaG9sZGluZyBhIGxvY2sgb24gdGhlIGhlYXAgcGFnZSBpcyBj b25zaWRlcmVkIHNhZmUgZW5vdWdoLiBJdAorCSAqIGlzIGRvbmUgdGhpcyB3YXkgd2hlbiByZXBs YXlpbmcgeGxfaGVhcF92aXNpYmxlIHJlY29yZHMgKHNlZQorCSAqIGhlYXBfeGxvZ192aXNpYmxl KCkpLgorCSAqLworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTICYmCisJ CVhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29yZCwgMSwKKwkJCQkJCQkJCSAgUkJN X1pFUk9fT05fRVJST1IsCisJCQkJCQkJCQkgIGZhbHNlLAorCQkJCQkJCQkJICAmdm1idWZmZXIp ID09IEJMS19ORUVEU19SRURPKQorCXsKKwkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2 bWJ1ZmZlcik7CisJCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKKwkJUmVsYXRpb24JcmVsbiA9IENy ZWF0ZUZha2VSZWxjYWNoZUVudHJ5KHJsb2NhdG9yKTsKKworCQkvKiBpbml0aWFsaXplIHRoZSBw YWdlIGlmIGl0IHdhcyByZWFkIGFzIHplcm9zICovCisJCWlmIChQYWdlSXNOZXcodm1wYWdlKSkK KwkJCVBhZ2VJbml0KHZtcGFnZSwgQkxDS1NaLCAwKTsKKworCQlvbGRfdm1iaXRzID0gdmlzaWJp bGl0eW1hcF9zZXRfdm1iaXRzKHJlbG4sIGJsa25vLCB2bWJ1ZmZlciwgdm1mbGFncyk7CisKKwkJ LyogT25seSBzZXQgVk0gcGFnZSBMU04gaWYgd2UgbW9kaWZpZWQgdGhlIHBhZ2UgKi8KKwkJaWYg KG9sZF92bWJpdHMgIT0gdm1mbGFncykKKwkJeworCQkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1i dWZmZXIpKTsKKwkJCVBhZ2VTZXRMU04oQnVmZmVyR2V0UGFnZSh2bWJ1ZmZlciksIGxzbik7CiAJ CX0KLQkJZWxzZQotCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOworCisJCUZyZWVGYWtl UmVsY2FjaGVFbnRyeShyZWxuKTsKIAl9CisKKwlpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikp CisJCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOworCisJaWYgKGZyZWVzcGFjZSA+IDAp CisJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVzcGFj ZSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDdlYmQyMmYw MGEzLi42ODBjMDU2MjMyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTIx LDYgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKKyNpbmNsdWRlICJhY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKICNpbmNsdWRlICJjb21tYW5kcy92YWN1dW0uaCIKICNp bmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCkBA IC04MzUsNiArODM2LDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJY29uZmxpY3RfeGlkID0gcHJzdGF0ZS5sYXRlc3Rf eGlkX3JlbW92ZWQ7CiAKIAkJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1 ZmZlciwKKwkJCQkJCQkJCSAgSW52YWxpZEJ1ZmZlciwgMCwgZmFsc2UsCiAJCQkJCQkJCQkgIGNv bmZsaWN0X3hpZCwKIAkJCQkJCQkJCSAgdHJ1ZSwgcmVhc29uLAogCQkJCQkJCQkJICBwcnN0YXRl LmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuLApAQCAtMjAzMCwxNCArMjAzMiwxOCBAQCBoZWFwX2xv Z19mcmVlemVfcGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKgog ICogVGhpcyBpcyB1c2VkIGZvciBzZXZlcmFsIGRpZmZlcmVudCBwYWdlIG1haW50ZW5hbmNlIG9w ZXJhdGlvbnM6CiAgKgotICogLSBQYWdlIHBydW5pbmcsIGluIFZBQ1VVTSdzIDFzdCBwYXNzIG9y IG9uIGFjY2VzczogU29tZSBpdGVtcyBhcmUKKyAqIC0gUGFnZSBwcnVuaW5nLCBpbiB2YWN1dW0g cGhhc2UgSSBvciBvbi1hY2Nlc3M6IFNvbWUgaXRlbXMgYXJlCiAgKiAgIHJlZGlyZWN0ZWQsIHNv bWUgbWFya2VkIGRlYWQsIGFuZCBzb21lIHJlbW92ZWQgYWx0b2dldGhlci4KICAqCi0gKiAtIEZy ZWV6aW5nOiBJdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4nLgorICogLSBGcmVlemluZzogRHVy aW5nIHZhY3V1bSBwaGFzZSBJLCBpdGVtcyBhcmUgbWFya2VkIGFzICdmcm96ZW4nCiAgKgotICog LSBWYWN1dW0sIDJuZCBwYXNzOiBJdGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJlIG1h cmtlZCBhcyB1bnVzZWQuCisgKiAtIFJlYXBpbmc6IER1cmluZyB2YWN1dW0gcGhhc2UgSUlJLCBp dGVtcyB0aGF0IGFyZSBhbHJlYWR5IExQX0RFQUQgYXJlCisgKiAgIG1hcmtlZCBhcyB1bnVzZWQu CiAgKgotICogVGhleSBoYXZlIGVub3VnaCBjb21tb25hbGl0aWVzIHRoYXQgd2UgdXNlIGEgc2lu Z2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KKyAqIC0gVk0gdXBkYXRlczogQWZ0ZXIgdmFjdXVtIHBo YXNlIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkgYmUgbWFya2VkCisgKiAgIGFsbC12aXNpYmxlIGFu ZCBhbGwtZnJvemVuLgorICoKKyAqIFRoZXNlIGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwg c28gd2UgdXNlIGEgc2luZ2xlIFdBTCByZWNvcmQgZm9yIHRoZW0KICAqIGFsbC4KICAqCiAgKiBJ ZiByZXBsYXlpbmcgdGhlIHJlY29yZCByZXF1aXJlcyBhIGNsZWFudXAgbG9jaywgcGFzcyBjbGVh bnVwX2xvY2sgPSB0cnVlLgpAQCAtMjA0NSwxMiArMjA1MSwyMyBAQCBoZWFwX2xvZ19mcmVlemVf cGxhbihIZWFwVHVwbGVGcmVlemUgKnR1cGxlcywgaW50IG50dXBsZXMsCiAgKiByZXBsYXlpbmcg J3VudXNlZCcgaXRlbXMgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZXkgd2VyZSBhbGwgcHJldmlvdXNs eSBtYXJrZWQKICAqIGFzIGRlYWQuCiAgKgorICogSWYgdGhlIFZNIGlzIGJlaW5nIHVwZGF0ZWQs IHZtZmxhZ3Mgd2lsbCBjb250YWluIHRoZSBiaXRzIHRvIHNldC4gSW4gdGhpcworICogY2FzZSwg dm1idWZmZXIgc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHVwZGF0ZWQgYW5kIG1hcmtlZCBkaXJ0 eSBhbmQgc2hvdWxkCisgKiBzdGlsbCBiZSBwaW5uZWQgYW5kIGxvY2tlZC4KKyAqCisgKiBzZXRf cGRfYWxsX3ZpcyBpbmRpY2F0ZXMgdGhhdCB3ZSBzZXQgUERfQUxMX1ZJU0lCTEUgYW5kIHRodXMg c2hvdWxkIHVwZGF0ZQorICogdGhlIHBhZ2UgTFNOIHdoZW4gY2hlY2tzdW1zL3dhbF9sb2dfaGlu dHMgYXJlIGVuYWJsZWQgZXZlbiBpZiB3ZSBkaWQgbm90CisgKiBwcnVuZSBvciBmcmVlemUgdHVw bGVzIG9uIHRoZSBwYWdlLgorICoKICAqIE5vdGU6IFRoaXMgZnVuY3Rpb24gc2NyaWJibGVzIG9u IHRoZSAnZnJvemVuJyBhcnJheS4KICAqCiAgKiBOb3RlOiBUaGlzIGlzIGNhbGxlZCBpbiBhIGNy aXRpY2FsIHNlY3Rpb24sIHNvIGNhcmVmdWwgd2hhdCB5b3UgZG8gaGVyZS4KICAqLwogdm9pZAog bG9nX2hlYXBfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKKwkJCQkJCSAgQnVmZmVyIHZtYnVmZmVyLAorCQkJCQkJICB1aW50OCB2bWZsYWdzLAorCQkJ CQkJICBib29sIHNldF9wZF9hbGxfdmlzLAogCQkJCQkJICBUcmFuc2FjdGlvbklkIGNvbmZsaWN0 X3hpZCwKIAkJCQkJCSAgYm9vbCBjbGVhbnVwX2xvY2ssCiAJCQkJCQkgIFBydW5lUmVhc29uIHJl YXNvbiwKQEAgLTIwNjIsNiArMjA3OSw3IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVs YXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxfaGVhcF9wcnVuZSB4bHJlYzsKIAlY TG9nUmVjUHRyCXJlY3B0cjsKIAl1aW50OAkJaW5mbzsKKwl1aW50OAkJcmVnYnVmX2ZsYWdzOwog CiAJLyogVGhlIGZvbGxvd2luZyBsb2NhbCB2YXJpYWJsZXMgaG9sZCBkYXRhIHJlZ2lzdGVyZWQg aW4gdGhlIFdBTCByZWNvcmQ6ICovCiAJeGxocF9mcmVlemVfcGxhbiBwbGFuc1tNYXhIZWFwVHVw bGVzUGVyUGFnZV07CkBAIC0yMDcwLDE2ICsyMDg4LDM0IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJeGxocF9wcnVuZV9pdGVt cyBkZWFkX2l0ZW1zOwogCXhsaHBfcHJ1bmVfaXRlbXMgdW51c2VkX2l0ZW1zOwogCU9mZnNldE51 bWJlciBmcnpfb2Zmc2V0c1tNYXhIZWFwVHVwbGVzUGVyUGFnZV07CisJYm9vbAkJZG9fcHJ1bmUg PSBucmVkaXJlY3RlZCA+IDAgfHwgbmRlYWQgPiAwIHx8IG51bnVzZWQgPiAwOwogCiAJeGxyZWMu ZmxhZ3MgPSAwOwogCisJQXNzZXJ0KCh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRT KSA9PSB2bWZsYWdzKTsKKworCXJlZ2J1Zl9mbGFncyA9IFJFR0JVRl9TVEFOREFSRDsKKworCS8q CisJICogV2UgY2FuIGF2b2lkIGFuIEZQSSBpZiB0aGUgb25seSBtb2RpZmljYXRpb24gd2UgYXJl IG1ha2luZyB0byB0aGUgaGVhcAorCSAqIHBhZ2UgaXMgdG8gc2V0IFBEX0FMTF9WSVNJQkxFIGFu ZCBjaGVja3N1bXMvd2FsX2xvZ19oaW50cyBhcmUgZGlzYWJsZWQuCisJICovCisJaWYgKCFkb19w cnVuZSAmJgorCQluZnJvemVuID09IDAgJiYKKwkJKCFzZXRfcGRfYWxsX3ZpcyB8fCAhWExvZ0hp bnRCaXRJc05lZWRlZCgpKSkKKwkJcmVnYnVmX2ZsYWdzIHw9IFJFR0JVRl9OT19JTUFHRTsKKwog CS8qCiAJICogUHJlcGFyZSBkYXRhIGZvciB0aGUgYnVmZmVyLiAgVGhlIGFycmF5cyBhcmUgbm90 IGFjdHVhbGx5IGluIHRoZQogCSAqIGJ1ZmZlciwgYnV0IHdlIHByZXRlbmQgdGhhdCB0aGV5IGFy ZS4gIFdoZW4gWExvZ0luc2VydCBzdG9yZXMgYSBmdWxsCiAJICogcGFnZSBpbWFnZSwgdGhlIGFy cmF5cyBjYW4gYmUgb21pdHRlZC4KIAkgKi8KIAlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVn aXN0ZXJCdWZmZXIoMCwgYnVmZmVyLCBSRUdCVUZfU1RBTkRBUkQpOworCVhMb2dSZWdpc3RlckJ1 ZmZlcigwLCBidWZmZXIsIHJlZ2J1Zl9mbGFncyk7CisKKwlpZiAodm1mbGFncyAmIFZJU0lCSUxJ VFlNQVBfVkFMSURfQklUUykKKwkJWExvZ1JlZ2lzdGVyQnVmZmVyKDEsIHZtYnVmZmVyLCAwKTsK KwogCWlmIChuZnJvemVuID4gMCkKIAl7CiAJCWludAkJCW5wbGFuczsKQEAgLTIxMzYsNiArMjE3 MiwxMiBAQCBsb2dfaGVhcF9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCSAqIFByZXBhcmUgdGhlIG1haW4geGxfaGVhcF9wcnVuZSByZWNvcmQuICBX ZSBhbHJlYWR5IHNldCB0aGUgWExIUF9IQVNfKgogCSAqIGZsYWcgYWJvdmUuCiAJICovCisJaWYg KHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKQorCXsKKwkJeGxyZWMuZmxhZ3Mg fD0gWExIUF9WTV9BTExfVklTSUJMRTsKKwkJaWYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FM TF9GUk9aRU4pCisJCQl4bHJlYy5mbGFncyB8PSBYTEhQX1ZNX0FMTF9GUk9aRU47CisJfQogCWlm IChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5nKHJlbGF0aW9uKSkKIAkJeGxy ZWMuZmxhZ3MgfD0gWExIUF9JU19DQVRBTE9HX1JFTDsKIAlpZiAoVHJhbnNhY3Rpb25JZElzVmFs aWQoY29uZmxpY3RfeGlkKSkKQEAgLTIxNjgsNSArMjIxMCwyMiBAQCBsb2dfaGVhcF9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCX0KIAlyZWNwdHIg PSBYTG9nSW5zZXJ0KFJNX0hFQVAyX0lELCBpbmZvKTsKIAotCVBhZ2VTZXRMU04oQnVmZmVyR2V0 UGFnZShidWZmZXIpLCByZWNwdHIpOworCWlmICh2bWZsYWdzICYgVklTSUJJTElUWU1BUF9WQUxJ RF9CSVRTKQorCXsKKwkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKKwkJUGFnZVNl dExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgcmVjcHRyKTsKKwl9CisKKwkvKgorCSAqIElm IHBydW5pbmcgb3IgZnJlZXppbmcgdHVwbGVzIG9yIHNldHRpbmcgdGhlIHBhZ2UgYWxsLXZpc2li bGUgd2hlbgorCSAqIGNoZWNrc3VtcyBvciB3YWxfaGludF9iaXRzIGFyZSBlbmFibGVkLCB3ZSBt dXN0IGJ1bXAgdGhlIExTTi4gVG9ybgorCSAqIHBhZ2VzIGFyZSBwb3NzaWJsZSBpZiB3ZSB1cGRh dGUgUERfQUxMX1ZJU0lCTEUgd2l0aG91dCBidW1waW5nIHRoZSBMU04sCisJICogYnV0IHRoaXMg aXMgZGVlbWVkIG9rYXkgZm9yIHBhZ2UgaGludCB1cGRhdGVzLgorCSAqLworCWlmIChkb19wcnVu ZSB8fCBuZnJvemVuID4gMCB8fAorCQkoc2V0X3BkX2FsbF92aXMgJiYgWExvZ0hpbnRCaXRJc05l ZWRlZCgpKSkKKwl7CisJCUFzc2VydChCdWZmZXJJc0RpcnR5KGJ1ZmZlcikpOworCQlQYWdlU2V0 TFNOKEJ1ZmZlckdldFBhZ2UoYnVmZmVyKSwgcmVjcHRyKTsKKwl9CiB9CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC92YWN1dW1sYXp5LmMKaW5kZXggOGE4NGJkZmUwYTkuLjUxMDY3MjY0MDA0IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00NjMsMTEgKzQ2MywxMyBAQCBzdGF0aWMg dm9pZCBkZWFkX2l0ZW1zX2FkZChMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25v LCBPZmZzZXROdW1iZXIgKgogCQkJCQkJICAgaW50IG51bV9vZmZzZXRzKTsKIHN0YXRpYyB2b2lk IGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRpYyB2b2lkIGRlYWRf aXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwotc3RhdGljIGJvb2wgaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwKLQkJCQkJCQkJCSBUcmFu c2FjdGlvbklkIE9sZGVzdFhtaW4sCi0JCQkJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKLQkJCQkJ CQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCi0JCQkJCQkJCQkgT2Zm c2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CitzdGF0aWMgYm9vbCBoZWFwX3BhZ2Vfd291bGRf YmVfYWxsX3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAorCQkJCQkJCQkJCSAgIFRy YW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJCQkJCQkJCQkgICBPZmZzZXROdW1iZXIgKmRlYWRv ZmZzZXRzLAorCQkJCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCisJCQkJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1 dG9mZl94aWQsCisJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBz dGF0aWMgdm9pZCB1cGRhdGVfcmVsc3RhdHNfYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVs KTsKIHN0YXRpYyB2b2lkIHZhY3V1bV9lcnJvcl9jYWxsYmFjayh2b2lkICphcmcpOwogc3RhdGlj IHZvaWQgdXBkYXRlX3ZhY3V1bV9lcnJvcl9pbmZvKExWUmVsU3RhdGUgKnZhY3JlbCwKQEAgLTI4 NTIsOCArMjg1NCwxMSBAQCBsYXp5X3ZhY3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVs LCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwKIAlPZmZzZXROdW1iZXIgdW51c2Vk W01heEhlYXBUdXBsZXNQZXJQYWdlXTsKIAlpbnQJCQludW51c2VkID0gMDsKIAlUcmFuc2FjdGlv bklkIHZpc2liaWxpdHlfY3V0b2ZmX3hpZDsKKwlUcmFuc2FjdGlvbklkIGNvbmZsaWN0X3hpZCA9 IEludmFsaWRUcmFuc2FjdGlvbklkOwogCWJvb2wJCWFsbF9mcm96ZW47CiAJTFZTYXZlZEVycklu Zm8gc2F2ZWRfZXJyX2luZm87CisJdWludDgJCXZtZmxhZ3MgPSAwOworCWJvb2wJCXNldF9wZF9h bGxfdmlzID0gZmFsc2U7CiAKIAlBc3NlcnQodmFjcmVsLT5kb19pbmRleF92YWN1dW1pbmcpOwog CkBAIC0yODY0LDYgKzI4NjksMjMgQEAgbGF6eV92YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUg KnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJIFZBQ1VV TV9FUlJDQl9QSEFTRV9WQUNVVU1fSEVBUCwgYmxrbm8sCiAJCQkJCQkJIEludmFsaWRPZmZzZXRO dW1iZXIpOwogCisJaWYgKGhlYXBfcGFnZV93b3VsZF9iZV9hbGxfdmlzaWJsZSh2YWNyZWwtPnJl bCwgYnVmZmVyLAorCQkJCQkJCQkJICAgdmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCisJCQkJ CQkJCQkgICBkZWFkb2Zmc2V0cywgbnVtX29mZnNldHMsCisJCQkJCQkJCQkgICAmYWxsX2Zyb3pl biwgJnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCSAgICZ2YWNyZWwtPm9mZm51bSkp CisJeworCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX1ZJU0lCTEU7CisJCWlmIChhbGxf ZnJvemVuKQorCQl7CisJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJ CUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQodmlzaWJpbGl0eV9jdXRvZmZfeGlkKSk7CisJ CX0KKworCQkvKiBUYWtlIHRoZSBsb2NrIG9uIHRoZSB2bWJ1ZmZlciBiZWZvcmUgZW50ZXJpbmcg YSBjcml0aWNhbCBzZWN0aW9uICovCisJCUxvY2tCdWZmZXIodm1idWZmZXIsIEJVRkZFUl9MT0NL X0VYQ0xVU0lWRSk7CisJfQorCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKIAlmb3IgKGludCBp ID0gMDsgaSA8IG51bV9vZmZzZXRzOyBpKyspCkBAIC0yODgzLDYgKzI5MDUsMTcgQEAgbGF6eV92 YWN1dW1faGVhcF9wYWdlKExWUmVsU3RhdGUgKnZhY3JlbCwgQmxvY2tOdW1iZXIgYmxrbm8sIEJ1 ZmZlciBidWZmZXIsCiAJLyogQXR0ZW1wdCB0byB0cnVuY2F0ZSBsaW5lIHBvaW50ZXIgYXJyYXkg bm93ICovCiAJUGFnZVRydW5jYXRlTGluZVBvaW50ZXJBcnJheShwYWdlKTsKIAorCWlmICgodm1m bGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUykgIT0gMCkKKwl7CisJCUFzc2VydCghUGFn ZUlzQWxsVmlzaWJsZShwYWdlKSk7CisJCXNldF9wZF9hbGxfdmlzID0gdHJ1ZTsKKwkJUGFnZVNl dEFsbFZpc2libGUocGFnZSk7CisJCXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJl bCwKKwkJCQkJCQkJIGJsa25vLAorCQkJCQkJCQkgdm1idWZmZXIsIHZtZmxhZ3MpOworCQljb25m bGljdF94aWQgPSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CisJfQorCiAJLyoKIAkgKiBNYXJrIGJ1 ZmZlciBkaXJ0eSBiZWZvcmUgd2Ugd3JpdGUgV0FMLgogCSAqLwpAQCAtMjg5Miw3ICsyOTI1LDEw IEBAIGxhenlfdmFjdXVtX2hlYXBfcGFnZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVy IGJsa25vLCBCdWZmZXIgYnVmZmVyLAogCWlmIChSZWxhdGlvbk5lZWRzV0FMKHZhY3JlbC0+cmVs KSkKIAl7CiAJCWxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUodmFjcmVsLT5yZWwsIGJ1ZmZlciwK LQkJCQkJCQkJICBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKKwkJCQkJCQkJICB2bWJ1ZmZlciwKKwkJ CQkJCQkJICB2bWZsYWdzLAorCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzLAorCQkJCQkJCQkgIGNv bmZsaWN0X3hpZCwKIAkJCQkJCQkJICBmYWxzZSwJLyogbm8gY2xlYW51cCBsb2NrIHJlcXVpcmVk ICovCiAJCQkJCQkJCSAgUFJVTkVfVkFDVVVNX0NMRUFOVVAsCiAJCQkJCQkJCSAgTlVMTCwgMCwJ LyogZnJvemVuICovCkBAIC0yOTAxLDM5ICsyOTM3LDEyIEBAIGxhenlfdmFjdXVtX2hlYXBfcGFn ZShMVlJlbFN0YXRlICp2YWNyZWwsIEJsb2NrTnVtYmVyIGJsa25vLCBCdWZmZXIgYnVmZmVyLAog CQkJCQkJCQkgIHVudXNlZCwgbnVudXNlZCk7CiAJfQogCi0JLyoKLQkgKiBFbmQgY3JpdGljYWwg c2VjdGlvbiwgc28gd2Ugc2FmZWx5IGNhbiBkbyB2aXNpYmlsaXR5IHRlc3RzICh3aGljaAotCSAq IHBvc3NpYmx5IG5lZWQgdG8gcGVyZm9ybSBJTyBhbmQgYWxsb2NhdGUgbWVtb3J5ISkuIElmIHdl IGNyYXNoIG5vdyB0aGUKLQkgKiBwYWdlIChpbmNsdWRpbmcgdGhlIGNvcnJlc3BvbmRpbmcgdm0g Yml0KSBtaWdodCBub3QgYmUgbWFya2VkIGFsbAotCSAqIHZpc2libGUsIGJ1dCB0aGF0J3MgZmlu ZS4gQSBsYXRlciB2YWN1dW0gd2lsbCBmaXggdGhhdC4KLQkgKi8KIAlFTkRfQ1JJVF9TRUNUSU9O KCk7CiAKLQkvKgotCSAqIE5vdyB0aGF0IHdlIGhhdmUgcmVtb3ZlZCB0aGUgTFBfREVBRCBpdGVt cyBmcm9tIHRoZSBwYWdlLCBvbmNlIGFnYWluCi0JICogY2hlY2sgaWYgdGhlIHBhZ2UgaGFzIGJl Y29tZSBhbGwtdmlzaWJsZS4gIFRoZSBwYWdlIGlzIGFscmVhZHkgbWFya2VkCi0JICogZGlydHks IGV4Y2x1c2l2ZWx5IGxvY2tlZCwgYW5kLCBpZiBuZWVkZWQsIGEgZnVsbCBwYWdlIGltYWdlIGhh cyBiZWVuCi0JICogZW1pdHRlZC4KLQkgKi8KLQlBc3NlcnQoIVBhZ2VJc0FsbFZpc2libGUocGFn ZSkpOwotCWlmIChoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUodmFjcmVsLT5yZWwsIGJ1ZmZlciwg dmFjcmVsLT5jdXRvZmZzLk9sZGVzdFhtaW4sCi0JCQkJCQkJCSAmYWxsX2Zyb3plbiwgJnZpc2li aWxpdHlfY3V0b2ZmX3hpZCwgJnZhY3JlbC0+b2ZmbnVtKSkKKwlpZiAoKHZtZmxhZ3MgJiBWSVNJ QklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKQogCXsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJ TElUWU1BUF9BTExfVklTSUJMRTsKLQotCQlpZiAoYWxsX2Zyb3plbikKLQkJewotCQkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZCh2aXNpYmlsaXR5X2N1dG9mZl94aWQpKTsKLQkJCWZsYWdz IHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKLQkJfQotCi0JCVBhZ2VTZXRBbGxWaXNpYmxl KHBhZ2UpOwotCQl2aXNpYmlsaXR5bWFwX3NldCh2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZmZlciwK LQkJCQkJCSAgSW52YWxpZFhMb2dSZWNQdHIsCi0JCQkJCQkgIHZtYnVmZmVyLCB2aXNpYmlsaXR5 X2N1dG9mZl94aWQsCi0JCQkJCQkgIGZsYWdzKTsKLQogCQkvKiBDb3VudCB0aGUgbmV3bHkgc2V0 IFZNIHBhZ2UgZm9yIGxvZ2dpbmcgKi8KKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xP Q0tfVU5MT0NLKTsKIAkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwogCQlpZiAoYWxs X2Zyb3plbikKIAkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CkBAIC0z NjAwLDQwICszNjA5LDg1IEBAIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwp CiB9CiAKIC8qCi0gKiBDaGVjayBpZiBldmVyeSB0dXBsZSBpbiB0aGUgZ2l2ZW4gcGFnZSBpbiBi dWYgaXMgdmlzaWJsZSB0byBhbGwgY3VycmVudCBhbmQKLSAqIGZ1dHVyZSB0cmFuc2FjdGlvbnMu CisgKiBXcmFwcGVyIGZvciBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoKSB3aGljaCBj YW4gYmUgdXNlZCBmb3IKKyAqIGNhbGxlcnMgdGhhdCBleHBlY3Qgbm8gTFBfREVBRCBvbiB0aGUg cGFnZS4KKyAqLworYm9vbAoraGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgYm9v bCAqYWxsX2Zyb3plbiwKKwkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94 aWQsCisJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSkKK3sKKworCXJldHVybiBo ZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUocmVsLCBidWYsIE9sZGVzdFhtaW4sCisJCQkJ CQkJCQkJICBOVUxMLCAwLAorCQkJCQkJCQkJCSAgYWxsX2Zyb3plbiwKKwkJCQkJCQkJCQkgIHZp c2liaWxpdHlfY3V0b2ZmX3hpZCwKKwkJCQkJCQkJCQkgIGxvZ2dpbmdfb2ZmbnVtKTsKK30KKwor LyoKKyAqIERldGVybWluZXMgd2hldGhlciBvciBub3QgdGhlIGhlYXAgcGFnZSBpbiBidWYgaXMg YWxsLXZpc2libGUgb3RoZXIgdGhhbgorICogdGhlIGRlYWQgbGluZSBwb2ludGVycyByZWZlcnJl ZCB0byBieSB0aGUgcHJvdmlkZWQgZGVhZG9mZnNldHMgYXJyYXkuCiAgKgotICogT2xkZXN0WG1p biBpcyB1c2VkIHRvIGRldGVybWluZSB2aXNpYmlsaXR5LgorICogZGVhZG9mZnNldHMgYXJlIHRo ZSBvZmZzZXRzIHRoZSBjYWxsZXIga25vd3MgYWJvdXQgYW5kIGFscmVhZHkgcmVtb3ZlZAorICog YXNzb2NpYXRlZCBpbmRleCBlbnRyaWVzLiBWYWN1dW0gd2lsbCBjYWxsIHRoaXMgYmVmb3JlIHNl dHRpbmcgdGhvc2UgbGluZQorICogcG9pbnRlcnMgTFBfVU5VU0VELiBTbywgaWYgdGhlcmUgYXJl IG5vIG5ldyBMUF9ERUFEIGl0ZW1zLCB0aGVuIHRoZSBwYWdlCisgKiBjYW4gYmUgc2V0IGFsbC12 aXNpYmxlIGluIHRoZSBWTSBieSB0aGUgY2FsbGVyLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0 aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBvdGhlciB0aGFuIHRoZSBwcm92aWRlZAorICogZGVhZG9m ZnNldHMgYW5kIGZhbHNlIG90aGVyd2lzZS4KICAqCi0gKiBTZXRzICphbGxfZnJvemVuIHRvIHRy dWUgaWYgZXZlcnkgdHVwbGUgb24gdGhpcyBwYWdlIGlzIGZyb3plbi4KKyAqIE9sZGVzdFhtaW4g aXMgdXNlZCB0byBkZXRlcm1pbmUgdmlzaWJpbGl0eS4KICAqCi0gKiBTZXRzICp2aXNpYmlsaXR5 X2N1dG9mZl94aWQgdG8gdGhlIGhpZ2hlc3QgeG1pbiBhbW9uZ3N0IHRoZSB2aXNpYmxlIHR1cGxl cy4KLSAqIEl0IGlzIG9ubHkgdmFsaWQgaWYgdGhlIHBhZ2UgaXMgYWxsLXZpc2libGUuCisgKiAq YWxsX2Zyb3plbiBpcyBhbiBvdXRwdXQgcGFyYW1ldGVyIGluZGljYXRpbmcgdG8gdGhlIGNhbGxl ciBpZiBldmVyeSB0dXBsZQorICogb24gdGhlIHBhZ2UgaXMgZnJvemVuLgogICoKICAqICpsb2dn aW5nX29mZm51bSB3aWxsIGhhdmUgdGhlIE9mZnNldE51bWJlciBvZiB0aGUgY3VycmVudCB0dXBs ZSBiZWluZwogICogcHJvY2Vzc2VkIGZvciB2YWN1dW0ncyBlcnJvciBjYWxsYmFjayBzeXN0ZW0u CiAgKgotICogVGhpcyBpcyBhIHN0cmlwcGVkIGRvd24gdmVyc2lvbiBvZiBsYXp5X3NjYW5fcHJ1 bmUoKS4gIElmIHlvdSBjaGFuZ2UKLSAqIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2 ZXJ5dGhpbmcgc3RheXMgaW4gc3luYy4gIE5vdGUgdGhhdCBhbgotICogYXNzZXJ0aW9uIGNhbGxz IHVzIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlIHRvIGF2 b2lkCi0gKiBpbnRyb2R1Y2luZyBuZXcgc2lkZS1lZmZlY3RzIGhlcmUuCisgKiAqdmlzaWJpbGl0 eV9jdXRvZmZfeGlkIGlzIGFuIG91dHB1dCBwYXJhbWV0ZXIgd2l0aCB0aGUgaGlnaGVzdCB4bWlu IGFtb25nc3QgdGhlCisgKiB2aXNpYmxlIHR1cGxlcy4gSXQgaXMgb25seSB2YWxpZCBpZiB0aGUg cGFnZSBpcyBhbGwtdmlzaWJsZS4KKyAqCisgKiBDYWxsZXJzIGxvb2tpbmcgdG8gdmVyaWZ5IHRo YXQgdGhlIHBhZ2UgaXMgYWxyZWFkeSBhbGwtdmlzaWJsZSBjYW4gY2FsbAorICogaGVhcF9wYWdl X2lzX2FsbF92aXNpYmxlKCkuCisgKgorICogVGhpcyBpcyBzaW1pbGFyIGxvZ2ljIHRvIHRoYXQg aW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbCgpIElmCisgKiB5b3UgY2hh bmdlIGFueXRoaW5nIGhlcmUsIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5dGhpbmcgc3RheXMgaW4gc3lu Yy4gIE5vdGUKKyAqIHRoYXQgYW4gYXNzZXJ0aW9uIGNhbGxzIHVzIHRvIHZlcmlmeSB0aGF0IGV2 ZXJ5Ym9keSBzdGlsbCBhZ3JlZXMuICBCZSBzdXJlCisgKiB0byBhdm9pZCBpbnRyb2R1Y2luZyBu ZXcgc2lkZS1lZmZlY3RzIGhlcmUuCiAgKi8KIHN0YXRpYyBib29sCi1oZWFwX3BhZ2VfaXNfYWxs X3Zpc2libGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJIFRyYW5zYWN0aW9uSWQg T2xkZXN0WG1pbiwKLQkJCQkJCSBib29sICphbGxfZnJvemVuLAotCQkJCQkJIFRyYW5zYWN0aW9u SWQgKnZpc2liaWxpdHlfY3V0b2ZmX3hpZCwKLQkJCQkJCSBPZmZzZXROdW1iZXIgKmxvZ2dpbmdf b2ZmbnVtKQoraGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKKwkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJICAg T2Zmc2V0TnVtYmVyICpkZWFkb2Zmc2V0cywKKwkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAor CQkJCQkJCSAgIGJvb2wgKmFsbF9mcm96ZW4sCisJCQkJCQkJICAgVHJhbnNhY3Rpb25JZCAqdmlz aWJpbGl0eV9jdXRvZmZfeGlkLAorCQkJCQkJCSAgIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZu dW0pCiB7CiAJUGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmKTsKIAlCbG9ja051bWJlciBi bG9ja25vID0gQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmKTsKIAlPZmZzZXROdW1iZXIgb2ZmbnVt LAogCQkJCW1heG9mZjsKIAlib29sCQlhbGxfdmlzaWJsZSA9IHRydWU7CisJaW50CQkJbWF0Y2hl ZF9kZWFkX2NvdW50ID0gMDsKIAogCSp2aXNpYmlsaXR5X2N1dG9mZl94aWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKIAkqYWxsX2Zyb3plbiA9IHRydWU7CiAKKwlBc3NlcnQobmRlYWRvZmZzZXRz ID09IDAgfHwgZGVhZG9mZnNldHMpOworCisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORworCS8q IENvbmZpcm0gaW5wdXQgZGVhZG9mZnNldHNbXSBpcyBzdHJpY3RseSBzb3J0ZWQgKi8KKwlpZiAo bmRlYWRvZmZzZXRzID4gMSkKKwl7CisJCWZvciAoaW50IGkgPSAxOyBpIDwgbmRlYWRvZmZzZXRz OyBpKyspCisJCQlBc3NlcnQoZGVhZG9mZnNldHNbaSAtIDFdIDwgZGVhZG9mZnNldHNbaV0pOwor CX0KKyNlbmRpZgorCiAJbWF4b2ZmID0gUGFnZUdldE1heE9mZnNldE51bWJlcihwYWdlKTsKIAlm b3IgKG9mZm51bSA9IEZpcnN0T2Zmc2V0TnVtYmVyOwogCQkgb2ZmbnVtIDw9IG1heG9mZiAmJiBh bGxfdmlzaWJsZTsKQEAgLTM2NjEsOSArMzcxNSwxNSBAQCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2li bGUoUmVsYXRpb24gcmVsLCBCdWZmZXIgYnVmLAogCQkgKi8KIAkJaWYgKEl0ZW1JZElzRGVhZChp dGVtaWQpKQogCQl7Ci0JCQlhbGxfdmlzaWJsZSA9IGZhbHNlOwotCQkJKmFsbF9mcm96ZW4gPSBm YWxzZTsKLQkJCWJyZWFrOworCQkJaWYgKCFkZWFkb2Zmc2V0cyB8fAorCQkJCW1hdGNoZWRfZGVh ZF9jb3VudCA+PSBuZGVhZG9mZnNldHMgfHwKKwkJCQlkZWFkb2Zmc2V0c1ttYXRjaGVkX2RlYWRf Y291bnRdICE9IG9mZm51bSkKKwkJCXsKKwkJCQkqYWxsX2Zyb3plbiA9IGFsbF92aXNpYmxlID0g ZmFsc2U7CisJCQkJYnJlYWs7CisJCQl9CisJCQltYXRjaGVkX2RlYWRfY291bnQrKzsKKwkJCWNv bnRpbnVlOwogCQl9CiAKIAkJQXNzZXJ0KEl0ZW1JZElzTm9ybWFsKGl0ZW1pZCkpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgYi9zcmMvYmFja2Vu ZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRlc2MuYwppbmRleCBiNDhkN2RjMWQyNC4uMWNiNDRjYTMy ZDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCisr KyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFwZGVzYy5jCkBAIC0xMDMsNyArMTAz LDcgQEAgcGxhbl9lbGVtX2Rlc2MoU3RyaW5nSW5mbyBidWYsIHZvaWQgKnBsYW4sIHZvaWQgKmRh dGEpCiAgKiBjb2RlLCB0aGUgbGF0dGVyIG9mIHdoaWNoIGlzIHVzZWQgaW4gZnJvbnRlbmQgKHBn X3dhbGR1bXApIGNvZGUuCiAgKi8KIHZvaWQKLWhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9h bmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDggZmxhZ3MsCitoZWFwX3hsb2dfZGVzZXJpYWxp emVfcHJ1bmVfYW5kX2ZyZWV6ZShjaGFyICpjdXJzb3IsIHVpbnQxNiBmbGFncywKIAkJCQkJCQkJ CSAgIGludCAqbnBsYW5zLCB4bGhwX2ZyZWV6ZV9wbGFuICoqcGxhbnMsCiAJCQkJCQkJCQkgICBP ZmZzZXROdW1iZXIgKipmcnpfb2Zmc2V0cywKIAkJCQkJCQkJCSAgIGludCAqbnJlZGlyZWN0ZWQs IE9mZnNldE51bWJlciAqKnJlZGlyZWN0ZWQsCkBAIC0yODcsNiArMjg3LDE1IEBAIGhlYXAyX2Rl c2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlhcHBlbmRTdHJp bmdJbmZvKGJ1ZiwgIiwgaXNDYXRhbG9nUmVsOiAlYyIsCiAJCQkJCQkgeGxyZWMtPmZsYWdzICYg WExIUF9JU19DQVRBTE9HX1JFTCA/ICdUJyA6ICdGJyk7CiAKKwkJaWYgKHhscmVjLT5mbGFncyAm IFhMSFBfVk1fQUxMX1ZJU0lCTEUpCisJCXsKKwkJCXVpbnQ4CQl2bWZsYWdzID0gVklTSUJJTElU WU1BUF9BTExfVklTSUJMRTsKKworCQkJaWYgKHhscmVjLT5mbGFncyAmIFhMSFBfVk1fQUxMX0ZS T1pFTikKKwkJCQl2bWZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCWFwcGVu ZFN0cmluZ0luZm8oYnVmLCAiLCB2bV9mbGFnczogMHglMDJYIiwgdm1mbGFncyk7CisJCX0KKwog CQlpZiAoWExvZ1JlY0hhc0Jsb2NrRGF0YShyZWNvcmQsIDApKQogCQl7CiAJCQlTaXplCQlkYXRh bGVuOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IGEyYmQ1YTg5N2Y4Li4xMzkzNGNiN2RjNiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaApAQCAtMzQ0LDYgKzM0NCwxMiBAQCBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2Vf dXBkYXRlX2FuZF91bmxvY2soUmVsYXRpb24gcmVsYXRpb24sCiAJCQkJCQkJCQkJICAgQnVmZmVy IGJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX2lucGxhY2VfdW5sb2NrKFJlbGF0aW9uIHJlbGF0 aW9uLAogCQkJCQkJCQlIZWFwVHVwbGUgb2xkdHVwLCBCdWZmZXIgYnVmZmVyKTsKKworZXh0ZXJu IGJvb2wgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK KwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkgYm9vbCAqYWxs X2Zyb3plbiwKKwkJCQkJCQkJCSBUcmFuc2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQs CisJCQkJCQkJCQkgT2Zmc2V0TnVtYmVyICpsb2dnaW5nX29mZm51bSk7CiBleHRlcm4gYm9vbCBo ZWFwX3ByZXBhcmVfZnJlZXplX3R1cGxlKEhlYXBUdXBsZUhlYWRlciB0dXBsZSwKIAkJCQkJCQkJ CSAgY29uc3Qgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCiAJCQkJCQkJCQkgIEhlYXBQ YWdlRnJlZXplICpwYWdlZnJ6LApAQCAtMzg4LDYgKzM5NCw5IEBAIGV4dGVybiB2b2lkIGhlYXBf cGFnZV9wcnVuZV9leGVjdXRlKEJ1ZmZlciBidWZmZXIsIGJvb2wgbHBfdHJ1bmNhdGVfb25seSwK IAkJCQkJCQkJCU9mZnNldE51bWJlciAqbm93dW51c2VkLCBpbnQgbnVudXNlZCk7CiBleHRlcm4g dm9pZCBoZWFwX2dldF9yb290X3R1cGxlcyhQYWdlIHBhZ2UsIE9mZnNldE51bWJlciAqcm9vdF9v ZmZzZXRzKTsKIGV4dGVybiB2b2lkIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24g cmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgIEJ1ZmZlciB2bWJ1ZmZlciwKKwkJ CQkJCQkJCSAgdWludDggdm1mbGFncywKKwkJCQkJCQkJCSAgYm9vbCBzZXRfcGRfYWxsX3ZpcywK IAkJCQkJCQkJCSAgVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQsCiAJCQkJCQkJCQkgIGJvb2wg Y2xlYW51cF9sb2NrLAogCQkJCQkJCQkJICBQcnVuZVJlYXNvbiByZWFzb24sCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtX3hsb2cuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9o ZWFwYW1feGxvZy5oCmluZGV4IGQ0YzA2MjViNjMyLi42ZDc1OWMxOTdhMSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbV94bG9nLmgKQEAgLTI0OSw3ICsyNDksNyBAQCB0eXBlZGVmIHN0cnVjdCB4bF9oZWFw X3VwZGF0ZQogICogTWFpbiBkYXRhIHNlY3Rpb246CiAgKgogICoJeGxfaGVhcF9wcnVuZQotICoJ CXVpbnQ4CQkJCWZsYWdzCisgKgkJdWludDE2CQkJCWZsYWdzCiAgKglUcmFuc2FjdGlvbklkCQkJ c25hcHNob3RfY29uZmxpY3RfaG9yaXpvbgogICoKICAqIEJsb2NrIDAgZGF0YSBzZWN0aW9uOgpA QCAtMjg0LDcgKzI4NCw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfdXBkYXRlCiAgKi8KIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKIHsKLQl1aW50OAkJZmxhZ3M7CisJdWludDE2CQlm bGFnczsKIAogCS8qCiAJICogSWYgWExIUF9IQVNfQ09ORkxJQ1RfSE9SSVpPTiBpcyBzZXQsIHRo ZSBjb25mbGljdCBob3Jpem9uIFhJRCBmb2xsb3dzLApAQCAtMjkyLDEwICsyOTIsMjYgQEAgdHlw ZWRlZiBzdHJ1Y3QgeGxfaGVhcF9wcnVuZQogCSAqLwogfSB4bF9oZWFwX3BydW5lOwogCi0jZGVm aW5lIFNpemVPZkhlYXBQcnVuZSAob2Zmc2V0b2YoeGxfaGVhcF9wcnVuZSwgZmxhZ3MpICsgc2l6 ZW9mKHVpbnQ4KSkKKyNkZWZpbmUgU2l6ZU9mSGVhcFBydW5lIChvZmZzZXRvZih4bF9oZWFwX3By dW5lLCBmbGFncykgKyBzaXplb2YodWludDE2KSkKKworLyoKKyAqIFRoZSB4bF9oZWFwX3BydW5l IHJlY29yZCdzIGZsYWdzIG1heSBhbHNvIGNvbnRhaW4gd2hpY2ggVk0gYml0cyB0byBzZXQuIE5v dGUKKyAqIHRoYXQgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSBhbmQgVklTSUJJTElUWU1BUF9B TExfRlJPWkVOIGFyZSBkZWZpbmVkIHRvCisgKiB0aGUgc2FtZSB2YWx1ZXMgYXMgWExIUF9WTV9B TExfVklTSUJMRSBhbmQgWExIUF9WTV9BTExfRlJPWkVOIHJlc3BlY3RpdmVseS4KKyAqIEhvd2V2 ZXIsIHhsX2hlYXBfcHJ1bmUgc2hvdWxkIGFsd2F5cyB1c2UgdGhlIFhMSFAgZmxhZ3MgYW5kIHRy YW5zbGF0ZSB0aGVtCisgKiBiYWNrIHRvIHRoZWlyIHZpc2liaWxpdHltYXBkZWZzLmggZXF1aXZh bGVudC4KKyAqLworI2RlZmluZQkJWExIUF9WTV9BTExfVklTSUJMRQkJCSgxIDw8IDApCisjZGVm aW5lCQlYTEhQX1ZNX0FMTF9GUk9aRU4JCQkoMSA8PCAxKQogCi0vKiB0byBoYW5kbGUgcmVjb3Zl cnkgY29uZmxpY3QgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rpbmcgb24gc3RhbmRieSAqLwotI2RlZmlu ZQkJWExIUF9JU19DQVRBTE9HX1JFTAkJCSgxIDw8IDEpCisvKgorICogVG8gaGFuZGxlIHJlY292 ZXJ5IGNvbmZsaWN0IGR1cmluZyBsb2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnksIHdlIG11c3Qg a25vdworICogaWYgdGhlIHRhYmxlIGlzIGEgY2F0YWxvZyB0YWJsZS4gTm90ZSB0aGF0IGluIHZp c2liaWxpdHltYXBkZWZzLmgKKyAqIFZJU0lCTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMIGlzIGFs c28gZGVmaW5lZCBhcyAoMSA8PCAyKS4geGxfaGVhcF9wcnVuZQorICogcmVjb3JkcyBzaG91bGQg dXNlIFhMSFBfSVNfQ0FUQUxPR19SRUwsIG5vdCBWSVNJQklMSVlUTUFQX1hMT0dfQ0FUQUxPR19S RUwgLS0KKyAqIGV2ZW4gaWYgdGhleSBvbmx5IGNvbnRhaW4gdXBkYXRlcyB0byB0aGUgVk0uCisg Ki8KKyNkZWZpbmUJCVhMSFBfSVNfQ0FUQUxPR19SRUwJCQkoMSA8PCAyKQogCiAvKgogICogRG9l cyByZXBsYXlpbmcgdGhlIHJlY29yZCByZXF1aXJlIGEgY2xlYW51cC1sb2NrPwpAQCAtMzA1LDcg KzMyMSw3IEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICAqIG1hcmtzIExQX0RFQUQg bGluZSBwb2ludGVycyBhcyB1bnVzZWQgd2l0aG91dCBtb3ZpbmcgYW55IHR1cGxlIGRhdGEsIGFu CiAgKiBvcmRpbmFyeSBleGNsdXNpdmUgbG9jayBpcyBzdWZmaWNpZW50LgogICovCi0jZGVmaW5l CQlYTEhQX0NMRUFOVVBfTE9DSwkgICAgICAgKDEgPDwgMikKKyNkZWZpbmUJCVhMSFBfQ0xFQU5V UF9MT0NLCSAgICAgICAoMSA8PCAzKQogCiAvKgogICogSWYgd2UgcmVtb3ZlIG9yIGZyZWV6ZSBh bnkgZW50cmllcyB0aGF0IGNvbnRhaW4geGlkcywgd2UgbmVlZCB0byBpbmNsdWRlIGEKQEAgLTMx MywyMiArMzI5LDIyIEBAIHR5cGVkZWYgc3RydWN0IHhsX2hlYXBfcHJ1bmUKICAqIHRoZXJlIGFy ZSBubyBxdWVyaWVzIHJ1bm5pbmcgZm9yIHdoaWNoIHRoZSByZW1vdmVkIHR1cGxlcyBhcmUgc3Rp bGwKICAqIHZpc2libGUsIG9yIHdoaWNoIHN0aWxsIGNvbnNpZGVyIHRoZSBmcm96ZW4gWElEcyBh cyBydW5uaW5nLgogICovCi0jZGVmaW5lCQlYTEhQX0hBU19DT05GTElDVF9IT1JJWk9OICAgKDEg PDwgMykKKyNkZWZpbmUJCVhMSFBfSEFTX0NPTkZMSUNUX0hPUklaT04gICAoMSA8PCA0KQogCiAv KgogICogSW5kaWNhdGVzIHRoYXQgYW4geGxocF9mcmVlemVfcGxhbnMgc3ViLXJlY29yZCBhbmQg b25lIG9yIG1vcmUKICAqIHhsaHBfZnJlZXplX3BsYW4gc3ViLXJlY29yZHMgYXJlIHByZXNlbnQu CiAgKi8KLSNkZWZpbmUJCVhMSFBfSEFTX0ZSRUVaRV9QTEFOUwkJKDEgPDwgNCkKKyNkZWZpbmUJ CVhMSFBfSEFTX0ZSRUVaRV9QTEFOUwkJKDEgPDwgNSkKIAogLyoKICAqIFhMSFBfSEFTX1JFRElS RUNUSU9OUywgWExIUF9IQVNfREVBRF9JVEVNUywgYW5kIFhMSFBfSEFTX05PV19VTlVTRURfSVRF TVMKICAqIGluZGljYXRlIHRoYXQgeGxocF9wcnVuZV9pdGVtcyBzdWItcmVjb3JkcyB3aXRoIHJl ZGlyZWN0ZWQsIGRlYWQsIGFuZAogICogdW51c2VkIGl0ZW0gb2Zmc2V0cyBhcmUgcHJlc2VudC4K ICAqLwotI2RlZmluZQkJWExIUF9IQVNfUkVESVJFQ1RJT05TCQkoMSA8PCA1KQotI2RlZmluZQkJ WExIUF9IQVNfREVBRF9JVEVNUwkgICAgICAgICgxIDw8IDYpCi0jZGVmaW5lCQlYTEhQX0hBU19O T1dfVU5VU0VEX0lURU1TICAgKDEgPDwgNykKKyNkZWZpbmUJCVhMSFBfSEFTX1JFRElSRUNUSU9O UwkJKDEgPDwgNikKKyNkZWZpbmUJCVhMSFBfSEFTX0RFQURfSVRFTVMJICAgICAgICAoMSA8PCA3 KQorI2RlZmluZQkJWExIUF9IQVNfTk9XX1VOVVNFRF9JVEVNUyAgICgxIDw8IDgpCiAKIC8qCiAg KiB4bGhwX2ZyZWV6ZV9wbGFuIGRlc2NyaWJlcyBob3cgdG8gZnJlZXplIGEgZ3JvdXAgb2Ygb25l IG9yIG1vcmUgaGVhcCB0dXBsZXMKQEAgLTQ5Nyw3ICs1MTMsNyBAQCBleHRlcm4gWExvZ1JlY1B0 ciBsb2dfaGVhcF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGhlYXBfYnVmZmVyLAogCQkJ CQkJCQkgICB1aW50OCB2bWZsYWdzKTsKIAogLyogaW4gaGVhcGRlc2MuYywgc28gaXQgY2FuIGJl IHNoYXJlZCBiZXR3ZWVuIGZyb250ZW5kL2JhY2tlbmQgY29kZSAqLwotZXh0ZXJuIHZvaWQgaGVh cF94bG9nX2Rlc2VyaWFsaXplX3BydW5lX2FuZF9mcmVlemUoY2hhciAqY3Vyc29yLCB1aW50OCBm bGFncywKK2V4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNlcmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXpl KGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucGxhbnMs IHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKIAkJCQkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAq KmZyel9vZmZzZXRzLAogCQkJCQkJCQkJCQkJICAgaW50ICpucmVkaXJlY3RlZCwgT2Zmc2V0TnVt YmVyICoqcmVkaXJlY3RlZCwKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Disposition: attachment; filename="v13-0007-Find-and-fix-VM-corruption-in-heap_page_prune_an.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy487 RnJvbSAxZDg3NTk4NDkwMjUwMTM4MjYzNmUyZDUzNzg3NGY2YzRiNmU2ZWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjQ1OjU5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDcvMjBdIEZpbmQgYW5kIGZpeCBWTSBjb3JydXB0aW9uIGluCiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZQoKRnV0dXJlIGNvbW1pdHMgd2lsbCB1cGRhdGUgdGhlIFZNIGluIHRo ZSBzYW1lIGNyaXRpY2FsIHNlY3Rpb24gYW5kIFdBTApyZWNvcmQgYXMgcHJ1bmluZyBhbmQgZnJl ZXppbmcuIEZvciBlYXNlIG9mIHJldmlldywgdGhpcyBjb21taXQgbWFrZXMKb25lIHN0ZXAgdG93 YXJkIGRvaW5nIHRoaXMuIEl0IG1vdmVzIHRoZSBWTSBjb3JydXB0aW9uIGhhbmRsaW5nIGNhc2Ug dG8KaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKS4KClRoaXMgY29tbWl0IGlzIG9ubHkgcmVh bGx5IG1lYW50IGZvciByZXZpZXcsIGFzIGl0IGFkZHMgYSBtZW1iZXIgdG8KUHJ1bmVGcmVlemVS ZXN1bHQgKHZtX2NvcnJ1cHRpb24pIHRoYXQgaXMgcmVtb3ZlZCBpbiBsYXRlciBjb21taXRzLgot LS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICB8IDkzICsrKysrKysrKysr KysrKysrKysrKysrKysrKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyB8 IDg0ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICB8ICA0ICsrCiAzIGZpbGVzIGNoYW5nZWQsIDEwMiBpbnNlcnRpb25zKCspLCA3 OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDM0M2Fi NTVlNTI3Li44Zjk2OGI0N2MzOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv cHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAg LTIxLDcgKzIxLDcgQEAKICNpbmNsdWRlICJhY2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFj Y2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dpbnNlcnQuaCIKLSNpbmNsdWRlICJh Y2Nlc3MvdmlzaWJpbGl0eW1hcGRlZnMuaCIKKyNpbmNsdWRlICJhY2Nlc3MvdmlzaWJpbGl0eW1h cC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL2lu c3RydW1lbnQuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTE3Nyw2ICsxNzcsMTMgQEAg c3RhdGljIHZvaWQgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5l U3RhdGUgKnByc3RhdGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJl Y3RzKFBhZ2UgcGFnZSk7CiAKK3N0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVw dGlvbihSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2Js aywKKwkJCQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJ CQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCisJCQkJCQkJCQkJICAgaW50NjQgbmxw ZGVhZF9pdGVtcywKKwkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOworCiAKIC8qCiAgKiBP cHRpb25hbGx5IHBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBpbiB0aGUgc3BlY2lmaWVk IHBhZ2UuCkBAIC0yNjEsNyArMjY4LDkgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiBy ZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAkJCSAqIG5vdCB0aGUgcmVsYXRpb24gaGFzIGluZGV4 ZXMsIHNpbmNlIHdlIGNhbm5vdCBzYWZlbHkgZGV0ZXJtaW5lCiAJCQkgKiB0aGF0IGR1cmluZyBv bi1hY2Nlc3MgcHJ1bmluZyB3aXRoIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLgogCQkJICov Ci0JCQloZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCB2aXN0ZXN0 LCAwLAorCQkJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFs c2UsCisJCQkJCQkJCQkgICBJbnZhbGlkQnVmZmVyLAorCQkJCQkJCQkJICAgdmlzdGVzdCwgMCwK IAkJCQkJCQkJCSAgIE5VTEwsICZwcmVzdWx0LCBQUlVORV9PTl9BQ0NFU1MsICZkdW1teV9vZmZf bG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKQEAgLTI5NCw2ICszMDMsNzAgQEAgaGVhcF9wYWdl X3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKIAl9CiB9CiAKKy8q CisgKiBXaGVuIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcCBhZnRlciBwaGFzZSBJIGhlYXAg dmFjdXVtaW5nLCB3ZSB0YWtlIHRoZQorICogb3Bwb3J0dW5pdHkgdG8gaWRlbnRpZnkgYW5kIGZp eCBhbnkgVk0gY29ycnVwdGlvbi4KKyAqCisgKiBoZWFwX2Jsa19rbm93bl9hdiBpcyB0aGUgdmlz aWJpbGl0eSBzdGF0dXMgb2YgdGhlIGhlYXAgcGFnZSBjb2xsZWN0ZWQKKyAqIHdoaWxlIGZpbmRp bmcgdGhlIG5leHQgdW5za2lwcGFibGUgYmxvY2sgaW4gaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2Nr KCkuCisgKi8KK3N0YXRpYyBib29sCitpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCisJCQkJCQkJICAgQmxvY2tOdW1iZXIgaGVhcF9ibGssCisJCQkJCQkJ ICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBfcGFnZSwKKwkJCQkJCQkgICBib29sIGhl YXBfYmxrX2tub3duX2F2LAorCQkJCQkJCSAgIGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJ ICAgQnVmZmVyIHZtYnVmZmVyKQoreworCS8qCisJICogQXMgb2YgUG9zdGdyZVNRTCA5LjIsIHRo ZSB2aXNpYmlsaXR5IG1hcCBiaXQgc2hvdWxkIG5ldmVyIGJlIHNldCBpZiB0aGUKKwkgKiBwYWdl LWxldmVsIGJpdCBpcyBjbGVhci4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUgdGhhdCB0aGUgYml0 IGdvdAorCSAqIGNsZWFyZWQgYWZ0ZXIgaGVhcF92YWNfc2Nhbl9uZXh0X2Jsb2NrKCkgd2FzIGNh bGxlZCwgc28gd2UgbXVzdCByZWNoZWNrCisJICogd2l0aCBidWZmZXIgbG9jayBiZWZvcmUgY29u Y2x1ZGluZyB0aGF0IHRoZSBWTSBpcyBjb3JydXB0LgorCSAqLworCWlmIChoZWFwX2Jsa19rbm93 bl9hdiAmJiAhUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpICYmCisJCXZpc2liaWxpdHltYXBf Z2V0X3N0YXR1cyhyZWxhdGlvbiwgaGVhcF9ibGssICZ2bWJ1ZmZlcikgIT0gMCkKKwl7CisJCWVy ZXBvcnQoV0FSTklORywKKwkJCQkoZXJyY29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKKwkJ CQkgZXJybXNnKCJwYWdlIGlzIG5vdCBtYXJrZWQgYWxsLXZpc2libGUgYnV0IHZpc2liaWxpdHkg bWFwIGJpdCBpcyBzZXQgaW4gcmVsYXRpb24gXCIlc1wiIHBhZ2UgJXUiLAorCQkJCQkJUmVsYXRp b25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBoZWFwX2JsaykpKTsKKworCQl2aXNpYmlsaXR5 bWFwX2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElU WU1BUF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJLyoKKwkgKiBJdCdzIHBv c3NpYmxlIGZvciB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKKwkgKiBHZXRPbGRlc3ROb25SZW1vdmFi bGVUcmFuc2FjdGlvbklkKCkgdG8gbW92ZSBiYWNrd2FyZHMsIHNvIGl0J3Mgbm90CisJICogd3Jv bmcgZm9yIHVzIHRvIHNlZSB0dXBsZXMgdGhhdCBhcHBlYXIgdG8gbm90IGJlIHZpc2libGUgdG8g ZXZlcnlvbmUKKwkgKiB5ZXQsIHdoaWxlIFBEX0FMTF9WSVNJQkxFIGlzIGFscmVhZHkgc2V0LiBU aGUgcmVhbCBzYWZlIHhtaW4gdmFsdWUKKwkgKiBuZXZlciBtb3ZlcyBiYWNrd2FyZHMsIGJ1dCBH ZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlvbklkKCkgaXMKKwkgKiBjb25zZXJ2YXRpdmUg YW5kIHNvbWV0aW1lcyByZXR1cm5zIGEgdmFsdWUgdGhhdCdzIHVubmVjZXNzYXJpbHkgc21hbGws CisJICogc28gaWYgd2Ugc2VlIHRoYXQgY29udHJhZGljdGlvbiBpdCBqdXN0IG1lYW5zIHRoYXQg dGhlIHR1cGxlcyB0aGF0IHdlCisJICogdGhpbmsgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25l IHlldCBhY3R1YWxseSBhcmUsIGFuZCB0aGUKKwkgKiBQRF9BTExfVklTSUJMRSBmbGFnIGlzIGNv cnJlY3QuCisJICoKKwkgKiBUaGVyZSBzaG91bGQgbmV2ZXIgYmUgTFBfREVBRCBpdGVtcyBvbiBh IHBhZ2Ugd2l0aCBQRF9BTExfVklTSUJMRSBzZXQsCisJICogaG93ZXZlci4KKwkgKi8KKwlpZiAo bmxwZGVhZF9pdGVtcyA+IDAgJiYgUGFnZUlzQWxsVmlzaWJsZShoZWFwX3BhZ2UpKQorCXsKKwkJ ZXJlcG9ydChXQVJOSU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAor CQkJCSBlcnJtc2coInBhZ2UgY29udGFpbmluZyBMUF9ERUFEIGl0ZW1zIGlzIG1hcmtlZCBhcyBh bGwtdmlzaWJsZSBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdl dFJlbGF0aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCVBhZ2VDbGVhckFsbFZp c2libGUoaGVhcF9wYWdlKTsKKwkJTWFya0J1ZmZlckRpcnR5KGhlYXBfYnVmZmVyKTsKKwkJdmlz aWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9ibGssIHZtYnVmZmVyLAorCQkJCQkJCVZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUyk7CisJCXJldHVybiB0cnVlOworCX0KKworCXJldHVybiBm YWxzZTsKK30KIAogLyoKICAqIFBydW5lIGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90 ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBvbiB0aGUKQEAgLTMxNCw2ICszODcsMTAgQEAgaGVhcF9w YWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlcikKICAqIEhFQVBf UFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBub3Qgc2V0LCBiZWNhdXNlIGF0IHRoZSBtb21lbnQgb25s eSBjYWxsZXJzCiAgKiB0aGF0IGFsc28gZnJlZXplIG5lZWQgdGhhdCBpbmZvcm1hdGlvbi4KICAq CisgKiBibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFwIGJs b2NrIGFzIG9mIHRoZSBsYXN0IGNhbGwKKyAqIHRvIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9j aygpLiB2bWJ1ZmZlciBpcyB0aGUgYnVmZmVyIHRoYXQgbWF5IGFscmVhZHkKKyAqIGNvbnRhaW4g dGhlIHJlcXVpcmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KKyAqCiAgKiB2aXN0ZXN0 IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5U TFlfREVBRAogICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgogICoKQEAgLTM0 OSw2ICs0MjYsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyKQogICovCiB2b2lkCiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCSAgIGJvb2wgYmxrX2tub3duX2F2LAor CQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyLAogCQkJCQkJICAgR2xvYmFsVmlzU3RhdGUgKnZpc3Rl c3QsCiAJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRvZmZz ICpjdXRvZmZzLApAQCAtODk3LDYgKzk3NiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcmVzdWx0LT5scGRlYWRfaXRl bXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKIAkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9mZnNldHMg YXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCiAKKwkvKgorCSAqIENsZWFyIGFueSBWTSBj b3JydXB0aW9uLiBUaGlzIGRvZXMgbm90IG5lZWQgdG8gYmUgZG9uZSBpbiBhIGNyaXRpY2FsCisJ ICogc2VjdGlvbi4KKwkgKi8KKwlwcmVzdWx0LT52bV9jb3JydXB0aW9uID0gZmFsc2U7CisJaWYg KG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNKQorCQlwcmVzdWx0LT52bV9jb3Jy dXB0aW9uID0gaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAorCQkJCQkJ CQkJCQkJCQkJCWJsb2Nrbm8sIGJ1ZmZlciwgcGFnZSwKKwkJCQkJCQkJCQkJCQkJCQlibGtfa25v d25fYXYsCisJCQkJCQkJCQkJCQkJCQkJcHJzdGF0ZS5scGRlYWRfaXRlbXMsIHZtYnVmZmVyKTsK IAlpZiAocHJzdGF0ZS5mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggZDY4MTgzMjM5MzIuLmEyMjJjOWY5 MTY0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC00MzAsMTIgKzQzMCw2 IEBAIHN0YXRpYyB2b2lkIGZpbmRfbmV4dF91bnNraXBwYWJsZV9ibG9jayhMVlJlbFN0YXRlICp2 YWNyZWwsIGJvb2wgKnNraXBzYWxsdmlzKTsKIHN0YXRpYyBib29sIGxhenlfc2Nhbl9uZXdfb3Jf ZW1wdHkoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCQkgICBCbG9ja051 bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCQkgICBib29sIHNoYXJlbG9jaywgQnVmZmVy IHZtYnVmZmVyKTsKLXN0YXRpYyBib29sIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihS ZWxhdGlvbiByZWxhdGlvbiwKLQkJCQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKLQkJ CQkJCQkJCQkgICBCdWZmZXIgaGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAotCQkJCQkJCQkJ CSAgIGJvb2wgaGVhcF9ibGtfa25vd25fYXYsCi0JCQkJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9p dGVtcywKLQkJCQkJCQkJCQkgICBCdWZmZXIgdm1idWZmZXIpOwogc3RhdGljIGludAlsYXp5X3Nj YW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLAogCQkJCQkJCUJsb2NrTnVt YmVyIGJsa25vLCBQYWdlIHBhZ2UsCiAJCQkJCQkJQnVmZmVyIHZtYnVmZmVyLCBib29sIGFsbF92 aXNpYmxlX2FjY29yZGluZ190b192bSwKQEAgLTE5NDAsNzIgKzE5MzQsNiBAQCBsYXp5X3NjYW5f bmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwgQmxvY2tOdW1iZXIg Ymxrbm8sCiAJcmV0dXJuIGZhbHNlOwogfQogCi0vKgotICogV2hlbiB1cGRhdGluZyB0aGUgdmlz aWJpbGl0eSBtYXAgYWZ0ZXIgcGhhc2UgSSBoZWFwIHZhY3V1bWluZywgd2UgdGFrZSB0aGUKLSAq IG9wcG9ydHVuaXR5IHRvIGlkZW50aWZ5IGFuZCBmaXggYW55IFZNIGNvcnJ1cHRpb24uCi0gKgot ICogaGVhcF9ibGtfa25vd25fYXYgaXMgdGhlIHZpc2liaWxpdHkgc3RhdHVzIG9mIHRoZSBoZWFw IHBhZ2UgY29sbGVjdGVkCi0gKiB3aGlsZSBmaW5kaW5nIHRoZSBuZXh0IHVuc2tpcHBhYmxlIGJs b2NrIGluIGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpLgotICovCi1zdGF0aWMgYm9vbAotaWRl bnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAotCQkJCQkJCSAg IEJsb2NrTnVtYmVyIGhlYXBfYmxrLAotCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFn ZSBoZWFwX3BhZ2UsCi0JCQkJCQkJICAgYm9vbCBoZWFwX2Jsa19rbm93bl9hdiwKLQkJCQkJCQkg ICBpbnQ2NCBubHBkZWFkX2l0ZW1zLAotCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlcikKLXsKLQkv KgotCSAqIEFzIG9mIFBvc3RncmVTUUwgOS4yLCB0aGUgdmlzaWJpbGl0eSBtYXAgYml0IHNob3Vs ZCBuZXZlciBiZSBzZXQgaWYgdGhlCi0JICogcGFnZS1sZXZlbCBiaXQgaXMgY2xlYXIuICBIb3dl dmVyLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGJpdCBnb3QKLQkgKiBjbGVhcmVkIGFmdGVyIGhl YXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIHdhcyBjYWxsZWQsIHNvIHdlIG11c3QgcmVjaGVjawot CSAqIHdpdGggYnVmZmVyIGxvY2sgYmVmb3JlIGNvbmNsdWRpbmcgdGhhdCB0aGUgVk0gaXMgY29y cnVwdC4KLQkgKi8KLQlpZiAoaGVhcF9ibGtfa25vd25fYXYgJiYgIVBhZ2VJc0FsbFZpc2libGUo aGVhcF9wYWdlKSAmJgotCQl2aXNpYmlsaXR5bWFwX2dldF9zdGF0dXMocmVsYXRpb24sIGhlYXBf YmxrLCAmdm1idWZmZXIpICE9IDApCi0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNv ZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBpcyBub3QgbWFy a2VkIGFsbC12aXNpYmxlIGJ1dCB2aXNpYmlsaXR5IG1hcCBiaXQgaXMgc2V0IGluIHJlbGF0aW9u IFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHJlbGF0aW9u KSwgaGVhcF9ibGspKSk7Ci0KLQkJdmlzaWJpbGl0eW1hcF9jbGVhcihyZWxhdGlvbiwgaGVhcF9i bGssIHZtYnVmZmVyLAotCQkJCQkJCVZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyk7Ci0JCXJldHVy biB0cnVlOwotCX0KLQotCS8qCi0JICogSXQncyBwb3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVy bmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUg YmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdyb25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRo YXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRvIGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQ RF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4gVGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0J ICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQgR2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNh Y3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZlIGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZh bHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxsLAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNv bnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRo aW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9uZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhl Ci0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBjb3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hv dWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24gYSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUg c2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JaWYgKG5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJ c0FsbFZpc2libGUoaGVhcF9wYWdlKSkKLQl7Ci0JCWVyZXBvcnQoV0FSTklORywKLQkJCQkoZXJy Y29kZShFUlJDT0RFX0RBVEFfQ09SUlVQVEVEKSwKLQkJCQkgZXJybXNnKCJwYWdlIGNvbnRhaW5p bmcgTFBfREVBRCBpdGVtcyBpcyBtYXJrZWQgYXMgYWxsLXZpc2libGUgaW4gcmVsYXRpb24gXCIl c1wiIHBhZ2UgJXUiLAotCQkJCQkJUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsYXRpb24pLCBo ZWFwX2JsaykpKTsKLQotCQlQYWdlQ2xlYXJBbGxWaXNpYmxlKGhlYXBfcGFnZSk7Ci0JCU1hcmtC dWZmZXJEaXJ0eShoZWFwX2J1ZmZlcik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIocmVsYXRpb24s IGhlYXBfYmxrLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CQlyZXR1cm4gdHJ1ZTsKLQl9Ci0KLQlyZXR1cm4gZmFsc2U7Ci19Ci0KLQogLyogcXNvcnQgY29t cGFyYXRvciBmb3Igc29ydGluZyBPZmZzZXROdW1iZXJzICovCiBzdGF0aWMgaW50CiBjbXBPZmZz ZXROdW1iZXJzKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCkBAIC0yMDYzLDExICsxOTkx LDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJICogdHVwbGVzLiBQ cnVuaW5nIHdpbGwgaGF2ZSBkZXRlcm1pbmVkIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIGlzCiAJ ICogYWxsLXZpc2libGUuCiAJICovCi0JcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9G UkVFWkU7CisJcHJ1bmVfb3B0aW9ucyA9IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUgfCBIRUFQX1BB R0VfUFJVTkVfVVBEQVRFX1ZNOwogCWlmICh2YWNyZWwtPm5pbmRleGVzID09IDApCiAJCXBydW5l X29wdGlvbnMgfD0gSEVBUF9QQUdFX1BSVU5FX01BUktfVU5VU0VEX05PVzsKIAotCWhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKHJlbCwgYnVmLCB2YWNyZWwtPnZpc3Rlc3QsIHBydW5lX29wdGlv bnMsCisJaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJCQkJCQkJICAgYWxs X3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAorCQkJCQkJCSAgIHZtYnVmZmVyLAorCQkJCQkJCSAg IHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKIAkJCQkJCQkgICAmdmFjcmVsLT5jdXRv ZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCiAJCQkJCQkJICAgJnZhY3JlbC0+b2Zm bnVtLAogCQkJCQkJCSAgICZ2YWNyZWwtPk5ld1JlbGZyb3plblhpZCwgJnZhY3JlbC0+TmV3UmVs bWluTXhpZCk7CkBAIC0yMTUyLDEwICsyMDgzLDkgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAkvKgogCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKIAkgKiBvZiBsYXN0IGhlYXBfdmFj X3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKLQkgKiBh bGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3IgYW55IFZNIGNvcnJ1cHRp b24uCisJICogYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICovCi0JaWYgKGlkZW50aWZ5X2FuZF9m aXhfdm1fY29ycnVwdGlvbih2YWNyZWwtPnJlbCwgYmxrbm8sIGJ1ZiwgcGFnZSwKLQkJCQkJCQkJ CSAgIGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSwgcHJlc3VsdC5scGRlYWRfaXRlbXMsIHZt YnVmZmVyKSkKKwlpZiAocHJlc3VsdC52bV9jb3JydXB0aW9uKQogCXsKIAkJLyogRG9uJ3QgdXBk YXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9oZWFwYW0uaAppbmRleCA3ZWMyNzBmZWVkMC4uYTNiODVmZDFkYWYgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFt LmgKQEAgLTQyLDYgKzQyLDcgQEAKIC8qICJvcHRpb25zIiBmbGFnIGJpdHMgZm9yIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplICovCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9NQVJLX1VOVVNF RF9OT1cJCSgxIDw8IDApCiAjZGVmaW5lIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUJCQkJKDEgPDwg MSkKKyNkZWZpbmUgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTQkJCSgxIDw8IDIpCiAKIHR5cGVk ZWYgc3RydWN0IEJ1bGtJbnNlcnRTdGF0ZURhdGEgKkJ1bGtJbnNlcnRTdGF0ZTsKIHN0cnVjdCBU dXBsZVRhYmxlU2xvdDsKQEAgLTI0Nyw2ICsyNDgsNyBAQCB0eXBlZGVmIHN0cnVjdCBQcnVuZUZy ZWV6ZVJlc3VsdAogCWJvb2wJCWFsbF92aXNpYmxlOwogCWJvb2wJCWFsbF9mcm96ZW47CiAJVHJh bnNhY3Rpb25JZCB2bV9jb25mbGljdF9ob3Jpem9uOworCWJvb2wJCXZtX2NvcnJ1cHRpb247CiAK IAkvKgogCSAqIFdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIG1ha2VzIHJlbCB0cnVuY2F0aW9uIHVu c2FmZS4gIFRoaXMgaXMgc2V0IHRvCkBAIC0zODAsNiArMzgyLDggQEAgZXh0ZXJuIFRyYW5zYWN0 aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9uIHJlbCwKIHN0cnVjdCBHbG9i YWxWaXNTdGF0ZTsKIGV4dGVybiB2b2lkIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVs YXRpb24sIEJ1ZmZlciBidWZmZXIpOwogZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCisJCQkJCQkJCQkgICBib29s IGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCSAgIEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCQkJCSAg IHN0cnVjdCBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkJCSAgIGludCBvcHRpb25z LAogCQkJCQkJCQkJICAgc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnMsCi0tIAoyLjQzLjAK Cg== --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Disposition: attachment; filename="v13-0006-Combine-vacuum-phase-I-VM-update-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy456 RnJvbSAwMjIyOGMzNTUwZTU2MjZiZGRmZjA3MjA1OTMyNmJhYWQxYmExZTFjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjM1OjM2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDYvMjBdIENvbWJpbmUgdmFjdXVtIHBoYXNlIEkgVk0gdXBkYXRlIGNhc2VzCgpX ZSB1cGRhdGUgdGhlIFZNIGFmdGVyIHBoYXNlIEkgb2YgdmFjdXVtIC0tIGVpdGhlciBzZXR0aW5n IGJvdGggdGhlIFZNCmJpdHMgd2hlbiBhbGwgYml0cyBhcmUgY3VycmVudGx5IHVuc2V0IG9yIHNl dHRpbmcganVzdCB0aGUgZnJvemVuIGJpdAp3aGVuIHRoZSBhbGwtdmlzaWJsZSBiaXQgaXMgYWxy ZWFkeSBzZXQuCgpUaG9zZSB0d28gY2FzZXMgc2hhcmVkIG11Y2ggb2YgdGhlIHNhbWUgY29kZSAt LSBsZWFkaW5nIHRvIHVubmVjZXNzYXJ5CmR1cGxpY2F0aW9uLiBUaGlzIGNvbW1pdCBjb21iaW5l cyB0aGVtLCB3aGljaCBpcyBzaW1wbGVyIGFuZCBlYXNpZXIgdG8KdW5kZXJzdGFuZC4KClRoZSBj b21iaW5lZCBjYXNlIGFsc28gaGFwcGVucyB0byBmaXggYSBsb25nc3RhbmRpbmcgYnVnIHdoZXJl IGlmIHdlIGFyZQpvbmx5IHNldHRpbmcgYW4gYWxsLXZpc2libGUgcGFnZSBhbGwtZnJvemVuIGFu ZCBjaGVja3N1bXMvd2FsX2xvZ19oaW50cwphcmUgZW5hYmxlZCwgd2Ugd291bGQgZmFpbCB0byBz ZXQgdGhlIGJ1ZmZlciBkaXJ0eSBiZWZvcmUgc2V0dGluZyB0aGUKcGFnZSBMU04gaW4gdmlzaWJp bGl0eW1hcF9zZXQoKS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMg fCAxMDEgKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzIgaW5z ZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCmluZGV4IGU5YjRlOTI0ZDIyLi5kNjgxODMyMzkzMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3ZhY3V1bWxhenkuYwpAQCAtMjE1OSwxMSArMjE1OSwyNiBAQCBsYXp5X3NjYW5fcHJ1bmUoTFZS ZWxTdGF0ZSAqdmFjcmVsLAogCXsKIAkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0 IGNsZWFyZWQgY29ycnVwdGlvbiBpbiBpdCAqLwogCX0KLQllbHNlIGlmICghYWxsX3Zpc2libGVf YWNjb3JkaW5nX3RvX3ZtICYmIHByZXN1bHQuYWxsX3Zpc2libGUpCisKKwkvKgorCSAqIElmIHRo ZSBwYWdlIGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFu ZCBuZWVkcworCSAqIHRvIGJlIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5CisJICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1 ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAorCSAqIGFsbF9mcm96ZW4u CisJICovCisJZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgorCQkJICghYWxsX3Zpc2li bGVfYWNjb3JkaW5nX3RvX3ZtIHx8CisJCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FM TF9GUk9aRU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCiAJewogCQl1aW50OAkJ b2xkX3ZtYml0czsKIAkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsK IAorCQkvKgorCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZh bGlkVHJhbnNhY3Rpb25JZCBhcyBvdXIKKwkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hv dENvbmZsaWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKKwkJICogZXZlcnl0aGluZyBzYWZl IGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCisJCSAqIGZy b3plbi4KKwkJICovCiAJCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCiAJCXsKIAkJCUFzc2VydCgh VHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7CkBAIC0y MTc2LDIxICsyMTkxLDI5IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJ CSAqIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQpLiAgUmVnYXJkbGVzcywgc2V0IGJvdGggYml0 cyBzbyB0aGF0IHdlCiAJCSAqIGdldCBiYWNrIGluIHN5bmMuCiAJCSAqCi0JCSAqIE5COiBJZiB0 aGUgaGVhcCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdl Ci0JCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNo ZWNrc3VtcyBhcmUKLQkJICogZW5hYmxlZCwgd2UgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0 aGUgaGVhcCBwYWdlIGlzIGRpcnRpZWQKLQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJp bGl0eW1hcF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgotCQkgKiBHaXZlbiB0aGF0 IHRoaXMgc2l0dWF0aW9uIHNob3VsZCBvbmx5IGhhcHBlbiBpbiByYXJlIGNhc2VzIGFmdGVyIGEK LQkJICogY3Jhc2gsIGl0IGlzIG5vdCB3b3J0aCBvcHRpbWl6aW5nLgorCQkgKiBJZiB0aGUgaGVh cCBwYWdlIGlzIGFsbC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlIGRvbid0 CisJCSAqIG5lZWQgdG8gZGlydHkgdGhlIGhlYXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3Vt cyBhcmUgZW5hYmxlZCwgd2UKKwkJICogZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgaGVh cCBwYWdlIGlzIGRpcnRpZWQgYmVmb3JlIHBhc3NpbmcKKwkJICogaXQgdG8gdmlzaWJpbGl0eW1h cF9zZXQoKSwgYmVjYXVzZSBpdCBtYXkgYmUgbG9nZ2VkLgogCQkgKi8KLQkJUGFnZVNldEFsbFZp c2libGUocGFnZSk7Ci0JCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQlpZiAoIVBhZ2VJc0FsbFZp c2libGUocGFnZSkgfHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQl7CisJCQlQYWdlU2V0QWxs VmlzaWJsZShwYWdlKTsKKwkJCU1hcmtCdWZmZXJEaXJ0eShidWYpOworCQl9CisKIAkJb2xkX3Zt Yml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLCBibGtubywgYnVmLAogCQkJCQkJ CQkJICAgSW52YWxpZFhMb2dSZWNQdHIsCiAJCQkJCQkJCQkgICB2bWJ1ZmZlciwgcHJlc3VsdC52 bV9jb25mbGljdF9ob3Jpem9uLAogCQkJCQkJCQkJICAgZmxhZ3MpOwogCiAJCS8qCisJCSAqIEV2 ZW4gaWYgd2UgYXJlIG9ubHkgc2V0dGluZyB0aGUgYWxsLWZyb3plbiBiaXQsIHRoZXJlIGlzIGEg c21hbGwKKwkJICogY2hhbmNlIHRoYXQgdGhlIFZNIHdhcyBtb2RpZmllZCBzb21ldGltZSBiZXR3 ZWVuIHNldHRpbmcKKwkJICogYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtIGFuZCBjaGVja2lu ZyB0aGUgdmlzaWJpbGl0eSBkdXJpbmcKKwkJICogcHJ1bmluZy4gQ2hlY2sgdGhlIHJldHVybiB2 YWx1ZSBvZiBvbGRfdm1iaXRzIHRvIGVuc3VyZSB0aGUKKwkJICogdmlzaWJpbGl0eSBtYXAgY291 bnRlcnMgdXNlZCBmb3IgbG9nZ2luZyBhcmUgYWNjdXJhdGUuCisJCSAqCiAJCSAqIElmIHRoZSBw YWdlIHdhc24ndCBhbHJlYWR5IHNldCBhbGwtdmlzaWJsZSBhbmQvb3IgYWxsLWZyb3plbiBpbiB0 aGUKIAkJICogVk0sIGNvdW50IGl0IGFzIG5ld2x5IHNldCBmb3IgbG9nZ2luZy4KIAkJICovCkBA IC0yMjExLDY2ICsyMjM0LDYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwK IAkJfQogCX0KIAotCS8qCi0JICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3pl biBidXQgbm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawotCSAqIGl0IGFzIGFsbC1mcm96ZW4u ICBOb3RlIHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0J ICogdHJ1ZSwgc28gd2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZCBhbGxfZnJvemVu LgotCSAqLwotCWVsc2UgaWYgKGFsbF92aXNpYmxlX2FjY29yZGluZ190b192bSAmJiBwcmVzdWx0 LmFsbF92aXNpYmxlICYmCi0JCQkgcHJlc3VsdC5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVO KHZhY3JlbC0+cmVsLCBibGtubywgJnZtYnVmZmVyKSkKLQl7Ci0JCXVpbnQ4CQlvbGRfdm1iaXRz OwotCi0JCS8qCi0JCSAqIEF2b2lkIHJlbHlpbmcgb24gYWxsX3Zpc2libGVfYWNjb3JkaW5nX3Rv X3ZtIGFzIGEgcHJveHkgZm9yIHRoZQotCQkgKiBwYWdlLWxldmVsIFBEX0FMTF9WSVNJQkxFIGJp dCBiZWluZyBzZXQsIHNpbmNlIGl0IG1pZ2h0IGhhdmUgYmVjb21lCi0JCSAqIHN0YWxlIC0tIGV2 ZW4gd2hlbiBhbGxfdmlzaWJsZSBpcyBzZXQKLQkJICovCi0JCWlmICghUGFnZUlzQWxsVmlzaWJs ZShwYWdlKSkKLQkJewotCQkJUGFnZVNldEFsbFZpc2libGUocGFnZSk7Ci0JCQlNYXJrQnVmZmVy RGlydHkoYnVmKTsKLQkJfQotCi0JCS8qCi0JCSAqIFNldCB0aGUgcGFnZSBhbGwtZnJvemVuIChh bmQgYWxsLXZpc2libGUpIGluIHRoZSBWTS4KLQkJICoKLQkJICogV2UgY2FuIHBhc3MgSW52YWxp ZFRyYW5zYWN0aW9uSWQgYXMgb3VyIGN1dG9mZl94aWQsIHNpbmNlIGEKLQkJICogc25hcHNob3RD b25mbGljdEhvcml6b24gc3VmZmljaWVudCB0byBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVE TwotCQkgKiB3YXMgbG9nZ2VkIHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMgd2VyZSBmcm96ZW4uCi0J CSAqLwotCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJc1ZhbGlkKHByZXN1bHQudm1fY29uZmxpY3Rf aG9yaXpvbikpOwotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBJbnZhbGlkVHJhbnNhY3Rpb25JZCwKLQkJCQkJCQkJCSAgIFZJU0lCSUxJVFlN QVBfQUxMX1ZJU0lCTEUgfAotCQkJCQkJCQkJICAgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsK LQotCQkvKgotCQkgKiBUaGUgcGFnZSB3YXMgbGlrZWx5IGFscmVhZHkgc2V0IGFsbC12aXNpYmxl IGluIHRoZSBWTS4gSG93ZXZlciwKLQkJICogdGhlcmUgaXMgYSBzbWFsbCBjaGFuY2UgdGhhdCBp dCB3YXMgbW9kaWZpZWQgc29tZXRpbWUgYmV0d2VlbgotCQkgKiBzZXR0aW5nIGFsbF92aXNpYmxl X2FjY29yZGluZ190b192bSBhbmQgY2hlY2tpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogZHVyaW5n IHBydW5pbmcuIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygb2xkX3ZtYml0cyBhbnl3YXkgdG8K LQkJICogZW5zdXJlIHRoZSB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5n IGFyZSBhY2N1cmF0ZS4KLQkJICovCi0JCWlmICgob2xkX3ZtYml0cyAmIFZJU0lCSUxJVFlNQVBf QUxMX1ZJU0lCTEUpID09IDApCi0JCXsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfcGFnZXMr KzsKLQkJCXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1fcGFn ZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0KLQkJLyoKLQkJICogV2UgYWxyZWFkeSBjaGVja2VkIHRo YXQgdGhlIHBhZ2Ugd2FzIG5vdCBzZXQgYWxsLWZyb3plbiBpbiB0aGUgVk0KLQkJICogYWJvdmUs IHNvIHdlIGRvbid0IG5lZWQgdG8gdGVzdCB0aGUgdmFsdWUgb2Ygb2xkX3ZtYml0cy4KLQkJICov Ci0JCWVsc2UKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfZnJvemVuX3BhZ2VzKys7Ci0JCQkqdm1f cGFnZV9mcm96ZW4gPSB0cnVlOwotCQl9Ci0JfQotCiAJcmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7 CiB9CiAKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Disposition: attachment; filename="v13-0008-Keep-all_frozen-updated-too-in-heap_page_prune_a.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4a8 RnJvbSAxMjEzMGI0ZjZmYTg4YzllNzQ4ZDQ1ZGE4NjBhNWY4YjFhN2RkMjg5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDIzIEp1bCAyMDI1IDE2OjAxOjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDgvMjBdIEtlZXAgYWxsX2Zyb3plbiB1cGRhdGVkIHRvbyBpbgogaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUKCldlIHByZXZpb3VzbHkgcmVsaWVkIG9uIG9ubHkgdXNpbmcgYWxs LXZpc2libGUgYW5kIGFsbC1mcm96ZW4gdG9nZXRoZXIKYnV0IGl0J3MgYmVzdCB0byBrZWVwIHRo ZW0gYm90aCB1cGRhdGVkLgoKRnV0dXJlIGNvbW1pdHMgd2lsbCBzZXBhcmF0ZSB1c2FnZSBvZiB0 aGVzZSBmaWVsZHMsIHNvIGl0IGlzIGJlc3Qgbm90IHRvCnJlbHkgb24gYWxsX3Zpc2libGUgZm9y IGFsbF9mcm96ZW4ncyB2YWxpZGl0eS4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVu ZWhlYXAuYyB8IDE1ICsrKysrKy0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9u cygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4 IDhmOTY4YjQ3YzM4Li4zYmU0YWUzYWUyYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFw LmMKQEAgLTE0MywxMCArMTQzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiB3aGV0aGVyIHRvIGZy ZWV6ZSB0aGUgcGFnZSBvciBub3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KIAkg KiB2YWx1ZXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBM UF9ERUFEIGl0ZW1zIGF0CiAJICogdGhlIGVuZC4KLQkgKgotCSAqIGFsbF9mcm96ZW4gc2hvdWxk IG9ubHkgYmUgY29uc2lkZXJlZCB2YWxpZCBpZiBhbGxfdmlzaWJsZSBpcyBhbHNvIHNldDsKLQkg KiB3ZSBkb24ndCBib3RoZXIgdG8gY2xlYXIgdGhlIGFsbF9mcm96ZW4gZmxhZyBldmVyeSB0aW1l IHdlIGNsZWFyIHRoZQotCSAqIGFsbF92aXNpYmxlIGZsYWcuCiAJICovCiAJYm9vbAkJYWxsX3Zp c2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKQEAgLTgzMCw2ICs4MjYsNyBAQCBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJICov CiAJfQogCisJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJs ZSk7CiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNyaXRpY2Fs ICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKQEAgLTE0NzQsNyArMTQ3MSw3IEBAIGhlYXBf cHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpw cnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJCQlpZiAoIUhlYXBUdXBsZUhlYWRlclhtaW5Db21taXR0 ZWQoaHR1cCkpCiAJCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJ CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAkJ CQkJYnJlYWs7CiAJCQkJfQogCkBAIC0xNDk2LDcgKzE0OTMsNyBAQCBoZWFwX3BydW5lX3JlY29y ZF91bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zm c2V0TnVtYgogCQkJCUFzc2VydChwcnN0YXRlLT5jdXRvZmZzKTsKIAkJCQlpZiAoIVRyYW5zYWN0 aW9uSWRQcmVjZWRlcyh4bWluLCBwcnN0YXRlLT5jdXRvZmZzLT5PbGRlc3RYbWluKSkKIAkJCQl7 Ci0JCQkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gZmFsc2U7CisJCQkJCXByc3RhdGUtPmFsbF92 aXNpYmxlID0gcHJzdGF0ZS0+YWxsX2Zyb3plbiA9IGZhbHNlOwogCQkJCQlicmVhazsKIAkJCQl9 CiAKQEAgLTE1MDksNyArMTUwNiw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9u b3JtYWwoUGFnZSBwYWdlLCBQcnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAKIAkJY2Fz ZSBIRUFQVFVQTEVfUkVDRU5UTFlfREVBRDoKIAkJCXByc3RhdGUtPnJlY2VudGx5X2RlYWRfdHVw bGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0ZS0+YWxs X3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJCQkgKiBU aGlzIHR1cGxlIHdpbGwgc29vbiBiZWNvbWUgREVBRC4gIFVwZGF0ZSB0aGUgaGludCBmaWVsZCBz bwpAQCAtMTUyOCw3ICsxNTI1LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25v cm1hbChQYWdlIHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCSAqIGFz c3VtcHRpb24gaXMgYSBiaXQgc2hha3ksIGJ1dCBpdCBpcyB3aGF0IGFjcXVpcmVfc2FtcGxlX3Jv d3MoKQogCQkJICogZG9lcywgc28gYmUgY29uc2lzdGVudC4KIAkJCSAqLwotCQkJcHJzdGF0ZS0+ YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJCXByc3RhdGUtPmFsbF92aXNpYmxlID0gcHJzdGF0ZS0+ YWxsX2Zyb3plbiA9IGZhbHNlOwogCiAJCQkvKgogCQkJICogSWYgd2Ugd2FudGVkIHRvIG9wdGlt aXplIGZvciBhYm9ydHMsIHdlIG1pZ2h0IGNvbnNpZGVyIG1hcmtpbmcKQEAgLTE1NDYsNyArMTU0 Myw3IEBAIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoUGFnZSBwYWdlLCBQ cnVuZVN0YXRlICpwcnN0YXRlLCBPZmZzZXROdW1iCiAJCQkgKiB3aWxsIGNvbW1pdCBhbmQgdXBk YXRlIHRoZSBjb3VudGVycyBhZnRlciB3ZSByZXBvcnQuCiAJCQkgKi8KIAkJCXByc3RhdGUtPmxp dmVfdHVwbGVzKys7Ci0JCQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CiAKIAkJCS8qCiAJ CQkgKiBUaGlzIHR1cGxlIG1heSBzb29uIGJlY29tZSBERUFELiAgVXBkYXRlIHRoZSBoaW50IGZp ZWxkIHNvIHRoYXQKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Disposition: attachment; filename="v13-0005-Combine-lazy_scan_prune-VM-corruption-cases.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy415 RnJvbSBjYjRmYjc4MDg2N2NkODczNmQ0ZDdkNWI4YTQ5MDg5YTYxMDVmZWUyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDI4IE1heSAyMDI1IDE2OjA0OjAzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMDUvMjBdIENvbWJpbmUgbGF6eV9zY2FuX3BydW5lIFZNIGNvcnJ1cHRpb24gY2Fz ZXMKCmxhenlfc2Nhbl9wcnVuZSgpIHVwZGF0ZXMgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBo YXNlIEkgb2YgaGVhcAp2YWN1dW1pbmcuIEl0IGFsc28gY2hlY2tzIGFuZCBmaXhlcyBjb3JydXB0 aW9uIGluIHRoZSBWTS4gVGhlIGNvcnJ1cHRpb24KY2FzZXMgd2hlcmUgbWl4ZWQgaW4gd2l0aCB0 aGUgbm9ybWFsIHZpc2liaWxpdHkgbWFwIHVwZGF0ZSBjYXNlcy4KCkNhcmVmdWwgc3R1ZHkgb2Yg dGhlIG9yZGVyaW5nIG9mIHRoZSBjdXJyZW50IGxvZ2ljIHJldmVhbHMgdGhhdCB0aGUKY29ycnVw dGlvbiBjYXNlcyBjYW4gYmUgcmVvcmRlcmVkIGFuZCBleHRyYWN0ZWQgaW50byBhIHNlcGFyYXRl CmZ1bmN0aW9uLiBUaGlzIHNob3VsZCByZXN1bHQgaW4gbm8gYWRkaXRpb25hbCBvdmVyaGVhZCB3 aGVuIGNvbXBhcmVkIHRvCnByZXZpb3VzIGV4ZWN1dGlvbi4KClRoaXMgcmVvcmRlcmluZyBtYWtl cyBpdCBjbGVhciB3aGljaCBjYXNlcyBhcmUgYWJvdXQgY29ycnVwdGlvbiBhbmQKd2hpY2ggY2Fz ZXMgYXJlIG5vcm1hbCBWTSB1cGRhdGVzLiBTZXBhcmF0aW5nIHRoZW0gYWxzbyBtYWtlcyBpdApw b3NzaWJsZSB0byBjb21iaW5lIHRoZSBub3JtYWwgY2FzZXMgaW4gYSBmdXR1cmUgY29tbWl0LiBU aGlzIHdpbGwgbWFrZQp0aGUgbG9naWMgZWFzaWVyIHRvIHVuZGVyc3RhbmQgYW5kIGFsbG93IGZv ciBmdXJ0aGVyIHNlcGFyYXRpb24gb2YgdGhlCmxvZ2ljIHRvIGFsbG93IHVwZGF0aW5nIHRoZSBW TSBpbiB0aGUgc2FtZSByZWNvcmQgYXMgcHJ1bmluZyBhbmQKZnJlZXppbmcgaW4gcGhhc2UgSS4K LS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgfCAxMjYgKysrKysrKysr KysrKysrKystLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygrKSwgNDcg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVt bGF6eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IGExY2Rh YWViYjU3Li5lOWI0ZTkyNGQyMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpA QCAtNDMwLDYgKzQzMCwxMiBAQCBzdGF0aWMgdm9pZCBmaW5kX25leHRfdW5za2lwcGFibGVfYmxv Y2soTFZSZWxTdGF0ZSAqdmFjcmVsLCBib29sICpza2lwc2FsbHZpcyk7CiBzdGF0aWMgYm9vbCBs YXp5X3NjYW5fbmV3X29yX2VtcHR5KExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwKIAkJ CQkJCQkJICAgQmxvY2tOdW1iZXIgYmxrbm8sIFBhZ2UgcGFnZSwKIAkJCQkJCQkJICAgYm9vbCBz aGFyZWxvY2ssIEJ1ZmZlciB2bWJ1ZmZlcik7CitzdGF0aWMgYm9vbCBpZGVudGlmeV9hbmRfZml4 X3ZtX2NvcnJ1cHRpb24oUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJICAgQmxvY2tOdW1i ZXIgaGVhcF9ibGssCisJCQkJCQkJCQkJICAgQnVmZmVyIGhlYXBfYnVmZmVyLCBQYWdlIGhlYXBf cGFnZSwKKwkJCQkJCQkJCQkgICBib29sIGhlYXBfYmxrX2tub3duX2F2LAorCQkJCQkJCQkJCSAg IGludDY0IG5scGRlYWRfaXRlbXMsCisJCQkJCQkJCQkJICAgQnVmZmVyIHZtYnVmZmVyKTsKIHN0 YXRpYyBpbnQJbGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJCQlCbG9ja051bWJlciBibGtubywgUGFnZSBwYWdlLAogCQkJCQkJCUJ1ZmZlciB2bWJ1 ZmZlciwgYm9vbCBhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0sCkBAIC0xOTM0LDYgKzE5NDAs NzIgQEAgbGF6eV9zY2FuX25ld19vcl9lbXB0eShMVlJlbFN0YXRlICp2YWNyZWwsIEJ1ZmZlciBi dWYsIEJsb2NrTnVtYmVyIGJsa25vLAogCXJldHVybiBmYWxzZTsKIH0KIAorLyoKKyAqIFdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFmdGVyIHBoYXNlIEkgaGVhcCB2YWN1dW1pbmcs IHdlIHRha2UgdGhlCisgKiBvcHBvcnR1bml0eSB0byBpZGVudGlmeSBhbmQgZml4IGFueSBWTSBj b3JydXB0aW9uLgorICoKKyAqIGhlYXBfYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0 YXR1cyBvZiB0aGUgaGVhcCBwYWdlIGNvbGxlY3RlZAorICogd2hpbGUgZmluZGluZyB0aGUgbmV4 dCB1bnNraXBwYWJsZSBibG9jayBpbiBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKS4KKyAqLwor c3RhdGljIGJvb2wKK2lkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxh dGlvbiwKKwkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwX2JsaywKKwkJCQkJCQkgICBCdWZmZXIg aGVhcF9idWZmZXIsIFBhZ2UgaGVhcF9wYWdlLAorCQkJCQkJCSAgIGJvb2wgaGVhcF9ibGtfa25v d25fYXYsCisJCQkJCQkJICAgaW50NjQgbmxwZGVhZF9pdGVtcywKKwkJCQkJCQkgICBCdWZmZXIg dm1idWZmZXIpCit7CisJLyoKKwkgKiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBzaG91bGQgbmV2ZXIgYmUgc2V0IGlmIHRoZQorCSAqIHBhZ2UtbGV2ZWwgYml0 IGlzIGNsZWFyLiAgSG93ZXZlciwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290CisJICog Y2xlYXJlZCBhZnRlciBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3 ZSBtdXN0IHJlY2hlY2sKKwkgKiB3aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRo YXQgdGhlIFZNIGlzIGNvcnJ1cHQuCisJICovCisJaWYgKGhlYXBfYmxrX2tub3duX2F2ICYmICFQ YWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkgJiYKKwkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVz KHJlbGF0aW9uLCBoZWFwX2JsaywgJnZtYnVmZmVyKSAhPSAwKQorCXsKKwkJZXJlcG9ydChXQVJO SU5HLAorCQkJCShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAorCQkJCSBlcnJtc2co InBhZ2UgaXMgbm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlz IHNldCBpbiByZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCisJCQkJCQlSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWxhdGlvbiksIGhlYXBfYmxrKSkpOworCisJCXZpc2liaWxpdHltYXBfY2xlYXIo cmVsYXRpb24sIGhlYXBfYmxrLCB2bWJ1ZmZlciwKKwkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElE X0JJVFMpOworCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgZm9y IHRoZSB2YWx1ZSByZXR1cm5lZCBieQorCSAqIEdldE9sZGVzdE5vblJlbW92YWJsZVRyYW5zYWN0 aW9uSWQoKSB0byBtb3ZlIGJhY2t3YXJkcywgc28gaXQncyBub3QKKwkgKiB3cm9uZyBmb3IgdXMg dG8gc2VlIHR1cGxlcyB0aGF0IGFwcGVhciB0byBub3QgYmUgdmlzaWJsZSB0byBldmVyeW9uZQor CSAqIHlldCwgd2hpbGUgUERfQUxMX1ZJU0lCTEUgaXMgYWxyZWFkeSBzZXQuIFRoZSByZWFsIHNh ZmUgeG1pbiB2YWx1ZQorCSAqIG5ldmVyIG1vdmVzIGJhY2t3YXJkcywgYnV0IEdldE9sZGVzdE5v blJlbW92YWJsZVRyYW5zYWN0aW9uSWQoKSBpcworCSAqIGNvbnNlcnZhdGl2ZSBhbmQgc29tZXRp bWVzIHJldHVybnMgYSB2YWx1ZSB0aGF0J3MgdW5uZWNlc3NhcmlseSBzbWFsbCwKKwkgKiBzbyBp ZiB3ZSBzZWUgdGhhdCBjb250cmFkaWN0aW9uIGl0IGp1c3QgbWVhbnMgdGhhdCB0aGUgdHVwbGVz IHRoYXQgd2UKKwkgKiB0aGluayBhcmUgbm90IHZpc2libGUgdG8gZXZlcnlvbmUgeWV0IGFjdHVh bGx5IGFyZSwgYW5kIHRoZQorCSAqIFBEX0FMTF9WSVNJQkxFIGZsYWcgaXMgY29ycmVjdC4KKwkg KgorCSAqIFRoZXJlIHNob3VsZCBuZXZlciBiZSBMUF9ERUFEIGl0ZW1zIG9uIGEgcGFnZSB3aXRo IFBEX0FMTF9WSVNJQkxFIHNldCwKKwkgKiBob3dldmVyLgorCSAqLworCWlmIChubHBkZWFkX2l0 ZW1zID4gMCAmJiBQYWdlSXNBbGxWaXNpYmxlKGhlYXBfcGFnZSkpCisJeworCQllcmVwb3J0KFdB Uk5JTkcsCisJCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJVUFRFRCksCisJCQkJIGVycm1z ZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFya2VkIGFzIGFsbC12aXNpYmxl IGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKKwkJCQkJCVJlbGF0aW9uR2V0UmVsYXRpb25O YW1lKHJlbGF0aW9uKSwgaGVhcF9ibGspKSk7CisKKwkJUGFnZUNsZWFyQWxsVmlzaWJsZShoZWFw X3BhZ2UpOworCQlNYXJrQnVmZmVyRGlydHkoaGVhcF9idWZmZXIpOworCQl2aXNpYmlsaXR5bWFw X2NsZWFyKHJlbGF0aW9uLCBoZWFwX2Jsaywgdm1idWZmZXIsCisJCQkJCQkJVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTKTsKKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOworfQor CisKIC8qIHFzb3J0IGNvbXBhcmF0b3IgZm9yIHNvcnRpbmcgT2Zmc2V0TnVtYmVycyAqLwogc3Rh dGljIGludAogY21wT2Zmc2V0TnVtYmVycyhjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQpA QCAtMjA4MCw5ICsyMTUyLDE0IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJLyoKIAkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQgYmFzZWQgb24gaW5m b3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCiAJICogb2YgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRf YmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICogYWxsX2Zyb3plbiB2 YXJpYWJsZXMKKwkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4gU3RhcnQgYnkgbG9va2luZyBmb3Ig YW55IFZNIGNvcnJ1cHRpb24uCiAJICovCi0JaWYgKCFhbGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9f dm0gJiYgcHJlc3VsdC5hbGxfdmlzaWJsZSkKKwlpZiAoaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3Jy dXB0aW9uKHZhY3JlbC0+cmVsLCBibGtubywgYnVmLCBwYWdlLAorCQkJCQkJCQkJICAgYWxsX3Zp c2libGVfYWNjb3JkaW5nX3RvX3ZtLCBwcmVzdWx0LmxwZGVhZF9pdGVtcywgdm1idWZmZXIpKQor CXsKKwkJLyogRG9uJ3QgdXBkYXRlIHRoZSBWTSBpZiB3ZSBqdXN0IGNsZWFyZWQgY29ycnVwdGlv biBpbiBpdCAqLworCX0KKwllbHNlIGlmICghYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYm IHByZXN1bHQuYWxsX3Zpc2libGUpCiAJewogCQl1aW50OAkJb2xkX3ZtYml0czsKIAkJdWludDgJ CWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKQEAgLTIxMzQsNTEgKzIyMTEsNiBA QCBsYXp5X3NjYW5fcHJ1bmUoTFZSZWxTdGF0ZSAqdmFjcmVsLAogCQl9CiAJfQogCi0JLyoKLQkg KiBBcyBvZiBQb3N0Z3JlU1FMIDkuMiwgdGhlIHZpc2liaWxpdHkgbWFwIGJpdCBzaG91bGQgbmV2 ZXIgYmUgc2V0IGlmIHRoZQotCSAqIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLiAgSG93ZXZlciwg aXQncyBwb3NzaWJsZSB0aGF0IHRoZSBiaXQgZ290Ci0JICogY2xlYXJlZCBhZnRlciBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSB3YXMgY2FsbGVkLCBzbyB3ZSBtdXN0IHJlY2hlY2sKLQkgKiB3 aXRoIGJ1ZmZlciBsb2NrIGJlZm9yZSBjb25jbHVkaW5nIHRoYXQgdGhlIFZNIGlzIGNvcnJ1cHQu Ci0JICovCi0JZWxzZSBpZiAoYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtICYmICFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpICYmCi0JCQkgdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKHZhY3JlbC0+ cmVsLCBibGtubywgJnZtYnVmZmVyKSAhPSAwKQotCXsKLQkJZXJlcG9ydChXQVJOSU5HLAotCQkJ CShlcnJjb2RlKEVSUkNPREVfREFUQV9DT1JSVVBURUQpLAotCQkJCSBlcnJtc2coInBhZ2UgaXMg bm90IG1hcmtlZCBhbGwtdmlzaWJsZSBidXQgdmlzaWJpbGl0eSBtYXAgYml0IGlzIHNldCBpbiBy ZWxhdGlvbiBcIiVzXCIgcGFnZSAldSIsCi0JCQkJCQl2YWNyZWwtPnJlbG5hbWUsIGJsa25vKSkp OwotCi0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5yZWwsIGJsa25vLCB2bWJ1ZmZlciwK LQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwotCX0KLQotCS8qCi0JICogSXQncyBw b3NzaWJsZSBmb3IgdGhlIHZhbHVlIHJldHVybmVkIGJ5Ci0JICogR2V0T2xkZXN0Tm9uUmVtb3Zh YmxlVHJhbnNhY3Rpb25JZCgpIHRvIG1vdmUgYmFja3dhcmRzLCBzbyBpdCdzIG5vdAotCSAqIHdy b25nIGZvciB1cyB0byBzZWUgdHVwbGVzIHRoYXQgYXBwZWFyIHRvIG5vdCBiZSB2aXNpYmxlIHRv IGV2ZXJ5b25lCi0JICogeWV0LCB3aGlsZSBQRF9BTExfVklTSUJMRSBpcyBhbHJlYWR5IHNldC4g VGhlIHJlYWwgc2FmZSB4bWluIHZhbHVlCi0JICogbmV2ZXIgbW92ZXMgYmFja3dhcmRzLCBidXQg R2V0T2xkZXN0Tm9uUmVtb3ZhYmxlVHJhbnNhY3Rpb25JZCgpIGlzCi0JICogY29uc2VydmF0aXZl IGFuZCBzb21ldGltZXMgcmV0dXJucyBhIHZhbHVlIHRoYXQncyB1bm5lY2Vzc2FyaWx5IHNtYWxs LAotCSAqIHNvIGlmIHdlIHNlZSB0aGF0IGNvbnRyYWRpY3Rpb24gaXQganVzdCBtZWFucyB0aGF0 IHRoZSB0dXBsZXMgdGhhdCB3ZQotCSAqIHRoaW5rIGFyZSBub3QgdmlzaWJsZSB0byBldmVyeW9u ZSB5ZXQgYWN0dWFsbHkgYXJlLCBhbmQgdGhlCi0JICogUERfQUxMX1ZJU0lCTEUgZmxhZyBpcyBj b3JyZWN0LgotCSAqCi0JICogVGhlcmUgc2hvdWxkIG5ldmVyIGJlIExQX0RFQUQgaXRlbXMgb24g YSBwYWdlIHdpdGggUERfQUxMX1ZJU0lCTEUgc2V0LAotCSAqIGhvd2V2ZXIuCi0JICovCi0JZWxz ZSBpZiAocHJlc3VsdC5scGRlYWRfaXRlbXMgPiAwICYmIFBhZ2VJc0FsbFZpc2libGUocGFnZSkp Ci0JewotCQllcmVwb3J0KFdBUk5JTkcsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9EQVRBX0NPUlJV UFRFRCksCi0JCQkJIGVycm1zZygicGFnZSBjb250YWluaW5nIExQX0RFQUQgaXRlbXMgaXMgbWFy a2VkIGFzIGFsbC12aXNpYmxlIGluIHJlbGF0aW9uIFwiJXNcIiBwYWdlICV1IiwKLQkJCQkJCXZh Y3JlbC0+cmVsbmFtZSwgYmxrbm8pKSk7Ci0KLQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsK LQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7Ci0JCXZpc2liaWxpdHltYXBfY2xlYXIodmFjcmVsLT5y ZWwsIGJsa25vLCB2bWJ1ZmZlciwKLQkJCQkJCQlWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpOwot CX0KLQogCS8qCiAJICogSWYgdGhlIGFsbC12aXNpYmxlIHBhZ2UgaXMgYWxsLWZyb3plbiBidXQg bm90IG1hcmtlZCBhcyBzdWNoIHlldCwgbWFyawogCSAqIGl0IGFzIGFsbC1mcm96ZW4uICBOb3Rl IHRoYXQgYWxsX2Zyb3plbiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzCi0tIAoyLjQz LjAKCg== --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Disposition: attachment; filename="v13-0010-Rename-PruneState.freeze-to-attempt_freeze.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4i10 RnJvbSA0MjgxN2Q5NWVjNWJkYTVmYjE2NDE2NzgyNWI1ODU3MzFlNGZkYzcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDE0OjA3OjUxIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTAvMjBdIFJlbmFtZSBQcnVuZVN0YXRlLmZyZWV6ZSB0byBhdHRlbXB0X2ZyZWV6 ZQoKVGhpcyBtYWtlcyBpdCBtb3JlIGNsZWFyIHRoYXQgdGhpcyBpcyB0byBpbmRpY2F0ZSB0aGUg Y2FsbGVyIHdvdWxkIGxpa2UKaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoKSB0byBjb25zaWRl ciBmcmVlemluZyB0dXBsZXMgLS0gbm90IHRoYXQgd2UKdWx0aW1hdGVseSB3aWxsIGVuZCB1cCBm cmVlemluZyB0aGVtLgoKQWxzbyByZW5hbWUgbG9jYWwgdmFyaWFibGUgaGludF9iaXRfZnBpIHRv IGRpZF90dXBsZV9oaW50X2ZwaS4gVGhpcwptYWtlcyBpdCBjbGVhciBpdCBpcyBhYm91dCB0dXBs ZSBoaW50cyBhbmQgbm90IHBhZ2UgaGludHMgYW5kIHRoYXQgaXQKaW5kaWNhdGVzIHNvbWV0aGlu ZyB0aGF0IGhhcHBlbmVkIGFuZCBub3Qgc29tZXRoaW5nIHRoYXQgY291bGQgaGFwcGVuLgotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIHwgMjAgKysrKysrKysrKy0tLS0t LS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IGFlNTkyNDJhODQzLi40NGIxODZh NDU2MCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQzLDcgKzQzLDcgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkvKiB3aGV0aGVyIG9yIG5vdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZyBwcnVuaW5nICovCiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8q IHdoZXRoZXIgdG8gYXR0ZW1wdCBmcmVlemluZyB0dXBsZXMgKi8KLQlib29sCQlmcmVlemU7CisJ Ym9vbAkJYXR0ZW1wdF9mcmVlemU7CiAJc3RydWN0IFZhY3V1bUN1dG9mZnMgKmN1dG9mZnM7CiAK IAkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTQ0NSwxMyArNDQ1LDEzIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCWJvb2wJCWRvX2hpbnQ7CiAJdWludDgJCXZt ZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRzID0gMDsKLQlib29sCQloaW50X2JpdF9mcGk7 CisJYm9vbAkJZGlkX3R1cGxlX2hpbnRfZnBpOwogCWludDY0CQlmcGlfYmVmb3JlID0gcGdXYWxV c2FnZS53YWxfZnBpOwogCiAJLyogQ29weSBwYXJhbWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0 YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3RhdGUubWFya191bnVzZWRfbm93ID0gKG9wdGlv bnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVTRURfTk9XKSAhPSAwOwotCXByc3RhdGUuZnJl ZXplID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfRlJFRVpFKSAhPSAwOworCXByc3RhdGUu YXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9GUkVFWkUpICE9IDA7 CiAJcHJzdGF0ZS5jdXRvZmZzID0gY3V0b2ZmczsKIAogCS8qCkBAIC00NzMsNyArNDczLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAKIAkvKiBpbml0aWFsaXplIHBhZ2UgZnJlZXppbmcgd29ya2luZyBzdGF0ZSAqLwogCXBy c3RhdGUucGFnZWZyei5mcmVlemVfcmVxdWlyZWQgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5mcmVl emUpCisJaWYgKHByc3RhdGUuYXR0ZW1wdF9mcmVlemUpCiAJewogCQlBc3NlcnQobmV3X3JlbGZy b3plbl94aWQgJiYgbmV3X3JlbG1pbl9teGlkKTsKIAkJcHJzdGF0ZS5wYWdlZnJ6LkZyZWV6ZVBh Z2VSZWxmcm96ZW5YaWQgPSAqbmV3X3JlbGZyb3plbl94aWQ7CkBAIC01MjAsNyArNTIwLDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJICogZnVuY3Rpb24sIHdoZW4gd2UgcmV0dXJuIHRoZSB2YWx1ZSB0byB0aGUgY2FsbGVy LCBzbyB0aGF0IHRoZSBjYWxsZXIKIAkgKiBkb2Vzbid0IHNldCB0aGUgVk0gYml0IGluY29ycmVj dGx5LgogCSAqLwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRlbXB0X2Zy ZWV6ZSkKIAl7CiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSB0cnVlOwogCQlwcnN0YXRlLmFsbF9m cm96ZW4gPSB0cnVlOwpAQCAtNjM0LDcgKzYzNCw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJl ZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIElmIGNoZWNrc3VtcyBh cmUgZW5hYmxlZCwgaGVhcF9wcnVuZV9zYXRpc2ZpZXNfdmFjdXVtKCkgbWF5IGhhdmUgY2F1c2Vk CiAJICogYW4gRlBJIHRvIGJlIGVtaXR0ZWQuCiAJICovCi0JaGludF9iaXRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CisJZGlkX3R1cGxlX2hpbnRfZnBpID0gZnBpX2Jl Zm9yZSAhPSBwZ1dhbFVzYWdlLndhbF9mcGk7CiAKIAkvKgogCSAqIFByb2Nlc3MgSE9UIGNoYWlu cy4KQEAgLTc1MCw3ICs3NTAsNyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkgKiBwbGFucyB3ZSBwcmVwYXJlZCwgb3Igbm90 LgogCSAqLwogCWRvX2ZyZWV6ZSA9IGZhbHNlOwotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAo cHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcnN0YXRlLnBhZ2VmcnouZnJlZXpl X3JlcXVpcmVkKQogCQl7CkBAIC03ODMsNyArNzgzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9m cmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkJICovCiAJCQkJaWYg KFJlbGF0aW9uTmVlZHNXQUwocmVsYXRpb24pKQogCQkJCXsKLQkJCQkJaWYgKGhpbnRfYml0X2Zw aSkKKwkJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKIAkJCQkJCWRvX2ZyZWV6ZSA9IHRydWU7 CiAJCQkJCWVsc2UgaWYgKGRvX3BydW5lKQogCQkJCQl7CkBAIC0xMDQ2LDcgKzEwNDYsNyBAQCBo ZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZl ciwKIAlwcmVzdWx0LT5vbGRfdm1iaXRzID0gb2xkX3ZtYml0czsKIAlwcmVzdWx0LT5uZXdfdm1i aXRzID0gdm1mbGFnczsKIAotCWlmIChwcnN0YXRlLmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS5hdHRl bXB0X2ZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKIAkJewpAQCAtMTYy OCw3ICsxNjI4LDcgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdl IHBhZ2UsIFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAl9CiAKIAkvKiBDb25zaWRl ciBmcmVlemluZyBhbnkgbm9ybWFsIHR1cGxlcyB3aGljaCB3aWxsIG5vdCBiZSByZW1vdmVkICov Ci0JaWYgKHByc3RhdGUtPmZyZWV6ZSkKKwlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJ ewogCQlib29sCQl0b3RhbGx5X2Zyb3plbjsKIAotLSAKMi40My4wCgo= --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0009-Update-VM-in-pruneheap.c.patch" Content-Disposition: attachment; filename="v13-0009-Update-VM-in-pruneheap.c.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4f9 RnJvbSA0MzA1YTdhYzhjNGIxZWNiYjg2M2U0ZGY5YjI5M2M4Y2YxYjdhNGU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBNb24sIDIgSnVuIDIwMjUgMTE6MDQ6MTQgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxMyAwOS8yMF0gVXBkYXRlIFZNIGluIHBydW5laGVhcC5jCgpBcyBhIHN0ZXAgdG93YXJk IHVwZGF0aW5nIHRoZSBWTSBpbiB0aGUgc2FtZSBjcml0aWNhbCBzZWN0aW9uIGFuZCBXQUwKcmVj b3JkIGFzIHBydW5pbmcgYW5kIGZyZWV6aW5nIChkdXJpbmcgcGhhc2UgSSBvZiB2YWN1dW1pbmcp LCBmaXJzdCBtb3ZlCnRoZSBWTSB1cGRhdGUgKHN0aWxsIGluIGl0cyBvd24gY3JpdGljYWwgc2Vj dGlvbiBhbmQgV0FMIHJlY29yZCkgaW50bwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLiBU aGlzIG1ha2VzIHJldmlldyBlYXNpZXIuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1 bmVoZWFwLmMgIHwgOTkgKysrKysrKysrKysrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgOTggKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0t CiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAxNSArKystLQogMyBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggM2JlNGFlM2FlMmEuLmFlNTkyNDJhODQzIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMzY2LDcgKzM2Niw4IEBAIGlkZW50aWZ5 X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKIAogLyoKICAqIFBydW5l IGFuZCByZXBhaXIgZnJhZ21lbnRhdGlvbiBhbmQgcG90ZW50aWFsbHkgZnJlZXplIHR1cGxlcyBv biB0aGUKLSAqIHNwZWNpZmllZCBwYWdlLgorICogc3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdl J3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5nZWQsIHVwZGF0ZSBpdCBpbgorICogdGhlIFZN LgogICoKICAqIENhbGxlciBtdXN0IGhhdmUgcGluIGFuZCBidWZmZXIgY2xlYW51cCBsb2NrIG9u IHRoZSBwYWdlLiAgTm90ZSB0aGF0IHdlCiAgKiBkb24ndCB1cGRhdGUgdGhlIEZTTSBpbmZvcm1h dGlvbiBmb3IgcGFnZSBvbiBjYWxsZXIncyBiZWhhbGYuICBDYWxsZXIgbWlnaHQKQEAgLTQ0Miw2 ICs0NDMsOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwg QnVmZmVyIGJ1ZmZlciwKIAlib29sCQlkb19mcmVlemU7CiAJYm9vbAkJZG9fcHJ1bmU7CiAJYm9v bAkJZG9faGludDsKKwl1aW50OAkJdm1mbGFncyA9IDA7CisJdWludDgJCW9sZF92bWJpdHMgPSAw OwogCWJvb2wJCWhpbnRfYml0X2ZwaTsKIAlpbnQ2NAkJZnBpX2JlZm9yZSA9IHBnV2FsVXNhZ2Uu d2FsX2ZwaTsKIApAQCAtOTQyLDcgKzk0NSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqCiAJICogTm93IHRoYXQgZnJl ZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUK IAkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3Qg dGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgYnkgb3VyIGNh bGxlci4KKwkgKiBvZiB0aGUgcGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNp YmlsaXR5IG1hcC4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxw ZGVhZF9pdGVtcyA9PSAwKQogCXsKQEAgLTk1OCwzMSArOTYxLDkxIEBAIGhlYXBfcGFnZV9wcnVu 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 aWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCisJCSAqIG5lZWRzIHRvIGJlIG1hcmtlZCBhbGwt ZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3plbgorCQkgKiBpcyBvbmx5 IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3QgY2hlY2sgYm90aAorCQkg KiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KKwkJICovCisJCWVsc2UgaWYgKHByZXN1bHQt PmFsbF92aXNpYmxlICYmCisJCQkJICghYmxrX2tub3duX2F2IHx8CisJCQkJICAocHJlc3VsdC0+ YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxvY2tubywgJnZtYnVmZmVy KSkpKQorCQl7CisJCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CisJCQl2bWZs YWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKworCQkJLyoKKwkJCSAqIElmIHRoZSBw YWdlIGlzIGFsbC1mcm96ZW4sIHdlIGNhbiBwYXNzIEludmFsaWRUcmFuc2FjdGlvbklkIGFzCisJ CQkgKiBvdXIgY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBzdWZm aWNpZW50IHRvCisJCQkgKiBtYWtlIGV2ZXJ5dGhpbmcgc2FmZSBmb3IgUkVETyB3YXMgbG9nZ2Vk IHdoZW4gdGhlIHBhZ2UncyB0dXBsZXMKKwkJCSAqIHdlcmUgZnJvemVuLgorCQkJICovCisJCQlp ZiAocHJlc3VsdC0+YWxsX2Zyb3plbikKKwkJCXsKKwkJCQlBc3NlcnQoIVRyYW5zYWN0aW9uSWRJ c1ZhbGlkKHByZXN1bHQtPnZtX2NvbmZsaWN0X2hvcml6b24pKTsKKwkJCQl2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJCX0KKworCQkJLyoKKwkJCSAqIEl0J3MgcG9zc2li bGUgZm9yIHRoZSBWTSBiaXQgdG8gYmUgY2xlYXIgYW5kIHRoZSBwYWdlLWxldmVsIGJpdAorCQkJ ICogdG8gYmUgc2V0IGlmIGNoZWNrc3VtcyBhcmUgbm90IGVuYWJsZWQuCisJCQkgKgorCQkJICog QW5kIGV2ZW4gaWYgd2UgYXJlIGp1c3QgcGxhbm5pbmcgdG8gdXBkYXRlIHRoZSBmcm96ZW4gYml0 IGluCisJCQkgKiB0aGUgVk0sIHdlIHNob3VsZG4ndCByZWx5IG9uIGFsbF92aXNpYmxlX2FjY29y ZGluZ190b192bSBhcyBhCisJCQkgKiBwcm94eSBmb3IgdGhlIHBhZ2UtbGV2ZWwgUERfQUxMX1ZJ U0lCTEUgYml0IGJlaW5nIHNldCwgc2luY2UgaXQKKwkJCSAqIG1pZ2h0IGhhdmUgYmVjb21lIHN0 YWxlLgorCQkJICoKKwkJCSAqIElmIHRoZSBoZWFwIHBhZ2UgaXMgYWxsLXZpc2libGUgYnV0IHRo ZSBWTSBiaXQgaXMgbm90IHNldCwgd2UKKwkJCSAqIGRvbid0IG5lZWQgdG8gZGlydHkgdGhlIGhl YXAgcGFnZS4gIEhvd2V2ZXIsIGlmIGNoZWNrc3VtcyBhcmUKKwkJCSAqIGVuYWJsZWQsIHdlIGRv IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkCisJCQkgKiBi ZWZvcmUgcGFzc2luZyBpdCB0byB2aXNpYmlsaXR5bWFwX3NldCgpLCBiZWNhdXNlIGl0IG1heSBi ZQorCQkJICogbG9nZ2VkLgorCQkJICovCisJCQlpZiAoIVBhZ2VJc0FsbFZpc2libGUocGFnZSkg fHwgWExvZ0hpbnRCaXRJc05lZWRlZCgpKQorCQkJeworCQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBh Z2UpOworCQkJCU1hcmtCdWZmZXJEaXJ0eShidWZmZXIpOworCQkJfQorCisJCQlvbGRfdm1iaXRz ID0gdmlzaWJpbGl0eW1hcF9zZXQocmVsYXRpb24sIGJsb2Nrbm8sIGJ1ZmZlciwgSW52YWxpZFhM b2dSZWNQdHIsCisJCQkJCQkJCQkJICAgdm1idWZmZXIsIHByZXN1bHQtPnZtX2NvbmZsaWN0X2hv cml6b24sCisJCQkJCQkJCQkJICAgdm1mbGFncyk7CisJCX0KKwl9CisKKwlwcmVzdWx0LT5scGRl YWRfaXRlbXMgPSBwcnN0YXRlLmxwZGVhZF9pdGVtczsKKwkvKiB0aGUgcHJlc3VsdC0+ZGVhZG9m ZnNldHMgYXJyYXkgd2FzIGFscmVhZHkgZmlsbGVkIGluICovCisKKwlwcmVzdWx0LT5vbGRfdm1i aXRzID0gb2xkX3ZtYml0czsKKwlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKKwogCWlm IChwcnN0YXRlLmZyZWV6ZSkKIAl7CiAJCWlmIChwcmVzdWx0LT5uZnJvemVuID4gMCkKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCBhMjIyYzlmOTE2NC4uOTQ5MjQyMzE0MWUg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTE5NDksNyArMTk0OSw4IEBA IGNtcE9mZnNldE51bWJlcnMoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKICAqIHZtYnVm ZmVyIGlzIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgVk0gYmxvY2sgd2l0aCB2aXNpYmlsaXR5 IGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIGhlYXAgYmxvY2ssIGJsa25vLiBhbGxfdmlzaWJsZV9h Y2NvcmRpbmdfdG9fdm0gaXMgdGhlIHNhdmVkCiAgKiB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUg aGVhcCBibG9jayBsb29rZWQgdXAgZWFybGllciBieSB0aGUgY2FsbGVyLiBXZQotICogd29uJ3Qg cmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBvZiBkYXRlLgor ICogd29uJ3QgcmVseSBlbnRpcmVseSBvbiB0aGlzIHN0YXR1cywgYXMgaXQgbWF5IGJlIG91dCBv ZiBkYXRlLiBUaGVzZSB3aWxsIGJlCisgKiBwYXNzZWQgb24gdG8gaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoKSB0byB1c2Ugd2hpbGUgc2V0dGluZyB0aGUgVk0uCiAgKgogICogKmhhc19scGRl YWRfaXRlbXMgaXMgc2V0IHRvIHRydWUgb3IgZmFsc2UgZGVwZW5kaW5nIG9uIHdoZXRoZXIsIHVw b24gcmV0dXJuCiAgKiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFueSBMUF9ERUFEIGl0ZW1zIGFyZSBz dGlsbCBwcmVzZW50IG9uIHRoZSBwYWdlLgpAQCAtMTk3OCw2ICsxOTc5LDcgQEAgbGF6eV9zY2Fu X3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAogCS8qCiAJICogUHJ1bmUgYWxsIEhPVC11cGRh dGUgY2hhaW5zIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoaXMgcGFnZS4KKwkg KiBUaGVuLCBpZiB0aGUgcGFnZSdzIHZpc2liaWxpdHkgc3RhdHVzIGhhcyBjaGFuZ2VkLCB1cGRh dGUgdGhlIFZNLgogCSAqCiAJICogSWYgdGhlIHJlbGF0aW9uIGhhcyBubyBpbmRleGVzLCB3ZSBj YW4gaW1tZWRpYXRlbHkgbWFyayB3b3VsZC1iZSBkZWFkCiAJICogaXRlbXMgTFBfVU5VU0VELgpA QCAtMTk4NiwxMCArMTk4OCw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWws CiAJICogcHJlc3VsdC5uZGVsZXRlZC4gIEl0IHNob3VsZCBub3QgYmUgY29uZnVzZWQgd2l0aCBw cmVzdWx0LmxwZGVhZF9pdGVtczsKIAkgKiBwcmVzdWx0LmxwZGVhZF9pdGVtcydzIGZpbmFsIHZh bHVlIGNhbiBiZSB0aG91Z2h0IG9mIGFzIHRoZSBudW1iZXIgb2YKIAkgKiB0dXBsZXMgdGhhdCB3 ZXJlIGRlbGV0ZWQgZnJvbSBpbmRleGVzLgotCSAqCi0JICogV2Ugd2lsbCB1cGRhdGUgdGhlIFZN IGFmdGVyIGNvbGxlY3RpbmcgTFBfREVBRCBpdGVtcyBhbmQgZnJlZXppbmcKLQkgKiB0dXBsZXMu IFBydW5pbmcgd2lsbCBoYXZlIGRldGVybWluZWQgd2hldGhlciBvciBub3QgdGhlIHBhZ2UgaXMK LQkgKiBhbGwtdmlzaWJsZS4KIAkgKi8KIAlwcnVuZV9vcHRpb25zID0gSEVBUF9QQUdFX1BSVU5F X0ZSRUVaRSB8IEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk07CiAJaWYgKHZhY3JlbC0+bmluZGV4 ZXMgPT0gMCkKQEAgLTIwODEsODggKzIwNzksMjYgQEAgbGF6eV9zY2FuX3BydW5lKExWUmVsU3Rh dGUgKnZhY3JlbCwKIAlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVh ZF9pdGVtcykpOwogCiAJLyoKLQkgKiBIYW5kbGUgc2V0dGluZyB2aXNpYmlsaXR5IG1hcCBiaXQg YmFzZWQgb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgVk0gKGFzCi0JICogb2YgbGFzdCBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKSwgYW5kIGZyb20gYWxsX3Zpc2libGUgYW5kCi0JICog YWxsX2Zyb3plbiB2YXJpYWJsZXMuCisJICogRm9yIHRoZSBwdXJwb3NlcyBvZiBsb2dnaW5nLCBj b3VudCB3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSB3YXMgbmV3bHkKKwkgKiBzZXQgYWxsLXZpc2li bGUgYW5kLCBwb3RlbnRpYWxseSwgYWxsLWZyb3plbi4KIAkgKi8KLQlpZiAocHJlc3VsdC52bV9j b3JydXB0aW9uKQorCWlmICgocHJlc3VsdC5vbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCAmJgorCQkocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9B TExfVklTSUJMRSkgIT0gMCkKIAl7Ci0JCS8qIERvbid0IHVwZGF0ZSB0aGUgVk0gaWYgd2UganVz dCBjbGVhcmVkIGNvcnJ1cHRpb24gaW4gaXQgKi8KLQl9Ci0KLQkvKgotCSAqIElmIHRoZSBwYWdl IGlzbid0IHlldCBtYXJrZWQgYWxsLXZpc2libGUgaW4gdGhlIFZNIG9yIGl0IGlzIGFuZCBuZWVk cwotCSAqIHRvIGJlIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQg YWxsX2Zyb3plbiBpcyBvbmx5Ci0JICogdmFsaWQgaWYgYWxsX3Zpc2libGUgaXMgdHJ1ZSwgc28g d2UgbXVzdCBjaGVjayBib3RoIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9mcm96ZW4uCi0JICov Ci0JZWxzZSBpZiAocHJlc3VsdC5hbGxfdmlzaWJsZSAmJgotCQkJICghYWxsX3Zpc2libGVfYWNj b3JkaW5nX3RvX3ZtIHx8Ci0JCQkgIChwcmVzdWx0LmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9a RU4odmFjcmVsLT5yZWwsIGJsa25vLCAmdm1idWZmZXIpKSkpCi0JewotCQl1aW50OAkJb2xkX3Zt Yml0czsKLQkJdWludDgJCWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKLQotCQkv KgotCQkgKiBJZiB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB3ZSBjYW4gcGFzcyBJbnZhbGlkVHJh bnNhY3Rpb25JZCBhcyBvdXIKLQkJICogY3V0b2ZmX3hpZCwgc2luY2UgYSBzbmFwc2hvdENvbmZs aWN0SG9yaXpvbiBzdWZmaWNpZW50IHRvIG1ha2UKLQkJICogZXZlcnl0aGluZyBzYWZlIGZvciBS RURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxlcyB3ZXJlCi0JCSAqIGZyb3plbi4K LQkJICovCi0JCWlmIChwcmVzdWx0LmFsbF9mcm96ZW4pCi0JCXsKLQkJCUFzc2VydCghVHJhbnNh Y3Rpb25JZElzVmFsaWQocHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKSk7Ci0JCQlmbGFncyB8 PSBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQotCQkvKgotCQkgKiBJdCBzaG91bGQg bmV2ZXIgYmUgdGhlIGNhc2UgdGhhdCB0aGUgdmlzaWJpbGl0eSBtYXAgcGFnZSBpcyBzZXQKLQkJ ICogd2hpbGUgdGhlIHBhZ2UtbGV2ZWwgYml0IGlzIGNsZWFyLCBidXQgdGhlIHJldmVyc2UgaXMg YWxsb3dlZCAoaWYKLQkJICogY2hlY2tzdW1zIGFyZSBub3QgZW5hYmxlZCkuICBSZWdhcmRsZXNz LCBzZXQgYm90aCBiaXRzIHNvIHRoYXQgd2UKLQkJICogZ2V0IGJhY2sgaW4gc3luYy4KLQkJICoK LQkJICogSWYgdGhlIGhlYXAgcGFnZSBpcyBhbGwtdmlzaWJsZSBidXQgdGhlIFZNIGJpdCBpcyBu b3Qgc2V0LCB3ZSBkb24ndAotCQkgKiBuZWVkIHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dl dmVyLCBpZiBjaGVja3N1bXMgYXJlIGVuYWJsZWQsIHdlCi0JCSAqIGRvIG5lZWQgdG8gbWFrZSBz dXJlIHRoYXQgdGhlIGhlYXAgcGFnZSBpcyBkaXJ0aWVkIGJlZm9yZSBwYXNzaW5nCi0JCSAqIGl0 IHRvIHZpc2liaWxpdHltYXBfc2V0KCksIGJlY2F1c2UgaXQgbWF5IGJlIGxvZ2dlZC4KLQkJICov Ci0JCWlmICghUGFnZUlzQWxsVmlzaWJsZShwYWdlKSB8fCBYTG9nSGludEJpdElzTmVlZGVkKCkp Ci0JCXsKLQkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJTWFya0J1ZmZlckRpcnR5KGJ1 Zik7Ci0JCX0KLQotCQlvbGRfdm1iaXRzID0gdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWws IGJsa25vLCBidWYsCi0JCQkJCQkJCQkgICBJbnZhbGlkWExvZ1JlY1B0ciwKLQkJCQkJCQkJCSAg IHZtYnVmZmVyLCBwcmVzdWx0LnZtX2NvbmZsaWN0X2hvcml6b24sCi0JCQkJCQkJCQkgICBmbGFn cyk7Ci0KLQkJLyoKLQkJICogRXZlbiBpZiB3ZSBhcmUgb25seSBzZXR0aW5nIHRoZSBhbGwtZnJv emVuIGJpdCwgdGhlcmUgaXMgYSBzbWFsbAotCQkgKiBjaGFuY2UgdGhhdCB0aGUgVk0gd2FzIG1v ZGlmaWVkIHNvbWV0aW1lIGJldHdlZW4gc2V0dGluZwotCQkgKiBhbGxfdmlzaWJsZV9hY2NvcmRp bmdfdG9fdm0gYW5kIGNoZWNraW5nIHRoZSB2aXNpYmlsaXR5IGR1cmluZwotCQkgKiBwcnVuaW5n LiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIG9sZF92bWJpdHMgdG8gZW5zdXJlIHRoZQotCQkg KiB2aXNpYmlsaXR5IG1hcCBjb3VudGVycyB1c2VkIGZvciBsb2dnaW5nIGFyZSBhY2N1cmF0ZS4K LQkJICoKLQkJICogSWYgdGhlIHBhZ2Ugd2Fzbid0IGFscmVhZHkgc2V0IGFsbC12aXNpYmxlIGFu ZC9vciBhbGwtZnJvemVuIGluIHRoZQotCQkgKiBWTSwgY291bnQgaXQgYXMgbmV3bHkgc2V0IGZv ciBsb2dnaW5nLgotCQkgKi8KLQkJaWYgKChvbGRfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf VklTSUJMRSkgPT0gMCkKLQkJewotCQkJdmFjcmVsLT52bV9uZXdfdmlzaWJsZV9wYWdlcysrOwot CQkJaWYgKHByZXN1bHQuYWxsX2Zyb3plbikKLQkJCXsKLQkJCQl2YWNyZWwtPnZtX25ld192aXNp YmxlX2Zyb3plbl9wYWdlcysrOwotCQkJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7Ci0JCQl9Ci0J CX0KLQkJZWxzZSBpZiAoKG9sZF92bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pID09 IDAgJiYKLQkJCQkgcHJlc3VsdC5hbGxfZnJvemVuKQorCQl2YWNyZWwtPnZtX25ld192aXNpYmxl X3BhZ2VzKys7CisJCWlmICgocHJlc3VsdC5uZXdfdm1iaXRzICYgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOKSAhPSAwKQogCQl7Ci0JCQl2YWNyZWwtPnZtX25ld19mcm96ZW5fcGFnZXMrKzsKKwkJ CXZhY3JlbC0+dm1fbmV3X3Zpc2libGVfZnJvemVuX3BhZ2VzKys7CiAJCQkqdm1fcGFnZV9mcm96 ZW4gPSB0cnVlOwogCQl9CiAJfQorCWVsc2UgaWYgKChwcmVzdWx0Lm9sZF92bWJpdHMgJiBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU4pID09IDAgJiYKKwkJCSAocHJlc3VsdC5uZXdfdm1iaXRzICYg VklTSUJJTElUWU1BUF9BTExfRlJPWkVOKSAhPSAwKQorCXsKKwkJQXNzZXJ0KChwcmVzdWx0Lm5l d192bWJpdHMgJiBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFKSAhPSAwKTsKKwkJdmFjcmVsLT52 bV9uZXdfZnJvemVuX3BhZ2VzKys7CisJCSp2bV9wYWdlX2Zyb3plbiA9IHRydWU7CisJfQogCiAJ cmV0dXJuIHByZXN1bHQubmRlbGV0ZWQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggYTNiODVmZDFk YWYuLjk5NTJhZTk2YjEyIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgK KysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCkBAIC0yMzUsMjAgKzIzNSwyMSBAQCB0 eXBlZGVmIHN0cnVjdCBQcnVuZUZyZWV6ZVJlc3VsdAogCWludAkJCXJlY2VudGx5X2RlYWRfdHVw bGVzOwogCiAJLyoKLQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0 aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KLQkgKiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5 IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UsIGFmdGVyIHBydW5pbmcuCisJICogYWxsX3Zp c2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0YXR1cyBvZiB0aGUgcGFnZSBhcyBy ZWZsZWN0ZWQKKwkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAgYWZ0ZXIgcHJ1bmluZywgZnJlZXpp bmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcworCSAqIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmls aXR5IG1hcC4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5ld2VzdCB4bWlu IG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiAgVGhlCi0JICogY2FsbGVyIGNhbiB1c2UgaXQg YXMgdGhlIGNvbmZsaWN0IGhvcml6b24gd2hlbiBzZXR0aW5nIHRoZSBWTSBiaXRzLiAgSXQKLQkg KiBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNvbWUgdHVwbGVzIChuZnJvemVuID4gMCksIGFu ZCBhbGxfZnJvemVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2bV9jb25mbGljdF9ob3Jpem9uIGlzIHRo ZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZQorCSAqIChvbGRlciB0aGFu IE9sZGVzdFhtaW4pLiAgSXQgd2lsbCBvbmx5IGJlIHZhbGlkIGlmIHdlIGRpZCBub3Qgc2V0IHRo ZQorCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uCiAJICoKIAkgKiBUaGVzZSBhcmUgb25s eSBzZXQgaWYgdGhlIEhFQVBfUFJVTkVfRlJFRVpFIG9wdGlvbiBpcyBzZXQuCiAJICovCiAJYm9v bAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsKIAlUcmFuc2FjdGlvbklkIHZtX2Nv bmZsaWN0X2hvcml6b247Ci0JYm9vbAkJdm1fY29ycnVwdGlvbjsKKwl1aW50OAkJb2xkX3ZtYml0 czsKKwl1aW50OAkJbmV3X3ZtYml0czsKIAogCS8qCiAJICogV2hldGhlciBvciBub3QgdGhlIHBh Z2UgbWFrZXMgcmVsIHRydW5jYXRpb24gdW5zYWZlLiAgVGhpcyBpcyBzZXQgdG8KLS0gCjIuNDMu MAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Disposition: attachment; filename="v13-0011-Eliminate-xl_heap_visible-from-vacuum-phase-I-pr.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4l11 RnJvbSBjNWFlMzcxMjliYmZjYzcyNDVmMDUyOTc2NDkzYTJjODFlMTVhMjViIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjQxOjAwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTEvMjBdIEVsaW1pbmF0ZSB4bF9oZWFwX3Zpc2libGUgZnJvbSB2YWN1dW0gcGhh c2UgSQogcHJ1bmUvZnJlZXplCgpJbnN0ZWFkIG9mIGVtaXR0aW5nIGEgc2VwYXJhdGUgV0FMIHJl Y29yZCBmb3IgZXZlcnkgYmxvY2sgcmVuZGVyZWQKYWxsLXZpc2libGUvZnJvemVuIGJ5IHZhY3V1 bSdzIHBoYXNlIEksIGluY2x1ZGUgdGhlIGNoYW5nZXMgdG8gdGhlIFZNIGluCnRoZSB4bF9oZWFw X3BydW5lIHJlY29yZCBhbHJlYWR5IGVtaXR0ZWQuCgpUaGlzIGlzIG9ubHkgZW5hYmxlZCBmb3Ig dmFjdXVtJ3MgcHJ1bmUvZnJlZXplIHdvcmssIG5vdCBmb3Igb24tYWNjZXNzCnBydW5pbmcuCi0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgNDYwICsrKysrKysrKysr KysrKystLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwg IDMwIC0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggICAgICAgICAgfCAgMTUgKy0KIDMg ZmlsZXMgY2hhbmdlZCwgMjgzIGluc2VydGlvbnMoKyksIDIyMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDQ0YjE4NmE0NTYwLi43NGY3ODc4YzlhYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTQ0LDYgKzQ0LDEzIEBAIHR5cGVk ZWYgc3RydWN0CiAJYm9vbAkJbWFya191bnVzZWRfbm93OwogCS8qIHdoZXRoZXIgdG8gYXR0ZW1w dCBmcmVlemluZyB0dXBsZXMgKi8KIAlib29sCQlhdHRlbXB0X2ZyZWV6ZTsKKworCS8qCisJICog V2hldGhlciBvciBub3QgdG8gY29uc2lkZXIgdXBkYXRpbmcgdGhlIFZNLiBUaGVyZSBpcyBzb21l IGJvb2trZWVwaW5nCisJICogdGhhdCBtdXN0IGJlIG1haW50YWluZWQgaWYgd2Ugd291bGQgbGlr ZSB0byB1cGRhdGUgdGhlIFZNLgorCSAqLworCWJvb2wJCWNvbnNpZGVyX3VwZGF0ZV92bTsKKwog CXN0cnVjdCBWYWN1dW1DdXRvZmZzICpjdXRvZmZzOwogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMDgsOCArMTE1LDkgQEAg dHlwZWRlZiBzdHJ1Y3QKIAkgKgogCSAqIFRoZXNlIGZpZWxkcyBhcmUgbm90IHVzZWQgYnkgcHJ1 bmluZyBpdHNlbGYgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBhcmUKIAkgKiB1c2VkIHRvIGNvbGxl Y3QgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCB3YXMgcHJ1bmVkIGFuZCB3aGF0IHN0YXRlIHRoZQot CSAqIHBhZ2UgaXMgaW4gYWZ0ZXIgcHJ1bmluZywgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBjYWxs ZXIuICBUaGV5IGFyZQotCSAqIGNvcGllZCB0byB0aGUgY2FsbGVyJ3MgUHJ1bmVGcmVlemVSZXN1 bHQgYXQgdGhlIGVuZC4KKwkgKiBwYWdlIGlzIGluIGFmdGVyIHBydW5pbmcgdG8gdXNlIHdoZW4g dXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwIGFuZAorCSAqIGZvciB0aGUgYmVuZWZpdCBvZiB0 aGUgY2FsbGVyLiAgVGhleSBhcmUgY29waWVkIHRvIHRoZSBjYWxsZXIncworCSAqIFBydW5lRnJl ZXplUmVzdWx0IGF0IHRoZSBlbmQuCiAJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSAqLwogCkBAIC0xMzgsMTEgKzE0NiwxMCBAQCB0 eXBlZGVmIHN0cnVjdAogCSAqIGJpdHMuICBJdCBpcyBvbmx5IHZhbGlkIGlmIHdlIGZyb3plIHNv bWUgdHVwbGVzLCBhbmQgYWxsX2Zyb3plbiBpcwogCSAqIHRydWUuCiAJICoKLQkgKiBOT1RFOiBh bGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBpbmNsdWRlIExQX0RFQUQgaXRlbXMuICBU aGF0J3MKLQkgKiBjb252ZW5pZW50IGZvciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpLCB0 byB1c2UgdGhlbSB0byBkZWNpZGUKLQkgKiB3aGV0aGVyIHRvIGZyZWV6ZSB0aGUgcGFnZSBvciBu b3QuICBUaGUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4KLQkgKiB2YWx1ZXMgcmV0dXJuZWQg dG8gdGhlIGNhbGxlciBhcmUgYWRqdXN0ZWQgdG8gaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIGF0Ci0J ICogdGhlIGVuZC4KKwkgKiBOT1RFOiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBkb24ndCBp bmNsdWRlIExQX0RFQUQgaXRlbXMgdW50aWwKKwkgKiBkaXJlY3RseSBiZWZvcmUgdXBkYXRpbmcg dGhlIFZNLiBXZSBpZ25vcmUgTFBfREVBRCBpdGVtcyB3aGVuIGRlY2lkaW5nCisJICogd2hldGhl ciBvciBub3QgdG8gb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIGFuZCB3aGVuIGRldGVybWluaW5n IHRoZQorCSAqIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24gcmVxdWlyZWQgd2hlbiBmcmVlemlu ZyB0dXBsZXMuCiAJICovCiAJYm9vbAkJYWxsX3Zpc2libGU7CiAJYm9vbAkJYWxsX2Zyb3plbjsK QEAgLTM3NywxMiArMzg0LDE1IEBAIGlkZW50aWZ5X2FuZF9maXhfdm1fY29ycnVwdGlvbihSZWxh dGlvbiByZWxhdGlvbiwKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKLSAqICdjdXRvZmZzJywgJ3ByZXN1bHQnLCAnbmV3X3JlbGZyb3plbl94 aWQnIGFuZCAnbmV3X3JlbG1pbl9teGlkJyBhcmd1bWVudHMKLSAqIGFyZSByZXF1aXJlZCB3aGVu IGZyZWV6aW5nLiAgV2hlbiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0LCB3ZSBhbHNv Ci0gKiBzZXQgcHJlc3VsdC0+YWxsX3Zpc2libGUgYW5kIHByZXN1bHQtPmFsbF9mcm96ZW4gb24g ZXhpdCwgdG8gaW5kaWNhdGUgaWYKLSAqIHRoZSBWTSBiaXRzIGNhbiBiZSBzZXQuICBUaGV5IGFy ZSBhbHdheXMgc2V0IHRvIGZhbHNlIHdoZW4gdGhlCi0gKiBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRp b24gaXMgbm90IHNldCwgYmVjYXVzZSBhdCB0aGUgbW9tZW50IG9ubHkgY2FsbGVycwotICogdGhh dCBhbHNvIGZyZWV6ZSBuZWVkIHRoYXQgaW5mb3JtYXRpb24uCisgKiAnY3V0b2ZmcycsICduZXdf cmVsZnJvemVuX3hpZCcgYW5kICduZXdfcmVsbWluX214aWQnIGFyZ3VtZW50cyBhcmUgcmVxdWly ZWQKKyAqIHdoZW4gZnJlZXppbmcuCisgKgorICogSWYgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9W TSBpcyBzZXQgYW5kIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgcGFnZQorICogaGFzIGNo YW5nZWQsIHdlIHdpbGwgdXBkYXRlIHRoZSBWTSBhdCB0aGUgc2FtZSB0aW1lIGFzIHBydW5pbmcg YW5kIGZyZWV6aW5nCisgKiB0aGUgaGVhcCBwYWdlLiBXZSB3aWxsIGFsc28gdXBkYXRlIHByZXN1 bHQtPm9sZF92bWJpdHMgYW5kCisgKiBwcmVzdWx0LT5uZXdfdm1iaXRzIHdpdGggdGhlIHN0YXRl IG9mIHRoZSBWTSBiZWZvcmUgYW5kIGFmdGVyIHVwZGF0aW5nIGl0CisgKiBmb3IgdGhlIGNhbGxl ciB0byB1c2UgaW4gYm9va2tlZXBpbmcuIE5vdGUgdGhhdCBuZXcgYW5kIG9sZF92bWJpdHMgd2ls bCBiZQorICogMCBpZiBIRUFQX1BBR0VfUFJVTkVfVVBEQVRFX1ZNIGlzIG5vdCBzZXQuCiAgKgog ICogYmxrX2tub3duX2F2IGlzIHRoZSB2aXNpYmlsaXR5IHN0YXR1cyBvZiB0aGUgaGVhcCBibG9j ayBhcyBvZiB0aGUgbGFzdCBjYWxsCiAgKiB0byBmaW5kX25leHRfdW5za2lwcGFibGVfYmxvY2so KS4gdm1idWZmZXIgaXMgdGhlIGJ1ZmZlciB0aGF0IG1heSBhbHJlYWR5CkBAIC0zOTgsNiArNDA4 LDggQEAgaWRlbnRpZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAog ICogICBGUkVFWkUgaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBhbHNvIGZyZWV6ZSB0dXBsZXMsIGFu ZCB3aWxsIHJldHVybgogICogICAnYWxsX3Zpc2libGUnLCAnYWxsX2Zyb3plbicgZmxhZ3MgdG8g dGhlIGNhbGxlci4KICAqCisgKiAgIFVQREFURV9WTSBpbmRpY2F0ZXMgdGhhdCB3ZSB3aWxsIHNl dCB0aGUgcGFnZSdzIHN0YXR1cyBpbiB0aGUgVk0uCisgKgogICogY3V0b2ZmcyBjb250YWlucyB0 aGUgZnJlZXplIGN1dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5n CiAgKiBvZiB2YWN1dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9G UkVFWkUgb3B0aW9uIGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2Vk IHRvIGRldGVybWluZSBpZiBkZWFkIHR1cGxlcyBhcmUKQEAgLTQ0MiwxOCArNDU0LDI0IEBAIGhl YXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVy LAogCUhlYXBUdXBsZURhdGEgdHVwOwogCWJvb2wJCWRvX2ZyZWV6ZTsKIAlib29sCQlkb19wcnVu ZTsKLQlib29sCQlkb19oaW50OworCWJvb2wJCWRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZTsKKwli b29sCQlkb19zZXRfdm07CiAJdWludDgJCXZtZmxhZ3MgPSAwOwogCXVpbnQ4CQlvbGRfdm1iaXRz ID0gMDsKIAlib29sCQlkaWRfdHVwbGVfaGludF9mcGk7CiAJaW50NjQJCWZwaV9iZWZvcmUgPSBw Z1dhbFVzYWdlLndhbF9mcGk7CisJYm9vbAkJYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IGZh bHNlOworCWJvb2wJCXNldF9wZF9hbGxfdmlzaWJsZSA9IGZhbHNlOwogCiAJLyogQ29weSBwYXJh bWV0ZXJzIHRvIHByc3RhdGUgKi8KIAlwcnN0YXRlLnZpc3Rlc3QgPSB2aXN0ZXN0OwogCXByc3Rh dGUubWFya191bnVzZWRfbm93ID0gKG9wdGlvbnMgJiBIRUFQX1BBR0VfUFJVTkVfTUFSS19VTlVT RURfTk9XKSAhPSAwOwogCXByc3RhdGUuYXR0ZW1wdF9mcmVlemUgPSAob3B0aW9ucyAmIEhFQVBf UEFHRV9QUlVORV9GUkVFWkUpICE9IDA7CisJcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gPSAo b3B0aW9ucyAmIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0pICE9IDA7CiAJcHJzdGF0ZS5jdXRv ZmZzID0gY3V0b2ZmczsKIAorCUFzc2VydCghcHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0gfHwg dm1idWZmZXIpOworCiAJLyoKIAkgKiBPdXIgc3RyYXRlZ3kgaXMgdG8gc2NhbiB0aGUgcGFnZSBh bmQgbWFrZSBsaXN0cyBvZiBpdGVtcyB0byBjaGFuZ2UsCiAJICogdGhlbiBhcHBseSB0aGUgY2hh bmdlcyB3aXRoaW4gYSBjcml0aWNhbCBzZWN0aW9uLiAgVGhpcyBrZWVwcyBhcyBtdWNoCkBAIC00 OTgsNTAgKzUxNiw1NyBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAlwcnN0YXRlLmRlYWRvZmZzZXRzID0gcHJlc3VsdC0+ZGVh ZG9mZnNldHM7CiAKIAkvKgotCSAqIENhbGxlciBtYXkgdXBkYXRlIHRoZSBWTSBhZnRlciB3ZSdy ZSBkb25lLiAgV2UgY2FuIGtlZXAgdHJhY2sgb2YKLQkgKiB3aGV0aGVyIHRoZSBwYWdlIHdpbGwg YmUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4gYWZ0ZXIgcHJ1bmluZyBhbmQKLQkgKiBmcmVl emluZyB0byBoZWxwIHRoZSBjYWxsZXIgdG8gZG8gdGhhdC4KKwkgKiBLZWVwIHRyYWNrIG9mIHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdpbGwgYmUgYWxsLXZpc2libGUgYW5kCisJICogYWxsLWZy b3plbiBmb3IgdXNlIGluIG9wcG9ydHVuaXN0aWMgZnJlZXppbmcgYW5kIHRvIHVwZGF0ZSB0aGUg Vk0gaWYKKwkgKiB0aGUgY2FsbGVyIHJlcXVlc3RzIGl0LgorCSAqCisJICogQ3VycmVudGx5LCBv bmx5IFZBQ1VVTSBhdHRlbXB0cyBmcmVlemluZyBhbmQgc2V0dGluZyB0aGUgVk0gYml0cy4gQnV0 CisJICogb3RoZXIgY2FsbGVycyBjb3VsZCBkbyBlaXRoZXIgb25lLiBUaGUgdmlzaWJpbGl0eSBi b29ra2VlcGluZyBpcworCSAqIHJlcXVpcmVkIGZvciBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIChp biBhZGRpdGlvbiB0byBzZXR0aW5nIHRoZSBWTQorCSAqIGJpdHMpIGJlY2F1c2Ugd2Ugb25seSBj b25zaWRlciBvcHBvcnR1bmlzdGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCisJICogd2hv bGUgcGFnZSB3b3VsZCBiZWNvbWUgYWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxs IGJlIGZyb3plbgorCSAqIGV4Y2VwdCBmb3IgZGVhZCB0dXBsZXMgdGhhdCB3aWxsIGJlIHJlbW92 ZWQgYnkgdmFjdXVtLgogCSAqCi0JICogQ3VycmVudGx5LCBvbmx5IFZBQ1VVTSBzZXRzIHRoZSBW TSBiaXRzLiAgVG8gc2F2ZSB0aGUgZWZmb3J0LCBvbmx5IGRvCi0JICogdGhlIGJvb2trZWVwaW5n IGlmIHRoZSBjYWxsZXIgbmVlZHMgaXQuICBDdXJyZW50bHksIHRoYXQncyB0aWVkIHRvCi0JICog SEVBUF9QQUdFX1BSVU5FX0ZSRUVaRSwgYnV0IGl0IGNvdWxkIGJlIGEgc2VwYXJhdGUgZmxhZyBp ZiB5b3Ugd2FudGVkCi0JICogdG8gdXBkYXRlIHRoZSBWTSBiaXRzIHdpdGhvdXQgYWxzbyBmcmVl emluZyBvciBmcmVlemUgd2l0aG91dCBhbHNvCi0JICogc2V0dGluZyB0aGUgVk0gYml0cy4KKwkg KiBJZiBvbmx5IHVwZGF0aW5nIHRoZSBWTSwgd2UgbXVzdCBpbml0aWFsaXplIGFsbF9mcm96ZW4g dG8gZmFsc2UsIGFzCisJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSgpIHdpbGwgbm90IGJl IGNhbGxlZCBmb3IgZWFjaCB0dXBsZSBvbiB0aGUKKwkgKiBwYWdlIGFuZCB3ZSB3aWxsIG5vdCBl bmQgdXAgY29ycmVjdGx5IHNldHRpbmcgaXQgdG8gZmFsc2UgbGF0ZXIuCiAJICoKLQkgKiBJbiBh ZGRpdGlvbiB0byB0ZWxsaW5nIHRoZSBjYWxsZXIgd2hldGhlciBpdCBjYW4gc2V0IHRoZSBWTSBi aXQsIHdlCi0JICogYWxzbyB1c2UgJ2FsbF92aXNpYmxlJyBhbmQgJ2FsbF9mcm96ZW4nIGZvciBv dXIgb3duIGRlY2lzaW9uLW1ha2luZy4gSWYKLQkgKiB0aGUgd2hvbGUgcGFnZSB3b3VsZCBiZWNv bWUgZnJvemVuLCB3ZSBjb25zaWRlciBvcHBvcnR1bmlzdGljYWxseQotCSAqIGZyZWV6aW5nIHR1 cGxlcy4gIFdlIHdpbGwgbm90IGJlIGFibGUgdG8gZnJlZXplIHRoZSB3aG9sZSBwYWdlIGlmIHRo ZXJlCi0JICogYXJlIHR1cGxlcyBwcmVzZW50IHRoYXQgYXJlIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5 b25lIG9yIGlmIHRoZXJlIGFyZQotCSAqIGRlYWQgdHVwbGVzIHdoaWNoIGFyZSBub3QgeWV0IHJl bW92YWJsZS4gIEhvd2V2ZXIsIGRlYWQgdHVwbGVzIHdoaWNoCi0JICogd2lsbCBiZSByZW1vdmVk IGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QgcHJlY2x1ZGUgdXMgZnJvbQotCSAq IG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLiAgQmVjYXVzZSBvZiB0aGF0LCB3ZSBkbyBub3Qg Y2xlYXIKLQkgKiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiAgV2UgZml4 IHRoYXQgYXQgdGhlIGVuZCBvZiB0aGUKLQkgKiBmdW5jdGlvbiwgd2hlbiB3ZSByZXR1cm4gdGhl IHZhbHVlIHRvIHRoZSBjYWxsZXIsIHNvIHRoYXQgdGhlIGNhbGxlcgotCSAqIGRvZXNuJ3Qgc2V0 IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCisJICogRGVhZCB0dXBsZXMgd2hpY2ggd2lsbCBiZSBy ZW1vdmVkIGJ5IHRoZSBlbmQgb2YgdmFjdXVtaW5nIHNob3VsZCBub3QKKwkgKiBwcmVjbHVkZSB1 cyBmcm9tIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6aW5nLCBzbyB3ZSBkbyBub3QgY2xlYXIKKwkg KiBhbGxfdmlzaWJsZSB3aGVuIHdlIHNlZSBMUF9ERUFEIGl0ZW1zLiBXZSBmaXggdGhhdCBhZnRl ciBkZXRlcm1pbmluZworCSAqIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSBidXQgYmVmb3JlIGRl Y2lkaW5nIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZQorCSAqIHRoZSBWTSBzbyB0aGF0IHdlIGRv bid0IHNldCB0aGUgVk0gYml0IGluY29ycmVjdGx5LgorCSAqCisJICogSWYgbm90IGZyZWV6aW5n IG9yIHVwZGF0aW5nIHRoZSBWTSwgd2Ugb3RoZXJ3aXNlIGF2b2lkIHRoZSBleHRyYQorCSAqIGJv b2trZWVwaW5nLiBJbml0aWFsaXppbmcgYWxsX3Zpc2libGUgdG8gZmFsc2UgYWxsb3dzIHNraXBw aW5nIHRoZSB3b3JrCisJICogdG8gdXBkYXRlIHRoZW0gaW4gaGVhcF9wcnVuZV9yZWNvcmRfdW5j aGFuZ2VkX2xwX25vcm1hbCgpLgogCSAqLwogCWlmIChwcnN0YXRlLmF0dGVtcHRfZnJlZXplKQog CXsKIAkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CiAJCXByc3RhdGUuYWxsX2Zyb3plbiA9 IHRydWU7CiAJfQorCWVsc2UgaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQorCXsKKwkJ cHJzdGF0ZS5hbGxfdmlzaWJsZSA9IHRydWU7CisJCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNl OworCX0KIAllbHNlCiAJewotCQkvKgotCQkgKiBJbml0aWFsaXppbmcgdG8gZmFsc2UgYWxsb3dz IHNraXBwaW5nIHRoZSB3b3JrIHRvIHVwZGF0ZSB0aGVtIGluCi0JCSAqIGhlYXBfcHJ1bmVfcmVj b3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KLQkJICovCiAJCXByc3RhdGUuYWxsX3Zpc2libGUg PSBmYWxzZTsKIAkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CiAJfQogCiAJLyoKLQkgKiBU aGUgdmlzaWJpbGl0eSBjdXRvZmYgeGlkIGlzIHRoZSBuZXdlc3QgeG1pbiBvZiBsaXZlIHR1cGxl cyBvbiB0aGUKLQkgKiBwYWdlLiAgSW4gdGhlIGNvbW1vbiBjYXNlLCB0aGlzIHdpbGwgYmUgc2V0 IGFzIHRoZSBjb25mbGljdCBob3Jpem9uIHRoZQotCSAqIGNhbGxlciBjYW4gdXNlIGZvciB1cGRh dGluZyB0aGUgVk0uICBJZiwgYXQgdGhlIGVuZCBvZiBmcmVlemluZyBhbmQKLQkgKiBwcnVuaW5n LCB0aGUgcGFnZSBpcyBhbGwtZnJvemVuLCB0aGVyZSBpcyBubyBwb3NzaWJpbGl0eSB0aGF0IGFu eQotCSAqIHJ1bm5pbmcgdHJhbnNhY3Rpb24gb24gdGhlIHN0YW5kYnkgZG9lcyBub3Qgc2VlIHR1 cGxlcyBvbiB0aGUgcGFnZSBhcwotCSAqIGFsbC12aXNpYmxlLCBzbyB0aGUgY29uZmxpY3QgaG9y aXpvbiByZW1haW5zIEludmFsaWRUcmFuc2FjdGlvbklkLgorCSAqIFRoZSB2aXNpYmlsaXR5IGN1 dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUsIGNvbW1pdHRlZCB0dXBsZXMKKwkg KiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2UuIFRoaXMgZmllbGQgaXMgb25seSBr ZXB0IHVwLXRvLWRhdGUKKwkgKiBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4gQXMgc29vbiBh cyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKKwkgKiBub3QgdmlzaWJsZSB0byBhbGws IHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25nIGFzIGl0IGlzCisJICogbWFpbnRh aW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25mbGljdCBo b3Jpem9uLgorCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8gaGFwcGVuIHdoZW4gdXBkYXRpbmcg dGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKKwkgKiBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZS4g SXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRoZSBjYWxsZXIKKwkgKiBiZWNhdXNl IHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlkYXRpb24gb24gdGhlIHBhZ2UgdXNp bmcgdGhpcworCSAqIGZpZWxkLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTczOSwxMCArNzY0LDExIEBAIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCiAJ LyoKIAkgKiBFdmVuIGlmIHdlIGRvbid0IHBydW5lIGFueXRoaW5nLCBpZiB3ZSBmb3VuZCBhIG5l dyB2YWx1ZSBmb3IgdGhlCi0JICogcGRfcHJ1bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBt YXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUgdGhlIGhpbnQKLQkgKiBiaXQuCisJICogcGRfcHJ1 bmVfeGlkIGZpZWxkIG9yIHRoZSBwYWdlIHdhcyBtYXJrZWQgZnVsbCwgd2Ugd2lsbCB1cGRhdGUg dGhvc2UKKwkgKiBoaW50IGJpdHMuCiAJICovCi0JZG9faGludCA9ICgoUGFnZUhlYWRlcikgcGFn ZSktPnBkX3BydW5lX3hpZCAhPSBwcnN0YXRlLm5ld19wcnVuZV94aWQgfHwKKwlkb19oaW50X2Z1 bGxfb3JfcHJ1bmFibGUgPQorCQkoKFBhZ2VIZWFkZXIpIHBhZ2UpLT5wZF9wcnVuZV94aWQgIT0g cHJzdGF0ZS5uZXdfcHJ1bmVfeGlkIHx8CiAJCVBhZ2VJc0Z1bGwocGFnZSk7CiAKIAkvKgpAQCAt NzkwLDcgKzgxNiw3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0 aW9uLCBCdWZmZXIgYnVmZmVyLAogCQkJCQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3Vw KGJ1ZmZlcikpCiAJCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKIAkJCQkJfQotCQkJCQllbHNlIGlm IChkb19oaW50KQorCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFibGUpCiAJCQkJ CXsKIAkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNrQnVmZmVyTmVl ZHNCYWNrdXAoYnVmZmVyKSkKIAkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwpAQCAtODI5LDExICs4 NTUsODggQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1 ZmZlciBidWZmZXIsCiAJCSAqLwogCX0KIAorCS8qCisJICogSXQgd2FzIGNvbnZlbmllbnQgdG8g aWdub3JlIExQX0RFQUQgaXRlbXMgaW4gYWxsX3Zpc2libGUgZWFybGllciBvbiB0bworCSAqIG1h a2UgdGhlIGNob2ljZSBvZiB3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgdGhlIHBhZ2UgdW5hZmZl Y3RlZCBieSB0aGUKKwkgKiBzaG9ydC10ZXJtIHByZXNlbmNlIG9mIExQX0RFQUQgaXRlbXMuICBU aGVzZSBMUF9ERUFEIGl0ZW1zIHdlcmUKKwkgKiBlZmZlY3RpdmVseSBhc3N1bWVkIHRvIGJlIExQ X1VOVVNFRCBpdGVtcyBpbiB0aGUgbWFraW5nLiAgSXQgZG9lc24ndAorCSAqIG1hdHRlciB3aGlj aCB2YWN1dW0gaGVhcCBwYXNzIChpbml0aWFsIHBhc3Mgb3IgZmluYWwgcGFzcykgZW5kcyB1cAor CSAqIHNldHRpbmcgdGhlIHBhZ2UgYWxsLWZyb3plbiwgYXMgbG9uZyBhcyB0aGUgb25nb2luZyBW QUNVVU0gZG9lcyBpdC4KKwkgKgorCSAqIE5vdyB0aGF0IGZyZWV6aW5nIGhhcyBiZWVuIGZpbmFs aXplZCwgdW5zZXQgYWxsX3Zpc2libGUgaWYgdGhlcmUgYXJlCisJICogYW55IExQX0RFQUQgaXRl bXMgb24gdGhlIHBhZ2UuIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUgb2YK KwkgKiB0aGUgcGFnZSB3aGVuIHVzaW5nIGl0IHRvIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0 byB1cGRhdGUgdGhlIFZNLgorCSAqCisJICogS2VlcCB0cmFjayBvZiB3aGV0aGVyIG9yIG5vdCB0 aGUgcGFnZSB3YXMgYWxsLWZyb3plbiBleGNlcHQgTFBfREVBRAorCSAqIGl0ZW1zIGZvciB0aGUg cHVycG9zZXMgb2YgY2FsY3VsYXRpbmcgdGhlIHNuYXBzaG90IGNvbmZsaWN0IGhvcml6b24sCisJ ICogdGhvdWdoLgorCSAqLworCWFsbF9mcm96ZW5fZXhjZXB0X2xwX2RlYWQgPSBwcnN0YXRlLmFs bF9mcm96ZW47CisJaWYgKHByc3RhdGUubHBkZWFkX2l0ZW1zID4gMCkKKwl7CisJCXByc3RhdGUu YWxsX3Zpc2libGUgPSBmYWxzZTsKKwkJcHJzdGF0ZS5hbGxfZnJvemVuID0gZmFsc2U7CisJfQor CiAJQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJzdGF0ZS5hbGxfdmlzaWJsZSk7CisK KwkvKgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZv cm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKKwkgKiBvZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9i bG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQKKwkgKiBhbGxfZnJvemVuIHZh cmlhYmxlcy4KKwkgKi8KKwlpZiAocHJzdGF0ZS5jb25zaWRlcl91cGRhdGVfdm0pCisJeworCQkv KgorCQkgKiBDbGVhciBhbnkgVk0gY29ycnVwdGlvbi4gVGhpcyBkb2VzIG5vdCBuZWVkIHRvIGJl IGluIGEgY3JpdGljYWwKKwkJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FM TF9WSVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwKKwkJICogd2UgbWF5IG1hcmsgdGhlIGhlYXAg cGFnZSBidWZmZXIgZGlydHkgaGVyZSBhbmQgY291bGQgZW5kIHVwIGRvaW5nCisJCSAqIHNvIGFn YWluIGxhdGVyLiBUaGlzIGlzIG5vdCBhIGNvcnJlY3RuZXNzIGlzc3VlIGFuZCBpcyBpbiB0aGUg cGF0aAorCQkgKiBvZiBWTSBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFi b3V0IHRoZSBleHRyYQorCQkgKiBwZXJmb3JtYW5jZSBvdmVyaGVhZC4KKwkJICovCisJCWlmIChp ZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkJICAgYmxv Y2tubywgYnVmZmVyLCBwYWdlLAorCQkJCQkJCQkJCSAgIGJsa19rbm93bl9hdiwgcHJzdGF0ZS5s cGRlYWRfaXRlbXMsIHZtYnVmZmVyKSkKKwkJeworCQkJLyogSWYgd2UgZml4IGNvcnJ1cHRpb24s IGRvbid0IHVwZGF0ZSB0aGUgVk0gZnVydGhlciAqLworCQl9CisKKwkJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJCWVsc2UgaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYKKwkJCQkgKCFibGtfa25vd25fYXYg fHwKKwkJCQkgIChwcnN0YXRlLmFsbF9mcm96ZW4gJiYgIVZNX0FMTF9GUk9aRU4ocmVsYXRpb24s IGJsb2Nrbm8sICZ2bWJ1ZmZlcikpKSkKKwkJeworCQkJdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQ X0FMTF9WSVNJQkxFOworCQkJaWYgKHByc3RhdGUuYWxsX2Zyb3plbikKKwkJCQl2bWZsYWdzIHw9 IFZJU0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwkJfQorCX0KKworCWRvX3NldF92bSA9IHZtZmxh Z3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFM7CisKKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9y ZSBlbnRlcmluZyBhIGNyaXRpY2FsIHNlY3Rpb24gKi8KKwlpZiAoZG9fc2V0X3ZtKQorCQlMb2Nr QnVmZmVyKHZtYnVmZmVyLCBCVUZGRVJfTE9DS19FWENMVVNJVkUpOworCisJLyoKKwkgKiBEb24n dCBzZXQgUERfQUxMX1ZJU0lCTEUgdW5sZXNzIHdlIGFsc28gcGxhbiB0byBzZXQgdGhlIFZNLiBX aGlsZSBpdCBpcworCSAqIGNvcnJlY3QgZm9yIGEgaGVhcCBwYWdlIHRvIGhhdmUgUERfQUxMX1ZJ U0lCTEUgZXZlbiBpZiB0aGUgVk0gaXMgbm90CisJICogc2V0LCB3ZSBzdHJvbmdseSBwcmVmZXIg dG8ga2VlcCB0aGVtIGluIHN5bmMuCisJICoKKwkgKiBQcmlvciB0byBQb3N0Z3JlcyAxOSwgaXQg d2FzIHBvc3NpYmxlIGZvciB0aGUgcGFnZS1sZXZlbCBiaXQgdG8gYmUgc2V0CisJICogYW5kIHRo ZSBWTSBiaXQgdG8gYmUgY2xlYXIuIFRoaXMgY291bGQgaGFwcGVuIGlmIHdlIGNyYXNoZWQgYWZ0 ZXIKKwkgKiBzZXR0aW5nIFBEX0FMTF9WSVNJQkxFIGJ1dCBiZWZvcmUgc2V0dGluZyBiaXRzIGlu IHRoZSBWTS4KKwkgKi8KKwlzZXRfcGRfYWxsX3Zpc2libGUgPSBkb19zZXRfdm0gJiYgIVBhZ2VJ c0FsbFZpc2libGUocGFnZSk7CisKKwkvKiBTYXZlIHRoZXNlIGZvciB0aGUgY2FsbGVyIGluIGNh c2Ugd2UgbGF0ZXIgemVybyBvdXQgdm1mbGFncyAqLworCXByZXN1bHQtPm5ld192bWJpdHMgPSB2 bWZsYWdzOworCiAJLyogQW55IGVycm9yIHdoaWxlIGFwcGx5aW5nIHRoZSBjaGFuZ2VzIGlzIGNy aXRpY2FsICovCiAJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7CiAKLQlpZiAoZG9faGludCkKKwlpZiAo ZG9faGludF9mdWxsX29yX3BydW5hYmxlKQogCXsKIAkJLyoKIAkJICogVXBkYXRlIHRoZSBwYWdl J3MgcGRfcHJ1bmVfeGlkIGZpZWxkIHRvIGVpdGhlciB6ZXJvLCBvciB0aGUgbG93ZXN0CkBAIC04 NDksMTUgKzk1MiwxNiBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxhdGlvbiByZWxh dGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJUGFnZUNsZWFyRnVsbChwYWdlKTsKIAogCQkvKgotCQkg KiBJZiB0aGF0J3MgYWxsIHdlIGhhZCB0byBkbyB0byB0aGUgcGFnZSwgdGhpcyBpcyBhIG5vbi1X QUwtbG9nZ2VkCi0JCSAqIGhpbnQuICBJZiB3ZSBhcmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5l IHRoZSBwYWdlLCB3ZSB3aWxsIG1hcmsKLQkJICogdGhlIGJ1ZmZlciBkaXJ0eSBiZWxvdy4KKwkJ ICogSWYgd2UgYXJlIF9vbmx5XyBzZXR0aW5nIHRoZSBwcnVuZV94aWQgb3IgUERfUEFHRV9GVUxM IGhpbnQsIHRoZW4KKwkJICogdGhpcyBpcyBhIG5vbi1XQUwtbG9nZ2VkIGhpbnQuICBJZiB3ZSBh cmUgZ29pbmcgdG8gZnJlZXplIG9yIHBydW5lCisJCSAqIHR1cGxlcyBvbiB0aGUgcGFnZSBvciBz ZXQgUERfQUxMX1ZJU0lCTEUsIHdlIHdpbGwgbWFyayB0aGUgYnVmZmVyCisJCSAqIGRpcnR5IGFu ZCBlbWl0IFdBTCBiZWxvdy4KIAkJICovCi0JCWlmICghZG9fZnJlZXplICYmICFkb19wcnVuZSkK KwkJaWYgKCFkb19wcnVuZSAmJiAhZG9fZnJlZXplICYmICFzZXRfcGRfYWxsX3Zpc2libGUpCiAJ CQlNYXJrQnVmZmVyRGlydHlIaW50KGJ1ZmZlciwgdHJ1ZSk7CiAJfQogCi0JaWYgKGRvX3BydW5l IHx8IGRvX2ZyZWV6ZSkKKwlpZiAoZG9fcHJ1bmUgfHwgZG9fZnJlZXplIHx8IGRvX3NldF92bSkK IAl7CiAJCS8qIEFwcGx5IHRoZSBwbGFubmVkIGl0ZW0gY2hhbmdlcyBhbmQgcmVwYWlyIHBhZ2Ug ZnJhZ21lbnRhdGlvbi4gKi8KIAkJaWYgKGRvX3BydW5lKQpAQCAtODcxLDEyICs5NzUsNDcgQEAg aGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZm ZXIsCiAJCWlmIChkb19mcmVlemUpCiAJCQloZWFwX2ZyZWV6ZV9wcmVwYXJlZF90dXBsZXMoYnVm ZmVyLCBwcnN0YXRlLmZyb3plbiwgcHJzdGF0ZS5uZnJvemVuKTsKIAotCQlNYXJrQnVmZmVyRGly dHkoYnVmZmVyKTsKKwkJaWYgKHNldF9wZF9hbGxfdmlzaWJsZSkKKwkJCVBhZ2VTZXRBbGxWaXNp YmxlKHBhZ2UpOwogCiAJCS8qCi0JCSAqIEVtaXQgYSBXQUwgWExPR19IRUFQMl9QUlVORV9GUkVF WkUgcmVjb3JkIHNob3dpbmcgd2hhdCB3ZSBkaWQKKwkJICogV2Ugb25seSBzZXQgUERfQUxMX1ZJ U0lCTEUgaWYgd2UgYWxzbyBzZXQgdGhlIFZNLCBhbmQgc2luY2Ugc2V0dGluZworCQkgKiB0aGUg Vk0gcmVxdWlyZXMgZW1pdHRpbmcgV0FMLCBNYXJrQnVmZmVyRGlydHlIaW50KCkgaXNuJ3QKKwkJ ICogYXBwcm9wcmlhdGUgaGVyZS4KIAkJICovCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbGF0 aW9uKSkKKwkJaWYgKGRvX3BydW5lIHx8IGRvX2ZyZWV6ZSB8fCBzZXRfcGRfYWxsX3Zpc2libGUp CisJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKKworCQlpZiAoZG9fc2V0X3ZtKQorCQl7CisJ CQlBc3NlcnQoUGFnZUlzQWxsVmlzaWJsZShwYWdlKSk7CisJCQlvbGRfdm1iaXRzID0gdmlzaWJp bGl0eW1hcF9zZXRfdm1iaXRzKHJlbGF0aW9uLCBibG9ja25vLAorCQkJCQkJCQkJCQkJICB2bWJ1 ZmZlciwgdm1mbGFncyk7CisKKwkJCWlmIChvbGRfdm1iaXRzID09IHZtZmxhZ3MpCisJCQl7CisJ CQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKKwkJCQlkb19zZXRf dm0gPSBmYWxzZTsKKwkJCQkvKiAwIG91dCB2bWZsYWdzIHNvIHdlIGRvbid0IGVtaXQgV0FMIHRv IHVwZGF0ZSB0aGUgVk0gKi8KKwkJCQl2bWZsYWdzID0gMDsKKwkJCX0KKwkJfQorCisJCS8qCisJ CSAqIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgY2FzZSB0aGF0IFBEX0FMTF9WSVNJQkxFIGlzIG5v dCBzZXQgYW5kIHRoZQorCQkgKiBWTSBpcyBzZXQuIE9yLCBpZiBpdCB3ZXJlLCB3ZSBzaG91bGQg aGF2ZSBjYXVnaHQgaXQgZWFybGllciB3aGVuCisJCSAqIGZpbmRpbmcgYW5kIGZpeGluZyBWTSBj b3JydXB0aW9uLiBTbywgaWYgd2UgZm91bmQgb3V0IHRoZSBWTSB3YXMKKwkJICogYWxyZWFkeSBz ZXQgYWJvdmUsIHdlIHNob3VsZCBoYXZlIGZvdW5kIFBEX0FMTF9WSVNJQkxFIHNldCBlYXJsaWVy LgorCQkgKi8KKwkJQXNzZXJ0KCFzZXRfcGRfYWxsX3Zpc2libGUgfHwgZG9fc2V0X3ZtKTsKKwor CQkvKgorCQkgKiBFbWl0IGEgV0FMIFhMT0dfSEVBUDJfUFJVTkVfRlJFRVpFIHJlY29yZCBzaG93 aW5nIHdoYXQgd2UgZGlkLiBJZgorCQkgKiB3ZSB3ZXJlIG9ubHkgdXBkYXRpbmcgdGhlIFZNIGFu ZCBpdCB0dXJucyBvdXQgaXQgd2FzIGFscmVhZHkgc2V0LAorCQkgKiB3ZSB3aWxsIGhhdmUgdW5z ZXQgZG9fc2V0X3ZtIGVhcmxpZXIuIEFzIHN1Y2gsIGNoZWNrIGl0IGFnYWluCisJCSAqIGJlZm9y ZSBlbWl0dGluZyB0aGUgcmVjb3JkLgorCQkgKi8KKwkJaWYgKFJlbGF0aW9uTmVlZHNXQUwocmVs YXRpb24pICYmIChkb19zZXRfdm0gfHwgZG9fcHJ1bmUgfHwgZG9fZnJlZXplKSkKIAkJewogCQkJ LyoKIAkJCSAqIFRoZSBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBmb3IgdGhlIHdob2xlIHJlY29y ZCBzaG91bGQgYmUgdGhlCkBAIC04ODgsMzUgKzEwMjcsNTYgQEAgaGVhcF9wYWdlX3BydW5lX2Fu ZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCQkgKiBvbiB0aGUg c3RhbmRieSB3aXRoIHhpZHMgb2xkZXIgdGhhbiB0aGUgeW91bmdlc3QgdHVwbGUgdGhpcwogCQkJ ICogcmVjb3JkIHdpbGwgZnJlZXplIHdpbGwgY29uZmxpY3QuCiAJCQkgKi8KLQkJCVRyYW5zYWN0 aW9uSWQgZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJCVRy YW5zYWN0aW9uSWQgY29uZmxpY3RfeGlkOworCQkJVHJhbnNhY3Rpb25JZCBjb25mbGljdF94aWQg PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKworCQkJLyoKKwkJCSAqIElmIHdlIGFyZSB1cGRhdGlu ZyB0aGUgVk0sIHRoZSBjb25mbGljdCBob3Jpem9uIGlzIGFsbW9zdAorCQkJICogYWx3YXlzIHRo ZSB2aXNpYmlsaXR5IGN1dG9mZiBYSUQuCisJCQkgKgorCQkJICogU2VwYXJhdGVseSwgaWYgd2Ug YXJlIGZyZWV6aW5nIGFueSB0dXBsZXMsIGFzIGFuIG9wdGltaXphdGlvbiwKKwkJCSAqIHdlIGNh biB1c2UgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBhcyB0aGUgY29uZmxpY3QgaG9yaXpvbiBp ZgorCQkJICogdGhlIHBhZ2Ugd2lsbCBiZSBhbGwtZnJvemVuLiBUaGlzIGlzIHRydWUgZXZlbiBp ZiB0aGVyZSBhcmUKKwkJCSAqIExQX0RFQUQgbGluZSBwb2ludGVycyBiZWNhdXNlIHdlIGlnbm9y ZWQgdGhvc2Ugd2hlbiBtYWludGFpbmluZworCQkJICogdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hp ZC4KKwkJCSAqLworCQkJaWYgKGRvX3NldF92bSB8fCAoZG9fZnJlZXplICYmIGFsbF9mcm96ZW5f ZXhjZXB0X2xwX2RlYWQpKQorCQkJCWNvbmZsaWN0X3hpZCA9IHByc3RhdGUudmlzaWJpbGl0eV9j dXRvZmZfeGlkOwogCiAJCQkvKgotCQkJICogV2UgY2FuIHVzZSB0aGUgdmlzaWJpbGl0eV9jdXRv ZmZfeGlkIGFzIG91ciBjdXRvZmYgZm9yCi0JCQkgKiBjb25mbGljdHMgd2hlbiB0aGUgd2hvbGUg cGFnZSBpcyBlbGlnaWJsZSB0byBiZWNvbWUgYWxsLWZyb3plbgotCQkJICogaW4gdGhlIFZNIG9u Y2Ugd2UncmUgZG9uZSB3aXRoIGl0LiAgT3RoZXJ3aXNlIHdlIGdlbmVyYXRlIGEKLQkJCSAqIGNv bnNlcnZhdGl2ZSBjdXRvZmYgYnkgc3RlcHBpbmcgYmFjayBmcm9tIE9sZGVzdFhtaW4uCisJCQkg KiBPdGhlcndpc2UsIGlmIHdlIGFyZSBmcmVlemluZyBidXQgdGhlIHBhZ2Ugd291bGQgbm90IGJl CisJCQkgKiBhbGwtZnJvemVuLCB3ZSBoYXZlIHRvIHVzZSB0aGUgbW9yZSBwZXNzaW1pc3RpYyBo b3Jpem9uIG9mCisJCQkgKiBPbGRlc3RYbWluLCB3aGljaCBtYXkgYmUgbmV3ZXIgdGhhbiB0aGUg bmV3ZXN0IHR1cGxlIHdlIGZyb3plLgorCQkJICogV2UgY3VycmVudGx5IGRvbid0IHRyYWNrIHRo ZSBuZXdlc3QgdHVwbGUgd2UgZnJvemUuCiAJCQkgKi8KLQkJCWlmIChkb19mcmVlemUpCisJCQll bHNlIGlmIChkb19mcmVlemUpCiAJCQl7Ci0JCQkJaWYgKHByc3RhdGUuYWxsX3Zpc2libGUgJiYg cHJzdGF0ZS5hbGxfZnJvemVuKQotCQkJCQlmcnpfY29uZmxpY3RfaG9yaXpvbiA9IHByc3RhdGUu dmlzaWJpbGl0eV9jdXRvZmZfeGlkOwotCQkJCWVsc2UKLQkJCQl7Ci0JCQkJCS8qIEF2b2lkcyBm YWxzZSBjb25mbGljdHMgd2hlbiBob3Rfc3RhbmRieV9mZWVkYmFjayBpbiB1c2UgKi8KLQkJCQkJ ZnJ6X2NvbmZsaWN0X2hvcml6b24gPSBwcnN0YXRlLmN1dG9mZnMtPk9sZGVzdFhtaW47Ci0JCQkJ CVRyYW5zYWN0aW9uSWRSZXRyZWF0KGZyel9jb25mbGljdF9ob3Jpem9uKTsKLQkJCQl9CisJCQkJ Y29uZmxpY3RfeGlkID0gcHJzdGF0ZS5jdXRvZmZzLT5PbGRlc3RYbWluOworCQkJCVRyYW5zYWN0 aW9uSWRSZXRyZWF0KGNvbmZsaWN0X3hpZCk7CiAJCQl9CiAKLQkJCWlmIChUcmFuc2FjdGlvbklk Rm9sbG93cyhmcnpfY29uZmxpY3RfaG9yaXpvbiwgcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQp KQotCQkJCWNvbmZsaWN0X3hpZCA9IGZyel9jb25mbGljdF9ob3Jpem9uOwotCQkJZWxzZQorCQkJ LyoKKwkJCSAqIElmIHdlIGFyZSByZW1vdmluZyB0dXBsZXMgd2l0aCBhIHlvdW5nZXIgeG1heCB0 aGFuIG91ciBzbyBmYXIKKwkJCSAqIGNhbGN1bGF0ZWQgY29uZmxpY3RfeGlkLCB3ZSBtdXN0IHVz ZSB0aGlzIGFzIG91ciBob3Jpem9uLgorCQkJICovCisJCQlpZiAoVHJhbnNhY3Rpb25JZEZvbGxv d3MocHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQsIGNvbmZsaWN0X3hpZCkpCiAJCQkJY29uZmxp Y3RfeGlkID0gcHJzdGF0ZS5sYXRlc3RfeGlkX3JlbW92ZWQ7CiAKKwkJCS8qCisJCQkgKiBXZSBj YW4gb21pdCB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBpZiB3ZSBhcmUgbm90IHBydW5p bmcKKwkJCSAqIG9yIGZyZWV6aW5nIGFueSB0dXBsZXMgYW5kIGFyZSBzZXR0aW5nIGFuIGFscmVh ZHkgYWxsLXZpc2libGUKKwkJCSAqIHBhZ2UgYWxsLWZyb3plbiBpbiB0aGUgVk0uIEluIHRoaXMg Y2FzZSwgYWxsIG9mIHRoZSB0dXBsZXMgb24KKwkJCSAqIHRoZSBwYWdlIG11c3QgYWxyZWFkeSBi ZSB2aXNpYmxlIHRvIGFsbCBNVkNDIHNuYXBzaG90cyBvbiB0aGUKKwkJCSAqIHN0YW5kYnkuCisJ CQkgKi8KKwkJCWlmICghZG9fcHJ1bmUgJiYgIWRvX2ZyZWV6ZSAmJiBkb19zZXRfdm0gJiYKKwkJ CQlibGtfa25vd25fYXYgJiYgKHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pKQor CQkJCWNvbmZsaWN0X3hpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCiAJCQlsb2dfaGVhcF9w cnVuZV9hbmRfZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsCiAJCQkJCQkJCQkgIGZhbHNlLAotCQkJ CQkJCQkJICBJbnZhbGlkQnVmZmVyLCAwLCBmYWxzZSwKKwkJCQkJCQkJCSAgdm1idWZmZXIsCisJ CQkJCQkJCQkgIHZtZmxhZ3MsCisJCQkJCQkJCQkgIHNldF9wZF9hbGxfdmlzaWJsZSwKIAkJCQkJ CQkJCSAgY29uZmxpY3RfeGlkLAogCQkJCQkJCQkJICB0cnVlLCByZWFzb24sCiAJCQkJCQkJCQkg IHByc3RhdGUuZnJvemVuLCBwcnN0YXRlLm5mcm96ZW4sCkBAIC05MjgsMTI0ICsxMDg4LDU1IEBA IGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVm ZmVyLAogCiAJRU5EX0NSSVRfU0VDVElPTigpOwogCi0JLyogQ29weSBpbmZvcm1hdGlvbiBiYWNr IGZvciBjYWxsZXIgKi8KLQlwcmVzdWx0LT5uZGVsZXRlZCA9IHByc3RhdGUubmRlbGV0ZWQ7Ci0J cHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7Ci0JcHJlc3VsdC0+bmZyb3plbiA9 IHByc3RhdGUubmZyb3plbjsKLQlwcmVzdWx0LT5saXZlX3R1cGxlcyA9IHByc3RhdGUubGl2ZV90 dXBsZXM7Ci0JcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBsZXMgPSBwcnN0YXRlLnJlY2VudGx5 X2RlYWRfdHVwbGVzOwotCi0JLyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBf REVBRCBpdGVtcyBpbiBhbGxfdmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hv aWNlIG9mIHdoZXRoZXIgb3Igbm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRo ZQotCSAqIHNob3J0LXRlcm0gcHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RF QUQgaXRlbXMgd2VyZQotCSAqIGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0 ZW1zIGluIHRoZSBtYWtpbmcuICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBo ZWFwIHBhc3MgKGluaXRpYWwgcGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGlu ZyB0aGUgcGFnZSBhbGwtZnJvemVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2Vz IGl0LgotCSAqCi0JICogTm93IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNl dCBhbGxfdmlzaWJsZSBpZiB0aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUg cGFnZS4gIEl0IG5lZWRzIHRvIHJlZmxlY3QgdGhlIHByZXNlbnQgc3RhdGUKLQkgKiBvZiB0aGUg cGFnZSwgYXMgZXhwZWN0ZWQgZm9yIHVwZGF0aW5nIHRoZSB2aXNpYmlsaXR5IG1hcC4KLQkgKi8K LQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmxwZGVhZF9pdGVtcyA9PSAwKQot CXsKLQkJcHJlc3VsdC0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF92aXNpYmxlOwotCQlwcmVz dWx0LT5hbGxfZnJvemVuID0gcHJzdGF0ZS5hbGxfZnJvemVuOwotCX0KLQllbHNlCi0JewotCQlw cmVzdWx0LT5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcmVzdWx0LT5hbGxfZnJvemVuID0gZmFs c2U7Ci0JfQotCi0JcHJlc3VsdC0+aGFzdHVwID0gcHJzdGF0ZS5oYXN0dXA7CisJaWYgKGRvX3Nl dF92bSkKKwkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVGRkVSX0xPQ0tfVU5MT0NLKTsKIAotCS8q Ci0JICogSWYgdXBkYXRpbmcgdGhlIHZpc2liaWxpdHkgbWFwLCB0aGUgY29uZmxpY3QgaG9yaXpv biBmb3IgdGhhdCByZWNvcmQKLQkgKiBtdXN0IGJlIHRoZSBuZXdlc3QgeG1pbiBvbiB0aGUgcGFn ZS4gIEhvd2V2ZXIsIGlmIHRoZSBwYWdlIGlzCi0JICogY29tcGxldGVseSBmcm96ZW4sIHRoZXJl IGNhbiBiZSBubyBjb25mbGljdCBhbmQgdGhlIHZtX2NvbmZsaWN0X2hvcml6b24KLQkgKiBzaG91 bGQgcmVtYWluIEludmFsaWRUcmFuc2FjdGlvbklkLiAgVGhpcyBpbmNsdWRlcyB0aGUgY2FzZSB0 aGF0IHdlCi0JICoganVzdCBmcm96ZSBhbGwgdGhlIHR1cGxlczsgdGhlIHBydW5lLWZyZWV6ZSBy ZWNvcmQgaW5jbHVkZWQgdGhlCi0JICogY29uZmxpY3QgWElEIGFscmVhZHkgc28gdGhlIFZNIHVw ZGF0ZSByZWNvcmQgZG9lc24ndCBuZWVkIGl0LgotCSAqLwotCWlmIChwcmVzdWx0LT5hbGxfZnJv emVuKQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gSW52YWxpZFRyYW5zYWN0aW9u SWQ7Ci0JZWxzZQotCQlwcmVzdWx0LT52bV9jb25mbGljdF9ob3Jpem9uID0gcHJzdGF0ZS52aXNp YmlsaXR5X2N1dG9mZl94aWQ7CisJQXNzZXJ0KCFwcnN0YXRlLmFsbF92aXNpYmxlIHx8IChwcnN0 YXRlLmxwZGVhZF9pdGVtcyA9PSAwKSk7CiAKIAkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2li aWxpdHkgbWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoYXMKLQkgKiBv ZiBsYXN0IGhlYXBfdmFjX3NjYW5fbmV4dF9ibG9jaygpIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlz aWJsZSBhbmQKLQkgKiBhbGxfZnJvemVuIHZhcmlhYmxlcy4KKwkgKiBWQUNVVU0gd2lsbCBjYWxs IGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSgpIGR1cmluZyB0aGUgc2Vjb25kIHBhc3Mgb3Zlcgor CSAqIHRoZSBoZWFwIHRvIGRldGVybWluZSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiBmb3Ig dGhlIHBhZ2UgLS0gdGhpcworCSAqIGlzIGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUgbG9n aWMgZnJvbSB0aGlzIGZ1bmN0aW9uLiAgTm93IHRoYXQKKwkgKiB3ZSd2ZSBmaW5pc2hlZCBwcnVu aW5nIGFuZCBmcmVlemluZywgbWFrZSBzdXJlIHRoYXQgd2UncmUgaW4gdG90YWwKKwkgKiBhZ3Jl ZW1lbnQgd2l0aCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSB1c2luZyBhbiBhc3NlcnRpb24u IFdlIHdpbGwKKwkgKiBoYXZlIGFscmVhZHkgc2V0IHRoZSBwYWdlIGluIHRoZSBWTSwgc28gdGhp cyBhc3NlcnRpb24gd2lsbCBvbmx5IGxldAorCSAqIHlvdSBrbm93IHRoYXQgeW91J3ZlIGFscmVh ZHkgZG9uZSBzb21ldGhpbmcgd3JvbmcuCiAJICovCi0JaWYgKG9wdGlvbnMgJiBIRUFQX1BBR0Vf UFJVTkVfVVBEQVRFX1ZNKQorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlpZiAocHJzdGF0 ZS5hbGxfdmlzaWJsZSkKIAl7Ci0JCWlmIChpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24o cmVsYXRpb24sCi0JCQkJCQkJCQkJICAgYmxvY2tubywgYnVmZmVyLCBwYWdlLAotCQkJCQkJCQkJ CSAgIGJsa19rbm93bl9hdiwKLQkJCQkJCQkJCQkgICBwcnN0YXRlLmxwZGVhZF9pdGVtcywgdm1i dWZmZXIpKQotCQl7Ci0JCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlvbiwgZG9uJ3QgdXBkYXRlIHRo ZSBWTSBmdXJ0aGVyICovCi0JCX0KKwkJVHJhbnNhY3Rpb25JZCBkZWJ1Z19jdXRvZmY7CisJCWJv b2wJCWRlYnVnX2FsbF9mcm96ZW47CiAKLQkJLyoKLQkJICogSWYgdGhlIHBhZ2UgaXNuJ3QgeWV0 IG1hcmtlZCBhbGwtdmlzaWJsZSBpbiB0aGUgVk0gb3IgaXQgaXMgYW5kCi0JCSAqIG5lZWRzIHRv IGJlIG1hcmtlZCBhbGwtZnJvemVuLCB1cGRhdGUgdGhlIFZNLiBOb3RlIHRoYXQgYWxsX2Zyb3pl bgotCQkgKiBpcyBvbmx5IHZhbGlkIGlmIGFsbF92aXNpYmxlIGlzIHRydWUsIHNvIHdlIG11c3Qg Y2hlY2sgYm90aAotCQkgKiBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbi4KLQkJICovCi0JCWVs c2UgaWYgKHByZXN1bHQtPmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJlc3VsdC0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwgYmxv Y2tubywgJnZtYnVmZmVyKSkpKQotCQl7Ci0JCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMg PT0gMCk7Ci0JCQl2bWZsYWdzID0gVklTSUJJTElUWU1BUF9BTExfVklTSUJMRTsKKwkJQXNzZXJ0 KGN1dG9mZnMpOwogCi0JCQkvKgotCQkJICogSWYgdGhlIHBhZ2UgaXMgYWxsLWZyb3plbiwgd2Ug Y2FuIHBhc3MgSW52YWxpZFRyYW5zYWN0aW9uSWQgYXMKLQkJCSAqIG91ciBjdXRvZmZfeGlkLCBz aW5jZSBhIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uIHN1ZmZpY2llbnQgdG8KLQkJCSAqIG1ha2Ug ZXZlcnl0aGluZyBzYWZlIGZvciBSRURPIHdhcyBsb2dnZWQgd2hlbiB0aGUgcGFnZSdzIHR1cGxl cwotCQkJICogd2VyZSBmcm96ZW4uCi0JCQkgKi8KLQkJCWlmIChwcmVzdWx0LT5hbGxfZnJvemVu KQotCQkJewotCQkJCUFzc2VydCghVHJhbnNhY3Rpb25JZElzVmFsaWQocHJlc3VsdC0+dm1fY29u ZmxpY3RfaG9yaXpvbikpOwotCQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExfRlJPWkVO OwotCQkJfQorCQlBc3NlcnQocHJzdGF0ZS5scGRlYWRfaXRlbXMgPT0gMCk7CiAKLQkJCS8qCi0J CQkgKiBJdCdzIHBvc3NpYmxlIGZvciB0aGUgVk0gYml0IHRvIGJlIGNsZWFyIGFuZCB0aGUgcGFn ZS1sZXZlbCBiaXQKLQkJCSAqIHRvIGJlIHNldCBpZiBjaGVja3N1bXMgYXJlIG5vdCBlbmFibGVk LgotCQkJICoKLQkJCSAqIEFuZCBldmVuIGlmIHdlIGFyZSBqdXN0IHBsYW5uaW5nIHRvIHVwZGF0 ZSB0aGUgZnJvemVuIGJpdCBpbgotCQkJICogdGhlIFZNLCB3ZSBzaG91bGRuJ3QgcmVseSBvbiBh bGxfdmlzaWJsZV9hY2NvcmRpbmdfdG9fdm0gYXMgYQotCQkJICogcHJveHkgZm9yIHRoZSBwYWdl LWxldmVsIFBEX0FMTF9WSVNJQkxFIGJpdCBiZWluZyBzZXQsIHNpbmNlIGl0Ci0JCQkgKiBtaWdo dCBoYXZlIGJlY29tZSBzdGFsZS4KLQkJCSAqCi0JCQkgKiBJZiB0aGUgaGVhcCBwYWdlIGlzIGFs bC12aXNpYmxlIGJ1dCB0aGUgVk0gYml0IGlzIG5vdCBzZXQsIHdlCi0JCQkgKiBkb24ndCBuZWVk IHRvIGRpcnR5IHRoZSBoZWFwIHBhZ2UuICBIb3dldmVyLCBpZiBjaGVja3N1bXMgYXJlCi0JCQkg KiBlbmFibGVkLCB3ZSBkbyBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBoZWFwIHBhZ2UgaXMg ZGlydGllZAotCQkJICogYmVmb3JlIHBhc3NpbmcgaXQgdG8gdmlzaWJpbGl0eW1hcF9zZXQoKSwg YmVjYXVzZSBpdCBtYXkgYmUKLQkJCSAqIGxvZ2dlZC4KLQkJCSAqLwotCQkJaWYgKCFQYWdlSXNB bGxWaXNpYmxlKHBhZ2UpIHx8IFhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJCXsKLQkJCQlQYWdl U2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKLQkJCX0K KwkJaWYgKCFoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUocmVsYXRpb24sIGJ1ZmZlciwKKwkJCQkJ CQkJCSAgY3V0b2Zmcy0+T2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgJmRlYnVnX2FsbF9mcm96ZW4s CisJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQorCQkJQXNzZXJ0KGZhbHNlKTsK IAotCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9uLCBibG9ja25vLCBi dWZmZXIsIEludmFsaWRYTG9nUmVjUHRyLAotCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCBwcmVzdWx0 LT52bV9jb25mbGljdF9ob3Jpem9uLAotCQkJCQkJCQkJCSAgIHZtZmxhZ3MpOwotCQl9CisJCUFz c2VydChwcnN0YXRlLmFsbF9mcm96ZW4gPT0gZGVidWdfYWxsX2Zyb3plbik7CisKKwkJQXNzZXJ0 KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYpIHx8CisJCQkgICBkZWJ1Z19jdXRv ZmYgPT0gcHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpOwogCX0KKyNlbmRpZgogCisJLyog Q29weSBpbmZvcm1hdGlvbiBiYWNrIGZvciBjYWxsZXIgKi8KKwlwcmVzdWx0LT5uZGVsZXRlZCA9 IHByc3RhdGUubmRlbGV0ZWQ7CisJcHJlc3VsdC0+bm5ld2xwZGVhZCA9IHByc3RhdGUubmRlYWQ7 CisJcHJlc3VsdC0+bmZyb3plbiA9IHByc3RhdGUubmZyb3plbjsKKwlwcmVzdWx0LT5saXZlX3R1 cGxlcyA9IHByc3RhdGUubGl2ZV90dXBsZXM7CisJcHJlc3VsdC0+cmVjZW50bHlfZGVhZF90dXBs ZXMgPSBwcnN0YXRlLnJlY2VudGx5X2RlYWRfdHVwbGVzOworCXByZXN1bHQtPm9sZF92bWJpdHMg PSBvbGRfdm1iaXRzOworCS8qIG5ld192bWJpdHMgd2FzIHNldCBhYm92ZSAqLworCXByZXN1bHQt Pmhhc3R1cCA9IHByc3RhdGUuaGFzdHVwOwogCXByZXN1bHQtPmxwZGVhZF9pdGVtcyA9IHByc3Rh dGUubHBkZWFkX2l0ZW1zOwogCS8qIHRoZSBwcmVzdWx0LT5kZWFkb2Zmc2V0cyBhcnJheSB3YXMg YWxyZWFkeSBmaWxsZWQgaW4gKi8KIAotCXByZXN1bHQtPm9sZF92bWJpdHMgPSBvbGRfdm1iaXRz OwotCXByZXN1bHQtPm5ld192bWJpdHMgPSB2bWZsYWdzOwotCiAJaWYgKHByc3RhdGUuYXR0ZW1w dF9mcmVlemUpCiAJewogCQlpZiAocHJlc3VsdC0+bmZyb3plbiA+IDApCkBAIC0xNjI3LDcgKzE3 MTgsMTIgQEAgaGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX25vcm1hbChQYWdlIHBhZ2Us IFBydW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWIKIAkJCWJyZWFrOwogCX0KIAotCS8qIENv bnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNoIHdpbGwgbm90IGJlIHJlbW92 ZWQgKi8KKwkvKgorCSAqIENvbnNpZGVyIGZyZWV6aW5nIGFueSBub3JtYWwgdHVwbGVzIHdoaWNo IHdpbGwgbm90IGJlIHJlbW92ZWQuCisJICogUmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB3 ZSB3YW50IHRvIGZyZWV6ZSB0aGUgdHVwbGVzLCBpZiB3ZSB3YW50CisJICogdG8gdXBkYXRlIHRo ZSBWTSwgd2UgaGF2ZSB0byBjYWxsIGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSBvbiBldmVy eQorCSAqIHR1cGxlIHRvIGtub3cgd2hldGhlciBvciBub3QgdGhlIHBhZ2Ugd2lsbCBiZSB0b3Rh bGx5IGZyb3plbi4KKwkgKi8KIAlpZiAocHJzdGF0ZS0+YXR0ZW1wdF9mcmVlemUpCiAJewogCQli b29sCQl0b3RhbGx5X2Zyb3plbjsKQEAgLTIxOTAsNyArMjI4Niw3IEBAIGhlYXBfbG9nX2ZyZWV6 ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1cGxlcywKICAqIC0gUmVhcGlu ZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQgYXJlIGFscmVhZHkgTFBfREVB RCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAtIFZNIHVwZGF0ZXM6IEFmdGVy IHZhY3V1bSBwaGFzZSBJSUksIHRoZSBoZWFwIHBhZ2UgbWF5IGJlIG1hcmtlZAorICogLSBWTSB1 cGRhdGVzOiBBZnRlciB2YWN1dW0gcGhhc2VzIEkgYW5kIElJSSwgdGhlIGhlYXAgcGFnZSBtYXkg YmUgbWFya2VkCiAgKiAgIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuLgogICoKICAqIFRoZXNl IGNoYW5nZXMgYWxsIGhhcHBlbiB0b2dldGhlciwgc28gd2UgdXNlIGEgc2luZ2xlIFdBTCByZWNv cmQgZm9yIHRoZW0KQEAgLTIyNDgsNiArMjM0NCw4IEBAIGxvZ19oZWFwX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAlBc3NlcnQoKHZtZmxhZ3Mg JiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMpID09IHZtZmxhZ3MpOwogCisJQXNzZXJ0KGRvX3By dW5lIHx8IG5mcm96ZW4gPiAwIHx8IHZtZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJVFMp OworCiAJcmVnYnVmX2ZsYWdzID0gUkVHQlVGX1NUQU5EQVJEOwogCiAJaWYgKGZvcmNlX2hlYXBf ZnBpKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIGIv c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCmluZGV4IDk0OTI0MjMxNDFlLi43 NTIwNTE3OWI4MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6 eS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwpAQCAtMjAxNSwz NCArMjAxNSw2IEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJCXZhY3Jl bC0+bmV3X2Zyb3plbl90dXBsZV9wYWdlcysrOwogCX0KIAotCS8qCi0JICogVkFDVVVNIHdpbGwg Y2FsbCBoZWFwX3BhZ2VfaXNfYWxsX3Zpc2libGUoKSBkdXJpbmcgdGhlIHNlY29uZCBwYXNzIG92 ZXIKLQkgKiB0aGUgaGVhcCB0byBkZXRlcm1pbmUgYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4g Zm9yIHRoZSBwYWdlIC0tIHRoaXMKLQkgKiBpcyBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhl IGxvZ2ljIGZyb20gdGhpcyBmdW5jdGlvbi4gIE5vdyB0aGF0Ci0JICogd2UndmUgZmluaXNoZWQg cHJ1bmluZyBhbmQgZnJlZXppbmcsIG1ha2Ugc3VyZSB0aGF0IHdlJ3JlIGluIHRvdGFsCi0JICog YWdyZWVtZW50IHdpdGggaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKCkgdXNpbmcgYW4gYXNzZXJ0 aW9uLgotCSAqLwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLQkvKiBOb3RlIHRoYXQgYWxs X2Zyb3plbiB2YWx1ZSBkb2VzIG5vdCBtYXR0ZXIgd2hlbiAhYWxsX3Zpc2libGUgKi8KLQlpZiAo cHJlc3VsdC5hbGxfdmlzaWJsZSkKLQl7Ci0JCVRyYW5zYWN0aW9uSWQgZGVidWdfY3V0b2ZmOwot CQlib29sCQlkZWJ1Z19hbGxfZnJvemVuOwotCi0JCUFzc2VydChwcmVzdWx0LmxwZGVhZF9pdGVt cyA9PSAwKTsKLQotCQlpZiAoIWhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZSh2YWNyZWwtPnJlbCwg YnVmLAotCQkJCQkJCQkJICB2YWNyZWwtPmN1dG9mZnMuT2xkZXN0WG1pbiwgJmRlYnVnX2FsbF9m cm96ZW4sCi0JCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsICZ2YWNyZWwtPm9mZm51bSkpCi0JCQlB c3NlcnQoZmFsc2UpOwotCi0JCUFzc2VydChwcmVzdWx0LmFsbF9mcm96ZW4gPT0gZGVidWdfYWxs X2Zyb3plbik7Ci0KLQkJQXNzZXJ0KCFUcmFuc2FjdGlvbklkSXNWYWxpZChkZWJ1Z19jdXRvZmYp IHx8Ci0JCQkgICBkZWJ1Z19jdXRvZmYgPT0gcHJlc3VsdC52bV9jb25mbGljdF9ob3Jpem9uKTsK LQl9Ci0jZW5kaWYKLQogCS8qCiAJICogTm93IHNhdmUgZGV0YWlscyBvZiB0aGUgTFBfREVBRCBp dGVtcyBmcm9tIHRoZSBwYWdlIGluIHZhY3JlbAogCSAqLwpAQCAtMjA3Niw4ICsyMDQ4LDYgQEAg bGF6eV9zY2FuX3BydW5lKExWUmVsU3RhdGUgKnZhY3JlbCwKIAkvKiBEaWQgd2UgZmluZCBMUF9E RUFEIGl0ZW1zPyAqLwogCSpoYXNfbHBkZWFkX2l0ZW1zID0gKHByZXN1bHQubHBkZWFkX2l0ZW1z ID4gMCk7CiAKLQlBc3NlcnQoIXByZXN1bHQuYWxsX3Zpc2libGUgfHwgISgqaGFzX2xwZGVhZF9p dGVtcykpOwotCiAJLyoKIAkgKiBGb3IgdGhlIHB1cnBvc2VzIG9mIGxvZ2dpbmcsIGNvdW50IHdo ZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBuZXdseQogCSAqIHNldCBhbGwtdmlzaWJsZSBhbmQs IHBvdGVudGlhbGx5LCBhbGwtZnJvemVuLgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDk5NTJhZTk2YjEy Li4zNjc5OTI4ZDQzZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjM1LDE5ICsyMzUsMTIgQEAgdHlw ZWRlZiBzdHJ1Y3QgUHJ1bmVGcmVlemVSZXN1bHQKIAlpbnQJCQlyZWNlbnRseV9kZWFkX3R1cGxl czsKIAogCS8qCi0JICogYWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gaW5kaWNhdGUgdGhlIHN0 YXR1cyBvZiB0aGUgcGFnZSBhcyByZWZsZWN0ZWQKLQkgKiBpbiB0aGUgdmlzaWJpbGl0eSBtYXAg YWZ0ZXIgcHJ1bmluZywgZnJlZXppbmcsIGFuZCBzZXR0aW5nIGFueSBwYWdlcwotCSAqIGFsbC12 aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4KKwkgKiBvbGRfdm1iaXRzIGFyZSB0aGUgc3Rh dGUgb2YgdGhlIGFsbC12aXNpYmxlIGFuZCBhbGwtZnJvemVuIGJpdHMgaW4gdGhlCisJICogdmlz aWJpbGl0eSBtYXAgYmVmb3JlIHVwZGF0aW5nIGl0IGR1cmluZyBwaGFzZSBJIG9mIHZhY3V1bWlu Zy4KKwkgKiBuZXdfdm1iaXRzIGFyZSB0aGUgc3RhdGUgb2YgdGhvc2UgYml0cyBhZnRlciBwaGFz ZSBJIG9mIHZhY3V1bWluZy4KIAkgKgotCSAqIHZtX2NvbmZsaWN0X2hvcml6b24gaXMgdGhlIG5l d2VzdCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlCi0JICogKG9sZGVyIHRoYW4gT2xk ZXN0WG1pbikuICBJdCB3aWxsIG9ubHkgYmUgdmFsaWQgaWYgd2UgZGlkIG5vdCBzZXQgdGhlCi0J ICogcGFnZSBhbGwtZnJvemVuIGluIHRoZSBWTS4KLQkgKgotCSAqIFRoZXNlIGFyZSBvbmx5IHNl dCBpZiB0aGUgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9uIGlzIHNldC4KKwkgKiBUaGVzZSBhcmUg b25seSBzZXQgaWYgdGhlIEhFQVBfUEFHRV9QUlVORV9VUERBVEVfVk0gb3B0aW9uIGlzIHNldC4K IAkgKi8KLQlib29sCQlhbGxfdmlzaWJsZTsKLQlib29sCQlhbGxfZnJvemVuOwotCVRyYW5zYWN0 aW9uSWQgdm1fY29uZmxpY3RfaG9yaXpvbjsKIAl1aW50OAkJb2xkX3ZtYml0czsKIAl1aW50OAkJ bmV3X3ZtYml0czsKIAotLSAKMi40My4wCgo= --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0012-Remove-xl_heap_visible-entirely.patch" Content-Disposition: attachment; filename="v13-0012-Remove-xl_heap_visible-entirely.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4o12 RnJvbSBjM2RkODU2NWRiOGU2ZjAyNzNhNDk3YzU4NGY1M2JkMTAwNTdiNGI5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDE4IEp1biAyMDI1IDEyOjMwOjQyIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTIvMjBdIFJlbW92ZSB4bF9oZWFwX3Zpc2libGUgZW50aXJlbHkKClRoZXJlIGFy ZSBub3cgbm8gdXNlcnMgb2YgdGhpcywgc28gZWxpbWluYXRlIGl0IGVudGlyZWx5LgotLS0KIHNy Yy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jICAgICAgfCAgIDMgKy0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgfCAgNTQgKy0tLS0tLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgfCAxNTggKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgfCAgIDQgKy0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgICAgfCAgMTAgKy0KIHNyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL3Zpc2liaWxpdHltYXAuYyAgfCAxMDkgKy0tLS0tLS0tLS0tLS0t LQogc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMgICB8ICAxMCAtLQogc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNvZGUuYyB8ICAgMSAtCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zdGFuZGJ5LmMgICAgICAgIHwgIDEyICstCiBzcmMvaW5jbHVkZS9hY2Nl c3MvaGVhcGFtX3hsb2cuaCAgICAgICAgIHwgIDIwIC0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Zp c2liaWxpdHltYXAuaCAgICAgICB8ICAxMSArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxp dHltYXBkZWZzLmggICB8ICAgOSAtLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3Qg ICAgICAgICB8ICAgMSAtCiAxMyBmaWxlcyBjaGFuZ2VkLCAzMiBpbnNlcnRpb25zKCspLCAzNzAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9idWZt YXNrLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL2J1Zm1hc2suYwppbmRleCBiYjI2MGNm ZmE2OC4uMWZmZjAxMzgzYjMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24v YnVmbWFzay5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vYnVmbWFzay5jCkBAIC01 Niw4ICs1Niw3IEBAIG1hc2tfcGFnZV9oaW50X2JpdHMoUGFnZSBwYWdlKQogCiAJLyoKIAkgKiBE dXJpbmcgcmVwbGF5LCBpZiB0aGUgcGFnZSBMU04gaGFzIGFkdmFuY2VkIHBhc3Qgb3VyIFhMT0cg cmVjb3JkJ3MgTFNOLAotCSAqIHdlIGRvbid0IG1hcmsgdGhlIHBhZ2UgYWxsLXZpc2libGUuIFNl ZSBoZWFwX3hsb2dfdmlzaWJsZSgpIGZvcgotCSAqIGRldGFpbHMuCisJICogd2UgZG9uJ3QgbWFy ayB0aGUgcGFnZSBhbGwtdmlzaWJsZS4KIAkgKi8KIAlQYWdlQ2xlYXJBbGxWaXNpYmxlKHBhZ2Up OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwppbmRleCBjOGNkOWQyMjcyNi4uZGZhOWQ1YTQ2 MGQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVk ZSAiYWNjZXNzL3ZhbGlkLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXAuaCIKICNp bmNsdWRlICJhY2Nlc3MveGxvZ2luc2VydC5oIgorI2luY2x1ZGUgImFjY2Vzcy94bG9ndXRpbHMu aCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2RhdGFiYXNlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19kYXRhYmFzZV9kLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVtLmgiCkBAIC0yNTI0LDEx ICsyNTI1LDExIEBAIGhlYXBfbXVsdGlfaW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBUdXBsZVRh YmxlU2xvdCAqKnNsb3RzLCBpbnQgbnR1cGxlcywKIAkJZWxzZSBpZiAoYWxsX2Zyb3plbl9zZXQp CiAJCXsKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCQkJdmlzaWJpbGl0eW1hcF9zZXRf dm1iaXRzKHJlbGF0aW9uLAotCQkJCQkJCQkJIEJ1ZmZlckdldEJsb2NrTnVtYmVyKGJ1ZmZlciks Ci0JCQkJCQkJCQkgdm1idWZmZXIsCi0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfVklTSUJM RSB8Ci0JCQkJCQkJCQkgVklTSUJJTElUWU1BUF9BTExfRlJPWkVOKTsKKwkJCXZpc2liaWxpdHlt YXBfc2V0KHJlbGF0aW9uLAorCQkJCQkJCSAgQnVmZmVyR2V0QmxvY2tOdW1iZXIoYnVmZmVyKSwK KwkJCQkJCQkgIHZtYnVmZmVyLAorCQkJCQkJCSAgVklTSUJJTElUWU1BUF9BTExfVklTSUJMRSB8 CisJCQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9GUk9aRU4pOwogCQl9CiAKIAkJLyoKQEAgLTg3 OTksNDkgKzg4MDAsNiBAQCBib3R0b211cF9zb3J0X2FuZF9zaHJpbmsoVE1fSW5kZXhEZWxldGVP cCAqZGVsc3RhdGUpCiAJcmV0dXJuIG5ibG9ja3NmYXZvcmFibGU7CiB9CiAKLS8qCi0gKiBQZXJm b3JtIFhMb2dJbnNlcnQgZm9yIGEgaGVhcC12aXNpYmxlIG9wZXJhdGlvbi4gICdibG9jaycgaXMg dGhlIGJsb2NrCi0gKiBiZWluZyBtYXJrZWQgYWxsLXZpc2libGUsIGFuZCB2bV9idWZmZXIgaXMg dGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZQotICogY29ycmVzcG9uZGluZyB2aXNpYmlsaXR5IG1h cCBibG9jay4gIEJvdGggc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIG1vZGlmaWVkCi0gKiBhbmQg ZGlydGllZC4KLSAqCi0gKiBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiBjb21lcyBmcm9tIHRoZSBs YXJnZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcKLSAqIG1hcmtlZCBhbGwtdmlzaWJsZS4gIFJF RE8gcm91dGluZSB1c2VzIGl0IHRvIGdlbmVyYXRlIHJlY292ZXJ5IGNvbmZsaWN0cy4KLSAqCi0g KiBJZiBjaGVja3N1bXMgb3Igd2FsX2xvZ19oaW50cyBhcmUgZW5hYmxlZCwgd2UgbWF5IGFsc28g Z2VuZXJhdGUgYSBmdWxsLXBhZ2UKLSAqIGltYWdlIG9mIGhlYXBfYnVmZmVyLiBPdGhlcndpc2Us IHdlIG9wdGltaXplIGF3YXkgdGhlIEZQSSAoYnkgc3BlY2lmeWluZwotICogUkVHQlVGX05PX0lN QUdFIGZvciB0aGUgaGVhcCBidWZmZXIpLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIgc2hvdWxk ICpub3QqCi0gKiB1cGRhdGUgdGhlIGhlYXAgcGFnZSdzIExTTi4KLSAqLwotWExvZ1JlY1B0cgot bG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBoZWFwX2J1ZmZlciwgQnVmZmVy IHZtX2J1ZmZlciwKLQkJCQkgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwg dWludDggdm1mbGFncykKLXsKLQl4bF9oZWFwX3Zpc2libGUgeGxyZWM7Ci0JWExvZ1JlY1B0cgly ZWNwdHI7Ci0JdWludDgJCWZsYWdzOwotCi0JQXNzZXJ0KEJ1ZmZlcklzVmFsaWQoaGVhcF9idWZm ZXIpKTsKLQlBc3NlcnQoQnVmZmVySXNWYWxpZCh2bV9idWZmZXIpKTsKLQotCXhscmVjLnNuYXBz aG90Q29uZmxpY3RIb3Jpem9uID0gc25hcHNob3RDb25mbGljdEhvcml6b247Ci0JeGxyZWMuZmxh Z3MgPSB2bWZsYWdzOwotCWlmIChSZWxhdGlvbklzQWNjZXNzaWJsZUluTG9naWNhbERlY29kaW5n KHJlbCkpCi0JCXhscmVjLmZsYWdzIHw9IFZJU0lCSUxJVFlNQVBfWExPR19DQVRBTE9HX1JFTDsK LQlYTG9nQmVnaW5JbnNlcnQoKTsKLQlYTG9nUmVnaXN0ZXJEYXRhKCZ4bHJlYywgU2l6ZU9mSGVh cFZpc2libGUpOwotCi0JWExvZ1JlZ2lzdGVyQnVmZmVyKDAsIHZtX2J1ZmZlciwgMCk7Ci0KLQlm bGFncyA9IFJFR0JVRl9TVEFOREFSRDsKLQlpZiAoIVhMb2dIaW50Qml0SXNOZWVkZWQoKSkKLQkJ ZmxhZ3MgfD0gUkVHQlVGX05PX0lNQUdFOwotCVhMb2dSZWdpc3RlckJ1ZmZlcigxLCBoZWFwX2J1 ZmZlciwgZmxhZ3MpOwotCi0JcmVjcHRyID0gWExvZ0luc2VydChSTV9IRUFQMl9JRCwgWExPR19I RUFQMl9WSVNJQkxFKTsKLQotCXJldHVybiByZWNwdHI7Ci19CiAKIC8qCiAgKiBQZXJmb3JtIFhM b2dJbnNlcnQgZm9yIGEgaGVhcC11cGRhdGUgb3BlcmF0aW9uLiAgQ2FsbGVyIG11c3QgYWxyZWFk eQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggODNiMzlhOTEwMmMuLjg0 YzI5MjQ5NjdkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1feGxv Zy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTI0Nyw5 ICsyNDcsNyBAQCBoZWFwX3hsb2dfcHJ1bmVfZnJlZXplKFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KQogCSAqIHRoZSBWTSBpcyBzZXQuCiAJICoKIAkgKiBJbiByZWNvdmVyeSwgd2UgZXhwZWN0IG5v IG90aGVyIHdyaXRlcnMsIHNvIHdyaXRpbmcgdG8gdGhlIFZNIHBhZ2UKLQkgKiB3aXRob3V0IGhv bGRpbmcgYSBsb2NrIG9uIHRoZSBoZWFwIHBhZ2UgaXMgY29uc2lkZXJlZCBzYWZlIGVub3VnaC4g SXQKLQkgKiBpcyBkb25lIHRoaXMgd2F5IHdoZW4gcmVwbGF5aW5nIHhsX2hlYXBfdmlzaWJsZSBy ZWNvcmRzIChzZWUKLQkgKiBoZWFwX3hsb2dfdmlzaWJsZSgpKS4KKwkgKiB3aXRob3V0IGhvbGRp bmcgYSBsb2NrIG9uIHRoZSBoZWFwIHBhZ2UgaXMgY29uc2lkZXJlZCBzYWZlIGVub3VnaC4KIAkg Ki8KIAlpZiAodm1mbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUyAmJgogCQlYTG9nUmVh ZEJ1ZmZlckZvclJlZG9FeHRlbmRlZChyZWNvcmQsIDEsCkBAIC0yNjUsNyArMjYzLDcgQEAgaGVh cF94bG9nX3BydW5lX2ZyZWV6ZShYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJaWYgKFBhZ2VJ c05ldyh2bXBhZ2UpKQogCQkJUGFnZUluaXQodm1wYWdlLCBCTENLU1osIDApOwogCi0JCW9sZF92 bWJpdHMgPSB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMocmVsbiwgYmxrbm8sIHZtYnVmZmVyLCB2 bWZsYWdzKTsKKwkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCB2 bWJ1ZmZlciwgdm1mbGFncyk7CiAKIAkJLyogT25seSBzZXQgVk0gcGFnZSBMU04gaWYgd2UgbW9k aWZpZWQgdGhlIHBhZ2UgKi8KIAkJaWYgKG9sZF92bWJpdHMgIT0gdm1mbGFncykKQEAgLTI4NCwx NDIgKzI4Miw2IEBAIGhlYXBfeGxvZ19wcnVuZV9mcmVlemUoWExvZ1JlYWRlclN0YXRlICpyZWNv cmQpCiAJCVhMb2dSZWNvcmRQYWdlV2l0aEZyZWVTcGFjZShybG9jYXRvciwgYmxrbm8sIGZyZWVz cGFjZSk7CiB9CiAKLS8qCi0gKiBSZXBsYXkgWExPR19IRUFQMl9WSVNJQkxFIHJlY29yZHMuCi0g KgotICogVGhlIGNyaXRpY2FsIGludGVncml0eSByZXF1aXJlbWVudCBoZXJlIGlzIHRoYXQgd2Ug bXVzdCBuZXZlciBlbmQgdXAgd2l0aAotICogYSBzaXR1YXRpb24gd2hlcmUgdGhlIHZpc2liaWxp dHkgbWFwIGJpdCBpcyBzZXQsIGFuZCB0aGUgcGFnZS1sZXZlbAotICogUERfQUxMX1ZJU0lCTEUg Yml0IGlzIGNsZWFyLiAgSWYgdGhhdCB3ZXJlIHRvIG9jY3VyLCB0aGVuIGEgc3Vic2VxdWVudAot ICogcGFnZSBtb2RpZmljYXRpb24gd291bGQgZmFpbCB0byBjbGVhciB0aGUgdmlzaWJpbGl0eSBt YXAgYml0LgotICovCi1zdGF0aWMgdm9pZAotaGVhcF94bG9nX3Zpc2libGUoWExvZ1JlYWRlclN0 YXRlICpyZWNvcmQpCi17Ci0JWExvZ1JlY1B0cglsc24gPSByZWNvcmQtPkVuZFJlY1B0cjsKLQl4 bF9oZWFwX3Zpc2libGUgKnhscmVjID0gKHhsX2hlYXBfdmlzaWJsZSAqKSBYTG9nUmVjR2V0RGF0 YShyZWNvcmQpOwotCUJ1ZmZlcgkJdm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwotCUJ1ZmZlcgkJ YnVmZmVyOwotCVBhZ2UJCXBhZ2U7Ci0JUmVsRmlsZUxvY2F0b3IgcmxvY2F0b3I7Ci0JQmxvY2tO dW1iZXIgYmxrbm87Ci0JWExvZ1JlZG9BY3Rpb24gYWN0aW9uOwotCi0JQXNzZXJ0KCh4bHJlYy0+ ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUykgPT0geGxyZWMtPmZsYWdzKTsK LQotCVhMb2dSZWNHZXRCbG9ja1RhZyhyZWNvcmQsIDEsICZybG9jYXRvciwgTlVMTCwgJmJsa25v KTsKLQotCS8qCi0JICogSWYgdGhlcmUgYXJlIGFueSBIb3QgU3RhbmRieSB0cmFuc2FjdGlvbnMg cnVubmluZyB0aGF0IGhhdmUgYW4geG1pbgotCSAqIGhvcml6b24gb2xkIGVub3VnaCB0aGF0IHRo aXMgcGFnZSBpc24ndCBhbGwtdmlzaWJsZSBmb3IgdGhlbSwgdGhleQotCSAqIG1pZ2h0IGluY29y cmVjdGx5IGRlY2lkZSB0aGF0IGFuIGluZGV4LW9ubHkgc2NhbiBjYW4gc2tpcCBhIGhlYXAgZmV0 Y2guCi0JICoKLQkgKiBOQjogSXQgbWlnaHQgYmUgYmV0dGVyIHRvIHRocm93IHNvbWUga2luZCBv ZiAic29mdCIgY29uZmxpY3QgaGVyZSB0aGF0Ci0JICogZm9yY2VzIGFueSBpbmRleC1vbmx5IHNj YW4gdGhhdCBpcyBpbiBmbGlnaHQgdG8gcGVyZm9ybSBoZWFwIGZldGNoZXMsCi0JICogcmF0aGVy IHRoYW4ga2lsbGluZyB0aGUgdHJhbnNhY3Rpb24gb3V0cmlnaHQuCi0JICovCi0JaWYgKEluSG90 U3RhbmRieSkKLQkJUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoeGxyZWMtPnNu YXBzaG90Q29uZmxpY3RIb3Jpem9uLAotCQkJCQkJCQkJCQl4bHJlYy0+ZmxhZ3MgJiBWSVNJQklM SVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwsCi0JCQkJCQkJCQkJCXJsb2NhdG9yKTsKLQotCS8qCi0J ICogUmVhZCB0aGUgaGVhcCBwYWdlLCBpZiBpdCBzdGlsbCBleGlzdHMuIElmIHRoZSBoZWFwIGZp bGUgaGFzIGRyb3BwZWQgb3IKLQkgKiB0cnVuY2F0ZWQgbGF0ZXIgaW4gcmVjb3ZlcnksIHdlIGRv bid0IG5lZWQgdG8gdXBkYXRlIHRoZSBwYWdlLCBidXQgd2UnZAotCSAqIGJldHRlciBzdGlsbCB1 cGRhdGUgdGhlIHZpc2liaWxpdHkgbWFwLgotCSAqLwotCWFjdGlvbiA9IFhMb2dSZWFkQnVmZmVy Rm9yUmVkbyhyZWNvcmQsIDEsICZidWZmZXIpOwotCWlmIChhY3Rpb24gPT0gQkxLX05FRURTX1JF RE8pCi0JewotCQkvKgotCQkgKiBXZSBkb24ndCBidW1wIHRoZSBMU04gb2YgdGhlIGhlYXAgcGFn ZSB3aGVuIHNldHRpbmcgdGhlIHZpc2liaWxpdHkKLQkJICogbWFwIGJpdCAodW5sZXNzIGNoZWNr c3VtcyBvciB3YWxfaGludF9iaXRzIGlzIGVuYWJsZWQsIGluIHdoaWNoCi0JCSAqIGNhc2Ugd2Ug bXVzdCkuIFRoaXMgZXhwb3NlcyB1cyB0byB0b3JuIHBhZ2UgaGF6YXJkcywgYnV0IHNpbmNlCi0J CSAqIHdlJ3JlIG5vdCBpbnNwZWN0aW5nIHRoZSBleGlzdGluZyBwYWdlIGNvbnRlbnRzIGluIGFu eSB3YXksIHdlCi0JCSAqIGRvbid0IGNhcmUuCi0JCSAqLwotCQlwYWdlID0gQnVmZmVyR2V0UGFn ZShidWZmZXIpOwotCi0JCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwotCi0JCWlmIChYTG9nSGlu dEJpdElzTmVlZGVkKCkpCi0JCQlQYWdlU2V0TFNOKHBhZ2UsIGxzbik7Ci0KLQkJTWFya0J1ZmZl ckRpcnR5KGJ1ZmZlcik7Ci0JfQotCWVsc2UgaWYgKGFjdGlvbiA9PSBCTEtfUkVTVE9SRUQpCi0J ewotCQkvKgotCQkgKiBJZiBoZWFwIGJsb2NrIHdhcyBiYWNrZWQgdXAsIHdlIGFscmVhZHkgcmVz dG9yZWQgaXQgYW5kIHRoZXJlJ3MKLQkJICogbm90aGluZyBtb3JlIHRvIGRvLiAoVGhpcyBjYW4g b25seSBoYXBwZW4gd2l0aCBjaGVja3N1bXMgb3IKLQkJICogd2FsX2xvZ19oaW50cyBlbmFibGVk LikKLQkJICovCi0JfQotCi0JaWYgKEJ1ZmZlcklzVmFsaWQoYnVmZmVyKSkKLQl7Ci0JCVNpemUJ CXNwYWNlID0gUGFnZUdldEZyZWVTcGFjZShCdWZmZXJHZXRQYWdlKGJ1ZmZlcikpOwotCi0JCVVu bG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKLQotCQkvKgotCQkgKiBTaW5jZSBGU00gaXMgbm90 IFdBTC1sb2dnZWQgYW5kIG9ubHkgdXBkYXRlZCBoZXVyaXN0aWNhbGx5LCBpdAotCQkgKiBlYXNp bHkgYmVjb21lcyBzdGFsZSBpbiBzdGFuZGJ5cy4gIElmIHRoZSBzdGFuZGJ5IGlzIGxhdGVyIHBy b21vdGVkCi0JCSAqIGFuZCBydW5zIFZBQ1VVTSwgaXQgd2lsbCBza2lwIHVwZGF0aW5nIGluZGl2 aWR1YWwgZnJlZSBzcGFjZQotCQkgKiBmaWd1cmVzIGZvciBwYWdlcyB0aGF0IGJlY2FtZSBhbGwt dmlzaWJsZSAob3IgYWxsLWZyb3plbiwgZGVwZW5kaW5nCi0JCSAqIG9uIHRoZSB2YWN1dW0gbW9k ZSwpIHdoaWNoIGlzIHRyb3VibGVzb21lIHdoZW4gRnJlZVNwYWNlTWFwVmFjdXVtCi0JCSAqIHBy b3BhZ2F0ZXMgdG9vIG9wdGltaXN0aWMgZnJlZSBzcGFjZSB2YWx1ZXMgdG8gdXBwZXIgRlNNIGxh eWVyczsKLQkJICogbGF0ZXIgaW5zZXJ0ZXJzIHRyeSB0byB1c2Ugc3VjaCBwYWdlcyBvbmx5IHRv IGZpbmQgb3V0IHRoYXQgdGhleQotCQkgKiBhcmUgdW51c2FibGUuICBUaGlzIGNhbiBjYXVzZSBs b25nIHN0YWxscyB3aGVuIHRoZXJlIGFyZSBtYW55IHN1Y2gKLQkJICogcGFnZXMuCi0JCSAqCi0J CSAqIEZvcmVzdGFsbCB0aG9zZSBwcm9ibGVtcyBieSB1cGRhdGluZyBGU00ncyBpZGVhIGFib3V0 IGEgcGFnZSB0aGF0Ci0JCSAqIGlzIGJlY29taW5nIGFsbC12aXNpYmxlIG9yIGFsbC1mcm96ZW4u Ci0JCSAqCi0JCSAqIERvIHRoaXMgcmVnYXJkbGVzcyBvZiBhIGZ1bGwtcGFnZSBpbWFnZSBiZWlu ZyBhcHBsaWVkLCBzaW5jZSB0aGUKLQkJICogRlNNIGRhdGEgaXMgbm90IGluIHRoZSBwYWdlIGFu eXdheS4KLQkJICovCi0JCWlmICh4bHJlYy0+ZmxhZ3MgJiBWSVNJQklMSVRZTUFQX1ZBTElEX0JJ VFMpCi0JCQlYTG9nUmVjb3JkUGFnZVdpdGhGcmVlU3BhY2UocmxvY2F0b3IsIGJsa25vLCBzcGFj ZSk7Ci0JfQotCi0JLyoKLQkgKiBFdmVuIGlmIHdlIHNraXBwZWQgdGhlIGhlYXAgcGFnZSB1cGRh dGUgZHVlIHRvIHRoZSBMU04gaW50ZXJsb2NrLCBpdCdzCi0JICogc3RpbGwgc2FmZSB0byB1cGRh dGUgdGhlIHZpc2liaWxpdHkgbWFwLiAgQW55IFdBTCByZWNvcmQgdGhhdCBjbGVhcnMKLQkgKiB0 aGUgdmlzaWJpbGl0eSBtYXAgYml0IGRvZXMgc28gYmVmb3JlIGNoZWNraW5nIHRoZSBwYWdlIExT Tiwgc28gYW55Ci0JICogYml0cyB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZCB3aWxsIHN0aWxsIGJl IGNsZWFyZWQuCi0JICovCi0JaWYgKFhMb2dSZWFkQnVmZmVyRm9yUmVkb0V4dGVuZGVkKHJlY29y ZCwgMCwgUkJNX1pFUk9fT05fRVJST1IsIGZhbHNlLAotCQkJCQkJCQkJICAmdm1idWZmZXIpID09 IEJMS19ORUVEU19SRURPKQotCXsKLQkJUGFnZQkJdm1wYWdlID0gQnVmZmVyR2V0UGFnZSh2bWJ1 ZmZlcik7Ci0JCVJlbGF0aW9uCXJlbG47Ci0JCXVpbnQ4CQl2bWJpdHM7Ci0KLQkJLyogaW5pdGlh bGl6ZSB0aGUgcGFnZSBpZiBpdCB3YXMgcmVhZCBhcyB6ZXJvcyAqLwotCQlpZiAoUGFnZUlzTmV3 KHZtcGFnZSkpCi0JCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7Ci0KLQkJLyogcmVtb3Zl IFZJU0lCSUxJVFlNQVBfWExPR18qICovCi0JCXZtYml0cyA9IHhscmVjLT5mbGFncyAmIFZJU0lC SUxJVFlNQVBfVkFMSURfQklUUzsKLQotCQkvKgotCQkgKiBYTG9nUmVhZEJ1ZmZlckZvclJlZG9F eHRlbmRlZCBsb2NrZWQgdGhlIGJ1ZmZlci4gQnV0Ci0JCSAqIHZpc2liaWxpdHltYXBfc2V0IHdp bGwgaGFuZGxlIGxvY2tpbmcgaXRzZWxmLgotCQkgKi8KLQkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwg QlVGRkVSX0xPQ0tfVU5MT0NLKTsKLQotCQlyZWxuID0gQ3JlYXRlRmFrZVJlbGNhY2hlRW50cnko cmxvY2F0b3IpOwotCi0JCXZpc2liaWxpdHltYXBfc2V0KHJlbG4sIGJsa25vLCBJbnZhbGlkQnVm ZmVyLCBsc24sIHZtYnVmZmVyLAotCQkJCQkJICB4bHJlYy0+c25hcHNob3RDb25mbGljdEhvcml6 b24sIHZtYml0cyk7Ci0KLQkJUmVsZWFzZUJ1ZmZlcih2bWJ1ZmZlcik7Ci0JCUZyZWVGYWtlUmVs Y2FjaGVFbnRyeShyZWxuKTsKLQl9Ci0JZWxzZSBpZiAoQnVmZmVySXNWYWxpZCh2bWJ1ZmZlcikp Ci0JCVVubG9ja1JlbGVhc2VCdWZmZXIodm1idWZmZXIpOwotfQotCiAvKgogICogR2l2ZW4gYW4g ImluZm9iaXRzIiBmaWVsZCBmcm9tIGFuIFhMb2cgcmVjb3JkLCBzZXQgdGhlIGNvcnJlY3QgYml0 cyBpbiB0aGUKICAqIGdpdmVuIGluZm9tYXNrIGFuZCBpbmZvbWFzazIgZm9yIHRoZSB0dXBsZSB0 b3VjaGVkIGJ5IHRoZSByZWNvcmQuCkBAIC03OTYsOSArNjU4LDcgQEAgaGVhcF94bG9nX211bHRp X2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkKIAkgKiB0aGUgVk0gaXMgc2V0LgogCSAq CiAJICogSW4gcmVjb3ZlcnksIHdlIGV4cGVjdCBubyBvdGhlciB3cml0ZXJzLCBzbyB3cml0aW5n IHRvIHRoZSBWTSBwYWdlCi0JICogd2l0aG91dCBob2xkaW5nIGEgbG9jayBvbiB0aGUgaGVhcCBw YWdlIGlzIGNvbnNpZGVyZWQgc2FmZSBlbm91Z2guIEl0Ci0JICogaXMgZG9uZSB0aGlzIHdheSB3 aGVuIHJlcGxheWluZyB4bF9oZWFwX3Zpc2libGUgcmVjb3JkcyAoc2VlCi0JICogaGVhcF94bG9n X3Zpc2libGUoKSkuCisJICogd2l0aG91dCBob2xkaW5nIGEgbG9jayBvbiB0aGUgaGVhcCBwYWdl IGlzIGNvbnNpZGVyZWQgc2FmZSBlbm91Z2guCiAJICovCiAJaWYgKHhscmVjLT5mbGFncyAmIFhM SF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgJiYKIAkJWExvZ1JlYWRCdWZmZXJGb3JSZWRvRXh0ZW5k ZWQocmVjb3JkLCAxLCBSQk1fWkVST19PTl9FUlJPUiwgZmFsc2UsCkBAIC04MTEsMTUgKzY3MSwx NCBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3JkKQogCQlp ZiAoUGFnZUlzTmV3KHZtcGFnZSkpCiAJCQlQYWdlSW5pdCh2bXBhZ2UsIEJMQ0tTWiwgMCk7CiAK LQkJdmlzaWJpbGl0eW1hcF9zZXRfdm1iaXRzKHJlbG4sIGJsa25vLAotCQkJCQkJCQkgdm1idWZm ZXIsCi0JCQkJCQkJCSBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKLQkJCQkJCQkJIFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KIAkJLyoKIAkJICogSXQgaXMgbm90IHBvc3NpYmxlIHRo YXQgdGhlIFZNIHdhcyBhbHJlYWR5IHNldCBmb3IgdGhpcyBoZWFwIHBhZ2UsCiAJCSAqIHNvIHRo ZSB2bWJ1ZmZlciBtdXN0IGhhdmUgYmVlbiBtb2RpZmllZCBhbmQgbWFya2VkIGRpcnR5LgogCQkg Ki8KKwkJdmlzaWJpbGl0eW1hcF9zZXQocmVsbiwgYmxrbm8sCisJCQkJCQkgIHZtYnVmZmVyLAor CQkJCQkJICBWSVNJQklMSVRZTUFQX0FMTF9WSVNJQkxFIHwKKwkJCQkJCSAgVklTSUJJTElUWU1B UF9BTExfRlJPWkVOKTsKIAkJQXNzZXJ0KEJ1ZmZlcklzRGlydHkodm1idWZmZXIpKTsKIAkJUGFn ZVNldExTTihCdWZmZXJHZXRQYWdlKHZtYnVmZmVyKSwgbHNuKTsKIAkJRnJlZUZha2VSZWxjYWNo ZUVudHJ5KHJlbG4pOwpAQCAtMTQwMCw5ICsxMjU5LDYgQEAgaGVhcDJfcmVkbyhYTG9nUmVhZGVy U3RhdGUgKnJlY29yZCkKIAkJY2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgog CQkJaGVhcF94bG9nX3BydW5lX2ZyZWV6ZShyZWNvcmQpOwogCQkJYnJlYWs7Ci0JCWNhc2UgWExP R19IRUFQMl9WSVNJQkxFOgotCQkJaGVhcF94bG9nX3Zpc2libGUocmVjb3JkKTsKLQkJCWJyZWFr OwogCQljYXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaGVhcF94bG9nX211bHRpX2lu c2VydChyZWNvcmQpOwogCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmlu ZGV4IDc0Zjc4NzhjOWFjLi41MzhlODJkYjhlNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVo ZWFwLmMKQEAgLTk4OSw4ICs5ODksOCBAQCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZShSZWxh dGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJaWYgKGRvX3NldF92bSkKIAkJewogCQkJ QXNzZXJ0KFBhZ2VJc0FsbFZpc2libGUocGFnZSkpOwotCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyhyZWxhdGlvbiwgYmxvY2tubywKLQkJCQkJCQkJCQkJCSAgdm1idWZm ZXIsIHZtZmxhZ3MpOworCQkJb2xkX3ZtYml0cyA9IHZpc2liaWxpdHltYXBfc2V0KHJlbGF0aW9u LCBibG9ja25vLAorCQkJCQkJCQkJCSAgIHZtYnVmZmVyLCB2bWZsYWdzKTsKIAogCQkJaWYgKG9s ZF92bWJpdHMgPT0gdm1mbGFncykKIAkJCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vz cy9oZWFwL3ZhY3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YwppbmRleCA3NTIwNTE3OWI4My4uMmRjY2EwNzFhNDUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKQEAgLTE4ODgsOCArMTg4OCw4IEBAIGxhenlfc2Nhbl9uZXdfb3JfZW1wdHko TFZSZWxTdGF0ZSAqdmFjcmVsLCBCdWZmZXIgYnVmLCBCbG9ja051bWJlciBibGtubywKIAkJCVBh Z2VTZXRBbGxWaXNpYmxlKHBhZ2UpOwogCQkJTWFya0J1ZmZlckRpcnR5KGJ1Zik7CiAKLQkJCXZp c2liaWxpdHltYXBfc2V0X3ZtYml0cyh2YWNyZWwtPnJlbCwgYmxrbm8sCi0JCQkJCQkJCQkgdm1i dWZmZXIsIG5ld192bWJpdHMpOworCQkJdmlzaWJpbGl0eW1hcF9zZXQodmFjcmVsLT5yZWwsIGJs a25vLAorCQkJCQkJCSAgdm1idWZmZXIsIG5ld192bWJpdHMpOwogCiAJCQlpZiAoUmVsYXRpb25O ZWVkc1dBTCh2YWNyZWwtPnJlbCkpCiAJCQl7CkBAIC0yNzU3LDkgKzI3NTcsOSBAQCBsYXp5X3Zh Y3V1bV9oZWFwX3BhZ2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVm ZmVyIGJ1ZmZlciwKIAkJQXNzZXJ0KCFQYWdlSXNBbGxWaXNpYmxlKHBhZ2UpKTsKIAkJc2V0X3Bk X2FsbF92aXMgPSB0cnVlOwogCQlQYWdlU2V0QWxsVmlzaWJsZShwYWdlKTsKLQkJdmlzaWJpbGl0 eW1hcF9zZXRfdm1iaXRzKHZhY3JlbC0+cmVsLAotCQkJCQkJCQkgYmxrbm8sCi0JCQkJCQkJCSB2 bWJ1ZmZlciwgdm1mbGFncyk7CisJCXZpc2liaWxpdHltYXBfc2V0KHZhY3JlbC0+cmVsLAorCQkJ CQkJICBibGtubywKKwkJCQkJCSAgdm1idWZmZXIsIHZtZmxhZ3MpOwogCQljb25mbGljdF94aWQg PSB2aXNpYmlsaXR5X2N1dG9mZl94aWQ7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNp YmlsaXR5bWFwLmMKaW5kZXggYWE0OGE0MzYxMDguLmY3YmFkNjhmZmM1IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92aXNpYmlsaXR5bWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvdmlzaWJpbGl0eW1hcC5jCkBAIC0xNCw4ICsxNCw3IEBACiAgKgkJdmlzaWJp bGl0eW1hcF9jbGVhciAgLSBjbGVhciBiaXRzIGZvciBvbmUgcGFnZSBpbiB0aGUgdmlzaWJpbGl0 eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3BpbgkgLSBwaW4gYSBtYXAgcGFnZSBmb3Igc2V0dGlu ZyBhIGJpdAogICoJCXZpc2liaWxpdHltYXBfcGluX29rIC0gY2hlY2sgd2hldGhlciBjb3JyZWN0 IG1hcCBwYWdlIGlzIGFscmVhZHkgcGlubmVkCi0gKgkJdmlzaWJpbGl0eW1hcF9zZXQJIC0gc2V0 IGJpdChzKSBpbiBhIHByZXZpb3VzbHkgcGlubmVkIHBhZ2UgYW5kIGxvZwotICoJCXZpc2liaWxp dHltYXBfc2V0X3ZtYml0cyAtIHNldCBiaXQocykgaW4gYSBwaW5uZWQgcGFnZQorICoJCXZpc2li aWxpdHltYXBfc2V0CSAtIHNldCBiaXQocykgaW4gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCiAg KgkJdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzIC0gZ2V0IHN0YXR1cyBvZiBiaXRzCiAgKgkJdmlz aWJpbGl0eW1hcF9jb3VudCAgLSBjb3VudCBudW1iZXIgb2YgYml0cyBzZXQgaW4gdmlzaWJpbGl0 eSBtYXAKICAqCQl2aXNpYmlsaXR5bWFwX3ByZXBhcmVfdHJ1bmNhdGUgLQpAQCAtMjIwLDEwOCAr MjE5LDYgQEAgdmlzaWJpbGl0eW1hcF9waW5fb2soQmxvY2tOdW1iZXIgaGVhcEJsaywgQnVmZmVy IHZtYnVmKQogCXJldHVybiBCdWZmZXJJc1ZhbGlkKHZtYnVmKSAmJiBCdWZmZXJHZXRCbG9ja051 bWJlcih2bWJ1ZikgPT0gbWFwQmxvY2s7CiB9CiAKLS8qCi0gKgl2aXNpYmlsaXR5bWFwX3NldCAt IHNldCBiaXQocykgb24gYSBwcmV2aW91c2x5IHBpbm5lZCBwYWdlCi0gKgotICogcmVjcHRyIGlz IHRoZSBMU04gb2YgdGhlIFhMT0cgcmVjb3JkIHdlJ3JlIHJlcGxheWluZywgaWYgd2UncmUgaW4g cmVjb3ZlcnksCi0gKiBvciBJbnZhbGlkWExvZ1JlY1B0ciBpbiBub3JtYWwgcnVubmluZy4gIFRo ZSBWTSBwYWdlIExTTiBpcyBhZHZhbmNlZCB0byB0aGUKLSAqIG9uZSBwcm92aWRlZDsgaW4gbm9y bWFsIHJ1bm5pbmcsIHdlIGdlbmVyYXRlIGEgbmV3IFhMT0cgcmVjb3JkIGFuZCBzZXQgdGhlCi0g KiBwYWdlIExTTiB0byB0aGF0IHZhbHVlICh0aG91Z2ggdGhlIGhlYXAgcGFnZSdzIExTTiBtYXkg Km5vdCogYmUgdXBkYXRlZDsKLSAqIHNlZSBiZWxvdykuICBjdXRvZmZfeGlkIGlzIHRoZSBsYXJn ZXN0IHhtaW4gb24gdGhlIHBhZ2UgYmVpbmcgbWFya2VkCi0gKiBhbGwtdmlzaWJsZTsgaXQgaXMg bmVlZGVkIGZvciBIb3QgU3RhbmRieSwgYW5kIGNhbiBiZSBJbnZhbGlkVHJhbnNhY3Rpb25JZAot ICogaWYgdGhlIHBhZ2UgY29udGFpbnMgbm8gdHVwbGVzLiAgSXQgY2FuIGFsc28gYmUgc2V0IHRv IEludmFsaWRUcmFuc2FjdGlvbklkCi0gKiB3aGVuIGEgcGFnZSB0aGF0IGlzIGFscmVhZHkgYWxs LXZpc2libGUgaXMgYmVpbmcgbWFya2VkIGFsbC1mcm96ZW4uCi0gKgotICogQ2FsbGVyIGlzIGV4 cGVjdGVkIHRvIHNldCB0aGUgaGVhcCBwYWdlJ3MgUERfQUxMX1ZJU0lCTEUgYml0IGJlZm9yZSBj YWxsaW5nCi0gKiB0aGlzIGZ1bmN0aW9uLiBFeGNlcHQgaW4gcmVjb3ZlcnksIGNhbGxlciBzaG91 bGQgYWxzbyBwYXNzIHRoZSBoZWFwCi0gKiBidWZmZXIuIFdoZW4gY2hlY2tzdW1zIGFyZSBlbmFi bGVkIGFuZCB3ZSdyZSBub3QgaW4gcmVjb3ZlcnksIHdlIG11c3QgYWRkCi0gKiB0aGUgaGVhcCBi dWZmZXIgdG8gdGhlIFdBTCBjaGFpbiB0byBwcm90ZWN0IGl0IGZyb20gYmVpbmcgdG9ybi4KLSAq Ci0gKiBZb3UgbXVzdCBwYXNzIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGNvcnJlY3QgbWFwIHBh Z2UgdG8gdGhpcyBmdW5jdGlvbi4KLSAqIENhbGwgdmlzaWJpbGl0eW1hcF9waW4gZmlyc3QgdG8g cGluIHRoZSByaWdodCBvbmUuIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBkbwotICogYW55IEkvTy4K LSAqCi0gKiBSZXR1cm5zIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSdzIFZNIGJpdHMgYmVmb3JlIHNl dHRpbmcgZmxhZ3MuCi0gKi8KLXVpbnQ4Ci12aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWws IEJsb2NrTnVtYmVyIGhlYXBCbGssIEJ1ZmZlciBoZWFwQnVmLAotCQkJCSAgWExvZ1JlY1B0ciBy ZWNwdHIsIEJ1ZmZlciB2bUJ1ZiwgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCSAgdWlu dDggZmxhZ3MpCi17Ci0JQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RPX01BUEJMT0NL KGhlYXBCbGspOwotCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllURShoZWFwQmxr KTsKLQl1aW50OAkJbWFwT2Zmc2V0ID0gSEVBUEJMS19UT19PRkZTRVQoaGVhcEJsayk7Ci0JUGFn ZQkJcGFnZTsKLQl1aW50OAkgICAqbWFwOwotCXVpbnQ4CQlzdGF0dXM7Ci0KLSNpZmRlZiBUUkFD RV9WSVNJQklMSVRZTUFQCi0JZWxvZyhERUJVRzEsICJ2bV9zZXQgZmxhZ3MgMHglMDJYIGZvciAl cyAlZCIsCi0JCSBmbGFncywgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSwgaGVhcEJsayk7 Ci0jZW5kaWYKLQotCUFzc2VydChJblJlY292ZXJ5IHx8IFhMb2dSZWNQdHJJc0ludmFsaWQocmVj cHRyKSk7Ci0JQXNzZXJ0KEluUmVjb3ZlcnkgfHwgUGFnZUlzQWxsVmlzaWJsZShCdWZmZXJHZXRQ YWdlKGhlYXBCdWYpKSk7Ci0JQXNzZXJ0KChmbGFncyAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklU UykgPT0gZmxhZ3MpOwotCi0JLyogTXVzdCBuZXZlciBzZXQgYWxsX2Zyb3plbiBiaXQgd2l0aG91 dCBhbHNvIHNldHRpbmcgYWxsX3Zpc2libGUgYml0ICovCi0JQXNzZXJ0KGZsYWdzICE9IFZJU0lC SUxJVFlNQVBfQUxMX0ZST1pFTik7Ci0KLQkvKiBDaGVjayB0aGF0IHdlIGhhdmUgdGhlIHJpZ2h0 IGhlYXAgcGFnZSBwaW5uZWQsIGlmIHByZXNlbnQgKi8KLQlpZiAoQnVmZmVySXNWYWxpZChoZWFw QnVmKSAmJiBCdWZmZXJHZXRCbG9ja051bWJlcihoZWFwQnVmKSAhPSBoZWFwQmxrKQotCQllbG9n KEVSUk9SLCAid3JvbmcgaGVhcCBidWZmZXIgcGFzc2VkIHRvIHZpc2liaWxpdHltYXBfc2V0Iik7 Ci0KLQlBc3NlcnQoIUJ1ZmZlcklzVmFsaWQoaGVhcEJ1ZikgfHwgQnVmZmVySXNFeGNsdXNpdmVM b2NrZWQoaGVhcEJ1ZikpOwotCi0JLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIHRoZSByaWdodCBWTSBw YWdlIHBpbm5lZCAqLwotCWlmICghQnVmZmVySXNWYWxpZCh2bUJ1ZikgfHwgQnVmZmVyR2V0Qmxv Y2tOdW1iZXIodm1CdWYpICE9IG1hcEJsb2NrKQotCQllbG9nKEVSUk9SLCAid3JvbmcgVk0gYnVm ZmVyIHBhc3NlZCB0byB2aXNpYmlsaXR5bWFwX3NldCIpOwotCi0JcGFnZSA9IEJ1ZmZlckdldFBh Z2Uodm1CdWYpOwotCW1hcCA9ICh1aW50OCAqKSBQYWdlR2V0Q29udGVudHMocGFnZSk7Ci0JTG9j a0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfRVhDTFVTSVZFKTsKLQotCXN0YXR1cyA9IChtYXBb bWFwQnl0ZV0gPj4gbWFwT2Zmc2V0KSAmIFZJU0lCSUxJVFlNQVBfVkFMSURfQklUUzsKLQlpZiAo ZmxhZ3MgIT0gc3RhdHVzKQotCXsKLQkJU1RBUlRfQ1JJVF9TRUNUSU9OKCk7Ci0KLQkJbWFwW21h cEJ5dGVdIHw9IChmbGFncyA8PCBtYXBPZmZzZXQpOwotCQlNYXJrQnVmZmVyRGlydHkodm1CdWYp OwotCi0JCWlmIChSZWxhdGlvbk5lZWRzV0FMKHJlbCkpCi0JCXsKLQkJCWlmIChYTG9nUmVjUHRy SXNJbnZhbGlkKHJlY3B0cikpCi0JCQl7Ci0JCQkJQXNzZXJ0KCFJblJlY292ZXJ5KTsKLQkJCQly ZWNwdHIgPSBsb2dfaGVhcF92aXNpYmxlKHJlbCwgaGVhcEJ1Ziwgdm1CdWYsIGN1dG9mZl94aWQs IGZsYWdzKTsKLQotCQkJCS8qCi0JCQkJICogSWYgZGF0YSBjaGVja3N1bXMgYXJlIGVuYWJsZWQg KG9yIHdhbF9sb2dfaGludHM9b24pLCB3ZQotCQkJCSAqIG5lZWQgdG8gcHJvdGVjdCB0aGUgaGVh cCBwYWdlIGZyb20gYmVpbmcgdG9ybi4KLQkJCQkgKgotCQkJCSAqIElmIG5vdCwgdGhlbiB3ZSBt dXN0ICpub3QqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLiBJbgotCQkJCSAqIHRoaXMgY2Fz ZSwgdGhlIEZQSSBmb3IgdGhlIGhlYXAgcGFnZSB3YXMgb21pdHRlZCBmcm9tIHRoZQotCQkJCSAq IFdBTCByZWNvcmQgaW5zZXJ0ZWQgYWJvdmUsIHNvIGl0IHdvdWxkIGJlIGluY29ycmVjdCB0bwot CQkJCSAqIHVwZGF0ZSB0aGUgaGVhcCBwYWdlJ3MgTFNOLgotCQkJCSAqLwotCQkJCWlmIChYTG9n SGludEJpdElzTmVlZGVkKCkpCi0JCQkJewotCQkJCQlQYWdlCQloZWFwUGFnZSA9IEJ1ZmZlckdl dFBhZ2UoaGVhcEJ1Zik7Ci0KLQkJCQkJUGFnZVNldExTTihoZWFwUGFnZSwgcmVjcHRyKTsKLQkJ CQl9Ci0JCQl9Ci0JCQlQYWdlU2V0TFNOKHBhZ2UsIHJlY3B0cik7Ci0JCX0KLQotCQlFTkRfQ1JJ VF9TRUNUSU9OKCk7Ci0JfQotCi0JTG9ja0J1ZmZlcih2bUJ1ZiwgQlVGRkVSX0xPQ0tfVU5MT0NL KTsKLQlyZXR1cm4gc3RhdHVzOwotfQotCiAvKgogICogU2V0IGZsYWdzIGluIHRoZSBWTSBibG9j ayBjb250YWluZWQgaW4gdGhlIHBhc3NlZCBpbiB2bUJ1Zi4KICAqCkBAIC0zNDMsOCArMjQwLDgg QEAgdmlzaWJpbGl0eW1hcF9zZXQoUmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLCBC dWZmZXIgaGVhcEJ1ZiwKICAqIGlzIHBpbm5lZCBhbmQgZXhjbHVzaXZlIGxvY2tlZC4KICAqLwog dWludDgKLXZpc2liaWxpdHltYXBfc2V0X3ZtYml0cyhSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssCi0JCQkJCQkgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncykKK3Zpc2liaWxpdHlt YXBfc2V0KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgaGVhcEJsaywKKwkJCQkgIEJ1ZmZlciB2 bUJ1ZiwgdWludDggZmxhZ3MpCiB7CiAJQmxvY2tOdW1iZXIgbWFwQmxvY2sgPSBIRUFQQkxLX1RP X01BUEJMT0NLKGhlYXBCbGspOwogCXVpbnQzMgkJbWFwQnl0ZSA9IEhFQVBCTEtfVE9fTUFQQllU RShoZWFwQmxrKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy9oZWFw ZGVzYy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjL2hlYXBkZXNjLmMKaW5kZXggMWNi NDRjYTMyZDMuLjkzNTA1Y2I4YzU2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1n cmRlc2MvaGVhcGRlc2MuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvaGVhcGRl c2MuYwpAQCAtMzQ5LDEzICszNDksNiBAQCBoZWFwMl9kZXNjKFN0cmluZ0luZm8gYnVmLCBYTG9n UmVhZGVyU3RhdGUgKnJlY29yZCkKIAkJCX0KIAkJfQogCX0KLQllbHNlIGlmIChpbmZvID09IFhM T0dfSEVBUDJfVklTSUJMRSkKLQl7Ci0JCXhsX2hlYXBfdmlzaWJsZSAqeGxyZWMgPSAoeGxfaGVh cF92aXNpYmxlICopIHJlYzsKLQotCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInNuYXBzaG90Q29u ZmxpY3RIb3Jpem9uOiAldSwgZmxhZ3M6IDB4JTAyWCIsCi0JCQkJCQkgeGxyZWMtPnNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uLCB4bHJlYy0+ZmxhZ3MpOwotCX0KIAllbHNlIGlmIChpbmZvID09IFhM T0dfSEVBUDJfTVVMVElfSU5TRVJUKQogCXsKIAkJeGxfaGVhcF9tdWx0aV9pbnNlcnQgKnhscmVj ID0gKHhsX2hlYXBfbXVsdGlfaW5zZXJ0ICopIHJlYzsKQEAgLTQ2MCw5ICs0NTMsNiBAQCBoZWFw Ml9pZGVudGlmeSh1aW50OCBpbmZvKQogCQljYXNlIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVNX0NM RUFOVVA6CiAJCQlpZCA9ICJQUlVORV9WQUNVVU1fQ0xFQU5VUCI7CiAJCQlicmVhazsKLQkJY2Fz ZSBYTE9HX0hFQVAyX1ZJU0lCTEU6Ci0JCQlpZCA9ICJWSVNJQkxFIjsKLQkJCWJyZWFrOwogCQlj YXNlIFhMT0dfSEVBUDJfTVVMVElfSU5TRVJUOgogCQkJaWQgPSAiTVVMVElfSU5TRVJUIjsKIAkJ CWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9kZWNv ZGUuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvZGVjb2RlLmMKaW5kZXggY2Mw M2YwNzA2ZTkuLjJmZGQ0YWY5MGE4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlv bi9sb2dpY2FsL2RlY29kZS5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv ZGVjb2RlLmMKQEAgLTQ1NCw3ICs0NTQsNiBAQCBoZWFwMl9kZWNvZGUoTG9naWNhbERlY29kaW5n Q29udGV4dCAqY3R4LCBYTG9nUmVjb3JkQnVmZmVyICpidWYpCiAJCWNhc2UgWExPR19IRUFQMl9Q UlVORV9PTl9BQ0NFU1M6CiAJCWNhc2UgWExPR19IRUFQMl9QUlVORV9WQUNVVU1fU0NBTjoKIAkJ Y2FzZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQOgotCQljYXNlIFhMT0dfSEVBUDJf VklTSUJMRToKIAkJY2FzZSBYTE9HX0hFQVAyX0xPQ0tfVVBEQVRFRDoKIAkJCWJyZWFrOwogCQlk ZWZhdWx0OgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCmluZGV4IDQyMjJiZGFiMDc4Li5jNjE5 NjQzZTEyMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc3RhbmRieS5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3N0YW5kYnkuYwpAQCAtNDc1LDEyICs0NzUsMTIg QEAgUmVzb2x2ZVJlY292ZXJ5Q29uZmxpY3RXaXRoU25hcHNob3QoVHJhbnNhY3Rpb25JZCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbiwKIAkgKiBJZiB3ZSBnZXQgcGFzc2VkIEludmFsaWRUcmFuc2Fj dGlvbklkIHRoZW4gd2UgZG8gbm90aGluZyAobm8gY29uZmxpY3QpLgogCSAqCiAJICogVGhpcyBj YW4gaGFwcGVuIHdoZW4gcmVwbGF5aW5nIGFscmVhZHktYXBwbGllZCBXQUwgcmVjb3JkcyBhZnRl ciBhCi0JICogc3RhbmRieSBjcmFzaCBvciByZXN0YXJ0LCBvciB3aGVuIHJlcGxheWluZyBhbiBY TE9HX0hFQVAyX1ZJU0lCTEUKLQkgKiByZWNvcmQgdGhhdCBtYXJrcyBhcyBmcm96ZW4gYSBwYWdl IHdoaWNoIHdhcyBhbHJlYWR5IGFsbC12aXNpYmxlLiAgSXQncwotCSAqIGFsc28gcXVpdGUgY29t bW9uIHdpdGggcmVjb3JkcyBnZW5lcmF0ZWQgZHVyaW5nIGluZGV4IGRlbGV0aW9uCi0JICogKG9y aWdpbmFsIGV4ZWN1dGlvbiBvZiB0aGUgZGVsZXRpb24gY2FuIHJlYXNvbiB0aGF0IGEgcmVjb3Zl cnkgY29uZmxpY3QKLQkgKiB3aGljaCBpcyBzdWZmaWNpZW50IGZvciB0aGUgZGVsZXRpb24gb3Bl cmF0aW9uIG11c3QgdGFrZSBwbGFjZSBiZWZvcmUKLQkgKiByZXBsYXkgb2YgdGhlIGRlbGV0aW9u IHJlY29yZCBpdHNlbGYpLgorCSAqIHN0YW5kYnkgY3Jhc2ggb3IgcmVzdGFydCwgb3Igd2hlbiBy ZXBsYXlpbmcgYSByZWNvcmQgdGhhdCBtYXJrcyBhcworCSAqIGZyb3plbiBhIHBhZ2Ugd2hpY2gg d2FzIGFscmVhZHkgbWFya2VkIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5CisJICogbWFw LiAgSXQncyBhbHNvIHF1aXRlIGNvbW1vbiB3aXRoIHJlY29yZHMgZ2VuZXJhdGVkIGR1cmluZyBp bmRleAorCSAqIGRlbGV0aW9uIChvcmlnaW5hbCBleGVjdXRpb24gb2YgdGhlIGRlbGV0aW9uIGNh biByZWFzb24gdGhhdCBhIHJlY292ZXJ5CisJICogY29uZmxpY3Qgd2hpY2ggaXMgc3VmZmljaWVu dCBmb3IgdGhlIGRlbGV0aW9uIG9wZXJhdGlvbiBtdXN0IHRha2UgcGxhY2UKKwkgKiBiZWZvcmUg cmVwbGF5IG9mIHRoZSBkZWxldGlvbiByZWNvcmQgaXRzZWxmKS4KIAkgKi8KIAlpZiAoIVRyYW5z YWN0aW9uSWRJc1ZhbGlkKHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uKSkKIAkJcmV0dXJuOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbV94bG9nLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvaGVhcGFtX3hsb2cuaAppbmRleCA2ZDc1OWMxOTdhMS4uY2RkNmFjYmVhMWMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW1feGxvZy5oCisrKyBiL3NyYy9pbmNsdWRl L2FjY2Vzcy9oZWFwYW1feGxvZy5oCkBAIC02MCw3ICs2MCw2IEBACiAjZGVmaW5lIFhMT0dfSEVB UDJfUFJVTkVfT05fQUNDRVNTCQkweDEwCiAjZGVmaW5lIFhMT0dfSEVBUDJfUFJVTkVfVkFDVVVN X1NDQU4JMHgyMAogI2RlZmluZSBYTE9HX0hFQVAyX1BSVU5FX1ZBQ1VVTV9DTEVBTlVQCTB4MzAK LSNkZWZpbmUgWExPR19IRUFQMl9WSVNJQkxFCQkweDQwCiAjZGVmaW5lIFhMT0dfSEVBUDJfTVVM VElfSU5TRVJUIDB4NTAKICNkZWZpbmUgWExPR19IRUFQMl9MT0NLX1VQREFURUQgMHg2MAogI2Rl ZmluZSBYTE9HX0hFQVAyX05FV19DSUQJCTB4NzAKQEAgLTQ1MCwyMCArNDQ5LDYgQEAgdHlwZWRl ZiBzdHJ1Y3QgeGxfaGVhcF9pbnBsYWNlCiAKICNkZWZpbmUgTWluU2l6ZU9mSGVhcElucGxhY2UJ KG9mZnNldG9mKHhsX2hlYXBfaW5wbGFjZSwgbm1zZ3MpICsgc2l6ZW9mKGludCkpCiAKLS8qCi0g KiBUaGlzIGlzIHdoYXQgd2UgbmVlZCB0byBrbm93IGFib3V0IHNldHRpbmcgYSB2aXNpYmlsaXR5 IG1hcCBiaXQKLSAqCi0gKiBCYWNrdXAgYmxrIDA6IHZpc2liaWxpdHkgbWFwIGJ1ZmZlcgotICog QmFja3VwIGJsayAxOiBoZWFwIGJ1ZmZlcgotICovCi10eXBlZGVmIHN0cnVjdCB4bF9oZWFwX3Zp c2libGUKLXsKLQlUcmFuc2FjdGlvbklkIHNuYXBzaG90Q29uZmxpY3RIb3Jpem9uOwotCXVpbnQ4 CQlmbGFnczsKLX0geGxfaGVhcF92aXNpYmxlOwotCi0jZGVmaW5lIFNpemVPZkhlYXBWaXNpYmxl IChvZmZzZXRvZih4bF9oZWFwX3Zpc2libGUsIGZsYWdzKSArIHNpemVvZih1aW50OCkpCi0KIHR5 cGVkZWYgc3RydWN0IHhsX2hlYXBfbmV3X2NpZAogewogCS8qCkBAIC01MDcsMTEgKzQ5Miw2IEBA IGV4dGVybiB2b2lkIGhlYXAyX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAq cmVjb3JkKTsKIGV4dGVybiBjb25zdCBjaGFyICpoZWFwMl9pZGVudGlmeSh1aW50OCBpbmZvKTsK IGV4dGVybiB2b2lkIGhlYXBfeGxvZ19sb2dpY2FsX3Jld3JpdGUoWExvZ1JlYWRlclN0YXRlICpy KTsKIAotZXh0ZXJuIFhMb2dSZWNQdHIgbG9nX2hlYXBfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1 ZmZlciBoZWFwX2J1ZmZlciwKLQkJCQkJCQkJICAgQnVmZmVyIHZtX2J1ZmZlciwKLQkJCQkJCQkJ ICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKLQkJCQkJCQkJICAgdWlu dDggdm1mbGFncyk7Ci0KIC8qIGluIGhlYXBkZXNjLmMsIHNvIGl0IGNhbiBiZSBzaGFyZWQgYmV0 d2VlbiBmcm9udGVuZC9iYWNrZW5kIGNvZGUgKi8KIGV4dGVybiB2b2lkIGhlYXBfeGxvZ19kZXNl cmlhbGl6ZV9wcnVuZV9hbmRfZnJlZXplKGNoYXIgKmN1cnNvciwgdWludDE2IGZsYWdzLAogCQkJ CQkJCQkJCQkJICAgaW50ICpucGxhbnMsIHhsaHBfZnJlZXplX3BsYW4gKipwbGFucywKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmlsaXR5bWFwLmggYi9zcmMvaW5jbHVkZS9h Y2Nlc3MvdmlzaWJpbGl0eW1hcC5oCmluZGV4IGZjNzA1NmE5MWVhLi5jNWIxZTFmN2FkYiAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXAuaAorKysgYi9zcmMvaW5j bHVkZS9hY2Nlc3MvdmlzaWJpbGl0eW1hcC5oCkBAIC0xNSw3ICsxNSw2IEBACiAjZGVmaW5lIFZJ U0lCSUxJVFlNQVBfSAogCiAjaW5jbHVkZSAiYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgiCi0j aW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9ibG9jay5oIgog I2luY2x1ZGUgInN0b3JhZ2UvYnVmLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsY2FjaGUuaCIKQEAg LTMxLDE0ICszMCw4IEBAIGV4dGVybiBib29sIHZpc2liaWxpdHltYXBfY2xlYXIoUmVsYXRpb24g cmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogZXh0ZXJuIHZvaWQgdmlzaWJpbGl0eW1hcF9waW4o UmVsYXRpb24gcmVsLCBCbG9ja051bWJlciBoZWFwQmxrLAogCQkJCQkJCSAgQnVmZmVyICp2bWJ1 Zik7CiBleHRlcm4gYm9vbCB2aXNpYmlsaXR5bWFwX3Bpbl9vayhCbG9ja051bWJlciBoZWFwQmxr LCBCdWZmZXIgdm1idWYpOwotZXh0ZXJuIHVpbnQ4IHZpc2liaWxpdHltYXBfc2V0KFJlbGF0aW9u IHJlbCwKLQkJCQkJCQkgICBCbG9ja051bWJlciBoZWFwQmxrLCBCdWZmZXIgaGVhcEJ1ZiwKLQkJ CQkJCQkgICBYTG9nUmVjUHRyIHJlY3B0ciwKLQkJCQkJCQkgICBCdWZmZXIgdm1CdWYsCi0JCQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBjdXRvZmZfeGlkLAotCQkJCQkJCSAgIHVpbnQ4IGZsYWdzKTsK LWV4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldF92bWJpdHMoUmVsYXRpb24gcmVsLCBCbG9j a051bWJlciBoZWFwQmxrLAotCQkJCQkJCQkJICBCdWZmZXIgdm1CdWYsIHVpbnQ4IGZsYWdzKTsK K2V4dGVybiB1aW50OCB2aXNpYmlsaXR5bWFwX3NldChSZWxhdGlvbiByZWwsIEJsb2NrTnVtYmVy IGhlYXBCbGssCisJCQkJCQkJICAgQnVmZmVyIHZtQnVmLCB1aW50OCBmbGFncyk7CiBleHRlcm4g dWludDggdmlzaWJpbGl0eW1hcF9nZXRfc3RhdHVzKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIg aGVhcEJsaywgQnVmZmVyICp2bWJ1Zik7CiBleHRlcm4gdm9pZCB2aXNpYmlsaXR5bWFwX2NvdW50 KFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgKmFsbF92aXNpYmxlLCBCbG9ja051bWJlciAqYWxs X2Zyb3plbik7CiBleHRlcm4gQmxvY2tOdW1iZXIgdmlzaWJpbGl0eW1hcF9wcmVwYXJlX3RydW5j YXRlKFJlbGF0aW9uIHJlbCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy92aXNpYmls aXR5bWFwZGVmcy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3Zpc2liaWxpdHltYXBkZWZzLmgKaW5k ZXggNWFkNWMwMjA4NzcuLmUwMWJjZTRjOTlmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nl c3MvdmlzaWJpbGl0eW1hcGRlZnMuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdmlzaWJpbGl0 eW1hcGRlZnMuaApAQCAtMjEsMTQgKzIxLDUgQEAKICNkZWZpbmUgVklTSUJJTElUWU1BUF9BTExf RlJPWkVOCTB4MDIKICNkZWZpbmUgVklTSUJJTElUWU1BUF9WQUxJRF9CSVRTCTB4MDMJLyogT1Ig b2YgYWxsIHZhbGlkIHZpc2liaWxpdHltYXAKIAkJCQkJCQkJCQkJICogZmxhZ3MgYml0cyAqLwot LyoKLSAqIFRvIGRldGVjdCByZWNvdmVyeSBjb25mbGljdHMgZHVyaW5nIGxvZ2ljYWwgZGVjb2Rp bmcgb24gYSBzdGFuZGJ5LCB3ZSBuZWVkCi0gKiB0byBrbm93IGlmIGEgdGFibGUgaXMgYSB1c2Vy IGNhdGFsb2cgdGFibGUuIEZvciB0aGF0IHdlIGFkZCBhbiBhZGRpdGlvbmFsCi0gKiBiaXQgaW50 byB4bF9oZWFwX3Zpc2libGUuZmxhZ3MsIGluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZS4KLSAqCi0g KiBOQjogVklTSUJJTElUWU1BUF9YTE9HXyogbWF5IG5vdCBiZSBwYXNzZWQgdG8gdmlzaWJpbGl0 eW1hcF9zZXQoKS4KLSAqLwotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfQ0FUQUxPR19SRUwJ MHgwNAotI2RlZmluZSBWSVNJQklMSVRZTUFQX1hMT0dfVkFMSURfQklUUwkoVklTSUJJTElUWU1B UF9WQUxJRF9CSVRTIHwgVklTSUJJTElUWU1BUF9YTE9HX0NBVEFMT0dfUkVMKQogCiAjZW5kaWYJ CQkJCQkJLyogVklTSUJJTElUWU1BUERFRlNfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApp bmRleCBhMTNlODE2Mjg5MC4uYjRjODgwYzA4M2YgMTAwNjQ0Ci0tLSBhL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0 CkBAIC00MjczLDcgKzQyNzMsNiBAQCB4bF9oZWFwX3BydW5lCiB4bF9oZWFwX3Jld3JpdGVfbWFw cGluZwogeGxfaGVhcF90cnVuY2F0ZQogeGxfaGVhcF91cGRhdGUKLXhsX2hlYXBfdmlzaWJsZQog eGxfaW52YWxpZF9wYWdlCiB4bF9pbnZhbGlkX3BhZ2Vfa2V5CiB4bF9pbnZhbGlkYXRpb25zCi0t IAoyLjQzLjAKCg== --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Disposition: attachment; filename="v13-0015-Inline-TransactionIdFollows-Precedes.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4x15 RnJvbSAxMWFhZjdiYjBlNzRlODQ2NjMxYmQ2ZTgyYWFlNmYyZWNmMTllNDMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDA5OjU3OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTUvMjBdIElubGluZSBUcmFuc2FjdGlvbklkRm9sbG93cy9QcmVjZWRlcygpCgpD YWxsaW5nIHRoZXNlIGZyb20gb24tYWNjZXNzIHBydW5pbmcgY29kZSBoYWQgbm90aWNlYWJsZSBv dmVyaGVhZCBpbiBhCnByb2ZpbGUuIFRoZXJlIGRvZXMgbm90IHNlZW0gdG8gYmUgYSByZWFzb24g bm90IHRvIGlubGluZSB0aGVtLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtp cmlsbEBnbWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5j IHwgNjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5z YW0uaCAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLQogMiBmaWxlcyBj aGFuZ2VkLCA2NiBpbnNlcnRpb25zKCspLCA2OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS90cmFuc2FtLmMKaW5kZXggOWEzOTQ1MWEyOWEuLjU1M2Q2NzU2Y2IzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS90cmFuc2FtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHJhbnNhbS5jCkBAIC0yNzMsNzAgKzI3Myw2IEBAIFRyYW5zYWN0 aW9uSWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25J ZCAqeGlkcykKIAkJCQkJCQkgICBUUkFOU0FDVElPTl9TVEFUVVNfQUJPUlRFRCwgSW52YWxpZFhM b2dSZWNQdHIpOwogfQogCi0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0tLSBpcyBpZDEg bG9naWNhbGx5IDwgaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNh Y3Rpb25JZCBpZDEsIFRyYW5zYWN0aW9uSWQgaWQyKQotewotCS8qCi0JICogSWYgZWl0aGVyIElE IGlzIGEgcGVybWFuZW50IFhJRCB0aGVuIHdlIGNhbiBqdXN0IGRvIHVuc2lnbmVkCi0JICogY29t cGFyaXNvbi4gIElmIGJvdGggYXJlIG5vcm1hbCwgZG8gYSBtb2R1bG8tMl4zMiBjb21wYXJpc29u LgotCSAqLwotCWludDMyCQlkaWZmOwotCi0JaWYgKCFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQx KSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCi0JCXJldHVybiAoaWQxIDwgaWQyKTsK LQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlmZiA8IDApOwotfQot Ci0vKgotICogVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMgLS0tIGlzIGlkMSBsb2dpY2Fs bHkgPD0gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklkUHJlY2VkZXNPckVxdWFscyhUcmFu c2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlp ZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwo aWQyKSkKLQkJcmV0dXJuIChpZDEgPD0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBp ZDIpOwotCXJldHVybiAoZGlmZiA8PSAwKTsKLX0KLQotLyoKLSAqIFRyYW5zYWN0aW9uSWRGb2xs b3dzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID4gaWQyPwotICovCi1ib29sCi1UcmFuc2FjdGlvbklk Rm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJ CWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlv bklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChpZDEgPiBpZDIpOwotCi0JZGlmZiA9IChpbnQz MikgKGlkMSAtIGlkMik7Ci0JcmV0dXJuIChkaWZmID4gMCk7Ci19Ci0KLS8qCi0gKiBUcmFuc2Fj dGlvbklkRm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KLSAqLwot Ym9vbAotVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2FjdGlvbklkIGlkMSwgVHJh bnNhY3Rpb25JZCBpZDIpCi17Ci0JaW50MzIJCWRpZmY7Ci0KLQlpZiAoIVRyYW5zYWN0aW9uSWRJ c05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkKLQkJcmV0dXJuIChp ZDEgPj0gaWQyKTsKLQotCWRpZmYgPSAoaW50MzIpIChpZDEgLSBpZDIpOwotCXJldHVybiAoZGlm ZiA+PSAwKTsKLX0KLQogCiAvKgogICogVHJhbnNhY3Rpb25JZExhdGVzdCAtLS0gZ2V0IGxhdGVz dCBYSUQgYW1vbmcgYSBtYWluIHhhY3QgYW5kIGl0cyBjaGlsZHJlbgpkaWZmIC0tZ2l0IGEvc3Jj L2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgK aW5kZXggN2Q4MmNkMmViNTYuLmM5ZTIwNDE4Mjc1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9h Y2Nlc3MvdHJhbnNhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmgKQEAgLTI1 NSw2ICsyNTUsNzIgQEAgdHlwZWRlZiBzdHJ1Y3QgVHJhbnNhbVZhcmlhYmxlc0RhdGEKIH0gVHJh bnNhbVZhcmlhYmxlc0RhdGE7CiAKIAorCisvKgorICogVHJhbnNhY3Rpb25JZFByZWNlZGVzIC0t LSBpcyBpZDEgbG9naWNhbGx5IDwgaWQyPworICovCitzdGF0aWMgaW5saW5lIGJvb2wKK1RyYW5z YWN0aW9uSWRQcmVjZWRlcyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7 CisJLyoKKwkgKiBJZiBlaXRoZXIgSUQgaXMgYSBwZXJtYW5lbnQgWElEIHRoZW4gd2UgY2FuIGp1 c3QgZG8gdW5zaWduZWQKKwkgKiBjb21wYXJpc29uLiAgSWYgYm90aCBhcmUgbm9ybWFsLCBkbyBh IG1vZHVsby0yXjMyIGNvbXBhcmlzb24uCisJICovCisJaW50MzIJCWRpZmY7CisKKwlpZiAoIVRy YW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNOb3JtYWwoaWQyKSkK KwkJcmV0dXJuIChpZDEgPCBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJ cmV0dXJuIChkaWZmIDwgMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkUHJlY2VkZXNPckVx dWFscyAtLS0gaXMgaWQxIGxvZ2ljYWxseSA8PSBpZDI/CisgKi8KK3N0YXRpYyBpbmxpbmUgYm9v bAorVHJhbnNhY3Rpb25JZFByZWNlZGVzT3JFcXVhbHMoVHJhbnNhY3Rpb25JZCBpZDEsIFRyYW5z YWN0aW9uSWQgaWQyKQoreworCWludDMyCQlkaWZmOworCisJaWYgKCFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQxKSB8fCAhVHJhbnNhY3Rpb25JZElzTm9ybWFsKGlkMikpCisJCXJldHVybiAoaWQx IDw9IGlkMik7CisKKwlkaWZmID0gKGludDMyKSAoaWQxIC0gaWQyKTsKKwlyZXR1cm4gKGRpZmYg PD0gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklkRm9sbG93cyAtLS0gaXMgaWQxIGxvZ2lj YWxseSA+IGlkMj8KKyAqLworc3RhdGljIGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93 cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpCit7CisJaW50MzIJCWRpZmY7 CisKKwlpZiAoIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDEpIHx8ICFUcmFuc2FjdGlvbklkSXNO b3JtYWwoaWQyKSkKKwkJcmV0dXJuIChpZDEgPiBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlk MSAtIGlkMik7CisJcmV0dXJuIChkaWZmID4gMCk7Cit9CisKKy8qCisgKiBUcmFuc2FjdGlvbklk Rm9sbG93c09yRXF1YWxzIC0tLSBpcyBpZDEgbG9naWNhbGx5ID49IGlkMj8KKyAqLworc3RhdGlj IGlubGluZSBib29sCitUcmFuc2FjdGlvbklkRm9sbG93c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQg aWQxLCBUcmFuc2FjdGlvbklkIGlkMikKK3sKKwlpbnQzMgkJZGlmZjsKKworCWlmICghVHJhbnNh Y3Rpb25JZElzTm9ybWFsKGlkMSkgfHwgIVRyYW5zYWN0aW9uSWRJc05vcm1hbChpZDIpKQorCQly ZXR1cm4gKGlkMSA+PSBpZDIpOworCisJZGlmZiA9IChpbnQzMikgKGlkMSAtIGlkMik7CisJcmV0 dXJuIChkaWZmID49IDApOworfQorCisKIC8qIC0tLS0tLS0tLS0tLS0tLS0KICAqCQlleHRlcm4g ZGVjbGFyYXRpb25zCiAgKiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0yNzQsMTAgKzM0MCw2IEBAIGV4 dGVybiBib29sIFRyYW5zYWN0aW9uSWREaWRBYm9ydChUcmFuc2FjdGlvbklkIHRyYW5zYWN0aW9u SWQpOwogZXh0ZXJuIHZvaWQgVHJhbnNhY3Rpb25JZENvbW1pdFRyZWUoVHJhbnNhY3Rpb25JZCB4 aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gdm9pZCBUcmFuc2Fj dGlvbklkQXN5bmNDb21taXRUcmVlKFRyYW5zYWN0aW9uSWQgeGlkLCBpbnQgbnhpZHMsIFRyYW5z YWN0aW9uSWQgKnhpZHMsIFhMb2dSZWNQdHIgbHNuKTsKIGV4dGVybiB2b2lkIFRyYW5zYWN0aW9u SWRBYm9ydFRyZWUoVHJhbnNhY3Rpb25JZCB4aWQsIGludCBueGlkcywgVHJhbnNhY3Rpb25JZCAq eGlkcyk7Ci1leHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkUHJlY2VkZXMoVHJhbnNhY3Rpb25JZCBp ZDEsIFRyYW5zYWN0aW9uSWQgaWQyKTsKLWV4dGVybiBib29sIFRyYW5zYWN0aW9uSWRQcmVjZWRl c09yRXF1YWxzKFRyYW5zYWN0aW9uSWQgaWQxLCBUcmFuc2FjdGlvbklkIGlkMik7Ci1leHRlcm4g Ym9vbCBUcmFuc2FjdGlvbklkRm9sbG93cyhUcmFuc2FjdGlvbklkIGlkMSwgVHJhbnNhY3Rpb25J ZCBpZDIpOwotZXh0ZXJuIGJvb2wgVHJhbnNhY3Rpb25JZEZvbGxvd3NPckVxdWFscyhUcmFuc2Fj dGlvbklkIGlkMSwgVHJhbnNhY3Rpb25JZCBpZDIpOwogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgVHJh bnNhY3Rpb25JZExhdGVzdChUcmFuc2FjdGlvbklkIG1haW54aWQsCiAJCQkJCQkJCQkJIGludCBu eGlkcywgY29uc3QgVHJhbnNhY3Rpb25JZCAqeGlkcyk7CiBleHRlcm4gWExvZ1JlY1B0ciBUcmFu c2FjdGlvbklkR2V0Q29tbWl0TFNOKFRyYW5zYWN0aW9uSWQgeGlkKTsKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Disposition: attachment; filename="v13-0013-Rename-GlobalVisTestIsRemovableXid-to-GlobalVisX.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4r13 RnJvbSAxMmNhYTdjNDZjY2Q0NmQ2YjYyZWZkNThhYWMxZWIxMTY2YmMxNDFmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDE4IEp1bCAyMDI1IDE2OjMwOjA0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTMvMjBdIFJlbmFtZSBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoKSB0bwog R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkKCkN1cnJlbnRseSwgd2Ugb25seSB1c2UgR2xvYmFs VmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgdG8gY2hlY2sgaWYgYQp0dXBsZSdzIHhtYXggaXMgdmlz aWJsZSB0byBhbGwsIG1lYW5pbmcgd2UgY2FuIHJlbW92ZSBpdC4gQnV0IGZ1dHVyZQpjb21taXRz IHdpbGwgdXNlIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCgpIHRvIHRlc3QgaWYgYSB0dXBs ZSdzIHhtaW4KaXMgdmlzaWJsZSB0byBhbGwgZm9yIHRoZSBwdXJwb3NlcyBvZiBkZXRlcm1pbmlu ZyBpZiBzZXR0aW5nIHRoZSBwYWdlCmFsbC12aXNpYmxlIGluIHRoZSBWTS4gSW4gdGhhdCBjYXNl LCBpdCBtYWtlcyBtb3JlIHNlbnNlIHRvIGNhbGwgdGhlCmZ1bmN0aW9uIEdsb2JhbFZpc1hpZFZp c2libGVUb0FsbCgpLgoKUmV2aWV3ZWQtYnk6IEtpcmlsbCBSZXNoa2UgPHJlc2hrZWtpcmlsbEBn bWFpbC5jb20+Ci0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHku YyB8ICA2ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgICAgICAg ICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1 bS5jICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jICAg ICAgICAgfCAxMyArKysrKystLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggICAg ICAgICAgICAgICAgIHwgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCsp LCAyMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9o ZWFwYW1fdmlzaWJpbGl0eS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2li aWxpdHkuYwppbmRleCAwNWY2OTQ2ZmU2MC4uNGViYzhhYmRiZWIgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwpAQCAtMTQ0Nyw3ICsxNDQ3LDcgQEAgSGVh cFR1cGxlU2F0aXNmaWVzTm9uVmFjdXVtYWJsZShIZWFwVHVwbGUgaHR1cCwgU25hcHNob3Qgc25h cHNob3QsCiAJewogCQlBc3NlcnQoVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOwog Ci0JCWlmIChHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQoc25hcHNob3QtPnZpc3Rlc3QsIGRl YWRfYWZ0ZXIpKQorCQlpZiAoR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKHNuYXBzaG90LT52aXN0 ZXN0LCBkZWFkX2FmdGVyKSkKIAkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOwogCX0KIAllbHNlCkBA IC0xNTEyLDggKzE1MTIsOCBAQCBIZWFwVHVwbGVJc1N1cmVseURlYWQoSGVhcFR1cGxlIGh0dXAs IEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0KQogCQlyZXR1cm4gZmFsc2U7CiAKIAkvKiBEZWxldGVy IGNvbW1pdHRlZCwgc28gdHVwbGUgaXMgZGVhZCBpZiB0aGUgWElEIGlzIG9sZCBlbm91Z2guICov Ci0JcmV0dXJuIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LAotCQkJCQkJCQkJ ICAgSGVhcFR1cGxlSGVhZGVyR2V0UmF3WG1heCh0dXBsZSkpOworCXJldHVybiBHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwodmlzdGVzdCwKKwkJCQkJCQkJCUhlYXBUdXBsZUhlYWRlckdldFJhd1ht YXgodHVwbGUpKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXgg NTM4ZTgyZGI4ZTYuLjQ4MGFkYTk5ZTIyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3Mv aGVhcC9wcnVuZWhlYXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAu YwpAQCAtMjMxLDcgKzIzMSw3IEBAIGhlYXBfcGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRp b24sIEJ1ZmZlciBidWZmZXIpCiAJICovCiAJdmlzdGVzdCA9IEdsb2JhbFZpc1Rlc3RGb3IocmVs YXRpb24pOwogCi0JaWYgKCFHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVYaWQodmlzdGVzdCwgcHJ1 bmVfeGlkKSkKKwlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBwcnVuZV94 aWQpKQogCQlyZXR1cm47CiAKIAkvKgpAQCAtNTgwLDkgKzU4MCw5IEBAIGhlYXBfcGFnZV9wcnVu ZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIERldGVy bWluaW5nIEhUU1Ygb25seSBvbmNlIGZvciBlYWNoIHR1cGxlIGlzIHJlcXVpcmVkIGZvciBjb3Jy ZWN0bmVzcywKIAkgKiB0byBkZWFsIHdpdGggY2FzZXMgd2hlcmUgcnVubmluZyBIVFNWIHR3aWNl IGNvdWxkIHJlc3VsdCBpbiBkaWZmZXJlbnQKIAkgKiByZXN1bHRzLiAgRm9yIGV4YW1wbGUsIFJF Q0VOVExZX0RFQUQgY2FuIHR1cm4gdG8gREVBRCBpZiBhbm90aGVyCi0JICogY2hlY2tlZCBpdGVt IGNhdXNlcyBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKCkgdG8gdXBkYXRlIHRoZQot CSAqIGhvcml6b24sIG9yIElOU0VSVF9JTl9QUk9HUkVTUyBjYW4gY2hhbmdlIHRvIERFQUQgaWYg dGhlIGluc2VydGluZwotCSAqIHRyYW5zYWN0aW9uIGFib3J0cy4KKwkgKiBjaGVja2VkIGl0ZW0g Y2F1c2VzIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCgpIHRvIHVwZGF0ZSB0aGUgaG9yaXpvbiwK KwkgKiBvciBJTlNFUlRfSU5fUFJPR1JFU1MgY2FuIGNoYW5nZSB0byBERUFEIGlmIHRoZSBpbnNl cnRpbmcgdHJhbnNhY3Rpb24KKwkgKiBhYm9ydHMuCiAJICoKIAkgKiBJdCdzIGFsc28gZ29vZCBm b3IgcGVyZm9ybWFuY2UuIE1vc3QgY29tbW9ubHkgdHVwbGVzIHdpdGhpbiBhIHBhZ2UgYXJlCiAJ ICogc3RvcmVkIGF0IGRlY3JlYXNpbmcgb2Zmc2V0cyAod2hpbGUgdGhlIGl0ZW1zIGFyZSBzdG9y ZWQgYXQgaW5jcmVhc2luZwpAQCAtMTE4MiwxMSArMTE4MiwxMSBAQCBoZWFwX3BydW5lX3NhdGlz Zmllc192YWN1dW0oUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgSGVhcFR1cGxlIHR1cCwgQnVmZmVyIGJ1 ZmZlcikKIAkgKiBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlIHR1cGxlIGlzIGNvbnNpZGVy ZWQgZGVhZCB3aGVuIGNvbXBhcmVkCiAJICogd2l0aCB0aGUgcHJvdmlkZWQgR2xvYmFsVmlzU3Rh dGUuIE9uLWFjY2VzcyBwcnVuaW5nIGRvZXMgbm90IHByb3ZpZGUKIAkgKiBWYWN1dW1DdXRvZmZz LiBBbmQgZm9yIHZhY3V1bSwgZXZlbiBpZiB0aGUgdHVwbGUncyB4bWF4IGlzIG5vdCBvbGRlcgot CSAqIHRoYW4gT2xkZXN0WG1pbiwgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKCkgY291bGQg ZmluZCB0aGUgcm93IGRlYWQKLQkgKiBpZiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBk YXRlZCBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHZhY3V1bWluZworCSAqIHRoYW4gT2xkZXN0WG1p biwgR2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKCkgY291bGQgZmluZCB0aGUgcm93IGRlYWQgaWYK KwkgKiB0aGUgR2xvYmFsVmlzU3RhdGUgaGFzIGJlZW4gdXBkYXRlZCBzaW5jZSB0aGUgYmVnaW5u aW5nIG9mIHZhY3V1bWluZwogCSAqIHRoZSByZWxhdGlvbi4KIAkgKi8KLQlpZiAoR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkKHByc3RhdGUtPnZpc3Rlc3QsIGRlYWRfYWZ0ZXIpKQorCWlmIChH bG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS0+dmlzdGVzdCwgZGVhZF9hZnRlcikpCiAJ CXJldHVybiBIRUFQVFVQTEVfREVBRDsKIAogCXJldHVybiByZXM7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3Mvc3BnaXN0L3NwZ3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Nw Z2lzdC9zcGd2YWN1dW0uYwppbmRleCA4ZjhhMWFkNzc5Ni4uNDk2Y2NhNjk0MTAgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9zcGdpc3Qvc3BndmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3NwZ2lzdC9zcGd2YWN1dW0uYwpAQCAtNTM2LDcgKzUzNiw3IEBAIHZhY3V1bVJl ZGlyZWN0QW5kUGxhY2Vob2xkZXIoUmVsYXRpb24gaW5kZXgsIFJlbGF0aW9uIGhlYXByZWwsIEJ1 ZmZlciBidWZmZXIpCiAJCSAqLwogCQlpZiAoZHQtPnR1cHN0YXRlID09IFNQR0lTVF9SRURJUkVD VCAmJgogCQkJKCFUcmFuc2FjdGlvbklkSXNWYWxpZChkdC0+eGlkKSB8fAotCQkJIEdsb2JhbFZp c1Rlc3RJc1JlbW92YWJsZVhpZCh2aXN0ZXN0LCBkdC0+eGlkKSkpCisJCQkgR2xvYmFsVmlzWGlk VmlzaWJsZVRvQWxsKHZpc3Rlc3QsIGR0LT54aWQpKSkKIAkJewogCQkJZHQtPnR1cHN0YXRlID0g U1BHSVNUX1BMQUNFSE9MREVSOwogCQkJQXNzZXJ0KG9wYXF1ZS0+blJlZGlyZWN0aW9uID4gMCk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jCmluZGV4IDIwMGY3MmM2ZTI1Li5mNjdmMDFj MTdjMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTQxODEsOCArNDE4MSw3 IEBAIEdsb2JhbFZpc1VwZGF0ZSh2b2lkKQogICogU2VlIGNvbW1lbnQgZm9yIEdsb2JhbFZpc1N0 YXRlIGZvciBkZXRhaWxzLgogICovCiBib29sCi1HbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxs WGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwKLQkJCQkJCQkJRnVsbFRyYW5zYWN0aW9uSWQgZnhp ZCkKK0dsb2JhbFZpc0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBG dWxsVHJhbnNhY3Rpb25JZCBmeGlkKQogewogCS8qCiAJICogSWYgZnhpZCBpcyBvbGRlciB0aGFu IG1heWJlX25lZWRlZCBib3VuZCwgaXQgZGVmaW5pdGVseSBpcyB2aXNpYmxlIHRvCkBAIC00MjIz LDcgKzQyMjIsNyBAQCBHbG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKEdsb2JhbFZpc1N0 YXRlICpzdGF0ZSwKICAqIHJlbGZyb3plbnhpZCkuCiAgKi8KIGJvb2wKLUdsb2JhbFZpc1Rlc3RJ c1JlbW92YWJsZVhpZChHbG9iYWxWaXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKQor R2xvYmFsVmlzWGlkVmlzaWJsZVRvQWxsKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwgVHJhbnNhY3Rp b25JZCB4aWQpCiB7CiAJRnVsbFRyYW5zYWN0aW9uSWQgZnhpZDsKIApAQCAtNDIzNyw3ICs0MjM2 LDcgQEAgR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKEdsb2JhbFZpc1N0YXRlICpzdGF0ZSwg VHJhbnNhY3Rpb25JZCB4aWQpCiAJICovCiAJZnhpZCA9IEZ1bGxYaWRSZWxhdGl2ZVRvKHN0YXRl LT5kZWZpbml0ZWx5X25lZWRlZCwgeGlkKTsKIAotCXJldHVybiBHbG9iYWxWaXNUZXN0SXNSZW1v dmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xvYmFsVmlzRnVsbFhpZFZpc2li bGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCkBAIC00MjUxLDEyICs0MjUwLDEyIEBAIEds b2JhbFZpc0NoZWNrUmVtb3ZhYmxlRnVsbFhpZChSZWxhdGlvbiByZWwsIEZ1bGxUcmFuc2FjdGlv bklkIGZ4aWQpCiAKIAlzdGF0ZSA9IEdsb2JhbFZpc1Rlc3RGb3IocmVsKTsKIAotCXJldHVybiBH bG9iYWxWaXNUZXN0SXNSZW1vdmFibGVGdWxsWGlkKHN0YXRlLCBmeGlkKTsKKwlyZXR1cm4gR2xv YmFsVmlzRnVsbFhpZFZpc2libGVUb0FsbChzdGF0ZSwgZnhpZCk7CiB9CiAKIC8qCiAgKiBDb252 ZW5pZW5jZSB3cmFwcGVyIGFyb3VuZCBHbG9iYWxWaXNUZXN0Rm9yKCkgYW5kCi0gKiBHbG9iYWxW aXNUZXN0SXNSZW1vdmFibGVYaWQoKSwgc2VlIHRoZWlyIGNvbW1lbnRzLgorICogR2xvYmFsVmlz VGVzdElzVmlzaWJsZVhpZCgpLCBzZWUgdGhlaXIgY29tbWVudHMuCiAgKi8KIGJvb2wKIEdsb2Jh bFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpCkBA IC00MjY1LDcgKzQyNjQsNyBAQCBHbG9iYWxWaXNDaGVja1JlbW92YWJsZVhpZChSZWxhdGlvbiBy ZWwsIFRyYW5zYWN0aW9uSWQgeGlkKQogCiAJc3RhdGUgPSBHbG9iYWxWaXNUZXN0Rm9yKHJlbCk7 CiAKLQlyZXR1cm4gR2xvYmFsVmlzVGVzdElzUmVtb3ZhYmxlWGlkKHN0YXRlLCB4aWQpOworCXJl dHVybiBHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwoc3RhdGUsIHhpZCk7CiB9CiAKIC8qCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9zbmFwbWdyLmggYi9zcmMvaW5jbHVkZS91dGlscy9z bmFwbWdyLmgKaW5kZXggNjA0YzFmOTAyMTYuLmEwZWEyY2ZjZWEyIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS91dGlscy9zbmFwbWdyLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvc25hcG1nci5o CkBAIC0xMDAsOCArMTAwLDggQEAgZXh0ZXJuIGNoYXIgKkV4cG9ydFNuYXBzaG90KFNuYXBzaG90 IHNuYXBzaG90KTsKICAqLwogdHlwZWRlZiBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgR2xvYmFsVmlz U3RhdGU7CiBleHRlcm4gR2xvYmFsVmlzU3RhdGUgKkdsb2JhbFZpc1Rlc3RGb3IoUmVsYXRpb24g cmVsKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rlc3RJc1JlbW92YWJsZVhpZChHbG9iYWxWaXNT dGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKLWV4dGVybiBib29sIEdsb2JhbFZpc1Rl c3RJc1JlbW92YWJsZUZ1bGxYaWQoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbChHbG9iYWxW aXNTdGF0ZSAqc3RhdGUsIFRyYW5zYWN0aW9uSWQgeGlkKTsKK2V4dGVybiBib29sIEdsb2JhbFZp c0Z1bGxYaWRWaXNpYmxlVG9BbGwoR2xvYmFsVmlzU3RhdGUgKnN0YXRlLCBGdWxsVHJhbnNhY3Rp b25JZCBmeGlkKTsKIGV4dGVybiBib29sIEdsb2JhbFZpc0NoZWNrUmVtb3ZhYmxlWGlkKFJlbGF0 aW9uIHJlbCwgVHJhbnNhY3Rpb25JZCB4aWQpOwogZXh0ZXJuIGJvb2wgR2xvYmFsVmlzQ2hlY2tS ZW1vdmFibGVGdWxsWGlkKFJlbGF0aW9uIHJlbCwgRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAK LS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Disposition: attachment; filename="v13-0014-Use-GlobalVisState-to-determine-page-level-visib.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy4u14 RnJvbSAxYzEwMTE2OTMzZTUwYWUyYmU4NDVmMzhmNWMwOWYxMzM4MmJkMGY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM4OjI0IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTQvMjBdIFVzZSBHbG9iYWxWaXNTdGF0ZSB0byBkZXRlcm1pbmUgcGFnZSBsZXZl bAogdmlzaWJpbGl0eQoKRHVyaW5nIHBydW5pbmcgYW5kIGR1cmluZyB2YWN1dW0ncyB0aGlyZCBw aGFzZSwgd2UgdHJ5IHRvIGRldGVybWluZSBpZgp0aGUgd2hvbGUgcGFnZSBjYW4gYmUgc2V0IGFs bC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcC4gSW5zdGVhZCBvZgp1c2luZyBPbGRlc3RY bWluIHRvIGRldGVybWluZSBpZiBhbGwgdGhlIHR1cGxlcyBvbiBhIHBhZ2UgYXJlIHZpc2libGUg dG8KZXZlcnlvbmUsIHVzZSB0aGUgR2xvYmFsVmlzU3RhdGUuIFRoaXMgYWxsb3dzIHVzIHRvIHN0 YXJ0IHNldHRpbmcgdGhlIFZNCmR1cmluZyBvbi1hY2Nlc3MgcHJ1bmluZyBpbiBhIGZ1dHVyZSBj b21taXQuCgpJdCBpcyBwb3NzaWJsZSBmb3IgdGhlIEdsb2JhbFZpc1N0YXRlIHRvIGNoYW5nZSBk dXJpbmcgdGhlIGNvdXJzZSBvZiBhCnZhY3V1bS4gSW4gYWxsIGJ1dCBleHRyYW9yZGluYXJ5IGNh c2VzLCBpdCBtb3ZlcyBmb3J3YXJkLCBtZWFuaW5nIG1vcmUKcGFnZXMgY291bGQgcG90ZW50aWFs bHkgYmUgc2V0IGluIHRoZSBWTS4KCkJlY2F1c2UgY29tcGFyaW5nIGEgdHJhbnNhY3Rpb24gSUQg dG8gdGhlIEdsb2JhbFZpc1N0YXRlIHJlcXVpcmVzIG1vcmUKb3BlcmF0aW9ucyB0aGFuIGNvbXBh cmluZyBpdCB0byBhbm90aGVyIHNpbmdsZSB0cmFuc2FjdGlvbiBJRCwgd2Ugbm93CndhaXQgdW50 aWwgYWZ0ZXIgZXhhbWluaW5nIGFsbCB0aGUgdHVwbGVzIG9uIHRoZSBwYWdlIGFuZCBpZiB3ZSBo YXZlCm1haW50YWluZWQgdGhlIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCwgd2UgY29tcGFyZSB0aGF0 IHRvIHRoZQpHbG9iYWxWaXNTdGF0ZSBqdXN0IG9uY2UgcGVyIHBhZ2UuIFRoaXMgd29ya3MgYmVj YXVzZSBpZiB0aGUgcGFnZSBpcwphbGwtdmlzaWJsZSBhbmQgaGFzIGxpdmUsIGNvbW1pdHRlZCB0 dXBsZXMgb24gaXQsIHRoZQp2aXNpYmlsaXR5X2N1dG9mZl94aWQgd2lsbCBjb250YWluIHRoZSBu ZXdlc3QgeG1pbiBvbiB0aGUgcGFnZS4gSWYKZXZlcnlvbmUgY2FuIHNlZSBpdCwgdGhlIHBhZ2Ug aXMgdHJ1bHkgYWxsLXZpc2libGUuCgpEb2luZyB0aGlzIG1heSBtZWFuIHdlIGV4YW1pbmUgbW9y ZSB0dXBsZXMnIHhtaW5zIHRoYW4gYmVmb3JlLCBhcyB3ZSBtYXkKaGF2ZSBzZXQgYWxsX3Zpc2li bGUgdG8gZmFsc2Ugc29vbmVyIHdoZW4gZW5jb3VudGVyaW5nIGEgbGl2ZSB0dXBsZQpuZXdlciB0 aGFuIE9sZGVzdFhtaW4uIEhvd2V2ZXIsIHRoZXNlIGV4dHJhIGNvbXBhcmlzb25zIHdlcmUgZm91 bmQgbm90CnRvIGJlIHNpZ25pZmljYW50IGluIGEgcHJvZmlsZS4KLS0tCiBzcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5jIHwgMjggKysrKysrKysrKysrCiBzcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyAgICAgICAgIHwgNDggKysrKysrKysrLS0tLS0t LS0tLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgICAgICAgIHwgMTkg KysrKy0tLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICAgICAgICAgfCAg NCArLQogNCBmaWxlcyBjaGFuZ2VkLCA2MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1fdmlzaWJpbGl0eS5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3Zpc2liaWxpdHkuYwppbmRleCA0ZWJj OGFiZGJlYi4uZWRkNTI5ZGMzYzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L2hlYXBhbV92aXNpYmlsaXR5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFt X3Zpc2liaWxpdHkuYwpAQCAtMTE4OSw2ICsxMTg5LDM0IEBAIEhlYXBUdXBsZVNhdGlzZmllc1Zh Y3V1bShIZWFwVHVwbGUgaHR1cCwgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAogCXJldHVybiBy ZXM7CiB9CiAKKy8qCisgKiBOZWFybHkgdGhlIHNhbWUgYXMgSGVhcFR1cGxlU2F0aXNmaWVzVmFj dXVtLCBidXQgdXNlcyBhIEdsb2JhbFZpc1N0YXRlIHRvCisgKiBkZXRlcm1pbmUgd2hldGhlciBv ciBub3QgYSB0dXBsZSBpcyBIRUFQVFVQTEVfREVBRCBPcgorICogSEVBUFRVUExFX1JFQ0VOVExZ X0RFQUQuIEl0IHNlcnZlcyB0aGUgc2FtZSBwdXJwb3NlIGJ1dCBjYW4gYmUgdXNlZCBieQorICog Y2FsbGVycyB0aGF0IGhhdmUgbm90IGNhbGN1bGF0ZWQgYSBzaW5nbGUgT2xkZXN0WG1pbiB2YWx1 ZS4KKyAqLworSFRTVl9SZXN1bHQKK0hlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhI ZWFwVHVwbGUgaHR1cCwgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCisJCQkJCQkJCSAgQnVmZmVy IGJ1ZmZlcikKK3sKKwlUcmFuc2FjdGlvbklkIGRlYWRfYWZ0ZXIgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKKwlIVFNWX1Jlc3VsdCByZXM7CisKKwlyZXMgPSBIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1 dW1Ib3Jpem9uKGh0dXAsIGJ1ZmZlciwgJmRlYWRfYWZ0ZXIpOworCisJaWYgKHJlcyA9PSBIRUFQ VFVQTEVfUkVDRU5UTFlfREVBRCkKKwl7CisJCUFzc2VydChUcmFuc2FjdGlvbklkSXNWYWxpZChk ZWFkX2FmdGVyKSk7CisKKwkJaWYgKEdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCBk ZWFkX2FmdGVyKSkKKwkJCXJlcyA9IEhFQVBUVVBMRV9ERUFEOworCX0KKwllbHNlCisJCUFzc2Vy dCghVHJhbnNhY3Rpb25JZElzVmFsaWQoZGVhZF9hZnRlcikpOworCisJcmV0dXJuIHJlczsKK30K KwogLyoKICAqIFdvcmsgaG9yc2UgZm9yIEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bSBhbmQgc2lt aWxhciByb3V0aW5lcy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDQ4 MGFkYTk5ZTIyLi5iOGNhMWJlMTVhMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hl YXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMK QEAgLTE0MSwxMCArMTQxLDkgQEAgdHlwZWRlZiBzdHJ1Y3QKIAkgKiBhbGxfdmlzaWJsZSBhbmQg YWxsX2Zyb3plbiBpbmRpY2F0ZSBpZiB0aGUgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4KIAkg KiBiaXRzIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBjYW4gYmUgc2V0IGZvciB0aGlzIHBhZ2UgYWZ0 ZXIgcHJ1bmluZy4KIAkgKgotCSAqIHZpc2liaWxpdHlfY3V0b2ZmX3hpZCBpcyB0aGUgbmV3ZXN0 IHhtaW4gb2YgbGl2ZSB0dXBsZXMgb24gdGhlIHBhZ2UuCi0JICogVGhlIGNhbGxlciBjYW4gdXNl IGl0IGFzIHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNCi0JICogYml0 cy4gIEl0IGlzIG9ubHkgdmFsaWQgaWYgd2UgZnJvemUgc29tZSB0dXBsZXMsIGFuZCBhbGxfZnJv emVuIGlzCi0JICogdHJ1ZS4KKwkgKiB2aXNpYmlsaXR5X2N1dG9mZl94aWQgaXMgdGhlIG5ld2Vz dCB4bWluIG9mIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLiBJdAorCSAqIGNhbiBiZSB1c2VkIGFz IHRoZSBjb25mbGljdCBob3Jpem9uLCB3aGVuIHNldHRpbmcgdGhlIFZNIG9yIHdoZW4KKwkgKiBm cmVlemluZyBhbGwgdGhlIGxpdmUgdHVwbGVzIG9uIHRoZSBwYWdlLgogCSAqCiAJICogTk9URTog YWxsX3Zpc2libGUgYW5kIGFsbF9mcm96ZW4gZG9uJ3QgaW5jbHVkZSBMUF9ERUFEIGl0ZW1zIHVu dGlsCiAJICogZGlyZWN0bHkgYmVmb3JlIHVwZGF0aW5nIHRoZSBWTS4gV2UgaWdub3JlIExQX0RF QUQgaXRlbXMgd2hlbiBkZWNpZGluZwpAQCAtNTU5LDE0ICs1NTgsMTIgQEAgaGVhcF9wYWdlX3By dW5lX2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAKIAkvKgog CSAqIFRoZSB2aXNpYmlsaXR5IGN1dG9mZiB4aWQgaXMgdGhlIG5ld2VzdCB4bWluIG9mIGxpdmUs IGNvbW1pdHRlZCB0dXBsZXMKLQkgKiBvbGRlciB0aGFuIE9sZGVzdFhtaW4gb24gdGhlIHBhZ2Uu IFRoaXMgZmllbGQgaXMgb25seSBrZXB0IHVwLXRvLWRhdGUKLQkgKiBpZiB0aGUgcGFnZSBpcyBh bGwtdmlzaWJsZS4gQXMgc29vbiBhcyBhIHR1cGxlIGlzIGVuY291bnRlcmVkIHRoYXQgaXMKLQkg KiBub3QgdmlzaWJsZSB0byBhbGwsIHRoaXMgZmllbGQgaXMgdW5tYWludGFpbmVkLiBBcyBsb25n IGFzIGl0IGlzCi0JICogbWFpbnRhaW5lZCwgaXQgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIHRo ZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLgotCSAqIFRoaXMgaXMgbW9zdCBsaWtlbHkgdG8g aGFwcGVuIHdoZW4gdXBkYXRpbmcgdGhlIFZNIGFuZC9vciBmcmVlemluZyBhbGwKLQkgKiBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZS4gSXQgaXMgdXBkYXRlZCBiZWZvcmUgcmV0dXJuaW5nIHRvIHRo ZSBjYWxsZXIKLQkgKiBiZWNhdXNlIHZhY3V1bSBkb2VzIGFzc2VydC1idWlsZCBvbmx5IHZhbGlk YXRpb24gb24gdGhlIHBhZ2UgdXNpbmcgdGhpcwotCSAqIGZpZWxkLgorCSAqIG9uIHRoZSBwYWdl IG9sZGVyIHRoYW4gdGhlIHZpc2liaWxpdHkgaG9yaXpvbiByZXByZXNlbnRlZCBpbiB0aGUKKwkg KiBHbG9iYWxWaXNTdGF0ZS4KKwkgKgorCSAqIElmIHdlIGVuY291bnRlciBhbiB1bmNvbW1pdHRl ZCB0dXBsZSwgdGhpcyBmaWVsZCBpcyB1bm1haW50YWluZWQuIElmCisJICogdGhlIHBhZ2UgaXMg YmVpbmcgc2V0IGFsbC12aXNpYmxlIG9yIHdoZW4gZnJlZXppbmcgYWxsIGxpdmUgdHVwbGVzIG9u CisJICogdGhlIHBhZ2UsIGl0IGlzIHVzZWQgdG8gY2FsY3VsYXRlIHRoZSBzbmFwc2hvdCBjb25m bGljdCBob3Jpem9uLgogCSAqLwogCXByc3RhdGUudmlzaWJpbGl0eV9jdXRvZmZfeGlkID0gSW52 YWxpZFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTc2Miw2ICs3NTksMTYgQEAgaGVhcF9wYWdlX3BydW5l X2FuZF9mcmVlemUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJCXByc3RhdGUu bmRlYWQgPiAwIHx8CiAJCXByc3RhdGUubnVudXNlZCA+IDA7CiAKKwkvKgorCSAqIEFmdGVyIHBy b2Nlc3NpbmcgYWxsIHRoZSBsaXZlIHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4 bWluCisJICogYW1vbmdzdCB0aGVtIGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFn ZSBjYW5ub3QgYmUKKwkgKiBhbGwtdmlzaWJsZS4KKwkgKi8KKwlpZiAocHJzdGF0ZS5hbGxfdmlz aWJsZSAmJgorCQlUcmFuc2FjdGlvbklkSXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9m Zl94aWQpICYmCisJCSFHbG9iYWxWaXNYaWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBw cnN0YXRlLnZpc2liaWxpdHlfY3V0b2ZmX3hpZCkpCisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBw cnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBw cnVuZSBhbnl0aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3By dW5lX3hpZCBmaWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRl IHRob3NlCkBAIC0xMTA4LDEyICsxMTE1LDEwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXpl KFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlUcmFuc2FjdGlvbklkIGRlYnVn X2N1dG9mZjsKIAkJYm9vbAkJZGVidWdfYWxsX2Zyb3plbjsKIAotCQlBc3NlcnQoY3V0b2Zmcyk7 Ci0KIAkJQXNzZXJ0KHByc3RhdGUubHBkZWFkX2l0ZW1zID09IDApOwogCiAJCWlmICghaGVhcF9w YWdlX2lzX2FsbF92aXNpYmxlKHJlbGF0aW9uLCBidWZmZXIsCi0JCQkJCQkJCQkgIGN1dG9mZnMt Pk9sZGVzdFhtaW4sCisJCQkJCQkJCQkgIHByc3RhdGUudmlzdGVzdCwKIAkJCQkJCQkJCSAgJmRl YnVnX2FsbF9mcm96ZW4sCiAJCQkJCQkJCQkgICZkZWJ1Z19jdXRvZmYsIG9mZl9sb2MpKQogCQkJ QXNzZXJ0KGZhbHNlKTsKQEAgLTE2MzgsMTkgKzE2NDMsNiBAQCBoZWFwX3BydW5lX3JlY29yZF91 bmNoYW5nZWRfbHBfbm9ybWFsKFBhZ2UgcGFnZSwgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwgT2Zmc2V0 TnVtYgogCQkJCSAqLwogCQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKGh0dXApOwog Ci0JCQkJLyoKLQkJCQkgKiBGb3Igbm93IGFsd2F5cyB1c2UgcHJzdGF0ZS0+Y3V0b2ZmcyBmb3Ig dGhpcyB0ZXN0LCBiZWNhdXNlCi0JCQkJICogd2Ugb25seSB1cGRhdGUgJ2FsbF92aXNpYmxlJyB3 aGVuIGZyZWV6aW5nIGlzIHJlcXVlc3RlZC4gV2UKLQkJCQkgKiBjb3VsZCB1c2UgR2xvYmFsVmlz VGVzdElzUmVtb3ZhYmxlWGlkIGluc3RlYWQsIGlmIGEKLQkJCQkgKiBub24tZnJlZXppbmcgY2Fs bGVyIHdhbnRlZCB0byBzZXQgdGhlIFZNIGJpdC4KLQkJCQkgKi8KLQkJCQlBc3NlcnQocHJzdGF0 ZS0+Y3V0b2Zmcyk7Ci0JCQkJaWYgKCFUcmFuc2FjdGlvbklkUHJlY2VkZXMoeG1pbiwgcHJzdGF0 ZS0+Y3V0b2Zmcy0+T2xkZXN0WG1pbikpCi0JCQkJewotCQkJCQlwcnN0YXRlLT5hbGxfdmlzaWJs ZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKLQkJCQkJYnJlYWs7Ci0JCQkJfQotCiAJ CQkJLyogVHJhY2sgbmV3ZXN0IHhtaW4gb24gcGFnZS4gKi8KIAkJCQlpZiAoVHJhbnNhY3Rpb25J ZEZvbGxvd3MoeG1pbiwgcHJzdGF0ZS0+dmlzaWJpbGl0eV9jdXRvZmZfeGlkKSAmJgogCQkJCQlU cmFuc2FjdGlvbklkSXNOb3JtYWwoeG1pbikpCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5 LmMKaW5kZXggMmRjY2EwNzFhNDUuLjRhZDA1YmE0ZGI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAv dmFjdXVtbGF6eS5jCkBAIC00NjQsNyArNDY0LDcgQEAgc3RhdGljIHZvaWQgZGVhZF9pdGVtc19h ZGQoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgT2Zmc2V0TnVtYmVyICoK IHN0YXRpYyB2b2lkIGRlYWRfaXRlbXNfcmVzZXQoTFZSZWxTdGF0ZSAqdmFjcmVsKTsKIHN0YXRp YyB2b2lkIGRlYWRfaXRlbXNfY2xlYW51cChMVlJlbFN0YXRlICp2YWNyZWwpOwogc3RhdGljIGJv b2wgaGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1 ZiwKLQkJCQkJCQkJCQkgICBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkJCQkJICAg R2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkJCQkJICAgT2Zmc2V0TnVtYmVyICpkZWFk b2Zmc2V0cywKIAkJCQkJCQkJCQkgICBpbnQgbmRlYWRvZmZzZXRzLAogCQkJCQkJCQkJCSAgIGJv b2wgKmFsbF9mcm96ZW4sCkBAIC0yNzE3LDcgKzI3MTcsNyBAQCBsYXp5X3ZhY3V1bV9oZWFwX3Bh Z2UoTFZSZWxTdGF0ZSAqdmFjcmVsLCBCbG9ja051bWJlciBibGtubywgQnVmZmVyIGJ1ZmZlciwK IAkJCQkJCQkgSW52YWxpZE9mZnNldE51bWJlcik7CiAKIAlpZiAoaGVhcF9wYWdlX3dvdWxkX2Jl X2FsbF92aXNpYmxlKHZhY3JlbC0+cmVsLCBidWZmZXIsCi0JCQkJCQkJCQkgICB2YWNyZWwtPmN1 dG9mZnMuT2xkZXN0WG1pbiwKKwkJCQkJCQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwKIAkJCQkJCQkJ CSAgIGRlYWRvZmZzZXRzLCBudW1fb2Zmc2V0cywKIAkJCQkJCQkJCSAgICZhbGxfZnJvemVuLCAm dmlzaWJpbGl0eV9jdXRvZmZfeGlkLAogCQkJCQkJCQkJICAgJnZhY3JlbC0+b2ZmbnVtKSkKQEAg LTM0NjIsMTMgKzM0NjIsMTMgQEAgZGVhZF9pdGVtc19jbGVhbnVwKExWUmVsU3RhdGUgKnZhY3Jl bCkKICAqLwogYm9vbAogaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVm ZmVyIGJ1ZiwKLQkJCQkJCSBUcmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCisJCQkJCQkgR2xvYmFs VmlzU3RhdGUgKnZpc3Rlc3QsCiAJCQkJCQkgYm9vbCAqYWxsX2Zyb3plbiwKIAkJCQkJCSBUcmFu c2FjdGlvbklkICp2aXNpYmlsaXR5X2N1dG9mZl94aWQsCiAJCQkJCQkgT2Zmc2V0TnVtYmVyICps b2dnaW5nX29mZm51bSkKIHsKIAotCXJldHVybiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2li bGUocmVsLCBidWYsIE9sZGVzdFhtaW4sCisJcmV0dXJuIGhlYXBfcGFnZV93b3VsZF9iZV9hbGxf dmlzaWJsZShyZWwsIGJ1ZiwgdmlzdGVzdCwKIAkJCQkJCQkJCQkgIE5VTEwsIDAsCiAJCQkJCQkJ CQkJICBhbGxfZnJvemVuLAogCQkJCQkJCQkJCSAgdmlzaWJpbGl0eV9jdXRvZmZfeGlkLApAQCAt MzQ4Nyw3ICszNDg3LDcgQEAgaGVhcF9wYWdlX2lzX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwg QnVmZmVyIGJ1ZiwKICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZSBv dGhlciB0aGFuIHRoZSBwcm92aWRlZAogICogZGVhZG9mZnNldHMgYW5kIGZhbHNlIG90aGVyd2lz ZS4KICAqCi0gKiBPbGRlc3RYbWluIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCisg KiB2aXN0ZXN0IGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHZpc2liaWxpdHkuCiAgKgogICogKmFsbF9m cm96ZW4gaXMgYW4gb3V0cHV0IHBhcmFtZXRlciBpbmRpY2F0aW5nIHRvIHRoZSBjYWxsZXIgaWYg ZXZlcnkgdHVwbGUKICAqIG9uIHRoZSBwYWdlIGlzIGZyb3plbi4KQEAgLTM1MDgsNyArMzUwOCw3 IEBAIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAg Ki8KIHN0YXRpYyBib29sCiBoZWFwX3BhZ2Vfd291bGRfYmVfYWxsX3Zpc2libGUoUmVsYXRpb24g cmVsLCBCdWZmZXIgYnVmLAotCQkJCQkJCSAgIFRyYW5zYWN0aW9uSWQgT2xkZXN0WG1pbiwKKwkJ CQkJCQkgICBHbG9iYWxWaXNTdGF0ZSAqdmlzdGVzdCwKIAkJCQkJCQkgICBPZmZzZXROdW1iZXIg KmRlYWRvZmZzZXRzLAogCQkJCQkJCSAgIGludCBuZGVhZG9mZnNldHMsCiAJCQkJCQkJICAgYm9v bCAqYWxsX2Zyb3plbiwKQEAgLTM1ODAsOCArMzU4MCw4IEBAIGhlYXBfcGFnZV93b3VsZF9iZV9h bGxfdmlzaWJsZShSZWxhdGlvbiByZWwsIEJ1ZmZlciBidWYsCiAJCXR1cGxlLnRfbGVuID0gSXRl bUlkR2V0TGVuZ3RoKGl0ZW1pZCk7CiAJCXR1cGxlLnRfdGFibGVPaWQgPSBSZWxhdGlvbkdldFJl bGlkKHJlbCk7CiAKLQkJc3dpdGNoIChIZWFwVHVwbGVTYXRpc2ZpZXNWYWN1dW0oJnR1cGxlLCBP bGRlc3RYbWluLAotCQkJCQkJCQkJCSBidWYpKQorCQlzd2l0Y2ggKEhlYXBUdXBsZVNhdGlzZmll c1ZhY3V1bUdsb2JhbFZpcygmdHVwbGUsIHZpc3Rlc3QsCisJCQkJCQkJCQkJCQkgIGJ1ZikpCiAJ CXsKIAkJCWNhc2UgSEVBUFRVUExFX0xJVkU6CiAJCQkJewpAQCAtMzYwMCw4ICszNjAwLDcgQEAg aGVhcF9wYWdlX3dvdWxkX2JlX2FsbF92aXNpYmxlKFJlbGF0aW9uIHJlbCwgQnVmZmVyIGJ1ZiwK IAkJCQkJICogdGhhdCBldmVyeW9uZSBzZWVzIGl0IGFzIGNvbW1pdHRlZD8KIAkJCQkJICovCiAJ CQkJCXhtaW4gPSBIZWFwVHVwbGVIZWFkZXJHZXRYbWluKHR1cGxlLnRfZGF0YSk7Ci0JCQkJCWlm ICghVHJhbnNhY3Rpb25JZFByZWNlZGVzKHhtaW4sCi0JCQkJCQkJCQkJCSAgIE9sZGVzdFhtaW4p KQorCQkJCQlpZiAoIUdsb2JhbFZpc1hpZFZpc2libGVUb0FsbCh2aXN0ZXN0LCB4bWluKSkKIAkJ CQkJewogCQkJCQkJYWxsX3Zpc2libGUgPSBmYWxzZTsKIAkJCQkJCSphbGxfZnJvemVuID0gZmFs c2U7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmggYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvaGVhcGFtLmgKaW5kZXggMzY3OTkyOGQ0M2UuLmZjZDg4MmNiMDNiIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oCkBAIC0zNDIsNyArMzQyLDcgQEAgZXh0ZXJuIHZvaWQgaGVhcF9pbnBsYWNlX3Vu bG9jayhSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJSGVhcFR1cGxlIG9sZHR1cCwgQnVmZmVy IGJ1ZmZlcik7CiAKIGV4dGVybiBib29sIGhlYXBfcGFnZV9pc19hbGxfdmlzaWJsZShSZWxhdGlv biByZWwsIEJ1ZmZlciBidWYsCi0JCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCBPbGRlc3RYbWluLAor CQkJCQkJCQkJIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAogCQkJCQkJCQkJIGJvb2wgKmFsbF9m cm96ZW4sCiAJCQkJCQkJCQkgVHJhbnNhY3Rpb25JZCAqdmlzaWJpbGl0eV9jdXRvZmZfeGlkLAog CQkJCQkJCQkJIE9mZnNldE51bWJlciAqbG9nZ2luZ19vZmZudW0pOwpAQCAtNDE1LDYgKzQxNSw4 IEBAIGV4dGVybiBUTV9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVXBkYXRlKEhlYXBUdXBsZSBo dHVwLCBDb21tYW5kSWQgY3VyY2lkLAogCQkJCQkJCQkJCSAgQnVmZmVyIGJ1ZmZlcik7CiBleHRl cm4gSFRTVl9SZXN1bHQgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtKEhlYXBUdXBsZSBodHVwLCBU cmFuc2FjdGlvbklkIE9sZGVzdFhtaW4sCiAJCQkJCQkJCQkJCUJ1ZmZlciBidWZmZXIpOworZXh0 ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUdsb2JhbFZpcyhIZWFwVHVw bGUgaHR1cCwKKwkJCQkJCQkJCQkJCQkgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3QsIEJ1ZmZlciBi dWZmZXIpOwogZXh0ZXJuIEhUU1ZfUmVzdWx0IEhlYXBUdXBsZVNhdGlzZmllc1ZhY3V1bUhvcml6 b24oSGVhcFR1cGxlIGh0dXAsIEJ1ZmZlciBidWZmZXIsCiAJCQkJCQkJCQkJCQkgICBUcmFuc2Fj dGlvbklkICpkZWFkX2FmdGVyKTsKIGV4dGVybiB2b2lkIEhlYXBUdXBsZVNldEhpbnRCaXRzKEhl YXBUdXBsZUhlYWRlciB0dXBsZSwgQnVmZmVyIGJ1ZmZlciwKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Disposition: attachment; filename="v13-0017-Allow-on-access-pruning-to-set-pages-all-visible.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy5317 RnJvbSBmN2NiMTcwNGU1NzE2ZGVmNDJmOGIwY2RjYmI2YzM5MDUyNWM0Y2ZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM0OjMwIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTcvMjBdIEFsbG93IG9uLWFjY2VzcyBwcnVuaW5nIHRvIHNldCBwYWdlcyBhbGwt dmlzaWJsZQoKTWFueSBxdWVyaWVzIGRvIG5vdCBtb2RpZnkgdGhlIHVuZGVybHlpbmcgcmVsYXRp b24uIEZvciBzdWNoIHF1ZXJpZXMsIGlmCm9uLWFjY2VzcyBwcnVuaW5nIG9jY3VycyBkdXJpbmcg dGhlIHNjYW4sIHdlIGNhbiBjaGVjayB3aGV0aGVyIHRoZSBwYWdlCmhhcyBiZWNvbWUgYWxsLXZp c2libGUgYW5kIHVwZGF0ZSB0aGUgdmlzaWJpbGl0eSBtYXAgYWNjb3JkaW5nbHkuClByZXZpb3Vz bHksIG9ubHkgdmFjdXVtIG1hcmtlZCBwYWdlcyBhcyBhbGwtdmlzaWJsZSBvciBhbGwtZnJvemVu LgoKU3VwcG9ydGluZyB0aGlzIHJlcXVpcmVzIHBhc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hl dGhlciB0aGUgcmVsYXRpb24KaXMgbW9kaWZpZWQgZnJvbSB0aGUgZXhlY3V0b3IgZG93biB0byB0 aGUgc2NhbiBkZXNjcmlwdG9yLgoKVGhpcyBjb21taXQgaW1wbGVtZW50cyBvbi1hY2Nlc3MgVk0g c2V0dGluZyBmb3Igc2VxdWVudGlhbCBzY2FucyBhcyB3ZWxsCmFzIGZvciB0aGUgdW5kZXJseWlu ZyBoZWFwIHJlbGF0aW9uIGluIGluZGV4IHNjYW5zIGFuZCBiaXRtYXAgaGVhcApzY2Fucy4KLS0t CiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyAgICAgICAgICAgICAgfCAxNSArKysr LQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYyAgICAgIHwgMTUgKysr Ky0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jICAgICAgICAgICB8IDY3ICsr KysrKysrKysrKysrLS0tLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMgICAg ICAgICAgICB8IDQ2ICsrKysrKysrKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJs ZWFtLmMgICAgICAgICAgICB8IDM5ICsrKysrKysrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9l eGVjTWFpbi5jICAgICAgICAgICAgICAgfCAgNCArKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhl Y1V0aWxzLmMgICAgICAgICAgICAgIHwgIDIgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJp dG1hcEhlYXBzY2FuLmMgICAgIHwgIDcgKy0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVJbmRl eHNjYW4uYyAgICAgICAgICB8IDE4ICsrKy0tCiBzcmMvYmFja2VuZC9leGVjdXRvci9ub2RlU2Vx c2Nhbi5jICAgICAgICAgICAgfCAyNCArKysrKy0tCiBzcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0u aCAgICAgICAgICAgICAgICAgICAgfCAxMSArKysKIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0u aCAgICAgICAgICAgICAgICAgICB8IDI0ICsrKysrKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9yZWxz Y2FuLmggICAgICAgICAgICAgICAgICB8ICA2ICsrCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVh bS5oICAgICAgICAgICAgICAgICAgfCAzMCArKysrKysrKy0KIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgICAgICB8ICA2ICsrCiAuLi4vdC8wMzVfc3RhbmRieV9sb2dp Y2FsX2RlY29kaW5nLnBsICAgICAgICAgfCAgMyArLQogMTYgZmlsZXMgY2hhbmdlZCwgMjc3IGlu c2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKaW5k ZXggZGZhOWQ1YTQ2MGQuLmVlZGM3Y2IwN2JmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvaGVhcC9oZWFwYW0uYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYwpA QCAtNTU2LDYgKzU1Niw3IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNjYW5EZXNjIHNz Y2FuKQogCUJ1ZmZlcgkJYnVmZmVyID0gc2Nhbi0+cnNfY2J1ZjsKIAlCbG9ja051bWJlciBibG9j ayA9IHNjYW4tPnJzX2NibG9jazsKIAlTbmFwc2hvdAlzbmFwc2hvdDsKKwlCdWZmZXIJICAgKnZt YnVmZmVyID0gTlVMTDsKIAlQYWdlCQlwYWdlOwogCWludAkJCWxpbmVzOwogCWJvb2wJCWFsbF92 aXNpYmxlOwpAQCAtNTcwLDcgKzU3MSw5IEBAIGhlYXBfcHJlcGFyZV9wYWdlc2NhbihUYWJsZVNj YW5EZXNjIHNzY2FuKQogCS8qCiAJICogUHJ1bmUgYW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZv ciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUuCiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29w dChzY2FuLT5yc19iYXNlLnJzX3JkLCBidWZmZXIpOworCWlmIChzc2Nhbi0+cnNfZmxhZ3MgJiBT T19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJnNjYW4tPnJzX3ZtYnVmZmVyOworCWhlYXBf cGFnZV9wcnVuZV9vcHQoc2Nhbi0+cnNfYmFzZS5yc19yZCwgYnVmZmVyLCB2bWJ1ZmZlcik7CiAK IAkvKgogCSAqIFdlIG11c3QgaG9sZCBzaGFyZSBsb2NrIG9uIHRoZSBidWZmZXIgY29udGVudCB3 aGlsZSBleGFtaW5pbmcgdHVwbGUKQEAgLTEyNDcsNiArMTI1MCw3IEBAIGhlYXBfYmVnaW5zY2Fu KFJlbGF0aW9uIHJlbGF0aW9uLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJCQkJICBz aXplb2YoVEJNSXRlcmF0ZVJlc3VsdCkpOwogCX0KIAorCXNjYW4tPnJzX3ZtYnVmZmVyID0gSW52 YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAoVGFibGVTY2FuRGVzYykgc2NhbjsKIH0KQEAgLTEyODUs NiArMTI4OSwxMiBAQCBoZWFwX3Jlc2NhbihUYWJsZVNjYW5EZXNjIHNzY2FuLCBTY2FuS2V5IGtl eSwgYm9vbCBzZXRfcGFyYW1zLAogCQlzY2FuLT5yc19jYnVmID0gSW52YWxpZEJ1ZmZlcjsKIAl9 CiAKKwlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc192bWJ1ZmZlcikpCisJeworCQlSZWxlYXNl QnVmZmVyKHNjYW4tPnJzX3ZtYnVmZmVyKTsKKwkJc2Nhbi0+cnNfdm1idWZmZXIgPSBJbnZhbGlk QnVmZmVyOworCX0KKwogCS8qCiAJICogU09fVFlQRV9CSVRNQVBTQ0FOIHdvdWxkIGJlIGNsZWFu ZWQgdXAgaGVyZSwgYnV0IGl0IGRvZXMgbm90IGhvbGQgYW55CiAJICogYWRkaXRpb25hbCBkYXRh IHZzIGEgbm9ybWFsIEhlYXBTY2FuCkBAIC0xMzE3LDYgKzEzMjcsOSBAQCBoZWFwX2VuZHNjYW4o VGFibGVTY2FuRGVzYyBzc2NhbikKIAlpZiAoQnVmZmVySXNWYWxpZChzY2FuLT5yc19jYnVmKSkK IAkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc19jYnVmKTsKIAorCWlmIChCdWZmZXJJc1ZhbGlkKHNj YW4tPnJzX3ZtYnVmZmVyKSkKKwkJUmVsZWFzZUJ1ZmZlcihzY2FuLT5yc192bWJ1ZmZlcik7CisK IAkvKgogCSAqIE11c3QgZnJlZSB0aGUgcmVhZCBzdHJlYW0gYmVmb3JlIGZyZWVpbmcgdGhlIEJ1 ZmZlckFjY2Vzc1N0cmF0ZWd5LgogCSAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvaGVhcGFtX2hhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMKaW5kZXggYmNiYWM4NDRiYjYuLmYwNWI5ZTQ5NjhkIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jCisrKyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMKQEAgLTg1LDYgKzg1LDcgQEAgaGVhcGFtX2luZGV4 X2ZldGNoX2JlZ2luKFJlbGF0aW9uIHJlbCkKIAogCWhzY2FuLT54c19iYXNlLnJlbCA9IHJlbDsK IAloc2Nhbi0+eHNfY2J1ZiA9IEludmFsaWRCdWZmZXI7CisJaHNjYW4tPnhzX3ZtYnVmZmVyID0g SW52YWxpZEJ1ZmZlcjsKIAogCXJldHVybiAmaHNjYW4tPnhzX2Jhc2U7CiB9CkBAIC05OSw2ICsx MDAsMTIgQEAgaGVhcGFtX2luZGV4X2ZldGNoX3Jlc2V0KEluZGV4RmV0Y2hUYWJsZURhdGEgKnNj YW4pCiAJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX2NidWYpOwogCQloc2Nhbi0+eHNfY2J1ZiA9 IEludmFsaWRCdWZmZXI7CiAJfQorCisJaWYgKEJ1ZmZlcklzVmFsaWQoaHNjYW4tPnhzX3ZtYnVm ZmVyKSkKKwl7CisJCVJlbGVhc2VCdWZmZXIoaHNjYW4tPnhzX3ZtYnVmZmVyKTsKKwkJaHNjYW4t PnhzX3ZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKwl9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0x MzgsNyArMTQ1LDggQEAgaGVhcGFtX2luZGV4X2ZldGNoX3R1cGxlKHN0cnVjdCBJbmRleEZldGNo VGFibGVEYXRhICpzY2FuLAogCQkgKiBQcnVuZSBwYWdlLCBidXQgb25seSBpZiB3ZSB3ZXJlbid0 IGFscmVhZHkgb24gdGhpcyBwYWdlCiAJCSAqLwogCQlpZiAocHJldl9idWYgIT0gaHNjYW4tPnhz X2NidWYpCi0JCQloZWFwX3BhZ2VfcHJ1bmVfb3B0KGhzY2FuLT54c19iYXNlLnJlbCwgaHNjYW4t PnhzX2NidWYpOworCQkJaGVhcF9wYWdlX3BydW5lX29wdChoc2Nhbi0+eHNfYmFzZS5yZWwsIGhz Y2FuLT54c19jYnVmLAorCQkJCQkJCQlzY2FuLT5tb2RpZmllc19iYXNlX3JlbCA/IE5VTEwgOiAm aHNjYW4tPnhzX3ZtYnVmZmVyKTsKIAl9CiAKIAkvKiBPYnRhaW4gc2hhcmUtbG9jayBvbiB0aGUg YnVmZmVyIHNvIHdlIGNhbiBleGFtaW5lIHZpc2liaWxpdHkgKi8KQEAgLTI0NzEsNiArMjQ3OSw3 IEBAIEJpdG1hcEhlYXBTY2FuTmV4dEJsb2NrKFRhYmxlU2NhbkRlc2Mgc2NhbiwKIAlUQk1JdGVy YXRlUmVzdWx0ICp0Ym1yZXM7CiAJT2Zmc2V0TnVtYmVyIG9mZnNldHNbVEJNX01BWF9UVVBMRVNf UEVSX1BBR0VdOwogCWludAkJCW5vZmZzZXRzID0gLTE7CisJQnVmZmVyCSAgICp2bWJ1ZmZlciA9 IE5VTEw7CiAKIAlBc3NlcnQoc2Nhbi0+cnNfZmxhZ3MgJiBTT19UWVBFX0JJVE1BUFNDQU4pOwog CUFzc2VydChoc2Nhbi0+cnNfcmVhZF9zdHJlYW0pOwpAQCAtMjUxNyw3ICsyNTI2LDkgQEAgQml0 bWFwSGVhcFNjYW5OZXh0QmxvY2soVGFibGVTY2FuRGVzYyBzY2FuLAogCS8qCiAJICogUHJ1bmUg YW5kIHJlcGFpciBmcmFnbWVudGF0aW9uIGZvciB0aGUgd2hvbGUgcGFnZSwgaWYgcG9zc2libGUu CiAJICovCi0JaGVhcF9wYWdlX3BydW5lX29wdChzY2FuLT5yc19yZCwgYnVmZmVyKTsKKwlpZiAo c2Nhbi0+cnNfZmxhZ3MgJiBTT19BTExPV19WTV9TRVQpCisJCXZtYnVmZmVyID0gJmhzY2FuLT5y c192bWJ1ZmZlcjsKKwloZWFwX3BhZ2VfcHJ1bmVfb3B0KHNjYW4tPnJzX3JkLCBidWZmZXIsIHZt YnVmZmVyKTsKIAogCS8qCiAJICogV2UgbXVzdCBob2xkIHNoYXJlIGxvY2sgb24gdGhlIGJ1ZmZl ciBjb250ZW50IHdoaWxlIGV4YW1pbmluZyB0dXBsZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYwppbmRleCA0ZjRhMGFmMWYwNC4uNzUyM2I5MzY3NjkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFw L3BydW5laGVhcC5jCkBAIC0xOTgsOSArMTk4LDEzIEBAIHN0YXRpYyBib29sIGlkZW50aWZ5X2Fu ZF9maXhfdm1fY29ycnVwdGlvbihSZWxhdGlvbiByZWxhdGlvbiwKICAqIGlmIHRoZXJlJ3Mgbm90 IGFueSB1c2UgaW4gcHJ1bmluZy4KICAqCiAgKiBDYWxsZXIgbXVzdCBoYXZlIHBpbiBvbiB0aGUg YnVmZmVyLCBhbmQgbXVzdCAqbm90KiBoYXZlIGEgbG9jayBvbiBpdC4KKyAqCisgKiBJZiB2bWJ1 ZmZlciBpcyBub3QgTlVMTCwgaXQgaXMgb2theSBmb3IgcHJ1bmluZyB0byBzZXQgdGhlIHZpc2li aWxpdHkgbWFwIGlmCisgKiB0aGUgcGFnZSBpcyBhbGwgdmlzaWJsZS4gV2Ugd2lsbCB0YWtlIGNh cmUgb2YgcGlubmluZyBhbmQsIGlmIG5lZWRlZCwKKyAqIHJlYWRpbmcgaW4gdGhlIHBhZ2Ugb2Yg dGhlIHZpc2liaWxpdHkgbWFwLgogICovCiB2b2lkCi1oZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0 aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyKQoraGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlv biByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwgQnVmZmVyICp2bWJ1ZmZlcikKIHsKIAlQYWdlCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCVRyYW5zYWN0aW9uSWQgcHJ1bmVfeGlkOwpA QCAtMjY0LDYgKzI2OCwxMyBAQCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJlbGF0aW9u LCBCdWZmZXIgYnVmZmVyKQogCQl7CiAJCQlPZmZzZXROdW1iZXIgZHVtbXlfb2ZmX2xvYzsKIAkJ CVBydW5lRnJlZXplUmVzdWx0IHByZXN1bHQ7CisJCQlpbnQJCQlvcHRpb25zID0gMDsKKworCQkJ aWYgKHZtYnVmZmVyKQorCQkJeworCQkJCXZpc2liaWxpdHltYXBfcGluKHJlbGF0aW9uLCBCdWZm ZXJHZXRCbG9ja051bWJlcihidWZmZXIpLCB2bWJ1ZmZlcik7CisJCQkJb3B0aW9ucyA9IEhFQVBf UEFHRV9QUlVORV9VUERBVEVfVk07CisJCQl9CiAKIAkJCS8qCiAJCQkgKiBGb3Igbm93LCBwYXNz IG1hcmtfdW51c2VkX25vdyBhcyBmYWxzZSByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3IKQEAgLTI3 MSw5ICsyODIsMTAgQEAgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcikKIAkJCSAqIHRoYXQgZHVyaW5nIG9uLWFjY2VzcyBwcnVuaW5nIHdpdGggdGhl IGN1cnJlbnQgaW1wbGVtZW50YXRpb24uCiAJCQkgKi8KIAkJCWhlYXBfcGFnZV9wcnVuZV9hbmRf ZnJlZXplKHJlbGF0aW9uLCBidWZmZXIsIGZhbHNlLAotCQkJCQkJCQkJICAgSW52YWxpZEJ1ZmZl ciwKLQkJCQkJCQkJCSAgIHZpc3Rlc3QsIDAsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwg UFJVTkVfT05fQUNDRVNTLCAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVMTCk7CisJCQkJCQkJCQkg ICB2bWJ1ZmZlciA/ICp2bWJ1ZmZlciA6IEludmFsaWRCdWZmZXIsCisJCQkJCQkJCQkgICB2aXN0 ZXN0LCBvcHRpb25zLAorCQkJCQkJCQkJICAgTlVMTCwgJnByZXN1bHQsIFBSVU5FX09OX0FDQ0VT UywKKwkJCQkJCQkJCSAgICZkdW1teV9vZmZfbG9jLCBOVUxMLCBOVUxMKTsKIAogCQkJLyoKIAkJ CSAqIFJlcG9ydCB0aGUgbnVtYmVyIG9mIHR1cGxlcyByZWNsYWltZWQgdG8gcGdzdGF0cy4gIFRo aXMgaXMKQEAgLTUxOSwxMiArNTMxLDE3IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJl bGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCSAqIGFsbC1mcm96ZW4gZm9yIHVzZSBp biBvcHBvcnR1bmlzdGljIGZyZWV6aW5nIGFuZCB0byB1cGRhdGUgdGhlIFZNIGlmCiAJICogdGhl IGNhbGxlciByZXF1ZXN0cyBpdC4KIAkgKgotCSAqIEN1cnJlbnRseSwgb25seSBWQUNVVU0gYXR0 ZW1wdHMgZnJlZXppbmcgYW5kIHNldHRpbmcgdGhlIFZNIGJpdHMuIEJ1dAotCSAqIG90aGVyIGNh bGxlcnMgY291bGQgZG8gZWl0aGVyIG9uZS4gVGhlIHZpc2liaWxpdHkgYm9va2tlZXBpbmcgaXMK LQkgKiByZXF1aXJlZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4gYWRkaXRpb24gdG8g c2V0dGluZyB0aGUgVk0KLQkgKiBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIgb3Bwb3J0 dW5pc3RpY2FsbHkgZnJlZXppbmcgdHVwbGVzIGlmIHRoZQotCSAqIHdob2xlIHBhZ2Ugd291bGQg YmVjb21lIGFsbC1mcm96ZW4gb3IgaWYgdGhlIHdob2xlIHBhZ2Ugd2lsbCBiZSBmcm96ZW4KLQkg KiBleGNlcHQgZm9yIGRlYWQgdHVwbGVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGJ5IHZhY3V1bS4K KwkgKiBDdXJyZW50bHksIG9ubHkgVkFDVVVNIGF0dGVtcHRzIGZyZWV6aW5nLiBCdXQgb3RoZXIg Y2FsbGVycyBjb3VsZC4gVGhlCisJICogdmlzaWJpbGl0eSBib29ra2VlcGluZyBpcyByZXF1aXJl ZCBmb3Igb3Bwb3J0dW5pc3RpYyBmcmVlemluZyAoaW4KKwkgKiBhZGRpdGlvbiB0byBzZXR0aW5n IHRoZSBWTSBiaXRzKSBiZWNhdXNlIHdlIG9ubHkgY29uc2lkZXIKKwkgKiBvcHBvcnR1bmlzdGlj YWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlIHdob2xlIHBhZ2Ugd291bGQgYmVjb21lCisJICog YWxsLWZyb3plbiBvciBpZiB0aGUgd2hvbGUgcGFnZSB3aWxsIGJlIGZyb3plbiBleGNlcHQgZm9y IGRlYWQgdHVwbGVzCisJICogdGhhdCB3aWxsIGJlIHJlbW92ZWQgYnkgdmFjdXVtLiBCdXQgaWYg Y29uc2lkZXJfdXBkYXRlX3ZtIGlzIGZhbHNlLAorCSAqIHdlJ2xsIG5vdCBzZXQgdGhlIFZNIGV2 ZW4gaWYgdGhlIHBhZ2UgaXMgZGlzY292ZXJlZCB0byBiZSBhbGwtdmlzaWJsZS4KKwkgKgorCSAq IElmIG9ubHkgSEVBUF9QQUdFX1BSVU5FX1VQREFURV9WTSBpcyBwYXNzZWQgYW5kIG5vdAorCSAq IEhFQVBfUEFHRV9QUlVORV9GUkVFWkUsIHByc3RhdGUuYWxsX2Zyb3plbiBtdXN0IGJlIGluaXRp YWxpemVkIHRvIGZhbHNlCisJICogYmVjYXVzZSB3ZSB3aWxsIG5vdCBjYWxsIGhlYXBfcHJlcGFy ZV9mcmVlemVfdHVwbGUoKSBvbiBlYWNoIHR1cGxlLgogCSAqCiAJICogSWYgb25seSB1cGRhdGlu ZyB0aGUgVk0sIHdlIG11c3QgaW5pdGlhbGl6ZSBhbGxfZnJvemVuIHRvIGZhbHNlLCBhcwogCSAq IGhlYXBfcHJlcGFyZV9mcmVlemVfdHVwbGUoKSB3aWxsIG5vdCBiZSBjYWxsZWQgZm9yIGVhY2gg dHVwbGUgb24gdGhlCkBAIC01MzYsNyArNTUzLDcgQEAgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAJICogd2hldGhlciBvciBub3Qg dG8gZnJlZXplIGJ1dCBiZWZvcmUgZGVjaWRpbmcgd2hldGhlciBvciBub3QgdG8gdXBkYXRlCiAJ ICogdGhlIFZNIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0IHRoZSBWTSBiaXQgaW5jb3JyZWN0bHkuCiAJ ICoKLQkgKiBJZiBub3QgZnJlZXppbmcgb3IgdXBkYXRpbmcgdGhlIFZNLCB3ZSBvdGhlcndpc2Ug YXZvaWQgdGhlIGV4dHJhCisJICogSWYgbm90IGZyZWV6aW5nIGFuZCBub3QgdXBkYXRpbmcgdGhl IFZNLCB3ZSBhdm9pZCB0aGUgZXh0cmEKIAkgKiBib29ra2VlcGluZy4gSW5pdGlhbGl6aW5nIGFs bF92aXNpYmxlIHRvIGZhbHNlIGFsbG93cyBza2lwcGluZyB0aGUgd29yawogCSAqIHRvIHVwZGF0 ZSB0aGVtIGluIGhlYXBfcHJ1bmVfcmVjb3JkX3VuY2hhbmdlZF9scF9ub3JtYWwoKS4KIAkgKi8K QEAgLTg4NSwxMiArOTAyLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxzZTsK IAl9CiAKKwkvKgorCSAqIElmIHRoaXMgaXMgYW4gb24tYWNjZXNzIGNhbGwgYW5kIHdlJ3JlIG5v dCBhY3R1YWxseSBwcnVuaW5nLCBhdm9pZAorCSAqIHNldHRpbmcgdGhlIHZpc2liaWxpdHkgbWFw IGlmIGl0IHdvdWxkIG5ld2x5IGRpcnR5IHRoZSBoZWFwIHBhZ2Ugb3IsIGlmCisJICogdGhlIHBh Z2UgaXMgYWxyZWFkeSBkaXJ0eSwgaWYgZG9pbmcgc28gd291bGQgcmVxdWlyZSBpbmNsdWRpbmcg YQorCSAqIGZ1bGwtcGFnZSBpbWFnZSAoRlBJKSBvZiB0aGUgaGVhcCBwYWdlIGluIHRoZSBXQUwu IFRoaXMgc2l0dWF0aW9uCisJICogc2hvdWxkIGJlIHJhcmUsIGFzIG9uLWFjY2VzcyBwcnVuaW5n IGlzIG9ubHkgYXR0ZW1wdGVkIHdoZW4KKwkgKiBwZF9wcnVuZV94aWQgaXMgdmFsaWQuCisJICov CisJaWYgKHJlYXNvbiA9PSBQUlVORV9PTl9BQ0NFU1MgJiYKKwkJcHJzdGF0ZS5jb25zaWRlcl91 cGRhdGVfdm0gJiYKKwkJcHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgorCQkhZG9fcHJ1bmUgJiYgIWRv X2ZyZWV6ZSAmJgorCQkoIUJ1ZmZlcklzRGlydHkoYnVmZmVyKSB8fCBYTG9nQ2hlY2tCdWZmZXJO ZWVkc0JhY2t1cChidWZmZXIpKSkKKwl7CisJCXByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtID0g ZmFsc2U7CisJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKKwl9CisKIAlBc3NlcnQoIXByc3RhdGUuYWxsX2Zyb3plbiB8fCBwcnN0YXRlLmFsbF92aXNp YmxlKTsKIAogCS8qCi0JICogSGFuZGxlIHNldHRpbmcgdmlzaWJpbGl0eSBtYXAgYml0IGJhc2Vk IG9uIGluZm9ybWF0aW9uIGZyb20gdGhlIFZNIChhcwotCSAqIG9mIGxhc3QgaGVhcF92YWNfc2Nh bl9uZXh0X2Jsb2NrKCkgY2FsbCksIGFuZCBmcm9tIGFsbF92aXNpYmxlIGFuZAotCSAqIGFsbF9m cm96ZW4gdmFyaWFibGVzLgorCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkgbWFwIGJpdCBi YXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKKwkgKiBwcm92aWRlZCwgZS5nLiBi eSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2soKQorCSAqIGNh bGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJsZXMuCiAJICov CiAJaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQogCXsKQEAgLTIyODQsOCArMjMxOSw4 IEBAIGhlYXBfbG9nX2ZyZWV6ZV9wbGFuKEhlYXBUdXBsZUZyZWV6ZSAqdHVwbGVzLCBpbnQgbnR1 cGxlcywKICAqIC0gUmVhcGluZzogRHVyaW5nIHZhY3V1bSBwaGFzZSBJSUksIGl0ZW1zIHRoYXQg YXJlIGFscmVhZHkgTFBfREVBRCBhcmUKICAqICAgbWFya2VkIGFzIHVudXNlZC4KICAqCi0gKiAt IFZNIHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJLCB0aGUgaGVhcCBwYWdl IG1heSBiZSBtYXJrZWQKLSAqICAgYWxsLXZpc2libGUgYW5kIGFsbC1mcm96ZW4uCisgKiAtIFZN IHVwZGF0ZXM6IEFmdGVyIHZhY3V1bSBwaGFzZXMgSSBhbmQgSUlJIGFuZCBvbi1hY2Nlc3MsIHRo ZSBoZWFwIHBhZ2UKKyAqICAgbWF5IGJlIG1hcmtlZCBhbGwtdmlzaWJsZSBhbmQgYWxsLWZyb3pl bi4KICAqCiAgKiBUaGVzZSBjaGFuZ2VzIGFsbCBoYXBwZW4gdG9nZXRoZXIsIHNvIHdlIHVzZSBh IHNpbmdsZSBXQUwgcmVjb3JkIGZvciB0aGVtCiAgKiBhbGwuCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9hY2Nlc3MvaW5kZXgvaW5kZXhhbS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2luZGV4L2lu ZGV4YW0uYwppbmRleCA4NmQxMWY0ZWM3OS4uNDYwM2VjZTA5YmQgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2FjY2Vzcy9pbmRleC9pbmRleGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2lu ZGV4L2luZGV4YW0uYwpAQCAtMjg5LDYgKzI4OSwzMiBAQCBpbmRleF9iZWdpbnNjYW4oUmVsYXRp b24gaGVhcFJlbGF0aW9uLAogCXJldHVybiBzY2FuOwogfQogCisvKgorICogU2ltaWxhciB0byBp bmRleF9iZWdpbnNjYW4oKSwgYnV0IGFsbG93cyB0aGUgY2FsbGVyIHRvIGluZGljYXRlIHdoZXRo ZXIgdGhlCisgKiBxdWVyeSBtb2RpZmllcyB0aGUgdW5kZXJseWluZyBiYXNlIHJlbGF0aW9uLiBU aGlzIGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyCisgKiB3YW50cyB0byBhdHRlbXB0IG1hcmtpbmcg cGFnZXMgaW4gdGhlIGJhc2UgcmVsYXRpb24gYXMgYWxsLXZpc2libGUgaW4gdGhlCisgKiB2aXNp YmlsaXR5IG1hcCBkdXJpbmcgb24tYWNjZXNzIHBydW5pbmcuCisgKi8KK0luZGV4U2NhbkRlc2MK K2luZGV4X2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiBoZWFwUmVsYXRpb24sCisJCQkJCSAgUmVs YXRpb24gaW5kZXhSZWxhdGlvbiwKKwkJCQkJICBTbmFwc2hvdCBzbmFwc2hvdCwKKwkJCQkJICBJ bmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCSAgaW50IG5rZXlzLCBp bnQgbm9yZGVyYnlzLCBib29sIG1vZGlmaWVzX2Jhc2VfcmVsKQoreworCUluZGV4U2NhbkRlc2Mg c2NhbjsKKworCXNjYW4gPSBpbmRleF9iZWdpbnNjYW4oaGVhcFJlbGF0aW9uLAorCQkJCQkJICAg aW5kZXhSZWxhdGlvbiwKKwkJCQkJCSAgIHNuYXBzaG90LAorCQkJCQkJICAgaW5zdHJ1bWVudCwK KwkJCQkJCSAgIG5rZXlzLCBub3JkZXJieXMpOworCisJc2Nhbi0+eHNfaGVhcGZldGNoLT5tb2Rp Zmllc19iYXNlX3JlbCA9IG1vZGlmaWVzX2Jhc2VfcmVsOworCisJcmV0dXJuIHNjYW47Cit9CisK IC8qCiAgKiBpbmRleF9iZWdpbnNjYW5fYml0bWFwIC0gc3RhcnQgYSBzY2FuIG9mIGFuIGluZGV4 IHdpdGggYW1nZXRiaXRtYXAKICAqCkBAIC02MjAsNiArNjQ2LDI2IEBAIGluZGV4X2JlZ2luc2Nh bl9wYXJhbGxlbChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKIAlyZXR1cm4g c2NhbjsKIH0KIAorLyoKKyAqIFBhcmFsbGVsIHZlcnNpb24gb2YgaW5kZXhfYmVnaW5zY2FuX3Zt c2V0KCkKKyAqLworSW5kZXhTY2FuRGVzYworaW5kZXhfYmVnaW5zY2FuX3BhcmFsbGVsX3Ztc2V0 KFJlbGF0aW9uIGhlYXByZWwsIFJlbGF0aW9uIGluZGV4cmVsLAorCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkgICBpbnQgbmtleXMsIGludCBu b3JkZXJieXMsCisJCQkJCQkJICAgUGFyYWxsZWxJbmRleFNjYW5EZXNjIHBzY2FuLAorCQkJCQkJ CSAgIGJvb2wgbW9kaWZpZXNfYmFzZV9yZWwpCit7CisJSW5kZXhTY2FuRGVzYyBzY2FuOworCisJ c2NhbiA9IGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxlbChoZWFwcmVsLCBpbmRleHJlbCwKKwkJCQkJ CQkJCWluc3RydW1lbnQsCisJCQkJCQkJCQlua2V5cywgbm9yZGVyYnlzLAorCQkJCQkJCQkJcHNj YW4pOworCXNjYW4tPnhzX2hlYXBmZXRjaC0+bW9kaWZpZXNfYmFzZV9yZWwgPSBtb2RpZmllc19i YXNlX3JlbDsKKwlyZXR1cm4gc2NhbjsKK30KKwogLyogLS0tLS0tLS0tLS0tLS0tLQogICogaW5k ZXhfZ2V0bmV4dF90aWQgLSBnZXQgdGhlIG5leHQgVElEIGZyb20gYSBzY2FuCiAgKgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0uYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggYTU2YzVlY2ViMTQuLjY3ZGJmOTlmNWI1IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVhbS5jCisrKyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTQ5LDYgKzQ5LDEwIEBACiBjaGFyCSAgICpk ZWZhdWx0X3RhYmxlX2FjY2Vzc19tZXRob2QgPSBERUZBVUxUX1RBQkxFX0FDQ0VTU19NRVRIT0Q7 CiBib29sCQlzeW5jaHJvbml6ZV9zZXFzY2FucyA9IHRydWU7CiAKKy8qIEhlbHBlciBmb3IgdGFi bGVfYmVnaW5zY2FuX3BhcmFsbGVsKCkgYW5kIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNl dCgpICovCitzdGF0aWMgVGFibGVTY2FuRGVzYyB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWxfY29t bW9uKFJlbGF0aW9uIHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4sCisJCQkJ CQkJCQkJCQkJIHVpbnQzMiBmbGFncyk7CisKIAogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICog U2xvdCBmdW5jdGlvbnMuCkBAIC0xNjIsMTIgKzE2NiwxNCBAQCB0YWJsZV9wYXJhbGxlbHNjYW5f aW5pdGlhbGl6ZShSZWxhdGlvbiByZWwsIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbiwKIAl9 CiB9CiAKLVRhYmxlU2NhbkRlc2MKLXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiBy ZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuKQorLyoKKyAqIENvbW1vbiBoZWxw ZXIgZm9yIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbCgpIGFuZCB0YWJsZV9iZWdpbnNjYW5fcGFy YWxsZWxfdm1zZXQoKQorICovCitzdGF0aWMgVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX2NvbW1vbihSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJsZVNjYW5EZXNj IHBzY2FuLAorCQkJCQkJCQl1aW50MzIgZmxhZ3MpCiB7CiAJU25hcHNob3QJc25hcHNob3Q7Ci0J dWludDMyCQlmbGFncyA9IFNPX1RZUEVfU0VRU0NBTiB8Ci0JCVNPX0FMTE9XX1NUUkFUIHwgU09f QUxMT1dfU1lOQyB8IFNPX0FMTE9XX1BBR0VNT0RFOwogCiAJQXNzZXJ0KFJlbEZpbGVMb2NhdG9y RXF1YWxzKHJlbGF0aW9uLT5yZF9sb2NhdG9yLCBwc2Nhbi0+cGhzX2xvY2F0b3IpKTsKIApAQCAt MTg4LDYgKzE5NCwzMSBAQCB0YWJsZV9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gcmVsYXRp b24sIFBhcmFsbGVsVGFibGVTY2FuRGVzYyBwc2NhbikKIAkJCQkJCQkJCQkJcHNjYW4sIGZsYWdz KTsKIH0KIAorVGFibGVTY2FuRGVzYwordGFibGVfYmVnaW5zY2FuX3BhcmFsbGVsKFJlbGF0aW9u IHJlbGF0aW9uLCBQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pCit7CisJdWludDMyCQlmbGFn cyA9IFNPX1RZUEVfU0VRU0NBTiB8CisJCVNPX0FMTE9XX1NUUkFUIHwgU09fQUxMT1dfU1lOQyB8 IFNPX0FMTE9XX1BBR0VNT0RFOworCisJcmV0dXJuIHRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxlbF9j b21tb24ocmVsYXRpb24sIHBzY2FuLCBmbGFncyk7Cit9CisKKy8qCisgKiBQYXJhbGxlbCB2ZXJz aW9uIG9mIHRhYmxlX2JlZ2luc2Nhbl92bXNldCgpCisgKi8KK1RhYmxlU2NhbkRlc2MKK3RhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChSZWxhdGlvbiByZWxhdGlvbiwgUGFyYWxsZWxUYWJs ZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCSAgIGJvb2wgbW9kaWZpZXNfcmVsKQoreworCXVpbnQz MgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19BTExPV19TVFJBVCB8IFNPX0FMTE9X X1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICghbW9kaWZpZXNfcmVsKQorCQlmbGFn cyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gdGFibGVfYmVnaW5zY2FuX3BhcmFsbGVs X2NvbW1vbihyZWxhdGlvbiwgcHNjYW4sIGZsYWdzKTsKK30KKwogCiAvKiAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgKiBJbmRleCBzY2FuIHJlbGF0ZWQgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKaW5kZXggZmYxMmUyZTEzNjQuLjJlMDQ3NGM5NDhhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjTWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNN YWluLmMKQEAgLTkxNiw2ICs5MTYsMTAgQEAgSW5pdFBsYW4oUXVlcnlEZXNjICpxdWVyeURlc2Ms IGludCBlZmxhZ3MpCiAJCQkJCWJyZWFrOwogCQkJfQogCisJCQkvKiBJZiBpdCBoYXMgYSByb3dt YXJrLCB0aGUgcmVsYXRpb24gaXMgbW9kaWZpZWQgKi8KKwkJCWVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzID0gYm1zX2FkZF9tZW1iZXIoZXN0YXRlLT5lc19tb2RpZmllZF9yZWxpZHMsCisJCQkJ CQkJCQkJCQkJCXJjLT5ydGkpOworCiAJCQkvKiBDaGVjayB0aGF0IHJlbGF0aW9uIGlzIGEgbGVn YWwgdGFyZ2V0IGZvciBtYXJraW5nICovCiAJCQlpZiAocmVsYXRpb24pCiAJCQkJQ2hlY2tWYWxp ZFJvd01hcmtSZWwocmVsYXRpb24sIHJjLT5tYXJrVHlwZSk7CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9leGVjVXRpbHMuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNVdGls cy5jCmluZGV4IGZkYzY1YzJiNDJiLi4yOGEwNmRjZDI0NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvZXhlY3V0b3IvZXhlY1V0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1V0 aWxzLmMKQEAgLTg5Myw2ICs4OTMsOCBAQCBFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKEVTdGF0ZSAq ZXN0YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAogCQllc3RhdGUtPmVzX3Jlc3Vs dF9yZWxhdGlvbnMgPSAoUmVzdWx0UmVsSW5mbyAqKikKIAkJCXBhbGxvYzAoZXN0YXRlLT5lc19y YW5nZV90YWJsZV9zaXplICogc2l6ZW9mKFJlc3VsdFJlbEluZm8gKikpOwogCWVzdGF0ZS0+ZXNf cmVzdWx0X3JlbGF0aW9uc1tydGkgLSAxXSA9IHJlc3VsdFJlbEluZm87CisJZXN0YXRlLT5lc19t b2RpZmllZF9yZWxpZHMgPSBibXNfYWRkX21lbWJlcihlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlk cywKKwkJCQkJCQkJCQkJCXJ0aSk7CiAKIAkvKgogCSAqIFNhdmluZyBpbiB0aGUgbGlzdCBhbGxv d3MgdG8gYXZvaWQgbmVlZGxlc3NseSB0cmF2ZXJzaW5nIHRoZSB3aG9sZQpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUJpdG1hcEhlYXBzY2FuLmMgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlQml0bWFwSGVhcHNjYW4uYwppbmRleCBiZjI0ZjNkN2ZlMC4uYWY2ZGI5Zjc5 MTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5j CisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVCaXRtYXBIZWFwc2Nhbi5jCkBAIC0xMDUs MTEgKzEwNSwxNiBAQCBCaXRtYXBUYWJsZVNjYW5TZXR1cChCaXRtYXBIZWFwU2NhblN0YXRlICpu b2RlKQogCSAqLwogCWlmICghbm9kZS0+c3Muc3NfY3VycmVudFNjYW5EZXNjKQogCXsKKwkJYm9v bAkJbW9kaWZpZXNfcmVsID0KKwkJCWJtc19pc19tZW1iZXIoKChTY2FuICopIG5vZGUtPnNzLnBz LnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCQkgIG5vZGUtPnNzLnBzLnN0YXRlLT5lc19tb2RpZmll ZF9yZWxpZHMpOworCiAJCW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9CiAJCQl0YWJsZV9i ZWdpbnNjYW5fYm0obm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAogCQkJCQkJCSAgIG5vZGUt PnNzLnBzLnN0YXRlLT5lc19zbmFwc2hvdCwKIAkJCQkJCQkgICAwLAotCQkJCQkJCSAgIE5VTEwp OworCQkJCQkJCSAgIE5VTEwsCisJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIAl9CiAKIAlub2Rl LT5zcy5zc19jdXJyZW50U2NhbkRlc2MtPnN0LnJzX3RibWl0ZXJhdG9yID0gdGJtaXRlcmF0b3I7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMgYi9zcmMv YmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMKaW5kZXggN2ZjYWEzN2ZlNjIuLmMyZmZi ZDNiMDhlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlSW5kZXhzY2FuLmMK KysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUluZGV4c2Nhbi5jCkBAIC0xMDIsMTYgKzEw MiwyMiBAQCBJbmRleE5leHQoSW5kZXhTY2FuU3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2Mg PT0gTlVMTCkKIAl7CisKKwkJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWwgPQorCQkJYm1zX2lzX21l bWJlcigoKFNjYW4gKikgbm9kZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCSAgZXN0 YXRlLT5lc19tb2RpZmllZF9yZWxpZHMpOworCiAJCS8qCiAJCSAqIFdlIHJlYWNoIGhlcmUgaWYg dGhlIGluZGV4IHNjYW4gaXMgbm90IHBhcmFsbGVsLCBvciBpZiB3ZSdyZQogCQkgKiBzZXJpYWxs eSBleGVjdXRpbmcgYW4gaW5kZXggc2NhbiB0aGF0IHdhcyBwbGFubmVkIHRvIGJlIHBhcmFsbGVs LgogCQkgKi8KLQkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW4obm9kZS0+c3Muc3NfY3VycmVu dFJlbGF0aW9uLAotCQkJCQkJCQkgICBub2RlLT5pc3NfUmVsYXRpb25EZXNjLAotCQkJCQkJCQkg ICBlc3RhdGUtPmVzX3NuYXBzaG90LAotCQkJCQkJCQkgICAmbm9kZS0+aXNzX0luc3RydW1lbnQs Ci0JCQkJCQkJCSAgIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKLQkJCQkJCQkJICAgbm9kZS0+aXNz X051bU9yZGVyQnlLZXlzKTsKKwkJc2NhbmRlc2MgPSBpbmRleF9iZWdpbnNjYW5fdm1zZXQobm9k ZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLAorCQkJCQkJCQkJCSBub2RlLT5pc3NfUmVsYXRpb25E ZXNjLAorCQkJCQkJCQkJCSBlc3RhdGUtPmVzX3NuYXBzaG90LAorCQkJCQkJCQkJCSAmbm9kZS0+ aXNzX0luc3RydW1lbnQsCisJCQkJCQkJCQkJIG5vZGUtPmlzc19OdW1TY2FuS2V5cywKKwkJCQkJ CQkJCQkgbm9kZS0+aXNzX051bU9yZGVyQnlLZXlzLAorCQkJCQkJCQkJCSBtb2RpZmllc19iYXNl X3JlbCk7CiAKIAkJbm9kZS0+aXNzX1NjYW5EZXNjID0gc2NhbmRlc2M7CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVTZXFzY2FuLmMgYi9zcmMvYmFja2VuZC9leGVjdXRv ci9ub2RlU2Vxc2Nhbi5jCmluZGV4IDk0MDQ3ZDI5NDMwLi5mZDY5Mjc1YzE4MSAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZVNlcXNjYW4uYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlU2Vxc2Nhbi5jCkBAIC02NSwxMyArNjUsMTggQEAgU2VxTmV4dChTZXFTY2Fu U3RhdGUgKm5vZGUpCiAKIAlpZiAoc2NhbmRlc2MgPT0gTlVMTCkKIAl7CisJCWJvb2wJCW1vZGlm aWVzX3JlbCA9CisJCQlibXNfaXNfbWVtYmVyKCgoU2NhbiAqKSBub2RlLT5zcy5wcy5wbGFuKS0+ c2NhbnJlbGlkLAorCQkJCQkJICBlc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CisKIAkJLyoK IAkJICogV2UgcmVhY2ggaGVyZSBpZiB0aGUgc2NhbiBpcyBub3QgcGFyYWxsZWwsIG9yIGlmIHdl J3JlIHNlcmlhbGx5CiAJCSAqIGV4ZWN1dGluZyBhIHNjYW4gdGhhdCB3YXMgcGxhbm5lZCB0byBi ZSBwYXJhbGxlbC4KIAkJICovCi0JCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuKG5vZGUtPnNz LnNzX2N1cnJlbnRSZWxhdGlvbiwKLQkJCQkJCQkJICAgZXN0YXRlLT5lc19zbmFwc2hvdCwKLQkJ CQkJCQkJICAgMCwgTlVMTCk7CisJCXNjYW5kZXNjID0gdGFibGVfYmVnaW5zY2FuX3Ztc2V0KG5v ZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCQkgZXN0YXRlLT5lc19zbmFwc2hv dCwKKwkJCQkJCQkJCQkgMCwgTlVMTCwgbW9kaWZpZXNfcmVsKTsKKwogCQlub2RlLT5zcy5zc19j dXJyZW50U2NhbkRlc2MgPSBzY2FuZGVzYzsKIAl9CiAKQEAgLTM2Niw2ICszNzEsNyBAQCBFeGVj U2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRlICpub2RlLAogCQkJCQkJIFBhcmFsbGVs Q29udGV4dCAqcGN4dCkKIHsKIAlFU3RhdGUJICAgKmVzdGF0ZSA9IG5vZGUtPnNzLnBzLnN0YXRl OworCWJvb2wJCW1vZGlmaWVzX3JlbDsKIAlQYXJhbGxlbFRhYmxlU2NhbkRlc2MgcHNjYW47CiAK IAlwc2NhbiA9IHNobV90b2NfYWxsb2NhdGUocGN4dC0+dG9jLCBub2RlLT5wc2Nhbl9sZW4pOwpA QCAtMzczLDggKzM3OSwxMSBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVEU00oU2VxU2NhblN0YXRl ICpub2RlLAogCQkJCQkJCQkgIHBzY2FuLAogCQkJCQkJCQkgIGVzdGF0ZS0+ZXNfc25hcHNob3Qp OwogCXNobV90b2NfaW5zZXJ0KHBjeHQtPnRvYywgbm9kZS0+c3MucHMucGxhbi0+cGxhbl9ub2Rl X2lkLCBwc2Nhbik7CisJbW9kaWZpZXNfcmVsID0gYm1zX2lzX21lbWJlcigoKFNjYW4gKikgbm9k ZS0+c3MucHMucGxhbiktPnNjYW5yZWxpZCwKKwkJCQkJCQkJIGVzdGF0ZS0+ZXNfbW9kaWZpZWRf cmVsaWRzKTsKIAlub2RlLT5zcy5zc19jdXJyZW50U2NhbkRlc2MgPQotCQl0YWJsZV9iZWdpbnNj YW5fcGFyYWxsZWwobm9kZS0+c3Muc3NfY3VycmVudFJlbGF0aW9uLCBwc2Nhbik7CisJCXRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbF92bXNldChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBz Y2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KIAogLyogLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDA0 LDggKzQxMywxMyBAQCBFeGVjU2VxU2NhbkluaXRpYWxpemVXb3JrZXIoU2VxU2NhblN0YXRlICpu b2RlLAogCQkJCQkJCVBhcmFsbGVsV29ya2VyQ29udGV4dCAqcHdjeHQpCiB7CiAJUGFyYWxsZWxU YWJsZVNjYW5EZXNjIHBzY2FuOworCWJvb2wJCW1vZGlmaWVzX3JlbCA9CisJCWJtc19pc19tZW1i ZXIoKChTY2FuICopIG5vZGUtPnNzLnBzLnBsYW4pLT5zY2FucmVsaWQsCisJCQkJCSAgbm9kZS0+ c3MucHMuc3RhdGUtPmVzX21vZGlmaWVkX3JlbGlkcyk7CiAKIAlwc2NhbiA9IHNobV90b2NfbG9v a3VwKHB3Y3h0LT50b2MsIG5vZGUtPnNzLnBzLnBsYW4tPnBsYW5fbm9kZV9pZCwgZmFsc2UpOwog CW5vZGUtPnNzLnNzX2N1cnJlbnRTY2FuRGVzYyA9Ci0JCXRhYmxlX2JlZ2luc2Nhbl9wYXJhbGxl bChub2RlLT5zcy5zc19jdXJyZW50UmVsYXRpb24sIHBzY2FuKTsKKwkJdGFibGVfYmVnaW5zY2Fu X3BhcmFsbGVsX3Ztc2V0KG5vZGUtPnNzLnNzX2N1cnJlbnRSZWxhdGlvbiwKKwkJCQkJCQkJCSAg IHBzY2FuLAorCQkJCQkJCQkJICAgbW9kaWZpZXNfcmVsKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL2FjY2Vzcy9nZW5hbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmgKaW5kZXgg NWIyYWIxODFiNWYuLmJmMjcyYzJjMzdmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mv Z2VuYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvZ2VuYW0uaApAQCAtMTgwLDYgKzE4MCwx MSBAQCBleHRlcm4gSW5kZXhTY2FuRGVzYyBpbmRleF9iZWdpbnNjYW4oUmVsYXRpb24gaGVhcFJl bGF0aW9uLAogCQkJCQkJCQkJIFNuYXBzaG90IHNuYXBzaG90LAogCQkJCQkJCQkJIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKIAkJCQkJCQkJCSBpbnQgbmtleXMsIGludCBu b3JkZXJieXMpOworZXh0ZXJuIEluZGV4U2NhbkRlc2MgaW5kZXhfYmVnaW5zY2FuX3Ztc2V0KFJl bGF0aW9uIGhlYXBSZWxhdGlvbiwKKwkJCQkJCQkJCQkgICBSZWxhdGlvbiBpbmRleFJlbGF0aW9u LAorCQkJCQkJCQkJCSAgIFNuYXBzaG90IHNuYXBzaG90LAorCQkJCQkJCQkJCSAgIEluZGV4U2Nh bkluc3RydW1lbnRhdGlvbiAqaW5zdHJ1bWVudCwKKwkJCQkJCQkJCQkgICBpbnQgbmtleXMsIGlu dCBub3JkZXJieXMsIGJvb2wgbW9kaWZpZXNfaGVhcF9yZWwpOwogZXh0ZXJuIEluZGV4U2NhbkRl c2MgaW5kZXhfYmVnaW5zY2FuX2JpdG1hcChSZWxhdGlvbiBpbmRleFJlbGF0aW9uLAogCQkJCQkJ CQkJCQlTbmFwc2hvdCBzbmFwc2hvdCwKIAkJCQkJCQkJCQkJSW5kZXhTY2FuSW5zdHJ1bWVudGF0 aW9uICppbnN0cnVtZW50LApAQCAtMjA2LDYgKzIxMSwxMiBAQCBleHRlcm4gSW5kZXhTY2FuRGVz YyBpbmRleF9iZWdpbnNjYW5fcGFyYWxsZWwoUmVsYXRpb24gaGVhcHJlbCwKIAkJCQkJCQkJCQkJ ICBJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCiAJCQkJCQkJCQkJCSAgaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAogCQkJCQkJCQkJCQkgIFBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2Nhbik7CisKK2V4dGVybiBJbmRleFNjYW5EZXNjIGluZGV4X2JlZ2luc2Nhbl9wYXJhbGxl bF92bXNldChSZWxhdGlvbiBoZWFwcmVsLCBSZWxhdGlvbiBpbmRleHJlbCwKKwkJCQkJCQkJCQkJ CQlJbmRleFNjYW5JbnN0cnVtZW50YXRpb24gKmluc3RydW1lbnQsCisJCQkJCQkJCQkJCQkJaW50 IG5rZXlzLCBpbnQgbm9yZGVyYnlzLAorCQkJCQkJCQkJCQkJCVBhcmFsbGVsSW5kZXhTY2FuRGVz YyBwc2NhbiwKKwkJCQkJCQkJCQkJCQlib29sIG1vZGlmaWVzX3JlbCk7CiBleHRlcm4gSXRlbVBv aW50ZXIgaW5kZXhfZ2V0bmV4dF90aWQoSW5kZXhTY2FuRGVzYyBzY2FuLAogCQkJCQkJCQkJIFNj YW5EaXJlY3Rpb24gZGlyZWN0aW9uKTsKIHN0cnVjdCBUdXBsZVRhYmxlU2xvdDsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFw YW0uaAppbmRleCBmY2Q4ODJjYjAzYi4uMjIxMGE1ZTBhNzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL2FjY2Vzcy9oZWFwYW0uaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvaGVhcGFtLmgKQEAg LTk0LDYgKzk0LDEzIEBAIHR5cGVkZWYgc3RydWN0IEhlYXBTY2FuRGVzY0RhdGEKIAkgKi8KIAlQ YXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqcnNfcGFyYWxsZWx3b3JrZXJkYXRhOwog CisJLyoKKwkgKiBGb3Igc2VxdWVudGlhbCBzY2FucyBhbmQgYml0bWFwIGhlYXAgc2NhbnMuIElm IHRoZSByZWxhdGlvbiBpcyBub3QKKwkgKiBiZWluZyBtb2RpZmllZCwgb24tYWNjZXNzIHBydW5p bmcgbWF5IHJlYWQgaW4gdGhlIGN1cnJlbnQgaGVhcCBwYWdlJ3MKKwkgKiBjb3JyZXNwb25kaW5n IFZNIGJsb2NrIHRvIHRoaXMgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJcnNfdm1idWZmZXI7CisK IAkvKiB0aGVzZSBmaWVsZHMgb25seSB1c2VkIGluIHBhZ2UtYXQtYS10aW1lIG1vZGUgYW5kIGZv ciBiaXRtYXAgc2NhbnMgKi8KIAl1aW50MzIJCXJzX2NpbmRleDsJCS8qIGN1cnJlbnQgdHVwbGUn cyBpbmRleCBpbiB2aXN0dXBsZXMgKi8KIAl1aW50MzIJCXJzX250dXBsZXM7CQkvKiBudW1iZXIg b2YgdmlzaWJsZSB0dXBsZXMgb24gcGFnZSAqLwpAQCAtMTE2LDggKzEyMywxOCBAQCB0eXBlZGVm IHN0cnVjdCBJbmRleEZldGNoSGVhcERhdGEKIHsKIAlJbmRleEZldGNoVGFibGVEYXRhIHhzX2Jh c2U7CS8qIEFNIGluZGVwZW5kZW50IHBhcnQgb2YgdGhlIGRlc2NyaXB0b3IgKi8KIAotCUJ1ZmZl cgkJeHNfY2J1ZjsJCS8qIGN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYgYW55ICovCi0J LyogTkI6IGlmIHhzX2NidWYgaXMgbm90IEludmFsaWRCdWZmZXIsIHdlIGhvbGQgYSBwaW4gb24g dGhhdCBidWZmZXIgKi8KKwkvKgorCSAqIEN1cnJlbnQgaGVhcCBidWZmZXIgaW4gc2NhbiwgaWYg YW55LiBOQjogaWYgeHNfY2J1ZiBpcyBub3QKKwkgKiBJbnZhbGlkQnVmZmVyLCB3ZSBob2xkIGEg cGluIG9uIHRoYXQgYnVmZmVyLgorCSAqLworCUJ1ZmZlcgkJeHNfY2J1ZjsKKworCS8qCisJICog Rm9yIGluZGV4IHNjYW5zIHRoYXQgZG8gbm90IG1vZGlmeSB0aGUgdW5kZXJseWluZyBoZWFwIHRh YmxlLCBvbi1hY2Nlc3MKKwkgKiBwcnVuaW5nIG1heSByZWFkIGluIHRoZSBjdXJyZW50IGhlYXAg cGFnZSdzIGNvcnJlc3BvbmRpbmcgVk0gYmxvY2sgdG8KKwkgKiB0aGlzIGJ1ZmZlci4KKwkgKi8K KwlCdWZmZXIJCXhzX3ZtYnVmZmVyOwogfSBJbmRleEZldGNoSGVhcERhdGE7CiAKIC8qIFJlc3Vs dCBjb2RlcyBmb3IgSGVhcFR1cGxlU2F0aXNmaWVzVmFjdXVtICovCkBAIC0zNzQsNyArMzkxLDgg QEAgZXh0ZXJuIFRyYW5zYWN0aW9uSWQgaGVhcF9pbmRleF9kZWxldGVfdHVwbGVzKFJlbGF0aW9u IHJlbCwKIAogLyogaW4gaGVhcC9wcnVuZWhlYXAuYyAqLwogc3RydWN0IEdsb2JhbFZpc1N0YXRl OwotZXh0ZXJuIHZvaWQgaGVhcF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVm ZmVyIGJ1ZmZlcik7CitleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfb3B0KFJlbGF0aW9uIHJl bGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJCQkJCQlCdWZmZXIgKnZtYnVmZmVyKTsKIGV4dGVy biB2b2lkIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZm ZXIgYnVmZmVyLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBC dWZmZXIgdm1idWZmZXIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvcmVsc2Nhbi5o IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaAppbmRleCBiNWUwZmIzODZjMC4uZjQ5NmUw YjQ5MzkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9yZWxzY2FuLmgKKysrIGIvc3Jj L2luY2x1ZGUvYWNjZXNzL3JlbHNjYW4uaApAQCAtMTIxLDYgKzEyMSwxMiBAQCB0eXBlZGVmIHN0 cnVjdCBQYXJhbGxlbEJsb2NrVGFibGVTY2FuV29ya2VyRGF0YSAqUGFyYWxsZWxCbG9ja1RhYmxl U2NhbldvcmtlcjsKIHR5cGVkZWYgc3RydWN0IEluZGV4RmV0Y2hUYWJsZURhdGEKIHsKIAlSZWxh dGlvbglyZWw7CisKKwkvKgorCSAqIFNvbWUgb3B0aW1pemF0aW9ucyBjYW4gb25seSBiZSBwZXJm b3JtZWQgaWYgdGhlIHF1ZXJ5IGRvZXMgbm90IG1vZGlmeQorCSAqIHRoZSB1bmRlcmx5aW5nIHJl bGF0aW9uLiBUcmFjayB0aGF0IGhlcmUuCisJICovCisJYm9vbAkJbW9kaWZpZXNfYmFzZV9yZWw7 CiB9IEluZGV4RmV0Y2hUYWJsZURhdGE7CiAKIHN0cnVjdCBJbmRleFNjYW5JbnN0cnVtZW50YXRp b247CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL3RhYmxlYW0uaAppbmRleCBiMmNlMzVlMmEzNC4uZTMxYzIxY2Y4ZWIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNj ZXNzL3RhYmxlYW0uaApAQCAtNjIsNiArNjIsOCBAQCB0eXBlZGVmIGVudW0gU2Nhbk9wdGlvbnMK IAogCS8qIHVucmVnaXN0ZXIgc25hcHNob3QgYXQgc2NhbiBlbmQ/ICovCiAJU09fVEVNUF9TTkFQ U0hPVCA9IDEgPDwgOSwKKwkvKiB3aGV0aGVyIG9yIG5vdCBzY2FuIHNob3VsZCBhdHRlbXB0IHRv IHNldCB0aGUgVk0gKi8KKwlTT19BTExPV19WTV9TRVQgPSAxIDw8IDEwLAogfQkJCVNjYW5PcHRp b25zOwogCiAvKgpAQCAtODgxLDYgKzg4MywyNSBAQCB0YWJsZV9iZWdpbnNjYW4oUmVsYXRpb24g cmVsLCBTbmFwc2hvdCBzbmFwc2hvdCwKIAlyZXR1cm4gcmVsLT5yZF90YWJsZWFtLT5zY2FuX2Jl Z2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEwsIGZsYWdzKTsKIH0KIAorLyoKKyAq IFNpbWlsYXIgdG8gdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBhbGxvd3MgdGhlIGNhbGxlciB0byBp bmRpY2F0ZSB3aGV0aGVyIHRoZQorICogcXVlcnkgbW9kaWZpZXMgdGhlIHJlbGF0aW9uLiBUaGlz IGlzIHVzZWQgd2hlbiB0aGUgY2FsbGVyIHdhbnRzIHRvIGF0dGVtcHQKKyAqIG1hcmtpbmcgcGFn ZXMgaW4gdGhlIHJlbGF0aW9uIGFzIGFsbC12aXNpYmxlIGluIHRoZSB2aXNpYmlsaXR5IG1hcCBk dXJpbmcKKyAqIG9uLWFjY2VzcyBwcnVuaW5nLgorICovCitzdGF0aWMgaW5saW5lIFRhYmxlU2Nh bkRlc2MKK3RhYmxlX2JlZ2luc2Nhbl92bXNldChSZWxhdGlvbiByZWwsIFNuYXBzaG90IHNuYXBz aG90LAorCQkJCQkgIGludCBua2V5cywgc3RydWN0IFNjYW5LZXlEYXRhICprZXksIGJvb2wgbW9k aWZpZXNfcmVsKQoreworCXVpbnQzMgkJZmxhZ3MgPSBTT19UWVBFX1NFUVNDQU4gfAorCQlTT19B TExPV19TVFJBVCB8IFNPX0FMTE9XX1NZTkMgfCBTT19BTExPV19QQUdFTU9ERTsKKworCWlmICgh bW9kaWZpZXNfcmVsKQorCQlmbGFncyB8PSBTT19BTExPV19WTV9TRVQ7CisKKwlyZXR1cm4gcmVs LT5yZF90YWJsZWFtLT5zY2FuX2JlZ2luKHJlbCwgc25hcHNob3QsIG5rZXlzLCBrZXksIE5VTEws IGZsYWdzKTsKK30KKwogLyoKICAqIExpa2UgdGFibGVfYmVnaW5zY2FuKCksIGJ1dCBmb3Igc2Nh bm5pbmcgY2F0YWxvZy4gSXQnbGwgYXV0b21hdGljYWxseSB1c2UgYQogICogc25hcHNob3QgYXBw cm9wcmlhdGUgZm9yIHNjYW5uaW5nIGNhdGFsb2cgcmVsYXRpb25zLgpAQCAtOTE4LDEwICs5Mzks MTMgQEAgdGFibGVfYmVnaW5zY2FuX3N0cmF0KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNo b3QsCiAgKi8KIHN0YXRpYyBpbmxpbmUgVGFibGVTY2FuRGVzYwogdGFibGVfYmVnaW5zY2FuX2Jt KFJlbGF0aW9uIHJlbCwgU25hcHNob3Qgc25hcHNob3QsCi0JCQkJICAgaW50IG5rZXlzLCBzdHJ1 Y3QgU2NhbktleURhdGEgKmtleSkKKwkJCQkgICBpbnQgbmtleXMsIHN0cnVjdCBTY2FuS2V5RGF0 YSAqa2V5LCBib29sIG1vZGlmaWVzX3JlbCkKIHsKIAl1aW50MzIJCWZsYWdzID0gU09fVFlQRV9C SVRNQVBTQ0FOIHwgU09fQUxMT1dfUEFHRU1PREU7CiAKKwlpZiAoIW1vZGlmaWVzX3JlbCkKKwkJ ZmxhZ3MgfD0gU09fQUxMT1dfVk1fU0VUOworCiAJcmV0dXJuIHJlbC0+cmRfdGFibGVhbS0+c2Nh bl9iZWdpbihyZWwsIHNuYXBzaG90LCBua2V5cywga2V5LAogCQkJCQkJCQkJICAgTlVMTCwgZmxh Z3MpOwogfQpAQCAtMTEzMCw2ICsxMTU0LDEwIEBAIGV4dGVybiB2b2lkIHRhYmxlX3BhcmFsbGVs c2Nhbl9pbml0aWFsaXplKFJlbGF0aW9uIHJlbCwKIGV4dGVybiBUYWJsZVNjYW5EZXNjIHRhYmxl X2JlZ2luc2Nhbl9wYXJhbGxlbChSZWxhdGlvbiByZWxhdGlvbiwKIAkJCQkJCQkJCQkJICBQYXJh bGxlbFRhYmxlU2NhbkRlc2MgcHNjYW4pOwogCitleHRlcm4gVGFibGVTY2FuRGVzYyB0YWJsZV9i ZWdpbnNjYW5fcGFyYWxsZWxfdm1zZXQoUmVsYXRpb24gcmVsYXRpb24sCisJCQkJCQkJCQkJCQkJ UGFyYWxsZWxUYWJsZVNjYW5EZXNjIHBzY2FuLAorCQkJCQkJCQkJCQkJCWJvb2wgbW9kaWZpZXNf cmVsKTsKKwogLyoKICAqIFJlc3RhcnQgYSBwYXJhbGxlbCBzY2FuLiAgQ2FsbCB0aGlzIGluIHRo ZSBsZWFkZXIgcHJvY2Vzcy4gIENhbGxlciBpcwogICogcmVzcG9uc2libGUgZm9yIG1ha2luZyBz dXJlIHRoYXQgYWxsIHdvcmtlcnMgaGF2ZSBmaW5pc2hlZCB0aGUgc2NhbgpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaAppbmRleCBkZTc4MjAxNGIyZC4uODM5YzFiZTFkN2MgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5o CkBAIC02NzgsNiArNjc4LDEyIEBAIHR5cGVkZWYgc3RydWN0IEVTdGF0ZQogCQkJCQkJCQkJICog RXhlY0RvSW5pdGlhbFBydW5pbmcoKSAqLwogCWNvbnN0IGNoYXIgKmVzX3NvdXJjZVRleHQ7CS8q IFNvdXJjZSB0ZXh0IGZyb20gUXVlcnlEZXNjICovCiAKKwkvKgorCSAqIFJUIGluZGV4ZXMgb2Yg cmVsYXRpb25zIG1vZGlmaWVkIGJ5IHRoZSBxdWVyeSBlaXRoZXIgdGhyb3VnaAorCSAqIFVQREFU RS9ERUxFVEUvSU5TRVJUL01FUkdFIG9yIFNFTEVDVCBGT1IgVVBEQVRFCisJICovCisJQml0bWFw c2V0ICAqZXNfbW9kaWZpZWRfcmVsaWRzOworCiAJSnVua0ZpbHRlciAqZXNfanVua0ZpbHRlcjsJ LyogdG9wLWxldmVsIGp1bmsgZmlsdGVyLCBpZiBhbnkgKi8KIAogCS8qIElmIHF1ZXJ5IGNhbiBp bnNlcnQvZGVsZXRlIHR1cGxlcywgdGhlIGNvbW1hbmQgSUQgdG8gbWFyayB0aGVtIHdpdGggKi8K ZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNv ZGluZy5wbCBiL3NyYy90ZXN0L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGlu Zy5wbAppbmRleCBjOWMxODI4OTJjZi4uZjVjMGM2NWIyNjAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlY292ZXJ5L3QvMDM1X3N0YW5kYnlfbG9naWNhbF9kZWNvZGluZy5wbAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS90LzAzNV9zdGFuZGJ5X2xvZ2ljYWxfZGVjb2RpbmcucGwKQEAgLTI5Niw2ICsy OTYsNyBAQCB3YWxfbGV2ZWwgPSAnbG9naWNhbCcKIG1heF9yZXBsaWNhdGlvbl9zbG90cyA9IDQK IG1heF93YWxfc2VuZGVycyA9IDQKIGF1dG92YWN1dW0gPSBvZmYKK2hvdF9zdGFuZGJ5X2ZlZWRi YWNrID0gb24KIH0pOwogJG5vZGVfcHJpbWFyeS0+ZHVtcF9pbmZvOwogJG5vZGVfcHJpbWFyeS0+ c3RhcnQ7CkBAIC03NDUsNyArNzQ2LDcgQEAgY2hlY2tfcGdfcmVjdmxvZ2ljYWxfc3RkZXJyKCRo YW5kbGUsCiAkbG9nc3RhcnQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5sb2dmaWxlOwogCiByZWFjdGl2 ZV9zbG90c19jaGFuZ2VfaGZzX2FuZF93YWl0X2Zvcl94bWlucygnc2hhcmVkX3Jvd19yZW1vdmFs XycsCi0JJ25vX2NvbmZsaWN0XycsIDAsIDEpOworCSdub19jb25mbGljdF8nLCAxLCAwKTsKIAog IyBUaGlzIHNob3VsZCBub3QgdHJpZ2dlciBhIGNvbmZsaWN0CiB3YWl0X3VudGlsX3ZhY3V1bV9j YW5fcmVtb3ZlKAotLSAKMi40My4wCgo= --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Disposition: attachment; filename="v13-0018-Add-helper-functions-to-heap_page_prune_and_free.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy5518 RnJvbSBiNzI2ZWU1NDE5MjU4MmU3OGM1YTM4NjZkMmE4MTk5OTNjMmM3OThhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBXZWQsIDMwIEp1bCAyMDI1IDE4OjUxOjQzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTgvMjBdIEFkZCBoZWxwZXIgZnVuY3Rpb25zIHRvIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplCgpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGhhcyBnb3R0ZW4gcmF0aGVy IGxvbmcuIEl0IGhhcyBzZXZlcmFsCnN0YWdlczoKCjEpIHNldHVwIC0gd2hlcmUgdGhlIFBydW5l U3RhdGUgaXMgc2V0IHVwCjIpIHR1cGxlIGV4YW1pbmF0aW9uIC0tIHdoZXJlIHR1cGxlcyBhbmQg bGluZSBwb2ludGVycyBhcmUgZXhhbWluZWQgdG8KICAgZGV0ZXJtaW5lIHdoYXQgbmVlZHMgdG8g YmUgcHJ1bmVkIGFuZCB3aGF0IGNvdWxkIGJlIGZyb3plbgozKSBldmFsdWF0aW9uIC0tIHdoZXJl IHdlIGRldGVybWluZSBiYXNlZCBvbiBjYWxsZXIgcHJvdmlkZWQgb3B0aW9ucywKICAgaGV1cmlz dGljcywgYW5kIHN0YXRlIGdhdGhlcmVkIGR1cmluZyBzdGFnZSAyIHdoZXRoZXIgb3Igbm90IHRv CiAgIGZyZWV6ZSB0dXBsZXMgYW5kIHNldCB0aGUgcGFnZSBpbiB0aGUgVk0KNCkgZXhlY3V0aW9u IC0gd2hlcmUgdGhlIHBhZ2UgY2hhbmdlcyBhcmUgYWN0dWFsbHkgbWFkZSBhbmQgbG9nZ2VkCgpU aGlzIGNvbW1pdCByZWZhY3RvcnMgdGhlIGV2YWx1YXRpb24gc3RhZ2UgaW50byBoZWxwZXJzIHdo aWNoIHJldHVybgp3aGV0aGVyIG9yIG5vdCB0byBmcmVlemUgYW5kIHNldCB0aGUgVk0uCgpYWFg6 IEZvciB0aGUgcHVycG9zZXMgb2YgY29tbWl0dGluZywgdGhpcyBsaWtlbHkgc2hvdWxkbid0IGJl IGEgc2VwYXJhdGUKY29tbWl0LiBCdXQgSSdtIG5vdCBzdXJlIHlldCB3aGV0aGVyIGl0IG1ha2Vz IG1vcmUgc2Vuc2UgdG8gZG8gdGhpcwpyZWZhY3RvcmluZyBlYXJsaWVyIGluIHRoZSBzZXQgZm9y IGNsYXJpdHkgZm9yIHRoZSByZXZpZXdlci4KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9w cnVuZWhlYXAuYyB8IDQ3MyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCiAxIGZpbGUgY2hh bmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDE3NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9o ZWFwL3BydW5laGVhcC5jCmluZGV4IDc1MjNiOTM2NzY5Li4zM2EzNWRjNWFhYiAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTE3OSw2ICsxNzksMjIgQEAgc3RhdGljIHZvaWQg aGVhcF9wcnVuZV9yZWNvcmRfdW5jaGFuZ2VkX2xwX3JlZGlyZWN0KFBydW5lU3RhdGUgKnByc3Rh dGUsIE9mZnNldE4KIAogc3RhdGljIHZvaWQgcGFnZV92ZXJpZnlfcmVkaXJlY3RzKFBhZ2UgcGFn ZSk7CiAKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShSZWxhdGlvbiByZWxhdGlv biwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJICBib29sIGRvX3BydW5lLAorCQkJCQkJCQkgIGJv b2wgZG9faGludF9mdWxsX29yX3BydW5hYmxlLAorCQkJCQkJCQkgIGJvb2wgZGlkX3R1cGxlX2hp bnRfZnBpLAorCQkJCQkJCQkgIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJCQkJCSAgYm9vbCAq YWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCk7CisKK3N0YXRpYyBib29sIGhlYXBfcGFnZV93aWxs X3VwZGF0ZV92bShSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCSBCdWZmZXIgYnVmZmVyLCBC bG9ja051bWJlciBibG9ja25vLCBQYWdlIHBhZ2UsCisJCQkJCQkJCQkgUHJ1bmVSZWFzb24gcmVh c29uLAorCQkJCQkJCQkJIGJvb2wgZG9fcHJ1bmUsIGJvb2wgZG9fZnJlZXplLAorCQkJCQkJCQkJ IGJvb2wgYmxrX2tub3duX2F2LAorCQkJCQkJCQkJIFBydW5lU3RhdGUgKnByc3RhdGUsCisJCQkJ CQkJCQkgQnVmZmVyICp2bWJ1ZmZlciwgdWludDggKnZtZmxhZ3MsCisJCQkJCQkJCQkgYm9vbCAq c2V0X3BkX2FsbF92aXNpYmxlKTsKKwogc3RhdGljIGJvb2wgaWRlbnRpZnlfYW5kX2ZpeF92bV9j b3JydXB0aW9uKFJlbGF0aW9uIHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIEJsb2NrTnVtYmVyIGhl YXBfYmxrLAogCQkJCQkJCQkJCSAgIEJ1ZmZlciBoZWFwX2J1ZmZlciwgUGFnZSBoZWFwX3BhZ2Us CkBAIC0zODIsNiArMzk4LDI0OSBAQCBpZGVudGlmeV9hbmRfZml4X3ZtX2NvcnJ1cHRpb24oUmVs YXRpb24gcmVsYXRpb24sCiAJcmV0dXJuIGZhbHNlOwogfQogCisKKy8qCisgKiBEZXRlcm1pbmUg d2hldGhlciB0byBzZXQgdGhlIHZpc2liaWxpdHkgbWFwIGJpdHMgYmFzZWQgb24gaW5mb3JtYXRp b24gZnJvbQorICogdGhlIFBydW5lU3RhdGUgYW5kIGJsa19rbm93bl9hdiwgd2hpY2ggc29tZSBj YWxsZXJzIHdpbGwgcHJvdmlkZSBhZnRlcgorICogcHJldmlvdXNseSBleGFtaW5pbmcgdGhpcyBo ZWFwIHBhZ2UncyBWTSBiaXRzIChlLmcuIHZhY3V1bSBmcm9tIHRoZSBsYXN0CisgKiBoZWFwX3Zh Y19zY2FuX25leHRfYmxvY2soKSBjYWxsKS4KKyAqCisgKiBXZSBwYXNzIGluIGJsb2Nrbm8gYW5k IHBhZ2UgZXZlbiB0aG9zZSBjYW4gYmUgZGVyaXZlZCBmcm9tIGJ1ZmZlciB0byBhdm9pZAorICog ZXh0cmEgQnVmZmVyR2V0QmxvY2soKSBhbmQgQnVmZmVyR2V0QmxvY2tOdW1iZXIoKSBjYWxscy4K KyAqCisgKiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgb25seSBhZnRlciBkb19mcmVlemUgaGFzIGJl ZW4gZGVjaWRlZCAoYW5kIGRvX3BydW5lCisgKiBoYXMgYmVlbiBzZXQpLCBhcyB0aGVzZSBmYWN0 b3IgaW50byBvdXIgaGV1cmlzdGljLWJhc2VkIGRlY2lzaW9uLgorICoKKyAqIHByc3RhdGUgYW5k IHZtYnVmZmVyIGFyZSBpbnB1dC9vdXRwdXQgZmllbGRzLiB2bWZsYWdzIGFuZCBhbmQKKyAqIHNl dF9wZF9hbGxfdmlzaWJsZSBhcmUgb3V0cHV0IGZpZWxkcy4KKyAqCisgKiBSZXR1cm5zIHRydWUg aWYgdGhlIGNhbGxlciBzaG91bGQgc2V0IG9uZSBvciBib3RoIG9mIHRoZSBWTSBiaXRzIGFuZCBm YWxzZQorICogb3RoZXJ3aXNlLgorICovCitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfdXBk YXRlX3ZtKFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJIEJ1ZmZlciBidWZmZXIsIEJsb2NrTnVt YmVyIGJsb2Nrbm8sIFBhZ2UgcGFnZSwKKwkJCQkJCSBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJ CQkgYm9vbCBkb19wcnVuZSwgYm9vbCBkb19mcmVlemUsCisJCQkJCQkgYm9vbCBibGtfa25vd25f YXYsCisJCQkJCQkgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJCSBCdWZmZXIgKnZtYnVmZmVy LCB1aW50OCAqdm1mbGFncywKKwkJCQkJCSBib29sICpzZXRfcGRfYWxsX3Zpc2libGUpCit7CisJ Ym9vbAkJZG9fc2V0X3ZtID0gZmFsc2U7CisKKwkvKgorCSAqIElmIHRoZSBjYWxsZXIgc3BlY2lm aWVkIG5vdCB0byB1cGRhdGUgdGhlIFZNLCB2YWxpZGF0ZSBldmVyeXRoaW5nIGlzIGluCisJICog dGhlIHJpZ2h0IHN0YXRlIGFuZCBleGl0LgorCSAqLworCWlmICghcHJzdGF0ZS0+Y29uc2lkZXJf dXBkYXRlX3ZtKQorCXsKKwkJQXNzZXJ0KCFwcnN0YXRlLT5hbGxfdmlzaWJsZSAmJiAhcHJzdGF0 ZS0+YWxsX2Zyb3plbik7CisJCS8qIFdlIGRvbid0IHNldCBvbmx5IHRoZSBwYWdlIGxldmVsIHZp c2liaWxpdHkgaGludCAqLworCQlBc3NlcnQoISgqc2V0X3BkX2FsbF92aXNpYmxlKSk7CisJCUFz c2VydCgqdm1mbGFncyA9PSAwKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qCisJICogSWYg dGhpcyBpcyBhbiBvbi1hY2Nlc3MgY2FsbCBhbmQgd2UncmUgbm90IGFjdHVhbGx5IHBydW5pbmcs IGF2b2lkCisJICogc2V0dGluZyB0aGUgdmlzaWJpbGl0eSBtYXAgaWYgaXQgd291bGQgbmV3bHkg ZGlydHkgdGhlIGhlYXAgcGFnZSBvciwgaWYKKwkgKiB0aGUgcGFnZSBpcyBhbHJlYWR5IGRpcnR5 LCBpZiBkb2luZyBzbyB3b3VsZCByZXF1aXJlIGluY2x1ZGluZyBhCisJICogZnVsbC1wYWdlIGlt YWdlIChGUEkpIG9mIHRoZSBoZWFwIHBhZ2UgaW4gdGhlIFdBTC4gVGhpcyBzaXR1YXRpb24KKwkg KiBzaG91bGQgYmUgcmFyZSwgYXMgb24tYWNjZXNzIHBydW5pbmcgaXMgb25seSBhdHRlbXB0ZWQg d2hlbgorCSAqIHBkX3BydW5lX3hpZCBpcyB2YWxpZC4KKwkgKi8KKwlpZiAocmVhc29uID09IFBS VU5FX09OX0FDQ0VTUyAmJgorCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gJiYKKwkJcHJz dGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJIWRvX3BydW5lICYmICFkb19mcmVlemUgJiYKKwkJKCFC dWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExvZ0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVy KSkpCisJeworCQlwcnN0YXRlLT5jb25zaWRlcl91cGRhdGVfdm0gPSBmYWxzZTsKKwkJcHJzdGF0 ZS0+YWxsX3Zpc2libGUgPSBwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7CisJfQorCisJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuIHx8IHByc3RhdGUtPmFsbF92aXNpYmxlKTsKKworCS8q CisJICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBp biBhIGNyaXRpY2FsCisJICogc2VjdGlvbiwgc28gd2UgZG8gaXQgZmlyc3QuIElmIFBEX0FMTF9W SVNJQkxFIGlzIGluY29ycmVjdGx5IHNldCwgd2UKKwkgKiBtYXkgbWFyayB0aGUgaGVhcCBwYWdl IGJ1ZmZlciBkaXJ0eSBoZXJlIGFuZCBjb3VsZCBlbmQgdXAgZG9pbmcgc28KKwkgKiBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgg b2YgVk0KKwkgKiBjb3JydXB0aW9uLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRo ZSBleHRyYSBwZXJmb3JtYW5jZQorCSAqIG92ZXJoZWFkLgorCSAqLworCWlmIChpZGVudGlmeV9h bmRfZml4X3ZtX2NvcnJ1cHRpb24ocmVsYXRpb24sCisJCQkJCQkJCQkgICBibG9ja25vLCBidWZm ZXIsIHBhZ2UsCisJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUtPmxwZGVhZF9pdGVt cywKKwkJCQkJCQkJCSAgICp2bWJ1ZmZlcikpCisJeworCQkvKiBJZiB3ZSBmaXggY29ycnVwdGlv biwgZG9uJ3QgdXBkYXRlIHRoZSBWTSBmdXJ0aGVyICovCisJfQorCisJLyogRGV0ZXJtaW5lIGlm IHdlIGFjdHVhbGx5IG5lZWQgdG8gc2V0IHRoZSBWTSBhbmQgd2hpY2ggYml0cyB0byBzZXQuICov CisJZWxzZSBpZiAocHJzdGF0ZS0+YWxsX3Zpc2libGUgJiYKKwkJCSAoIWJsa19rbm93bl9hdiB8 fAorCQkJICAocHJzdGF0ZS0+YWxsX2Zyb3plbiAmJiAhVk1fQUxMX0ZST1pFTihyZWxhdGlvbiwg YmxvY2tubywgdm1idWZmZXIpKSkpCisJeworCQkqdm1mbGFncyB8PSBWSVNJQklMSVRZTUFQX0FM TF9WSVNJQkxFOworCQlpZiAocHJzdGF0ZS0+YWxsX2Zyb3plbikKKwkJCSp2bWZsYWdzIHw9IFZJ U0lCSUxJVFlNQVBfQUxMX0ZST1pFTjsKKwl9CisKKwlkb19zZXRfdm0gPSAqdm1mbGFncyAmIFZJ U0lCSUxJVFlNQVBfVkFMSURfQklUUzsKKworCS8qCisJICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJ QkxFIHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKKwkgKiBj b3JyZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhl IFZNIGlzIG5vdAorCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBz eW5jLgorCSAqCisJICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3Ig dGhlIHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAorCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNs ZWFyLiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCisJICogc2V0dGluZyBQ RF9BTExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICovCisJ KnNldF9wZF9hbGxfdmlzaWJsZSA9IGRvX3NldF92bSAmJiAhUGFnZUlzQWxsVmlzaWJsZShwYWdl KTsKKwlyZXR1cm4gZG9fc2V0X3ZtOworfQorCisvKgorICogRGVjaWRlIGlmIHdlIHdhbnQgdG8g Z28gYWhlYWQgd2l0aCBmcmVlemluZyBhY2NvcmRpbmcgdG8gdGhlIGZyZWV6ZSBwbGFucyB3ZQor ICogcHJlcGFyZWQgZm9yIHRoZSBnaXZlbiBidWZmZXIgb3Igbm90LiBJZiB0aGUgY2FsbGVyIHNw ZWNpZmllZCB3ZSBzaG91bGQgbm90CisgKiBmcmVlemUgdHVwbGVzLCBpdCBleGl0cyBlYXJseS4K KyAqCisgKiBkb19wcnVuZSwgZG9faGludF9mdWxsX29yX3BydW5hYmxlLCBhbmQgZGlkX3R1cGxl X2hpbnRfZnBpIG11c3QgYWxsIGhhdmUKKyAqIGJlZW4gZGVjaWRlZCBiZWZvcmUgY2FsbGluZyB0 aGlzIGZ1bmN0aW9uLgorICoKKyAqIHByc3RhdGUgaXMgYW4gaW5wdXQvb3V0cHV0IHBhcmFtZXRl ci4gYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCBpcyBzZXQgYW5kCisgKiB1c2VkIGxhdGVyIHRv IGRldGVybWluZSB0aGUgc25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiBmb3IgdGhlIHJlY29yZC4K KyAqCisgKiBSZXR1cm5zIHRydWUgaWYgd2Ugc2hvdWxkIHVzZSBvdXIgZnJlZXplIHBsYW5zIGFu ZCBmcmVlemUgdHVwbGVzIG9uIHRoZSBwYWdlCisgKiBhbmQgZmFsc2Ugb3RoZXJ3aXNlLgorICov CitzdGF0aWMgYm9vbAoraGVhcF9wYWdlX3dpbGxfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBC dWZmZXIgYnVmZmVyLAorCQkJCQkgIGJvb2wgZG9fcHJ1bmUsCisJCQkJCSAgYm9vbCBkb19oaW50 X2Z1bGxfb3JfcHJ1bmFibGUsCisJCQkJCSAgYm9vbCBkaWRfdHVwbGVfaGludF9mcGksCisJCQkJ CSAgUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwKKwkJCQkJICBib29sICphbGxfZnJvemVuX2V4Y2VwdF9s cF9kZWFkKQoreworCWJvb2wJCWRvX2ZyZWV6ZSA9IGZhbHNlOworCisJLyoKKwkgKiBJZiB0aGUg Y2FsbGVyIHNwZWNpZmllZCB3ZSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZnJlZXplIGFueSB0dXBs ZXMsCisJICogdmFsaWRhdGUgdGhhdCBldmVyeXRoaW5nIGlzIGluIHRoZSByaWdodCBzdGF0ZSBh bmQgZXhpdC4KKwkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCXsKKwkJQXNz ZXJ0KCFwcnN0YXRlLT5hbGxfZnJvemVuICYmIHByc3RhdGUtPm5mcm96ZW4gPT0gMCk7CisJCUFz c2VydChwcnN0YXRlLT5scGRlYWRfaXRlbXMgPT0gMCB8fCAhcHJzdGF0ZS0+YWxsX3Zpc2libGUp OworCQlBc3NlcnQoISgqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCkpOworCQlyZXR1cm4gZmFs c2U7CisJfQorCisJaWYgKHByc3RhdGUtPnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQorCXsKKwkJ LyoKKwkJICogaGVhcF9wcmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFz dCBvbmUgWElEL01YSUQgZnJvbQorCQkgKiBiZWZvcmUgRnJlZXplTGltaXQvTXVsdGlYYWN0Q3V0 b2ZmIGlzIHByZXNlbnQuICBNdXN0IGZyZWV6ZSB0bworCQkgKiBhZHZhbmNlIHJlbGZyb3plbnhp ZC9yZWxtaW5teGlkLgorCQkgKi8KKwkJZG9fZnJlZXplID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsK KwkJLyoKKwkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBn ZW5lcmF0aW5nIGFuIEZQSQorCQkgKiBhbnl3YXkgYW5kIGlmIGRvaW5nIHNvIG1lYW5zIHRoYXQg d2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtZnJvemVuCisJCSAqIGFmdGVyd2FyZHMgKG1pZ2h0IG5v dCBoYXBwZW4gdW50aWwgVkFDVVVNJ3MgZmluYWwgaGVhcCBwYXNzKS4KKwkJICoKKwkJICogWFhY OiBQcmV2aW91c2x5LCB3ZSBrbmV3IGlmIHBydW5pbmcgZW1pdHRlZCBhbiBGUEkgYnkgY2hlY2tp bmcKKwkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmluZy4gIE9u Y2UgdGhlIGZyZWV6ZSBhbmQKKwkJICogcHJ1bmUgcmVjb3JkcyB3ZXJlIGNvbWJpbmVkLCB0aGlz IGhldXJpc3RpYyBjb3VsZG4ndCBiZSB1c2VkCisJCSAqIGFueW1vcmUuICBUaGUgb3Bwb3J0dW5p c3RpYyBmcmVlemUgaGV1cmlzdGljIG11c3QgYmUgaW1wcm92ZWQ7CisJCSAqIGhvd2V2ZXIsIGZv ciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgorCQkgKi8KKwkJaWYgKHBy c3RhdGUtPmFsbF92aXNpYmxlICYmIHByc3RhdGUtPmFsbF9mcm96ZW4gJiYgcHJzdGF0ZS0+bmZy b3plbiA+IDApCisJCXsKKwkJCS8qCisJCQkgKiBGcmVlemluZyB3b3VsZCBtYWtlIHRoZSBwYWdl IGFsbC1mcm96ZW4uICBIYXZlIGFscmVhZHkgZW1pdHRlZAorCQkJICogYW4gRlBJIG9yIHdpbGwg ZG8gc28gYW55d2F5PworCQkJICovCisJCQlpZiAoUmVsYXRpb25OZWVkc1dBTChyZWxhdGlvbikp CisJCQl7CisJCQkJaWYgKGRpZF90dXBsZV9oaW50X2ZwaSkKKwkJCQkJZG9fZnJlZXplID0gdHJ1 ZTsKKwkJCQllbHNlIGlmIChkb19wcnVuZSkKKwkJCQl7CisJCQkJCWlmIChYTG9nQ2hlY2tCdWZm ZXJOZWVkc0JhY2t1cChidWZmZXIpKQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJ CQkJZWxzZSBpZiAoZG9faGludF9mdWxsX29yX3BydW5hYmxlKQorCQkJCXsKKwkJCQkJaWYgKFhM b2dIaW50Qml0SXNOZWVkZWQoKSAmJiBYTG9nQ2hlY2tCdWZmZXJOZWVkc0JhY2t1cChidWZmZXIp KQorCQkJCQkJZG9fZnJlZXplID0gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlpZiAo ZG9fZnJlZXplKQorCXsKKwkJLyoKKwkJICogVmFsaWRhdGUgdGhlIHR1cGxlcyB3ZSB3aWxsIGJl IGZyZWV6aW5nIGJlZm9yZSBlbnRlcmluZyB0aGUKKwkJICogY3JpdGljYWwgc2VjdGlvbi4KKwkJ ICovCisJCWhlYXBfcHJlX2ZyZWV6ZV9jaGVja3MoYnVmZmVyLCBwcnN0YXRlLT5mcm96ZW4sIHBy c3RhdGUtPm5mcm96ZW4pOworCX0KKwllbHNlIGlmIChwcnN0YXRlLT5uZnJvemVuID4gMCkKKwl7 CisJCS8qCisJCSAqIFRoZSBwYWdlIGNvbnRhaW5lZCBzb21lIHR1cGxlcyB0aGF0IHdlcmUgbm90 IGFscmVhZHkgZnJvemVuLCBhbmQgd2UKKwkJICogY2hvc2Ugbm90IHRvIGZyZWV6ZSB0aGVtIG5v dy4gIFRoZSBwYWdlIHdvbid0IGJlIGFsbC1mcm96ZW4gdGhlbi4KKwkJICovCisJCUFzc2VydCgh cHJzdGF0ZS0+cGFnZWZyei5mcmVlemVfcmVxdWlyZWQpOworCisJCXByc3RhdGUtPmFsbF9mcm96 ZW4gPSBmYWxzZTsKKwkJcHJzdGF0ZS0+bmZyb3plbiA9IDA7CS8qIGF2b2lkIG1pc2NvdW50cyBp biBpbnN0cnVtZW50YXRpb24gKi8KKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogV2UgaGF2ZSBu byBmcmVlemUgcGxhbnMgdG8gZXhlY3V0ZS4gIFRoZSBwYWdlIG1pZ2h0IGFscmVhZHkgYmUKKwkJ ICogYWxsLWZyb3plbiAocGVyaGFwcyBvbmx5IGZvbGxvd2luZyBwcnVuaW5nKSwgdGhvdWdoLiAg U3VjaCBwYWdlcworCQkgKiBjYW4gYmUgbWFya2VkIGFsbC1mcm96ZW4gaW4gdGhlIFZNIGJ5IG91 ciBjYWxsZXIsIGV2ZW4gdGhvdWdoIG5vbmUKKwkJICogb2YgaXRzIHR1cGxlcyB3ZXJlIG5ld2x5 IGZyb3plbiBoZXJlLgorCQkgKi8KKwl9CisKKwkvKgorCSAqIEl0IHdhcyBjb252ZW5pZW50IHRv IGlnbm9yZSBMUF9ERUFEIGl0ZW1zIGluIGFsbF92aXNpYmxlIGVhcmxpZXIgb24gdG8KKwkgKiBt YWtlIHRoZSBjaG9pY2Ugb2Ygd2hldGhlciBvciBub3QgdG8gZnJlZXplIHRoZSBwYWdlIHVuYWZm ZWN0ZWQgYnkgdGhlCisJICogc2hvcnQtdGVybSBwcmVzZW5jZSBvZiBMUF9ERUFEIGl0ZW1zLiAg VGhlc2UgTFBfREVBRCBpdGVtcyB3ZXJlCisJICogZWZmZWN0aXZlbHkgYXNzdW1lZCB0byBiZSBM UF9VTlVTRUQgaXRlbXMgaW4gdGhlIG1ha2luZy4gIEl0IGRvZXNuJ3QKKwkgKiBtYXR0ZXIgd2hp Y2ggdmFjdXVtIGhlYXAgcGFzcyAoaW5pdGlhbCBwYXNzIG9yIGZpbmFsIHBhc3MpIGVuZHMgdXAK KwkgKiBzZXR0aW5nIHRoZSBwYWdlIGFsbC1mcm96ZW4sIGFzIGxvbmcgYXMgdGhlIG9uZ29pbmcg VkFDVVVNIGRvZXMgaXQuCisJICoKKwkgKiBOb3cgdGhhdCBmcmVlemluZyBoYXMgYmVlbiBmaW5h bGl6ZWQsIHVuc2V0IGFsbF92aXNpYmxlIGlmIHRoZXJlIGFyZQorCSAqIGFueSBMUF9ERUFEIGl0 ZW1zIG9uIHRoZSBwYWdlLiBJdCBuZWVkcyB0byByZWZsZWN0IHRoZSBwcmVzZW50IHN0YXRlIG9m CisJICogdGhlIHBhZ2Ugd2hlbiB1c2luZyBpdCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3Qg dG8gdXBkYXRlIHRoZSBWTS4KKwkgKgorCSAqIEtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3Qg dGhlIHBhZ2Ugd2FzIGFsbC1mcm96ZW4gZXhjZXB0IExQX0RFQUQKKwkgKiBpdGVtcyBmb3IgdGhl IHB1cnBvc2VzIG9mIGNhbGN1bGF0aW5nIHRoZSBzbmFwc2hvdCBjb25mbGljdCBob3Jpem9uLAor CSAqIHRob3VnaC4KKwkgKi8KKwkqYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9IHByc3RhdGUt PmFsbF9mcm96ZW47CisJaWYgKHByc3RhdGUtPmxwZGVhZF9pdGVtcyA+IDApCisJeworCQlwcnN0 YXRlLT5hbGxfdmlzaWJsZSA9IGZhbHNlOworCQlwcnN0YXRlLT5hbGxfZnJvemVuID0gZmFsc2U7 CisJfQorCisJcmV0dXJuIGRvX2ZyZWV6ZTsKK30KKworCiAvKgogICogUHJ1bmUgYW5kIHJlcGFp ciBmcmFnbWVudGF0aW9uIGFuZCBwb3RlbnRpYWxseSBmcmVlemUgdHVwbGVzIG9uIHRoZQogICog c3BlY2lmaWVkIHBhZ2UuIElmIHRoZSBwYWdlJ3MgdmlzaWJpbGl0eSBzdGF0dXMgaGFzIGNoYW5n ZWQsIHVwZGF0ZSBpdCBpbgpAQCAtNzcyLDIwICsxMDMxLDMwIEBAIGhlYXBfcGFnZV9wcnVuZV9h bmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCS8qIENsZWFyIHRo ZSBvZmZzZXQgaW5mb3JtYXRpb24gb25jZSB3ZSBoYXZlIHByb2Nlc3NlZCB0aGUgZ2l2ZW4gcGFn ZS4gKi8KIAkqb2ZmX2xvYyA9IEludmFsaWRPZmZzZXROdW1iZXI7CiAKLQlkb19wcnVuZSA9IHBy c3RhdGUubnJlZGlyZWN0ZWQgPiAwIHx8Ci0JCXByc3RhdGUubmRlYWQgPiAwIHx8Ci0JCXByc3Rh dGUubnVudXNlZCA+IDA7Ci0KIAkvKgogCSAqIEFmdGVyIHByb2Nlc3NpbmcgYWxsIHRoZSBsaXZl IHR1cGxlcyBvbiB0aGUgcGFnZSwgaWYgdGhlIG5ld2VzdCB4bWluCiAJICogYW1vbmdzdCB0aGVt IGlzIG5vdCB2aXNpYmxlIHRvIGV2ZXJ5b25lLCB0aGUgcGFnZSBjYW5ub3QgYmUKLQkgKiBhbGwt dmlzaWJsZS4KKwkgKiBhbGwtdmlzaWJsZS4gVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIHdlIGRl Y2lkZSB3aGV0aGVyIG9yIG5vdCB0bworCSAqIG9wcG9ydHVuaXN0aWNhbGx5IGZyZWV6ZSBiZWxv dyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvCisJICogb3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXpl IHRoZSBwYWdlIGlmIHRoZXJlIGFyZSBsaXZlIHR1cGxlcyBub3QgdmlzaWJsZQorCSAqIHRvIGV2 ZXJ5b25lLCB3aGljaCB3b3VsZCBwcmV2ZW50IHNldHRpbmcgdGhlIHBhZ2UgZnJvemVuIGluIHRo ZSBWTS4KIAkgKi8KIAlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJgogCQlUcmFuc2FjdGlvbklk SXNOb3JtYWwocHJzdGF0ZS52aXNpYmlsaXR5X2N1dG9mZl94aWQpICYmCiAJCSFHbG9iYWxWaXNY aWRWaXNpYmxlVG9BbGwocHJzdGF0ZS52aXN0ZXN0LCBwcnN0YXRlLnZpc2liaWxpdHlfY3V0b2Zm X3hpZCkpCiAJCXByc3RhdGUuYWxsX3Zpc2libGUgPSBwcnN0YXRlLmFsbF9mcm96ZW4gPSBmYWxz ZTsKIAorCS8qCisJICogTm93IGRlY2lkZSBiYXNlZCBvbiBpbmZvcm1hdGlvbiBjb2xsZWN0ZWQg d2hpbGUgZXhhbWluaW5nIGV2ZXJ5IHR1cGxlCisJICogd2hpY2ggYWN0aW9ucyB0byB0YWtlLiBJ ZiB0aGVyZSBhcmUgYW55IHBydW5hYmxlIHR1cGxlcywgd2UnbGwgcHJ1bmUKKwkgKiB0aGVtLiBI b3dldmVyLCB3ZSB3aWxsIGRlY2lkZSBiYXNlZCBvbiBvcHRpb25zIHNwZWNpZmllZCBieSB0aGUg Y2FsbGVyCisJICogYW5kIHZhcmlvdXMgaGV1cmlzdGljcyB3aGV0aGVyIG9yIG5vdCB0byBmcmVl emUgYW55IHR1cGxlcyBhbmQgd2hldGhlcgorCSAqIG9yIG5vdCB0aGUgcGFnZSBzaG91bGQgYmUg c2V0IGFsbC12aXNpYmxlL2FsbC1mcm96ZW4gaW4gdGhlIFZNLgorCSAqLworCWRvX3BydW5lID0g cHJzdGF0ZS5ucmVkaXJlY3RlZCA+IDAgfHwKKwkJcHJzdGF0ZS5uZGVhZCA+IDAgfHwKKwkJcHJz dGF0ZS5udW51c2VkID4gMDsKKwogCS8qCiAJICogRXZlbiBpZiB3ZSBkb24ndCBwcnVuZSBhbnl0 aGluZywgaWYgd2UgZm91bmQgYSBuZXcgdmFsdWUgZm9yIHRoZQogCSAqIHBkX3BydW5lX3hpZCBm aWVsZCBvciB0aGUgcGFnZSB3YXMgbWFya2VkIGZ1bGwsIHdlIHdpbGwgdXBkYXRlIHRob3NlCkBA IC03OTYsMTg2ICsxMDY1LDM2IEBAIGhlYXBfcGFnZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9u IHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAogCQlQYWdlSXNGdWxsKHBhZ2UpOwogCiAJLyoKLQkg KiBEZWNpZGUgaWYgd2Ugd2FudCB0byBnbyBhaGVhZCB3aXRoIGZyZWV6aW5nIGFjY29yZGluZyB0 byB0aGUgZnJlZXplCi0JICogcGxhbnMgd2UgcHJlcGFyZWQsIG9yIG5vdC4KLQkgKi8KLQlkb19m cmVlemUgPSBmYWxzZTsKLQlpZiAocHJzdGF0ZS5hdHRlbXB0X2ZyZWV6ZSkKLQl7Ci0JCWlmIChw cnN0YXRlLnBhZ2VmcnouZnJlZXplX3JlcXVpcmVkKQotCQl7Ci0JCQkvKgotCQkJICogaGVhcF9w cmVwYXJlX2ZyZWV6ZV90dXBsZSBpbmRpY2F0ZWQgdGhhdCBhdCBsZWFzdCBvbmUgWElEL01YSUQK LQkJCSAqIGZyb20gYmVmb3JlIEZyZWV6ZUxpbWl0L011bHRpWGFjdEN1dG9mZiBpcyBwcmVzZW50 LiAgTXVzdAotCQkJICogZnJlZXplIHRvIGFkdmFuY2UgcmVsZnJvemVueGlkL3JlbG1pbm14aWQu Ci0JCQkgKi8KLQkJCWRvX2ZyZWV6ZSA9IHRydWU7Ci0JCX0KLQkJZWxzZQotCQl7Ci0JCQkvKgot CQkJICogT3Bwb3J0dW5pc3RpY2FsbHkgZnJlZXplIHRoZSBwYWdlIGlmIHdlIGFyZSBnZW5lcmF0 aW5nIGFuIEZQSQotCQkJICogYW55d2F5IGFuZCBpZiBkb2luZyBzbyBtZWFucyB0aGF0IHdlIGNh biBzZXQgdGhlIHBhZ2UKLQkJCSAqIGFsbC1mcm96ZW4gYWZ0ZXJ3YXJkcyAobWlnaHQgbm90IGhh cHBlbiB1bnRpbCBWQUNVVU0ncyBmaW5hbAotCQkJICogaGVhcCBwYXNzKS4KLQkJCSAqCi0JCQkg KiBYWFg6IFByZXZpb3VzbHksIHdlIGtuZXcgaWYgcHJ1bmluZyBlbWl0dGVkIGFuIEZQSSBieSBj aGVja2luZwotCQkJICogcGdXYWxVc2FnZS53YWxfZnBpIGJlZm9yZSBhbmQgYWZ0ZXIgcHJ1bmlu Zy4gIE9uY2UgdGhlIGZyZWV6ZQotCQkJICogYW5kIHBydW5lIHJlY29yZHMgd2VyZSBjb21iaW5l ZCwgdGhpcyBoZXVyaXN0aWMgY291bGRuJ3QgYmUKLQkJCSAqIHVzZWQgYW55bW9yZS4gIFRoZSBv cHBvcnR1bmlzdGljIGZyZWV6ZSBoZXVyaXN0aWMgbXVzdCBiZQotCQkJICogaW1wcm92ZWQ7IGhv d2V2ZXIsIGZvciBub3csIHRyeSB0byBhcHByb3hpbWF0ZSB0aGUgb2xkIGxvZ2ljLgotCQkJICov Ci0JCQlpZiAocHJzdGF0ZS5hbGxfdmlzaWJsZSAmJiBwcnN0YXRlLmFsbF9mcm96ZW4gJiYgcHJz dGF0ZS5uZnJvemVuID4gMCkKLQkJCXsKLQkJCQkvKgotCQkJCSAqIEZyZWV6aW5nIHdvdWxkIG1h a2UgdGhlIHBhZ2UgYWxsLWZyb3plbi4gIEhhdmUgYWxyZWFkeQotCQkJCSAqIGVtaXR0ZWQgYW4g RlBJIG9yIHdpbGwgZG8gc28gYW55d2F5PwotCQkJCSAqLwotCQkJCWlmIChSZWxhdGlvbk5lZWRz V0FMKHJlbGF0aW9uKSkKLQkJCQl7Ci0JCQkJCWlmIChkaWRfdHVwbGVfaGludF9mcGkpCi0JCQkJ CQlkb19mcmVlemUgPSB0cnVlOwotCQkJCQllbHNlIGlmIChkb19wcnVuZSkKLQkJCQkJewotCQkJ CQkJaWYgKFhMb2dDaGVja0J1ZmZlck5lZWRzQmFja3VwKGJ1ZmZlcikpCi0JCQkJCQkJZG9fZnJl ZXplID0gdHJ1ZTsKLQkJCQkJfQotCQkJCQllbHNlIGlmIChkb19oaW50X2Z1bGxfb3JfcHJ1bmFi bGUpCi0JCQkJCXsKLQkJCQkJCWlmIChYTG9nSGludEJpdElzTmVlZGVkKCkgJiYgWExvZ0NoZWNr QnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkKLQkJCQkJCQlkb19mcmVlemUgPSB0cnVlOwotCQkJ CQl9Ci0JCQkJfQotCQkJfQotCQl9Ci0JfQotCi0JaWYgKGRvX2ZyZWV6ZSkKLQl7Ci0JCS8qCi0J CSAqIFZhbGlkYXRlIHRoZSB0dXBsZXMgd2Ugd2lsbCBiZSBmcmVlemluZyBiZWZvcmUgZW50ZXJp bmcgdGhlCi0JCSAqIGNyaXRpY2FsIHNlY3Rpb24uCi0JCSAqLwotCQloZWFwX3ByZV9mcmVlemVf Y2hlY2tzKGJ1ZmZlciwgcHJzdGF0ZS5mcm96ZW4sIHByc3RhdGUubmZyb3plbik7Ci0JfQotCWVs c2UgaWYgKHByc3RhdGUubmZyb3plbiA+IDApCi0JewotCQkvKgotCQkgKiBUaGUgcGFnZSBjb250 YWluZWQgc29tZSB0dXBsZXMgdGhhdCB3ZXJlIG5vdCBhbHJlYWR5IGZyb3plbiwgYW5kIHdlCi0J CSAqIGNob3NlIG5vdCB0byBmcmVlemUgdGhlbSBub3cuICBUaGUgcGFnZSB3b24ndCBiZSBhbGwt ZnJvemVuIHRoZW4uCi0JCSAqLwotCQlBc3NlcnQoIXByc3RhdGUucGFnZWZyei5mcmVlemVfcmVx dWlyZWQpOwotCi0JCXByc3RhdGUuYWxsX2Zyb3plbiA9IGZhbHNlOwotCQlwcnN0YXRlLm5mcm96 ZW4gPSAwOwkvKiBhdm9pZCBtaXNjb3VudHMgaW4gaW5zdHJ1bWVudGF0aW9uICovCi0JfQotCWVs c2UKLQl7Ci0JCS8qCi0JCSAqIFdlIGhhdmUgbm8gZnJlZXplIHBsYW5zIHRvIGV4ZWN1dGUuICBU aGUgcGFnZSBtaWdodCBhbHJlYWR5IGJlCi0JCSAqIGFsbC1mcm96ZW4gKHBlcmhhcHMgb25seSBm b2xsb3dpbmcgcHJ1bmluZyksIHRob3VnaC4gIFN1Y2ggcGFnZXMKLQkJICogY2FuIGJlIG1hcmtl ZCBhbGwtZnJvemVuIGluIHRoZSBWTSBieSBvdXIgY2FsbGVyLCBldmVuIHRob3VnaCBub25lCi0J CSAqIG9mIGl0cyB0dXBsZXMgd2VyZSBuZXdseSBmcm96ZW4gaGVyZS4KLQkJICovCi0JfQotCi0J LyoKLQkgKiBJdCB3YXMgY29udmVuaWVudCB0byBpZ25vcmUgTFBfREVBRCBpdGVtcyBpbiBhbGxf dmlzaWJsZSBlYXJsaWVyIG9uIHRvCi0JICogbWFrZSB0aGUgY2hvaWNlIG9mIHdoZXRoZXIgb3Ig bm90IHRvIGZyZWV6ZSB0aGUgcGFnZSB1bmFmZmVjdGVkIGJ5IHRoZQotCSAqIHNob3J0LXRlcm0g cHJlc2VuY2Ugb2YgTFBfREVBRCBpdGVtcy4gIFRoZXNlIExQX0RFQUQgaXRlbXMgd2VyZQotCSAq IGVmZmVjdGl2ZWx5IGFzc3VtZWQgdG8gYmUgTFBfVU5VU0VEIGl0ZW1zIGluIHRoZSBtYWtpbmcu ICBJdCBkb2Vzbid0Ci0JICogbWF0dGVyIHdoaWNoIHZhY3V1bSBoZWFwIHBhc3MgKGluaXRpYWwg cGFzcyBvciBmaW5hbCBwYXNzKSBlbmRzIHVwCi0JICogc2V0dGluZyB0aGUgcGFnZSBhbGwtZnJv emVuLCBhcyBsb25nIGFzIHRoZSBvbmdvaW5nIFZBQ1VVTSBkb2VzIGl0LgotCSAqCi0JICogTm93 IHRoYXQgZnJlZXppbmcgaGFzIGJlZW4gZmluYWxpemVkLCB1bnNldCBhbGxfdmlzaWJsZSBpZiB0 aGVyZSBhcmUKLQkgKiBhbnkgTFBfREVBRCBpdGVtcyBvbiB0aGUgcGFnZS4gSXQgbmVlZHMgdG8g cmVmbGVjdCB0aGUgcHJlc2VudCBzdGF0ZSBvZgotCSAqIHRoZSBwYWdlIHdoZW4gdXNpbmcgaXQg dG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIHVwZGF0ZSB0aGUgVk0uCi0JICoKLQkgKiBL ZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHRoZSBwYWdlIHdhcyBhbGwtZnJvemVuIGV4Y2Vw dCBMUF9ERUFECi0JICogaXRlbXMgZm9yIHRoZSBwdXJwb3NlcyBvZiBjYWxjdWxhdGluZyB0aGUg c25hcHNob3QgY29uZmxpY3QgaG9yaXpvbiwKLQkgKiB0aG91Z2guCisJICogV2UgbXVzdCBkZWNp ZGUgd2hldGhlciBvciBub3QgdG8gZnJlZXplIGJlZm9yZSBkZWNpZGluZyBpZiBhbmQgd2hhdCB0 bworCSAqIHNldCBpbiB0aGUgVk0uCiAJICovCi0JYWxsX2Zyb3plbl9leGNlcHRfbHBfZGVhZCA9 IHByc3RhdGUuYWxsX2Zyb3plbjsKLQlpZiAocHJzdGF0ZS5scGRlYWRfaXRlbXMgPiAwKQotCXsK LQkJcHJzdGF0ZS5hbGxfdmlzaWJsZSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF9mcm96ZW4gPSBm YWxzZTsKLQl9CisJZG9fZnJlZXplID0gaGVhcF9wYWdlX3dpbGxfZnJlZXplKHJlbGF0aW9uLCBi dWZmZXIsCisJCQkJCQkJCQkgIGRvX3BydW5lLAorCQkJCQkJCQkJICBkb19oaW50X2Z1bGxfb3Jf cHJ1bmFibGUsCisJCQkJCQkJCQkgIGRpZF90dXBsZV9oaW50X2ZwaSwKKwkJCQkJCQkJCSAgJnBy c3RhdGUsCisJCQkJCQkJCQkgICZhbGxfZnJvemVuX2V4Y2VwdF9scF9kZWFkKTsKKworCWRvX3Nl dF92bSA9IGhlYXBfcGFnZV93aWxsX3VwZGF0ZV92bShyZWxhdGlvbiwKKwkJCQkJCQkJCQkgYnVm ZmVyLCBibG9ja25vLCBwYWdlLAorCQkJCQkJCQkJCSByZWFzb24sCisJCQkJCQkJCQkJIGRvX3By dW5lLCBkb19mcmVlemUsCisJCQkJCQkJCQkJIGJsa19rbm93bl9hdiwKKwkJCQkJCQkJCQkgJnBy c3RhdGUsCisJCQkJCQkJCQkJICZ2bWJ1ZmZlciwKKwkJCQkJCQkJCQkgJnZtZmxhZ3MsICZzZXRf cGRfYWxsX3Zpc2libGUpOwogCi0JLyoKLQkgKiBJZiB0aGlzIGlzIGFuIG9uLWFjY2VzcyBjYWxs IGFuZCB3ZSdyZSBub3QgYWN0dWFsbHkgcHJ1bmluZywgYXZvaWQKLQkgKiBzZXR0aW5nIHRoZSB2 aXNpYmlsaXR5IG1hcCBpZiBpdCB3b3VsZCBuZXdseSBkaXJ0eSB0aGUgaGVhcCBwYWdlIG9yLCBp ZgotCSAqIHRoZSBwYWdlIGlzIGFscmVhZHkgZGlydHksIGlmIGRvaW5nIHNvIHdvdWxkIHJlcXVp cmUgaW5jbHVkaW5nIGEKLQkgKiBmdWxsLXBhZ2UgaW1hZ2UgKEZQSSkgb2YgdGhlIGhlYXAgcGFn ZSBpbiB0aGUgV0FMLiBUaGlzIHNpdHVhdGlvbgotCSAqIHNob3VsZCBiZSByYXJlLCBhcyBvbi1h Y2Nlc3MgcHJ1bmluZyBpcyBvbmx5IGF0dGVtcHRlZCB3aGVuCi0JICogcGRfcHJ1bmVfeGlkIGlz IHZhbGlkLgotCSAqLwotCWlmIChyZWFzb24gPT0gUFJVTkVfT05fQUNDRVNTICYmCi0JCXByc3Rh dGUuY29uc2lkZXJfdXBkYXRlX3ZtICYmCi0JCXByc3RhdGUuYWxsX3Zpc2libGUgJiYKLQkJIWRv X3BydW5lICYmICFkb19mcmVlemUgJiYKLQkJKCFCdWZmZXJJc0RpcnR5KGJ1ZmZlcikgfHwgWExv Z0NoZWNrQnVmZmVyTmVlZHNCYWNrdXAoYnVmZmVyKSkpCi0JewotCQlwcnN0YXRlLmNvbnNpZGVy X3VwZGF0ZV92bSA9IGZhbHNlOwotCQlwcnN0YXRlLmFsbF92aXNpYmxlID0gcHJzdGF0ZS5hbGxf ZnJvemVuID0gZmFsc2U7Ci0JfQotCi0JQXNzZXJ0KCFwcnN0YXRlLmFsbF9mcm96ZW4gfHwgcHJz dGF0ZS5hbGxfdmlzaWJsZSk7Ci0KLQkvKgotCSAqIEhhbmRsZSBzZXR0aW5nIHZpc2liaWxpdHkg bWFwIGJpdCBiYXNlZCBvbiBpbmZvcm1hdGlvbiBmcm9tIHRoZSBWTSAoaWYKLQkgKiBwcm92aWRl ZCwgZS5nLiBieSB2YWN1dW0gZnJvbSB0aGUgbGFzdCBoZWFwX3ZhY19zY2FuX25leHRfYmxvY2so KQotCSAqIGNhbGwpLCBhbmQgZnJvbSBhbGxfdmlzaWJsZSBhbmQgYWxsX2Zyb3plbiB2YXJpYWJs ZXMuCi0JICovCi0JaWYgKHByc3RhdGUuY29uc2lkZXJfdXBkYXRlX3ZtKQotCXsKLQkJLyoKLQkJ ICogQ2xlYXIgYW55IFZNIGNvcnJ1cHRpb24uIFRoaXMgZG9lcyBub3QgbmVlZCB0byBiZSBpbiBh IGNyaXRpY2FsCi0JCSAqIHNlY3Rpb24sIHNvIHdlIGRvIGl0IGZpcnN0LiBJZiBQRF9BTExfVklT SUJMRSBpcyBpbmNvcnJlY3RseSBzZXQsCi0JCSAqIHdlIG1heSBtYXJrIHRoZSBoZWFwIHBhZ2Ug YnVmZmVyIGRpcnR5IGhlcmUgYW5kIGNvdWxkIGVuZCB1cCBkb2luZwotCQkgKiBzbyBhZ2FpbiBs YXRlci4gVGhpcyBpcyBub3QgYSBjb3JyZWN0bmVzcyBpc3N1ZSBhbmQgaXMgaW4gdGhlIHBhdGgK LQkJICogb2YgVk0gY29ycnVwdGlvbiwgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB0 aGUgZXh0cmEKLQkJICogcGVyZm9ybWFuY2Ugb3ZlcmhlYWQuCi0JCSAqLwotCQlpZiAoaWRlbnRp ZnlfYW5kX2ZpeF92bV9jb3JydXB0aW9uKHJlbGF0aW9uLAotCQkJCQkJCQkJCSAgIGJsb2Nrbm8s IGJ1ZmZlciwgcGFnZSwKLQkJCQkJCQkJCQkgICBibGtfa25vd25fYXYsIHByc3RhdGUubHBkZWFk X2l0ZW1zLCB2bWJ1ZmZlcikpCi0JCXsKLQkJCS8qIElmIHdlIGZpeCBjb3JydXB0aW9uLCBkb24n dCB1cGRhdGUgdGhlIFZNIGZ1cnRoZXIgKi8KLQkJfQotCi0JCS8qIERldGVybWluZSBpZiB3ZSBh Y3R1YWxseSBuZWVkIHRvIHNldCB0aGUgVk0gYW5kIHdoaWNoIGJpdHMgdG8gc2V0LiAqLwotCQll bHNlIGlmIChwcnN0YXRlLmFsbF92aXNpYmxlICYmCi0JCQkJICghYmxrX2tub3duX2F2IHx8Ci0J CQkJICAocHJzdGF0ZS5hbGxfZnJvemVuICYmICFWTV9BTExfRlJPWkVOKHJlbGF0aW9uLCBibG9j a25vLCAmdm1idWZmZXIpKSkpCi0JCXsKLQkJCXZtZmxhZ3MgfD0gVklTSUJJTElUWU1BUF9BTExf VklTSUJMRTsKLQkJCWlmIChwcnN0YXRlLmFsbF9mcm96ZW4pCi0JCQkJdm1mbGFncyB8PSBWSVNJ QklMSVRZTUFQX0FMTF9GUk9aRU47Ci0JCX0KLQl9Ci0KLQlkb19zZXRfdm0gPSB2bWZsYWdzICYg VklTSUJJTElUWU1BUF9WQUxJRF9CSVRTOworCS8qIFNhdmUgdGhlc2UgZm9yIHRoZSBjYWxsZXIg aW4gY2FzZSB3ZSBsYXRlciB6ZXJvIG91dCB2bWZsYWdzICovCisJcHJlc3VsdC0+bmV3X3ZtYml0 cyA9IHZtZmxhZ3M7CiAKLQkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBhIGNyaXRp Y2FsIHNlY3Rpb24gKi8KKwkvKiBMb2NrIHZtYnVmZmVyIGJlZm9yZSBlbnRlcmluZyBjcml0aWNh bCBzZWN0aW9uICovCiAJaWYgKGRvX3NldF92bSkKIAkJTG9ja0J1ZmZlcih2bWJ1ZmZlciwgQlVG RkVSX0xPQ0tfRVhDTFVTSVZFKTsKIAogCS8qCi0JICogRG9uJ3Qgc2V0IFBEX0FMTF9WSVNJQkxF IHVubGVzcyB3ZSBhbHNvIHBsYW4gdG8gc2V0IHRoZSBWTS4gV2hpbGUgaXQgaXMKLQkgKiBjb3Jy ZWN0IGZvciBhIGhlYXAgcGFnZSB0byBoYXZlIFBEX0FMTF9WSVNJQkxFIGV2ZW4gaWYgdGhlIFZN IGlzIG5vdAotCSAqIHNldCwgd2Ugc3Ryb25nbHkgcHJlZmVyIHRvIGtlZXAgdGhlbSBpbiBzeW5j LgotCSAqCi0JICogUHJpb3IgdG8gUG9zdGdyZXMgMTksIGl0IHdhcyBwb3NzaWJsZSBmb3IgdGhl IHBhZ2UtbGV2ZWwgYml0IHRvIGJlIHNldAotCSAqIGFuZCB0aGUgVk0gYml0IHRvIGJlIGNsZWFy LiBUaGlzIGNvdWxkIGhhcHBlbiBpZiB3ZSBjcmFzaGVkIGFmdGVyCi0JICogc2V0dGluZyBQRF9B TExfVklTSUJMRSBidXQgYmVmb3JlIHNldHRpbmcgYml0cyBpbiB0aGUgVk0uCisJICogVGltZSB0 byBhY3R1YWxseSBtYWtlIHRoZSBjaGFuZ2VzIHRvIHRoZSBwYWdlIGFuZCBsb2cgdGhlbS4gQW55 IGVycm9yCisJICogd2hpbGUgYXBwbHlpbmcgdGhlIGNoYW5nZXMgaXMgY3JpdGljYWwuCiAJICov Ci0Jc2V0X3BkX2FsbF92aXNpYmxlID0gZG9fc2V0X3ZtICYmICFQYWdlSXNBbGxWaXNpYmxlKHBh Z2UpOwotCi0JLyogU2F2ZSB0aGVzZSBmb3IgdGhlIGNhbGxlciBpbiBjYXNlIHdlIGxhdGVyIHpl cm8gb3V0IHZtZmxhZ3MgKi8KLQlwcmVzdWx0LT5uZXdfdm1iaXRzID0gdm1mbGFnczsKLQotCS8q IEFueSBlcnJvciB3aGlsZSBhcHBseWluZyB0aGUgY2hhbmdlcyBpcyBjcml0aWNhbCAqLwogCVNU QVJUX0NSSVRfU0VDVElPTigpOwogCiAJaWYgKGRvX2hpbnRfZnVsbF9vcl9wcnVuYWJsZSkKLS0g CjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Disposition: attachment; filename="v13-0016-Unset-all-visible-sooner-if-not-freezing.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy5016 RnJvbSA4ZGU5MGIxODAxYWMzYjU5OTc3ZDkwYzE1YWVlODU0YjQwZjNmMDQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE0OjM1OjEzIC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTYvMjBdIFVuc2V0IGFsbC12aXNpYmxlIHNvb25lciBpZiBub3QgZnJlZXppbmcK CkluIHBydW5lL2ZyZWV6ZSBjb2RlLCB3ZSBkZWxheSB1bnNldHRpbmcgYWxsLXZpc2libGUvYWxs LWZyb3plbiBpbiB0aGUKcHJlc2VuY2Ugb2YgZGVhZCBpdGVtcyB0byBhbGxvdyBvcHBvcnR1bmlz dGljYWxseSBmcmVlemluZyB0dXBsZXMgaWYgdGhlCndob2xlIHBhZ2Ugd291bGQgYmUgZnJvemVu IGV4Y2VwdCBmb3IgdGhvc2UgZGVhZCBpdGVtcyAtLSB3aGljaCBhcmUKcmVtb3ZlZCBsYXRlciBp biB2YWN1dW0ncyB0aGlyZCBwaGFzZS4KCkZ1dHVyZSBjb21taXRzIHdpbGwgYWxsb3cgb24tYWNj ZXNzIHBydW5pbmcgdG8gc2V0IHRoZSBWTSwgd2hpY2ggbWVhbnMKYWxsLXZpc2libGUgd2lsbCBi ZSBpbml0aWFsaXplZCB0byB0cnVlIGluc3RlYWQgb2YgZmFsc2UgYW5kIHdlIHdpbGwgZG8KZXh0 cmEgYm9va2tlZXBpbmcgaW4gaGVhcF9wcnVuZV91bmNoYW5nZWRfbHBfbm9ybWFsKCkgdG8ga2Vl cCB0cmFjayBvZgp3aGV0aGVyIG9yIG5vdCB0aGUgcGFnZSBpcyBhbGwtdmlzaWJsZS4KCkJlY2F1 c2Ugb24tYWNjZXNzIHBydW5pbmcgd2lsbCBub3QgZnJlZXplIHR1cGxlcywgaXQgbWFrZXMgc2Vu c2UgdG8KdW5zZXQgYWxsLXZpc2libGUgYXMgc29vbiBhcyB3ZSBlbmNvdW50ZXIgYW4gTFBfREVB RCBpdGVtIGFuZAphdm9pZCBjb250aW51ZWQgYm9va2tlZXBpbmcgc2luY2Ugd2Uga25vdyB0aGUg cGFnZSBpcyBub3QgYWxsLXZpc2libGUKYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcmVtb3ZlIHRo b3NlIGRlYWQgaXRlbXMuCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMg fCAxMCArKysrKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3BydW5laGVhcC5j IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKaW5kZXggYjhjYTFiZTE1YTAu LjRmNGEwYWYxZjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhl YXAuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYwpAQCAtMTUwMyw4 ICsxNTAzLDExIEBAIGhlYXBfcHJ1bmVfcmVjb3JkX2RlYWQoUHJ1bmVTdGF0ZSAqcHJzdGF0ZSwg T2Zmc2V0TnVtYmVyIG9mZm51bSwKIAogCS8qCiAJICogRGVsaWJlcmF0ZWx5IGRlbGF5IHVuc2V0 dGluZyBhbGxfdmlzaWJsZSB1bnRpbCBsYXRlciBkdXJpbmcgcHJ1bmluZy4KLQkgKiBSZW1vdmFi bGUgZGVhZCB0dXBsZXMgc2hvdWxkbid0IHByZWNsdWRlIGZyZWV6aW5nIHRoZSBwYWdlLgorCSAq IFJlbW92YWJsZSBkZWFkIHR1cGxlcyBzaG91bGRuJ3QgcHJlY2x1ZGUgZnJlZXppbmcgdGhlIHBh Z2UuIElmIHdlIHdvbid0CisJICogYXR0ZW1wdCBmcmVlemluZywganVzdCB1bnNldCBhbGwtdmlz aWJsZSBub3csIHRob3VnaC4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQor CQlwcnN0YXRlLT5hbGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAog CS8qIFJlY29yZCB0aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRv ZmZzZXRzW3Byc3RhdGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKQEAgLTE3NjIsOCArMTc2 NSwxMSBAQCBoZWFwX3BydW5lX3JlY29yZF91bmNoYW5nZWRfbHBfZGVhZChQYWdlIHBhZ2UsIFBy dW5lU3RhdGUgKnByc3RhdGUsIE9mZnNldE51bWJlcgogCSAqIFNpbWlsYXJseSwgZG9uJ3QgdW5z ZXQgYWxsX3Zpc2libGUgdW50aWwgbGF0ZXIsIGF0IHRoZSBlbmQgb2YKIAkgKiBoZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZSgpLiAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIGF0dGVtcHQgdG8gZnJl ZXplCiAJICogdGhlIHBhZ2UgYWZ0ZXIgcHJ1bmluZy4gIEFzIGxvbmcgYXMgd2UgdW5zZXQgaXQg YmVmb3JlIHVwZGF0aW5nIHRoZQotCSAqIHZpc2liaWxpdHkgbWFwLCB0aGlzIHdpbGwgYmUgY29y cmVjdC4KKwkgKiB2aXNpYmlsaXR5IG1hcCwgdGhpcyB3aWxsIGJlIGNvcnJlY3QuIElmIHdlIHdv bid0IGF0dGVtcHQgZnJlZXppbmcsCisJICogdGhvdWdoLCBqdXN0IHVuc2V0IGFsbC12aXNpYmxl IG5vdy4KIAkgKi8KKwlpZiAoIXByc3RhdGUtPmF0dGVtcHRfZnJlZXplKQorCQlwcnN0YXRlLT5h bGxfdmlzaWJsZSA9IHByc3RhdGUtPmFsbF9mcm96ZW4gPSBmYWxzZTsKIAogCS8qIFJlY29yZCB0 aGUgZGVhZCBvZmZzZXQgZm9yIHZhY3V1bSAqLwogCXByc3RhdGUtPmRlYWRvZmZzZXRzW3Byc3Rh dGUtPmxwZGVhZF9pdGVtcysrXSA9IG9mZm51bTsKLS0gCjIuNDMuMAoK --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0020-Set-pd_prune_xid-on-insert.patch" Content-Disposition: attachment; filename="v13-0020-Set-pd_prune_xid-on-insert.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy5c20 RnJvbSBlMDQxZDRhNTcxZDc3ZjkxNTlkOTE0YTg5ZGNmYzQ5YTk0MTk0NjNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUdWUsIDI5IEp1bCAyMDI1IDE2OjEyOjU2IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMjAvMjBdIFNldCBwZF9wcnVuZV94aWQgb24gaW5zZXJ0CgpOb3cgdGhhdCB3ZSBj YW4gc2V0IHRoZSBWTSBkdXJpbmcgcmVhZC1vbmx5IHF1ZXJpZXMsIGl0IG1ha2VzIHNlbnNlIHRv CnN0YXJ0IHNldHRpbmcgdGhlIHBhZ2UgcHJ1bmFibGUgaGludCBvbiBpbnNlcnQuIFRoaXMgd2ls bCBhbGxvdwpoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIHRvIGJlIGNhbGxlZCB3aGVuIHRo ZSBwYWdlIGlzIGZ1bGwgb3IKbW9zdGx5IGZ1bGwuCgpGb3IgeWVhcnMgdGhlcmUgaGFzIGJlZW4g YSBub3RlIGluIGhlYXBfaW5zZXJ0KCkgYW5kIGhlYXBfbXVsdGlfaW5zZXJ0KCkKcG9pbnRpbmcg b3V0IHRoYXQgc2V0dGluZyBwZF9wcnVuZV94aWQgd291bGQgaGVscCBjbGVhbiB1cCBhYm9ydGVk Cmluc2VydGVkIHR1cGxlcyB0aGF0IHdvdWxkIG90aGVyd2lzZSBub3QgYmUgY2xlYW5lZCB1cCB1 bnRpbCB2YWN1dW0uClNvLCB0aGF0J3MgYW5vdGhlciBiZW5lZml0IG9mIHNldHRpbmcgaXQuCgpT ZXR0aW5nIHBkX3BydW5lX3hpZCBvbiBpbnNlcnQgY2F1c2VzIGEgcGFnZSB0byBiZSBwcnVuZWQg YW5kIHRoZW4Kd3JpdHRlbiBvdXQgd2hpY2ggdGhlbiBhZmZlY3RzIHRoZSByZXBvcnRlZCBudW1i ZXIgb2YgaGl0cyBpbiB0aGUKaW5kZXgta2lsbHR1cGxlcyBpc29sYXRpb24gdGVzdC4gVGhpcyBp cyBhIHF1aXJrIG9mIGhvdyBoaXRzIGFyZSB0cmFja2VkCndoaWNoIHNvbWV0aW1lcyBsZWFkcyB0 aGVtIHRvIGJlIGRvdWJsZSBjb3VudGVkLiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZQpmaXhlZCBv ciBjaGFuZ2VkIGluZGVwZW5kZW50bHkuCgpjaS1vcy1vbmx5OgotLS0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL2hlYXBhbS5jICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKystLS0tLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMgICAgICAgICB8IDE1ICsrKysr KysrKystCiAuLi4vaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBsZXMub3V0ICAgfCAg NiArKy0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmluZGV4IGVlZGM3Y2IwN2JmLi40NDJlNTU3YWVh ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3Jj L2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMKQEAgLTIxMDUsNiArMjEwNSw3IEBAIGhlYXBf aW5zZXJ0KFJlbGF0aW9uIHJlbGF0aW9uLCBIZWFwVHVwbGUgdHVwLCBDb21tYW5kSWQgY2lkLAog CVRyYW5zYWN0aW9uSWQgeGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlIZWFwVHVw bGUJaGVhcHR1cDsKIAlCdWZmZXIJCWJ1ZmZlcjsKKwlQYWdlCQlwYWdlOwogCUJ1ZmZlcgkJdm1i dWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCWJvb2wJCWFsbF92aXNpYmxlX2NsZWFyZWQgPSBmYWxz ZTsKIApAQCAtMjE2NCwxNSArMjE2NSwxOSBAQCBoZWFwX2luc2VydChSZWxhdGlvbiByZWxhdGlv biwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAl9CiAKIAkvKgotCSAqIFhYWCBTaG91 bGQgd2Ugc2V0IFBhZ2VTZXRQcnVuYWJsZSBvbiB0aGlzIHBhZ2UgPworCSAqIFNldCBwZF9wcnVu ZV94aWQgdG8gdHJpZ2dlciBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIG9uY2UgdGhlIHBh Z2UKKwkgKiBpcyBmdWxsIHNvIHRoYXQgd2UgY2FuIHNldCB0aGUgcGFnZSBhbGwtdmlzaWJsZSBp biB0aGUgVk0uCiAJICoKLQkgKiBUaGUgaW5zZXJ0aW5nIHRyYW5zYWN0aW9uIG1heSBldmVudHVh bGx5IGFib3J0IHRodXMgbWFraW5nIHRoaXMgdHVwbGUKLQkgKiBERUFEIGFuZCBoZW5jZSBhdmFp bGFibGUgZm9yIHBydW5pbmcuIFRob3VnaCB3ZSBkb24ndCB3YW50IHRvIG9wdGltaXplCi0JICog Zm9yIGFib3J0cywgaWYgbm8gb3RoZXIgdHVwbGUgaW4gdGhpcyBwYWdlIGlzIFVQREFURWQvREVM RVRFZCwgdGhlCi0JICogYWJvcnRlZCB0dXBsZSB3aWxsIG5ldmVyIGJlIHBydW5lZCB1bnRpbCBu ZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCisJICogU2V0dGluZyBwZF9wcnVuZV94aWQgaXMgYWxz byBoYW5keSBpZiB0aGUgaW5zZXJ0aW5nIHRyYW5zYWN0aW9uCisJICogZXZlbnR1YWxseSBhYm9y dHMgbWFraW5nIHRoaXMgdHVwbGUgREVBRCBhbmQgaGVuY2UgYXZhaWxhYmxlIGZvcgorCSAqIHBy dW5pbmcuIElmIG5vIG90aGVyIHR1cGxlIGluIHRoaXMgcGFnZSBpcyBVUERBVEVkL0RFTEVURWQs IHRoZSBhYm9ydGVkCisJICogdHVwbGUgd291bGQgbmV2ZXIgb3RoZXJ3aXNlIGJlIHBydW5lZCB1 bnRpbCBuZXh0IHZhY3V1bSBpcyB0cmlnZ2VyZWQuCiAJICoKLQkgKiBJZiB5b3UgZG8gYWRkIFBh Z2VTZXRQcnVuYWJsZSBoZXJlLCBhZGQgaXQgaW4gaGVhcF94bG9nX2luc2VydCB0b28uCisJICog RG9uJ3Qgc2V0IGl0IGlmIHdlIGFyZSBpbiBib290c3RyYXAgbW9kZSwgdGhvdWdoLgogCSAqLwor CXBhZ2UgPSBCdWZmZXJHZXRQYWdlKGJ1ZmZlcik7CisJaWYgKFRyYW5zYWN0aW9uSWRJc05vcm1h bCh4aWQpKQorCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgeGlkKTsKIAogCU1hcmtCdWZmZXJEaXJ0 eShidWZmZXIpOwogCkBAIC0yMTgyLDcgKzIxODcsNiBAQCBoZWFwX2luc2VydChSZWxhdGlvbiBy ZWxhdGlvbiwgSGVhcFR1cGxlIHR1cCwgQ29tbWFuZElkIGNpZCwKIAkJeGxfaGVhcF9pbnNlcnQg eGxyZWM7CiAJCXhsX2hlYXBfaGVhZGVyIHhsaGRyOwogCQlYTG9nUmVjUHRyCXJlY3B0cjsKLQkJ UGFnZQkJcGFnZSA9IEJ1ZmZlckdldFBhZ2UoYnVmZmVyKTsKIAkJdWludDgJCWluZm8gPSBYTE9H X0hFQVBfSU5TRVJUOwogCQlpbnQJCQlidWZmbGFncyA9IDA7CiAKQEAgLTI1NDYsOCArMjU1MCwx MyBAQCBoZWFwX211bHRpX2luc2VydChSZWxhdGlvbiByZWxhdGlvbiwgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywgaW50IG50dXBsZXMsCiAJCX0KIAogCQkvKgotCQkgKiBYWFggU2hvdWxkIHdlIHNl dCBQYWdlU2V0UHJ1bmFibGUgb24gdGhpcyBwYWdlID8gU2VlIGhlYXBfaW5zZXJ0KCkKKwkJICog U2V0IHBkX3BydW5lX3hpZC4gU2VlIGhlYXBfaW5zZXJ0KCkgZm9yIG1vcmUgb24gd2h5IHdlIGRv IHRoaXMgd2hlbgorCQkgKiBpbnNlcnRpbmcgdHVwbGVzLiBUaGlzIG9ubHkgbWFrZXMgc2Vuc2Ug aWYgd2UgYXJlbid0IGFscmVhZHkKKwkJICogc2V0dGluZyB0aGUgcGFnZSBmcm96ZW4gaW4gdGhl IFZNLiBXZSBhbHNvIGRvbid0IHNldCBpdCBpbgorCQkgKiBib290c3RyYXAgbW9kZS4KIAkJICov CisJCWlmICghYWxsX2Zyb3plbl9zZXQgJiYgVHJhbnNhY3Rpb25JZElzTm9ybWFsKHhpZCkpCisJ CQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgeGlkKTsKIAogCQlNYXJrQnVmZmVyRGlydHkoYnVmZmVy KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX3hsb2cuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKaW5kZXggODRjMjkyNDk2N2Qu LmVlZDA2MTljMGFkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1f eGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV94bG9nLmMKQEAgLTQ4 MSw2ICs0ODEsMTIgQEAgaGVhcF94bG9nX2luc2VydChYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCkK IAogCQlmcmVlc3BhY2UgPSBQYWdlR2V0SGVhcEZyZWVTcGFjZShwYWdlKTsgLyogbmVlZGVkIHRv IHVwZGF0ZSBGU00gYmVsb3cgKi8KIAorCQkvKgorCQkgKiBTZXQgdGhlIHBhZ2UgcHJ1bmFibGUg dG8gdHJpZ2dlciBvbi1hY2Nlc3MgcHJ1bmluZyBsYXRlciB3aGljaCBtYXkKKwkJICogc2V0IHRo ZSBwYWdlIGFsbC12aXNpYmxlIGluIHRoZSBWTS4KKwkJICovCisJCVBhZ2VTZXRQcnVuYWJsZShw YWdlLCBYTG9nUmVjR2V0WGlkKHJlY29yZCkpOworCiAJCVBhZ2VTZXRMU04ocGFnZSwgbHNuKTsK IAogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9DTEVBUkVEKQpA QCAtNjMwLDkgKzYzNiwxNiBAQCBoZWFwX3hsb2dfbXVsdGlfaW5zZXJ0KFhMb2dSZWFkZXJTdGF0 ZSAqcmVjb3JkKQogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExIX0lOU0VSVF9BTExfVklTSUJMRV9D TEVBUkVEKQogCQkJUGFnZUNsZWFyQWxsVmlzaWJsZShwYWdlKTsKIAotCQkvKiBYTEhfSU5TRVJU X0FMTF9GUk9aRU5fU0VUIGltcGxpZXMgdGhhdCBhbGwgdHVwbGVzIGFyZSB2aXNpYmxlICovCisJ CS8qCisJCSAqIFhMSF9JTlNFUlRfQUxMX0ZST1pFTl9TRVQgaW1wbGllcyB0aGF0IGFsbCB0dXBs ZXMgYXJlIHZpc2libGUuIElmCisJCSAqIHdlIGFyZSBub3Qgc2V0dGluZyB0aGUgcGFnZSBmcm96 ZW4sIHRoZW4gc2V0IHRoZSBwYWdlJ3MgcHJ1bmFibGUKKwkJICogaGludCBzbyB0aGF0IHdlIHRy aWdnZXIgb24tYWNjZXNzIHBydW5pbmcgbGF0ZXIgd2hpY2ggbWF5IHNldCB0aGUKKwkJICogcGFn ZSBhbGwtdmlzaWJsZSBpbiB0aGUgVk0uCisJCSAqLwogCQlpZiAoeGxyZWMtPmZsYWdzICYgWExI X0lOU0VSVF9BTExfRlJPWkVOX1NFVCkKIAkJCVBhZ2VTZXRBbGxWaXNpYmxlKHBhZ2UpOworCQll bHNlCisJCQlQYWdlU2V0UHJ1bmFibGUocGFnZSwgWExvZ1JlY0dldFhpZChyZWNvcmQpKTsKIAog CQlNYXJrQnVmZmVyRGlydHkoYnVmZmVyKTsKIAl9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9pc29s YXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQgYi9zcmMvdGVzdC9pc29sYXRpb24v ZXhwZWN0ZWQvaW5kZXgta2lsbHR1cGxlcy5vdXQKaW5kZXggYmU3ZGRkNzU2ZWYuLmIyOWYyNDM0 YjAwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9pc29sYXRpb24vZXhwZWN0ZWQvaW5kZXgta2lsbHR1 cGxlcy5vdXQKKysrIGIvc3JjL3Rlc3QvaXNvbGF0aW9uL2V4cGVjdGVkL2luZGV4LWtpbGx0dXBs ZXMub3V0CkBAIC01NCw3ICs1NCw3IEBAIHN0ZXAgZmx1c2g6IFNFTEVDVCBGUk9NIHBnX3N0YXRf Zm9yY2VfbmV4dF9mbHVzaCgpOwogc3RlcCByZXN1bHQ6IFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCAr IGhlYXBfYmxrc19oaXQgLSBjb3VudGVyLmhlYXBfYWNjZXNzZXMgQVMgbmV3X2hlYXBfYWNjZXNz ZXMgRlJPTSBjb3VudGVyLCBwZ19zdGF0aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tp bGxfcHJpb3JfdHVwbGUnOwogbmV3X2hlYXBfYWNjZXNzZXMKIC0tLS0tLS0tLS0tLS0tLS0tCi0g ICAgICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgIDIKICgxIHJvdykKIAogc3RlcCBtZWFz dXJlOiBVUERBVEUgY291bnRlciBTRVQgaGVhcF9hY2Nlc3NlcyA9IChTRUxFQ1QgaGVhcF9ibGtz X3JlYWQgKyBoZWFwX2Jsa3NfaGl0IEZST00gcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVs bmFtZSA9ICdraWxsX3ByaW9yX3R1cGxlJyk7CkBAIC0xMzAsNyArMTMwLDcgQEAgc3RlcCBmbHVz aDogU0VMRUNUIEZST00gcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CiBzdGVwIHJlc3VsdDog U0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVhcF9ibGtzX2hpdCAtIGNvdW50ZXIuaGVhcF9hY2Nl c3NlcyBBUyBuZXdfaGVhcF9hY2Nlc3NlcyBGUk9NIGNvdW50ZXIsIHBnX3N0YXRpb19hbGxfdGFi bGVzIFdIRVJFIHJlbG5hbWUgPSAna2lsbF9wcmlvcl90dXBsZSc7CiBuZXdfaGVhcF9hY2Nlc3Nl cwogLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgICAgICAgICAxCisgICAgICAgICAgICAgICAg MgogKDEgcm93KQogCiBzdGVwIG1lYXN1cmU6IFVQREFURSBjb3VudGVyIFNFVCBoZWFwX2FjY2Vz c2VzID0gKFNFTEVDVCBoZWFwX2Jsa3NfcmVhZCArIGhlYXBfYmxrc19oaXQgRlJPTSBwZ19zdGF0 aW9fYWxsX3RhYmxlcyBXSEVSRSByZWxuYW1lID0gJ2tpbGxfcHJpb3JfdHVwbGUnKTsKQEAgLTI4 Myw3ICsyODMsNyBAQCBzdGVwIGZsdXNoOiBTRUxFQ1QgRlJPTSBwZ19zdGF0X2ZvcmNlX25leHRf Zmx1c2goKTsKIHN0ZXAgcmVzdWx0OiBTRUxFQ1QgaGVhcF9ibGtzX3JlYWQgKyBoZWFwX2Jsa3Nf aGl0IC0gY291bnRlci5oZWFwX2FjY2Vzc2VzIEFTIG5ld19oZWFwX2FjY2Vzc2VzIEZST00gY291 bnRlciwgcGdfc3RhdGlvX2FsbF90YWJsZXMgV0hFUkUgcmVsbmFtZSA9ICdraWxsX3ByaW9yX3R1 cGxlJzsKIG5ld19oZWFwX2FjY2Vzc2VzCiAtLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAgICAg ICAgIDEKKyAgICAgICAgICAgICAgICAyCiAoMSByb3cpCiAKIHN0ZXAgbWVhc3VyZTogVVBEQVRF IGNvdW50ZXIgU0VUIGhlYXBfYWNjZXNzZXMgPSAoU0VMRUNUIGhlYXBfYmxrc19yZWFkICsgaGVh cF9ibGtzX2hpdCBGUk9NIHBnX3N0YXRpb19hbGxfdGFibGVzIFdIRVJFIHJlbG5hbWUgPSAna2ls bF9wcmlvcl90dXBsZScpOwotLSAKMi40My4wCgo= --000000000000bebfe1063e66606b Content-Type: text/x-patch; charset="US-ASCII"; name="v13-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Disposition: attachment; filename="v13-0019-Reorder-heap_page_prune_and_freeze-parameters.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfd5sy5819 RnJvbSA2OTY4MzNhOTcxMDE4MGJlMWQ5MDUwN2E5ZjI2N2Q0NDM2MzI3YjJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDMxIEp1bCAyMDI1IDEyOjA4OjE4IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTMgMTkvMjBdIFJlb3JkZXIgaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUgcGFyYW1l dGVycwoKUmVvcmRlciBwYXJhbWV0ZXJzIHNvIHRoYXQgYWxsIG9mIHRoZSBvdXRwdXQgcGFyYW1l dGVycyBhcmUgdG9nZXRoZXIgYXQKdGhlIGVuZCBvZiB0aGUgcGFyYW1ldGVyIGxpc3QuCi0tLQog c3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMgIHwgMzggKysrKysrKysrKysrKyst LS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jIHwgIDYg KystLS0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaCAgICAgICAgICB8ICA0ICstLQogMyBm aWxlcyBjaGFuZ2VkLCAyNCBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9wcnVuZWhlYXAuYyBiL3NyYy9iYWNrZW5kL2Fj Y2Vzcy9oZWFwL3BydW5laGVhcC5jCmluZGV4IDMzYTM1ZGM1YWFiLi5jMWMwZGFlODdiYSAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL2hlYXAvcHJ1bmVoZWFwLmMKQEAgLTI5NywxMCArMjk3LDEwIEBAIGhlYXBf cGFnZV9wcnVuZV9vcHQoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsIEJ1ZmZlciAq dm1idWZmZXIpCiAJCQkgKiBub3QgdGhlIHJlbGF0aW9uIGhhcyBpbmRleGVzLCBzaW5jZSB3ZSBj YW5ub3Qgc2FmZWx5IGRldGVybWluZQogCQkJICogdGhhdCBkdXJpbmcgb24tYWNjZXNzIHBydW5p bmcgd2l0aCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4KIAkJCSAqLwotCQkJaGVhcF9wYWdl X3BydW5lX2FuZF9mcmVlemUocmVsYXRpb24sIGJ1ZmZlciwgZmFsc2UsCisJCQloZWFwX3BhZ2Vf cHJ1bmVfYW5kX2ZyZWV6ZShyZWxhdGlvbiwgYnVmZmVyLCBvcHRpb25zLCBmYWxzZSwKIAkJCQkJ CQkJCSAgIHZtYnVmZmVyID8gKnZtYnVmZmVyIDogSW52YWxpZEJ1ZmZlciwKLQkJCQkJCQkJCSAg IHZpc3Rlc3QsIG9wdGlvbnMsCi0JCQkJCQkJCQkgICBOVUxMLCAmcHJlc3VsdCwgUFJVTkVfT05f QUNDRVNTLAorCQkJCQkJCQkJICAgdmlzdGVzdCwKKwkJCQkJCQkJCSAgIE5VTEwsIFBSVU5FX09O X0FDQ0VTUywgJnByZXN1bHQsCiAJCQkJCQkJCQkgICAmZHVtbXlfb2ZmX2xvYywgTlVMTCwgTlVM TCk7CiAKIAkJCS8qCkBAIC02NTEsNiArNjUxLDE1IEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6ZShS ZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGFsc28gbmVlZCB0byBhY2NvdW50 IGZvciBhIHJlZHVjdGlvbiBpbiB0aGUgbGVuZ3RoIG9mIHRoZSBsaW5lIHBvaW50ZXIKICAqIGFy cmF5IGZvbGxvd2luZyBhcnJheSB0cnVuY2F0aW9uIGJ5IHVzLgogICoKKyAqIG9wdGlvbnM6Cisg KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZworICogICBwcnVuaW5nLgorICoKKyAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KKyAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCisgKgorICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICoKICAqIElmIHRoZSBIRUFQX1BSVU5FX0ZSRUVaRSBvcHRpb24gaXMgc2V0 LCB3ZSB3aWxsIGFsc28gZnJlZXplIHR1cGxlcyBpZiBpdCdzCiAgKiByZXF1aXJlZCBpbiBvcmRl ciB0byBhZHZhbmNlIHJlbGZyb3plbnhpZCAvIHJlbG1pbm14aWQsIG9yIGlmIGl0J3MKICAqIGNv bnNpZGVyZWQgYWR2YW50YWdlb3VzIGZvciBvdmVyYWxsIHN5c3RlbSBwZXJmb3JtYW5jZSB0byBk byBzbyBub3cuICBUaGUKQEAgLTY2OSwzMCArNjc4LDIxIEBAIGhlYXBfcGFnZV93aWxsX2ZyZWV6 ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKICAqIGNvbnRhaW4gdGhlIHJlcXVp cmVkIGJsb2NrIG9mIHRoZSB2aXNpYmlsaXR5IG1hcC4KICAqCiAgKiB2aXN0ZXN0IGlzIHVzZWQg dG8gZGlzdGluZ3Vpc2ggd2hldGhlciB0dXBsZXMgYXJlIERFQUQgb3IgUkVDRU5UTFlfREVBRAot ICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLgotICoKLSAqIG9wdGlvbnM6Ci0g KiAgIE1BUktfVU5VU0VEX05PVyBpbmRpY2F0ZXMgdGhhdCBkZWFkIGl0ZW1zIGNhbiBiZSBzZXQg TFBfVU5VU0VEIGR1cmluZwotICogICBwcnVuaW5nLgotICoKLSAqICAgRlJFRVpFIGluZGljYXRl cyB0aGF0IHdlIHdpbGwgYWxzbyBmcmVlemUgdHVwbGVzLCBhbmQgd2lsbCByZXR1cm4KLSAqICAg J2FsbF92aXNpYmxlJywgJ2FsbF9mcm96ZW4nIGZsYWdzIHRvIHRoZSBjYWxsZXIuCi0gKgotICog ICBVUERBVEVfVk0gaW5kaWNhdGVzIHRoYXQgd2Ugd2lsbCBzZXQgdGhlIHBhZ2UncyBzdGF0dXMg aW4gdGhlIFZNLgorICogKHNlZSBoZWFwX3BydW5lX3NhdGlzZmllc192YWN1dW0pLiBJdCBpcyBh biBpbnB1dCBwYXJhbWV0ZXIuCiAgKgogICogY3V0b2ZmcyBjb250YWlucyB0aGUgZnJlZXplIGN1 dG9mZnMsIGVzdGFibGlzaGVkIGJ5IFZBQ1VVTSBhdCB0aGUgYmVnaW5uaW5nCiAgKiBvZiB2YWN1 dW1pbmcgdGhlIHJlbGF0aW9uLiAgUmVxdWlyZWQgaWYgSEVBUF9QUlVORV9GUkVFWkUgb3B0aW9u IGlzIHNldC4KICAqIGN1dG9mZnMtPk9sZGVzdFhtaW4gaXMgYWxzbyB1c2VkIHRvIGRldGVybWlu ZSBpZiBkZWFkIHR1cGxlcyBhcmUKLSAqIEhFQVBUVVBMRV9SRUNFTlRMWV9ERUFEIG9yIEhFQVBU VVBMRV9ERUFELgorICogSEVBUFRVUExFX1JFQ0VOVExZX0RFQUQgb3IgSEVBUFRVUExFX0RFQUQu IEl0IGlzIGFuIGlucHV0IHBhcmFtZXRlci4KKyAqCisgKiByZWFzb24gaW5kaWNhdGVzIHdoeSB0 aGUgcHJ1bmluZyBpcyBwZXJmb3JtZWQuICBJdCBpcyBpbmNsdWRlZCBpbiB0aGUgV0FMCisgKiBy ZWNvcmQgZm9yIGRlYnVnZ2luZyBhbmQgYW5hbHlzaXMgcHVycG9zZXMsIGJ1dCBvdGhlcndpc2Ug aGFzIG5vIGVmZmVjdC4KICAqCiAgKiBwcmVzdWx0IGNvbnRhaW5zIG91dHB1dCBwYXJhbWV0ZXJz IG5lZWRlZCBieSBjYWxsZXJzLCBzdWNoIGFzIHRoZSBudW1iZXIgb2YKICAqIHR1cGxlcyByZW1v dmVkIGFuZCB0aGUgb2Zmc2V0cyBvZiBkZWFkIGl0ZW1zIG9uIHRoZSBwYWdlIGFmdGVyIHBydW5p bmcuCiAgKiBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2ZyZWV6ZSgpIGlzIHJlc3BvbnNpYmxlIGZvciBp bml0aWFsaXppbmcgaXQuICBSZXF1aXJlZAogICogYnkgYWxsIGNhbGxlcnMuCiAgKgotICogcmVh c29uIGluZGljYXRlcyB3aHkgdGhlIHBydW5pbmcgaXMgcGVyZm9ybWVkLiAgSXQgaXMgaW5jbHVk ZWQgaW4gdGhlIFdBTAotICogcmVjb3JkIGZvciBkZWJ1Z2dpbmcgYW5kIGFuYWx5c2lzIHB1cnBv c2VzLCBidXQgb3RoZXJ3aXNlIGhhcyBubyBlZmZlY3QuCi0gKgogICogb2ZmX2xvYyBpcyB0aGUg b2Zmc2V0IGxvY2F0aW9uIHJlcXVpcmVkIGJ5IHRoZSBjYWxsZXIgdG8gdXNlIGluIGVycm9yCiAg KiBjYWxsYmFjay4KICAqCkBAIC03MDUsMTMgKzcwNSwxMyBAQCBoZWFwX3BhZ2Vfd2lsbF9mcmVl emUoUmVsYXRpb24gcmVsYXRpb24sIEJ1ZmZlciBidWZmZXIsCiAgKi8KIHZvaWQKIGhlYXBfcGFn ZV9wcnVuZV9hbmRfZnJlZXplKFJlbGF0aW9uIHJlbGF0aW9uLCBCdWZmZXIgYnVmZmVyLAorCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBib29sIGJsa19rbm93bl9hdiwKIAkJCQkJCSAg IEJ1ZmZlciB2bWJ1ZmZlciwKIAkJCQkJCSAgIEdsb2JhbFZpc1N0YXRlICp2aXN0ZXN0LAotCQkJ CQkJICAgaW50IG9wdGlvbnMsCiAJCQkJCQkgICBzdHJ1Y3QgVmFjdXVtQ3V0b2ZmcyAqY3V0b2Zm cywKLQkJCQkJCSAgIFBydW5lRnJlZXplUmVzdWx0ICpwcmVzdWx0LAogCQkJCQkJICAgUHJ1bmVS ZWFzb24gcmVhc29uLAorCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJCQkJ CQkgICBPZmZzZXROdW1iZXIgKm9mZl9sb2MsCiAJCQkJCQkgICBUcmFuc2FjdGlvbklkICpuZXdf cmVsZnJvemVuX3hpZCwKIAkJCQkJCSAgIE11bHRpWGFjdElkICpuZXdfcmVsbWluX214aWQpCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKaW5kZXggNGFkMDViYTRkYjYuLjRmYjkxNWUx ZDk0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBAIC0xOTkzLDExICsxOTkz LDExIEBAIGxhenlfc2Nhbl9wcnVuZShMVlJlbFN0YXRlICp2YWNyZWwsCiAJaWYgKHZhY3JlbC0+ bmluZGV4ZXMgPT0gMCkKIAkJcHJ1bmVfb3B0aW9ucyB8PSBIRUFQX1BBR0VfUFJVTkVfTUFSS19V TlVTRURfTk9XOwogCi0JaGVhcF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsCisJaGVh cF9wYWdlX3BydW5lX2FuZF9mcmVlemUocmVsLCBidWYsIHBydW5lX29wdGlvbnMsCiAJCQkJCQkJ ICAgYWxsX3Zpc2libGVfYWNjb3JkaW5nX3RvX3ZtLAogCQkJCQkJCSAgIHZtYnVmZmVyLAotCQkJ CQkJCSAgIHZhY3JlbC0+dmlzdGVzdCwgcHJ1bmVfb3B0aW9ucywKLQkJCQkJCQkgICAmdmFjcmVs LT5jdXRvZmZzLCAmcHJlc3VsdCwgUFJVTkVfVkFDVVVNX1NDQU4sCisJCQkJCQkJICAgdmFjcmVs LT52aXN0ZXN0LAorCQkJCQkJCSAgICZ2YWNyZWwtPmN1dG9mZnMsIFBSVU5FX1ZBQ1VVTV9TQ0FO LCAmcHJlc3VsdCwKIAkJCQkJCQkgICAmdmFjcmVsLT5vZmZudW0sCiAJCQkJCQkJICAgJnZhY3Jl bC0+TmV3UmVsZnJvemVuWGlkLCAmdmFjcmVsLT5OZXdSZWxtaW5NeGlkKTsKIApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBh bS5oCmluZGV4IDIyMTBhNWUwYTc5Li5jYTNmMzdjMjkyNSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1 ZGUvYWNjZXNzL2hlYXBhbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAt Mzk0LDEzICszOTQsMTMgQEAgc3RydWN0IEdsb2JhbFZpc1N0YXRlOwogZXh0ZXJuIHZvaWQgaGVh cF9wYWdlX3BydW5lX29wdChSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKIAkJCQkJ CQkJQnVmZmVyICp2bWJ1ZmZlcik7CiBleHRlcm4gdm9pZCBoZWFwX3BhZ2VfcHJ1bmVfYW5kX2Zy ZWV6ZShSZWxhdGlvbiByZWxhdGlvbiwgQnVmZmVyIGJ1ZmZlciwKKwkJCQkJCQkJCSAgIGludCBv cHRpb25zLAogCQkJCQkJCQkJICAgYm9vbCBibGtfa25vd25fYXYsCiAJCQkJCQkJCQkgICBCdWZm ZXIgdm1idWZmZXIsCiAJCQkJCQkJCQkgICBzdHJ1Y3QgR2xvYmFsVmlzU3RhdGUgKnZpc3Rlc3Qs Ci0JCQkJCQkJCQkgICBpbnQgb3B0aW9ucywKIAkJCQkJCQkJCSAgIHN0cnVjdCBWYWN1dW1DdXRv ZmZzICpjdXRvZmZzLAotCQkJCQkJCQkJICAgUHJ1bmVGcmVlemVSZXN1bHQgKnByZXN1bHQsCiAJ CQkJCQkJCQkgICBQcnVuZVJlYXNvbiByZWFzb24sCisJCQkJCQkJCQkgICBQcnVuZUZyZWV6ZVJl c3VsdCAqcHJlc3VsdCwKIAkJCQkJCQkJCSAgIE9mZnNldE51bWJlciAqb2ZmX2xvYywKIAkJCQkJ CQkJCSAgIFRyYW5zYWN0aW9uSWQgKm5ld19yZWxmcm96ZW5feGlkLAogCQkJCQkJCQkJICAgTXVs dGlYYWN0SWQgKm5ld19yZWxtaW5fbXhpZCk7Ci0tIAoyLjQzLjAKCg== --000000000000bebfe1063e66606b--